(handler: Handler)
| 17 | export type Handler = (input: HandlerInput) => Effect.Effect<HttpClientResponse.HttpClientResponse> |
| 18 | |
| 19 | const handlerLayer = (handler: Handler): Layer.Layer<HttpClient.HttpClient> => |
| 20 | Layer.succeed( |
| 21 | HttpClient.HttpClient, |
| 22 | HttpClient.make((request) => |
| 23 | Effect.gen(function* () { |
| 24 | const web = yield* HttpClientRequest.toWeb(request).pipe(Effect.orDie) |
| 25 | const text = yield* Effect.promise(() => web.text()) |
| 26 | return yield* handler({ |
| 27 | request, |
| 28 | text, |
| 29 | respond: (body, init) => HttpClientResponse.fromWeb(request, new Response(body, init)), |
| 30 | }) |
| 31 | }), |
| 32 | ), |
| 33 | ) |
| 34 | |
| 35 | export type RuntimeEnv = RequestExecutorService | WebSocketExecutorService | LLMClientService |
| 36 |
no test coverage detected