UNPKG

bun-serve-route-plus

Version:

Middleware & route group system for Bun's HTTP server

123 lines (104 loc) 3.21 kB
declare type HTTPMethodHandler = (request: Request, env?: any, ctx?: any) => Promise<Response> | Response; declare type HTTPMethod = { /** Handler for HTTP GET requests */ GET?: HTTPMethodHandler; /** Handler for HTTP POST requests */ POST?: HTTPMethodHandler; /** Handler for HTTP OPTIONS requests */ OPTIONS?: HTTPMethodHandler; /** Handler for HTTP HEAD requests */ HEAD?: HTTPMethodHandler; /** Handler for HTTP DELETE requests */ DELETE?: HTTPMethodHandler; /** Handler for HTTP PATCH requests */ PATCH?: HTTPMethodHandler; /** Handler for HTTP PUT requests */ PUT?: HTTPMethodHandler; } | HTTPMethodHandler; declare type BunRoutes = { [path: string]: HTTPMethod; }; declare type ResponseHandler = (response: Response) => Promise<Response> | Response; declare type RequestHandler = (request: Request, env?: any, ctx?: any) => Promise<Response> | Response | void; /** * Middleware system for handling requests before they reach route handlers */ declare class BeforeRequest { private middlewareList: RequestHandler[]; constructor(); /** * Register a request middleware function * @param func Middleware function to add */ use(func: RequestHandler): void; /** * Execute all registered request middlewares * @param request Incoming request * @param env Optional environment variables * @param ctx Optional context object * @returns Response if middleware chain was interrupted, otherwise null */ execute(request: Request, env: any, ctx: any): Promise<Response | null>; } /** * Middleware system for handling responses before they are sent to clients */ declare class BeforeResponse { private middlewareList: ResponseHandler[]; constructor(); /** * Register a response middleware function * @param func Middleware function to add */ use(func: ResponseHandler): void; /** * Execute all registered response middlewares * @param response Outgoing response * @returns Processed response */ execute(response: Response): Promise<Response>; } /** * Apply middleware to route handlers * @param args Route definitions to wrap with middleware * @returns New route definitions with middleware applied */ declare function useMiddleware(...args: BunRoutes[]): BunRoutes; /** * Group routes with a common prefix * @param prefix Prefix to prepend to all routes * @param args Route definitions to group * @returns New route definitions with prefix applied */ declare function useGroup(prefix?: string, ...args: BunRoutes[]): BunRoutes; /** * Global request middleware instance */ declare const beforeRequest: BeforeRequest; /** * Global response middleware instance */ declare const beforeResponse: BeforeResponse; /** * Alias for useMiddleware */ declare const m: typeof useMiddleware; /** * Alias for useGroup */ declare const g: typeof useGroup; export { HTTPMethodHandler, HTTPMethod, BunRoutes, ResponseHandler, RequestHandler, BeforeRequest, BeforeResponse, useMiddleware, useGroup, beforeRequest, beforeResponse, m, g };