UNPKG

@cldn/web-ts

Version:
50 lines 2.71 kB
/** * A registry that manages multiple routes and delegates request handling. */ class RouteRegistry { routes = new Set(); /** * Registers one or more routes into the registry. * * @param routes The routes to register. */ register(...routes) { for (const route of routes) this.routes.add(route); } /** * Check if any registered route matches the given request. * @param req The request to check. */ match(req) { for (const route of this.routes) if (route.match(req)) return true; return false; } /** * Find and invoke the first matching route to handle the request. * @param req The request to handle. * @return The response generated by handling the request. * @throws {@link RouteRegistry.NoRouteError} If no route matches the request. */ handle(req) { for (const route of this.routes) if (route.match(req)) return route.handle(req); throw new RouteRegistry.NoRouteError(); } } (function (RouteRegistry) { /** * No route can be found for handling the request. */ class NoRouteError extends Error { constructor() { super("No route in this registry matches the request."); } } RouteRegistry.NoRouteError = NoRouteError; })(RouteRegistry || (RouteRegistry = {})); export { RouteRegistry }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0aW5nL1JvdXRlUmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7O0dBRUc7QUFDSCxNQUFNLGFBQWE7SUFDRSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQztJQUU5Qzs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLEdBQUcsTUFBa0I7UUFDakMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsR0FBZTtRQUN4QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxHQUFlO1FBQ3pCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU07WUFDM0IsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDaEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBRUQsV0FBVSxhQUFhO0lBQ25COztPQUVHO0lBQ0gsTUFBYSxZQUFhLFNBQVEsS0FBSztRQUNuQztZQUNJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQzVELENBQUM7S0FDSjtJQUpZLDBCQUFZLGVBSXhCLENBQUE7QUFDTCxDQUFDLEVBVFMsYUFBYSxLQUFiLGFBQWEsUUFTdEI7QUFFRCxPQUFPLEVBQUMsYUFBYSxFQUFDLENBQUMifQ==