@bepalo/router 1.2.14 → 1.6.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,64 @@
1
- import { CTXAddress } from "./helpers";
2
- import { RouterContext } from "./router";
3
- import { Handler, HttpMethod } from "./types";
1
+ import type { RouterContext } from "./router";
2
+ import type { FreeHandler, Handler, HttpMethod, CTXAddress } from "./types";
4
3
  import { CacheConfig } from "@bepalo/cache";
5
4
  import { JWT, JwtPayload, JwtVerifyOptions } from "@bepalo/jwt";
5
+ /**
6
+ * Context object containing parsed cookies.
7
+ * @typedef {Object} CTXCookie
8
+ * @property {Record<string, string>} cookie - Parsed cookies from the request
9
+ */
10
+ export type CTXCookie = {
11
+ cookie: Record<string, string>;
12
+ };
13
+ /**
14
+ * Creates middleware that parses cookies from the request and adds them to the context.
15
+ * @returns {Function} A middleware function that adds parsed cookies to context.cookie
16
+ * @example
17
+ * const cookieParser = parseCookie();
18
+ * // Use in respondWith: respondWith({}, cookieParser(), ...otherHandlers)
19
+ */
20
+ export declare const parseCookie: <Context extends CTXCookie>() => FreeHandler<Context>;
21
+ /**
22
+ * Parsed body object types.
23
+ * @typedef {Object} ParsedBody
24
+ */
25
+ export type ParsedBody = {
26
+ value: string | number | boolean | null;
27
+ } | {
28
+ values: unknown[];
29
+ } | Record<string, unknown>;
30
+ /**
31
+ * Context object containing parsed request body.
32
+ * @typedef {Object} CTXBody
33
+ * @property {ParsedBody} body - Parsed request body data
34
+ */
35
+ export type CTXBody = {
36
+ body: ParsedBody;
37
+ };
38
+ /**
39
+ * Supported media types for request body parsing.
40
+ * @typedef {"application/x-www-form-urlencoded"|"application/json"|"text/plain"} SupportedBodyMediaTypes
41
+ */
42
+ export type SupportedBodyMediaTypes = "application/x-www-form-urlencoded" | "application/json" | "text/plain";
43
+ /**
44
+ * Creates middleware that parses the request body based on Content-Type.
45
+ * Supports url-encoded forms, JSON, and plain text.
46
+ * @param {Object} [options] - Configuration options for body parsing
47
+ * @param {SupportedBodyMediaTypes|SupportedBodyMediaTypes[]} [options.accept] - Media types to accept (defaults to all supported)
48
+ * @param {number} [options.maxSize] - Maximum body size in bytes (defaults to 1MB)
49
+ * @param {number} [options.once] - Do not parse if parsed already. checks `ctx.body`
50
+ * @param {number} [options.clone] - Clone request before parsing it. Useful for forwarding.
51
+ * @returns {Function} A middleware function that adds parsed body to context.body
52
+ * @throws {Response} Returns a 415 response if content-type is not accepted
53
+ * @throws {Response} Returns a 413 response if body exceeds maxSize
54
+ * @throws {Response} Returns a 400 response if body is malformed
55
+ */
56
+ export declare const parseBody: <Context extends CTXBody>(options?: {
57
+ accept?: SupportedBodyMediaTypes | SupportedBodyMediaTypes[];
58
+ maxSize?: number;
59
+ once?: boolean;
60
+ clone?: boolean;
61
+ }) => FreeHandler<Context>;
6
62
  /**
7
63
  * Creates a rate limiting middleware using token bucket algorithm.
8
64
  * Supports both fixed interval refill and continuous rate-based refill.
@@ -64,6 +120,7 @@ export declare const limitRate: <XContext = {}, Context extends RouterContext<XC
64
120
  * @param {boolean} [config.credentials=false] - Allow credentials (cookies, authorization headers)
65
121
  * @param {number} [config.maxAge=86400] - Maximum age for preflight cache in seconds
66
122
  * @param {boolean} [config.varyOrigin=false] - Add Vary: Origin header for caching
123
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
67
124
  * @returns {Function} Middleware function that handles CORS headers
68
125
  *
69
126
  * @example
@@ -102,6 +159,68 @@ export type CTXBasicAuth<prop extends string = "basicAuth"> = RouterContext<{
102
159
  role: string;
103
160
  } & Record<string, any>;
104
161
  }>;
162
+ /**
163
+ * Represents an authenticated user.
164
+ */
165
+ export interface Auth {
166
+ /** Unique identifier for the user */
167
+ id: string;
168
+ /** Role assigned to the user (e.g., "admin", "user") */
169
+ role: string;
170
+ }
171
+ /**
172
+ * Context extension that includes authentication information.
173
+ */
174
+ export interface CTXAuth {
175
+ /** Authenticated user details */
176
+ auth: Auth;
177
+ }
178
+ /**
179
+ * auth context parser for authenticate middleware
180
+ */
181
+ export type ParseAuthFn<XContext = {}> = (req: Request, ctx: RouterContext<Partial<CTXAuth> & XContext>) => Auth | Error | null | undefined;
182
+ /**
183
+ * Middleware to authenticate a request.
184
+ *
185
+ * @template XContext - Additional context type to merge with CTXAuth.
186
+ * @param {Object} [options] - Configuration options.
187
+ * @param {ParseAuthFn}[options.parseAuth] - Function to extract authentication info from the request.
188
+ * Should return an `Auth` object if valid, `Error` if invalid, or `null/undefined` if missing.
189
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
190
+ * @param {boolean} [options.checkOnly=false] - If true, only checks authentication without returning a response.
191
+ *
192
+ * @returns {FreeHandler<Partial<CTXAuth>&XContext>} A handler that sets `ctx.auth` if authentication succeeds,
193
+ * otherwise returns a `401 Unauthorized` or with error message if available response (unless `checkOnly` is true).
194
+ */
195
+ export declare const authenticate: <XContext = {}>({ parseAuth, endHere, checkOnly, }: {
196
+ parseAuth: ParseAuthFn<XContext>;
197
+ endHere?: boolean;
198
+ checkOnly?: boolean;
199
+ }) => FreeHandler<Partial<CTXAuth> & XContext>;
200
+ /**
201
+ * Middleware to authorize a request based on role or permissions.
202
+ *
203
+ * @template XContext - Additional context type to merge with CTXAuth.
204
+ * @param {Object} [options] - Configuration options.
205
+ * @param {(role: string) => boolean}[options.allowRole] - Function to check if a role is allowed.
206
+ * @param {(role: string) => boolean}[options.forbidRole] - Function to check if a role is forbidden.
207
+ * @param {string[]}[options.forPermissions] - List of permissions required for access.
208
+ * @param {(permission: string,role: string) => boolean|null|undefined}[options.hasPermission] - Function to check if a role has a given permission.
209
+ * Required if `forPermissions` is provided.
210
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
211
+ *
212
+ * @returns {FreeHandler<Partial<CTXAuth>&XContext>} A handler that checks `ctx.auth` and enforces role/permission rules.
213
+ * Returns `401 Unauthorized` if no auth is present, or `403 Forbidden` if checks fail.
214
+ * Throws an error if `forPermissions` is set without `hasPermission`.
215
+ *
216
+ */
217
+ export declare const authorize: <XContext = {}>({ allowRole, forbidRole, forPermissions, hasPermission, endHere, }: {
218
+ allowRole?: (role: string) => boolean;
219
+ forbidRole?: (role: string) => boolean;
220
+ forPermissions?: string[];
221
+ hasPermission?: (permission: string, role: string) => boolean | null | undefined;
222
+ endHere?: boolean;
223
+ }) => FreeHandler<Partial<CTXAuth> & XContext>;
105
224
  /**
106
225
  * Creates a Basic Authentication middleware.
107
226
  * Supports RFC 7617 Basic Authentication scheme.
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,125 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authJWT = exports.authAPIKey = exports.authBasic = exports.cors = exports.limitRate = void 0;
12
+ exports.authJWT = exports.authAPIKey = exports.authBasic = exports.authorize = exports.authenticate = exports.cors = exports.limitRate = exports.parseBody = exports.parseCookie = void 0;
4
13
  const helpers_1 = require("./helpers");
5
14
  const cache_1 = require("@bepalo/cache");
6
15
  const time_1 = require("@bepalo/time");
16
+ /**
17
+ * Creates middleware that parses cookies from the request and adds them to the context.
18
+ * @returns {Function} A middleware function that adds parsed cookies to context.cookie
19
+ * @example
20
+ * const cookieParser = parseCookie();
21
+ * // Use in respondWith: respondWith({}, cookieParser(), ...otherHandlers)
22
+ */
23
+ const parseCookie = () => {
24
+ return (req, ctx) => {
25
+ var _a;
26
+ const cookie = (_a = (0, helpers_1.parseCookieFromRequest)(req)) !== null && _a !== void 0 ? _a : {};
27
+ ctx.cookie = cookie;
28
+ };
29
+ };
30
+ exports.parseCookie = parseCookie;
31
+ /**
32
+ * Creates middleware that parses the request body based on Content-Type.
33
+ * Supports url-encoded forms, JSON, and plain text.
34
+ * @param {Object} [options] - Configuration options for body parsing
35
+ * @param {SupportedBodyMediaTypes|SupportedBodyMediaTypes[]} [options.accept] - Media types to accept (defaults to all supported)
36
+ * @param {number} [options.maxSize] - Maximum body size in bytes (defaults to 1MB)
37
+ * @param {number} [options.once] - Do not parse if parsed already. checks `ctx.body`
38
+ * @param {number} [options.clone] - Clone request before parsing it. Useful for forwarding.
39
+ * @returns {Function} A middleware function that adds parsed body to context.body
40
+ * @throws {Response} Returns a 415 response if content-type is not accepted
41
+ * @throws {Response} Returns a 413 response if body exceeds maxSize
42
+ * @throws {Response} Returns a 400 response if body is malformed
43
+ */
44
+ const parseBody = (options) => {
45
+ var _a;
46
+ const accept = (options === null || options === void 0 ? void 0 : options.accept)
47
+ ? Array.isArray(options.accept)
48
+ ? options.accept
49
+ : [options.accept]
50
+ : [
51
+ "application/x-www-form-urlencoded",
52
+ "application/json",
53
+ "text/plain",
54
+ ];
55
+ const maxSize = (_a = options === null || options === void 0 ? void 0 : options.maxSize) !== null && _a !== void 0 ? _a : 1024 * 1024; // Default 1MB
56
+ const once = options === null || options === void 0 ? void 0 : options.once;
57
+ const clone = options === null || options === void 0 ? void 0 : options.clone;
58
+ return (_req, ctx) => __awaiter(void 0, void 0, void 0, function* () {
59
+ var _a, _b, _c, _d;
60
+ if (once && ctx.body)
61
+ return;
62
+ const contentType = (_a = _req.headers.get("content-type")) === null || _a === void 0 ? void 0 : _a.split(";", 2)[0];
63
+ if (!(contentType && accept.includes(contentType))) {
64
+ yield ((_b = _req.body) === null || _b === void 0 ? void 0 : _b.cancel().catch(() => { }));
65
+ return (0, helpers_1.status)(415);
66
+ }
67
+ const req = clone ? _req.clone() : _req;
68
+ try {
69
+ const contentLengthHeader = req.headers.get("content-length");
70
+ const contentLength = contentLengthHeader
71
+ ? parseInt(contentLengthHeader)
72
+ : undefined;
73
+ if (contentLength === 0) {
74
+ ctx.body = {};
75
+ return;
76
+ }
77
+ if (contentLength !== undefined && contentLength > maxSize) {
78
+ yield ((_c = _req.body) === null || _c === void 0 ? void 0 : _c.cancel().catch(() => { }));
79
+ return (0, helpers_1.status)(413);
80
+ }
81
+ switch (contentType) {
82
+ case "application/x-www-form-urlencoded": {
83
+ const body = yield req.formData();
84
+ ctx.body = Object.fromEntries(body.entries());
85
+ break;
86
+ }
87
+ case "application/json": {
88
+ const body = yield req.json();
89
+ if (Array.isArray(body)) {
90
+ ctx.body = { values: body };
91
+ }
92
+ else if (body === undefined) {
93
+ ctx.body = {};
94
+ }
95
+ else if (body === null) {
96
+ ctx.body = { value: null };
97
+ }
98
+ else if (typeof body === "object") {
99
+ ctx.body = body;
100
+ }
101
+ else {
102
+ ctx.body = { value: body };
103
+ }
104
+ break;
105
+ }
106
+ case "text/plain": {
107
+ const text = yield req.text();
108
+ ctx.body = { text };
109
+ break;
110
+ }
111
+ default:
112
+ ctx.body = {};
113
+ break;
114
+ }
115
+ }
116
+ catch (error) {
117
+ yield ((_d = _req.body) === null || _d === void 0 ? void 0 : _d.cancel().catch(() => { }));
118
+ return (0, helpers_1.status)(400, "Malformed Payload");
119
+ }
120
+ });
121
+ };
122
+ exports.parseBody = parseBody;
7
123
  /**
8
124
  * Creates a rate limiting middleware using token bucket algorithm.
9
125
  * Supports both fixed interval refill and continuous rate-based refill.
@@ -127,6 +243,7 @@ exports.limitRate = limitRate;
127
243
  * @param {boolean} [config.credentials=false] - Allow credentials (cookies, authorization headers)
128
244
  * @param {number} [config.maxAge=86400] - Maximum age for preflight cache in seconds
129
245
  * @param {boolean} [config.varyOrigin=false] - Add Vary: Origin header for caching
246
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
130
247
  * @returns {Function} Middleware function that handles CORS headers
131
248
  *
132
249
  * @example
@@ -194,6 +311,76 @@ const cors = (config) => {
194
311
  };
195
312
  };
196
313
  exports.cors = cors;
314
+ /**
315
+ * Middleware to authenticate a request.
316
+ *
317
+ * @template XContext - Additional context type to merge with CTXAuth.
318
+ * @param {Object} [options] - Configuration options.
319
+ * @param {ParseAuthFn}[options.parseAuth] - Function to extract authentication info from the request.
320
+ * Should return an `Auth` object if valid, `Error` if invalid, or `null/undefined` if missing.
321
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
322
+ * @param {boolean} [options.checkOnly=false] - If true, only checks authentication without returning a response.
323
+ *
324
+ * @returns {FreeHandler<Partial<CTXAuth>&XContext>} A handler that sets `ctx.auth` if authentication succeeds,
325
+ * otherwise returns a `401 Unauthorized` or with error message if available response (unless `checkOnly` is true).
326
+ */
327
+ const authenticate = ({ parseAuth, endHere = false, checkOnly = false, }) => {
328
+ return function (req, ctx) {
329
+ var _a;
330
+ const auth = parseAuth(req, ctx);
331
+ if (!auth) {
332
+ return checkOnly ? false : (0, helpers_1.status)(401);
333
+ }
334
+ else if (auth instanceof Error) {
335
+ return checkOnly ? false : (0, helpers_1.status)(401, (_a = auth.message) !== null && _a !== void 0 ? _a : undefined);
336
+ }
337
+ ctx.auth = auth;
338
+ if (endHere)
339
+ return true;
340
+ };
341
+ };
342
+ exports.authenticate = authenticate;
343
+ /**
344
+ * Middleware to authorize a request based on role or permissions.
345
+ *
346
+ * @template XContext - Additional context type to merge with CTXAuth.
347
+ * @param {Object} [options] - Configuration options.
348
+ * @param {(role: string) => boolean}[options.allowRole] - Function to check if a role is allowed.
349
+ * @param {(role: string) => boolean}[options.forbidRole] - Function to check if a role is forbidden.
350
+ * @param {string[]}[options.forPermissions] - List of permissions required for access.
351
+ * @param {(permission: string,role: string) => boolean|null|undefined}[options.hasPermission] - Function to check if a role has a given permission.
352
+ * Required if `forPermissions` is provided.
353
+ * @param {boolean} [options.endHere=false] - If true, stops only pipeline flow per handler type after success.
354
+ *
355
+ * @returns {FreeHandler<Partial<CTXAuth>&XContext>} A handler that checks `ctx.auth` and enforces role/permission rules.
356
+ * Returns `401 Unauthorized` if no auth is present, or `403 Forbidden` if checks fail.
357
+ * Throws an error if `forPermissions` is set without `hasPermission`.
358
+ *
359
+ */
360
+ const authorize = ({ allowRole, forbidRole, forPermissions, hasPermission, endHere = false, }) => {
361
+ if (forPermissions && !hasPermission) {
362
+ throw new Error("authorize middleware 'forPermissions' require 'hasPermission'");
363
+ }
364
+ return (req, { auth }) => {
365
+ if (!auth) {
366
+ return (0, helpers_1.status)(401);
367
+ }
368
+ if (allowRole && !allowRole(auth.role)) {
369
+ return (0, helpers_1.status)(403);
370
+ }
371
+ if (forbidRole && forbidRole(auth.role)) {
372
+ return (0, helpers_1.status)(403);
373
+ }
374
+ if (forPermissions && hasPermission) {
375
+ const permitted = forPermissions.some((permission) => hasPermission(permission, auth.role));
376
+ if (!permitted)
377
+ return (0, helpers_1.status)(403);
378
+ }
379
+ if (endHere)
380
+ return true;
381
+ };
382
+ };
383
+ exports.authorize = authorize;
197
384
  /**
198
385
  * Creates a Basic Authentication middleware.
199
386
  * Supports RFC 7617 Basic Authentication scheme.
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -4,9 +4,8 @@
4
4
  * @author Natnael Eshetu
5
5
  * @exports Router
6
6
  */
