Node server entrypoint

This commit is contained in:
Julien Valverdé
2025-09-17 03:05:49 +02:00
parent c4affb227c
commit 57b36f40df
4 changed files with 42 additions and 2 deletions

View File

@@ -3,12 +3,14 @@
"private": true,
"type": "module",
"scripts": {
"dev": "NODE_ENV=development bun --hot ./src/entrypoint.bun.ts"
"bun:dev": "NODE_ENV=development bun --hot ./src/entrypoint.bun.ts",
"node:dev": "NODE_ENV=development tsx --watch ./src/entrypoint.node.ts"
},
"dependencies": {
"@effect/opentelemetry": "^0.56.6",
"@effect/platform": "^0.90.9",
"@effect/platform-bun": "^0.79.0",
"@effect/platform-node": "^0.96.1",
"@effect/rpc": "^0.69.2",
"@opentelemetry/exporter-trace-otlp-http": "^0.205.0",
"@opentelemetry/sdk-metrics": "^2.1.0",
@@ -17,5 +19,8 @@
"@opentelemetry/sdk-trace-web": "^2.1.0",
"@website/common": "workspace:*",
"effect": "^3.17.13"
},
"devDependencies": {
"tsx": "^4.20.5"
}
}

View File

@@ -0,0 +1,18 @@
import { NodeContext, NodeHttpServer, NodeRuntime } from "@effect/platform-node"
import { Effect, Layer } from "effect"
import { createServer } from "node:http"
import { ServerConfig } from "./config"
import { Server } from "./server"
Layer.launch(Server).pipe(
Effect.provide(Layer.empty.pipe(
Layer.provideMerge(ServerConfig.httpPort.pipe(
Effect.map(port => NodeHttpServer.layer(createServer, { port })),
Layer.unwrapEffect,
)),
Layer.provideMerge(NodeContext.layer),
)),
NodeRuntime.runMain,
)