import { Effect, Layer } from "effect"; import { HttpEffect } from "effect/unstable/http"; import { AutumnApiApp } from "./api/autumn"; import { NonProtectedApiApp, OrgApiApp } from "./api/layers"; import { ProtectedApiApp } from "./api/protected"; import { ApiRequestHandler, AutumnRequestHandlerService, NonProtectedRequestHandlerService, ProtectedRequestHandlerService, OrgRequestHandlerService, } from "./api/router"; const ApiRequestHandlersLive = Layer.mergeAll( Layer.succeed(OrgRequestHandlerService)({ app: OrgApiApp }), Layer.succeed(NonProtectedRequestHandlerService)({ app: NonProtectedApiApp }), Layer.succeed(AutumnRequestHandlerService)({ app: AutumnApiApp }), Layer.succeed(ProtectedRequestHandlerService)({ app: ProtectedApiApp }), ); export const handleApiRequest = Effect.runSync( Effect.map( Effect.provide(ApiRequestHandler, ApiRequestHandlersLive), (app) => HttpEffect.toWebHandler(app), ), );