exisjs 0.7.13 → 0.8.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.
Files changed (214) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/doctor.js +4 -37
  5. package/dist/cli/commands/doctor.js.map +1 -1
  6. package/dist/cli/commands/run.d.ts.map +1 -1
  7. package/dist/cli/commands/run.js +3 -1
  8. package/dist/cli/commands/run.js.map +1 -1
  9. package/dist/config/config.d.ts.map +1 -1
  10. package/dist/config/config.js +10 -0
  11. package/dist/config/config.js.map +1 -1
  12. package/dist/config/types.d.ts +9 -1
  13. package/dist/config/types.d.ts.map +1 -1
  14. package/dist/database/lifecycle.d.ts +7 -0
  15. package/dist/database/lifecycle.d.ts.map +1 -1
  16. package/dist/database/lifecycle.js +30 -7
  17. package/dist/database/lifecycle.js.map +1 -1
  18. package/dist/decorators/caching.d.ts +2 -5
  19. package/dist/decorators/caching.d.ts.map +1 -1
  20. package/dist/decorators/caching.js +7 -61
  21. package/dist/decorators/caching.js.map +1 -1
  22. package/dist/decorators/core.d.ts.map +1 -1
  23. package/dist/decorators/core.js +5 -0
  24. package/dist/decorators/core.js.map +1 -1
  25. package/dist/decorators/cron.d.ts +1 -0
  26. package/dist/decorators/cron.d.ts.map +1 -1
  27. package/dist/decorators/cron.js +4 -1
  28. package/dist/decorators/cron.js.map +1 -1
  29. package/dist/di/container.d.ts +1 -0
  30. package/dist/di/container.d.ts.map +1 -1
  31. package/dist/di/container.js +19 -3
  32. package/dist/di/container.js.map +1 -1
  33. package/dist/docs/ARCHITECTURE.md +117 -78
  34. package/dist/docs/BENCHMARKS.md +59 -26
  35. package/dist/docs/README.md +1 -1
  36. package/dist/docs/content/boundaries.mdx +2 -0
  37. package/dist/docs/content/cli/commands.mdx +1 -2
  38. package/dist/docs/content/cli/overview.mdx +1 -1
  39. package/dist/docs/content/config.mdx +22 -9
  40. package/dist/docs/content/cron.mdx +2 -2
  41. package/dist/docs/content/decorators.mdx +2 -2
  42. package/dist/docs/content/errors.mdx +22 -6
  43. package/dist/docs/content/installation.mdx +13 -8
  44. package/dist/docs/content/introduction.mdx +12 -12
  45. package/dist/docs/content/middleware.mdx +1 -1
  46. package/dist/docs/content/providers.mdx +4 -4
  47. package/dist/docs/content/requests.mdx +12 -1
  48. package/dist/docs/content/responses.mdx +44 -3
  49. package/dist/docs/content/routing.mdx +24 -0
  50. package/dist/docs/content/structure.mdx +4 -1
  51. package/dist/docs/content/testing.mdx +2 -0
  52. package/dist/docs/content/validation.mdx +16 -2
  53. package/dist/docs/reference/README.md +1 -1
  54. package/dist/docs/reference/config.mdx +1 -1
  55. package/dist/docs/reference/decorators.mdx +2 -2
  56. package/dist/docs/reference/di.mdx +1 -1
  57. package/dist/docs/reference/middleware.mdx +7 -5
  58. package/dist/docs/reference/sanitize.mdx +4 -4
  59. package/dist/docs/reference/validator.mdx +1 -1
  60. package/dist/error/errors.d.ts.map +1 -1
  61. package/dist/error/errors.js +31 -8
  62. package/dist/error/errors.js.map +1 -1
  63. package/dist/lib/start-server.js +24 -1
  64. package/dist/lib/start-server.js.map +1 -1
  65. package/dist/middleware/compression.d.ts +0 -12
  66. package/dist/middleware/compression.d.ts.map +1 -1
  67. package/dist/middleware/compression.js +52 -41
  68. package/dist/middleware/compression.js.map +1 -1
  69. package/dist/middleware/idempotency.d.ts +11 -6
  70. package/dist/middleware/idempotency.d.ts.map +1 -1
  71. package/dist/middleware/idempotency.js +5 -35
  72. package/dist/middleware/idempotency.js.map +1 -1
  73. package/dist/middleware/ip-filter.d.ts.map +1 -1
  74. package/dist/middleware/ip-filter.js +0 -16
  75. package/dist/middleware/ip-filter.js.map +1 -1
  76. package/dist/middleware/middleware.d.ts +2 -1
  77. package/dist/middleware/middleware.d.ts.map +1 -1
  78. package/dist/middleware/middleware.js +92 -56
  79. package/dist/middleware/middleware.js.map +1 -1
  80. package/dist/middleware/rate-limit.d.ts.map +1 -1
  81. package/dist/middleware/rate-limit.js +19 -38
  82. package/dist/middleware/rate-limit.js.map +1 -1
  83. package/dist/middleware/security.d.ts.map +1 -1
  84. package/dist/middleware/security.js +3 -1
  85. package/dist/middleware/security.js.map +1 -1
  86. package/dist/middleware/upload.d.ts.map +1 -1
  87. package/dist/middleware/upload.js +15 -7
  88. package/dist/middleware/upload.js.map +1 -1
  89. package/dist/response/index.d.ts +23 -0
  90. package/dist/response/index.d.ts.map +1 -1
  91. package/dist/response/index.js +28 -1
  92. package/dist/response/index.js.map +1 -1
  93. package/dist/router/index.d.ts +1 -1
  94. package/dist/router/index.d.ts.map +1 -1
  95. package/dist/router/index.js.map +1 -1
  96. package/dist/router/radix.d.ts +3 -16
  97. package/dist/router/radix.d.ts.map +1 -1
  98. package/dist/router/radix.js +135 -211
  99. package/dist/router/radix.js.map +1 -1
  100. package/dist/router/route-builder.d.ts +28 -0
  101. package/dist/router/route-builder.d.ts.map +1 -1
  102. package/dist/router/route-builder.js.map +1 -1
  103. package/dist/router/route-scanner.d.ts +2 -1
  104. package/dist/router/route-scanner.d.ts.map +1 -1
  105. package/dist/router/route-scanner.js +37 -44
  106. package/dist/router/route-scanner.js.map +1 -1
  107. package/dist/router/router.d.ts.map +1 -1
  108. package/dist/router/router.js +153 -126
  109. package/dist/router/router.js.map +1 -1
  110. package/dist/router/scanner/boundary-loader.d.ts.map +1 -1
  111. package/dist/router/scanner/boundary-loader.js +7 -2
  112. package/dist/router/scanner/boundary-loader.js.map +1 -1
  113. package/dist/router/scanner/fs-scanner.d.ts.map +1 -1
  114. package/dist/router/scanner/fs-scanner.js +22 -0
  115. package/dist/router/scanner/fs-scanner.js.map +1 -1
  116. package/dist/router/scanner/functional-compiler.d.ts.map +1 -1
  117. package/dist/router/scanner/functional-compiler.js +9 -1
  118. package/dist/router/scanner/functional-compiler.js.map +1 -1
  119. package/dist/router/types.d.ts +6 -4
  120. package/dist/router/types.d.ts.map +1 -1
  121. package/dist/sanitize/index.d.ts +2 -3
  122. package/dist/sanitize/index.d.ts.map +1 -1
  123. package/dist/sanitize/index.js +15 -20
  124. package/dist/sanitize/index.js.map +1 -1
  125. package/dist/server/adapters/bun-adapter.d.ts +2 -1
  126. package/dist/server/adapters/bun-adapter.d.ts.map +1 -1
  127. package/dist/server/adapters/bun-adapter.js +22 -2
  128. package/dist/server/adapters/bun-adapter.js.map +1 -1
  129. package/dist/server/app.d.ts +2 -2
  130. package/dist/server/app.d.ts.map +1 -1
  131. package/dist/server/app.js +14 -7
  132. package/dist/server/app.js.map +1 -1
  133. package/dist/server/bootstrapper.d.ts +2 -2
  134. package/dist/server/bootstrapper.d.ts.map +1 -1
  135. package/dist/server/bootstrapper.js +21 -2
  136. package/dist/server/bootstrapper.js.map +1 -1
  137. package/dist/server/download.d.ts +22 -0
  138. package/dist/server/download.d.ts.map +1 -0
  139. package/dist/server/download.js +18 -0
  140. package/dist/server/download.js.map +1 -0
  141. package/dist/server/helpers/body-parser.d.ts +1 -1
  142. package/dist/server/helpers/body-parser.d.ts.map +1 -1
  143. package/dist/server/helpers/body-parser.js +126 -48
  144. package/dist/server/helpers/body-parser.js.map +1 -1
  145. package/dist/server/helpers/cookie.d.ts +6 -0
  146. package/dist/server/helpers/cookie.d.ts.map +1 -1
  147. package/dist/server/helpers/cookie.js +35 -0
  148. package/dist/server/helpers/cookie.js.map +1 -1
  149. package/dist/server/helpers/etag.d.ts.map +1 -1
  150. package/dist/server/helpers/etag.js +7 -2
  151. package/dist/server/helpers/etag.js.map +1 -1
  152. package/dist/server/helpers/index.d.ts +2 -1
  153. package/dist/server/helpers/index.d.ts.map +1 -1
  154. package/dist/server/helpers/index.js +5 -1
  155. package/dist/server/helpers/index.js.map +1 -1
  156. package/dist/server/helpers/ip.d.ts +13 -0
  157. package/dist/server/helpers/ip.d.ts.map +1 -1
  158. package/dist/server/helpers/ip.js +65 -54
  159. package/dist/server/helpers/ip.js.map +1 -1
  160. package/dist/server/helpers/json.d.ts +3 -0
  161. package/dist/server/helpers/json.d.ts.map +1 -0
  162. package/dist/server/helpers/json.js +43 -0
  163. package/dist/server/helpers/json.js.map +1 -0
  164. package/dist/server/helpers/upload-name.d.ts +9 -0
  165. package/dist/server/helpers/upload-name.d.ts.map +1 -0
  166. package/dist/server/helpers/upload-name.js +39 -0
  167. package/dist/server/helpers/upload-name.js.map +1 -0
  168. package/dist/server/request-handler.d.ts +0 -7
  169. package/dist/server/request-handler.d.ts.map +1 -1
  170. package/dist/server/request-handler.js +19 -46
  171. package/dist/server/request-handler.js.map +1 -1
  172. package/dist/server/request.d.ts +3 -2
  173. package/dist/server/request.d.ts.map +1 -1
  174. package/dist/server/request.js +22 -16
  175. package/dist/server/request.js.map +1 -1
  176. package/dist/server/response.d.ts +20 -6
  177. package/dist/server/response.d.ts.map +1 -1
  178. package/dist/server/response.js +107 -34
  179. package/dist/server/response.js.map +1 -1
  180. package/dist/testing/index.d.ts.map +1 -1
  181. package/dist/testing/index.js +8 -1
  182. package/dist/testing/index.js.map +1 -1
  183. package/dist/testing/reporter.d.mts.map +1 -1
  184. package/dist/testing/reporter.mjs +18 -0
  185. package/dist/testing/reporter.mjs.map +1 -1
  186. package/dist/utils/ttl-cache.d.ts +11 -0
  187. package/dist/utils/ttl-cache.d.ts.map +1 -0
  188. package/dist/utils/ttl-cache.js +42 -0
  189. package/dist/utils/ttl-cache.js.map +1 -0
  190. package/dist/validator/builder.d.ts +2 -2
  191. package/dist/validator/builder.js +2 -2
  192. package/dist/validator/compile.d.ts +3 -0
  193. package/dist/validator/compile.d.ts.map +1 -0
  194. package/dist/validator/compile.js +254 -0
  195. package/dist/validator/compile.js.map +1 -0
  196. package/dist/validator/engine.d.ts +1 -0
  197. package/dist/validator/engine.d.ts.map +1 -1
  198. package/dist/validator/engine.js +285 -317
  199. package/dist/validator/engine.js.map +1 -1
  200. package/dist/validator/error.d.ts +1 -0
  201. package/dist/validator/error.d.ts.map +1 -1
  202. package/dist/validator/error.js +11 -1
  203. package/dist/validator/error.js.map +1 -1
  204. package/dist/validator/rules.d.ts +64 -0
  205. package/dist/validator/rules.d.ts.map +1 -0
  206. package/dist/validator/rules.js +655 -0
  207. package/dist/validator/rules.js.map +1 -0
  208. package/dist/validator/tex-types.d.ts +4 -4
  209. package/dist/validator/tex-types.d.ts.map +1 -1
  210. package/dist/validator/text.d.ts +11 -0
  211. package/dist/validator/text.d.ts.map +1 -0
  212. package/dist/validator/text.js +69 -0
  213. package/dist/validator/text.js.map +1 -0
  214. package/package.json +56 -39
