@nifrajs/core 5.5.1 → 5.6.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 (138) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/dist/assurance.d.ts.map +1 -1
  3. package/dist/assurance.js.map +1 -1
  4. package/dist/evidence.d.ts +2 -0
  5. package/dist/evidence.d.ts.map +1 -1
  6. package/dist/evidence.js +2 -0
  7. package/dist/evidence.js.map +1 -1
  8. package/dist/file-type.d.ts +30 -0
  9. package/dist/file-type.d.ts.map +1 -0
  10. package/dist/file-type.js +118 -0
  11. package/dist/file-type.js.map +1 -0
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/internal/route-program.d.ts +11 -0
  17. package/dist/internal/route-program.d.ts.map +1 -1
  18. package/dist/internal/route-program.js +133 -85
  19. package/dist/internal/route-program.js.map +1 -1
  20. package/dist/reflection.d.ts +14 -1
  21. package/dist/reflection.d.ts.map +1 -1
  22. package/dist/reflection.js +34 -7
  23. package/dist/reflection.js.map +1 -1
  24. package/dist/response-observer.d.ts +1 -0
  25. package/dist/response-observer.d.ts.map +1 -1
  26. package/dist/response-observer.js +1 -0
  27. package/dist/response-observer.js.map +1 -1
  28. package/dist/server/bare-error-lane.d.ts +4 -1
  29. package/dist/server/bare-error-lane.d.ts.map +1 -1
  30. package/dist/server/bare-error-lane.js +9 -3
  31. package/dist/server/bare-error-lane.js.map +1 -1
  32. package/dist/server/before-handler.d.ts +10 -0
  33. package/dist/server/before-handler.d.ts.map +1 -0
  34. package/dist/server/before-handler.js +12 -0
  35. package/dist/server/before-handler.js.map +1 -0
  36. package/dist/server/body-lane.d.ts.map +1 -1
  37. package/dist/server/body-lane.js +8 -2
  38. package/dist/server/body-lane.js.map +1 -1
  39. package/dist/server/body-parser.d.ts.map +1 -1
  40. package/dist/server/body-parser.js +2 -5
  41. package/dist/server/body-parser.js.map +1 -1
  42. package/dist/server/body.d.ts +24 -8
  43. package/dist/server/body.d.ts.map +1 -1
  44. package/dist/server/body.js +86 -33
  45. package/dist/server/body.js.map +1 -1
  46. package/dist/server/core-copies.js +1 -1
  47. package/dist/server/http.d.ts.map +1 -1
  48. package/dist/server/http.js +6 -17
  49. package/dist/server/http.js.map +1 -1
  50. package/dist/server/multipart.d.ts +3 -0
  51. package/dist/server/multipart.d.ts.map +1 -1
  52. package/dist/server/multipart.js +226 -97
  53. package/dist/server/multipart.js.map +1 -1
  54. package/dist/server/proto-guard.d.ts.map +1 -1
  55. package/dist/server/proto-guard.js +39 -4
  56. package/dist/server/proto-guard.js.map +1 -1
  57. package/dist/server/query.d.ts.map +1 -1
  58. package/dist/server/query.js +8 -14
  59. package/dist/server/query.js.map +1 -1
  60. package/dist/server/repeated-prefix.d.ts +17 -0
  61. package/dist/server/repeated-prefix.d.ts.map +1 -0
  62. package/dist/server/repeated-prefix.js +17 -0
  63. package/dist/server/repeated-prefix.js.map +1 -0
  64. package/dist/server/request-context.d.ts.map +1 -1
  65. package/dist/server/request-context.js +1 -3
  66. package/dist/server/request-context.js.map +1 -1
  67. package/dist/server/respond.d.ts +1 -3
  68. package/dist/server/respond.d.ts.map +1 -1
  69. package/dist/server/respond.js +21 -16
  70. package/dist/server/respond.js.map +1 -1
  71. package/dist/server/response-contract-lane.d.ts +12 -2
  72. package/dist/server/response-contract-lane.d.ts.map +1 -1
  73. package/dist/server/response-contract-lane.js +135 -8
  74. package/dist/server/response-contract-lane.js.map +1 -1
  75. package/dist/server/runtime-core.d.ts +7 -0
  76. package/dist/server/runtime-core.d.ts.map +1 -1
  77. package/dist/server/runtime-core.js +8 -1
  78. package/dist/server/runtime-core.js.map +1 -1
  79. package/dist/server/server-types.d.ts +3 -2
  80. package/dist/server/server-types.d.ts.map +1 -1
  81. package/dist/server/server.d.ts +6 -2
  82. package/dist/server/server.d.ts.map +1 -1
  83. package/dist/server/server.js +239 -78
  84. package/dist/server/server.js.map +1 -1
  85. package/dist/server/sse.d.ts +1 -1
  86. package/dist/server/sse.d.ts.map +1 -1
  87. package/dist/server/sse.js +5 -4
  88. package/dist/server/sse.js.map +1 -1
  89. package/dist/server/webhook.d.ts +1 -1
  90. package/dist/server/webhook.d.ts.map +1 -1
  91. package/dist/server/webhook.js +24 -19
  92. package/dist/server/webhook.js.map +1 -1
  93. package/dist/server/websocket.d.ts +18 -3
  94. package/dist/server/websocket.d.ts.map +1 -1
  95. package/dist/server/websocket.js +45 -5
  96. package/dist/server/websocket.js.map +1 -1
  97. package/dist/server/ws-bun.d.ts.map +1 -1
  98. package/dist/server/ws-bun.js +7 -4
  99. package/dist/server/ws-bun.js.map +1 -1
  100. package/dist/server.d.ts +1 -0
  101. package/dist/server.d.ts.map +1 -1
  102. package/dist/server.js +1 -0
  103. package/dist/server.js.map +1 -1
  104. package/dist/tool-cli.d.ts +64 -0
  105. package/dist/tool-cli.d.ts.map +1 -0
  106. package/dist/tool-cli.js +495 -0
  107. package/dist/tool-cli.js.map +1 -0
  108. package/package.json +11 -1
  109. package/src/assurance.ts +1 -0
  110. package/src/evidence.ts +4 -0
  111. package/src/file-type.ts +130 -0
  112. package/src/index.ts +2 -1
  113. package/src/internal/route-program.ts +261 -93
  114. package/src/reflection.ts +53 -7
  115. package/src/response-observer.ts +6 -0
  116. package/src/server/bare-error-lane.ts +9 -4
  117. package/src/server/before-handler.ts +14 -0
  118. package/src/server/body-lane.ts +19 -9
  119. package/src/server/body-parser.ts +1 -5
  120. package/src/server/body.ts +96 -36
  121. package/src/server/core-copies.ts +1 -1
  122. package/src/server/http.ts +6 -15
  123. package/src/server/multipart.ts +232 -100
  124. package/src/server/proto-guard.ts +39 -4
  125. package/src/server/query.ts +7 -13
  126. package/src/server/repeated-prefix.ts +25 -0
  127. package/src/server/request-context.ts +1 -3
  128. package/src/server/respond.ts +23 -15
  129. package/src/server/response-contract-lane.ts +130 -8
  130. package/src/server/runtime-core.ts +10 -1
  131. package/src/server/server-types.ts +3 -2
  132. package/src/server/server.ts +265 -76
  133. package/src/server/sse.ts +6 -5
  134. package/src/server/webhook.ts +29 -24
  135. package/src/server/websocket.ts +57 -8
  136. package/src/server/ws-bun.ts +7 -3
  137. package/src/server.ts +1 -0
  138. package/src/tool-cli.ts +584 -0
