@barqel/barq 1.0.0 → 1.0.1

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 (42) hide show
  1. package/README.md +3 -3
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4304 -10
  5. package/dist/index.js.map +24 -1
  6. package/dist/internal/node-compat.d.ts +2 -0
  7. package/dist/internal/node-compat.d.ts.map +1 -0
  8. package/dist/node-patch.d.ts +3 -0
  9. package/dist/node-patch.d.ts.map +1 -0
  10. package/dist/node-patch.js +4304 -0
  11. package/dist/node-patch.js.map +24 -0
  12. package/package.json +12 -3
  13. package/dist/app.js +0 -1370
  14. package/dist/app.js.map +0 -1
  15. package/dist/context.js +0 -261
  16. package/dist/context.js.map +0 -1
  17. package/dist/cookies.js +0 -234
  18. package/dist/cookies.js.map +0 -1
  19. package/dist/cors.js +0 -82
  20. package/dist/cors.js.map +0 -1
  21. package/dist/errors.js +0 -81
  22. package/dist/errors.js.map +0 -1
  23. package/dist/http.js +0 -127
  24. package/dist/http.js.map +0 -1
  25. package/dist/internal/ip.js +0 -151
  26. package/dist/internal/ip.js.map +0 -1
  27. package/dist/internal/pathname.js +0 -158
  28. package/dist/internal/pathname.js.map +0 -1
  29. package/dist/internal/query.js +0 -126
  30. package/dist/internal/query.js.map +0 -1
  31. package/dist/internal/scan.js +0 -1069
  32. package/dist/internal/scan.js.map +0 -1
  33. package/dist/internal/shutdown.js +0 -30
  34. package/dist/internal/shutdown.js.map +0 -1
  35. package/dist/internal/trie.js +0 -560
  36. package/dist/internal/trie.js.map +0 -1
  37. package/dist/middleware.js +0 -269
  38. package/dist/middleware.js.map +0 -1
  39. package/dist/types.js +0 -2
  40. package/dist/types.js.map +0 -1
  41. package/dist/validation.js +0 -32
  42. package/dist/validation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/internal/scan.ts"],"names":[],"mappings":"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vD,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG;YAAE,EAAE,GAAG,IAAI,CAAC;aACxC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,CAAC;aACtC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;YAAE,EAAE,GAAG,IAAI,C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"}
