import {ValueOrPromise} from './types.js'; import {HookRegistry} from './hooks/index.js'; import {RequestContext} from './request-context.js'; /** * Http method. */ export enum HTTP_METHOD { GET = 'get', POST = 'post', PUT = 'put', PATCH = 'patch', DELETE = 'delete', } /** * Route handler. */ export type RouteHandler = (ctx: RequestContext) => ValueOrPromise; /** * Route pre-handler. */ export type RoutePreHandler = RouteHandler; /** * Route post-handler. */ export type RoutePostHandler = ( ctx: RequestContext, data: T, ) => ValueOrPromise; /** * Route definition. */ export type RouteDefinition = { method: string; path: string; preHandler: RoutePreHandler | RoutePreHandler[]; handler: RouteHandler; postHandler: RoutePostHandler | RoutePostHandler[]; }; /** * Route. */ export declare class Route { /** * Method. */ get method(): string; /** * Path. */ get path(): string; /** * Handler. */ get handler(): RouteHandler; /** * Hook registry. */ get hookRegistry(): HookRegistry; /** * Constructor. * * @param routeDef */ constructor(routeDef: RouteDefinition); /** * Handle. * * @param context */ handle(context: RequestContext): ValueOrPromise; }