import * as Http from "@effect/platform/HttpServer"; import { Effect } from "effect"; import * as S from "@effect/schema/Schema"; const HttpLive = Http.router.empty.pipe( Http.router.get("/", Http.response.text("Hello World")), Http.router.get( "/todo/:id", Effect.gen(function* ($) { const { id } = yield* $( Http.router.schemaPathParams(S.struct({ id: S.NumberFromString })), ); return yield* $(Http.response.text(`Todo ${id}`)); }), ), Http.router.all("*", Http.response.empty({ status: 404 })), Http.router.catchAll((e) => { console.log(e); return Http.response.empty({ status: 400 }); }), Http.app.toWebHandler, ); export default { async fetch(request: Request) { return await HttpLive(request); }, };