( request: HttpServerRequest, response: HttpServerResponse )
| 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 | |
| 509 | const 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" |
nothing calls this directly
no test coverage detected
searching dependent graphs…