dewy
Version:
Dewy(dǝw-y) is a minimalist HTTP server framework with a small codebase, utilizing built-in URLPattern for efficient routing.
43 lines (42 loc) • 1.92 kB
TypeScript
import * as dntShim from "./_dnt.shims.js";
export type ErrorHandler = (error: unknown) => Response | Promise<Response>;
export interface RouterOptions {
errorHandler?: ErrorHandler;
}
export interface Context {
match: URLPatternResult;
request: Request;
}
export type PathPattern = string | dntShim.URLPatternInput | dntShim.URLPattern;
export type RouteHandler = (ctx: Context) => Response | Promise<Response>;
export type MiddlewareNextHandler = (ctx?: Context) => Response | Promise<Response>;
export type MiddlewareHandler = (ctx: Context, next: MiddlewareNextHandler) => Response | Promise<Response>;
export interface RouteParams {
method: string | string[];
pattern: PathPattern;
middleware?: MiddlewareHandler | MiddlewareHandler[] | null;
}
export interface GroupParams {
prefix?: string | null;
domain?: string | string[] | null;
middleware?: MiddlewareHandler | MiddlewareHandler[] | null;
}
export declare class Router {
_groups: Group[];
_definedMiddlewares: MiddlewareHandler[];
_routes: Map<string, [pattern: dntShim.URLPattern, handler: RouteHandler, middlewares: MiddlewareHandler[]][]>;
_errorHandler: ErrorHandler;
constructor(options?: RouterOptions);
use(...middlewares: MiddlewareHandler[]): void;
group({ domain, prefix, middleware }: GroupParams, handler: () => void): void;
get(pattern: PathPattern, fn: RouteHandler): void;
head(pattern: PathPattern, fn: RouteHandler): void;
post(pattern: PathPattern, fn: RouteHandler): void;
put(pattern: PathPattern, fn: RouteHandler): void;
del(pattern: PathPattern, fn: RouteHandler): void;
options(pattern: PathPattern, fn: RouteHandler): void;
patch(pattern: PathPattern, fn: RouteHandler): void;
all(pattern: PathPattern, fn: RouteHandler): void;
addRoute(route: RouteParams, fn: RouteHandler): void;
dispatch(request: Request): Promise<Response>;
}