diff options
| author | Paul Oliver <contact@pauloliver.dev> | 2026-01-02 08:28:01 +0000 |
|---|---|---|
| committer | Paul Oliver <contact@pauloliver.dev> | 2026-01-02 08:28:01 +0000 |
| commit | 43af089b3588b6fd29a1b09be9874054e0291c5e (patch) | |
| tree | e89ec99e4045e74269de6289db8533f41944cedb /hsm-web/Hsm | |
| parent | 62fce45039b0b8ab3d9d42b69a000fec00e1d35e (diff) | |
Adds scaffolding for Vue.js frontend
Diffstat (limited to 'hsm-web/Hsm')
| -rw-r--r-- | hsm-web/Hsm/Web.hs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/hsm-web/Hsm/Web.hs b/hsm-web/Hsm/Web.hs index aaf67d2..ae8b1f2 100644 --- a/hsm-web/Hsm/Web.hs +++ b/hsm-web/Hsm/Web.hs @@ -14,8 +14,9 @@ import Effectful.Dispatch.Static.Primitive (Env) import Effectful.Exception (finally) import Hsm.Log (Log, Logs, Severity (Info, Trace), logMsg, makeLoggerIO) import Network.Wai.Handler.Warp (defaultSettings, setLogger) +import Network.Wai.Middleware.Static (addBase, noDots, staticPolicy, (>->)) import Paths_hsm_web (getDataFileName) -import Web.Scotty (Options (settings, verbose), defaultOptions, file, get, scottyOpts) +import Web.Scotty (Options (settings, verbose), defaultOptions, file, get, middleware, scottyOpts) data Web (a :: * -> *) (b :: *) @@ -25,7 +26,11 @@ newtype instance StaticRep Web = Web Options server :: Options -> Env es -> IO () -server options _ = getDataFileName "Html/index.html" >>= scottyOpts options . get "/" . file +server options _ = do + dist <- getDataFileName "Client/dist/" + scottyOpts options $ do + get "/" . file $ dist <> "index.html" + middleware . staticPolicy $ noDots >-> addBase dist runServer :: (Log "web" :> es, Web :> es) => Eff es () runServer = finally startServer stopServer @@ -39,7 +44,8 @@ runServer = finally startServer stopServer runWeb :: (IOE :> es, Logs '["scotty", "web"] es) => Eff (Web : es) a -> Eff es a runWeb action = do logMsg @"web" Info "Registering logger for scotty web server" - scottyLogger <- makeLoggerIO @"scotty" >>= return . logRequest - evalStaticRep (Web $ defaultOptions{verbose = 0, settings = setLogger scottyLogger defaultSettings}) action + scottyLogger <- logRequest <$> makeLoggerIO @"scotty" + evalStaticRep (Web $ options scottyLogger) action where logRequest loggerIO request status fileSize = loggerIO Trace $ unwords [show request, show status, show fileSize] + options logger = defaultOptions{verbose = 0, settings = setLogger logger defaultSettings} |
