server.ts 945 B

12345678910111213141516171819202122232425262728
  1. import * as NodeHttpServer from "@effect/platform-node/NodeHttpServer"
  2. import * as NodeRuntime from "@effect/platform-node/NodeRuntime"
  3. import { Config, Layer } from "effect"
  4. import { HttpRouter } from "effect/unstable/http"
  5. import { createServer } from "node:http"
  6. import { Ingest } from "./ingest"
  7. import { Routes } from "./router"
  8. import { registerShutdownSignalHandlers } from "./shutdown"
  9. registerShutdownSignalHandlers()
  10. const ServerLive = NodeHttpServer.layerConfig(
  11. () => createServer(),
  12. Config.all({
  13. port: Config.number("PORT").pipe(Config.withDefault(3000)),
  14. host: Config.string("HOST").pipe(Config.withDefault("0.0.0.0")),
  15. }),
  16. )
  17. const runtimeLayer = Ingest.layer
  18. const programLayer = Routes.pipe(Layer.provide(runtimeLayer))
  19. const main = Layer.launch(
  20. HttpRouter.serve(programLayer, {
  21. disableLogger: true,
  22. }).pipe(Layer.provideMerge(ServerLive)),
  23. )
  24. NodeRuntime.runMain(main, { disableErrorReporting: true })