@@ -13,70 +13,83 @@ function normalizeIp(ip) {
13
13
  }
14
14
  return ip;
15
15
  }
16
+ // Env overrides are read once; process.env access is slow on the hot path.
17
+ let envTrust;
18
+ function envTrustsProxy() {
19
+ if (envTrust === undefined) {
20
+ envTrust =
21
+ process.env.TRUST_PROXY === 'true' ||
22
+ process.env.EXIS_TRUST_PROXY === 'true';
23
+ }
24
+ return envTrust;
25
+ }
26
+ function isProxyTrusted(trustProxy) {
27
+ return Boolean(trustProxy) || envTrustsProxy();
28
+ }
29
+ function firstHeader(val) {
30
+ const v = Array.isArray(val) ? val[0] : val;
31
+ if (typeof v !== 'string')
32
+ return undefined;
33
+ const t = v.trim();
34
+ return t === '' ? undefined : t;
35
+ }
36
+ /**
37
+ * Resolves the client IP.
38
+ *
39
+ * - `trustProxy: false` -> socket address only.
40
+ * - `trustProxy: true` -> trust every hop: CDN headers (CF-Connecting-IP,
41
+ * True-Client-IP, X-Real-IP, X-Client-IP), else the left-most
42
+ * X-Forwarded-For entry. Only safe when every request passes through a
43
+ * proxy that overwrites these headers.
44
+ * - `trustProxy: N` -> trust the N closest hops, counting the socket peer
45
+ * (Express semantics). The client is the entry N steps back from the
46
+ * socket, so values a client prepends to X-Forwarded-For are ignored.
47
+ * CDN headers are not consulted, since any client can send them.
48
+ */
16
49
  function resolveIps(raw, trustProxy) {
17
- const isTrusted = Boolean(trustProxy) ||
18
- process.env.TRUST_PROXY === 'true' ||
19
- process.env.EXIS_TRUST_PROXY === 'true';
20
50
  const rawRemote = raw.socket?.remoteAddress ?? '127.0.0.1';
21
51
  const remoteAddress = normalizeIp(rawRemote);
22
- if (!isTrusted) {
52
+ if (!isProxyTrusted(trustProxy)) {
23
53
  return { ips: [], ip: remoteAddress };
24
54
  }
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());
55
+ const hops = typeof trustProxy === 'number' && trustProxy > 0 ? trustProxy : Infinity;
56
+ if (hops === Infinity) {
57
+ const h = raw.headers;
58
+ const direct = firstHeader(h['cf-connecting-ip']) ||
59
+ firstHeader(h['true-client-ip']) ||
60
+ firstHeader(h['x-real-ip']) ||
61
+ firstHeader(h['x-client-ip']);
62
+ if (direct) {
63
+ const ip = normalizeIp(direct);
33
64
  return { ips: [ip], ip };
34
65
  }
35
66
  }
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
61
67
  const xForwardedFor = raw.headers['x-forwarded-for'];
62
- let ips = [];
63
- if (xForwardedFor) {
64
- const rawVal = Array.isArray(xForwardedFor)
65
- ? xForwardedFor.join(',')
66
- : xForwardedFor;
67
- ips = rawVal.split(',').map((item) => normalizeIp(item.trim()));
68
+ if (!xForwardedFor)
69
+ return { ips: [], ip: remoteAddress };
70
+ const rawVal = Array.isArray(xForwardedFor)
71
+ ? xForwardedFor.join(',')
72
+ : xForwardedFor;
73
+ const forwarded = [];
74
+ for (const part of rawVal.split(',')) {
75
+ const t = part.trim();
76
+ if (t !== '')
77
+ forwarded.push(normalizeIp(t));
68
78
  }
69
- let trustedIps = ips;
70
- if (typeof trustProxy === 'number' && trustProxy > 0) {
71
- trustedIps = ips.slice(-(trustProxy + 1));
79
+ if (forwarded.length === 0)
80
+ return { ips: [], ip: remoteAddress };
81
+ if (hops === Infinity) {
82
+ return { ips: forwarded, ip: forwarded[0] };
72
83
  }
73
- const ip = trustedIps.length > 0 ? trustedIps[0] : remoteAddress;
74
- return { ips: trustedIps, ip };
84
+ // Full chain as seen from the server: [...forwarded, socketPeer].
85
+ // Trusting N hops means the client sits at index (length - 1 - N).
86
+ const chainLen = forwarded.length + 1;
87
+ const clientIdx = Math.max(0, chainLen - 1 - hops);
88
+ const ips = forwarded.slice(clientIdx);
89
+ return { ips, ip: forwarded[clientIdx] };
75
90
  }
76
91
  function resolveProtocol(raw, trustProxy) {
77
- const isTrusted = Boolean(trustProxy) ||
78
- process.env.TRUST_PROXY === 'true' ||
79
- process.env.EXIS_TRUST_PROXY === 'true';
92
+ const isTrusted = isProxyTrusted(trustProxy);
80
93
  const connection = raw.socket;
81
94
  const isTls = connection?.encrypted || false;
82
95
  let protocol = isTls ? 'https' : 'http';
@@ -103,9 +116,7 @@ function resolveProtocol(raw, trustProxy) {
103
116
  return protocol;
104
117
  }
105
118
  function resolveHostname(raw, trustProxy) {
106
- const isTrusted = Boolean(trustProxy) ||
107
- process.env.TRUST_PROXY === 'true' ||
108
- process.env.EXIS_TRUST_PROXY === 'true';
119
+ const isTrusted = isProxyTrusted(trustProxy);
109
120
  let host = raw.headers['x-forwarded-host'];
110
121
  if (!host || !isTrusted) {
111
122
  host = raw.headers.host || '';
@@ -1 +1 @@
1
- {"version":3,"file":"ip.js","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ip.js","sourceRoot":"","sources":["../../../src/server/helpers/ip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function stripPrototype<T>(value: T): T;
2
+ export declare function secureJsonParse<T = unknown>(text: string): T;
3
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/json.ts"],"names":[],"mappings":"AA2BA,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAG7C;AAED,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAM5D"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // JSON body parsing with prototype-pollution protection.
3
+ //
4
+ // V8's JSON.parse is ~7x faster than round-tripping through the native
5
+ // binding (string -> serde Value -> JS object). JSON.parse never pollutes a
6
+ // prototype by itself: "__proto__" becomes an own property. The danger is a
7
+ // later merge (Object.assign, spread into defaults, deep merge) copying that
8
+ // key, so we drop "__proto__" and "constructor" keys the same way the native
9
+ // parser did. The full walk only runs when the raw text could contain either
10
+ // key; a \u escape could spell one out, so it also triggers the walk.
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.stripPrototype = stripPrototype;
13
+ exports.secureJsonParse = secureJsonParse;
14
+ const SUSPECT = /__proto__|constructor|\\u/;
15
+ function strip(value) {
16
+ if (value === null || typeof value !== 'object')
17
+ return;
18
+ if (Array.isArray(value)) {
19
+ for (const item of value)
20
+ strip(item);
21
+ return;
22
+ }
23
+ if (Object.prototype.hasOwnProperty.call(value, '__proto__')) {
24
+ delete value.__proto__;
25
+ }
26
+ if (Object.prototype.hasOwnProperty.call(value, 'constructor')) {
27
+ delete value.constructor;
28
+ }
29
+ for (const k in value)
30
+ strip(value[k]);
31
+ }
32
+ function stripPrototype(value) {
33
+ strip(value);
34
+ return value;
35
+ }
36
+ function secureJsonParse(text) {
37
+ const value = JSON.parse(text);
38
+ if (value !== null && typeof value === 'object' && SUSPECT.test(text)) {
39
+ strip(value);
40
+ }
41
+ return value;
42
+ }
43
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/server/helpers/json.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,sEAAsE;;AAmBtE,wCAGC;AAED,0CAMC;AA5BD,MAAM,OAAO,GAAG,2BAA2B,CAAA;AAE3C,SAAS,KAAK,CAAC,KAAU;IACvB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAM;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC,SAAS,CAAA;IACxB,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC,WAAW,CAAA;IAC1B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,SAAgB,cAAc,CAAI,KAAQ;IACxC,KAAK,CAAC,KAAK,CAAC,CAAA;IACZ,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,eAAe,CAAc,IAAY;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,KAAK,CAAC,KAAK,CAAC,CAAA;IACd,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function safeUploadName(fieldname: string, filename: string): string;
2
+ export declare function safeUploadPath(destDir: string, fieldname: string, filename: string): string;
3
+ export declare const DEFAULT_UPLOAD_LIMITS: {
4
+ files: number;
5
+ fields: number;
6
+ parts: number;
7
+ fieldSize: number;
8
+ };
9
+ //# sourceMappingURL=upload-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-name.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/upload-name.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAGD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR;AAGD,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAA"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_UPLOAD_LIMITS = void 0;
7
+ exports.safeUploadName = safeUploadName;
8
+ exports.safeUploadPath = safeUploadPath;
9
+ const node_crypto_1 = require("node:crypto");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ // The multipart field name and filename are client-controlled. Neither may
12
+ // reach the filesystem as-is: "../../x" in a field name used to escape the
13
+ // upload directory via path.join. Only a short alnum token of each survives,
14
+ // and the random part is a UUID instead of guessable Date.now()/Math.random().
15
+ function safeUploadName(fieldname, filename) {
16
+ const field = String(fieldname || 'file')
17
+ .replace(/[^A-Za-z0-9_-]/g, '_')
18
+ .slice(0, 64) || 'file';
19
+ const rawExt = node_path_1.default.extname(String(filename || '')).toLowerCase();
20
+ const ext = /^\.[a-z0-9]{1,16}$/.test(rawExt) ? rawExt : '';
21
+ return `${field}-${(0, node_crypto_1.randomUUID)()}${ext}`;
22
+ }
23
+ // Joins and verifies the result stays inside destDir
24
+ function safeUploadPath(destDir, fieldname, filename) {
25
+ const root = node_path_1.default.resolve(destDir);
26
+ const dest = node_path_1.default.resolve(root, safeUploadName(fieldname, filename));
27
+ if (node_path_1.default.dirname(dest) !== root) {
28
+ throw new Error('Refusing to write upload outside destination directory');
29
+ }
30
+ return dest;
31
+ }
32
+ // Applied when a route configures no limits of its own
33
+ exports.DEFAULT_UPLOAD_LIMITS = {
34
+ files: 10,
35
+ fields: 100,
36
+ parts: 200,
37
+ fieldSize: 1024 * 1024,
38
+ };
39
+ //# sourceMappingURL=upload-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-name.js","sourceRoot":"","sources":["../../../src/server/helpers/upload-name.ts"],"names":[],"mappings":";;;;;;AAOA,wCAQC;AAGD,wCAWC;AA7BD,6CAAwC;AACxC,0DAA4B;AAE5B,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAC/E,SAAgB,cAAc,CAAC,SAAiB,EAAE,QAAgB;IAChE,MAAM,KAAK,GACT,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;SACxB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAA;IAC3B,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACjE,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3D,OAAO,GAAG,KAAK,IAAI,IAAA,wBAAU,GAAE,GAAG,GAAG,EAAE,CAAA;AACzC,CAAC;AAED,qDAAqD;AACrD,SAAgB,cAAc,CAC5B,OAAe,EACf,SAAiB,EACjB,QAAgB;IAEhB,MAAM,IAAI,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IACpE,IAAI,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,uDAAuD;AAC1C,QAAA,qBAAqB,GAAG;IACnC,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,IAAI,GAAG,IAAI;CACvB,CAAA"}
@@ -7,14 +7,7 @@ export declare class RequestHandler {
7
7
  private app;
8
8
  private _compiledPipeline?;
9
9
  static activeRequests: number;
10
- private _reqPool;
11
- private _resPool;
12
- private static readonly MAX_POOL_SIZE;
13
10
  constructor(app: App<any>);
14
- private _acquireReq;
15
- private _acquireRes;
16
- private _releaseReq;
17
- private _releaseRes;
18
11
  getCompiledPipeline(): Handler[];
19
12
  inject(options: {
20
13
  method?: string;
@@ -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;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"}
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;IAIb,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAc,cAAc,SAAI;gBAEZ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAE1B,mBAAmB,IAAI,OAAO,EAAE;IAsB1B,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;YAyDtD,gBAAgB;YAuChB,iBAAiB;CAuChC"}
@@ -49,37 +49,6 @@ const noop = () => {
49
49
  class RequestHandler {
50
50
  constructor(app) {
51
51
  this.app = app;
52
- // ─── Object Pools ───────────────────────────────────────────────────────────
53
- // Recycle ExisRequest and ExisResponse objects instead of allocating new ones
54
- // per request. This dramatically reduces V8 GC pressure under high load.
55
- this._reqPool = [];
56
- this._resPool = [];
57
- }
58
- _acquireReq(rawReq, res, trustProxy, bodyLimit) {
59
- const pooled = this._reqPool.pop();
60
- if (pooled) {
61
- return pooled.init(rawReq, res, trustProxy, bodyLimit);
62
- }
63
- return new request_1.ExisRequest(rawReq, res, trustProxy, bodyLimit);
64
- }
65
- _acquireRes(rawRes) {
66
- const pooled = this._resPool.pop();
67
- if (pooled) {
68
- return pooled.init(rawRes);
69
- }
70
- return new response_1.ExisResponse(rawRes);
71
- }
72
- _releaseReq(req) {
73
- req.cleanup();
74
- if (this._reqPool.length < RequestHandler.MAX_POOL_SIZE) {
75
- this._reqPool.push(req);
76
- }
77
- }
78
- _releaseRes(res) {
79
- res.req = undefined;
80
- if (this._resPool.length < RequestHandler.MAX_POOL_SIZE) {
81
- this._resPool.push(res);
82
- }
83
52
  }
84
53
  getCompiledPipeline() {
85
54
  if (this._compiledPipeline)
@@ -87,8 +56,12 @@ class RequestHandler {
87
56
  this.app.applyBuiltins();
88
57
  if (this.app.globalMiddleware.length === 0) {
89
58
  this._compiledPipeline = [
90
- (req, res) => this.app.getRouter().handle(req, res, () => {
91
- (0, middleware_1.notFound)(req, res, noop);
59
+ (req, res, next) => this.app.getRouter().handle(req, res, (err) => {
60
+ // Route errors must reach the error handlers, not become a 404
61
+ if (err)
62
+ next(err);
63
+ else
64
+ (0, middleware_1.notFound)(req, res, noop);
92
65
  }),
93
66
  ];
94
67
  }
@@ -209,31 +182,32 @@ class RequestHandler {
209
182
  }
210
183
  handle(rawReq, rawRes) {
211
184
  RequestHandler.activeRequests++;
212
- const res = this._acquireRes(rawRes);
213
- const req = this._acquireReq(rawReq, res, this.app.options.trustProxy, this.app.options.bodyLimit);
185
+ // Fresh objects per request. Pooling them is unsafe: a handler that is
186
+ // still awaiting after the client disconnects would observe the next
187
+ // request's data once the object is recycled. Short-lived objects are
188
+ // cheap for V8's young generation, so pooling buys nothing measurable.
189
+ const res = new response_1.ExisResponse(rawRes);
190
+ const req = new request_1.ExisRequest(rawReq, res, this.app.options.trustProxy, this.app.options.bodyLimit);
214
191
  res.req = req;
215
192
  res.etagEnabled = this.app.options.etag === true;
216
193
  req.log = this.app.log;
217
- // Recycle objects back to pool and decrement active request counter when the response is fully done
194
+ // Fired by res.end()'s completion callback, or by 'close' when the
195
+ // client disconnects before the response finished.
218
196
  let isDone = false;
219
197
  const onDone = () => {
220
198
  if (isDone)
221
199
  return;
222
200
  isDone = true;
223
- if (RequestHandler.activeRequests > 0) {
201
+ if (RequestHandler.activeRequests > 0)
224
202
  RequestHandler.activeRequests--;
225
- }
226
- this._releaseReq(req);
227
- this._releaseRes(res);
228
203
  };
229
204
  res._onDone = onDone;
230
- if (typeof rawRes.once === 'function') {
231
- rawRes.once('close', onDone);
232
- }
233
- else if (typeof rawRes.on === 'function') {
205
+ // Covers clients that disconnect before res.end(); 'close' fires at most
206
+ // once, so a plain listener avoids the once() wrapper allocation
207
+ if (typeof rawRes.on === 'function')
234
208
  rawRes.on('close', onDone);
235
- }
236
209
  const pipeline = this._compiledPipeline || this.getCompiledPipeline();
210
+ (0, middleware_1.assignRequestId)(req, res);
237
211
  this._executeWithContext(req, res, () => {
238
212
  if (this.app.hooks.request.length === 0 &&
239
213
  this.app.hooks.response.length === 0) {
@@ -310,5 +284,4 @@ class RequestHandler {
310
284
  }
311
285
  exports.RequestHandler = RequestHandler;
312
286
  RequestHandler.activeRequests = 0;
313
- RequestHandler.MAX_POOL_SIZE = 2048;
314
287
  //# sourceMappingURL=request-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/server/request-handler.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,8 @@ export declare class ExisRequest<TBody = unknown, TQuery = Record<string, string
23
23
  private _abortController?;
24
24
  get signal(): AbortSignal;
25
25
  set signal(val: AbortSignal);
26
- _diCache: Map<any, any>;
26
+ private _diCacheMap?;
27
+ get _diCache(): Map<any, any>;
27
28
  private _urlStr;
28
29
  private _qIdx;
29
30
  private _path?;
@@ -34,7 +35,7 @@ export declare class ExisRequest<TBody = unknown, TQuery = Record<string, string
34
35
  private _protocol?;
35
36
  private _hostname?;
36
37
  private _method?;
37
- private _onClose;
38
+ private _onClose?;
38
39
  cleanup(): void;
39
40
  constructor(raw: IncomingMessage, res: ExisResponse, trustProxy?: boolean | number, bodyLimit?: number);
40
41
  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":"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"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExisRequest = void 0;
4
4
  const errors_1 = require("../error/errors");
5
- const rs_1 = require("@exisjs/rs");
5
+ const json_1 = require("./helpers/json");
6
+ const cookie_1 = require("./helpers/cookie");
6
7
  const helpers_1 = require("./helpers");
7
8
  // eslint-disable-next-line @typescript-eslint/no-require-imports
8
9
  const accepts = require('accepts');
@@ -21,6 +22,16 @@ class ExisRequest {
21
22
  if (!this._abortController) {
22
23
  this._abortController = new AbortController();
23
24
  this._signal = this._abortController.signal;
25
+ if (!this._onClose) {
26
+ this._onClose = () => {
27
+ if (!this.res.raw.writableEnded && !this.res.headersSent) {
28
+ if (this._abortController &&
29
+ !this._abortController.signal.aborted) {
30
+ this._abortController.abort();
31
+ }
32
+ }
33
+ };
34
+ }
24
35
  if (typeof this.raw?.once === 'function') {
25
36
  this.raw.once('close', this._onClose);
26
37
  }
@@ -33,8 +44,11 @@ class ExisRequest {
33
44
  set signal(val) {
34
45
  this._signal = val;
35
46
  }
47
+ get _diCache() {
48
+ return this._diCacheMap || (this._diCacheMap = new Map());
49
+ }
36
50
  cleanup() {
37
- if (this._abortController) {
51
+ if (this._abortController && this._onClose) {
38
52
  if (typeof this.raw?.removeListener === 'function') {
39
53
  this.raw.removeListener('close', this._onClose);
40
54
  }
@@ -44,7 +58,7 @@ class ExisRequest {
44
58
  this._abortController = undefined;
45
59
  this._signal = undefined;
46
60
  }
47
- this._diCache.clear();
61
+ this._diCacheMap?.clear();
48
62
  this.user = undefined;
49
63
  this.session = undefined;
50
64
  this.body = undefined;
@@ -70,14 +84,6 @@ class ExisRequest {
70
84
  this.trustProxy = trustProxy;
71
85
  this.bodyLimit = bodyLimit;
72
86
  this.files = [];
73
- this._diCache = new Map();
74
- this._onClose = () => {
75
- if (!this.res.raw.writableEnded && !this.res.headersSent) {
76
- if (this._abortController && !this._abortController.signal.aborted) {
77
- this._abortController.abort();
78
- }
79
- }
80
- };
81
87
  this._urlStr = raw.url ?? '/';
82
88
  this._qIdx = this._urlStr.indexOf('?');
83
89
  }
@@ -97,7 +103,7 @@ class ExisRequest {
97
103
  this.session = undefined;
98
104
  this.requestId = undefined;
99
105
  this.tenantId = undefined;
100
- this._diCache.clear();
106
+ this._diCacheMap?.clear();
101
107
  this._urlStr = raw.url ?? '/';
102
108
  this._qIdx = this._urlStr.indexOf('?');
103
109
  this._path = undefined;
@@ -148,7 +154,7 @@ class ExisRequest {
148
154
  if (this._cookies !== undefined)
149
155
  return this._cookies;
150
156
  const cookieHeader = this.raw.headers.cookie;
151
- const parsed = cookieHeader ? (0, rs_1.parseCookies)(cookieHeader) : {};
157
+ const parsed = cookieHeader ? (0, cookie_1.parseCookies)(cookieHeader) : {};
152
158
  this._cookies = parsed;
153
159
  return parsed;
154
160
  }
@@ -255,7 +261,7 @@ class ExisRequest {
255
261
  return this.body;
256
262
  }
257
263
  try {
258
- this.body = (0, rs_1.parseJsonBody)(this.rawBody);
264
+ this.body = (0, json_1.secureJsonParse)(this.rawBody);
259
265
  return this.body;
260
266
  }
261
267
  catch {
@@ -268,7 +274,7 @@ class ExisRequest {
268
274
  if (!this.rawBody)
269
275
  await this.text();
270
276
  const fields = qs.parse(this.rawBody || '');
271
- this.body = (0, rs_1.stripPrototype)(fields);
277
+ this.body = (0, json_1.stripPrototype)(fields);
272
278
  return {
273
279
  fields: this.body,
274
280
  files: {},
@@ -330,7 +336,7 @@ class ExisRequest {
330
336
  if (!contentType.includes('boundary=')) {
331
337
  throw errors_1.HttpError.badRequest('Missing multipart boundary.');
332
338
  }
333
- const res = await (0, helpers_1.streamMultipartUpload)(this.raw, destDir);
339
+ const res = await (0, helpers_1.streamMultipartUpload)(this.raw, destDir, this.bodyLimit);
334
340
  this.body = res.fields;
335
341
  return res;
336
342
  }