@@ -1,30 +0,0 @@
1
- export async function stopServer(server, hardTimeoutMs) {
2
- let timer;
3
- let forced = false;
4
- let stopPromise = null;
5
- try {
6
- stopPromise = server.stop().then(() => { });
7
- await Promise.race([
8
- stopPromise,
9
- new Promise((resolve) => {
10
- timer = setTimeout(() => {
11
- forced = true;
12
- stopPromise = server.stop(true).then(() => { });
13
- resolve();
14
- }, hardTimeoutMs);
15
- timer?.unref?.();
16
- }),
17
- ]);
18
- }
19
- finally {
20
- if (timer !== undefined) {
21
- clearTimeout(timer);
22
- }
23
- }
24
- await stopPromise;
25
- return {
26
- forced,
27
- pending: 0,
28
- };
29
- }
30
- //# sourceMappingURL=shutdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../src/internal/shutdown.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuB,EACvB,aAAqB;IAErB,IAAI,KAAgD,CAAC;IACrD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,WAAW,GAAyB,IAAI,CAAC;IAE7C,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,WAAW;YACX,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC5B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,MAAM,GAAG,IAAI,CAAC;oBACd,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC/C,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,aAAa,CAAC,CAAC;gBAClB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;YACnB,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,CAAC;IAElB,OAAO;QACL,MAAM;QACN,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC"}
@@ -1,560 +0,0 @@
1
- import { HttpError } from "../errors";
2
- export const MATCH_HANDLER = Symbol("barq.match.handler");
3
- export const MATCH_NOT_ALLOWED = Symbol("barq.match.not-allowed");
4
- const METHOD_BITS = {
5
- GET: 1 << 0,
6
- POST: 1 << 1,
7
- PUT: 1 << 2,
8
- DELETE: 1 << 3,
9
- PATCH: 1 << 4,
10
- HEAD: 1 << 5,
11
- OPTIONS: 1 << 6,
12
- };
13
- const _ALL_METHODS_BITMASK = (1 << 7) - 1;
14
- // Linear key checks beat substring creation only at very small fanout.
15
- const STATIC_CHILD_SCAN_THRESHOLD = 4;
16
- function methodBit(method) {
17
- return METHOD_BITS[method] ?? 0;
18
- }
19
- function _hasMethod(bits, method) {
20
- return (bits & methodBit(method)) !== 0;
21
- }
22
- function _methodsToString(bits) {
23
- const methods = [];
24
- if (bits & METHOD_BITS.GET)
25
- methods.push("GET");
26
- if (bits & METHOD_BITS.POST)
27
- methods.push("POST");
28
- if (bits & METHOD_BITS.PUT)
29
- methods.push("PUT");
30
- if (bits & METHOD_BITS.DELETE)
31
- methods.push("DELETE");
32
- if (bits & METHOD_BITS.PATCH)
33
- methods.push("PATCH");
34
- if (bits & METHOD_BITS.HEAD)
35
- methods.push("HEAD");
36
- if (bits & METHOD_BITS.OPTIONS)
37
- methods.push("OPTIONS");
38
- return methods.join(", ");
39
- }
40
- function createNode() {
41
- return {
42
- staticChildren: null,
43
- staticChildKeys: [],
44
- staticChildNodes: [],
45
- paramChildren: null,
46
- paramChild: null,
47
- paramName: null,
48
- wildcardChild: null,
49
- wildcardName: null,
50
- handlers: null,
51
- allow: null,
52
- notAllowed: null,
53
- };
54
- }
55
- function cloneNode(node) {
56
- const staticChildren = node.staticChildren
57
- ? new Map(Array.from(node.staticChildren, ([key, child]) => [
58
- key,
59
- cloneNode(child),
60
- ]))
61
- : null;
62
- const staticChildKeys = node.staticChildKeys.slice();
63
- const staticChildNodes = staticChildren
64
- ? staticChildKeys.map((key) => staticChildren.get(key))
65
- : [];
66
- const paramChildren = node.paramChildren
67
- ? new Map(Array.from(node.paramChildren, ([name, child]) => [
68
- name,
69
- cloneNode(child),
70
- ]))
71
- : null;
72
- let handlers = null;
73
- if (node.handlers !== null) {
74
- handlers = Object.assign(Object.create(null), node.handlers);
75
- }
76
- return {
77
- staticChildren,
78
- staticChildKeys,
79
- staticChildNodes,
80
- paramChildren,
81
- paramChild: node.paramChild ? cloneNode(node.paramChild) : null,
82
- paramName: node.paramName,
83
- wildcardChild: node.wildcardChild ? cloneNode(node.wildcardChild) : null,
84
- wildcardName: node.wildcardName,
85
- handlers,
86
- allow: node.allow,
87
- notAllowed: node.notAllowed,
88
- };
89
- }
90
- const MAX_OPTIONAL_PARAMS = 8;
91
- export function parsePattern(pattern) {
92
- if (pattern.length === 0 || pattern.charCodeAt(0) !== 47) {
93
- throw new Error(`Invalid route pattern "${pattern}": must start with '/'`);
94
- }
95
- if (pattern.indexOf("#") !== -1) {
96
- throw new Error(`Invalid route pattern "${pattern}": must not contain '#'`);
97
- }
98
- let p = pattern;
99
- if (p.length > 1 && p.charCodeAt(p.length - 1) === 47) {
100
- p = p.slice(0, -1);
101
- }
102
- const segments = [];
103
- const names = new Set();
104
- let i = 1;
105
- while (i < p.length) {
106
- const slash = p.indexOf("/", i);
107
- const end = slash === -1 ? p.length : slash;
108
- const seg = p.slice(i, end);
109
- if (seg.length === 0) {
110
- throw new Error(`Invalid route pattern "${pattern}": empty segment ('//')`);
111
- }
112
- const c0 = seg.charCodeAt(0);
113
- if (seg.includes("?") &&
114
- !(c0 === 58 && seg.endsWith("?") && seg.indexOf("?") === seg.length - 1)) {
115
- throw new Error(`Invalid route pattern "${pattern}": malformed optional parameter`);
116
- }
117
- if (c0 === 58) {
118
- const optional = seg.endsWith("?");
119
- const name = optional ? seg.slice(1, -1) : seg.slice(1);
120
- if (name.length === 0) {
121
- throw new Error(`Invalid route pattern "${pattern}": empty parameter name in segment ":${name}"`);
122
- }
123
- if (names.has(name)) {
124
- throw new Error(`Invalid route pattern "${pattern}": duplicate parameter name "${name}"`);
125
- }
126
- names.add(name);
127
- if (name.includes("?")) {
128
- throw new Error(`Invalid route pattern "${pattern}": malformed optional parameter`);
129
- }
130
- segments.push(optional
131
- ? { kind: "param", name, optional: true }
132
- : { kind: "param", name });
133
- }
134
- else if (c0 === 42) {
135
- if (end !== p.length) {
136
- throw new Error(`Invalid route pattern "${pattern}": wildcard '*' must be the final segment`);
137
- }
138
- const name = seg.length > 1 ? seg.slice(1) : null;
139
- if (name !== null) {
140
- if (names.has(name)) {
141
- throw new Error(`Invalid route pattern "${pattern}": duplicate parameter name "${name}"`);
142
- }
143
- names.add(name);
144
- }
145
- segments.push({ kind: "wildcard", name });
146
- }
147
- else {
148
- segments.push({ kind: "static", value: seg });
149
- }
150
- i = end + 1;
151
- }
152
- const optionalCount = segments.reduce((count, segment) => count + (segment.kind === "param" && segment.optional ? 1 : 0), 0);
153
- if (optionalCount > MAX_OPTIONAL_PARAMS) {
154
- throw new RangeError(`Route pattern exceeds the limit of ${MAX_OPTIONAL_PARAMS} optional parameters`);
155
- }
156
- return segments;
157
- }
158
- function _segmentEquals(path, start, end, key) {
159
- const n = end - start;
160
- if (key.length !== n)
161
- return false;
162
- for (let i = 0; i < n; i++) {
163
- if (path.charCodeAt(start + i) !== key.charCodeAt(i))
164
- return false;
165
- }
166
- return true;
167
- }
168
- function decodeParam(raw) {
169
- if (raw.indexOf("%") === -1)
170
- return raw;
171
- try {
172
- return decodeURIComponent(raw);
173
- }
174
- catch {
175
- throw new HttpError(400, { error: "Bad Request" });
176
- }
177
- }
178
- function matchNode(rootNode, pathname, startI, method, paramNames, paramValues, startDepth) {
179
- let node = rootNode;
180
- let i = startI;
181
- const depth = startDepth;
182
- while (true) {
183
- const len = pathname.length;
184
- if (i >= len) {
185
- const handlers = node.handlers;
186
- if (handlers === null)
187
- return null;
188
- let handler = handlers[method];
189
- if (handler === undefined && method === "HEAD") {
190
- handler = handlers.GET;
191
- }
192
- if (handler === undefined) {
193
- return node.notAllowed;
194
- }
195
- if (depth === 0)
196
- return handler;
197
- const p = Object.create(null);
198
- p[MATCH_HANDLER] = handler;
199
- for (let k = 0; k < depth; k++) {
200
- p[paramNames[k]] = paramValues[k];
201
- }
202
- return p;
203
- }
204
- const slash = pathname.indexOf("/", i);
205
- const segEnd = slash === -1 ? len : slash;
206
- if (segEnd === i) {
207
- // A single trailing slash is accepted; empty interior segments are not.
208
- if (slash === len - 1) {
209
- return matchNode(node, pathname, len, method, paramNames, paramValues, depth);
210
- }
211
- return null;
212
- }
213
- const nextI = slash === -1 ? len : slash + 1;
214
- let notAllowedCandidate = null;
215
- const staticChildren = node.staticChildren;
216
- if (staticChildren !== null) {
217
- let child;
218
- if (staticChildren.size <= STATIC_CHILD_SCAN_THRESHOLD) {
219
- const keys = node.staticChildKeys;
220
- const nodes = node.staticChildNodes;
221
- for (let childIndex = 0; childIndex < keys.length; childIndex++) {
222
- if (_segmentEquals(pathname, i, segEnd, keys[childIndex])) {
223
- child = nodes[childIndex];
224
- break;
225
- }
226
- }
227
- }
228
- else {
229
- child = staticChildren.get(pathname.slice(i, segEnd));
230
- }
231
- if (child !== undefined) {
232
- const hasParamChildren = node.paramChildren !== null && node.paramChildren.size > 0;
233
- if (!hasParamChildren && node.wildcardChild === null) {
234
- node = child;
235
- i = nextI;
236
- continue;
237
- }
238
- const res = matchNode(child, pathname, nextI, method, paramNames, paramValues, depth);
239
- if (res !== null) {
240
- if (MATCH_NOT_ALLOWED in res) {
241
- notAllowedCandidate = res;
242
- }
243
- else {
244
- return res;
245
- }
246
- }
247
- }
248
- }
249
- const paramChildren = node.paramChildren ??
250
- (node.paramChild !== null && node.paramName !== null
251
- ? new Map([[node.paramName, node.paramChild]])
252
- : null);
253
- if (paramChildren !== null && paramChildren.size > 0) {
254
- for (const [paramName, child] of paramChildren) {
255
- if (nextI >= len && child.handlers !== null) {
256
- let leafH = child.handlers[method];
257
- if (leafH === undefined && method === "HEAD")
258
- leafH = child.handlers.GET;
259
- if (leafH !== undefined) {
260
- const paramVal = pathname.indexOf("%", i) !== -1
261
- ? decodeParam(pathname.slice(i, segEnd))
262
- : pathname.slice(i, segEnd);
263
- const p = {
264
- [paramName]: paramVal,
265
- [MATCH_HANDLER]: leafH,
266
- };
267
- if (depth === 0)
268
- return p;
269
- for (let k = 0; k < depth; k++) {
270
- p[paramNames[k]] = paramValues[k];
271
- }
272
- return p;
273
- }
274
- }
275
- paramNames[depth] = paramName;
276
- paramValues[depth] = decodeParam(pathname.slice(i, segEnd));
277
- const res = matchNode(child, pathname, nextI, method, paramNames, paramValues, depth + 1);
278
- if (res !== null) {
279
- if (MATCH_NOT_ALLOWED in res) {
280
- notAllowedCandidate ??= res;
281
- }
282
- else {
283
- return res;
284
- }
285
- }
286
- }
287
- }
288
- if (node.wildcardChild !== null) {
289
- let wildcardDepth = depth;
290
- if (node.wildcardName !== null) {
291
- let rest = pathname.slice(i);
292
- if (rest.length > 1 && rest.charCodeAt(rest.length - 1) === 47) {
293
- rest = rest.slice(0, -1);
294
- }
295
- paramNames[wildcardDepth] = node.wildcardName;
296
- paramValues[wildcardDepth] = decodeParam(rest);
297
- wildcardDepth++;
298
- }
299
- const handlers = node.wildcardChild.handlers;
300
- if (handlers !== null) {
301
- let handler = handlers[method];
302
- if (handler === undefined && method === "HEAD") {
303
- handler = handlers.GET;
304
- }
305
- if (handler === undefined) {
306
- return node.wildcardChild.notAllowed;
307
- }
308
- if (wildcardDepth === 0)
309
- return handler;
310
- const p = Object.create(null);
311
- for (let k = 0; k < wildcardDepth; k++) {
312
- p[paramNames[k]] = paramValues[k];
313
- }
314
- p[MATCH_HANDLER] = handler;
315
- return p;
316
- }
317
- }
318
- return notAllowedCandidate;
319
- }
320
- }
321
- export class SegmentTrie {
322
- root = createNode();
323
- staticRoutes = new Map();
324
- staticNotAllowed = new Map();
325
- maxStaticLength = 0;
326
- paramNameBuffer = [];
327
- paramValueBuffer = [];
328
- addBatch(routes) {
329
- if (routes.length === 0)
330
- return;
331
- if (routes.length === 1) {
332
- const route = routes[0];
333
- this.add(route.method, route.pattern, route.handler);
334
- return;
335
- }
336
- const staged = this.clone();
337
- const parsedPatterns = new Map();
338
- for (const route of routes) {
339
- let segments = parsedPatterns.get(route.pattern);
340
- if (segments === undefined) {
341
- segments = parsePattern(route.pattern);
342
- parsedPatterns.set(route.pattern, segments);
343
- }
344
- staged.addWithSegments(route.method, route.pattern, segments, route.handler);
345
- }
346
- this.root = staged.root;
347
- this.staticRoutes = staged.staticRoutes;
348
- this.staticNotAllowed = staged.staticNotAllowed;
349
- this.maxStaticLength = staged.maxStaticLength;
350
- }
351
- clone() {
352
- const copy = new SegmentTrie();
353
- copy.root = cloneNode(this.root);
354
- copy.staticRoutes = new Map(Array.from(this.staticRoutes, ([path, handlers]) => [
355
- path,
356
- Object.assign(Object.create(null), handlers),
357
- ]));
358
- copy.staticNotAllowed = new Map(this.staticNotAllowed);
359
- copy.maxStaticLength = this.maxStaticLength;
360
- return copy;
361
- }
362
- add(method, pattern, handler) {
363
- const segments = parsePattern(pattern);
364
- let optionalCount = 0;
365
- for (const segment of segments) {
366
- if (segment.kind === "param" && segment.optional)
367
- optionalCount++;
368
- }
369
- if (optionalCount === 0) {
370
- this.addParsed(method, pattern, segments, handler, false);
371
- return;
372
- }
373
- const staged = this.clone();
374
- staged.addWithSegments(method, pattern, segments, handler);
375
- this.root = staged.root;
376
- this.staticRoutes = staged.staticRoutes;
377
- this.staticNotAllowed = staged.staticNotAllowed;
378
- }
379
- addWithSegments(method, pattern, segments, handler) {
380
- let optionalCount = 0;
381
- for (const segment of segments) {
382
- if (segment.kind === "param" && segment.optional)
383
- optionalCount++;
384
- }
385
- if (optionalCount === 0) {
386
- this.addParsed(method, pattern, segments, handler, false);
387
- return;
388
- }
389
- const selected = [];
390
- const addVariants = (index) => {
391
- if (index === segments.length) {
392
- const variant = selected.length === 0
393
- ? "/"
394
- : `/${selected.map((segment) => (segment.kind === "static" ? segment.value : segment.kind === "param" ? `:${segment.name}` : `*${segment.name ?? ""}`)).join("/")}`;
395
- this.addParsed(method, variant, selected, handler, true);
396
- return;
397
- }
398
- const segment = segments[index];
399
- if (segment.kind === "param" && segment.optional) {
400
- selected.push({ kind: "param", name: segment.name });
401
- addVariants(index + 1);
402
- selected.pop();
403
- addVariants(index + 1);
404
- return;
405
- }
406
- selected.push(segment);
407
- addVariants(index + 1);
408
- selected.pop();
409
- };
410
- addVariants(0);
411
- }
412
- addParsed(method, pattern, segments, handler, _allowConflictingParamNames) {
413
- const bit = methodBit(method);
414
- if (bit === 0) {
415
- throw new Error(`Unsupported HTTP method "${method}" for route "${pattern}"`);
416
- }
417
- const isPureStatic = segments.every((s) => s.kind === "static");
418
- let cleanPattern;
419
- if (isPureStatic) {
420
- cleanPattern =
421
- pattern.length > 1 && pattern.charCodeAt(pattern.length - 1) === 47
422
- ? pattern.slice(0, -1)
423
- : pattern;
424
- if (cleanPattern.length > this.maxStaticLength) {
425
- this.maxStaticLength = cleanPattern.length;
426
- }
427
- }
428
- for (const seg of segments) {
429
- if (seg.kind === "static") {
430
- }
431
- else if (seg.kind === "param") {
432
- if (isPureStatic) {
433
- throw new Error(`Internal error: param segment in pure static route`);
434
- }
435
- }
436
- else {
437
- if (isPureStatic) {
438
- throw new Error(`Internal error: wildcard segment in pure static route`);
439
- }
440
- }
441
- }
442
- let node = this.root;
443
- for (const seg of segments) {
444
- if (seg.kind === "static") {
445
- if (node.staticChildren === null) {
446
- node.staticChildren = new Map();
447
- }
448
- let child = node.staticChildren.get(seg.value);
449
- if (child === undefined) {
450
- child = createNode();
451
- node.staticChildren.set(seg.value, child);
452
- node.staticChildKeys.push(seg.value);
453
- node.staticChildNodes.push(child);
454
- }
455
- node = child;
456
- }
457
- else if (seg.kind === "param") {
458
- if (node.wildcardChild !== null) {
459
- throw new Error(`Ambiguous routes: wildcard "${node.wildcardName ?? "*"}" and param ":${seg.name}" compete at the same position in "${pattern}"`);
460
- }
461
- if (node.paramChildren === null) {
462
- node.paramChildren = new Map();
463
- }
464
- let child = node.paramChildren.get(seg.name);
465
- if (child === undefined) {
466
- child = createNode();
467
- node.paramChildren.set(seg.name, child);
468
- if (node.paramChild === null && node.paramChildren.size === 1) {
469
- node.paramChild = child;
470
- node.paramName = seg.name;
471
- }
472
- else {
473
- node.paramChild = null;
474
- node.paramName = null;
475
- }
476
- }
477
- node = child;
478
- }
479
- else {
480
- if (node.wildcardChild !== null) {
481
- if (node.wildcardName !== seg.name) {
482
- throw new Error(`Conflicting wildcards at the same position: "*${node.wildcardName ?? ""}" vs "*${seg.name ?? ""}" (route "${pattern}")`);
483
- }
484
- }
485
- else {
486
- if (node.paramChildren !== null && node.paramChildren.size > 0) {
487
- const existingParam = node.paramChildren.keys().next().value;
488
- if (existingParam !== undefined) {
489
- throw new Error(`Ambiguous routes: param ":${existingParam}" and wildcard "*${seg.name ?? ""}" compete at the same position in "${pattern}"`);
490
- }
491
- }
492
- node.wildcardChild = createNode();
493
- node.wildcardName = seg.name;
494
- }
495
- node = node.wildcardChild;
496
- }
497
- }
498
- if (node.handlers?.[method] !== undefined) {
499
- throw new Error(`Duplicate route: ${method} ${pattern} is already registered`);
500
- }
501
- if (node.handlers === null)
502
- node.handlers = Object.create(null);
503
- node.handlers[method] = handler;
504
- node.allow = SegmentTrie.computeAllow(node.handlers);
505
- node.notAllowed = Object.freeze({
506
- [MATCH_NOT_ALLOWED]: node.allow,
507
- });
508
- if (isPureStatic) {
509
- let sHandlers = this.staticRoutes.get(cleanPattern);
510
- if (sHandlers === undefined) {
511
- sHandlers = Object.create(null);
512
- this.staticRoutes.set(cleanPattern, sHandlers);
513
- }
514
- sHandlers[method] = handler;
515
- const sAllow = SegmentTrie.computeAllow(sHandlers);
516
- this.staticNotAllowed.set(cleanPattern, Object.freeze({ [MATCH_NOT_ALLOWED]: sAllow }));
517
- }
518
- }
519
- static computeAllow(handlers) {
520
- const methods = Object.keys(handlers);
521
- if (methods.includes("GET") && !methods.includes("HEAD")) {
522
- return [...methods, "HEAD"].join(", ");
523
- }
524
- return methods.join(", ");
525
- }
526
- match(method, pathname) {
527
- const len = pathname.length;
528
- const cleanPath = len > 1 && pathname.charCodeAt(len - 1) === 47
529
- ? pathname.slice(0, -1)
530
- : pathname;
531
- if (cleanPath.length <= this.maxStaticLength) {
532
- const sHandlers = this.staticRoutes.get(cleanPath);
533
- if (sHandlers !== undefined) {
534
- let handler = sHandlers[method];
535
- if (handler === undefined && method === "HEAD") {
536
- handler = sHandlers.GET;
537
- }
538
- if (handler !== undefined) {
539
- return handler;
540
- }
541
- const dynamicMatch = matchNode(this.root, pathname, 1, method, this.paramNameBuffer, this.paramValueBuffer, 0);
542
- if (this.paramNameBuffer.length > 0) {
543
- this.paramNameBuffer.length = 0;
544
- this.paramValueBuffer.length = 0;
545
- }
546
- if (dynamicMatch !== null && !(MATCH_NOT_ALLOWED in dynamicMatch)) {
547
- return dynamicMatch;
548
- }
549
- return this.staticNotAllowed.get(cleanPath);
550
- }
551
- }
552
- const res = matchNode(this.root, pathname, 1, method, this.paramNameBuffer, this.paramValueBuffer, 0);
553
- if (this.paramNameBuffer.length > 0) {
554
- this.paramNameBuffer.length = 0;
555
- this.paramValueBuffer.length = 0;
556
- }
557
- return res;
558
- }
559
- }
560
- //# sourceMappingURL=trie.js.map