{-# LANGUAGE DataKinds #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE OverloadedStrings #-} module Lib ( startApp , app , type (:>) -- Syntax for importing type operator , type (:<|>) ) where import Network.Wai import Network.Wai.Handler.Warp import Network.Wai.Middleware.RequestLogger (logStdoutDev) import Servant import Servant.Server.Experimental.Auth (AuthHandler) import Auth (authHandler) import Cors import Endpoints.APILib import Endpoints.ServerLib import Data.User (User) startApp :: IO () startApp = run 8080 (logStdoutDev app) app :: Application app = corsMiddleware $ serveWithContext api authContext server authContext :: Context '[AuthHandler Request User] authContext = authHandler :. EmptyContext api :: Proxy API api = Proxy