UNPKG

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
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>; }