1import * as Effect from "../../Effect.ts"
2import type { PreResponseHandler } from "../HttpEffect.ts"
3import type { HttpServerRequest } from "../HttpServerRequest.ts"
4
5/**
6 * @internal
7 */
8export const requestPreResponseHandlers = new WeakMap<object, PreResponseHandler>()
9
10/**
11 * @internal
12 */
13export 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}