alado 3.2.3 → 3.5.0

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.
Files changed (35) hide show
  1. package/README.md +15 -6
  2. package/dist/alado-server/alado-server.js +4 -1
  3. package/dist/alado-server/alado-server.js.map +1 -1
  4. package/dist/constants/http-server.d.ts +1 -0
  5. package/dist/constants/http-server.js +2 -1
  6. package/dist/constants/http-server.js.map +1 -1
  7. package/dist/dto/property-definition.d.ts +1 -0
  8. package/dist/helpers/parser/access-control-checker.js +11 -3
  9. package/dist/helpers/parser/access-control-checker.js.map +1 -1
  10. package/dist/helpers/parser/body-parser.d.ts +14 -0
  11. package/dist/helpers/parser/body-parser.js +76 -17
  12. package/dist/helpers/parser/body-parser.js.map +1 -1
  13. package/dist/helpers/validate/alado-options/validate-alado-options.js +15 -0
  14. package/dist/helpers/validate/alado-options/validate-alado-options.js.map +1 -1
  15. package/dist/helpers/validate/built-in/validator.js +4 -1
  16. package/dist/helpers/validate/built-in/validator.js.map +1 -1
  17. package/dist/helpers/validate/context/file-signature.d.ts +5 -0
  18. package/dist/helpers/validate/context/file-signature.js +57 -0
  19. package/dist/helpers/validate/context/file-signature.js.map +1 -0
  20. package/dist/helpers/validate/context/validate-context.js +4 -1
  21. package/dist/helpers/validate/context/validate-context.js.map +1 -1
  22. package/dist/helpers/validate/context/validate-request-files.js +6 -1
  23. package/dist/helpers/validate/context/validate-request-files.js.map +1 -1
  24. package/dist/helpers/validate/context/validate-request-part.js +126 -49
  25. package/dist/helpers/validate/context/validate-request-part.js.map +1 -1
  26. package/dist/options/alado-server-options.d.ts +2 -0
  27. package/dist/options/request-processor-options.d.ts +1 -0
  28. package/dist/options/router-options.d.ts +1 -0
  29. package/dist/request-processor/request-processor.d.ts +14 -4
  30. package/dist/request-processor/request-processor.js +240 -88
  31. package/dist/request-processor/request-processor.js.map +1 -1
  32. package/dist/router/router.d.ts +14 -0
  33. package/dist/router/router.js +86 -13
  34. package/dist/router/router.js.map +1 -1
  35. package/package.json +1 -1
@@ -2,33 +2,46 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RequestProcessor = void 0;
4
4
  exports.resolveSwaggerUiFile = resolveSwaggerUiFile;
5
+ exports.swaggerIndexHtml = swaggerIndexHtml;
5
6
  exports.toClientError = toClientError;
7
+ exports.clientIp = clientIp;
6
8
  const path_1 = require("path");
7
9
  const fs_1 = require("fs");
8
10
  const _const_1 = require("../constants/index.js");
9
11
  const _helper_1 = require("../helpers/index.js");
10
12
  let swaggerUiFiles = new Set();
11
13
  let swaggerUiAssetPath = '';
14
+ const SWAGGER_JSON_PATH = '/swagger.json';
12
15
  /**
13
- * Maps a request URL to a Swagger UI asset name, or undefined if it is not one.
14
- * The result is always an exact entry of the swagger-ui-dist listing, so no
15
- * part of the URL ever reaches the filesystem (no `..`, no subdirectories).
16
+ * Maps a request path (already through clearRoutePath, query string removed) to a Swagger UI
17
+ * file name, or undefined if it is not one. Files are only served under the docs route; the docs
18
+ * page sets <base href="<route>/"> so its relative asset URLs resolve there. Only a docs route of
19
+ * "/" serves files from the root. The result is always an exact entry of the swagger-ui-dist
20
+ * listing, so no part of the URL ever reaches the filesystem (no `..`, no subdirectories).
16
21
  */