7
- import { CTXError } from "./helpers";
8
7
  import { Tree } from "./tree";
9
- import { HttpMethod, MethodPath, Pipeline, HandlerType, HttpPath, Handler, HeaderTuple } from "./types";
8
+ import type { HttpMethod, MethodPath, Pipeline, HandlerType, HttpPath, Handler, HeaderTuple, CTXError } from "./types";
10
9
  /**
11
10
  * Checks if a string is a valid HTTP method.
12
11
  * @param {string} method - The method string to validate
@@ -321,5 +320,7 @@ export interface SplitURL {
321
320
  index: number;
322
321
  }>;
323
322
  }
323
+ export declare const ALL_METHODS: HttpMethod[];
324
+ export declare const CRUD_METHODS: HttpMethod[];
324
325
  export default Router;
325
326
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/router.js CHANGED
@@ -27,7 +27,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
27
27
  };
28
28
  var _a, _Router_trees, _Router_enable, _Router_defaultHeaders, _Router_defaultCatcher, _Router_defaultFallback, _Router_setters, _Router_ALL_METHOD_PATHS;
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Router = exports.isValidHttpMethod = void 0;
30
+ exports.CRUD_METHODS = exports.ALL_METHODS = exports.Router = exports.isValidHttpMethod = void 0;
31
31
  const tree_1 = require("./tree");
32
32
  /**
33
33
  * Checks if a string is a valid HTTP method.
@@ -606,6 +606,22 @@ _Router_ALL_METHOD_PATHS = { value: splitUrl([
606
606
  "PATCH /.**",
607
607
  "DELETE /.**",
608
608
  ]) };
609
+ exports.ALL_METHODS = [
610
+ "HEAD",
611
+ "OPTIONS",
612
+ "GET",
613
+ "POST",
614
+ "PUT",
615
+ "PATCH",
616
+ "DELETE",
617
+ ];
618
+ exports.CRUD_METHODS = [
619
+ "GET",
620
+ "POST",
621
+ "PUT",
622
+ "PATCH",
623
+ "DELETE",
624
+ ];
609
625
  /**
610
626
  * Splits URL patterns into their components for routing.
611
627
  * Supports wildcards (*), super-globs (**), and parameters (:param).
@@ -620,41 +636,53 @@ function splitUrl(urls) {
620
636
  urls = (Array.isArray(urls) ? urls : [urls]);
621
637
  let splitUrls = [];
622
638
  for (const mp of urls) {
623
- const [method, pathname] = mp
639
+ const [_method, pathname] = mp
624
640
  .split(" ", 2)
625
641
  .map((mu) => mu.trim());
626
642
  const params = new Map();
627
643
  const nodes = [];
628
644
  const pathNodes = pathname.substring(1).split("/");
629
645
  const lastPathNode = pathNodes.length > 0 && pathNodes[pathNodes.length - 1];
630
- // check the last path node to match '***'
631
- if (lastPathNode === ".**") {
632
- const curNodes = pathNodes.slice(0, pathNodes.length - 1);
633
- splitUrls.push({ method, pathname, nodes: [...curNodes, ""], params });
634
- splitUrls.push({ method, pathname, nodes: [...curNodes, "**"], params });
635
- }
636
- else if (lastPathNode === ".*") {
637
- const curNodes = pathNodes.splice(0, pathNodes.length - 1);
638
- splitUrls.push({ method, pathname, nodes: [...curNodes, ""], params });
639
- splitUrls.push({ method, pathname, nodes: [...curNodes, "*"], params });
640
- }
641
- else {
642
- // process the path nodes
643
- for (let index = 0; index < pathNodes.length; index++) {
644
- const pathNode = pathNodes[index];
645
- if (pathNode === ".**" && index < pathNodes.length - 1) {
646
- throw new Error("Super-Glob not at the end of pathname");
647
- }
648
- if (pathNode.startsWith(":")) {
649
- const name = pathNode.substring(1);
650
- params.set(index, { name, index });
651
- nodes.push("*");
652
- }
653
- else {
654
- nodes.push(pathNode);
646
+ const methods = _method === "ALL"
647
+ ? exports.ALL_METHODS
648
+ : _method === "CRUD"
649
+ ? exports.CRUD_METHODS
650
+ : [_method];
651
+ for (const method of methods) {
652
+ // check the last path node to match globs '.**'
653
+ if (lastPathNode === ".**") {
654
+ const curNodes = pathNodes.slice(0, pathNodes.length - 1);
655
+ splitUrls.push({ method, pathname, nodes: [...curNodes, ""], params });
656
+ splitUrls.push({
657
+ method,
658
+ pathname,
659
+ nodes: [...curNodes, "**"],
660
+ params,
661
+ });
662
+ }
663
+ else if (lastPathNode === ".*") {
664
+ const curNodes = pathNodes.splice(0, pathNodes.length - 1);
665
+ splitUrls.push({ method, pathname, nodes: [...curNodes, ""], params });
666
+ splitUrls.push({ method, pathname, nodes: [...curNodes, "*"], params });
667
+ }
668
+ else {
669
+ // process the path nodes
670
+ for (let index = 0; index < pathNodes.length; index++) {
671
+ const pathNode = pathNodes[index];
672
+ if (pathNode === ".**" && index < pathNodes.length - 1) {
673
+ throw new Error("Super-Glob not at the end of pathname");
674
+ }
675
+ if (pathNode.startsWith(":")) {
676
+ const name = pathNode.substring(1);
677
+ params.set(index, { name, index });
678
+ nodes.push("*");
679
+ }
680
+ else {
681
+ nodes.push(pathNode);
682
+ }
655
683
  }
684
+ splitUrls.push({ method, pathname, nodes, params });
656
685
  }
657
- splitUrls.push({ method, pathname, nodes, params });
658
686
  }
659
687
  }
660
688
  return splitUrls;