diff --git a/goldens/public-api/angular/ssr/index.api.md b/goldens/public-api/angular/ssr/index.api.md index f8db8663c89b..33492e84b5a6 100644 --- a/goldens/public-api/angular/ssr/index.api.md +++ b/goldens/public-api/angular/ssr/index.api.md @@ -33,6 +33,9 @@ export enum RenderMode { Server = 1 } +// @public +export type RequestHandlerFunction = (request: Request, requestContext?: ContextType) => Promise | null | Response; + // @public export type ServerRoute = ServerRouteAppShell | ServerRouteClient | ServerRoutePrerender | ServerRoutePrerenderWithParams | ServerRouteServer; diff --git a/goldens/public-api/angular/ssr/node/index.api.md b/goldens/public-api/angular/ssr/node/index.api.md index 27e3a967804e..9b196f0bfd41 100644 --- a/goldens/public-api/angular/ssr/node/index.api.md +++ b/goldens/public-api/angular/ssr/node/index.api.md @@ -43,7 +43,7 @@ export interface CommonEngineRenderOptions { } // @public -export function createNodeRequestHandler(handler: T): T; +export function createNodeRequestHandler(handler: T): T; // @public export function createWebRequestFromNodeRequest(nodeRequest: IncomingMessage): Request; @@ -51,6 +51,9 @@ export function createWebRequestFromNodeRequest(nodeRequest: IncomingMessage): R // @public export function isMainModule(url: string): boolean; +// @public +export type NodeRequestHandlerFunction = (req: IncomingMessage, res: ServerResponse, next: (err?: unknown) => void) => Promise | void; + // @public export function writeResponseToNodeResponse(source: Response, destination: ServerResponse): Promise; diff --git a/packages/angular/ssr/node/public_api.ts b/packages/angular/ssr/node/public_api.ts index a08d88d2738e..81932873a440 100644 --- a/packages/angular/ssr/node/public_api.ts +++ b/packages/angular/ssr/node/public_api.ts @@ -14,7 +14,7 @@ export { export { AngularNodeAppEngine } from './src/app-engine'; -export { createNodeRequestHandler } from './src/handler'; +export { createNodeRequestHandler, type NodeRequestHandlerFunction } from './src/handler'; export { writeResponseToNodeResponse } from './src/response'; export { createWebRequestFromNodeRequest } from './src/request'; export { isMainModule } from './src/module'; diff --git a/packages/angular/ssr/node/src/handler.ts b/packages/angular/ssr/node/src/handler.ts index 40fedb46e0f6..a03d9a2a6304 100644 --- a/packages/angular/ssr/node/src/handler.ts +++ b/packages/angular/ssr/node/src/handler.ts @@ -16,8 +16,10 @@ import type { IncomingMessage, ServerResponse } from 'node:http'; * @param next - A callback function that signals the completion of the middleware or forwards the error if provided. * * @returns A Promise that resolves to void or simply void. The handler can be asynchronous. + * + * @developerPreview */ -type RequestHandlerFunction = ( +export type NodeRequestHandlerFunction = ( req: IncomingMessage, res: ServerResponse, next: (err?: unknown) => void, @@ -67,7 +69,7 @@ type RequestHandlerFunction = ( * ``` * @developerPreview */ -export function createNodeRequestHandler(handler: T): T { +export function createNodeRequestHandler(handler: T): T { (handler as T & { __ng_node_request_handler__?: boolean })['__ng_node_request_handler__'] = true; return handler; diff --git a/packages/angular/ssr/public_api.ts b/packages/angular/ssr/public_api.ts index bf751f07a374..a8a707e13f29 100644 --- a/packages/angular/ssr/public_api.ts +++ b/packages/angular/ssr/public_api.ts @@ -9,7 +9,7 @@ export * from './private_export'; export { AngularAppEngine } from './src/app-engine'; -export { createRequestHandler } from './src/handler'; +export { createRequestHandler, type RequestHandlerFunction } from './src/handler'; export { type PrerenderFallback, diff --git a/packages/angular/ssr/src/handler.ts b/packages/angular/ssr/src/handler.ts index 16425ff3ccb2..327d3ea96853 100644 --- a/packages/angular/ssr/src/handler.ts +++ b/packages/angular/ssr/src/handler.ts @@ -9,11 +9,19 @@ /** * Function for handling HTTP requests in a web environment. * - * @param request - The incoming HTTP request object. + * @typeParam ContextType - The type for the optional `requestContext` parameter. Defaults to `unknown`. + * + * @param request - The incoming HTTP request object + * @param requestContext - Optional additional context for rendering, such as request metadata. * @returns A Promise resolving to a `Response` object, `null`, or directly a `Response`, * supporting both synchronous and asynchronous handling. + * + * @developerPreview */ -type RequestHandlerFunction = (request: Request) => Promise | null | Response; +export type RequestHandlerFunction = ( + request: Request, + requestContext?: ContextType, +) => Promise | null | Response; /** * Annotates a request handler function with metadata, marking it as a special