17
- function resolveSwaggerUiFile(url, docsRoute) {
22
+ function resolveSwaggerUiFile(pathname, docsRoute) {
18
23
  const route = (0, _helper_1.clearRoutePath)(docsRoute || '');
19
- const pathname = url.split('?')[0];
20
24
  let name;
21
- if (pathname === route) {
25
+ if (pathname === route || (!route && pathname === '')) {
22
26
  name = 'index.html';
23
27
  }
24
- else if (route && pathname.startsWith(`${route}/`)) {
28
+ else if (pathname.startsWith(`${route}/`)) {
25
29
  name = pathname.slice(route.length + 1);
26
30
  }
27
- else {
28
- // index.html references its assets relatively, so they are requested from the root
29
- name = pathname.replace(/^\//, '');
30
- }
31
- return swaggerUiFiles.has(name) ? name : undefined;
31
+ return name !== undefined && swaggerUiFiles.has(name) ? name : undefined;
32
+ }
33
+ const swaggerContentTypes = {
34
+ css: 'text/css; charset=utf-8',
35
+ js: 'application/javascript; charset=utf-8',
36
+ map: 'application/json; charset=utf-8',
37
+ html: 'text/html; charset=utf-8',
38
+ png: 'image/png',
39
+ };
40
+ const htmlAttribute = (value) => value.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
41
+ /** Swagger UI's index.html, with a <base> so its relative asset URLs stay under the docs route. */
42
+ function swaggerIndexHtml(html, docsRoute) {
43
+ const base = `<base href="${htmlAttribute(`${(0, _helper_1.clearRoutePath)(docsRoute || '')}/`)}" />`;
44
+ return html.replace(/<head([^>]*)>/i, (head) => `${head}\n ${base}`);
32
45
  }
33
46
  /**
34
47
  * Errors that carry an HTTP status (thrown on purpose, e.g. `{ statusCode: 404,
@@ -43,6 +56,76 @@ function toClientError(e) {
43
56
  }
44
57
  return { statusCode: 500, message: 'Internal Server Error' };
45
58
  }
59
+ function hasKeys(value) {
60
+ for (const _ in value) {
61
+ return true;
62
+ }
63
+ return false;
64
+ }
65
+ const queryReaders = new WeakMap();
66
+ const queryPathRegExp = /^query(\.|\[|$)/;
67
+ function readsQuery(context) {
68
+ let reads = queryReaders.get(context);
69
+ if (reads === undefined) {
70
+ const paths = [
71
+ context.auth?.inputProperty,
72
+ ...(context.accessControl || []).flatMap((rule) => [
73
+ rule.inputProperty,
74
+ rule.compareWithProperty,
75
+ ]),
76
+ ].filter((path) => typeof path === 'string');
77
+ reads =
78
+ Boolean(context.options?.allowUnknownFields) ||
79
+ hasKeys(context.request.query) ||
80
+ paths.some((path) => queryPathRegExp.test(path));
81
+ queryReaders.set(context, reads);
82
+ }
83
+ return reads;
84
+ }
85
+ function clientIp(req, trustProxy) {
86
+ const socketAddress = req.socket?.remoteAddress;
87
+ const header = req.headers['x-forwarded-for'];
88
+ if (!trustProxy || !header) {
89
+ return socketAddress;
90
+ }
91
+ const forwarded = (Array.isArray(header) ? header.join(',') : header)
92
+ .split(',')
93
+ .map((address) => address.trim())
94
+ .filter(Boolean);
95
+ if (!forwarded.length) {
96
+ return socketAddress;
97
+ }
98
+ if (trustProxy === true) {
99
+ return forwarded[0];
100
+ }
101
+ // [client, proxy1, ..., socket]: step back trustProxy hops from the socket, never past the client
102
+ const chain = [
103
+ ...forwarded,
104
+ socketAddress,
105
+ ];
106
+ return chain[Math.max(0, chain.length - 1 - trustProxy)];
107
+ }
108
+ /**
109
+ * Adds a Vary token without dropping one the handler set: every spelling of the header name
110
+ * (Vary, vary, ...) is folded into a single Vary header, the handler's tokens first.
111
+ */
112
+ function mergeVary(headers, token) {
113
+ const tokens = [];
114
+ for (const name of Object.keys(headers)) {
115
+ if (name.length === 4 && name.toLowerCase() === 'vary') {
116
+ if (name !== 'Vary' || headers[name] !== token) {
117
+ tokens.push(...String(headers[name]).split(','));
118
+ }
119
+ delete headers[name];
120
+ }
121
+ }
122
+ const values = tokens.map((t) => t.trim()).filter(Boolean);
123
+ const lower = values.map((t) => t.toLowerCase());
124
+ if (!lower.includes('*') && !lower.includes(token.toLowerCase())) {
125
+ values.push(token);
126
+ }
127
+ headers.Vary = values.join(', ');
128
+ }
46
129
  // methods whose request body is read and parsed
47
130
  const bodyMethods = new Set([
48
131
  _const_1.HttpMethod.PUT,
@@ -52,36 +135,67 @@ const bodyMethods = new Set([
52
135
  ]);
53
136
  class RequestProcessor {
54
137
  options;
138
+ swaggerIndex = '';
139
+ swaggerInitializer = '';
140
+ // CORS header values that do not depend on the request, built on first use
141
+ corsStatic;
142
+ corsMethods = new WeakMap();
55
143
  constructor(requestProcessorOptions) {
56
144
  this.options = requestProcessorOptions;
57
145
  if (requestProcessorOptions.openApiDoc?.enable) {
58
146
  swaggerUiAssetPath = require('swagger-ui-dist').absolutePath();
59
- // Only regular files directly inside swagger-ui-dist are ever served.
147
+ // Only web assets directly inside swagger-ui-dist are ever served (not its package.json, README, LICENSE)
60
148
  swaggerUiFiles = new Set((0, fs_1.readdirSync)(swaggerUiAssetPath, { withFileTypes: true })
61
- .filter((entry) => entry.isFile())
149
+ .filter((entry) => entry.isFile() && swaggerContentTypes[entry.name.slice(entry.name.lastIndexOf('.') + 1)])
62
150
  .map((entry) => entry.name));
151
+ // the two files that are rewritten are built once, not read from disk on every request
152
+ this.swaggerIndex = swaggerIndexHtml((0, fs_1.readFileSync)((0, path_1.join)(swaggerUiAssetPath, 'index.html'), 'utf8'), requestProcessorOptions.openApiDoc.route);
153
+ this.swaggerInitializer = (0, fs_1.readFileSync)((0, path_1.join)(swaggerUiAssetPath, _const_1.SWAGGER_INITIALIZER_FILE_NAME), 'utf8').replace('https://petstore.swagger.io/v2/swagger.json', SWAGGER_JSON_PATH);
63
154
  }
64
155
  }
65
- respond(res, response, backgroundHeaders = {}) {
156
+ respond(res, response, backgroundHeaders) {
66
157
  let responseBody;
67
158
  const { statusCode, body } = response;
68
159
  const responseHeaders = response.headers || {};
69
- const headers = Object.assign({}, this.options.headers, backgroundHeaders, responseHeaders);
70
- const isStreamBody = (0, _helper_1.isReadableStream)(body);
71
- let contentType = responseHeaders['Content-Type'] ?? responseHeaders['content-type'];
72
- if (contentType === undefined) {
73
- const contentTypeKey = Object.keys(responseHeaders).find((h) => h.toLowerCase() === 'content-type');
74
- contentType = contentTypeKey ? responseHeaders[contentTypeKey] : undefined;
160
+ const headers = {};
161
+ let contentType;
162
+ let hasContentLength = false;
163
+ for (const source of [
164
+ this.options.headers,
165
+ backgroundHeaders,
166
+ responseHeaders,
167
+ ]) {
168
+ for (const name in source) {
169
+ headers[name] = source[name];
170
+ }
75
171
  }
172
+ if (backgroundHeaders?.Vary) {
173
+ mergeVary(headers, backgroundHeaders.Vary);
174
+ }
175
+ for (const name in responseHeaders) {
176
+ // only names of a matching length are lower-cased
177
+ const lower = name.length === 12 || name.length === 14 || name.length === 17 ? name.toLowerCase() : '';
178
+ if (lower === 'content-type' && contentType === undefined) {
179
+ contentType = responseHeaders[name];
180
+ }
181
+ else if (lower === 'content-length' || lower === 'transfer-encoding') {
182
+ hasContentLength = true;
183
+ }
184
+ }
185
+ // cheapest checks first: most bodies are plain objects, strings or buffers
76
186
  const isRawBody = body === undefined ||
77
187
  body === null ||
78
188
  typeof body === 'string' ||
79
189
  Buffer.isBuffer(body) ||
80
190
  body instanceof Uint8Array;
81
- if (contentType?.startsWith(_const_1.ContentType.JSON)) {
82
- responseBody = isStreamBody ? body : JSON.stringify(body);
191
+ const isStreamBody = !isRawBody && typeof body.pipe === 'function' && (0, _helper_1.isReadableStream)(body);
192
+ if (isStreamBody) {
193
+ responseBody = body;
83
194
  }
84
- else if (!isStreamBody && !isRawBody) {
195
+ else if (contentType !== undefined && contentType.startsWith(_const_1.ContentType.JSON)) {
196
+ responseBody = JSON.stringify(body);
197
+ }
198
+ else if (!isRawBody) {
85
199
  // res.end() only accepts strings and buffers: serialise anything else as JSON
86
200
  if (!contentType) {
87
201
  headers['Content-Type'] = _const_1.ContentType.JSON;
@@ -91,6 +205,16 @@ class RequestProcessor {
91
205
  else {
92
206
  responseBody = body;
93
207
  }
208
+ // A known length avoids Transfer-Encoding: chunked (extra framing on every response).
209
+ // 1xx/204/304 must not carry one; streams keep chunked encoding.
210
+ if (!isStreamBody && !hasContentLength && statusCode >= 200 && statusCode !== 204 && statusCode !== 304) {
211
+ headers['Content-Length'] =
212
+ responseBody === undefined || responseBody === null
213
+ ? '0'
214
+ : typeof responseBody === 'string'
215
+ ? String(Buffer.byteLength(responseBody))
216
+ : String(responseBody.byteLength);
217
+ }
94
218
  res.writeHead(statusCode, headers);
95
219
  if (isStreamBody) {
96
220
  responseBody.pipe(res);
@@ -117,69 +241,64 @@ class RequestProcessor {
117
241
  const { router, openApiDoc, enableCors } = this.options;
118
242
  const { headers, method } = req;
119
243
  const url = (0, _helper_1.clearRoutePath)(req.url);
120
- const ip = req.headers['x-forwarded-for'] || req.socket?.remoteAddress;
244
+ const ip = clientIp(req, this.options.trustProxy);
121
245
  const origin = req.headers.origin || '*';
122
246
  // Process Open API routes
123
- if (openApiDoc?.enable) {
124
- if (method === _const_1.HttpMethod.GET) {
125
- const swaggerFile = req.url?.startsWith(`/swagger.json`)
126
- ? undefined
127
- : resolveSwaggerUiFile(url, openApiDoc.route);
128
- if (swaggerFile) {
129
- // swaggerFile is a bare name from the swagger-ui-dist listing, never a path from the URL
130
- const filePath = (0, path_1.join)(swaggerUiAssetPath, swaggerFile);
131
- if (swaggerFile === _const_1.SWAGGER_INITIALIZER_FILE_NAME) {
132
- const initFileContent = (0, fs_1.readFileSync)(filePath)
133
- .toString()
134
- .replace('https://petstore.swagger.io/v2/swagger.json', '/swagger.json');
135
- res.writeHead(200, {
136
- 'Content-Type': 'application/javascript; charset=utf-8',
137
- 'Content-Length': Buffer.byteLength(initFileContent),
138
- });
139
- res.end(initFileContent);
140
- return;
247
+ if (openApiDoc?.enable && method === _const_1.HttpMethod.GET) {
248
+ const queryStart = url.indexOf('?');
249
+ const pathname = queryStart === -1 ? url : url.slice(0, queryStart);
250
+ if (pathname === SWAGGER_JSON_PATH) {
251
+ return this.respond(res, {
252
+ statusCode: 200,
253
+ headers: { 'Content-Type': 'application/json' },
254
+ body: this.options.router.openApiDocObject,
255
+ });
256
+ }
257
+ const swaggerFile = resolveSwaggerUiFile(pathname, openApiDoc.route);
258
+ if (swaggerFile === 'index.html') {
259
+ return this.respond(res, {
260
+ statusCode: 200,
261
+ headers: { 'Content-Type': 'text/html; charset=utf-8' },
262
+ body: this.swaggerIndex,
263
+ });
264
+ }
265
+ if (swaggerFile === _const_1.SWAGGER_INITIALIZER_FILE_NAME) {
266
+ return this.respond(res, {
267
+ statusCode: 200,
268
+ headers: { 'Content-Type': 'application/javascript; charset=utf-8' },
269
+ body: this.swaggerInitializer,
270
+ });
271
+ }
272
+ if (swaggerFile) {
273
+ // swaggerFile is a bare name from the swagger-ui-dist listing, never a path from the URL
274
+ const extension = swaggerFile.slice(swaggerFile.lastIndexOf('.') + 1);
275
+ const contentType = swaggerContentTypes[extension];
276
+ const stream = (0, fs_1.createReadStream)((0, path_1.join)(swaggerUiAssetPath, swaggerFile));
277
+ stream.once('open', () => {
278
+ if (contentType && !res.headersSent) {
279
+ res.setHeader('Content-Type', contentType);
141
280
  }
142
- const stream = (0, fs_1.createReadStream)(filePath);
143
- stream.on('error', () => {
144
- if (!res.headersSent) {
145
- this.respond(res, { statusCode: 404, headers: { 'Content-Type': 'text/plain' }, body: 'Not Found' });
146
- }
147
- else {
148
- res.destroy();
149
- }
150
- });
151
- stream.pipe(res);
152
- return;
153
- }
154
- else if (req.url?.startsWith(`/swagger.json`)) {
155
- return this.respond(res, {
156
- statusCode: 200,
157
- headers: { 'Content-Type': 'application/json' },
158
- body: this.options.router.openApiDocObject,
159
- });
160
- }
281
+ });
282
+ stream.on('error', () => {
283
+ if (!res.headersSent) {
284
+ this.respond(res, { statusCode: 404, headers: { 'Content-Type': 'text/plain' }, body: 'Not Found' });
285
+ }
286
+ else {
287
+ res.destroy();
288
+ }
289
+ });
290
+ stream.pipe(res);
291
+ return;
161
292
  }
162
293
  }
163
294
  // Process API routes
164
- const [uri, queryString,] = url.split('?');
165
- const route = router.parse(method, (0, _helper_1.clearRoutePath)(uri));
166
- let backgroundHeaders = {};
167
- if (this.options.enableCors) {
168
- backgroundHeaders = {
169
- 'Access-Control-Allow-Methods': route?.allowedMethods?.join(', ') || '',
170
- 'Access-Control-Allow-Headers': this.options.router.options.cors?.allowedHeaders?.join(', ') || '',
171
- 'Access-Control-Expose-Headers': this.options.router.options.cors?.exposeHeaders?.join(', ') || '',
172
- 'Access-Control-Allow-Credentials': this.options.router.options.cors?.allowedCredentials ? 'true' : 'false',
173
- };
174
- if (Array.isArray(this.options.router.options.cors.allowedOrigin)) {
175
- if (this.options.router.options.cors.allowedOrigin.includes(origin)) {
176
- backgroundHeaders['Access-Control-Allow-Origin'] = origin;
177
- }
178
- }
179
- else {
180
- backgroundHeaders['Access-Control-Allow-Origin'] =
181
- this.options.router.options.cors.allowedOrigin || origin;
182
- }
295
+ const queryIndex = url.indexOf('?');
296
+ const uri = queryIndex === -1 ? url : url.slice(0, queryIndex);
297
+ const queryString = queryIndex === -1 ? '' : url.slice(queryIndex + 1);
298
+ const route = router.match(method, (0, _helper_1.clearRoutePath)(uri));
299
+ let backgroundHeaders;
300
+ if (enableCors) {
301
+ backgroundHeaders = this.corsHeaders(route?.allowedMethods, origin);
183
302
  }
184
303
  if (!route) {
185
304
  // Not Found
@@ -203,14 +322,9 @@ class RequestProcessor {
203
322
  rawBody = r.rawBody;
204
323
  files = r.files;
205
324
  }
206
- if (context.request.query) {
325
+ if (queryString && readsQuery(context)) {
207
326
  query = (0, _helper_1.queryParser)(queryString);
208
327
  }
209
- context.request.headers = context.request.headers || {};
210
- context.request.query = context.request.query || {};
211
- context.request.body = context.request.body || {};
212
- context.request.path = context.request.path || {};
213
- context.request.files = context.request.files || {};
214
328
  const request = {
215
329
  request: req,
216
330
  ip,
@@ -256,7 +370,7 @@ class RequestProcessor {
256
370
  }
257
371
  // Validate request (files)
258
372
  if (context.request.files) {
259
- const error = await (0, _helper_1.validateRequestFiles)(context, request);
373
+ const error = (0, _helper_1.validateRequestFiles)(context, request);
260
374
  if (error) {
261
375
  return this.respondError(res, error, backgroundHeaders);
262
376
  }
@@ -276,6 +390,44 @@ class RequestProcessor {
276
390
  return this.respondError(res, toClientError(e), {});
277
391
  }
278
392
  }
393
+ corsHeaders(allowedMethods, origin) {
394
+ const cors = this.options.router.options.cors;
395
+ if (!this.corsStatic) {
396
+ this.corsStatic = {
397
+ 'Access-Control-Allow-Headers': cors?.allowedHeaders?.join(', ') || '',
398
+ 'Access-Control-Expose-Headers': cors?.exposeHeaders?.join(', ') || '',
399
+ 'Access-Control-Allow-Credentials': cors?.allowedCredentials ? 'true' : 'false',
400
+ };
401
+ }
402
+ let methods = '';
403
+ if (allowedMethods) {
404
+ // the array grows while routes are registered, so the cache is keyed on its length too
405
+ let cached = this.corsMethods.get(allowedMethods);
406
+ if (!cached || cached.count !== allowedMethods.length) {
407
+ cached = { count: allowedMethods.length, value: allowedMethods.join(', ') };
408
+ this.corsMethods.set(allowedMethods, cached);
409
+ }
410
+ methods = cached.value;
411
+ }
412
+ const headers = {
413
+ 'Access-Control-Allow-Methods': methods,
414
+ ...this.corsStatic,
415
+ };
416
+ if (Array.isArray(cors.allowedOrigin)) {
417
+ if (cors.allowedOrigin.includes(origin)) {
418
+ headers['Access-Control-Allow-Origin'] = origin;
419
+ }
420
+ }
421
+ else {
422
+ headers['Access-Control-Allow-Origin'] = cors.allowedOrigin || origin;
423
+ }
424
+ // The response depends on the Origin header whenever the allowed origin is not fixed (also when this
425
+ // origin is refused): without Vary, a shared cache would hand one origin's response to another.
426
+ if (Array.isArray(cors.allowedOrigin) || !cors.allowedOrigin) {
427
+ headers.Vary = 'Origin';
428
+ }
429
+ return headers;
430
+ }
279
431
  logError(e) {
280
432
  if (this.options.verbose) {
281
433
  this.options.logger?.error(e);
@@ -1 +1 @@
1
- {"version":3,"file":"request-processor.js","sourceRoot":"","sources":["../../src/request-processor/request-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-processor.js","sourceRoot":"","sources":["../../src/request-processor/request-processor.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,14 @@ export declare function toRoutePattern(path: string): {
7
7
  };
8
8
  export declare class Router {
9
9
  private routes;
10
+ private staticRoutes;
11
+ private dynamicRoutes;
12
+ private meta;
10
13
  readonly options: RouterOptions;
11
14
  readonly openApiDocObject: any;
12
15
  readonly logger: AladoServerLogger;
16
+ private readonly caseSensitive;
17
+ private readonly regExpFlags;
13
18
  constructor(options: RouterOptions, openApiDocObject: any);
14
19
  use(method: HttpMethod, uri: string, context: Context<any>, handler: (request: Request) => Response<any> | Promise<Response<any>>): void;
15
20
  /**
@@ -18,7 +23,16 @@ export declare class Router {
18
23
  * registration order (Array.prototype.sort is stable).
19
24
  */
20
25
  protected sortRoutes(): void;
26
+ protected buildIndex(): void;
21
27
  protected getOptionsDataKey(method: string, routeRegEx: RegExp): string;
22
28
  getOptionsData(key: string): any;
23
29
  parse(method: HttpMethod, uri: string): Route<any> | undefined;
30
+ /**
31
+ * Same as parse(), for a path that already went through clearRoutePath().
32
+ * Param-less routes are a hash lookup; only routes with params are tried as RegExps,
33
+ * and only those registered for the request method.
34
+ */
35
+ match(method: HttpMethod, uri: string): Route<any> | undefined;
36
+ protected routeKey(path: string): string;
37
+ protected toResult(data: Route<any>, path: Record<string, string>): Route<any>;
24
38
  }