MCPcopy Create free account
hub / github.com/Effect-TS/effect / makeResponse

Function makeResponse

packages/platform/bun/src/BunHttpServer.ts:186–246  ·  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

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": {
222 if (body.body instanceof Response) {
223 for (const [key, value] of fields.headers.entries()) {
224 body.body.headers.set(key, value)
225 }
226 return body.body
227 }
228 return new Response(body.body as any, fields)
229 }
230 case "FormData": {
231 return new Response(body.formData as any, fields)
232 }
233 case "Stream": {
234 return new Response(
235 Stream.toReadableStreamWith(
236 Stream.unwrap(Effect.withFiber((fiber) => {
237 Fiber.runIn(fiber, scope)
238 return Effect.succeed(body.stream)
239 })),
240 context
241 ),
242 fields
243 )

Callers 2

BunHttpServer.tsFile · 0.70
DenoHttpServer.tsFile · 0.50

Calls 3

isEmptyMethod · 0.65
setMethod · 0.65
succeedMethod · 0.45

Tested by

no test coverage detected