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

Function handleResponse

repos/effect/packages/platform-node/src/NodeHttpServer.ts:499–627  ·  view source on GitHub ↗
(
  request: HttpServerRequest,
  response: HttpServerResponse
)

Source from the content-addressed store, hash-verified

497 Layer.provide(
498 Layer.fresh(FetchHttpClient.layer).pipe(
499 Layer.provide(Layer.succeed(FetchHttpClient.RequestInit)({ keepalive: false }))
500 )
501 ),
502 Layer.provideMerge(layer(Http.createServer, { port: 0 }))
503)
504
505// -----------------------------------------------------------------------------
506// Internal
507// -----------------------------------------------------------------------------
508
509const handleResponse = (
510 request: HttpServerRequest,
511 response: HttpServerResponse
512): Effect.Effect<void, HttpServerError> => {
513 const nodeResponse = (request as ServerRequestImpl).resolvedResponse
514 if (nodeResponse.writableEnded) {
515 return Effect.void
516 }
517
518 let headers: Record<string, string | Array<string>> = response.headers
519 if (!Cookies.isEmpty(response.cookies)) {
520 headers = { ...headers }
521 const toSet = Cookies.toSetCookieHeaders(response.cookies)
522 if (headers["set-cookie"] !== undefined) {
523 toSet.push(headers["set-cookie"] as string)
524 }
525 headers["set-cookie"] = toSet
526 }
527
528 if (request.method === "HEAD") {
529 nodeResponse.writeHead(response.status, headers)
530 return Effect.andThen(
531 cancelResponseBody(response.body),
532 Effect.callback<void>((resume) => {
533 let completed = false
534 const done = () => {
535 if (completed) return
536 completed = true
537 nodeResponse.off("close", done)
538 resume(Effect.void)
539 }
540 nodeResponse.once("close", done)
541 nodeResponse.end(done)
542 })
543 )
544 }
545 const body = response.body
546 switch (body._tag) {
547 case "Empty": {
548 nodeResponse.writeHead(response.status, headers)
549 nodeResponse.end()
550 return Effect.void
551 }
552 case "Raw": {
553 nodeResponse.writeHead(response.status, headers)
554 if (
555 typeof body.body === "object" && body.body !== null && "pipe" in body.body &&
556 typeof body.body.pipe === "function"

Callers

nothing calls this directly

Calls 13

pushMethod · 0.80
onceMethod · 0.80
syncMethod · 0.80
handleCauseFunction · 0.70
isEmptyMethod · 0.65
endMethod · 0.65
pipeMethod · 0.65
openUnsafeMethod · 0.65
writeMethod · 0.65
closeUnsafeMethod · 0.65
resumeFunction · 0.50
onMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…