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
@@ -37,7 +37,8 @@ exports.parseRawBody = parseRawBody;
37
37
  exports.parseMultipartFormData = parseMultipartFormData;
38
38
  exports.streamMultipartUpload = streamMultipartUpload;
39
39
  const errors_1 = require("../../error/errors");
40
- const rs_1 = require("@exisjs/rs");
40
+ const json_1 = require("./json");
41
+ const upload_name_1 = require("./upload-name");
41
42
  // eslint-disable-next-line @typescript-eslint/no-require-imports
42
43
  const busboy = require('busboy');
43
44
  async function parseRawBody(raw, bodyLimit, contentType, method) {
@@ -116,8 +117,30 @@ function parseMultipartFormData(raw, bodyLimit, filesContainer) {
116
117
  try {
117
118
  const bb = busboy({
118
119
  headers: raw.headers,
119
- limits: { fileSize: bodyLimit },
120
+ limits: { ...upload_name_1.DEFAULT_UPLOAD_LIMITS, fileSize: bodyLimit },
120
121
  });
122
+ // Files are buffered in memory, so cap the combined size as well as
123
+ // each file; otherwise N files could each use the full bodyLimit.
124
+ let totalSize = 0;
125
+ let failed = false;
126
+ const fail = (err) => {
127
+ if (failed)
128
+ return;
129
+ failed = true;
130
+ cleanup();
131
+ try {
132
+ raw.unpipe?.(bb);
133
+ raw.resume?.();
134
+ }
135
+ catch {
136
+ /* noop */
137
+ }
138
+ reject(err);
139
+ };
140
+ const tooLarge = (what) => fail(errors_1.HttpError.payloadTooLarge(`${what} exceeds the limit of ${bodyLimit} bytes. Configure 'bodyLimit' in 'exis.config.ts' to allow larger payloads.`));
141
+ bb.on('filesLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many files in multipart body')));
142
+ bb.on('fieldsLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many fields in multipart body')));
143
+ bb.on('partsLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many parts in multipart body')));
121
144
  const cleanup = () => {
122
145
  raw.removeListener('close', onRawClose);
123
146
  raw.removeListener('aborted', onRawClose);
@@ -144,11 +167,21 @@ function parseMultipartFormData(raw, bodyLimit, filesContainer) {
144
167
  bb.on('file', (name, fileStream, info) => {
145
168
  const chunks = [];
146
169
  let size = 0;
170
+ fileStream.on('limit', () => tooLarge('Uploaded file'));
147
171
  fileStream.on('data', (data) => {
148
- chunks.push(data);
172
+ if (failed)
173
+ return;
149
174
  size += data.length;
175
+ totalSize += data.length;
176
+ if (totalSize > bodyLimit) {
177
+ tooLarge('Multipart body');
178
+ return;
179
+ }
180
+ chunks.push(data);
150
181
  });
151
182
  fileStream.on('end', () => {
183
+ if (failed)
184
+ return;
152
185
  const data = Buffer.concat(chunks);
153
186
  const filename = info.filename || 'unknown';
154
187
  filesContainer.push({
@@ -159,12 +192,8 @@ function parseMultipartFormData(raw, bodyLimit, filesContainer) {
159
192
  size,
160
193
  saveToDisk: async (destDir) => {
161
194
  const fs = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
162
- const path = await Promise.resolve().then(() => __importStar(require('node:path')));
163
195
  await fs.mkdir(destDir, { recursive: true });
164
- const ext = path.extname(filename);
165
- const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9);
166
- const finalName = `${name}-${uniqueSuffix}${ext}`;
167
- const destPath = path.join(destDir, finalName);
196
+ const destPath = (0, upload_name_1.safeUploadPath)(destDir, name, filename);
168
197
  await fs.writeFile(destPath, data);
169
198
  return destPath;
170
199
  },
@@ -172,16 +201,15 @@ function parseMultipartFormData(raw, bodyLimit, filesContainer) {
172
201
  });
173
202
  });
174
203
  bb.on('finish', () => {
204
+ if (failed)
205
+ return;
175
206
  cleanup();
176
207
  resolve({
177
- fields,
208
+ fields: (0, json_1.stripPrototype)(fields),
178
209
  files: filesContainer,
179
210
  });
180
211
  });
181
- bb.on('error', (err) => {
182
- cleanup();
183
- reject(err);
184
- });
212
+ bb.on('error', (err) => fail(err));
185
213
  raw.pipe(bb);
186
214
  }
187
215
  catch (err) {
@@ -189,31 +217,78 @@ function parseMultipartFormData(raw, bodyLimit, filesContainer) {
189
217
  }
190
218
  });
191
219
  }
192
- async function streamMultipartUpload(raw, destDir) {
220
+ async function streamMultipartUpload(raw, destDir, bodyLimit = 10 * 1024 * 1024) {
193
221
  const fs = await Promise.resolve().then(() => __importStar(require('node:fs')));
194
- const path = await Promise.resolve().then(() => __importStar(require('node:path')));
195
222
  await fs.promises.mkdir(destDir, { recursive: true });
196
223
  return new Promise((resolve, reject) => {
197
224
  const fields = {};
198
225
  const streamedFiles = [];
226
+ // Resolve only after every file is flushed to disk, not on busboy finish
227
+ const pendingWrites = [];
228
+ const written = [];
229
+ let totalSize = 0;
230
+ let failed = false;
231
+ const fail = (err) => {
232
+ if (failed)
233
+ return;
234
+ failed = true;
235
+ try {
236
+ raw.unpipe?.(bb);
237
+ raw.resume?.();
238
+ }
239
+ catch {
240
+ /* noop */
241
+ }
242
+ // Remove partial files so a rejected upload leaves nothing behind
243
+ for (const p of written)
244
+ fs.promises.unlink(p).catch(() => undefined);
245
+ reject(err);
246
+ };
247
+ const tooLarge = (what) => fail(errors_1.HttpError.payloadTooLarge(`${what} exceeds the limit of ${bodyLimit} bytes. Configure 'bodyLimit' in 'exis.config.ts' to allow larger uploads.`));
248
+ let bb;
199
249
  try {
200
- const bb = busboy({ headers: raw.headers });
201
- bb.on('field', (name, val) => {
202
- fields[name] = val;
250
+ bb = busboy({
251
+ headers: raw.headers,
252
+ limits: { ...upload_name_1.DEFAULT_UPLOAD_LIMITS, fileSize: bodyLimit },
203
253
  });
204
- bb.on('file', (name, fileStream, info) => {
205
- const filename = info.filename || 'unknown';
206
- const ext = path.extname(filename);
207
- const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9);
208
- const finalName = `${name}-${uniqueSuffix}${ext}`;
209
- const destPath = path.join(destDir, finalName);
210
- const writeStream = fs.createWriteStream(destPath);
211
- let size = 0;
212
- fileStream.on('data', (data) => {
213
- size += data.length;
214
- });
215
- fileStream.pipe(writeStream);
216
- fileStream.on('end', () => {
254
+ }
255
+ catch (err) {
256
+ reject(errors_1.HttpError.badRequest(err.message || 'Failed to stream multipart data'));
257
+ return;
258
+ }
259
+ bb.on('field', (name, val) => {
260
+ fields[name] = val;
261
+ });
262
+ bb.on('filesLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many files in multipart body')));
263
+ bb.on('fieldsLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many fields in multipart body')));
264
+ bb.on('partsLimit', () => fail(errors_1.HttpError.payloadTooLarge('Too many parts in multipart body')));
265
+ bb.on('file', (name, fileStream, info) => {
266
+ if (failed) {
267
+ fileStream.resume();
268
+ return;
269
+ }
270
+ const filename = info.filename || 'unknown';
271
+ let destPath;
272
+ try {
273
+ destPath = (0, upload_name_1.safeUploadPath)(destDir, name, filename);
274
+ }
275
+ catch (err) {
276
+ fileStream.resume();
277
+ fail(err);
278
+ return;
279
+ }
280
+ written.push(destPath);
281
+ const writeStream = fs.createWriteStream(destPath);
282
+ let size = 0;
283
+ fileStream.on('limit', () => tooLarge('Uploaded file'));
284
+ fileStream.on('data', (data) => {
285
+ size += data.length;
286
+ totalSize += data.length;
287
+ if (totalSize > bodyLimit)
288
+ tooLarge('Multipart body');
289
+ });
290
+ pendingWrites.push(new Promise((done, failWrite) => {
291
+ writeStream.on('finish', () => {
217
292
  streamedFiles.push({
218
293
  fieldname: name,
219
294
  filename,
@@ -221,25 +296,28 @@ async function streamMultipartUpload(raw, destDir) {
221
296
  destPath,
222
297
  size,
223
298
  });
299
+ done();
224
300
  });
225
- });
226
- bb.on('finish', () => {
227
- resolve({
228
- fields: (0, rs_1.stripPrototype)(fields),
229
- files: streamedFiles,
230
- });
231
- });
232
- bb.on('error', reject);
233
- if (typeof raw.pipe === 'function') {
234
- raw.pipe(bb);
235
- }
236
- else {
237
- raw.on('data', (chunk) => bb.write(chunk));
238
- raw.on('end', () => bb.end());
239
- }
301
+ writeStream.on('error', failWrite);
302
+ fileStream.on('error', failWrite);
303
+ }));
304
+ fileStream.pipe(writeStream);
305
+ });
306
+ bb.on('finish', () => {
307
+ Promise.all(pendingWrites).then(() => {
308
+ if (failed)
309
+ return;
310
+ resolve({ fields: (0, json_1.stripPrototype)(fields), files: streamedFiles });
311
+ }, (err) => fail(err));
312
+ });
313
+ bb.on('error', (err) => fail(err));
314
+ if (typeof raw.pipe === 'function') {
315
+ raw.pipe(bb);
240
316
  }
241
- catch (err) {
242
- reject(errors_1.HttpError.badRequest(err.message || 'Failed to stream multipart data'));
317
+ else {
318
+ ;
319
+ raw.on('data', (chunk) => bb.write(chunk));
320
+ raw.on('end', () => bb.end());
243
321
  }
244
322
  });
245
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../../src/server/helpers/body-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../../src/server/helpers/body-parser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import type { CookieOptions } from '../../types';
2
2
  export declare function serializeCookie(name: string, value: string, options?: CookieOptions): string;
3
3
  export declare function serializeClearCookie(name: string, options?: CookieOptions): string;
4
+ /**
5
+ * Parses a Cookie header. The first occurrence of a name wins, values are
6
+ * percent-decoded when needed, and a malformed escape keeps the raw value
7
+ * rather than failing the request.
8
+ */
9
+ export declare function parseCookies(header: string): Record<string, string>;
4
10
  //# sourceMappingURL=cookie.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAqCR;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAQR"}
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAqCR;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAQR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BnE"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serializeCookie = serializeCookie;
4
4
  exports.serializeClearCookie = serializeClearCookie;
5
+ exports.parseCookies = parseCookies;
5
6
  function serializeCookie(name, value, options = {}) {
6
7
  const parts = [
7
8
  `${encodeURIComponent(name)}=${encodeURIComponent(value)}`,
@@ -58,4 +59,38 @@ function serializeClearCookie(name, options = {}) {
58
59
  maxAge: 0,
59
60
  });
60
61
  }
62
+ /**
63
+ * Parses a Cookie header. The first occurrence of a name wins, values are
64
+ * percent-decoded when needed, and a malformed escape keeps the raw value
65
+ * rather than failing the request.
66
+ */
67
+ function parseCookies(header) {
68
+ const out = {};
69
+ let start = 0;
70
+ const len = header.length;
71
+ while (start < len) {
72
+ let end = header.indexOf(';', start);
73
+ if (end === -1)
74
+ end = len;
75
+ const eq = header.indexOf('=', start);
76
+ if (eq !== -1 && eq < end) {
77
+ const key = header.slice(start, eq).trim();
78
+ // "__proto__" would hit the prototype setter instead of a property
79
+ if (key !== '' && key !== '__proto__' && out[key] === undefined) {
80
+ let val = header.slice(eq + 1, end).trim();
81
+ if (val.indexOf('%') !== -1) {
82
+ try {
83
+ val = decodeURIComponent(val);
84
+ }
85
+ catch {
86
+ // keep raw value
87
+ }
88
+ }
89
+ out[key] = val;
90
+ }
91
+ }
92
+ start = end + 1;
93
+ }
94
+ return out;
95
+ }
61
96
  //# sourceMappingURL=cookie.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/server/helpers/cookie.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/server/helpers/cookie.ts"],"names":[],"mappings":";;AAEA,0CAyCC;AAED,oDAWC;AAOD,oCA0BC;AAvFD,SAAgB,eAAe,CAC7B,IAAY,EACZ,KAAa,EACb,UAAyB,EAAE;IAE3B,MAAM,KAAK,GAAa;QACtB,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;KAC3D,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAC3E,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;IACnE,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1D,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAExC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;YAClD,IAAI,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;iBAC9C,IAAI,GAAG,KAAK,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;iBAC7C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QACxC,IAAI,CAAC,KAAK,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;aACtC,IAAI,CAAC,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;aACjD,IAAI,CAAC,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,UAAyB,EAAE;IAE3B,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACnD,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;QAC/B,QAAQ,EAAE,IAAI;QACd,GAAG,IAAI;QACP,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,CAAC;KACV,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAc;IACzC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;IACzB,OAAO,KAAK,GAAG,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACpC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,GAAG,GAAG,GAAG,CAAA;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1C,mEAAmE;YACnE,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChE,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC1C,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;oBAC/B,CAAC;oBAAC,MAAM,CAAC;wBACP,iBAAiB;oBACnB,CAAC;gBACH,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;YAChB,CAAC;QACH,CAAC;QACD,KAAK,GAAG,GAAG,GAAG,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"etag.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,SAAS,cAAoB,EAC7B,IAAI,SAAK,GACR,GAAG,CA+HL;AAuCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAyB9D"}
1
+ {"version":3,"file":"etag.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,SAAS,cAAoB,EAC7B,IAAI,SAAK,GACR,GAAG,CA+HL;AAuCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAyB9D"}
@@ -3,9 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateETag = generateETag;
4
4
  exports.safeSanitize = safeSanitize;
5
5
  exports.nativeStringify = nativeStringify;
6
- const rs_1 = require("@exisjs/rs");
6
+ const node_crypto_1 = require("node:crypto");
7
+ // Weak ETag in the `etag` package format: length in hex plus a truncated
8
+ // base64 SHA-1. SHA-1 is fine here; it only detects content changes.
7
9
  function generateETag(content) {
8
- return (0, rs_1.generateEtag)(content);
10
+ if (content.length === 0)
11
+ return 'W/"0-2jmj7l5rsw0yVb/vlWAYkK/YBwk"';
12
+ const hash = (0, node_crypto_1.createHash)('sha1').update(content).digest('base64').slice(0, 27);
13
+ return `W/"${content.length.toString(16)}-${hash}"`;
9
14
  }
10
15
  function safeSanitize(val, ancestors = new Set(), path = '') {
11
16
  if (val === null || val === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"etag.js","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"etag.js","sourceRoot":"","sources":["../../../src/server/helpers/etag.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export { normalizeIp, resolveIps, resolveProtocol, resolveHostname } from './ip';
2
2
  export { parseRawBody, parseMultipartFormData, streamMultipartUpload, } from './body-parser';
3
- export { serializeCookie, serializeClearCookie } from './cookie';
3
+ export { serializeCookie, serializeClearCookie, parseCookies } from './cookie';
4
4
  export { generateETag, nativeStringify } from './etag';
5
5
  export { streamToResponse } from './stream';
6
+ export { secureJsonParse, stripPrototype } from './json';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAEhF,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAEhF,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.streamToResponse = exports.nativeStringify = exports.generateETag = exports.serializeClearCookie = exports.serializeCookie = exports.streamMultipartUpload = exports.parseMultipartFormData = exports.parseRawBody = exports.resolveHostname = exports.resolveProtocol = exports.resolveIps = exports.normalizeIp = void 0;
3
+ exports.stripPrototype = exports.secureJsonParse = exports.streamToResponse = exports.nativeStringify = exports.generateETag = exports.parseCookies = exports.serializeClearCookie = exports.serializeCookie = exports.streamMultipartUpload = exports.parseMultipartFormData = exports.parseRawBody = exports.resolveHostname = exports.resolveProtocol = exports.resolveIps = exports.normalizeIp = void 0;
4
4
  var ip_1 = require("./ip");
5
5
  Object.defineProperty(exports, "normalizeIp", { enumerable: true, get: function () { return ip_1.normalizeIp; } });
6
6
  Object.defineProperty(exports, "resolveIps", { enumerable: true, get: function () { return ip_1.resolveIps; } });
@@ -13,9 +13,13 @@ Object.defineProperty(exports, "streamMultipartUpload", { enumerable: true, get:
13
13
  var cookie_1 = require("./cookie");
14
14
  Object.defineProperty(exports, "serializeCookie", { enumerable: true, get: function () { return cookie_1.serializeCookie; } });
15
15
  Object.defineProperty(exports, "serializeClearCookie", { enumerable: true, get: function () { return cookie_1.serializeClearCookie; } });
16
+ Object.defineProperty(exports, "parseCookies", { enumerable: true, get: function () { return cookie_1.parseCookies; } });
16
17
  var etag_1 = require("./etag");
17
18
  Object.defineProperty(exports, "generateETag", { enumerable: true, get: function () { return etag_1.generateETag; } });
18
19
  Object.defineProperty(exports, "nativeStringify", { enumerable: true, get: function () { return etag_1.nativeStringify; } });
19
20
  var stream_1 = require("./stream");
20
21
  Object.defineProperty(exports, "streamToResponse", { enumerable: true, get: function () { return stream_1.streamToResponse; } });
22
+ var json_1 = require("./json");
23
+ Object.defineProperty(exports, "secureJsonParse", { enumerable: true, get: function () { return json_1.secureJsonParse; } });
24
+ Object.defineProperty(exports, "stripPrototype", { enumerable: true, get: function () { return json_1.stripPrototype; } });
21
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/helpers/index.ts"],"names":[],"mappings":";;;AAAA,2BAAgF;AAAvE,iGAAA,WAAW,OAAA;AAAE,gGAAA,UAAU,OAAA;AAAE,qGAAA,eAAe,OAAA;AAAE,qGAAA,eAAe,OAAA;AAElE,6CAIsB;AAHpB,2GAAA,YAAY,OAAA;AACZ,qHAAA,sBAAsB,OAAA;AACtB,oHAAA,qBAAqB,OAAA;AAGvB,mCAAgE;AAAvD,yGAAA,eAAe,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAE9C,+BAAsD;AAA7C,oGAAA,YAAY,OAAA;AAAE,uGAAA,eAAe,OAAA;AAEtC,mCAA2C;AAAlC,0GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/helpers/index.ts"],"names":[],"mappings":";;;AAAA,2BAAgF;AAAvE,iGAAA,WAAW,OAAA;AAAE,gGAAA,UAAU,OAAA;AAAE,qGAAA,eAAe,OAAA;AAAE,qGAAA,eAAe,OAAA;AAElE,6CAIsB;AAHpB,2GAAA,YAAY,OAAA;AACZ,qHAAA,sBAAsB,OAAA;AACtB,oHAAA,qBAAqB,OAAA;AAGvB,mCAA8E;AAArE,yGAAA,eAAe,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,sGAAA,YAAY,OAAA;AAE5D,+BAAsD;AAA7C,oGAAA,YAAY,OAAA;AAAE,uGAAA,eAAe,OAAA;AAEtC,mCAA2C;AAAlC,0GAAA,gBAAgB,OAAA;AAEzB,+BAAwD;AAA/C,uGAAA,eAAe,OAAA;AAAE,sGAAA,cAAc,OAAA"}
@@ -1,5 +1,18 @@
1
1
  import type { IncomingMessage } from 'node:http';
2
2
  export declare function normalizeIp(ip: string): string;
3
+ /**
4
+ * Resolves the client IP.
5
+ *
6
+ * - `trustProxy: false` -> socket address only.
7
+ * - `trustProxy: true` -> trust every hop: CDN headers (CF-Connecting-IP,
8
+ * True-Client-IP, X-Real-IP, X-Client-IP), else the left-most
9
+ * X-Forwarded-For entry. Only safe when every request passes through a
10
+ * proxy that overwrites these headers.
11
+ * - `trustProxy: N` -> trust the N closest hops, counting the socket peer
12
+ * (Express semantics). The client is the entry N steps back from the
13
+ * socket, so values a client prepends to X-Forwarded-For are ignored.
14
+ * CDN headers are not consulted, since any client can send them.
15
+ */
3
16
  export declare function resolveIps(raw: IncomingMessage, trustProxy: boolean | number): {
4
17
  ips: string[];
5
18
  ip: string;
@@ -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,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"}
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;AAwBD;;;;;;;;;;;;GAYG;AACH,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,CA+C/B;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B,MAAM,CA6BR;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAC3B,MAAM,CAaR"}