Express layers
All checks were successful
Lint / lint (push) Successful in 15s

This commit is contained in:
Julien Valverdé
2024-09-05 00:25:18 +02:00
parent 07578a7ac7
commit 4f16a08b7f
5 changed files with 90 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
import { Config, Context, Effect, Layer } from "effect"
import type { Express } from "express"
export class ExpressApp extends Context.Tag("ExpressApp")<ExpressApp, Express>() {}
const importExpress = Effect.tryPromise({
try: () => import("express"),
catch: cause => new Error("Could not import 'express'. Make sure it is installed.", { cause }),
})
export const ExpressAppLive = (config: {
readonly trustProxy?: Config.Config<boolean>
}) => Layer.effect(ExpressApp, Effect.gen(function*() {
const app = (yield* importExpress).default()
app.set("trust proxy", yield* config.trustProxy || Config.succeed(false))
return app
}))