tezx 2.0.11 → 3.0.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.
- package/README.md +122 -89
- package/bun/getConnInfo.d.ts +21 -0
- package/bun/getConnInfo.js +9 -0
- package/bun/index.d.ts +10 -4
- package/bun/index.js +8 -4
- package/bun/ws.d.ts +48 -0
- package/bun/ws.js +58 -0
- package/cjs/bun/getConnInfo.js +12 -0
- package/cjs/bun/index.js +35 -7
- package/cjs/bun/ws.js +63 -0
- package/cjs/core/config.js +2 -12
- package/cjs/core/context.js +131 -379
- package/cjs/core/error.js +49 -0
- package/cjs/core/request.js +79 -131
- package/cjs/core/router.js +54 -387
- package/cjs/core/server.js +83 -202
- package/cjs/deno/env.js +4 -4
- package/cjs/deno/getConnInfo.js +18 -0
- package/cjs/deno/index.js +11 -18
- package/cjs/deno/serveStatic.js +53 -0
- package/cjs/deno/ws.js +39 -0
- package/cjs/helper/index.js +46 -10
- package/cjs/index.js +5 -7
- package/cjs/jwt/node.js +94 -0
- package/cjs/jwt/web.js +178 -0
- package/cjs/middleware/basic-auth.js +42 -0
- package/cjs/middleware/bearer-auth.js +34 -0
- package/cjs/middleware/cache-control.js +44 -0
- package/cjs/middleware/cors.js +11 -21
- package/cjs/middleware/detect-bot.js +57 -0
- package/cjs/middleware/i18n.js +73 -60
- package/cjs/middleware/index.js +8 -46
- package/cjs/middleware/logger.js +9 -4
- package/cjs/middleware/pagination.js +3 -2
- package/cjs/middleware/powered-by.js +3 -2
- package/cjs/middleware/rate-limiter.js +38 -0
- package/cjs/middleware/request-id.js +4 -5
- package/cjs/middleware/sanitize-headers.js +22 -0
- package/cjs/middleware/secure-headers copy.js +143 -0
- package/cjs/middleware/secure-headers.js +157 -0
- package/cjs/middleware/{xssProtection.js → xss-protection.js} +5 -8
- package/cjs/node/env.js +7 -7
- package/cjs/node/getConnInfo.js +16 -0
- package/cjs/node/index.js +17 -18
- package/cjs/node/mount-node.js +59 -0
- package/cjs/node/serveStatic.js +56 -0
- package/cjs/node/toWebRequest.js +25 -0
- package/cjs/node/ws.js +82 -0
- package/cjs/registry/RadixRouter.js +148 -0
- package/cjs/registry/index.js +17 -0
- package/cjs/types/headers.js +2 -0
- package/cjs/types/index.js +13 -0
- package/cjs/utils/buffer.js +17 -0
- package/cjs/utils/colors.js +2 -0
- package/cjs/utils/cookie.js +59 -0
- package/cjs/utils/file.js +136 -0
- package/cjs/utils/formData.js +60 -10
- package/cjs/utils/generateID.js +37 -0
- package/cjs/utils/low-level.js +115 -0
- package/cjs/utils/{staticFile.js → mimeTypes.js} +0 -87
- package/cjs/utils/rateLimit.js +41 -0
- package/cjs/utils/response.js +65 -0
- package/cjs/{core/environment.js → utils/runtime.js} +2 -1
- package/cjs/utils/url.js +65 -30
- package/core/config.d.ts +2 -7
- package/core/config.js +2 -12
- package/core/context.d.ts +209 -164
- package/core/context.js +131 -346
- package/core/error.d.ts +96 -0
- package/core/error.js +44 -0
- package/core/request.d.ts +67 -107
- package/core/request.js +78 -130
- package/core/router.d.ts +138 -133
- package/core/router.js +53 -352
- package/core/server.d.ts +99 -38
- package/core/server.js +83 -202
- package/deno/env.js +3 -3
- package/deno/getConnInfo.d.ts +21 -0
- package/deno/getConnInfo.js +15 -0
- package/deno/index.d.ts +9 -4
- package/deno/index.js +7 -4
- package/deno/serveStatic.d.ts +28 -0
- package/deno/serveStatic.js +49 -0
- package/deno/ws.d.ts +42 -0
- package/deno/ws.js +36 -0
- package/helper/index.d.ts +29 -15
- package/helper/index.js +27 -7
- package/index.d.ts +10 -8
- package/index.js +4 -5
- package/jwt/node.d.ts +39 -0
- package/jwt/node.js +87 -0
- package/jwt/web.d.ts +14 -0
- package/jwt/web.js +174 -0
- package/middleware/basic-auth.d.ts +56 -0
- package/middleware/basic-auth.js +38 -0
- package/middleware/bearer-auth.d.ts +53 -0
- package/middleware/bearer-auth.js +30 -0
- package/middleware/cache-control.d.ts +30 -0
- package/middleware/cache-control.js +40 -0
- package/middleware/cors.d.ts +30 -3
- package/middleware/cors.js +12 -22
- package/middleware/detect-bot.d.ts +113 -0
- package/middleware/detect-bot.js +53 -0
- package/middleware/i18n.d.ts +166 -73
- package/middleware/i18n.js +73 -60
- package/middleware/index.d.ts +8 -32
- package/middleware/index.js +8 -44
- package/middleware/logger.d.ts +5 -2
- package/middleware/logger.js +9 -4
- package/middleware/pagination.d.ts +9 -6
- package/middleware/pagination.js +3 -2
- package/middleware/powered-by.d.ts +2 -1
- package/middleware/powered-by.js +3 -2
- package/middleware/{rateLimiter.d.ts → rate-limiter.d.ts} +15 -9
- package/middleware/rate-limiter.js +34 -0
- package/middleware/request-id.d.ts +2 -1
- package/middleware/request-id.js +5 -6
- package/middleware/{sanitizeHeader.d.ts → sanitize-headers.d.ts} +5 -19
- package/middleware/sanitize-headers.js +18 -0
- package/middleware/secure-headers copy.d.ts +15 -0
- package/middleware/secure-headers copy.js +136 -0
- package/middleware/secure-headers.d.ts +132 -0
- package/middleware/secure-headers.js +153 -0
- package/middleware/{xssProtection.d.ts → xss-protection.d.ts} +2 -1
- package/middleware/xss-protection.js +19 -0
- package/node/env.js +4 -4
- package/node/getConnInfo.d.ts +21 -0
- package/node/getConnInfo.js +13 -0
- package/node/index.d.ts +13 -4
- package/node/index.js +11 -4
- package/node/mount-node.d.ts +11 -0
- package/node/mount-node.js +56 -0
- package/node/serveStatic.d.ts +36 -0
- package/node/serveStatic.js +52 -0
- package/node/toWebRequest.js +22 -0
- package/node/ws.d.ts +56 -0
- package/node/ws.js +46 -0
- package/package.json +39 -30
- package/registry/RadixRouter.d.ts +40 -0
- package/registry/RadixRouter.js +144 -0
- package/registry/index.d.ts +2 -0
- package/registry/index.js +1 -0
- package/types/headers.d.ts +2 -0
- package/types/headers.js +1 -0
- package/types/index.d.ts +318 -18
- package/types/index.js +12 -1
- package/utils/buffer.d.ts +1 -0
- package/utils/buffer.js +14 -0
- package/utils/colors.d.ts +24 -0
- package/utils/colors.js +2 -0
- package/utils/cookie.d.ts +55 -0
- package/utils/cookie.js +53 -0
- package/utils/file.d.ts +38 -0
- package/utils/file.js +96 -0
- package/utils/formData.d.ts +41 -1
- package/utils/formData.js +58 -9
- package/utils/generateID.d.ts +42 -0
- package/utils/generateID.js +32 -0
- package/utils/httpStatusMap.d.ts +14 -0
- package/utils/low-level.d.ts +58 -0
- package/utils/low-level.js +108 -0
- package/utils/mimeTypes.d.ts +4 -0
- package/utils/{staticFile.js → mimeTypes.js} +0 -53
- package/utils/rateLimit.d.ts +18 -0
- package/utils/rateLimit.js +37 -0
- package/utils/response.d.ts +18 -0
- package/utils/response.js +58 -0
- package/{core/environment.d.ts → utils/runtime.d.ts} +1 -0
- package/{core/environment.js → utils/runtime.js} +1 -0
- package/utils/url.d.ts +42 -14
- package/utils/url.js +61 -27
- package/bun/adapter.d.ts +0 -127
- package/bun/adapter.js +0 -97
- package/cjs/bun/adapter.js +0 -100
- package/cjs/core/MiddlewareConfigure.js +0 -68
- package/cjs/core/common.js +0 -15
- package/cjs/deno/adpater.js +0 -67
- package/cjs/helper/common.js +0 -17
- package/cjs/middleware/basicAuth.js +0 -71
- package/cjs/middleware/cacheControl.js +0 -90
- package/cjs/middleware/detectBot.js +0 -104
- package/cjs/middleware/detectLocale.js +0 -43
- package/cjs/middleware/lazyLoadModules.js +0 -73
- package/cjs/middleware/rateLimiter.js +0 -24
- package/cjs/middleware/requestTimeout.js +0 -42
- package/cjs/middleware/sanitizeHeader.js +0 -51
- package/cjs/middleware/secureHeaders.js +0 -42
- package/cjs/node/adapter.js +0 -138
- package/cjs/utils/regexRouter.js +0 -58
- package/cjs/utils/state.js +0 -34
- package/cjs/utils/toWebRequest.js +0 -35
- package/cjs/ws/deno.js +0 -20
- package/cjs/ws/index.js +0 -53
- package/cjs/ws/node.js +0 -65
- package/core/MiddlewareConfigure.d.ts +0 -15
- package/core/MiddlewareConfigure.js +0 -63
- package/core/common.d.ts +0 -21
- package/core/common.js +0 -11
- package/deno/adpater.d.ts +0 -38
- package/deno/adpater.js +0 -64
- package/helper/common.d.ts +0 -5
- package/helper/common.js +0 -14
- package/middleware/basicAuth.d.ts +0 -81
- package/middleware/basicAuth.js +0 -67
- package/middleware/cacheControl.d.ts +0 -48
- package/middleware/cacheControl.js +0 -53
- package/middleware/detectBot.d.ts +0 -121
- package/middleware/detectBot.js +0 -98
- package/middleware/detectLocale.d.ts +0 -55
- package/middleware/detectLocale.js +0 -39
- package/middleware/lazyLoadModules.d.ts +0 -72
- package/middleware/lazyLoadModules.js +0 -69
- package/middleware/rateLimiter.js +0 -20
- package/middleware/requestTimeout.d.ts +0 -25
- package/middleware/requestTimeout.js +0 -38
- package/middleware/sanitizeHeader.js +0 -47
- package/middleware/secureHeaders.d.ts +0 -78
- package/middleware/secureHeaders.js +0 -38
- package/middleware/xssProtection.js +0 -22
- package/node/adapter.d.ts +0 -46
- package/node/adapter.js +0 -102
- package/utils/regexRouter.d.ts +0 -66
- package/utils/regexRouter.js +0 -53
- package/utils/state.d.ts +0 -50
- package/utils/state.js +0 -30
- package/utils/staticFile.d.ts +0 -10
- package/utils/toWebRequest.js +0 -32
- package/ws/deno.d.ts +0 -6
- package/ws/deno.js +0 -16
- package/ws/index.d.ts +0 -180
- package/ws/index.js +0 -50
- package/ws/node.d.ts +0 -7
- package/ws/node.js +0 -28
- /package/{utils → node}/toWebRequest.d.ts +0 -0
package/cjs/core/router.js
CHANGED
|
@@ -1,65 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.Router =
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const config_js_1 = require("./config.js");
|
|
41
|
-
const MiddlewareConfigure_js_1 = __importStar(require("./MiddlewareConfigure.js"));
|
|
42
|
-
class TrieRouter {
|
|
43
|
-
children = new Map();
|
|
44
|
-
handlers = new Map();
|
|
45
|
-
pathname;
|
|
46
|
-
paramName;
|
|
47
|
-
isParam = false;
|
|
48
|
-
constructor(pathname = "/") {
|
|
49
|
-
this.children = new Map();
|
|
50
|
-
this.pathname = pathname;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.TrieRouter = TrieRouter;
|
|
54
|
-
class Router extends MiddlewareConfigure_js_1.default {
|
|
55
|
-
routers = new Map();
|
|
3
|
+
exports.Router = void 0;
|
|
4
|
+
const low_level_js_1 = require("../utils/low-level.js");
|
|
5
|
+
const error_js_1 = require("./error.js");
|
|
6
|
+
class Router {
|
|
56
7
|
env = {};
|
|
57
|
-
|
|
8
|
+
router;
|
|
9
|
+
route = [];
|
|
10
|
+
staticFile = Object.create(null);
|
|
11
|
+
basePath;
|
|
58
12
|
constructor({ basePath = "/", env = {} } = {}) {
|
|
59
|
-
super(basePath);
|
|
60
13
|
this.basePath = basePath;
|
|
61
14
|
this.env = { ...env };
|
|
62
|
-
this.triRouter = new TrieRouter(basePath);
|
|
63
15
|
this.get = this.get.bind(this);
|
|
64
16
|
this.post = this.post.bind(this);
|
|
65
17
|
this.put = this.put.bind(this);
|
|
@@ -68,57 +20,30 @@ class Router extends MiddlewareConfigure_js_1.default {
|
|
|
68
20
|
this.addRouter = this.addRouter.bind(this);
|
|
69
21
|
this.group = this.group.bind(this);
|
|
70
22
|
}
|
|
71
|
-
static(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
[dir] = args;
|
|
89
|
-
break;
|
|
90
|
-
default:
|
|
91
|
-
throw new Error(`\x1b[1;31m404 Not Found\x1b[0m \x1b[1;32mInvalid arguments\x1b[0m`);
|
|
23
|
+
static(serveStatic) {
|
|
24
|
+
if (Array.isArray(serveStatic?.files)) {
|
|
25
|
+
serveStatic?.files.forEach((r) => {
|
|
26
|
+
this.staticFile[`GET ${r?.route}`] = (ctx) => {
|
|
27
|
+
if (serveStatic?.options?.cacheControl) {
|
|
28
|
+
ctx.setHeader("Cache-Control", serveStatic?.options.cacheControl);
|
|
29
|
+
}
|
|
30
|
+
let headers = serveStatic?.options?.headers;
|
|
31
|
+
if (headers) {
|
|
32
|
+
for (const key in headers) {
|
|
33
|
+
let value = headers?.[key];
|
|
34
|
+
ctx.headers.set(key, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return ctx.sendFile(r.fileSource);
|
|
38
|
+
};
|
|
39
|
+
});
|
|
92
40
|
}
|
|
93
|
-
(0, staticFile_js_1.getFiles)(dir, route, this, options);
|
|
94
41
|
return this;
|
|
95
42
|
}
|
|
96
43
|
get(path, ...args) {
|
|
97
44
|
this.#registerRoute("GET", path, ...args);
|
|
98
45
|
return this;
|
|
99
46
|
}
|
|
100
|
-
sse(path, handler) {
|
|
101
|
-
this.get(path, async (ctx) => {
|
|
102
|
-
let res = await handler(ctx);
|
|
103
|
-
const headersMap = {};
|
|
104
|
-
if (res instanceof Response) {
|
|
105
|
-
for (const [key, value] of res.headers.entries()) {
|
|
106
|
-
headersMap[key.toLowerCase()] = value;
|
|
107
|
-
}
|
|
108
|
-
res = res.body;
|
|
109
|
-
}
|
|
110
|
-
const headers = {
|
|
111
|
-
...headersMap,
|
|
112
|
-
"content-type": "text/event-stream",
|
|
113
|
-
"cache-control": "no-cache",
|
|
114
|
-
connection: "keep-alive",
|
|
115
|
-
};
|
|
116
|
-
return new Response(res, {
|
|
117
|
-
status: 200,
|
|
118
|
-
headers,
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
47
|
post(path, ...args) {
|
|
123
48
|
this.#registerRoute("POST", path, ...args);
|
|
124
49
|
return this;
|
|
@@ -139,27 +64,26 @@ class Router extends MiddlewareConfigure_js_1.default {
|
|
|
139
64
|
this.#registerRoute("OPTIONS", path, ...args);
|
|
140
65
|
return this;
|
|
141
66
|
}
|
|
142
|
-
head(path, ...args) {
|
|
143
|
-
this.#registerRoute("HEAD", path, ...args);
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
67
|
all(path, ...args) {
|
|
147
68
|
this.#registerRoute("ALL", path, ...args);
|
|
148
69
|
return this;
|
|
149
70
|
}
|
|
150
|
-
|
|
151
|
-
|
|
71
|
+
when(methods, path, ...args) {
|
|
72
|
+
const methodList = Array.isArray(methods) ? methods : [methods];
|
|
73
|
+
for (const method of methodList) {
|
|
74
|
+
this.#registerRoute(method.toUpperCase(), path, ...args);
|
|
75
|
+
}
|
|
152
76
|
return this;
|
|
153
77
|
}
|
|
154
78
|
addRouter(path, router) {
|
|
155
|
-
return this.#
|
|
79
|
+
return this.#addRouterInstance(path, router);
|
|
156
80
|
}
|
|
157
81
|
group(prefix, callback) {
|
|
158
82
|
const router = new Router({
|
|
159
83
|
basePath: prefix,
|
|
160
84
|
});
|
|
161
85
|
callback(router);
|
|
162
|
-
this.#
|
|
86
|
+
this.#addRouterInstance("/", router);
|
|
163
87
|
return this;
|
|
164
88
|
}
|
|
165
89
|
use(...args) {
|
|
@@ -196,15 +120,26 @@ class Router extends MiddlewareConfigure_js_1.default {
|
|
|
196
120
|
else if (args[0] instanceof Router) {
|
|
197
121
|
router = args[0];
|
|
198
122
|
}
|
|
199
|
-
|
|
123
|
+
if (middlewares?.length) {
|
|
124
|
+
this.#addRoute("ALL", path, middlewares);
|
|
125
|
+
}
|
|
200
126
|
if (router && router instanceof Router) {
|
|
201
127
|
this.addRouter(path, router);
|
|
202
128
|
}
|
|
203
129
|
return this;
|
|
204
130
|
}
|
|
131
|
+
#addRoute(method, path, handlers) {
|
|
132
|
+
let pattern = `/${(0, low_level_js_1.sanitizePathSplitBasePath)(this.basePath, path).join("/")}`;
|
|
133
|
+
this.router?.addRoute(method, pattern, handlers);
|
|
134
|
+
this.route.push({
|
|
135
|
+
method: method,
|
|
136
|
+
pattern: pattern,
|
|
137
|
+
handlers: handlers,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
205
140
|
#registerRoute(method, path, ...args) {
|
|
206
141
|
if (args.length === 0) {
|
|
207
|
-
throw new
|
|
142
|
+
throw new error_js_1.TezXError("At least one handler is required.");
|
|
208
143
|
}
|
|
209
144
|
let middlewares = [];
|
|
210
145
|
let callback;
|
|
@@ -221,290 +156,22 @@ class Router extends MiddlewareConfigure_js_1.default {
|
|
|
221
156
|
callback = args[0];
|
|
222
157
|
}
|
|
223
158
|
if (typeof callback !== "function") {
|
|
224
|
-
throw new
|
|
159
|
+
throw new error_js_1.TezXError("Route callback function is missing or invalid.");
|
|
225
160
|
}
|
|
226
161
|
if (!middlewares.every((middleware) => typeof middleware === "function")) {
|
|
227
|
-
throw new
|
|
162
|
+
throw new error_js_1.TezXError("Middleware must be a function or an array of functions.");
|
|
228
163
|
}
|
|
229
|
-
this.#addRoute(method, path,
|
|
164
|
+
this.#addRoute(method, path, [...middlewares, callback]);
|
|
230
165
|
}
|
|
231
|
-
#
|
|
232
|
-
let finalMiddleware = middlewares;
|
|
233
|
-
if (!config_js_1.GlobalConfig.allowDuplicateMw) {
|
|
234
|
-
finalMiddleware = new Set(middlewares);
|
|
235
|
-
}
|
|
236
|
-
if (path instanceof RegExp) {
|
|
237
|
-
let regex = (0, regexRouter_js_1.addBaseToRegex)(this.basePath, path);
|
|
238
|
-
let regexPath = `regex://${regex?.source}`;
|
|
239
|
-
let handler = this.routers.get(regexPath);
|
|
240
|
-
if (!handler) {
|
|
241
|
-
handler = new Map();
|
|
242
|
-
handler.set(method, {
|
|
243
|
-
callback: callback,
|
|
244
|
-
paramNames: [],
|
|
245
|
-
regex: regex,
|
|
246
|
-
middlewares: finalMiddleware,
|
|
247
|
-
});
|
|
248
|
-
return this.routers.set(regexPath, handler);
|
|
249
|
-
}
|
|
250
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && handler.has(method))
|
|
251
|
-
return;
|
|
252
|
-
return handler.set(method, {
|
|
253
|
-
callback: callback,
|
|
254
|
-
paramNames: [],
|
|
255
|
-
regex: regex,
|
|
256
|
-
middlewares: finalMiddleware
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
const parts = (0, url_js_1.sanitizePathSplit)(this.basePath, path);
|
|
260
|
-
let p = parts.join("/");
|
|
261
|
-
if (url_js_1.wildcardOrOptionalParamRegex.test(`/${p}`)) {
|
|
262
|
-
let strPath = `string://${p}`;
|
|
263
|
-
let { paramNames, regex } = (0, regexRouter_js_1.compileRegexRoute)(parts);
|
|
264
|
-
let handler = this.routers.get(strPath);
|
|
265
|
-
if (!handler) {
|
|
266
|
-
handler = new Map();
|
|
267
|
-
handler.set(method, {
|
|
268
|
-
callback: callback,
|
|
269
|
-
regex: regex,
|
|
270
|
-
paramNames: paramNames,
|
|
271
|
-
middlewares: finalMiddleware,
|
|
272
|
-
});
|
|
273
|
-
return this.routers.set(strPath, handler);
|
|
274
|
-
}
|
|
275
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && handler.has(method))
|
|
276
|
-
return;
|
|
277
|
-
return handler.set(method, {
|
|
278
|
-
callback: callback,
|
|
279
|
-
regex: regex,
|
|
280
|
-
paramNames: paramNames,
|
|
281
|
-
middlewares: finalMiddleware
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
let node = this.triRouter;
|
|
285
|
-
for (const part of parts) {
|
|
286
|
-
if (part.startsWith(":")) {
|
|
287
|
-
if (!node.children.has(":")) {
|
|
288
|
-
node.children.set(":", new TrieRouter());
|
|
289
|
-
}
|
|
290
|
-
node = node.children.get(":");
|
|
291
|
-
node.isParam = true;
|
|
292
|
-
if (!node.paramName) {
|
|
293
|
-
node.paramName = part.slice(1);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
if (!node.children.has(part)) {
|
|
298
|
-
node.children.set(part, new TrieRouter());
|
|
299
|
-
}
|
|
300
|
-
node = node.children.get(part);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && node.handlers.has(method))
|
|
304
|
-
return;
|
|
305
|
-
node.handlers.set(method, {
|
|
306
|
-
callback: callback,
|
|
307
|
-
middlewares: finalMiddleware,
|
|
308
|
-
});
|
|
309
|
-
node.pathname = `/${p}`;
|
|
310
|
-
}
|
|
311
|
-
#addRouteMiddleware(path, middlewareFunctions) {
|
|
312
|
-
this.addMiddleware(path, middlewareFunctions);
|
|
313
|
-
}
|
|
314
|
-
#routeAddTriNode(path, router) {
|
|
166
|
+
#addRouterInstance(path, router) {
|
|
315
167
|
this.env = { ...this.env, ...router.env };
|
|
316
168
|
if (!(router instanceof Router)) {
|
|
317
|
-
throw new
|
|
318
|
-
}
|
|
319
|
-
const parts = (0, url_js_1.sanitizePathSplit)(this.basePath, path);
|
|
320
|
-
if (router.routers.size) {
|
|
321
|
-
for (const [segment, handlers] of router.routers) {
|
|
322
|
-
if (segment.indexOf("string://") == 0) {
|
|
323
|
-
let pattern = segment.replace(/^string:\/\//, "");
|
|
324
|
-
let joined = [...parts, pattern].join("/");
|
|
325
|
-
let strPath = `string://${joined}`;
|
|
326
|
-
if (this.routers.has(strPath)) {
|
|
327
|
-
const baseRouter = this.routers.get(strPath);
|
|
328
|
-
for (const [method, handler] of handlers) {
|
|
329
|
-
let { regex, paramNames } = baseRouter?.get(method);
|
|
330
|
-
handler.regex = regex;
|
|
331
|
-
handler.paramNames = paramNames;
|
|
332
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && baseRouter.has(method))
|
|
333
|
-
continue;
|
|
334
|
-
baseRouter.set(method, handler);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
let h = new Map();
|
|
339
|
-
for (const [method, { callback, middlewares }] of handlers) {
|
|
340
|
-
let { paramNames, regex } = (0, regexRouter_js_1.compileRegexRoute)(joined);
|
|
341
|
-
h.set(method, {
|
|
342
|
-
callback: callback,
|
|
343
|
-
middlewares: middlewares,
|
|
344
|
-
paramNames,
|
|
345
|
-
regex
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
this.routers.set(strPath, h);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
else {
|
|
352
|
-
let pattern = segment.replace("regex://", "");
|
|
353
|
-
let base = parts?.join("/");
|
|
354
|
-
let regex = (0, regexRouter_js_1.addBaseToRegex)(base, new RegExp(pattern));
|
|
355
|
-
let regexPath = `regex://${regex.source}`;
|
|
356
|
-
if (this.routers.has(regexPath)) {
|
|
357
|
-
const baseRouter = this.routers.get(regexPath);
|
|
358
|
-
for (const [method, handler] of handlers) {
|
|
359
|
-
handler.regex = regex;
|
|
360
|
-
handler.paramNames = [];
|
|
361
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && baseRouter.has(method))
|
|
362
|
-
continue;
|
|
363
|
-
baseRouter.set(method, handler);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
let h = new Map();
|
|
368
|
-
for (const [method, { callback, middlewares }] of handlers) {
|
|
369
|
-
h.set(method, {
|
|
370
|
-
callback: callback,
|
|
371
|
-
middlewares: middlewares,
|
|
372
|
-
paramNames: [],
|
|
373
|
-
regex
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
this.routers.set(regexPath, h);
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
let rootNode = this.triRouter;
|
|
382
|
-
let rootMiddlewares = this.triMiddlewares;
|
|
383
|
-
if (parts.length == 0) {
|
|
384
|
-
this.#addMiddlewareHandlerIDsTriNode(rootNode, rootMiddlewares, router);
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
for (const part of parts) {
|
|
388
|
-
if (part.startsWith(":")) {
|
|
389
|
-
if (!rootNode.children.has(":")) {
|
|
390
|
-
rootNode.children.set(":", new TrieRouter());
|
|
391
|
-
}
|
|
392
|
-
rootNode = rootNode.children.get(":");
|
|
393
|
-
rootNode.isParam = true;
|
|
394
|
-
if (!rootNode.paramName) {
|
|
395
|
-
rootNode.paramName = part.slice(1);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
if (!rootNode.children.has(part)) {
|
|
400
|
-
rootNode.children.set(part, new TrieRouter());
|
|
401
|
-
}
|
|
402
|
-
rootNode = rootNode.children.get(part);
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
for (const part of parts) {
|
|
406
|
-
if (part.startsWith("*")) {
|
|
407
|
-
if (!rootMiddlewares.children.has("*")) {
|
|
408
|
-
rootMiddlewares.children.set("*", new MiddlewareConfigure_js_1.TriMiddleware());
|
|
409
|
-
}
|
|
410
|
-
rootMiddlewares = rootMiddlewares.children.get("*");
|
|
411
|
-
}
|
|
412
|
-
else if (part.startsWith(":")) {
|
|
413
|
-
const isOptional = part?.endsWith("?");
|
|
414
|
-
if (isOptional) {
|
|
415
|
-
rootMiddlewares.isOptional = isOptional;
|
|
416
|
-
continue;
|
|
417
|
-
}
|
|
418
|
-
if (!rootMiddlewares.children.has(":")) {
|
|
419
|
-
rootMiddlewares.children.set(":", new MiddlewareConfigure_js_1.TriMiddleware());
|
|
420
|
-
}
|
|
421
|
-
rootMiddlewares = rootMiddlewares.children.get(":");
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
if (!rootMiddlewares.children.has(part)) {
|
|
425
|
-
rootMiddlewares.children.set(part, new MiddlewareConfigure_js_1.TriMiddleware());
|
|
426
|
-
}
|
|
427
|
-
rootMiddlewares = rootMiddlewares.children.get(part);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
this.#addMiddlewareHandlerIDsTriNode(rootNode, rootMiddlewares, router);
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
#addMiddlewareHandlerIDsTriNode(rootNode, rootMiddlewares, router) {
|
|
434
|
-
function addSubRouter(children, node) {
|
|
435
|
-
let rtN = node;
|
|
436
|
-
for (const element of children) {
|
|
437
|
-
const pathSegment = element[0];
|
|
438
|
-
const subRouter = element[1];
|
|
439
|
-
if (rtN.children.has(pathSegment)) {
|
|
440
|
-
let findNode = rtN.children.get(pathSegment);
|
|
441
|
-
for (const [method, handlers] of subRouter.handlers) {
|
|
442
|
-
if (!config_js_1.GlobalConfig.overwriteMethod && node.handlers.has(method))
|
|
443
|
-
return;
|
|
444
|
-
findNode.handlers.set(method, handlers);
|
|
445
|
-
}
|
|
446
|
-
if (subRouter.children.size) {
|
|
447
|
-
addSubRouter(subRouter.children, findNode);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
rtN.children.set(pathSegment, subRouter);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
let routerNode = router.triRouter;
|
|
456
|
-
const routerMiddlewares = router.triMiddlewares;
|
|
457
|
-
for (const [method, handlers] of routerNode.handlers) {
|
|
458
|
-
if (!config_js_1.GlobalConfig.overwriteMethod) {
|
|
459
|
-
rootNode.handlers.set(method, handlers);
|
|
460
|
-
continue;
|
|
461
|
-
}
|
|
462
|
-
if (!rootNode.handlers.has(method)) {
|
|
463
|
-
rootNode.handlers.set(method, handlers);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
if (routerNode.children.size > 0) {
|
|
467
|
-
addSubRouter(routerNode.children, rootNode);
|
|
468
|
-
}
|
|
469
|
-
function addMiddleware(children, node) {
|
|
470
|
-
let n = node;
|
|
471
|
-
for (const [path, middlewareNode] of children) {
|
|
472
|
-
if (n.children.has(path)) {
|
|
473
|
-
let findNode = n.children.get(path);
|
|
474
|
-
if (config_js_1.GlobalConfig.allowDuplicateMw) {
|
|
475
|
-
findNode.middlewares.push(...middlewareNode.middlewares);
|
|
476
|
-
}
|
|
477
|
-
else {
|
|
478
|
-
for (const mw of middlewareNode.middlewares) {
|
|
479
|
-
if (findNode.middlewares.has(mw)) {
|
|
480
|
-
middlewareNode.middlewares.delete(mw);
|
|
481
|
-
}
|
|
482
|
-
findNode.middlewares.add(mw);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
if (middlewareNode.children.size) {
|
|
486
|
-
addMiddleware(middlewareNode.children, findNode);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
else {
|
|
490
|
-
n.children.set(path, middlewareNode);
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
if (config_js_1.GlobalConfig.allowDuplicateMw) {
|
|
495
|
-
rootMiddlewares.middlewares.push(...routerMiddlewares.middlewares);
|
|
496
|
-
}
|
|
497
|
-
else {
|
|
498
|
-
for (const mw of routerMiddlewares.middlewares) {
|
|
499
|
-
if (rootMiddlewares.middlewares.has(mw)) {
|
|
500
|
-
routerMiddlewares.middlewares.delete(mw);
|
|
501
|
-
}
|
|
502
|
-
rootMiddlewares.middlewares.add(mw);
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
if (routerMiddlewares.children.size > 0) {
|
|
506
|
-
addMiddleware(routerMiddlewares.children, rootMiddlewares);
|
|
169
|
+
throw new error_js_1.TezXError("Router instance is required.");
|
|
507
170
|
}
|
|
171
|
+
router.route.forEach((r) => {
|
|
172
|
+
this.#addRoute(r?.method, `/${(0, low_level_js_1.sanitizePathSplitBasePath)(path, r?.pattern).join("/")}`, r?.handlers);
|
|
173
|
+
});
|
|
174
|
+
Object.assign(this.staticFile, router.staticFile);
|
|
508
175
|
}
|
|
509
176
|
}
|
|
510
177
|
exports.Router = Router;
|