import { HttpMethod, IncomingMessage, ServerResponse, Middleware } from '../types'; import { WebServerContext } from '../middleware/context'; export type RouteHandler = (context: WebServerContext) => void | Promise; export type RouteArg = Route | Route[] | RouteGroup | RouteGroup[]; export interface Route { method: HttpMethod; path: string; handler: RouteHandler; isPublic?: boolean; } export interface RouteGroup { routes: RouteArg; pathPrefix?: string; isPublic?: boolean; } export interface Router { add(routes: RouteArg); setAuthMiddleware(strategy: string, mw: Middleware); routeIsPublicDefault: boolean; }