Express
This commit is contained in:
@@ -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()),
|
||||||
|
)
|
||||||
|
}))
|
||||||
|
|||||||
Reference in New Issue
Block a user