MCPcopy
hub / github.com/Effect-TS/effect / toHandled

Function toHandled

packages/platform/src/HttpApp.ts:48–128  ·  view source on GitHub ↗
(
  self: Default<E, R>,
  handleResponse: (
    request: ServerRequest.HttpServerRequest,
    response: ServerResponse.HttpServerResponse
  ) => Effect.Effect<_, EH, RH>,
  middleware?: HttpMiddleware | undefined
)

Source from the content-addressed store, hash-verified

46 * @category combinators
47 */
48export const toHandled = <E, R, _, EH, RH>(
49 self: Default<E, R>,
50 handleResponse: (
51 request: ServerRequest.HttpServerRequest,
52 response: ServerResponse.HttpServerResponse
53 ) => Effect.Effect<_, EH, RH>,
54 middleware?: HttpMiddleware | undefined
55): Effect.Effect<void, never, Exclude<R | RH | ServerRequest.HttpServerRequest, Scope.Scope>> => {
56 const responded = Effect.withFiberRuntime<
57 ServerResponse.HttpServerResponse,
58 E | EH | ServerError.ResponseError,
59 R | RH | ServerRequest.HttpServerRequest
60 >((fiber) =>
61 Effect.flatMap(self, (response) => {
62 const request = Context.unsafeGet(fiber.currentContext, ServerRequest.HttpServerRequest)
63 const handler = fiber.getFiberRef(currentPreResponseHandlers)
64 if (handler._tag === "None") {
65 ;(request as any)[handledSymbol] = true
66 return Effect.as(handleResponse(request, response), response)
67 }
68 return Effect.tap(handler.value(request, response), (response) => {
69 ;(request as any)[handledSymbol] = true
70 return handleResponse(request, response)
71 })
72 })
73 )
74
75 const withErrorHandling = Effect.catchAllCause(
76 responded,
77 (cause) =>
78 Effect.withFiberRuntime<
79 ServerResponse.HttpServerResponse,
80 E | EH | ServerError.ResponseError,
81 ServerRequest.HttpServerRequest | RH
82 >((fiber) =>
83 Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) => {
84 const request = Context.unsafeGet(fiber.currentContext, ServerRequest.HttpServerRequest)
85 const handler = fiber.getFiberRef(currentPreResponseHandlers)
86 if (handler._tag === "None") {
87 ;(request as any)[handledSymbol] = true
88 return Effect.zipRight(
89 handleResponse(request, response),
90 Cause.isEmptyType(cause) ? Effect.succeed(response) : Effect.failCause(cause)
91 )
92 }
93 return Effect.zipRight(
94 Effect.tap(handler.value(request, response), (response) => {
95 ;(request as any)[handledSymbol] = true
96 return handleResponse(request, response)
97 }),
98 Cause.isEmptyType(cause) ? Effect.succeed(response) : Effect.failCause(cause)
99 )
100 })
101 )
102 )
103
104 const withMiddleware = unify(
105 middleware === undefined ?

Callers 1

toWebHandlerRuntimeFunction · 0.85

Calls 8

handleResponseFunction · 0.85
unifyFunction · 0.85
unsafeGetMethod · 0.80
failCauseMethod · 0.80
middlewareFunction · 0.70
scopedFunction · 0.70
getFiberRefMethod · 0.65
valueMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…