(httpApp, middleware)
| 72 | return Server.make({ |
| 73 | address: { _tag: "TcpAddress", port: server.port!, hostname: server.hostname! }, |
| 74 | serve(httpApp, middleware) { |
| 75 | return Effect.gen(function*() { |
| 76 | const runFork = yield* FiberSet.makeRuntime<never>() |
| 77 | const runtime = yield* Effect.runtime<never>() |
| 78 | const app = App.toHandled(httpApp, (request, response) => |
| 79 | Effect.sync(() => { |
| 80 | ;(request as ServerRequestImpl).resolve(makeResponse(request, response, runtime)) |
| 81 | }), middleware) |
| 82 | |
| 83 | function handler(request: Request, server: BunServer) { |
| 84 | return new Promise<Response>((resolve, _reject) => { |
| 85 | const fiber = runFork(Effect.provideService( |
| 86 | app, |
| 87 | ServerRequest.HttpServerRequest, |
| 88 | new ServerRequestImpl(request, resolve, removeHost(request.url), server) |
| 89 | )) |
| 90 | request.signal.addEventListener("abort", () => { |
| 91 | runFork(fiber.interruptAsFork(Error.clientAbortFiberId)) |
| 92 | }, { once: true }) |
| 93 | }) |
| 94 | } |
| 95 | |
| 96 | yield* Effect.acquireRelease( |
| 97 | Effect.sync(() => { |
| 98 | handlerStack.push(handler) |
| 99 | server.reload({ fetch: handler }) |
| 100 | }), |
| 101 | () => |
| 102 | Effect.sync(() => { |
| 103 | handlerStack.pop() |
| 104 | server.reload({ fetch: handlerStack[handlerStack.length - 1] }) |
| 105 | }) |
| 106 | ) |
| 107 | }) |
| 108 | } |
| 109 | }) |
| 110 | }) |
| 111 |
nothing calls this directly
no test coverage detected