MCPcopy Create free account
hub / github.com/effect-app/libs / makeResponse

Function makeResponse

repos/effect/packages/platform-bun/src/BunHttpServer.ts:164–224  ·  view source on GitHub ↗
(
  request: ServerRequest.HttpServerRequest,
  response: ServerResponse.HttpServerResponse,
  context: Context.Context<never>,
  scope: Scope.Scope
)

Source from the content-addressed store, hash-verified

162 services,
163 ServerRequest.HttpServerRequest,
164 new BunServerRequest(request, resolve, removeHost(request.url), server)
165 )
166 const fiber = Fiber.runIn(Effect.runForkWith(context)(httpEffect), scope)
167 request.signal.addEventListener("abort", () => {
168 fiber.interruptUnsafe(parent.id, Error.ClientAbort.annotation)
169 }, { once: true })
170 })
171 }
172
173 yield* Scope.addFinalizerExit(serveScope, () => {
174 const index = handlerStack.indexOf(handler)
175 if (index !== -1) handlerStack.splice(index, 1)
176 server.reload({ fetch: handlerStack[handlerStack.length - 1] })
177 return handlerStack.length === 1 ? preemptiveShutdown : Effect.void
178 })
179 handlerStack.push(handler)
180 server.reload({ fetch: handler })
181 })
182 })
183 }
184)
185
186const makeResponse = (
187 request: ServerRequest.HttpServerRequest,
188 response: ServerResponse.HttpServerResponse,
189 context: Context.Context<never>,
190 scope: Scope.Scope
191): Response => {
192 const fields: {
193 headers: globalThis.Headers
194 status?: number
195 statusText?: string
196 } = {
197 headers: new globalThis.Headers(response.headers),
198 status: response.status
199 }
200
201 if (!Cookies.isEmpty(response.cookies)) {
202 for (const header of Cookies.toSetCookieHeaders(response.cookies)) {
203 fields.headers.append("set-cookie", header)
204 }
205 }
206
207 if (response.statusText !== undefined) {
208 fields.statusText = response.statusText
209 }
210
211 if (request.method === "HEAD") {
212 return new Response(undefined, fields)
213 }
214 response = HttpEffect.scopeTransferToStream(response)
215 const body = response.body
216 switch (body._tag) {
217 case "Empty": {
218 return new Response(undefined, fields)
219 }
220 case "Uint8Array":
221 case "Raw": {

Callers 1

BunHttpServer.tsFile · 0.70

Calls 3

isEmptyMethod · 0.65
setMethod · 0.65
succeedMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…