Router

class Router<TData = Record<never, never>> - TData is the req.data context expected from the parent.

Constructor

  • new Router<TData>(prefix?: string) - prefix defaults to "/"

Methods

  • get / post / put / patch / delete(url, handler, middlewares?, schemas?) - returns the router type widened with the new route
  • use(middleware) - middleware for routes registered after this call; widens req.data
  • use(prefix, router) / use(router) - mount a router
  • cors(rules: CorsRules): this - merge default CORS for this router
  • addRoute(route): this - same inference from a route object; optional cors field

CorsRules

type CorsAllow =
  | string
  | ((req: HttpRequest) => Promise<string | undefined> | string | undefined);

type CorsRules = {
  allowOrigin?: CorsAllow;
  allowMethods?: CorsAllow;
  allowHeaders?: CorsAllow;
  allowCredentials?: boolean;
  maxAge?: string;
};

On mount, each route gets mergeCorsRules(parent.corsRules, child.corsRules, route.cors). Later keys win. Guide: CORS.