bun-serve-route-plus
Version:
Middleware & route group system for Bun's HTTP server
123 lines (104 loc) • 3.21 kB
TypeScript
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
};