tezx 1.0.13 → 1.0.15
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 +8 -3
- package/{dist/cjs → cjs}/index.js +1 -1
- package/{dist/index.js → index.js} +1 -1
- package/package.json +18 -19
- package/dist/MiddlewareConfigure.d.ts +0 -17
- package/dist/MiddlewareConfigure.js +0 -63
- package/dist/adapter.d.ts +0 -10
- package/dist/adapter.js +0 -162
- package/dist/cjs/MiddlewareConfigure.js +0 -68
- package/dist/cjs/adapter.js +0 -166
- package/dist/cjs/common.js +0 -15
- package/dist/cjs/config/config.js +0 -35
- package/dist/cjs/context.js +0 -428
- package/dist/cjs/environment.js +0 -34
- package/dist/cjs/header.js +0 -85
- package/dist/cjs/helper/common.js +0 -11
- package/dist/cjs/helper/env-parser.js +0 -69
- package/dist/cjs/helper/index.js +0 -20
- package/dist/cjs/middleware/cors.js +0 -49
- package/dist/cjs/middleware/index.js +0 -26
- package/dist/cjs/middleware/logger.js +0 -21
- package/dist/cjs/middleware/powered-by.js +0 -10
- package/dist/cjs/middleware/rateLimiter.js +0 -40
- package/dist/cjs/middleware/request-id.js +0 -15
- package/dist/cjs/middleware/sanitizeHeader.js +0 -51
- package/dist/cjs/middleware/secureHeaders.js +0 -42
- package/dist/cjs/middleware/xssProtection.js +0 -26
- package/dist/cjs/request.js +0 -80
- package/dist/cjs/router.js +0 -377
- package/dist/cjs/server.js +0 -170
- package/dist/cjs/utils/colors.js +0 -24
- package/dist/cjs/utils/debugging.js +0 -17
- package/dist/cjs/utils/formData.js +0 -219
- package/dist/cjs/utils/params.js +0 -94
- package/dist/cjs/utils/state.js +0 -34
- package/dist/cjs/utils/staticFile.js +0 -158
- package/dist/cjs/utils/url.js +0 -59
- package/dist/common.d.ts +0 -21
- package/dist/common.js +0 -11
- package/dist/config/config.d.ts +0 -17
- package/dist/config/config.js +0 -31
- package/dist/context.d.ts +0 -195
- package/dist/context.js +0 -424
- package/dist/environment.d.ts +0 -6
- package/dist/environment.js +0 -30
- package/dist/header.d.ts +0 -71
- package/dist/header.js +0 -81
- package/dist/helper/common.d.ts +0 -5
- package/dist/helper/common.js +0 -8
- package/dist/helper/env-parser.d.ts +0 -5
- package/dist/helper/env-parser.js +0 -66
- package/dist/helper/index.d.ts +0 -2
- package/dist/helper/index.js +0 -2
- package/dist/middleware/cors.d.ts +0 -10
- package/dist/middleware/cors.js +0 -46
- package/dist/middleware/index.d.ts +0 -9
- package/dist/middleware/index.js +0 -8
- package/dist/middleware/logger.d.ts +0 -15
- package/dist/middleware/logger.js +0 -18
- package/dist/middleware/powered-by.d.ts +0 -16
- package/dist/middleware/powered-by.js +0 -6
- package/dist/middleware/rateLimiter.d.ts +0 -61
- package/dist/middleware/rateLimiter.js +0 -36
- package/dist/middleware/request-id.d.ts +0 -16
- package/dist/middleware/request-id.js +0 -11
- package/dist/middleware/sanitizeHeader.d.ts +0 -53
- package/dist/middleware/sanitizeHeader.js +0 -47
- package/dist/middleware/secureHeaders.d.ts +0 -78
- package/dist/middleware/secureHeaders.js +0 -38
- package/dist/middleware/xssProtection.d.ts +0 -43
- package/dist/middleware/xssProtection.js +0 -22
- package/dist/request.d.ts +0 -82
- package/dist/request.js +0 -76
- package/dist/router.d.ts +0 -191
- package/dist/router.js +0 -373
- package/dist/server.d.ts +0 -54
- package/dist/server.js +0 -166
- package/dist/utils/colors.d.ts +0 -21
- package/dist/utils/colors.js +0 -21
- package/dist/utils/debugging.d.ts +0 -7
- package/dist/utils/debugging.js +0 -13
- package/dist/utils/formData.d.ts +0 -5
- package/dist/utils/formData.js +0 -213
- package/dist/utils/params.d.ts +0 -7
- package/dist/utils/params.js +0 -91
- package/dist/utils/state.d.ts +0 -50
- package/dist/utils/state.js +0 -30
- package/dist/utils/staticFile.d.ts +0 -9
- package/dist/utils/staticFile.js +0 -154
- package/dist/utils/url.d.ts +0 -16
- package/dist/utils/url.js +0 -55
- /package/{dist/index.d.ts → index.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -47,7 +47,8 @@ Create a simple TezX server:
|
|
|
47
47
|
import { nodeAdapter, TezX } from "tezx";
|
|
48
48
|
import { logger } from "tezx/middleware";
|
|
49
49
|
|
|
50
|
-
const app = new TezX(
|
|
50
|
+
const app = new TezX();
|
|
51
|
+
app.use(logger())
|
|
51
52
|
|
|
52
53
|
app.static("/", "./static");
|
|
53
54
|
|
|
@@ -96,7 +97,7 @@ Enhance your application with middleware:
|
|
|
96
97
|
|
|
97
98
|
```javascript
|
|
98
99
|
app.use((ctx, next) => {
|
|
99
|
-
console.log(`Incoming request: ${ctx.
|
|
100
|
+
console.log(`Incoming request: ${ctx.req.url}`);
|
|
100
101
|
return next();
|
|
101
102
|
});
|
|
102
103
|
```
|
|
@@ -152,7 +153,11 @@ Add the following scripts to **`package.json`**:
|
|
|
152
153
|
|
|
153
154
|
```json
|
|
154
155
|
"scripts": {
|
|
155
|
-
"
|
|
156
|
+
"clean": "rm -rf dist",
|
|
157
|
+
"build:cjs": "tsc --module CommonJS --outDir dist/cjs --removeComments",
|
|
158
|
+
"build:esm": "tsc --module ESNext --outDir dist/mjs --removeComments",
|
|
159
|
+
"build:dts": "tsc --module ESNext --outDir dist/types --declaration --emitDeclarationOnly",
|
|
160
|
+
"build": "npm run clean && npm run build:cjs && npm run build:esm && npm run build:dts",
|
|
156
161
|
"start": "node dist/index.js",
|
|
157
162
|
"nodemon": "nodemon src/index.ts",
|
|
158
163
|
"dev": "tsx watch src/index.ts"
|
|
@@ -22,4 +22,4 @@ var server_1 = require("./server");
|
|
|
22
22
|
Object.defineProperty(exports, "TezX", { enumerable: true, get: function () { return server_1.TezX; } });
|
|
23
23
|
var params_1 = require("./utils/params");
|
|
24
24
|
Object.defineProperty(exports, "useParams", { enumerable: true, get: function () { return params_1.useParams; } });
|
|
25
|
-
exports.version = "1.0.
|
|
25
|
+
exports.version = "1.0.15";
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tezx",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"description": "TezX is a cutting-edge, high-performance, and lightweight JavaScript framework designed for speed, scalability, and flexibility. Built with modern web development needs in mind, TezX enables efficient routing, middleware management, and static file serving with minimal configuration. It is fully compatible with Node.js, Deno, and Bun, making it a truly cross-environment framework.",
|
|
5
|
-
"main": "
|
|
6
|
-
"module": "
|
|
7
|
-
"types": "
|
|
8
|
-
"typings": "
|
|
5
|
+
"main": "cjs/index.js",
|
|
6
|
+
"module": "index.js",
|
|
7
|
+
"types": "index.d.ts",
|
|
8
|
+
"typings": "index.d.ts",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
|
11
11
|
"dev": "nodemon --watch src --exec ts-node src/index.ts",
|
|
12
|
-
"start": "node
|
|
12
|
+
"start": "node index.js"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
@@ -20,27 +20,26 @@
|
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
".": {
|
|
23
|
-
"import": "./
|
|
24
|
-
"types": "./
|
|
25
|
-
"require": "./
|
|
23
|
+
"import": "./index.js",
|
|
24
|
+
"types": "./index.d.ts",
|
|
25
|
+
"require": "./cjs/index.js"
|
|
26
26
|
},
|
|
27
27
|
"./middleware": {
|
|
28
|
-
"import": "./
|
|
29
|
-
"require": "./
|
|
30
|
-
"types": "./
|
|
28
|
+
"import": "./middleware/index.js",
|
|
29
|
+
"require": "./cjs/middleware/index.js",
|
|
30
|
+
"types": "./middleware/index.d.ts"
|
|
31
31
|
},
|
|
32
32
|
"./helper": {
|
|
33
|
-
"import": "./
|
|
34
|
-
"types": "./
|
|
35
|
-
"require": "./
|
|
33
|
+
"import": "./helper/index.js",
|
|
34
|
+
"types": "./helper/index.d.ts",
|
|
35
|
+
"require": "./cjs/helper/index.js"
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/tezxjs/TezX",
|
|
39
39
|
"files": [
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"dist/index.d.ts",
|
|
40
|
+
"index.js",
|
|
41
|
+
"index.mjs",
|
|
42
|
+
"index.d.ts",
|
|
44
43
|
"middlewares/index.d.ts",
|
|
45
44
|
"middlewares/index.js",
|
|
46
45
|
"middlewares/index.mjs"
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { CommonHandler } from "./common";
|
|
2
|
-
import { Middleware } from "./router";
|
|
3
|
-
export type DuplicateMiddlewares = Middleware<any>[];
|
|
4
|
-
export type UniqueMiddlewares = Set<Middleware<any>>;
|
|
5
|
-
export declare class TriMiddleware {
|
|
6
|
-
children: Map<string, TriMiddleware>;
|
|
7
|
-
middlewares: DuplicateMiddlewares | UniqueMiddlewares;
|
|
8
|
-
isOptional: boolean;
|
|
9
|
-
pathname: string;
|
|
10
|
-
constructor(pathname?: string);
|
|
11
|
-
}
|
|
12
|
-
export default class MiddlewareConfigure<T extends Record<string, any> = {}> extends CommonHandler {
|
|
13
|
-
triMiddlewares: TriMiddleware;
|
|
14
|
-
protected basePath: string;
|
|
15
|
-
constructor(basePath?: string);
|
|
16
|
-
protected addMiddleware(pathname: string, middlewares: Middleware<T>[]): void;
|
|
17
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { CommonHandler } from "./common";
|
|
2
|
-
import { GlobalConfig } from "./config/config";
|
|
3
|
-
import { sanitizePathSplit } from "./utils/url";
|
|
4
|
-
export class TriMiddleware {
|
|
5
|
-
children = new Map();
|
|
6
|
-
middlewares = new Set();
|
|
7
|
-
isOptional = false;
|
|
8
|
-
pathname;
|
|
9
|
-
constructor(pathname = "/") {
|
|
10
|
-
this.pathname = pathname;
|
|
11
|
-
if (GlobalConfig.allowDuplicateMw) {
|
|
12
|
-
this.middlewares = [];
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
this.middlewares = new Set();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export default class MiddlewareConfigure extends CommonHandler {
|
|
20
|
-
triMiddlewares = new TriMiddleware();
|
|
21
|
-
basePath;
|
|
22
|
-
constructor(basePath = "/") {
|
|
23
|
-
super();
|
|
24
|
-
this.basePath = basePath;
|
|
25
|
-
}
|
|
26
|
-
addMiddleware(pathname, middlewares) {
|
|
27
|
-
const parts = sanitizePathSplit(this.basePath, pathname);
|
|
28
|
-
let node = this.triMiddlewares;
|
|
29
|
-
for (const part of parts) {
|
|
30
|
-
if (part.startsWith("*")) {
|
|
31
|
-
if (!node.children.has("*")) {
|
|
32
|
-
node.children.set("*", new TriMiddleware());
|
|
33
|
-
}
|
|
34
|
-
node = node.children.get("*");
|
|
35
|
-
}
|
|
36
|
-
else if (part.startsWith(":")) {
|
|
37
|
-
const isOptional = part?.endsWith("?");
|
|
38
|
-
if (isOptional) {
|
|
39
|
-
node.isOptional = isOptional;
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (!node.children.has(":")) {
|
|
43
|
-
node.children.set(":", new TriMiddleware());
|
|
44
|
-
}
|
|
45
|
-
node = node.children.get(":");
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (!node.children.has(part)) {
|
|
49
|
-
node.children.set(part, new TriMiddleware());
|
|
50
|
-
}
|
|
51
|
-
node = node.children.get(part);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (GlobalConfig.allowDuplicateMw) {
|
|
55
|
-
node.middlewares.push(...middlewares);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
for (const middleware of middlewares) {
|
|
59
|
-
node.middlewares.add(middleware);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
package/dist/adapter.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { TezX } from "./server";
|
|
2
|
-
export declare function denoAdapter<T extends Record<string, any> = {}>(TezX: TezX<T>): {
|
|
3
|
-
listen: (port: number, callback?: (message: string) => void) => any;
|
|
4
|
-
};
|
|
5
|
-
export declare function bunAdapter<T extends Record<string, any> = {}>(TezX: TezX<T>): {
|
|
6
|
-
listen: (port: number, callback?: (message: string) => void) => any;
|
|
7
|
-
};
|
|
8
|
-
export declare function nodeAdapter<T extends Record<string, any> = {}>(TezX: TezX<T>): {
|
|
9
|
-
listen: (port: number, callback?: (message: string) => void) => void;
|
|
10
|
-
};
|
package/dist/adapter.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { GlobalConfig } from "./config/config";
|
|
2
|
-
export function denoAdapter(TezX) {
|
|
3
|
-
function listen(port, callback) {
|
|
4
|
-
const isDeno = typeof Deno !== "undefined";
|
|
5
|
-
try {
|
|
6
|
-
async function handleRequest(req, connInfo) {
|
|
7
|
-
let remoteAddr = connInfo.remoteAddr;
|
|
8
|
-
let localAddr = { ...server.addr };
|
|
9
|
-
let address = {
|
|
10
|
-
remoteAddr: {
|
|
11
|
-
port: remoteAddr?.port,
|
|
12
|
-
address: remoteAddr?.hostname,
|
|
13
|
-
transport: remoteAddr?.transport,
|
|
14
|
-
family: remoteAddr?.family,
|
|
15
|
-
},
|
|
16
|
-
localAddr: {
|
|
17
|
-
port: localAddr?.port,
|
|
18
|
-
address: localAddr?.hostname,
|
|
19
|
-
transport: localAddr?.transport,
|
|
20
|
-
family: localAddr?.family,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
const response = await TezX.serve(req, address);
|
|
24
|
-
if (response instanceof Response) {
|
|
25
|
-
return response;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
return new Response(response.body, {
|
|
29
|
-
status: response.status,
|
|
30
|
-
statusText: response.statusText || "",
|
|
31
|
-
headers: new Headers(response.headers),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const server = isDeno ? Deno.serve({ port }, handleRequest) : null;
|
|
36
|
-
GlobalConfig.serverInfo = server;
|
|
37
|
-
if (!server) {
|
|
38
|
-
throw new Error("Deno is not find");
|
|
39
|
-
}
|
|
40
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
41
|
-
const message = `\x1b[1m🚀 Deno TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
42
|
-
if (typeof callback === "function") {
|
|
43
|
-
callback(message);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
GlobalConfig.debugging.success(message);
|
|
47
|
-
}
|
|
48
|
-
return server;
|
|
49
|
-
}
|
|
50
|
-
catch (err) {
|
|
51
|
-
throw new Error(err?.message);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
listen,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export function bunAdapter(TezX) {
|
|
59
|
-
function listen(port, callback) {
|
|
60
|
-
const serve = typeof Bun !== "undefined" ? Bun.serve : null;
|
|
61
|
-
try {
|
|
62
|
-
if (!serve) {
|
|
63
|
-
throw new Error("Bun is not find");
|
|
64
|
-
}
|
|
65
|
-
const server = serve({
|
|
66
|
-
port: port,
|
|
67
|
-
async fetch(req) {
|
|
68
|
-
const response = await TezX.serve(req, {
|
|
69
|
-
remoteAddr: server.requestIP(req),
|
|
70
|
-
localAddr: server.address,
|
|
71
|
-
});
|
|
72
|
-
if (response instanceof Response) {
|
|
73
|
-
return response;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return new Response(response.body, {
|
|
77
|
-
status: response.status,
|
|
78
|
-
statusText: response.statusText || "",
|
|
79
|
-
headers: new Headers(response.headers),
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
GlobalConfig.serverInfo = server;
|
|
85
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
86
|
-
const message = `\x1b[1m Bun TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
87
|
-
if (typeof callback == "function") {
|
|
88
|
-
callback(message);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
GlobalConfig.debugging.success(message);
|
|
92
|
-
}
|
|
93
|
-
return server;
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
throw new Error(err?.message);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
listen,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
export function nodeAdapter(TezX) {
|
|
104
|
-
function listen(port, callback) {
|
|
105
|
-
import("http")
|
|
106
|
-
.then((r) => {
|
|
107
|
-
let server = r.createServer(async (req, res) => {
|
|
108
|
-
let address = {};
|
|
109
|
-
if (req.socket) {
|
|
110
|
-
address = {
|
|
111
|
-
remoteAddr: {
|
|
112
|
-
family: req.socket.remoteFamily,
|
|
113
|
-
address: req.socket.remoteAddress,
|
|
114
|
-
port: req.socket.remotePort,
|
|
115
|
-
},
|
|
116
|
-
localAddr: {
|
|
117
|
-
address: req.socket.localAddress,
|
|
118
|
-
port: req.socket.localPort,
|
|
119
|
-
family: req.socket.localFamily,
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
const response = await TezX.serve(req, address);
|
|
124
|
-
const statusText = response?.statusText;
|
|
125
|
-
if (!(response instanceof Response)) {
|
|
126
|
-
throw new Error("Invalid response from TezX.serve");
|
|
127
|
-
}
|
|
128
|
-
const headers = Object.fromEntries(await response.headers.entries());
|
|
129
|
-
if (statusText) {
|
|
130
|
-
res.statusMessage = statusText;
|
|
131
|
-
}
|
|
132
|
-
res.writeHead(response.status, headers);
|
|
133
|
-
const { Readable } = await import("stream");
|
|
134
|
-
if (response.body instanceof Readable) {
|
|
135
|
-
response.body.pipe(res);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
const body = await response.arrayBuffer();
|
|
139
|
-
res.end(Buffer.from(body));
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
server.listen(port, () => {
|
|
143
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
144
|
-
const message = `\x1b[1m NodeJS TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
145
|
-
GlobalConfig.serverInfo = server;
|
|
146
|
-
if (typeof callback == "function") {
|
|
147
|
-
callback(message);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
GlobalConfig.debugging.success(message);
|
|
151
|
-
}
|
|
152
|
-
return server;
|
|
153
|
-
});
|
|
154
|
-
})
|
|
155
|
-
.catch((r) => {
|
|
156
|
-
throw Error(r.message);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
return {
|
|
160
|
-
listen,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TriMiddleware = void 0;
|
|
4
|
-
const common_1 = require("./common");
|
|
5
|
-
const config_1 = require("./config/config");
|
|
6
|
-
const url_1 = require("./utils/url");
|
|
7
|
-
class TriMiddleware {
|
|
8
|
-
children = new Map();
|
|
9
|
-
middlewares = new Set();
|
|
10
|
-
isOptional = false;
|
|
11
|
-
pathname;
|
|
12
|
-
constructor(pathname = "/") {
|
|
13
|
-
this.pathname = pathname;
|
|
14
|
-
if (config_1.GlobalConfig.allowDuplicateMw) {
|
|
15
|
-
this.middlewares = [];
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
this.middlewares = new Set();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.TriMiddleware = TriMiddleware;
|
|
23
|
-
class MiddlewareConfigure extends common_1.CommonHandler {
|
|
24
|
-
triMiddlewares = new TriMiddleware();
|
|
25
|
-
basePath;
|
|
26
|
-
constructor(basePath = "/") {
|
|
27
|
-
super();
|
|
28
|
-
this.basePath = basePath;
|
|
29
|
-
}
|
|
30
|
-
addMiddleware(pathname, middlewares) {
|
|
31
|
-
const parts = (0, url_1.sanitizePathSplit)(this.basePath, pathname);
|
|
32
|
-
let node = this.triMiddlewares;
|
|
33
|
-
for (const part of parts) {
|
|
34
|
-
if (part.startsWith("*")) {
|
|
35
|
-
if (!node.children.has("*")) {
|
|
36
|
-
node.children.set("*", new TriMiddleware());
|
|
37
|
-
}
|
|
38
|
-
node = node.children.get("*");
|
|
39
|
-
}
|
|
40
|
-
else if (part.startsWith(":")) {
|
|
41
|
-
const isOptional = part?.endsWith("?");
|
|
42
|
-
if (isOptional) {
|
|
43
|
-
node.isOptional = isOptional;
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (!node.children.has(":")) {
|
|
47
|
-
node.children.set(":", new TriMiddleware());
|
|
48
|
-
}
|
|
49
|
-
node = node.children.get(":");
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
if (!node.children.has(part)) {
|
|
53
|
-
node.children.set(part, new TriMiddleware());
|
|
54
|
-
}
|
|
55
|
-
node = node.children.get(part);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (config_1.GlobalConfig.allowDuplicateMw) {
|
|
59
|
-
node.middlewares.push(...middlewares);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
for (const middleware of middlewares) {
|
|
63
|
-
node.middlewares.add(middleware);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
exports.default = MiddlewareConfigure;
|
package/dist/cjs/adapter.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.denoAdapter = denoAdapter;
|
|
4
|
-
exports.bunAdapter = bunAdapter;
|
|
5
|
-
exports.nodeAdapter = nodeAdapter;
|
|
6
|
-
const config_1 = require("./config/config");
|
|
7
|
-
function denoAdapter(TezX) {
|
|
8
|
-
function listen(port, callback) {
|
|
9
|
-
const isDeno = typeof Deno !== "undefined";
|
|
10
|
-
try {
|
|
11
|
-
async function handleRequest(req, connInfo) {
|
|
12
|
-
let remoteAddr = connInfo.remoteAddr;
|
|
13
|
-
let localAddr = { ...server.addr };
|
|
14
|
-
let address = {
|
|
15
|
-
remoteAddr: {
|
|
16
|
-
port: remoteAddr?.port,
|
|
17
|
-
address: remoteAddr?.hostname,
|
|
18
|
-
transport: remoteAddr?.transport,
|
|
19
|
-
family: remoteAddr?.family,
|
|
20
|
-
},
|
|
21
|
-
localAddr: {
|
|
22
|
-
port: localAddr?.port,
|
|
23
|
-
address: localAddr?.hostname,
|
|
24
|
-
transport: localAddr?.transport,
|
|
25
|
-
family: localAddr?.family,
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
const response = await TezX.serve(req, address);
|
|
29
|
-
if (response instanceof Response) {
|
|
30
|
-
return response;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return new Response(response.body, {
|
|
34
|
-
status: response.status,
|
|
35
|
-
statusText: response.statusText || "",
|
|
36
|
-
headers: new Headers(response.headers),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const server = isDeno ? Deno.serve({ port }, handleRequest) : null;
|
|
41
|
-
config_1.GlobalConfig.serverInfo = server;
|
|
42
|
-
if (!server) {
|
|
43
|
-
throw new Error("Deno is not find");
|
|
44
|
-
}
|
|
45
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
46
|
-
const message = `\x1b[1m🚀 Deno TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
47
|
-
if (typeof callback === "function") {
|
|
48
|
-
callback(message);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
config_1.GlobalConfig.debugging.success(message);
|
|
52
|
-
}
|
|
53
|
-
return server;
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
throw new Error(err?.message);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
listen,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
function bunAdapter(TezX) {
|
|
64
|
-
function listen(port, callback) {
|
|
65
|
-
const serve = typeof Bun !== "undefined" ? Bun.serve : null;
|
|
66
|
-
try {
|
|
67
|
-
if (!serve) {
|
|
68
|
-
throw new Error("Bun is not find");
|
|
69
|
-
}
|
|
70
|
-
const server = serve({
|
|
71
|
-
port: port,
|
|
72
|
-
async fetch(req) {
|
|
73
|
-
const response = await TezX.serve(req, {
|
|
74
|
-
remoteAddr: server.requestIP(req),
|
|
75
|
-
localAddr: server.address,
|
|
76
|
-
});
|
|
77
|
-
if (response instanceof Response) {
|
|
78
|
-
return response;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
return new Response(response.body, {
|
|
82
|
-
status: response.status,
|
|
83
|
-
statusText: response.statusText || "",
|
|
84
|
-
headers: new Headers(response.headers),
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
config_1.GlobalConfig.serverInfo = server;
|
|
90
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
91
|
-
const message = `\x1b[1m Bun TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
92
|
-
if (typeof callback == "function") {
|
|
93
|
-
callback(message);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
config_1.GlobalConfig.debugging.success(message);
|
|
97
|
-
}
|
|
98
|
-
return server;
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
throw new Error(err?.message);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
listen,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
function nodeAdapter(TezX) {
|
|
109
|
-
function listen(port, callback) {
|
|
110
|
-
Promise.resolve().then(() => require("http")).then((r) => {
|
|
111
|
-
let server = r.createServer(async (req, res) => {
|
|
112
|
-
let address = {};
|
|
113
|
-
if (req.socket) {
|
|
114
|
-
address = {
|
|
115
|
-
remoteAddr: {
|
|
116
|
-
family: req.socket.remoteFamily,
|
|
117
|
-
address: req.socket.remoteAddress,
|
|
118
|
-
port: req.socket.remotePort,
|
|
119
|
-
},
|
|
120
|
-
localAddr: {
|
|
121
|
-
address: req.socket.localAddress,
|
|
122
|
-
port: req.socket.localPort,
|
|
123
|
-
family: req.socket.localFamily,
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
const response = await TezX.serve(req, address);
|
|
128
|
-
const statusText = response?.statusText;
|
|
129
|
-
if (!(response instanceof Response)) {
|
|
130
|
-
throw new Error("Invalid response from TezX.serve");
|
|
131
|
-
}
|
|
132
|
-
const headers = Object.fromEntries(await response.headers.entries());
|
|
133
|
-
if (statusText) {
|
|
134
|
-
res.statusMessage = statusText;
|
|
135
|
-
}
|
|
136
|
-
res.writeHead(response.status, headers);
|
|
137
|
-
const { Readable } = await Promise.resolve().then(() => require("stream"));
|
|
138
|
-
if (response.body instanceof Readable) {
|
|
139
|
-
response.body.pipe(res);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
const body = await response.arrayBuffer();
|
|
143
|
-
res.end(Buffer.from(body));
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
server.listen(port, () => {
|
|
147
|
-
const protocol = "\x1b[1;34mhttp\x1b[0m";
|
|
148
|
-
const message = `\x1b[1m NodeJS TezX Server running at ${protocol}://localhost:${port}/\x1b[0m`;
|
|
149
|
-
config_1.GlobalConfig.serverInfo = server;
|
|
150
|
-
if (typeof callback == "function") {
|
|
151
|
-
callback(message);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
config_1.GlobalConfig.debugging.success(message);
|
|
155
|
-
}
|
|
156
|
-
return server;
|
|
157
|
-
});
|
|
158
|
-
})
|
|
159
|
-
.catch((r) => {
|
|
160
|
-
throw Error(r.message);
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
listen,
|
|
165
|
-
};
|
|
166
|
-
}
|
package/dist/cjs/common.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CommonHandler = void 0;
|
|
4
|
-
const config_1 = require("./config/config");
|
|
5
|
-
class CommonHandler {
|
|
6
|
-
notFound(callback) {
|
|
7
|
-
config_1.GlobalConfig.notFound = callback;
|
|
8
|
-
return this;
|
|
9
|
-
}
|
|
10
|
-
onError(callback) {
|
|
11
|
-
config_1.GlobalConfig.onError = callback;
|
|
12
|
-
return this;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.CommonHandler = CommonHandler;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GlobalConfig = void 0;
|
|
4
|
-
const debugging_1 = require("../utils/debugging");
|
|
5
|
-
let GlobalConfig = class {
|
|
6
|
-
static notFound = (ctx) => {
|
|
7
|
-
const { method, urlRef: { pathname }, } = ctx.req;
|
|
8
|
-
return ctx.text(`${method}: '${pathname}' could not find\n`, 404);
|
|
9
|
-
};
|
|
10
|
-
static onError = (err, ctx) => {
|
|
11
|
-
return ctx.text(err, 500);
|
|
12
|
-
};
|
|
13
|
-
static allowDuplicateMw = false;
|
|
14
|
-
static overwriteMethod = true;
|
|
15
|
-
static debugMode = false;
|
|
16
|
-
static serverInfo;
|
|
17
|
-
static get debugging() {
|
|
18
|
-
return this.debugMode
|
|
19
|
-
? {
|
|
20
|
-
info: (msg, ...args) => (0, debugging_1.loggerOutput)("info", msg, ...args),
|
|
21
|
-
warn: (msg, ...args) => (0, debugging_1.loggerOutput)("warn", msg, ...args),
|
|
22
|
-
error: (msg, ...args) => (0, debugging_1.loggerOutput)("error", msg, ...args),
|
|
23
|
-
debug: (msg, ...args) => (0, debugging_1.loggerOutput)("debug", msg, ...args),
|
|
24
|
-
success: (msg, ...args) => (0, debugging_1.loggerOutput)("success", msg, ...args),
|
|
25
|
-
}
|
|
26
|
-
: {
|
|
27
|
-
info: (msg, ...args) => { },
|
|
28
|
-
warn: (msg, ...args) => { },
|
|
29
|
-
error: (msg, ...args) => { },
|
|
30
|
-
debug: (msg, ...args) => { },
|
|
31
|
-
success: (msg, ...args) => { },
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
exports.GlobalConfig = GlobalConfig;
|