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"
|
||||
|
||||
|
||||
export class Express extends Context.Tag("Express")<Express, ReturnType<typeof 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