Router/types.ts
2024-12-01 03:57:56 -07:00

30 lines
874 B
TypeScript

export interface RouterContext {
url: URL;
params: Record<string, string | undefined>;
state: Record<string, unknown>;
pattern: URLPattern;
request: Request;
}
export type Handler = (req: Request, ctx: RouterContext) => Promise<Response> | Response;
export type Middleware = (ctx: RouterContext, next: () => Promise<Response>) => Promise<Response>;
export interface RouteConfig {
pattern: URLPattern;
handlers: { [method: string]: Handler };
}
export interface MiddlewareConfig {
pattern: URLPattern;
handler: Middleware;
path: string;
}
export interface RouteConfigurator {
get(handler: Handler): RouteConfigurator;
post(handler: Handler): RouteConfigurator;
put(handler: Handler): RouteConfigurator;
delete(handler: Handler): RouteConfigurator;
patch(handler: Handler): RouteConfigurator;
options(handler: Handler): RouteConfigurator;
}