| import * as NodeHttpServer from "@effect/platform-node/NodeHttpServer" |
| import * as NodeRuntime from "@effect/platform-node/NodeRuntime" |
| import { Config, Layer } from "effect" |
| import { HttpRouter } from "effect/unstable/http" |
| import { createServer } from "node:http" |
| import { Ingest } from "./ingest" |
| import { Routes } from "./router" |
| import { registerShutdownSignalHandlers } from "./shutdown" |
|
|
| registerShutdownSignalHandlers() |
|
|
| const ServerLive = NodeHttpServer.layerConfig( |
| () => createServer(), |
| Config.all({ |
| port: Config.number("PORT").pipe(Config.withDefault(3000)), |
| host: Config.string("HOST").pipe(Config.withDefault("0.0.0.0")), |
| }), |
| ) |
|
|
| const runtimeLayer = Ingest.layer |
| const programLayer = Routes.pipe(Layer.provide(runtimeLayer)) |
| const main = Layer.launch( |
| HttpRouter.serve(programLayer, { |
| disableLogger: true, |
| }).pipe(Layer.provideMerge(ServerLive)), |
| ) |
|
|
| NodeRuntime.runMain(main, { disableErrorReporting: true }) |
|
|