@@ -14,6 +14,8 @@ const MAX_FILE_NAME_LENGTH = 255;
14
14
  const DASH = 45;
15
15
  const CR = 13;
16
16
  const LF = 10;
17
+ const COLON = 58;
18
+ const PERCENT = 37;
17
19
  const QUOTE = 34;
18
20
  const BACKSLASH = 92;
19
21
  const SLASH = 47;
@@ -21,6 +23,21 @@ const SEMICOLON = 59;
21
23
  const SPACE = 32;
22
24
  const TAB = 9;
23
25
  const INVALID = () => plainError(400, "invalid_multipart");
26
+ const ASCII = new TextEncoder();
27
+ // The Fetch standard reads a disposition only in this exact form, which every browser writes.
28
+ const FORM_DATA_NAME = ASCII.encode('form-data; name="');
29
+ const FILE_NAME = ASCII.encode('; filename="');
30
+ const CONTENT_DISPOSITION = ASCII.encode("content-disposition");
31
+ const CONTENT_TYPE = ASCII.encode("content-type");
32
+ // "UTF-8 decode without BOM": a leading BOM is kept as U+FEFF, not dropped.
33
+ const UTF8 = new TextDecoder("utf-8", { ignoreBOM: true });
34
+ // A short ASCII name or value is read code by code: a decoder call costs more than the bytes.
35
+ const SHORT_TEXT = 64;
36
+ // RFC 9110 `tchar`, by byte value.
37
+ const TCHAR = new Uint8Array(128);
38
+ for (const char of "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") {
39
+ TCHAR[char.charCodeAt(0)] = 1;
40
+ }
24
41
  function limitOf(value, fallback, name) {
25
42
  if (value === undefined)
26
43
  return fallback;
@@ -99,10 +116,6 @@ function failureTable(pattern) {
99
116
  }
100
117
  return table;
101
118
  }
