exisjs 0.7.9 → 0.7.11
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/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +8 -1
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/config/config.d.ts +2 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +1 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +7 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/database/lifecycle.d.ts +2 -1
- package/dist/database/lifecycle.d.ts.map +1 -1
- package/dist/database/lifecycle.js +6 -2
- package/dist/database/lifecycle.js.map +1 -1
- package/dist/decorators/constants.d.ts +2 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +3 -1
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core.d.ts +14 -0
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +156 -41
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/filters.d.ts +2 -10
- package/dist/decorators/filters.d.ts.map +1 -1
- package/dist/decorators/filters.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +1 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/lifecycle.d.ts +29 -0
- package/dist/decorators/lifecycle.d.ts.map +1 -1
- package/dist/decorators/params.d.ts +3 -7
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js.map +1 -1
- package/dist/decorators/pipes.d.ts +91 -0
- package/dist/decorators/pipes.d.ts.map +1 -0
- package/dist/decorators/pipes.js +283 -0
- package/dist/decorators/pipes.js.map +1 -0
- package/dist/di/container.d.ts +8 -4
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +186 -68
- package/dist/di/container.js.map +1 -1
- package/dist/di/decorators.d.ts +23 -5
- package/dist/di/decorators.d.ts.map +1 -1
- package/dist/di/decorators.js +83 -20
- package/dist/di/decorators.js.map +1 -1
- package/dist/di/forward-ref.d.ts +23 -0
- package/dist/di/forward-ref.d.ts.map +1 -0
- package/dist/di/forward-ref.js +30 -0
- package/dist/di/forward-ref.js.map +1 -0
- package/dist/di/index.d.ts +3 -2
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +8 -1
- package/dist/di/index.js.map +1 -1
- package/dist/docs/BENCHMARKS.md +5 -5
- package/dist/docs/content/config.mdx +16 -6
- package/dist/docs/content/controllers.mdx +230 -0
- package/dist/docs/content/errors.mdx +16 -9
- package/dist/docs/content/modules.mdx +23 -4
- package/dist/docs/content/providers.mdx +42 -6
- package/dist/docs/content/requests.mdx +9 -3
- package/dist/docs/content/responses.mdx +19 -5
- package/dist/docs/content/security.mdx +48 -35
- package/dist/docs/content/structure.mdx +119 -93
- package/dist/docs/reference/config.mdx +29 -18
- package/dist/docs/reference/decorators.mdx +15 -4
- package/dist/docs/reference/di.mdx +23 -16
- package/dist/docs/reference/router.mdx +75 -0
- package/dist/docs/reference/validator.mdx +2 -2
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +12 -0
- package/dist/error/errors.js.map +1 -1
- package/dist/middleware/security.d.ts +18 -0
- package/dist/middleware/security.d.ts.map +1 -1
- package/dist/middleware/security.js +32 -0
- package/dist/middleware/security.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +142 -87
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/router/radix.d.ts +1 -0
- package/dist/router/radix.d.ts.map +1 -1
- package/dist/router/radix.js +21 -0
- package/dist/router/radix.js.map +1 -1
- package/dist/router/route-builder.d.ts +160 -29
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +105 -31
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts +3 -2
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +44 -0
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/functional-compiler.d.ts +1 -1
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -1
- package/dist/router/scanner/functional-compiler.js +403 -64
- package/dist/router/scanner/functional-compiler.js.map +1 -1
- package/dist/router/types.d.ts +4 -2
- package/dist/router/types.d.ts.map +1 -1
- package/dist/server/adapters/uws-adapter.d.ts +17 -0
- package/dist/server/adapters/uws-adapter.d.ts.map +1 -1
- package/dist/server/adapters/uws-adapter.js +101 -7
- package/dist/server/adapters/uws-adapter.js.map +1 -1
- package/dist/server/app.d.ts +2 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +38 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/helpers/etag.d.ts +1 -0
- package/dist/server/helpers/etag.d.ts.map +1 -1
- package/dist/server/helpers/etag.js +168 -9
- package/dist/server/helpers/etag.js.map +1 -1
- package/dist/server/helpers/ip.d.ts.map +1 -1
- package/dist/server/helpers/ip.js +75 -17
- package/dist/server/helpers/ip.js.map +1 -1
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +35 -19
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +4 -3
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +26 -8
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +1 -0
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +48 -22
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/generator.d.ts.map +1 -1
- package/dist/swagger/generator.js +66 -22
- package/dist/swagger/generator.js.map +1 -1
- package/dist/testing/client.d.ts +15 -11
- package/dist/testing/client.d.ts.map +1 -1
- package/dist/testing/client.js +32 -11
- package/dist/testing/client.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/validator/engine.d.ts.map +1 -1
- package/dist/validator/engine.js +45 -0
- package/dist/validator/engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,184 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateETag = generateETag;
|
|
4
|
+
exports.safeSanitize = safeSanitize;
|
|
4
5
|
exports.nativeStringify = nativeStringify;
|
|
5
6
|
const rs_1 = require("@exisjs/rs");
|
|
6
7
|
function generateETag(content) {
|
|
7
8
|
return (0, rs_1.generateEtag)(content);
|
|
8
9
|
}
|
|
10
|
+
function safeSanitize(val, ancestors = new Set(), path = '') {
|
|
11
|
+
if (val === null || val === undefined)
|
|
12
|
+
return val;
|
|
13
|
+
if (typeof val === 'bigint')
|
|
14
|
+
return val.toString();
|
|
15
|
+
if (typeof val === 'symbol')
|
|
16
|
+
return val.toString();
|
|
17
|
+
if (typeof val === 'function')
|
|
18
|
+
return undefined;
|
|
19
|
+
if (typeof val !== 'object')
|
|
20
|
+
return val;
|
|
21
|
+
if (ancestors.has(val)) {
|
|
22
|
+
return '[Circular]';
|
|
23
|
+
}
|
|
24
|
+
ancestors.add(val);
|
|
25
|
+
try {
|
|
26
|
+
if (val instanceof Error) {
|
|
27
|
+
return {
|
|
28
|
+
name: val.name,
|
|
29
|
+
message: val.message,
|
|
30
|
+
stack: val.stack,
|
|
31
|
+
...val,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (val instanceof Map) {
|
|
35
|
+
const obj = {};
|
|
36
|
+
for (const [k, v] of val.entries()) {
|
|
37
|
+
try {
|
|
38
|
+
obj[String(k)] = safeSanitize(v, ancestors, path ? `${path}.${k}` : String(k));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
obj[String(k)] = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
if (val instanceof Set) {
|
|
47
|
+
return Array.from(val).map((item, idx) => safeSanitize(item, ancestors, `${path}[${idx}]`));
|
|
48
|
+
}
|
|
49
|
+
if (val._bsontype === 'ObjectID' ||
|
|
50
|
+
val._bsontype === 'ObjectId' ||
|
|
51
|
+
val.constructor?.name === 'ObjectId' ||
|
|
52
|
+
val.constructor?.name === 'ObjectID' ||
|
|
53
|
+
val._bsontype === 'Decimal128' ||
|
|
54
|
+
val._bsontype === 'Long' ||
|
|
55
|
+
val.constructor?.name === 'Decimal128' ||
|
|
56
|
+
val.constructor?.name === 'Long') {
|
|
57
|
+
return val.toString();
|
|
58
|
+
}
|
|
59
|
+
if (val._bsontype === 'Binary' || val.constructor?.name === 'Binary') {
|
|
60
|
+
return typeof val.toString === 'function' ? val.toString('base64') : val;
|
|
61
|
+
}
|
|
62
|
+
if (val.constructor?.name === 'Decimal' &&
|
|
63
|
+
typeof val.toFixed === 'function') {
|
|
64
|
+
return val.toString();
|
|
65
|
+
}
|
|
66
|
+
if (typeof val.toObject === 'function') {
|
|
67
|
+
try {
|
|
68
|
+
return safeSanitize(val.toObject({ virtuals: true, getters: true }), ancestors, path);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// fallback
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (typeof val.toJSON === 'function' && !(val instanceof Date)) {
|
|
75
|
+
try {
|
|
76
|
+
return safeSanitize(val.toJSON(), ancestors, path);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// fallback
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (val instanceof Date) {
|
|
83
|
+
return isNaN(val.getTime()) ? null : val.toISOString();
|
|
84
|
+
}
|
|
85
|
+
if (Buffer.isBuffer(val)) {
|
|
86
|
+
return val.toString('utf8');
|
|
87
|
+
}
|
|
88
|
+
if (Array.isArray(val)) {
|
|
89
|
+
return val.map((item, idx) => safeSanitize(item, ancestors, `${path}[${idx}]`));
|
|
90
|
+
}
|
|
91
|
+
const result = {};
|
|
92
|
+
const keys = Object.keys(val);
|
|
93
|
+
for (const key of keys) {
|
|
94
|
+
if (key.startsWith('$__') ||
|
|
95
|
+
key === '$isNew' ||
|
|
96
|
+
key === '$init' ||
|
|
97
|
+
key === '$errors') {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const propPath = path ? `${path}.${key}` : key;
|
|
102
|
+
const sanitizedChild = safeSanitize(val[key], ancestors, propPath);
|
|
103
|
+
if (sanitizedChild !== undefined) {
|
|
104
|
+
result[key] = sanitizedChild;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Omit throwing getters
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
ancestors.delete(val);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function isFastSerializable(val) {
|
|
118
|
+
if (val === null || val === undefined)
|
|
119
|
+
return true;
|
|
120
|
+
const type = typeof val;
|
|
121
|
+
if (type === 'string' || type === 'number' || type === 'boolean')
|
|
122
|
+
return true;
|
|
123
|
+
if (type !== 'object')
|
|
124
|
+
return false;
|
|
125
|
+
if (val.constructor === Object) {
|
|
126
|
+
for (const k in val) {
|
|
127
|
+
const v = val[k];
|
|
128
|
+
if (v !== null && typeof v === 'object') {
|
|
129
|
+
if (v.constructor !== Object && v.constructor !== Array)
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
else if (typeof v === 'bigint' ||
|
|
133
|
+
typeof v === 'function' ||
|
|
134
|
+
typeof v === 'symbol') {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
if (Array.isArray(val)) {
|
|
141
|
+
for (const v of val) {
|
|
142
|
+
if (v !== null && typeof v === 'object') {
|
|
143
|
+
if (v.constructor !== Object && v.constructor !== Array)
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
else if (typeof v === 'bigint' ||
|
|
147
|
+
typeof v === 'function' ||
|
|
148
|
+
typeof v === 'symbol') {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
9
156
|
function nativeStringify(data) {
|
|
10
157
|
if (data === null || data === undefined) {
|
|
11
158
|
return 'null';
|
|
12
159
|
}
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
160
|
+
// Fast path for primitives
|
|
161
|
+
const type = typeof data;
|
|
162
|
+
if (type === 'string')
|
|
163
|
+
return JSON.stringify(data);
|
|
164
|
+
if (type === 'number' || type === 'boolean')
|
|
165
|
+
return String(data);
|
|
166
|
+
if (type === 'bigint')
|
|
167
|
+
return `"${data.toString()}"`;
|
|
168
|
+
if (isFastSerializable(data)) {
|
|
169
|
+
try {
|
|
170
|
+
return JSON.stringify(data);
|
|
20
171
|
}
|
|
21
|
-
|
|
172
|
+
catch {
|
|
173
|
+
// fallback on circular refs
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const sanitized = safeSanitize(data);
|
|
178
|
+
return JSON.stringify(sanitized);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return String(data);
|
|
22
182
|
}
|
|
23
|
-
return JSON.stringify(data);
|
|
24
183
|
}
|
|
25
184
|
//# sourceMappingURL=etag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etag.js","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":";;AAEA,oCAEC;AAED,
|
|
1
|
+
{"version":3,"file":"etag.js","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"ip.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAoE/B;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B,MAAM,CAgCR;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B,MAAM,CAgBR"}
|
|
@@ -14,6 +14,50 @@ function normalizeIp(ip) {
|
|
|
14
14
|
return ip;
|
|
15
15
|
}
|
|
16
16
|
function resolveIps(raw, trustProxy) {
|
|
17
|
+
const isTrusted = Boolean(trustProxy) ||
|
|
18
|
+
process.env.TRUST_PROXY === 'true' ||
|
|
19
|
+
process.env.EXIS_TRUST_PROXY === 'true';
|
|
20
|
+
const rawRemote = raw.socket?.remoteAddress ?? '127.0.0.1';
|
|
21
|
+
const remoteAddress = normalizeIp(rawRemote);
|
|
22
|
+
if (!isTrusted) {
|
|
23
|
+
return { ips: [], ip: remoteAddress };
|
|
24
|
+
}
|
|
25
|
+
// 1. Direct Edge & CDN client IP headers
|
|
26
|
+
const cfConnectingIp = raw.headers['cf-connecting-ip'];
|
|
27
|
+
if (cfConnectingIp) {
|
|
28
|
+
const rawVal = Array.isArray(cfConnectingIp)
|
|
29
|
+
? cfConnectingIp[0]
|
|
30
|
+
: cfConnectingIp;
|
|
31
|
+
if (typeof rawVal === 'string' && rawVal.trim() !== '') {
|
|
32
|
+
const ip = normalizeIp(rawVal.trim());
|
|
33
|
+
return { ips: [ip], ip };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const trueClientIp = raw.headers['true-client-ip'];
|
|
37
|
+
if (trueClientIp) {
|
|
38
|
+
const rawVal = Array.isArray(trueClientIp) ? trueClientIp[0] : trueClientIp;
|
|
39
|
+
if (typeof rawVal === 'string' && rawVal.trim() !== '') {
|
|
40
|
+
const ip = normalizeIp(rawVal.trim());
|
|
41
|
+
return { ips: [ip], ip };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const xRealIp = raw.headers['x-real-ip'];
|
|
45
|
+
if (xRealIp) {
|
|
46
|
+
const rawVal = Array.isArray(xRealIp) ? xRealIp[0] : xRealIp;
|
|
47
|
+
if (typeof rawVal === 'string' && rawVal.trim() !== '') {
|
|
48
|
+
const ip = normalizeIp(rawVal.trim());
|
|
49
|
+
return { ips: [ip], ip };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const xClientIp = raw.headers['x-client-ip'];
|
|
53
|
+
if (xClientIp) {
|
|
54
|
+
const rawVal = Array.isArray(xClientIp) ? xClientIp[0] : xClientIp;
|
|
55
|
+
if (typeof rawVal === 'string' && rawVal.trim() !== '') {
|
|
56
|
+
const ip = normalizeIp(rawVal.trim());
|
|
57
|
+
return { ips: [ip], ip };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 2. Parse standard X-Forwarded-For proxy chain
|
|
17
61
|
const xForwardedFor = raw.headers['x-forwarded-for'];
|
|
18
62
|
let ips = [];
|
|
19
63
|
if (xForwardedFor) {
|
|
@@ -22,34 +66,48 @@ function resolveIps(raw, trustProxy) {
|
|
|
22
66
|
: xForwardedFor;
|
|
23
67
|
ips = rawVal.split(',').map((item) => normalizeIp(item.trim()));
|
|
24
68
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
let trustedIps = ips;
|
|
29
|
-
if (typeof trustProxy === 'number' && trustProxy > 0) {
|
|
30
|
-
trustedIps = ips.slice(-(trustProxy + 1));
|
|
31
|
-
}
|
|
32
|
-
const ip = trustedIps.length > 0 ? trustedIps[0] : remoteAddress;
|
|
33
|
-
return { ips: trustedIps, ip };
|
|
69
|
+
let trustedIps = ips;
|
|
70
|
+
if (typeof trustProxy === 'number' && trustProxy > 0) {
|
|
71
|
+
trustedIps = ips.slice(-(trustProxy + 1));
|
|
34
72
|
}
|
|
35
|
-
|
|
73
|
+
const ip = trustedIps.length > 0 ? trustedIps[0] : remoteAddress;
|
|
74
|
+
return { ips: trustedIps, ip };
|
|
36
75
|
}
|
|
37
76
|
function resolveProtocol(raw, trustProxy) {
|
|
77
|
+
const isTrusted = Boolean(trustProxy) ||
|
|
78
|
+
process.env.TRUST_PROXY === 'true' ||
|
|
79
|
+
process.env.EXIS_TRUST_PROXY === 'true';
|
|
38
80
|
const connection = raw.socket;
|
|
39
81
|
const isTls = connection?.encrypted || false;
|
|
40
82
|
let protocol = isTls ? 'https' : 'http';
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
83
|
+
if (isTrusted) {
|
|
84
|
+
const cfVisitor = raw.headers['cf-visitor'];
|
|
85
|
+
if (typeof cfVisitor === 'string') {
|
|
86
|
+
try {
|
|
87
|
+
const parsed = JSON.parse(cfVisitor);
|
|
88
|
+
if (parsed.scheme)
|
|
89
|
+
return parsed.scheme;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// ignore
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const xForwardedProto = raw.headers['x-forwarded-proto'];
|
|
96
|
+
if (xForwardedProto) {
|
|
97
|
+
const rawProto = Array.isArray(xForwardedProto)
|
|
98
|
+
? xForwardedProto.join(',')
|
|
99
|
+
: xForwardedProto;
|
|
100
|
+
protocol = rawProto.split(',')[0].trim();
|
|
101
|
+
}
|
|
47
102
|
}
|
|
48
103
|
return protocol;
|
|
49
104
|
}
|
|
50
105
|
function resolveHostname(raw, trustProxy) {
|
|
106
|
+
const isTrusted = Boolean(trustProxy) ||
|
|
107
|
+
process.env.TRUST_PROXY === 'true' ||
|
|
108
|
+
process.env.EXIS_TRUST_PROXY === 'true';
|
|
51
109
|
let host = raw.headers['x-forwarded-host'];
|
|
52
|
-
if (!host || !
|
|
110
|
+
if (!host || !isTrusted) {
|
|
53
111
|
host = raw.headers.host || '';
|
|
54
112
|
}
|
|
55
113
|
if (Array.isArray(host))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip.js","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":";;AAEA,kCAQC;AAED,
|
|
1
|
+
{"version":3,"file":"ip.js","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler.d.ts","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"request-handler.d.ts","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAMvC,qBAAa,cAAc;IAWb,OAAO,CAAC,GAAG;IAVvB,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAc,cAAc,SAAI;IAKhC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAO;gBAExB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAEjC,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IAOZ,mBAAmB,IAAI,OAAO,EAAE;IAoB1B,MAAM,CAAC,OAAO,EAAE;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,MAAM,CAAA;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,GAAG,CAAA;QACV,OAAO,CAAC,EAAE,GAAG,CAAA;KACd,GAAG,OAAO,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC;IAwF9C,mBAAmB,CACxB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,IAAI,GACpB,IAAI;IA6BA,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;YA2DtD,gBAAgB;YAuChB,iBAAiB;CAuChC"}
|
|
@@ -43,6 +43,9 @@ const response_1 = require("./response");
|
|
|
43
43
|
const context_1 = require("./context");
|
|
44
44
|
const router_1 = require("../router/router");
|
|
45
45
|
const middleware_1 = require("../middleware/middleware");
|
|
46
|
+
const noop = () => {
|
|
47
|
+
// no-op callback
|
|
48
|
+
};
|
|
46
49
|
class RequestHandler {
|
|
47
50
|
constructor(app) {
|
|
48
51
|
this.app = app;
|
|
@@ -82,11 +85,20 @@ class RequestHandler {
|
|
|
82
85
|
if (this._compiledPipeline)
|
|
83
86
|
return this._compiledPipeline;
|
|
84
87
|
this.app.applyBuiltins();
|
|
85
|
-
this.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if (this.app.globalMiddleware.length === 0) {
|
|
89
|
+
this._compiledPipeline = [
|
|
90
|
+
(req, res) => this.app.getRouter().handle(req, res, () => {
|
|
91
|
+
(0, middleware_1.notFound)(req, res, noop);
|
|
92
|
+
}),
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this._compiledPipeline = [
|
|
97
|
+
...this.app.globalMiddleware,
|
|
98
|
+
(req, res, next) => this.app.getRouter().handle(req, res, next),
|
|
99
|
+
middleware_1.notFound,
|
|
100
|
+
];
|
|
101
|
+
}
|
|
90
102
|
return this._compiledPipeline;
|
|
91
103
|
}
|
|
92
104
|
async inject(options) {
|
|
@@ -197,31 +209,35 @@ class RequestHandler {
|
|
|
197
209
|
}
|
|
198
210
|
handle(rawReq, rawRes) {
|
|
199
211
|
RequestHandler.activeRequests++;
|
|
200
|
-
let decremented = false;
|
|
201
|
-
const decrementActive = () => {
|
|
202
|
-
if (!decremented) {
|
|
203
|
-
decremented = true;
|
|
204
|
-
if (RequestHandler.activeRequests > 0) {
|
|
205
|
-
RequestHandler.activeRequests--;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
212
|
const res = this._acquireRes(rawRes);
|
|
210
213
|
const req = this._acquireReq(rawReq, res, this.app.options.trustProxy, this.app.options.bodyLimit);
|
|
211
214
|
res.req = req;
|
|
212
215
|
res.etagEnabled = this.app.options.etag === true;
|
|
213
216
|
req.log = this.app.log;
|
|
214
217
|
// Recycle objects back to pool and decrement active request counter when the response is fully done
|
|
215
|
-
|
|
216
|
-
|
|
218
|
+
let isDone = false;
|
|
219
|
+
const onDone = () => {
|
|
220
|
+
if (isDone)
|
|
221
|
+
return;
|
|
222
|
+
isDone = true;
|
|
223
|
+
if (RequestHandler.activeRequests > 0) {
|
|
224
|
+
RequestHandler.activeRequests--;
|
|
225
|
+
}
|
|
217
226
|
this._releaseReq(req);
|
|
218
227
|
this._releaseRes(res);
|
|
219
|
-
}
|
|
220
|
-
|
|
228
|
+
};
|
|
229
|
+
res._onDone = onDone;
|
|
230
|
+
if (typeof rawRes.once === 'function') {
|
|
231
|
+
rawRes.once('close', onDone);
|
|
232
|
+
}
|
|
233
|
+
else if (typeof rawRes.on === 'function') {
|
|
234
|
+
rawRes.on('close', onDone);
|
|
235
|
+
}
|
|
236
|
+
const pipeline = this._compiledPipeline || this.getCompiledPipeline();
|
|
221
237
|
this._executeWithContext(req, res, () => {
|
|
222
238
|
if (this.app.hooks.request.length === 0 &&
|
|
223
239
|
this.app.hooks.response.length === 0) {
|
|
224
|
-
(0, router_1.runHandlers)(
|
|
240
|
+
(0, router_1.runHandlers)(pipeline, req, res, (err) => {
|
|
225
241
|
if (err) {
|
|
226
242
|
this._runErrorHandlers(err, req, res).catch((e) => {
|
|
227
243
|
this.app.log.error({ err: e, originalError: err }, 'Error in error handler');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0DAAiE;AACjE,uCAAuC;AACvC,yCAAyC;AACzC,uCAA4D;AAC5D,6CAA8C;AAC9C,yDAAmD;AAGnD,MAAa,cAAc;IAWzB,YAAoB,GAAa;QAAb,QAAG,GAAH,GAAG,CAAU;QAPjC,+EAA+E;QAC/E,8EAA8E;QAC9E,yEAAyE;QACjE,aAAQ,GAAkB,EAAE,CAAA;QAC5B,aAAQ,GAAmB,EAAE,CAAA;IAGD,CAAC;IAE7B,WAAW,CACjB,MAAuB,EACvB,GAAiB,EACjB,UAA4B,EAC5B,SAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,IAAI,qBAAW,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;IAC5D,CAAC;IAEO,WAAW,CAAC,MAAsB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAEO,WAAW,CAAC,GAAgB;QAClC,GAAG,CAAC,OAAO,EAAE,CAAA;QACb,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,GAAiB;QACnC,GAAG,CAAC,GAAG,GAAG,SAAgB,CAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAEM,mBAAmB;QACxB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAA;QACzD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;QACxB,IAAI,CAAC,iBAAiB,GAAG;
|
|
1
|
+
{"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/server/request.d.ts
CHANGED
|
@@ -18,8 +18,10 @@ export declare class ExisRequest<TBody = unknown, TQuery = Record<string, string
|
|
|
18
18
|
session?: Record<string, any> | any;
|
|
19
19
|
requestId?: string;
|
|
20
20
|
tenantId?: string;
|
|
21
|
-
|
|
22
|
-
private _abortController
|
|
21
|
+
private _signal?;
|
|
22
|
+
private _abortController?;
|
|
23
|
+
get signal(): AbortSignal;
|
|
24
|
+
set signal(val: AbortSignal);
|
|
23
25
|
_diCache: Map<any, any>;
|
|
24
26
|
private _urlStr;
|
|
25
27
|
private _qIdx;
|
|
@@ -32,7 +34,6 @@ export declare class ExisRequest<TBody = unknown, TQuery = Record<string, string
|
|
|
32
34
|
private _hostname?;
|
|
33
35
|
private _method?;
|
|
34
36
|
private _onClose;
|
|
35
|
-
private _attachSignal;
|
|
36
37
|
cleanup(): void;
|
|
37
38
|
constructor(raw: IncomingMessage, res: ExisResponse, trustProxy?: boolean | number, bodyLimit?: number);
|
|
38
39
|
init(raw: IncomingMessage, res: ExisResponse, trustProxy?: boolean | number, bodyLimit?: number): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAmB9C,qBAAa,WAAW,CACtB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"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"}
|
package/dist/server/request.js
CHANGED
|
@@ -17,13 +17,33 @@ class ExisRequest {
|
|
|
17
17
|
set file(val) {
|
|
18
18
|
this._file = val;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
this._abortController
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
get signal() {
|
|
21
|
+
if (!this._abortController) {
|
|
22
|
+
this._abortController = new AbortController();
|
|
23
|
+
this._signal = this._abortController.signal;
|
|
24
|
+
if (typeof this.raw?.once === 'function') {
|
|
25
|
+
this.raw.once('close', this._onClose);
|
|
26
|
+
}
|
|
27
|
+
else if (typeof this.raw?.on === 'function') {
|
|
28
|
+
this.raw.on('close', this._onClose);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return this._signal;
|
|
32
|
+
}
|
|
33
|
+
set signal(val) {
|
|
34
|
+
this._signal = val;
|
|
24
35
|
}
|
|
25
36
|
cleanup() {
|
|
26
|
-
|
|
37
|
+
if (this._abortController) {
|
|
38
|
+
if (typeof this.raw?.removeListener === 'function') {
|
|
39
|
+
this.raw.removeListener('close', this._onClose);
|
|
40
|
+
}
|
|
41
|
+
else if (typeof this.raw?.off === 'function') {
|
|
42
|
+
this.raw.off('close', this._onClose);
|
|
43
|
+
}
|
|
44
|
+
this._abortController = undefined;
|
|
45
|
+
this._signal = undefined;
|
|
46
|
+
}
|
|
27
47
|
this._diCache.clear();
|
|
28
48
|
this.user = undefined;
|
|
29
49
|
this.session = undefined;
|
|
@@ -53,14 +73,13 @@ class ExisRequest {
|
|
|
53
73
|
this._diCache = new Map();
|
|
54
74
|
this._onClose = () => {
|
|
55
75
|
if (!this.res.raw.writableEnded && !this.res.headersSent) {
|
|
56
|
-
if (!this._abortController.signal.aborted) {
|
|
76
|
+
if (this._abortController && !this._abortController.signal.aborted) {
|
|
57
77
|
this._abortController.abort();
|
|
58
78
|
}
|
|
59
79
|
}
|
|
60
80
|
};
|
|
61
81
|
this._urlStr = raw.url ?? '/';
|
|
62
82
|
this._qIdx = this._urlStr.indexOf('?');
|
|
63
|
-
this._attachSignal();
|
|
64
83
|
}
|
|
65
84
|
init(raw, res, trustProxy = false, bodyLimit = 10485760 // 10MB
|
|
66
85
|
) {
|
|
@@ -69,7 +88,6 @@ class ExisRequest {
|
|
|
69
88
|
this.res = res;
|
|
70
89
|
this.trustProxy = trustProxy;
|
|
71
90
|
this.bodyLimit = bodyLimit;
|
|
72
|
-
this._attachSignal();
|
|
73
91
|
this.params = undefined;
|
|
74
92
|
this.body = undefined;
|
|
75
93
|
this.files = [];
|