@nifrajs/core 5.5.0 → 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.
- package/CHANGELOG.md +159 -0
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js.map +1 -1
- package/dist/evidence.d.ts +2 -0
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +2 -0
- package/dist/evidence.js.map +1 -1
- package/dist/file-type.d.ts +30 -0
- package/dist/file-type.d.ts.map +1 -0
- package/dist/file-type.js +118 -0
- package/dist/file-type.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/route-program.d.ts +11 -0
- package/dist/internal/route-program.d.ts.map +1 -1
- package/dist/internal/route-program.js +133 -85
- package/dist/internal/route-program.js.map +1 -1
- package/dist/reflection.d.ts +14 -1
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +34 -7
- package/dist/reflection.js.map +1 -1
- package/dist/response-observer.d.ts +1 -0
- package/dist/response-observer.d.ts.map +1 -1
- package/dist/response-observer.js +1 -0
- package/dist/response-observer.js.map +1 -1
- package/dist/server/bare-error-lane.d.ts +4 -1
- package/dist/server/bare-error-lane.d.ts.map +1 -1
- package/dist/server/bare-error-lane.js +9 -3
- package/dist/server/bare-error-lane.js.map +1 -1
- package/dist/server/before-handler.d.ts +10 -0
- package/dist/server/before-handler.d.ts.map +1 -0
- package/dist/server/before-handler.js +12 -0
- package/dist/server/before-handler.js.map +1 -0
- package/dist/server/body-lane.d.ts.map +1 -1
- package/dist/server/body-lane.js +8 -2
- package/dist/server/body-lane.js.map +1 -1
- package/dist/server/body-parser.d.ts.map +1 -1
- package/dist/server/body-parser.js +2 -5
- package/dist/server/body-parser.js.map +1 -1
- package/dist/server/body.d.ts +24 -8
- package/dist/server/body.d.ts.map +1 -1
- package/dist/server/body.js +86 -33
- package/dist/server/body.js.map +1 -1
- package/dist/server/core-copies.js +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +6 -17
- package/dist/server/http.js.map +1 -1
- package/dist/server/multipart.d.ts +3 -0
- package/dist/server/multipart.d.ts.map +1 -1
- package/dist/server/multipart.js +226 -97
- package/dist/server/multipart.js.map +1 -1
- package/dist/server/proto-guard.d.ts.map +1 -1
- package/dist/server/proto-guard.js +39 -4
- package/dist/server/proto-guard.js.map +1 -1
- package/dist/server/query.d.ts.map +1 -1
- package/dist/server/query.js +8 -14
- package/dist/server/query.js.map +1 -1
- package/dist/server/repeated-prefix.d.ts +17 -0
- package/dist/server/repeated-prefix.d.ts.map +1 -0
- package/dist/server/repeated-prefix.js +17 -0
- package/dist/server/repeated-prefix.js.map +1 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +1 -3
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/respond.d.ts +1 -3
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +21 -16
- package/dist/server/respond.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +12 -2
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +135 -8
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/runtime-core.d.ts +7 -0
- package/dist/server/runtime-core.d.ts.map +1 -1
- package/dist/server/runtime-core.js +8 -1
- package/dist/server/runtime-core.js.map +1 -1
- package/dist/server/server-types.d.ts +6 -3
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +6 -2
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +239 -78
- package/dist/server/server.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +5 -4
- package/dist/server/sse.js.map +1 -1
- package/dist/server/webhook.d.ts +1 -1
- package/dist/server/webhook.d.ts.map +1 -1
- package/dist/server/webhook.js +24 -19
- package/dist/server/webhook.js.map +1 -1
- package/dist/server/websocket.d.ts +18 -3
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +45 -5
- package/dist/server/websocket.js.map +1 -1
- package/dist/server/ws-bun.d.ts.map +1 -1
- package/dist/server/ws-bun.js +12 -3
- package/dist/server/ws-bun.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/tool-cli.d.ts +64 -0
- package/dist/tool-cli.d.ts.map +1 -0
- package/dist/tool-cli.js +495 -0
- package/dist/tool-cli.js.map +1 -0
- package/package.json +11 -1
- package/src/assurance.ts +1 -0
- package/src/evidence.ts +4 -0
- package/src/file-type.ts +130 -0
- package/src/index.ts +2 -1
- package/src/internal/route-program.ts +261 -93
- package/src/reflection.ts +53 -7
- package/src/response-observer.ts +6 -0
- package/src/server/bare-error-lane.ts +9 -4
- package/src/server/before-handler.ts +14 -0
- package/src/server/body-lane.ts +19 -9
- package/src/server/body-parser.ts +1 -5
- package/src/server/body.ts +96 -36
- package/src/server/core-copies.ts +1 -1
- package/src/server/http.ts +6 -15
- package/src/server/multipart.ts +232 -100
- package/src/server/proto-guard.ts +39 -4
- package/src/server/query.ts +7 -13
- package/src/server/repeated-prefix.ts +25 -0
- package/src/server/request-context.ts +1 -3
- package/src/server/respond.ts +23 -15
- package/src/server/response-contract-lane.ts +130 -8
- package/src/server/runtime-core.ts +10 -1
- package/src/server/server-types.ts +6 -3
- package/src/server/server.ts +265 -76
- package/src/server/sse.ts +6 -5
- package/src/server/webhook.ts +29 -24
- package/src/server/websocket.ts +57 -8
- package/src/server/ws-bun.ts +17 -2
- package/src/server.ts +1 -0
- package/src/tool-cli.ts +584 -0
package/dist/server/multipart.js
CHANGED
|
@@ -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,
|
|
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 (
|
|
146
|
+
if (at.length > 0 && closesEmptyPart(bytes, i + 1 - size))
|
|
136
147
|
empty++;
|
|
137
|
-
|
|
138
|
-
if (overLimits(
|
|
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
|
|
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
|
-
|
|
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 (
|
|
183
|
+
if (at.length > 0 && closesEmptyPart(bytes, i))
|
|
171
184
|
empty++;
|
|
185
|
+
at.push(i);
|
|
172
186
|
i += size;
|
|
173
|
-
|
|
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,
|
|
193
|
+
return scanFrom(bytes, pattern, i, at, empty, limits);
|
|
181
194
|
i++;
|
|
182
195
|
}
|
|
183
|
-
return
|
|
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
|
-
/**
|
|
186
|
-
function
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
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
|
|
304
|
-
//
|
|
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.
|
|
454
|
+
if (overLimits(found.at.length, found.empty, delimiterLimits)) {
|
|
312
455
|
return plainError(413, "too_many_parts");
|
|
313
456
|
}
|
|
314
|
-
// A body
|
|
315
|
-
//
|
|
316
|
-
|
|
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
|
|
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 (
|
|
474
|
+
if (part.filename === null) {
|
|
344
475
|
if (++fields > maxFields)
|
|
345
476
|
return plainError(413, "too_many_fields");
|
|
346
|
-
if (
|
|
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
|
|
352
|
-
|
|
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 (
|
|
487
|
+
if (size > maxFileBytes)
|
|
360
488
|
return plainError(413, "file_too_large");
|
|
361
|
-
|
|
362
|
-
|
|
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;
|
|
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
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;GAaG;AAIH,kGAAkG;AAClG,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAElD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAsB;IACnE,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAsB;IACrE,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrC,OAAO,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;GAMG;AACH;2FAC2F;AAC3F,MAAM,
|
|
1
|
+
{"version":3,"file":"proto-guard.js","sourceRoot":"","sources":["../../src/server/proto-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,kGAAkG;AAClG,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAElD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAsB;IACnE,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAsB;IACrE,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrC,OAAO,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;GAMG;AACH;2FAC2F;AAC3F,MAAM,OAAO,GAAc,EAAE,CAAA;AAC7B,gGAAgG;AAChG,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAC7B,gGAAgG;AAChG,8FAA8F;AAC9F,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,WAAW,CAAA;AAChD,MAAM,KAAK,GAAG,CAAC,aAAa;IAC1B,CAAC,CAAC,OAAO;IACT,CAAC,CAAC;QACE,MAAM,EAAE,CAAC;QACT,IAAI,CAAC,KAAc;YACjB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAA;QAChC,CAAC;QACD,GAAG;YACD,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,CAAA;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;YAC1B,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;AAEL,SAAS,KAAK,CAAC,IAAa,EAAE,MAA0B;IACtD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAA;IACnB,6FAA6F;IAC7F,6FAA6F;IAC7F,IAAI,CAAC,aAAa;QAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;SAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QAChB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IACpB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAY,CAAA;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,4FAA4F;YAC5F,yFAAyF;YACzF,8FAA8F;YAC9F,EAAE;YACF,2FAA2F;YAC3F,4FAA4F;YAC5F,6FAA6F;YAC7F,2FAA2F;YAC3F,0FAA0F;YAC1F,gDAAgD;YAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACpB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjE,CAAC;YACD,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,IAA+B,CAAA;QAC9C,8FAA8F;QAC9F,6FAA6F;QAC7F,+FAA+F;QAC/F,+FAA+F;QAC/F,+FAA+F;QAC/F,+FAA+F;QAC/F,2FAA2F;QAC3F,wFAAwF;QACxF,kFAAkF;QAClF,2EAA2E;QAC3E,0FAA0F;QAC1F,qFAAqF;QACrF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACzB,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAA;YAC1D,6FAA6F;YAC7F,2FAA2F;YAC3F,+EAA+E;YAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBAChF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;oBAChB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;oBAClB,MAAM,QAAQ,CAAA;gBAChB,CAAC;gBACD,+HAA+H;gBAC/H,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;gBAC1B,SAAQ;YACV,CAAC;YACD,IACE,GAAG,CAAC,MAAM,KAAK,EAAE;gBACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO;gBAChC,GAAG,KAAK,aAAa;gBACrB,MAAM;gBACN,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,EACjC,CAAC;gBACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;oBAChB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;oBAClB,MAAM,QAAQ,CAAA;gBAChB,CAAC;gBACD,+HAA+H;gBAC/H,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;gBAC5B,SAAQ;YACV,CAAC;YACD,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,gGAAgG;IAChG,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,gBAAgB;QAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1E,OAAO,IAAI,CAAA;AACb,CAAC;AAED,qGAAqG;AACrG,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAEpC;wDACwD;AACxD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAExE,0FAA0F;AAC1F,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA;AASlB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAc,EACd,MAAsB,EACtB,QAAQ,GAAG,KAAK;IAEhB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,MAAM,GAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5E,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,EAAE,CAAA;YACZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC9B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;iBAC5E,IAAI,KAAK,KAAK,OAAO;gBAAE,MAAM,UAAU,CAAA;;gBACvC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAA;YACxB,SAAQ;QACV,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,CAAA;QACZ,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAA;;YAC1C,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IAChC,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,oBAAoB;QAAE,MAAM,UAAU,CAAA;IAClE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,MAAsB,EACtB,QAAiB,EACjB,KAA0B;IAE1B,IAAI,CAAC,QAAQ,IAAI,IAAI,YAAY,MAAM;QAAE,MAAM,UAAU,CAAA;IACzD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,MAAsB;IAC3D,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,GAAG,GAAG,CAAC,KAAc,EAAQ,EAAE;QACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC,CAAA;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,CAAA;YACR,GAAG,CAAC,KAAK,CAAC,CAAA;QACZ,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,kGAAkG;IAClG,eAAe;IACf,IACE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,YAAY,WAAW;QAC3B,IAAI,YAAY,IAAI;QACpB,IAAI,YAAY,MAAM;QACtB,IAAI,YAAY,GAAG,EACnB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7C,IACE,MAAM,KAAK,QAAQ;YACnB,CAAC,GAAG,KAAK,WAAW;gBAClB,CAAC,GAAG,KAAK,aAAa;oBACpB,KAAK,KAAK,IAAI;oBACd,OAAO,KAAK,KAAK,QAAQ;oBACzB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACvC,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ;gBAAE,MAAM,QAAQ,CAAA;YACvC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACjC,SAAQ;QACV,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,CAAA;IACZ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -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;
|
|
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"}
|