102
- /** `end` is the index after the last delimiter, or -1 when there was none. */
103
- function delimiters(bytes, count, empty, end) {
104
- return { count, empty, closed: end !== -1 && bytes[end] === DASH && bytes[end + 1] === DASH };
105
- }
106
119
  /**
107
120
  * Whether the delimiter at `at` closes a part with no content: the blank line ending the part's
108
121
  * headers is followed at once by the CRLF that opens the delimiter. A part whose own content ends
@@ -119,12 +132,10 @@ function closesEmptyPart(bytes, at) {
119
132
  }
120
133
  const overLimits = (count, empty, limits) => count - empty > limits.filled || empty > limits.empty;
121
134
  /** Knuth-Morris-Pratt from `start`: linear in the input whatever the pattern repeats. */
122
- function scanFrom(bytes, pattern, start, counted, countedEmpty, lastEnd, limits) {
135
+ function scanFrom(bytes, pattern, start, at, countedEmpty, limits) {
123
136
  const table = failureTable(pattern);
124
137
  const size = pattern.length;
125
- let count = counted;
126
138
  let empty = countedEmpty;
127
- let end = lastEnd;
128
139
  for (let i = start, k = 0; i < bytes.length; i++) {
129
140
  const byte = bytes[i];
130
141
  while (k > 0 && byte !== pattern[k])
@@ -132,16 +143,19 @@ function scanFrom(bytes, pattern, start, counted, countedEmpty, lastEnd, limits)
132
143
  if (byte === pattern[k])
133
144
  k++;
134
145
  if (k === size) {
135
- if (count > 0 && closesEmptyPart(bytes, i + 1 - size))
146
+ if (at.length > 0 && closesEmptyPart(bytes, i + 1 - size))
136
147
  empty++;
137
- end = i + 1;
138
- if (overLimits(++count, empty, limits))
148
+ at.push(i + 1 - size);
149
+ if (overLimits(at.length, empty, limits))
139
150
  break;
140
151
  k = 0;
141
152
  }
142
153
  }
143
- return delimiters(bytes, count, empty, end);
154
+ return { at, empty };
144
155
  }
156
+ // V8's TypedArray `indexOf` reads one element at a time (~0.6 ms a MiB on Node 26), where Buffer's is
157
+ // native on Node and Bun. Deno's Buffer is a slower polyfill, and Workers have none by default.
158
+ const bufferIndexOf = typeof Deno === "undefined" && typeof Buffer === "function" ? Buffer.prototype.indexOf : undefined;
145
159
  /**
146
160
  * Find the non-overlapping occurrences of `pattern` (which starts with a dash), stopping once the
147
161
  * count passes `limit`. Every `--boundary` is counted wherever it sits, which is at least what any
@@ -154,64 +168,210 @@ function scanFrom(bytes, pattern, start, counted, countedEmpty, lastEnd, limits)
154
168
  function scanDelimiters(bytes, pattern, limits) {
155
169
  const size = pattern.length;
156
170
  const last = bytes.length - size;
157
- let count = 0;
171
+ const at = [];
158
172
  let empty = 0;
159
- let end = -1;
160
173
  let work = 0;
161
174
  let i = 0;
162
175
  while (i <= last) {
163
- i = bytes.indexOf(DASH, i);
176
+ i = bufferIndexOf === undefined ? bytes.indexOf(DASH, i) : bufferIndexOf.call(bytes, DASH, i);
164
177
  if (i === -1 || i > last)
165
178
  break;
166
179
  let k = 1;
167
180
  while (k < size && bytes[i + k] === pattern[k])
168
181
  k++;
169
182
  if (k === size) {
170
- if (count > 0 && closesEmptyPart(bytes, i))
183
+ if (at.length > 0 && closesEmptyPart(bytes, i))
171
184
  empty++;
185
+ at.push(i);
172
186
  i += size;
173
- end = i;
174
- if (overLimits(++count, empty, limits))
187
+ if (overLimits(at.length, empty, limits))
175
188
  break;
176
189
  continue;
177
190
  }
178
191
  work += k;
179
192
  if (work > bytes.length)
180
- return scanFrom(bytes, pattern, i, count, empty, end, limits);
193
+ return scanFrom(bytes, pattern, i, at, empty, limits);
181
194
  i++;
182
195
  }
183
- return delimiters(bytes, count, empty, end);
196
+ return { at, empty };
197
+ }
198
+ // What the File constructor keeps of a type: printable ASCII, lower-cased; anything else is "".
199
+ const PRINTABLE = /^[\x20-\x7e]*$/;
200
+ /**
201
+ * `content` as a File whose type is what the standard makes of `type`. Bun's constructor appends
202
+ * `;charset=utf-8` to an exact lower-case `text/plain`, `text/html` or `application/json`, but not
203
+ * to the same type in upper case, which it lower-cases like every runtime.
204
+ */
205
+ function fileOf(content, name, type) {
206
+ const wanted = PRINTABLE.test(type) ? type.toLowerCase() : "";
207
+ const file = new File([content], name, { type: wanted });
208
+ return file.type === wanted ? file : new File([content], name, { type: wanted.toUpperCase() });
184
209
  }
185
- /** True when `value` takes more than `max` bytes as UTF-8. */
186
- function exceedsUtf8(value, max) {
187
- const length = value.length;
188
- // A UTF-16 code unit is one to three UTF-8 bytes, so most values are decided without a walk.
189
- if (length > max)
190
- return true;
191
- if (length * 3 <= max)
210
+ /** The first index from `from` holding byte `a`, `b` or `c`, or the end of `bytes`. */
211
+ function scanUntil(bytes, from, a, b, c) {
212
+ let i = from;
213
+ while (i < bytes.length) {
214
+ const byte = bytes[i];
215
+ if (byte === a || byte === b || byte === c)
216
+ break;
217
+ i++;
218
+ }
219
+ return i;
220
+ }
221
+ function startsWith(bytes, at, prefix) {
222
+ if (at + prefix.length > bytes.length)
192
223
  return false;
193
- let bytes = 0;
194
- for (let i = 0; i < length; i++) {
195
- const code = value.charCodeAt(i);
196
- if (code < 0x80)
197
- bytes += 1;
198
- else if (code < 0x800)
199
- bytes += 2;
200
- else if (code >= 0xd800 && code <= 0xdbff && i + 1 < length) {
201
- const low = value.charCodeAt(i + 1);
202
- if (low >= 0xdc00 && low <= 0xdfff) {
203
- bytes += 4;
204
- i++;
224
+ for (let i = 0; i < prefix.length; i++)
225
+ if (bytes[at + i] !== prefix[i])
226
+ return false;
227
+ return true;
228
+ }
229
+ /** `bytes[start, end)` as UTF-8 text. */
230
+ function textOf(bytes, start, end) {
231
+ if (end - start <= SHORT_TEXT) {
232
+ let out = "";
233
+ for (let i = start; i < end; i++) {
234
+ const byte = bytes[i];
235
+ if (byte >= 0x80)
236
+ return UTF8.decode(bytes.subarray(start, end));
237
+ out += String.fromCharCode(byte);
238
+ }
239
+ return out;
240
+ }
241
+ return UTF8.decode(bytes.subarray(start, end));
242
+ }
243
+ /** Whether `bytes[start, end)` spells `lower`, a lower-case ASCII header name, in any case. */
244
+ function spells(bytes, start, end, lower) {
245
+ if (end - start !== lower.length)
246
+ return false;
247
+ // A CR also folds onto `-`, but no header name holds one.
248
+ for (let i = 0; i < lower.length; i++)
249
+ if ((bytes[start + i] | 0x20) !== lower[i])
250
+ return false;
251
+ return true;
252
+ }
253
+ /** Bytes as the code points of the same values ("isomorphic decode"), for a header's value. */
254
+ function isomorphic(bytes, start, end) {
255
+ let out = "";
256
+ for (let i = start; i < end; i += 4096) {
257
+ out += String.fromCharCode(...bytes.subarray(i, Math.min(end, i + 4096)));
258
+ }
259
+ return out;
260
+ }
261
+ /**
262
+ * A quoted `name` or `filename` from the byte after its opening quote: everything up to the closing
263
+ * one, with `%0A`, `%0D` and `%22` restored. No backslash escapes, as the standard reads it.
264
+ */
265
+ function quotedName(bytes, from) {
266
+ const close = scanUntil(bytes, from, LF, CR, QUOTE);
267
+ if (bytes[close] !== QUOTE)
268
+ return undefined;
269
+ let value = textOf(bytes, from, close);
270
+ if (bytes.subarray(from, close).includes(PERCENT)) {
271
+ value = value.replaceAll("%0A", "\n").replaceAll("%0D", "\r").replaceAll("%22", '"');
272
+ }
273
+ return { value, next: close + 1 };
274
+ }
275
+ /**
276
+ * The headers of the part whose first header line starts at `from`, up to the blank line that
277
+ * ends them. Undefined when a line does not parse or the part names no field.
278
+ */
279
+ function partHeaders(bytes, from) {
280
+ let position = from;
281
+ let name = null;
282
+ let filename = null;
283
+ let type = null;
284
+ for (;;) {
285
+ if (bytes[position] === CR && bytes[position + 1] === LF) {
286
+ return name === null ? undefined : { name, filename, type, next: position + 2 };
287
+ }
288
+ const colon = scanUntil(bytes, position, LF, CR, COLON);
289
+ if (bytes[colon] !== COLON)
290
+ return undefined;
291
+ let start = position;
292
+ let end = colon;
293
+ while (start < end && isBlank(bytes[start]))
294
+ start++;
295
+ while (end > start && isBlank(bytes[end - 1]))
296
+ end--;
297
+ if (start === end)
298
+ return undefined;
299
+ for (let i = start; i < end; i++)
300
+ if (TCHAR[bytes[i]] !== 1)
301
+ return undefined;
302
+ position = colon + 1;
303
+ while (isBlank(bytes[position] ?? 0))
304
+ position++;
305
+ if (spells(bytes, start, end, CONTENT_DISPOSITION)) {
306
+ name = null;
307
+ filename = null;
308
+ if (!startsWith(bytes, position, FORM_DATA_NAME))
309
+ return undefined;
310
+ const parsed = quotedName(bytes, position + FORM_DATA_NAME.length);
311
+ if (parsed === undefined)
312
+ return undefined;
313
+ name = parsed.value;
314
+ position = parsed.next;
315
+ if (startsWith(bytes, position, FILE_NAME)) {
316
+ const file = quotedName(bytes, position + FILE_NAME.length);
317
+ if (file === undefined)
318
+ return undefined;
319
+ filename = file.value;
320
+ position = file.next;
205
321
  }
206
- else
207
- bytes += 3;
208
322
  }
209
- else
210
- bytes += 3;
211
- if (bytes > max)
212
- return true;
323
+ else {
324
+ const stop = scanUntil(bytes, position, LF, CR, LF);
325
+ if (spells(bytes, start, end, CONTENT_TYPE)) {
326
+ let end = stop;
327
+ while (end > position && isBlank(bytes[end - 1]))
328
+ end--;
329
+ type = isomorphic(bytes, position, end);
330
+ }
331
+ position = stop;
332
+ }
333
+ if (bytes[position] !== CR || bytes[position + 1] !== LF)
334
+ return undefined;
335
+ position += 2;
336
+ }
337
+ }
338
+ /**
339
+ * The parts of a body, read as the Fetch standard's `multipart/form-data` parser reads them: the
340
+ * body opens with `--boundary`, every part's content runs to the next CRLF `--boundary`, and the
341
+ * first `--boundary--` closes it. `at` holds every `--boundary` in the body; those that do not start
342
+ * a line are content. Undefined when the body is not such a form.
343
+ */
344
+ function partsOf(bytes, at, size) {
345
+ if (at[0] !== 0)
346
+ return undefined;
347
+ const parts = [];
348
+ let position = 0;
349
+ let next = 0;
350
+ for (;;) {
351
+ position += size;
352
+ if (bytes[position] === DASH && bytes[position + 1] === DASH)
353
+ return parts;
354
+ if (bytes[position] !== CR || bytes[position + 1] !== LF)
355
+ return undefined;
356
+ const head = partHeaders(bytes, position + 2);
357
+ if (head === undefined)
358
+ return undefined;
359
+ position = head.next;
360
+ let end;
361
+ do
362
+ end = at[++next] ?? -1;
363
+ while (end !== -1 && (end - 2 < position || bytes[end - 2] !== CR || bytes[end - 1] !== LF));
364
+ if (end === -1)
365
+ return undefined;
366
+ parts.push({
367
+ name: head.name,
368
+ filename: head.filename,
369
+ type: head.type,
370
+ start: position,
371
+ end: end - 2,
372
+ });
373
+ position = end;
213
374
  }
214
- return false;
215
375
  }
216
376
  /** C0 controls, DEL, line separators, and the characters that reorder or hide text in a label. */
217
377
  function isUnsafeNameCode(code) {
@@ -257,20 +417,6 @@ function safeFileName(raw) {
257
417
  }
258
418
  return name === "" || name === "." || name === ".." ? FALLBACK_FILE_NAME : name;
259
419
  }
260
- /** `part` as a `File` called `name`, keeping its bytes, type, and timestamp. */
261
- function renamedFile(part, name) {
262
- const modified = part.lastModified;
263
- const options = modified === undefined ? { type: part.type } : { type: part.type, lastModified: modified };
264
- let file = new File([part], name, options);
265
- // A runtime may hand back the single source part with its own name when nothing else changes;
266
- // a second, empty part forces a new file.
267
- if (file.name !== name)
268
- file = new File([part, ""], name, options);
269
- if (file.name !== name || file.size !== part.size) {
270
- throw new Error("multipartBody: this runtime did not apply a file name");
271
- }
272
- return file;
273
- }
274
420
  function createReader(limits, inner) {
275
421
  const maxFields = limitOf(limits.maxFields, DEFAULT_MAX_FIELDS, "maxFields");
276
422
  const maxFiles = limitOf(limits.maxFiles, DEFAULT_MAX_FILES, "maxFiles");
@@ -294,72 +440,55 @@ function createReader(limits, inner) {
294
440
  if (boundary === null)
295
441
  return INVALID();
296
442
  const read = await readBoundedBytes(source, maxBodyBytes);
297
- if (!read.ok) {
298
- return read.status === 413
299
- ? plainError(413, "payload_too_large")
300
- : plainError(400, "invalid_content_length");
301
- }
443
+ if (!read.ok)
444
+ return plainError(read.status, read.error);
302
445
  const bytes = read.bytes;
303
- // Counted on the raw bytes: the platform parser allocates per part, so a body of many tiny
304
- // parts must be refused before it is parsed, not after.
446
+ // Counted on the raw bytes: the parser allocates per part, so a body of many tiny parts must be
447
+ // refused before it is parsed, not after.
305
448
  const delimiter = new Uint8Array(boundary.length + 2);
306
449
  delimiter[0] = DASH;
307
450
  delimiter[1] = DASH;
308
451
  for (let i = 0; i < boundary.length; i++)
309
452
  delimiter[i + 2] = boundary.charCodeAt(i);
310
453
  const found = scanDelimiters(bytes, delimiter, delimiterLimits);
311
- if (overLimits(found.count, found.empty, delimiterLimits)) {
454
+ if (overLimits(found.at.length, found.empty, delimiterLimits)) {
312
455
  return plainError(413, "too_many_parts");
313
456
  }
314
- // A body is over when `--boundary--` says so. One that stops short is refused here, because a
315
- // parser that tolerates it hands back the parts it saw as if they were the whole form.
316
- if (!found.closed)
457
+ // A body that stops before `--boundary--` is refused with the rest, because a reader that
458
+ // tolerated it would hand back the parts it saw as if they were the whole form.
459
+ const parts = partsOf(bytes, found.at, delimiter.length);
460
+ if (parts === undefined)
317
461
  return INVALID();
318
- // The parser is given the boundary this reader extracted, never the request's own header: two
319
- // readings of one header (a repeated or oddly quoted parameter) would let a body be counted
320
- // under one boundary and parsed under another.
321
- const canonical = `${MEDIA_TYPE}; boundary=${TOKEN.test(boundary) ? boundary : `"${boundary}"`}`;
322
- // Typed by what is read from it: the global `FormData` and `BodyInit` names do not resolve to
323
- // the same declarations under every lib config.
324
- let form;
325
- try {
326
- form = (await new Response(bytes, {
327
- headers: { "content-type": canonical },
328
- }).formData());
329
- }
330
- catch {
331
- return INVALID();
332
- }
333
462
  const record = Object.create(null);
334
463
  let fields = 0;
335
464
  let files = 0;
336
- for (const [name, part] of form) {
465
+ for (const part of parts) {
466
+ const name = part.name;
337
467
  if (name === "__proto__" && protoPoisoning !== "ignore") {
338
468
  if (protoPoisoning === "reject")
339
469
  return INVALID();
340
470
  continue;
341
471
  }
472
+ const size = part.end - part.start;
342
473
  let value;
343
- if (typeof part === "string") {
474
+ if (part.filename === null) {
344
475
  if (++fields > maxFields)
345
476
  return plainError(413, "too_many_fields");
346
- if (exceedsUtf8(part, maxFieldBytes))
477
+ if (size > maxFieldBytes)
347
478
  return plainError(413, "field_too_large");
348
- value = part;
479
+ value = textOf(bytes, part.start, part.end);
349
480
  }
350
481
  else {
351
- // A file input left empty still submits a part with no bytes. Runtimes disagree on whether
352
- // a named empty file keeps its name, so every empty file is treated as that input.
353
- if (part.size === 0)
482
+ // A file input left empty still submits a part with no bytes, so an empty file is that input.
483
+ if (size === 0)
354
484
  continue;
355
- const rawName = part.name;
356
- const clientName = typeof rawName === "string" ? rawName : "";
357
485
  if (++files > maxFiles)
358
486
  return plainError(413, "too_many_files");
359
- if (part.size > maxFileBytes)
487
+ if (size > maxFileBytes)
360
488
  return plainError(413, "file_too_large");
361
- const name = safeFileName(clientName);
362
- value = part instanceof File && part.name === name ? part : renamedFile(part, name);
489
+ // biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: readBoundedBytes allocates its own ArrayBuffer, never a shared one.
490
+ const content = bytes.subarray(part.start, part.end);
491
+ value = fileOf(content, safeFileName(part.filename), part.type ?? "text/plain");
363
492
  }
364
493
  const existing = record[name];
365
494
  if (existing === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"multipart.js","sourceRoot":"","sources":["../../src/server/multipart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multipart.js","sourceRoot":"","sources":["../../src/server/multipart.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proto-guard.d.ts","sourceRoot":"","sources":["../../src/server/proto-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAK1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAGhF;AAiGD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,cAAc,EACtB,QAAQ,UAAQ,GACf,OAAO,CAuBT"}
1
+ {"version":3,"file":"proto-guard.d.ts","sourceRoot":"","sources":["../../src/server/proto-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAK1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAGhF;AAoID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,cAAc,EACtB,QAAQ,UAAQ,GACf,OAAO,CAuBT"}
@@ -44,12 +44,38 @@ export function guardParsedValue(value, policy) {
44
44
  */
45
45
  /** Reused walk stack - `sweep` is synchronous and single-threaded, and a thrown rejection can
46
46
  * leave residue, so each entry clears it. Saves one array allocation per swept request. */
47
- const STACK = [];
47
+ const STORAGE = [];
48
+ // Reuse at most 1,024 logical slots between requests; larger walks use the existing full reset.
49
+ const MAX_REUSED_STACK = 1024;
50
+ // JSC keeps native Array.pop on this hot path; a JS cursor lets it inline the stack operations.
51
+ // Select once so V8 keeps its faster native array stack, with one shared security walk below.
52
+ const INDEXED_STACK = typeof Bun !== "undefined";
53
+ const STACK = !INDEXED_STACK
54
+ ? STORAGE
55
+ : {
56
+ length: 0,
57
+ push(value) {
58
+ STORAGE[this.length++] = value;
59
+ },
60
+ pop() {
61
+ const index = --this.length;
62
+ const value = STORAGE[index];
63
+ STORAGE[index] = undefined;
64
+ return value;
65
+ },
66
+ };
48
67
  function sweep(root, policy) {
49
68
  if (root === null || typeof root !== "object")
50
69
  return root;
51
70
  const stack = STACK;
52
- stack.length = 0;
71
+ // Keep V8's native-array reset: skipping it regresses the deep-chain control. Bun only needs
72
+ // a reset after an unexpected custom-source throw; ordinary pops already cleared every slot.
73
+ if (!INDEXED_STACK)
74
+ stack.length = 0;
75
+ else if (stack.length > 0) {
76
+ stack.length = 0;
77
+ STORAGE.length = 0;
78
+ }
53
79
  stack.push(root);
54
80
  while (stack.length > 0) {
55
81
  const node = stack.pop();
@@ -91,8 +117,11 @@ function sweep(root, policy) {
91
117
  // + first-code-unit guards avoid a full string comparison for the overwhelming majority of
92
118
  // fields while preserving exact equality for the two security-sensitive names.
93
119
  if (key.length === 9 && key.charCodeAt(0) === 95 /* _ */ && key === "__proto__") {
94
- if (policy === "reject")
120
+ if (policy === "reject") {
121
+ stack.length = 0;
122
+ STORAGE.length = 0;
95
123
  throw POISONED;
124
+ }
96
125
  // biome-ignore lint/complexity/useLiteralKeys: bracket access keeps the guarded key an explicit string, never a prototype walk
97
126
  delete record["__proto__"];
98
127
  continue;
@@ -102,8 +131,11 @@ function sweep(root, policy) {
102
131
  key === "constructor" &&
103
132
  nested &&
104
133
  Object.hasOwn(value, "prototype")) {
105
- if (policy === "reject")
134
+ if (policy === "reject") {
135
+ stack.length = 0;
136
+ STORAGE.length = 0;
106
137
  throw POISONED;
138
+ }
107
139
  // biome-ignore lint/complexity/useLiteralKeys: bracket access keeps the guarded key an explicit string, never a prototype walk
108
140
  delete record["constructor"];
109
141
  continue;
@@ -112,6 +144,9 @@ function sweep(root, policy) {
112
144
  stack.push(value);
113
145
  }
114
146
  }
147
+ // Bun pops clear their references immediately, so ordinary requests can reuse the empty buffer.
148
+ if (INDEXED_STACK && STORAGE.length > MAX_REUSED_STACK)
149
+ STORAGE.length = 0;
115
150
  return root;
116
151
  }
117
152
  /** How many nodes shared references may add to a decoded value, counted as a tree walk visits it. */
@@ -1 +1 @@
1
- {"version":3,"file":"proto-guard.js","sourceRoot":"","sources":["../../src/server/proto-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proto-guard.js","sourceRoot":"","sources":["../../src/server/proto-guard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/server/query.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;mDAImD;AACnD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAgB1C,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOlD;AAsCD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA2BxE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAyC5D;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAU7D;AAID;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,CActD"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/server/query.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAMhD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;mDAImD;AACnD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AAgB1C,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOlD;AAqCD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA0BxE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAyC5D;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAU7D;AAID;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,CAUtD"}