UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

50 lines (42 loc) 1.21 kB
import type { HttpContractConfig } from "../contracts/index.js"; import type { HttpRequestLike, HttpResponseLike, MaybePromise, } from "./http.js"; export const responseFinalizerHook = Symbol( "@beignet/core/server/responseFinalizer", ); export type ResponseFinalizerResponseOwner = | "route" | "framework" | "transport"; export type ResponseFinalizerValidationState = | "validated" | "disabled" | "not-applicable"; export type ResponseFinalizerHookArgs<Ctx> = { req: HttpRequestLike; ctx?: Ctx; contract: HttpContractConfig; path?: unknown; query?: unknown; headers?: unknown; body?: unknown; response: HttpResponseLike; error?: unknown; native?: boolean; owner: ResponseFinalizerResponseOwner; responseValidation: ResponseFinalizerValidationState; }; export type ResponseFinalizerHook<Ctx> = ( args: ResponseFinalizerHookArgs<Ctx>, ) => MaybePromise<void>; export type ResponseFinalizerServerHook<Ctx> = { [responseFinalizerHook]?: ResponseFinalizerHook<Ctx>; }; export function getResponseFinalizerHook<Ctx>( hook: unknown, ): ResponseFinalizerHook<Ctx> | undefined { return (hook as ResponseFinalizerServerHook<Ctx>)[responseFinalizerHook]; }