@arikajs/router 0.10.2 → 0.10.3
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.
- package/dist/RouteEntry.d.ts +5 -0
- package/dist/RouteEntry.d.ts.map +1 -1
- package/dist/RouteEntry.js +7 -0
- package/dist/RouteEntry.js.map +1 -1
- package/dist/RouteMatcher.d.ts.map +1 -1
- package/dist/RouteMatcher.js +10 -10
- package/dist/RouteMatcher.js.map +1 -1
- package/package.json +14 -13
package/dist/RouteEntry.d.ts
CHANGED
|
@@ -9,11 +9,16 @@ export declare class RouteEntry implements RouteDefinition {
|
|
|
9
9
|
regex: RegExp;
|
|
10
10
|
paramKeys: string[];
|
|
11
11
|
constraints: Record<string, string>;
|
|
12
|
+
_formRequest?: any;
|
|
12
13
|
constructor(method: string, path: string, handler: RouteHandler, prefix?: string, groupMiddleware?: any[]);
|
|
13
14
|
/**
|
|
14
15
|
* Add a regular expression requirement for a route parameter.
|
|
15
16
|
*/
|
|
16
17
|
where(param: string | Record<string, string>, regex?: string): this;
|
|
18
|
+
/**
|
|
19
|
+
* Set a name for the route.
|
|
20
|
+
*/
|
|
21
|
+
validateWith(formRequest: any): this;
|
|
17
22
|
/**
|
|
18
23
|
* Set a name for the route.
|
|
19
24
|
*/
|
package/dist/RouteEntry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteEntry.d.ts","sourceRoot":"","sources":["../src/RouteEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,qBAAa,UAAW,YAAW,eAAe;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,GAAG,EAAE,CAAM;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;
|
|
1
|
+
{"version":3,"file":"RouteEntry.d.ts","sourceRoot":"","sources":["../src/RouteEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,qBAAa,UAAW,YAAW,eAAe;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,GAAG,EAAE,CAAM;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,GAAE,GAAG,EAAO;IAY7G;;OAEG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAc1E;;OAEG;IACI,YAAY,CAAC,WAAW,EAAE,GAAG,GAAG,IAAI;IAK3C;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B;;OAEG;IACI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI;IASpD;;OAEG;IACH,OAAO,CAAC,WAAW;CAgBtB"}
|
package/dist/RouteEntry.js
CHANGED
package/dist/RouteEntry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteEntry.js","sourceRoot":"","sources":["../src/RouteEntry.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"RouteEntry.js","sourceRoot":"","sources":["../src/RouteEntry.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IAYnB,YAAY,MAAc,EAAE,IAAY,EAAE,OAAqB,EAAE,MAAe,EAAE,kBAAyB,EAAE;QANtG,eAAU,GAAU,EAAE,CAAC;QAEvB,cAAS,GAAa,EAAE,CAAC;QACzB,gBAAW,GAA2B,EAAE,CAAC;QAI5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;QAEvC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAsC,EAAE,KAAc;QAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAM,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,WAAgB;QAChC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,IAAY;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,EAAE,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAAuB;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAY;QAC5B,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI;aACf,OAAO,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAChE,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;YACnD,OAAO,IAAI,SAAS,GAAG,CAAC;QAC5B,CAAC,CAAC;aACD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3B,OAAO;YACH,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC;YACjC,SAAS;SACZ,CAAC;IACN,CAAC;CACJ;AA/FD,gCA+FC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"RouteMatcher.d.ts","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AASvC,qBAAa,YAAY;IACrB,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,MAAM;IAoBP,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;CAoDlE"}
|
package/dist/RouteMatcher.js
CHANGED
|
@@ -5,7 +5,6 @@ const RouteRegistry_1 = require("./RouteRegistry");
|
|
|
5
5
|
class RadixNode {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.children = new Map();
|
|
8
|
-
this.paramName = null;
|
|
9
8
|
this.paramNode = null;
|
|
10
9
|
this.routes = []; // Support multiple methods on same path
|
|
11
10
|
}
|
|
@@ -27,11 +26,9 @@ class RouteMatcher {
|
|
|
27
26
|
let node = this.root;
|
|
28
27
|
const parts = route.path.split('/').filter(Boolean);
|
|
29
28
|
for (const part of parts) {
|
|
30
|
-
if (part.startsWith(':')) {
|
|
31
|
-
const paramName = part.slice(1);
|
|
29
|
+
if (part.startsWith(':') || (part.startsWith('{') && part.endsWith('}'))) {
|
|
32
30
|
if (!node.paramNode) {
|
|
33
31
|
node.paramNode = new RadixNode();
|
|
34
|
-
node.paramName = paramName;
|
|
35
32
|
}
|
|
36
33
|
node = node.paramNode;
|
|
37
34
|
}
|
|
@@ -50,7 +47,7 @@ class RouteMatcher {
|
|
|
50
47
|
let node = this.root;
|
|
51
48
|
const normalizedPath = path.split('?')[0];
|
|
52
49
|
const parts = normalizedPath.split('/').filter(Boolean);
|
|
53
|
-
const
|
|
50
|
+
const collectedValues = [];
|
|
54
51
|
const normalizedMethod = method.toUpperCase();
|
|
55
52
|
for (let i = 0; i < parts.length; i++) {
|
|
56
53
|
const part = parts[i];
|
|
@@ -59,9 +56,7 @@ class RouteMatcher {
|
|
|
59
56
|
node = nextNode;
|
|
60
57
|
}
|
|
61
58
|
else if (node.paramNode) {
|
|
62
|
-
|
|
63
|
-
params[node.paramName] = part;
|
|
64
|
-
}
|
|
59
|
+
collectedValues.push(part);
|
|
65
60
|
node = node.paramNode;
|
|
66
61
|
}
|
|
67
62
|
else {
|
|
@@ -72,7 +67,12 @@ class RouteMatcher {
|
|
|
72
67
|
// Find a route that matches the method OR has method 'ANY'
|
|
73
68
|
const route = node.routes.find(r => r.method === normalizedMethod || r.method === 'ANY');
|
|
74
69
|
if (route) {
|
|
75
|
-
const
|
|
70
|
+
const params = {};
|
|
71
|
+
const paramKeys = route.paramKeys || [];
|
|
72
|
+
// Map collected values to the route's specific param keys
|
|
73
|
+
for (let i = 0; i < Math.min(collectedValues.length, paramKeys.length); i++) {
|
|
74
|
+
params[paramKeys[i]] = collectedValues[i];
|
|
75
|
+
}
|
|
76
76
|
// If there are constraints, verify them
|
|
77
77
|
if (route.constraints && Object.keys(route.constraints).length > 0) {
|
|
78
78
|
for (const [key, pattern] of Object.entries(route.constraints)) {
|
|
@@ -84,7 +84,7 @@ class RouteMatcher {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
return { route, params, hasParams };
|
|
87
|
+
return { route, params, hasParams: Object.keys(params).length > 0 };
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
return null;
|
package/dist/RouteMatcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMatcher.js","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAEhD,MAAM,SAAS;IAAf;QACI,aAAQ,GAA2B,IAAI,GAAG,EAAE,CAAC;QAC7C,cAAS,
|
|
1
|
+
{"version":3,"file":"RouteMatcher.js","sourceRoot":"","sources":["../src/RouteMatcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arikajs/router",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
4
|
"description": "Routing and request-dispatching layer of the ArikaJS framework.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -p tsconfig.json",
|
|
10
|
+
"clean": "rm -rf dist",
|
|
11
|
+
"prepare": "echo skip",
|
|
12
|
+
"lint": "eslint src --ext .ts",
|
|
13
|
+
"test": "npx tsx --test tests/**/*.test.ts",
|
|
14
|
+
"test:watch": "npx tsx --test --watch tests/**/*.test.ts",
|
|
15
|
+
"dev": "tsc -p tsconfig.json --watch"
|
|
16
|
+
},
|
|
8
17
|
"files": [
|
|
9
18
|
"dist"
|
|
10
19
|
],
|
|
@@ -29,20 +38,12 @@
|
|
|
29
38
|
},
|
|
30
39
|
"homepage": "https://github.com/ArikaJs/arikajs/tree/main/packages/router#readme",
|
|
31
40
|
"dependencies": {
|
|
32
|
-
"@arikajs/
|
|
33
|
-
"@arikajs/
|
|
41
|
+
"@arikajs/http": "workspace:*",
|
|
42
|
+
"@arikajs/dispatcher": "workspace:*"
|
|
34
43
|
},
|
|
35
44
|
"devDependencies": {
|
|
36
45
|
"@types/node": "^20.11.24",
|
|
37
46
|
"typescript": "^5.3.3"
|
|
38
47
|
},
|
|
39
|
-
"author": "Prakash Tank"
|
|
40
|
-
|
|
41
|
-
"build": "tsc -p tsconfig.json",
|
|
42
|
-
"clean": "rm -rf dist",
|
|
43
|
-
"lint": "eslint src --ext .ts",
|
|
44
|
-
"test": "npx tsx --test tests/**/*.test.ts",
|
|
45
|
-
"test:watch": "npx tsx --test --watch tests/**/*.test.ts",
|
|
46
|
-
"dev": "tsc -p tsconfig.json --watch"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
48
|
+
"author": "Prakash Tank"
|
|
49
|
+
}
|