| 1 | import * as Effect from "../../Effect.ts" |
| 2 | import type { PreResponseHandler } from "../HttpEffect.ts" |
| 3 | import type { HttpServerRequest } from "../HttpServerRequest.ts" |
| 4 | |
| 5 | /** |
| 6 | * @internal |
| 7 | */ |
| 8 | export const requestPreResponseHandlers = new WeakMap<object, PreResponseHandler>() |
| 9 | |
| 10 | /** |
| 11 | * @internal |
| 12 | */ |
| 13 | export const appendPreResponseHandlerUnsafe = (request: HttpServerRequest, handler: PreResponseHandler): void => { |
| 14 | const prev = requestPreResponseHandlers.get(request.source) |
| 15 | const next: PreResponseHandler = prev ? |
| 16 | (request, response) => Effect.flatMap(prev(request, response), (response) => handler(request, response)) |
| 17 | : handler |
| 18 | requestPreResponseHandlers.set(request.source, next) |
| 19 | } |