MCPcopy Index your code
hub / github.com/Effect-TS/effect / serve

Function serve

packages/platform-bun/src/internal/httpServer.ts:74–108  ·  view source on GitHub ↗
(httpApp, middleware)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 3

makeResponseFunction · 0.85
runtimeMethod · 0.80
syncMethod · 0.80

Tested by

no test coverage detected