This commit is contained in:
Julien Valverdé
2024-06-30 23:11:27 +02:00
parent a9dd27abc4
commit d93c86d60f

View File

@@ -1,7 +1,19 @@
import { Context, Layer } from "effect" import { Context, Effect, Layer } from "effect"
import express from "express" import express from "express"
export class Express extends Context.Tag("Express")<Express, ReturnType<typeof express>>() {} export class Express extends Context.Tag("Express")<Express, ReturnType<typeof express>>() {}
export const ExpressLive = Layer.sync(Express, () => express()) export const ExpressLive = Layer.sync(Express, () => express())
export const ServerLive = Layer.scopedDiscard(Effect.gen(function*() {
const port = 8080
const app = yield* Express
yield* Effect.acquireRelease(
Effect.sync(() =>
app.listen(port, () => console.log(`Example app listening on port ${ port }`))
),
server => Effect.sync(() => server.close()),
)
}))