/** * Request Lifecycle Module * * Manages request tracking, performance timing, and metrics. * Handles the start/end lifecycle of request processing. * * @module server/runtime-handler/request-lifecycle */ import { timeAsync } from "../../utils/index.js"; import type { RequestProfileRecord } from "../../observability/index.js"; interface RequestLifecycleContext { /** Request ID for tracking */ requestId: string; /** Performance request ID (only set if perf tracking enabled) */ perfRequestId: string | undefined; /** Stop timer function for total request time */ stopTotal: () => void; /** Whether this request should check isolation */ shouldCheckIsolation: boolean; } /** * Start request lifecycle tracking. * Returns context needed to properly end the lifecycle. */ export declare function startRequestLifecycle(req: Request, _pathname: string, isLightweight: boolean): RequestLifecycleContext; /** * Start tracking a request in the request tracker. */ export declare function startRequestTracking(requestId: string, projectSlug: string | undefined, pathname: string, method: string, environment: string | undefined, releaseId: string | undefined, productionRuntime?: boolean): void; /** * Start per-request content metrics tracking. */ export declare function startContentMetrics(): void; /** * End per-request content metrics tracking. */ export declare function endContentMetrics(info: { requestId: string; pathname: string; mode: string; }): void; /** * Complete request tracking and record completion status. */ export declare function completeRequestTracking(requestId: string, status: number, isTimeout: boolean, profile?: RequestProfileRecord | null): void; /** * Keep streaming responses in the shutdown drain set until their body settles. * Handler completion only means response headers are ready; an SSE body may * continue producing events for several minutes after that point. */ export declare function completeRequestTrackingOnResponseEnd(requestId: string, response: Response, isTimeout: boolean, profile?: RequestProfileRecord | null, handlerSettled?: Promise): Response; /** * End request lifecycle tracking. */ export declare function endRequestLifecycle(ctx: RequestLifecycleContext): void; /** * Increment the request metrics counter. */ export declare function incrementRequestMetrics(): Promise; export { timeAsync }; //# sourceMappingURL=request-lifecycle.d.ts.map