seroval 0.12.3 → 0.13.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/dist/cjs/development/index.cjs +1432 -958
- package/dist/cjs/development/index.cjs.map +3 -3
- package/dist/cjs/production/index.cjs +3 -3
- package/dist/esm/development/index.mjs +1432 -958
- package/dist/esm/development/index.mjs.map +3 -3
- package/dist/esm/production/index.mjs +3 -3
- package/dist/types/core/Serializer.d.ts +2 -1
- package/dist/types/core/Serializer.d.ts.map +1 -1
- package/dist/types/core/base-primitives.d.ts +12 -1
- package/dist/types/core/base-primitives.d.ts.map +1 -1
- package/dist/types/core/compat.d.ts +0 -2
- package/dist/types/core/compat.d.ts.map +1 -1
- package/dist/types/core/constants.d.ts +8 -2
- package/dist/types/core/constants.d.ts.map +1 -1
- package/dist/types/core/{tree/deserialize.d.ts → context/deserializer.d.ts} +19 -13
- package/dist/types/core/context/deserializer.d.ts.map +1 -0
- package/dist/types/core/{base → context/parser}/async.d.ts +6 -5
- package/dist/types/core/context/parser/async.d.ts.map +1 -0
- package/dist/types/core/{base → context/parser}/stream.d.ts +2 -1
- package/dist/types/core/context/parser/stream.d.ts.map +1 -0
- package/dist/types/core/{base → context/parser}/sync.d.ts +7 -9
- package/dist/types/core/context/parser/sync.d.ts.map +1 -0
- package/dist/types/core/context/parser.d.ts +27 -0
- package/dist/types/core/context/parser.d.ts.map +1 -0
- package/dist/types/core/{serializer-context.old.d.ts → context/serializer.d.ts} +21 -22
- package/dist/types/core/context/serializer.d.ts.map +1 -0
- package/dist/types/core/cross/async.d.ts +2 -2
- package/dist/types/core/cross/async.d.ts.map +1 -1
- package/dist/types/core/cross/deserializer.d.ts +9 -0
- package/dist/types/core/cross/deserializer.d.ts.map +1 -0
- package/dist/types/core/cross/index.d.ts +11 -1
- package/dist/types/core/cross/index.d.ts.map +1 -1
- package/dist/types/core/cross/parser.d.ts +6 -0
- package/dist/types/core/cross/parser.d.ts.map +1 -0
- package/dist/types/core/cross/{serialize.d.ts → serializer.d.ts} +6 -5
- package/dist/types/core/cross/serializer.d.ts.map +1 -0
- package/dist/types/core/cross/stream.d.ts +2 -2
- package/dist/types/core/cross/stream.d.ts.map +1 -1
- package/dist/types/core/cross/sync.d.ts +2 -2
- package/dist/types/core/cross/sync.d.ts.map +1 -1
- package/dist/types/core/keys.d.ts +3 -1
- package/dist/types/core/keys.d.ts.map +1 -1
- package/dist/types/core/plugin.d.ts +6 -7
- package/dist/types/core/plugin.d.ts.map +1 -1
- package/dist/types/core/special-reference.d.ts +6 -0
- package/dist/types/core/special-reference.d.ts.map +1 -0
- package/dist/types/core/tree/async.d.ts +2 -2
- package/dist/types/core/tree/async.d.ts.map +1 -1
- package/dist/types/core/tree/deserializer.d.ts +13 -0
- package/dist/types/core/tree/deserializer.d.ts.map +1 -0
- package/dist/types/core/tree/{serialize.d.ts → serializer.d.ts} +4 -4
- package/dist/types/core/tree/serializer.d.ts.map +1 -0
- package/dist/types/core/tree/sync.d.ts +2 -2
- package/dist/types/core/tree/sync.d.ts.map +1 -1
- package/dist/types/core/types.d.ts +47 -6
- package/dist/types/core/types.d.ts.map +1 -1
- package/dist/types/core/utils/assert.d.ts.map +1 -0
- package/dist/types/core/utils/constructors.d.ts.map +1 -0
- package/dist/types/core/utils/deferred.d.ts +14 -0
- package/dist/types/core/utils/deferred.d.ts.map +1 -0
- package/dist/types/core/utils/error.d.ts +5 -0
- package/dist/types/core/utils/error.d.ts.map +1 -0
- package/dist/types/core/utils/get-identifier.d.ts.map +1 -0
- package/dist/types/core/utils/get-object-flag.d.ts +3 -0
- package/dist/types/core/utils/get-object-flag.d.ts.map +1 -0
- package/dist/types/core/utils/is-valid-identifier.d.ts +2 -0
- package/dist/types/core/utils/is-valid-identifier.d.ts.map +1 -0
- package/dist/types/core/utils/iterator-to-sequence.d.ts +20 -0
- package/dist/types/core/utils/iterator-to-sequence.d.ts.map +1 -0
- package/dist/types/core/utils/promise-to-result.d.ts.map +1 -0
- package/dist/types/core/utils/typed-array.d.ts +4 -0
- package/dist/types/core/utils/typed-array.d.ts.map +1 -0
- package/dist/types/core/web-api.d.ts +4 -1
- package/dist/types/core/web-api.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/Serializer.ts +3 -1
- package/src/core/base-primitives.ts +229 -1
- package/src/core/compat.ts +0 -2
- package/src/core/constants.ts +7 -2
- package/src/core/{tree/deserialize.ts → context/deserializer.ts} +159 -66
- package/src/core/{base → context/parser}/async.ts +181 -309
- package/src/core/{base → context/parser}/stream.ts +86 -11
- package/src/core/{base → context/parser}/sync.ts +120 -281
- package/src/core/context/parser.ts +259 -0
- package/src/core/{serializer-context.old.ts → context/serializer.ts} +241 -166
- package/src/core/cross/async.ts +2 -2
- package/src/core/cross/deserializer.ts +19 -0
- package/src/core/cross/index.ts +68 -47
- package/src/core/cross/parser.ts +7 -0
- package/src/core/cross/{serialize.ts → serializer.ts} +31 -12
- package/src/core/cross/stream.ts +2 -2
- package/src/core/cross/sync.ts +2 -2
- package/src/core/is-serializable.new.ts +1 -1
- package/src/core/keys.ts +8 -2
- package/src/core/plugin.ts +7 -7
- package/src/core/reference.ts +1 -1
- package/src/core/special-reference.ts +9 -0
- package/src/core/tree/async.ts +2 -2
- package/src/core/tree/deserializer.ts +31 -0
- package/src/core/tree/index.ts +2 -2
- package/src/core/tree/{serialize.ts → serializer.ts} +5 -16
- package/src/core/tree/sync.ts +2 -2
- package/src/core/types.ts +60 -7
- package/src/core/utils/deferred.ts +49 -0
- package/src/core/{shared.ts → utils/error.ts} +3 -60
- package/src/core/utils/get-object-flag.ts +14 -0
- package/src/core/utils/is-valid-identifier.ts +11 -0
- package/src/core/utils/iterator-to-sequence.ts +238 -0
- package/src/core/utils/typed-array.ts +30 -0
- package/src/core/web-api.ts +75 -1
- package/src/example.ts +0 -3
- package/dist/types/core/assert.d.ts.map +0 -1
- package/dist/types/core/base/async.d.ts.map +0 -1
- package/dist/types/core/base/stream.d.ts.map +0 -1
- package/dist/types/core/base/sync.d.ts.map +0 -1
- package/dist/types/core/constructors.d.ts.map +0 -1
- package/dist/types/core/cross/cross-parser.d.ts +0 -8
- package/dist/types/core/cross/cross-parser.d.ts.map +0 -1
- package/dist/types/core/cross/serialize.d.ts.map +0 -1
- package/dist/types/core/get-identifier.d.ts.map +0 -1
- package/dist/types/core/parser-context.d.ts +0 -23
- package/dist/types/core/parser-context.d.ts.map +0 -1
- package/dist/types/core/promise-to-result.d.ts.map +0 -1
- package/dist/types/core/serializer-context.old.d.ts.map +0 -1
- package/dist/types/core/shared.d.ts +0 -10
- package/dist/types/core/shared.d.ts.map +0 -1
- package/dist/types/core/tree/deserialize.d.ts.map +0 -1
- package/dist/types/core/tree/serialize.d.ts.map +0 -1
- package/src/core/cross/cross-parser.ts +0 -9
- package/src/core/parser-context.ts +0 -131
- package/src/core/serializer-context.new.ts +0 -1168
- package/src/core/tree/parser.ts +0 -45
- /package/dist/types/core/{assert.d.ts → utils/assert.d.ts} +0 -0
- /package/dist/types/core/{constructors.d.ts → utils/constructors.d.ts} +0 -0
- /package/dist/types/core/{get-identifier.d.ts → utils/get-identifier.d.ts} +0 -0
- /package/dist/types/core/{promise-to-result.d.ts → utils/promise-to-result.d.ts} +0 -0
- /package/src/core/{assert.ts → utils/assert.ts} +0 -0
- /package/src/core/{constructors.ts → utils/constructors.ts} +0 -0
- /package/src/core/{get-identifier.ts → utils/get-identifier.ts} +0 -0
- /package/src/core/{promise-to-result.ts → utils/promise-to-result.ts} +0 -0
|
@@ -7,7 +7,7 @@ var UnsupportedTypeError = class extends Error {
|
|
|
7
7
|
}
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
// src/core/assert.ts
|
|
10
|
+
// src/core/utils/assert.ts
|
|
11
11
|
function assert(cond, error) {
|
|
12
12
|
if (!cond) {
|
|
13
13
|
throw error;
|
|
@@ -98,7 +98,6 @@ var ERROR_CONSTRUCTOR = {
|
|
|
98
98
|
[5 /* TypeError */]: TypeError,
|
|
99
99
|
[6 /* URIError */]: URIError
|
|
100
100
|
};
|
|
101
|
-
var UNIVERSAL_SENTINEL = Symbol("why");
|
|
102
101
|
|
|
103
102
|
// src/core/literals.ts
|
|
104
103
|
function createConstantNode(value) {
|
|
@@ -186,9 +185,11 @@ var GLOBAL_CONTEXT_PROMISE_RESOLVE = "Ps";
|
|
|
186
185
|
var GLOBAL_CONTEXT_PROMISE_REJECT = "Pf";
|
|
187
186
|
var LOCAL_CONTEXT_STREAM_CONTROLLER = "c";
|
|
188
187
|
var GLOBAL_CONTEXT_STREAM_CONSTRUCTOR = "S";
|
|
189
|
-
var
|
|
188
|
+
var GLOBAL_CONTEXT_STREAM_ENQUEUE = "Se";
|
|
189
|
+
var GLOBAL_CONTEXT_STREAM_ERROR = "St";
|
|
190
|
+
var GLOBAL_CONTEXT_STREAM_CLOSE = "Sc";
|
|
190
191
|
var GLOBAL_CONTEXT_API_REF = `self.${GLOBAL_CONTEXT_API}`;
|
|
191
|
-
var GLOBAL_CONTEXT_API_SCRIPT = `${GLOBAL_CONTEXT_API_REF}=${GLOBAL_CONTEXT_API_REF}||{${GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR}:function(s,f,p){return(p=new Promise(function(a,b){s=a,f=b})).${LOCAL_CONTEXT_PROMISE_RESOLVE}=s,p.${LOCAL_CONTEXT_PROMISE_REJECT}=f,p},uP:function(p){delete p.${LOCAL_CONTEXT_PROMISE_RESOLVE};delete p.${LOCAL_CONTEXT_PROMISE_REJECT}},${GLOBAL_CONTEXT_PROMISE_RESOLVE}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_RESOLVE}(d),p.status="success",p.value=d,this.uP(p)},${GLOBAL_CONTEXT_PROMISE_REJECT}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_REJECT}(d),p.status="failure",p.value=d,this.uP(p)},uS:function(s){delete s.${LOCAL_CONTEXT_STREAM_CONTROLLER}},${
|
|
192
|
+
var GLOBAL_CONTEXT_API_SCRIPT = `${GLOBAL_CONTEXT_API_REF}=${GLOBAL_CONTEXT_API_REF}||{${GLOBAL_CONTEXT_PROMISE_CONSTRUCTOR}:function(s,f,p){return(p=new Promise(function(a,b){s=a,f=b})).${LOCAL_CONTEXT_PROMISE_RESOLVE}=s,p.${LOCAL_CONTEXT_PROMISE_REJECT}=f,p},uP:function(p){delete p.${LOCAL_CONTEXT_PROMISE_RESOLVE};delete p.${LOCAL_CONTEXT_PROMISE_REJECT}},${GLOBAL_CONTEXT_PROMISE_RESOLVE}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_RESOLVE}(d),p.status="success",p.value=d,this.uP(p)},${GLOBAL_CONTEXT_PROMISE_REJECT}:function(p,d){p.${LOCAL_CONTEXT_PROMISE_REJECT}(d),p.status="failure",p.value=d,this.uP(p)},uS:function(s){delete s.${LOCAL_CONTEXT_STREAM_CONTROLLER}},${GLOBAL_CONTEXT_STREAM_CLOSE}:function(s){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.close(),this.uS(s)},${GLOBAL_CONTEXT_STREAM_ERROR}:function(s,e){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.error(e),this.uS(s)},${GLOBAL_CONTEXT_STREAM_ENQUEUE}:function(s,d){s.${LOCAL_CONTEXT_STREAM_CONTROLLER}.enqueue(d)},${GLOBAL_CONTEXT_STREAM_CONSTRUCTOR}:function(s,c){return(s=new ReadableStream({start:function(x){c=x}})).${LOCAL_CONTEXT_STREAM_CONTROLLER}=c,s}}`;
|
|
192
193
|
var GLOBAL_CONTEXT_R = `self.${GLOBAL_CONTEXT_REFERENCES}`;
|
|
193
194
|
function getCrossReferenceHeader(id) {
|
|
194
195
|
if (id == null) {
|
|
@@ -249,6 +250,87 @@ if (typeof globalThis !== void 0) {
|
|
|
249
250
|
});
|
|
250
251
|
}
|
|
251
252
|
|
|
253
|
+
// src/core/compat.ts
|
|
254
|
+
var Feature = /* @__PURE__ */ ((Feature2) => {
|
|
255
|
+
Feature2[Feature2["AggregateError"] = 1] = "AggregateError";
|
|
256
|
+
Feature2[Feature2["ArrowFunction"] = 4] = "ArrowFunction";
|
|
257
|
+
Feature2[Feature2["BigInt"] = 8] = "BigInt";
|
|
258
|
+
Feature2[Feature2["ErrorPrototypeStack"] = 16] = "ErrorPrototypeStack";
|
|
259
|
+
Feature2[Feature2["Map"] = 32] = "Map";
|
|
260
|
+
Feature2[Feature2["ObjectAssign"] = 128] = "ObjectAssign";
|
|
261
|
+
Feature2[Feature2["Promise"] = 256] = "Promise";
|
|
262
|
+
Feature2[Feature2["Set"] = 512] = "Set";
|
|
263
|
+
Feature2[Feature2["Symbol"] = 1024] = "Symbol";
|
|
264
|
+
Feature2[Feature2["TypedArray"] = 2048] = "TypedArray";
|
|
265
|
+
Feature2[Feature2["BigIntTypedArray"] = 4096] = "BigIntTypedArray";
|
|
266
|
+
Feature2[Feature2["WebAPI"] = 8192] = "WebAPI";
|
|
267
|
+
return Feature2;
|
|
268
|
+
})(Feature || {});
|
|
269
|
+
var ALL_ENABLED = 16383;
|
|
270
|
+
var BIGINT_FLAG = 4096 /* BigIntTypedArray */ | 8 /* BigInt */;
|
|
271
|
+
|
|
272
|
+
// src/core/utils/error.ts
|
|
273
|
+
function getErrorConstructor(error) {
|
|
274
|
+
if (error instanceof EvalError) {
|
|
275
|
+
return 1 /* EvalError */;
|
|
276
|
+
}
|
|
277
|
+
if (error instanceof RangeError) {
|
|
278
|
+
return 2 /* RangeError */;
|
|
279
|
+
}
|
|
280
|
+
if (error instanceof ReferenceError) {
|
|
281
|
+
return 3 /* ReferenceError */;
|
|
282
|
+
}
|
|
283
|
+
if (error instanceof SyntaxError) {
|
|
284
|
+
return 4 /* SyntaxError */;
|
|
285
|
+
}
|
|
286
|
+
if (error instanceof TypeError) {
|
|
287
|
+
return 5 /* TypeError */;
|
|
288
|
+
}
|
|
289
|
+
if (error instanceof URIError) {
|
|
290
|
+
return 6 /* URIError */;
|
|
291
|
+
}
|
|
292
|
+
return 0 /* Error */;
|
|
293
|
+
}
|
|
294
|
+
function getErrorOptions(error, features) {
|
|
295
|
+
let options;
|
|
296
|
+
const constructor = ERROR_CONSTRUCTOR_STRING[getErrorConstructor(error)];
|
|
297
|
+
if (error.name !== constructor) {
|
|
298
|
+
options = { name: error.name };
|
|
299
|
+
} else if (error.constructor.name !== constructor) {
|
|
300
|
+
options = { name: error.constructor.name };
|
|
301
|
+
}
|
|
302
|
+
const names = Object.getOwnPropertyNames(error);
|
|
303
|
+
for (let i = 0, len = names.length, name; i < len; i++) {
|
|
304
|
+
name = names[i];
|
|
305
|
+
if (name !== "name" && name !== "message") {
|
|
306
|
+
if (name === "stack") {
|
|
307
|
+
if (features & 16 /* ErrorPrototypeStack */) {
|
|
308
|
+
options = options || {};
|
|
309
|
+
options[name] = error[name];
|
|
310
|
+
}
|
|
311
|
+
} else {
|
|
312
|
+
options = options || {};
|
|
313
|
+
options[name] = error[name];
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return options;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// src/core/utils/get-object-flag.ts
|
|
321
|
+
function getObjectFlag(obj) {
|
|
322
|
+
if (Object.isFrozen(obj)) {
|
|
323
|
+
return 3 /* Frozen */;
|
|
324
|
+
}
|
|
325
|
+
if (Object.isSealed(obj)) {
|
|
326
|
+
return 2 /* Sealed */;
|
|
327
|
+
}
|
|
328
|
+
if (Object.isExtensible(obj)) {
|
|
329
|
+
return 0 /* None */;
|
|
330
|
+
}
|
|
331
|
+
return 1 /* NonExtensible */;
|
|
332
|
+
}
|
|
333
|
+
|
|
252
334
|
// src/core/base-primitives.ts
|
|
253
335
|
function createNumberNode(value) {
|
|
254
336
|
switch (value) {
|
|
@@ -430,29 +512,174 @@ function createPluginNode(id, tag, value) {
|
|
|
430
512
|
o: void 0
|
|
431
513
|
};
|
|
432
514
|
}
|
|
515
|
+
function createArrayNode(id, current, parsedItems) {
|
|
516
|
+
return {
|
|
517
|
+
t: 9 /* Array */,
|
|
518
|
+
i: id,
|
|
519
|
+
s: void 0,
|
|
520
|
+
l: current.length,
|
|
521
|
+
c: void 0,
|
|
522
|
+
m: void 0,
|
|
523
|
+
p: void 0,
|
|
524
|
+
e: void 0,
|
|
525
|
+
a: parsedItems,
|
|
526
|
+
f: void 0,
|
|
527
|
+
b: void 0,
|
|
528
|
+
o: getObjectFlag(current)
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
function createBoxedNode(id, boxed) {
|
|
532
|
+
return {
|
|
533
|
+
t: 27 /* Boxed */,
|
|
534
|
+
i: id,
|
|
535
|
+
s: void 0,
|
|
536
|
+
l: void 0,
|
|
537
|
+
c: void 0,
|
|
538
|
+
m: void 0,
|
|
539
|
+
p: void 0,
|
|
540
|
+
e: void 0,
|
|
541
|
+
a: void 0,
|
|
542
|
+
f: boxed,
|
|
543
|
+
b: void 0,
|
|
544
|
+
o: void 0
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
function createTypedArrayNode(id, current, buffer) {
|
|
548
|
+
return {
|
|
549
|
+
t: 15 /* TypedArray */,
|
|
550
|
+
i: id,
|
|
551
|
+
s: void 0,
|
|
552
|
+
l: current.length,
|
|
553
|
+
c: current.constructor.name,
|
|
554
|
+
m: void 0,
|
|
555
|
+
p: void 0,
|
|
556
|
+
e: void 0,
|
|
557
|
+
a: void 0,
|
|
558
|
+
f: buffer,
|
|
559
|
+
b: current.byteOffset,
|
|
560
|
+
o: void 0
|
|
561
|
+
};
|
|
562
|
+
}
|
|
563
|
+
function createBigIntTypedArrayNode(id, current, buffer) {
|
|
564
|
+
return {
|
|
565
|
+
t: 16 /* BigIntTypedArray */,
|
|
566
|
+
i: id,
|
|
567
|
+
s: void 0,
|
|
568
|
+
l: current.length,
|
|
569
|
+
c: current.constructor.name,
|
|
570
|
+
m: void 0,
|
|
571
|
+
p: void 0,
|
|
572
|
+
e: void 0,
|
|
573
|
+
a: void 0,
|
|
574
|
+
f: buffer,
|
|
575
|
+
b: current.byteOffset,
|
|
576
|
+
o: void 0
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
function createDataViewNode(id, current, buffer) {
|
|
580
|
+
return {
|
|
581
|
+
t: 22 /* DataView */,
|
|
582
|
+
i: id,
|
|
583
|
+
s: void 0,
|
|
584
|
+
l: current.byteLength,
|
|
585
|
+
c: void 0,
|
|
586
|
+
m: void 0,
|
|
587
|
+
p: void 0,
|
|
588
|
+
e: void 0,
|
|
589
|
+
a: void 0,
|
|
590
|
+
f: buffer,
|
|
591
|
+
b: current.byteOffset,
|
|
592
|
+
o: void 0
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
function createErrorNode(id, current, options) {
|
|
596
|
+
return {
|
|
597
|
+
t: 13 /* Error */,
|
|
598
|
+
i: id,
|
|
599
|
+
s: getErrorConstructor(current),
|
|
600
|
+
l: void 0,
|
|
601
|
+
c: void 0,
|
|
602
|
+
m: serializeString(current.message),
|
|
603
|
+
p: options,
|
|
604
|
+
e: void 0,
|
|
605
|
+
a: void 0,
|
|
606
|
+
f: void 0,
|
|
607
|
+
b: void 0,
|
|
608
|
+
o: void 0
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
function createAggregateErrorNode(id, current, options) {
|
|
612
|
+
return {
|
|
613
|
+
t: 14 /* AggregateError */,
|
|
614
|
+
i: id,
|
|
615
|
+
s: getErrorConstructor(current),
|
|
616
|
+
l: void 0,
|
|
617
|
+
c: void 0,
|
|
618
|
+
m: serializeString(current.message),
|
|
619
|
+
p: options,
|
|
620
|
+
e: void 0,
|
|
621
|
+
a: void 0,
|
|
622
|
+
f: void 0,
|
|
623
|
+
b: void 0,
|
|
624
|
+
o: void 0
|
|
625
|
+
};
|
|
626
|
+
}
|
|
627
|
+
function createSetNode(id, size, items) {
|
|
628
|
+
return {
|
|
629
|
+
t: 7 /* Set */,
|
|
630
|
+
i: id,
|
|
631
|
+
s: void 0,
|
|
632
|
+
l: size,
|
|
633
|
+
c: void 0,
|
|
634
|
+
m: void 0,
|
|
635
|
+
p: void 0,
|
|
636
|
+
e: void 0,
|
|
637
|
+
a: items,
|
|
638
|
+
f: void 0,
|
|
639
|
+
b: void 0,
|
|
640
|
+
o: void 0
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
function createIteratorFactoryInstanceNode(factory, items) {
|
|
644
|
+
return {
|
|
645
|
+
t: 43 /* IteratorFactoryInstance */,
|
|
646
|
+
i: void 0,
|
|
647
|
+
s: void 0,
|
|
648
|
+
l: void 0,
|
|
649
|
+
c: void 0,
|
|
650
|
+
m: void 0,
|
|
651
|
+
p: void 0,
|
|
652
|
+
e: void 0,
|
|
653
|
+
a: [
|
|
654
|
+
factory,
|
|
655
|
+
items
|
|
656
|
+
],
|
|
657
|
+
f: void 0,
|
|
658
|
+
b: void 0,
|
|
659
|
+
o: void 0
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
function createAsyncIteratorFactoryInstanceNode(factory, items) {
|
|
663
|
+
return {
|
|
664
|
+
t: 45 /* AsyncIteratorFactoryInstance */,
|
|
665
|
+
i: void 0,
|
|
666
|
+
s: void 0,
|
|
667
|
+
l: void 0,
|
|
668
|
+
c: void 0,
|
|
669
|
+
m: void 0,
|
|
670
|
+
p: void 0,
|
|
671
|
+
e: void 0,
|
|
672
|
+
a: [
|
|
673
|
+
factory,
|
|
674
|
+
items
|
|
675
|
+
],
|
|
676
|
+
f: void 0,
|
|
677
|
+
b: void 0,
|
|
678
|
+
o: void 0
|
|
679
|
+
};
|
|
680
|
+
}
|
|
433
681
|
|
|
434
|
-
// src/core/
|
|
435
|
-
var Feature = /* @__PURE__ */ ((Feature2) => {
|
|
436
|
-
Feature2[Feature2["AggregateError"] = 1] = "AggregateError";
|
|
437
|
-
Feature2[Feature2["ArrayPrototypeValues"] = 2] = "ArrayPrototypeValues";
|
|
438
|
-
Feature2[Feature2["ArrowFunction"] = 4] = "ArrowFunction";
|
|
439
|
-
Feature2[Feature2["BigInt"] = 8] = "BigInt";
|
|
440
|
-
Feature2[Feature2["ErrorPrototypeStack"] = 16] = "ErrorPrototypeStack";
|
|
441
|
-
Feature2[Feature2["Map"] = 32] = "Map";
|
|
442
|
-
Feature2[Feature2["MethodShorthand"] = 64] = "MethodShorthand";
|
|
443
|
-
Feature2[Feature2["ObjectAssign"] = 128] = "ObjectAssign";
|
|
444
|
-
Feature2[Feature2["Promise"] = 256] = "Promise";
|
|
445
|
-
Feature2[Feature2["Set"] = 512] = "Set";
|
|
446
|
-
Feature2[Feature2["Symbol"] = 1024] = "Symbol";
|
|
447
|
-
Feature2[Feature2["TypedArray"] = 2048] = "TypedArray";
|
|
448
|
-
Feature2[Feature2["BigIntTypedArray"] = 4096] = "BigIntTypedArray";
|
|
449
|
-
Feature2[Feature2["WebAPI"] = 8192] = "WebAPI";
|
|
450
|
-
return Feature2;
|
|
451
|
-
})(Feature || {});
|
|
452
|
-
var ALL_ENABLED = 16383;
|
|
453
|
-
var BIGINT_FLAG = 4096 /* BigIntTypedArray */ | 8 /* BigInt */;
|
|
454
|
-
|
|
455
|
-
// src/core/constructors.ts
|
|
682
|
+
// src/core/utils/constructors.ts
|
|
456
683
|
function createRequestOptions(current, body) {
|
|
457
684
|
return {
|
|
458
685
|
body,
|
|
@@ -491,210 +718,399 @@ function createCustomEventOptions(current) {
|
|
|
491
718
|
};
|
|
492
719
|
}
|
|
493
720
|
|
|
494
|
-
// src/core/
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
this.markRef(registeredID);
|
|
512
|
-
return createIndexedValueNode(registeredID);
|
|
721
|
+
// src/core/utils/iterator-to-sequence.ts
|
|
722
|
+
function iteratorToSequence(source) {
|
|
723
|
+
const values = [];
|
|
724
|
+
let throwsAt = -1;
|
|
725
|
+
let doneAt = -1;
|
|
726
|
+
const iterator = source[Symbol.iterator]();
|
|
727
|
+
while (true) {
|
|
728
|
+
try {
|
|
729
|
+
const value = iterator.next();
|
|
730
|
+
values.push(value.value);
|
|
731
|
+
if (value.done) {
|
|
732
|
+
doneAt = values.length - 1;
|
|
733
|
+
break;
|
|
734
|
+
}
|
|
735
|
+
} catch (error) {
|
|
736
|
+
throwsAt = values.length;
|
|
737
|
+
values.push(error);
|
|
513
738
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
739
|
+
}
|
|
740
|
+
return {
|
|
741
|
+
v: values,
|
|
742
|
+
t: throwsAt,
|
|
743
|
+
d: doneAt
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
function sequenceToIterator(sequence) {
|
|
747
|
+
return () => {
|
|
748
|
+
let index = 0;
|
|
749
|
+
return {
|
|
750
|
+
[Symbol.iterator]() {
|
|
751
|
+
return this;
|
|
752
|
+
},
|
|
753
|
+
next() {
|
|
754
|
+
if (index > sequence.d) {
|
|
755
|
+
return {
|
|
756
|
+
done: true,
|
|
757
|
+
value: void 0
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
const currentIndex = index++;
|
|
761
|
+
const currentItem = sequence.v[currentIndex];
|
|
762
|
+
if (currentIndex === sequence.t) {
|
|
763
|
+
throw currentItem;
|
|
764
|
+
}
|
|
765
|
+
return {
|
|
766
|
+
done: currentIndex === sequence.d,
|
|
767
|
+
value: currentItem
|
|
768
|
+
};
|
|
769
|
+
}
|
|
770
|
+
};
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
async function asyncIteratorToSequence(source) {
|
|
774
|
+
const values = [];
|
|
775
|
+
let throwsAt = -1;
|
|
776
|
+
let doneAt = -1;
|
|
777
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
778
|
+
while (true) {
|
|
779
|
+
try {
|
|
780
|
+
const value = await iterator.next();
|
|
781
|
+
values.push(value.value);
|
|
782
|
+
if (value.done) {
|
|
783
|
+
doneAt = values.length - 1;
|
|
784
|
+
break;
|
|
785
|
+
}
|
|
786
|
+
} catch (error) {
|
|
787
|
+
throwsAt = values.length;
|
|
788
|
+
values.push(error);
|
|
518
789
|
}
|
|
519
|
-
return id;
|
|
520
790
|
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
case Uint32Array:
|
|
551
|
-
case Uint8ClampedArray:
|
|
552
|
-
case Float32Array:
|
|
553
|
-
case Float64Array:
|
|
554
|
-
return false;
|
|
555
|
-
default:
|
|
556
|
-
break;
|
|
791
|
+
return {
|
|
792
|
+
v: values,
|
|
793
|
+
t: throwsAt,
|
|
794
|
+
d: doneAt
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
function sequenceToAsyncIterator(sequence) {
|
|
798
|
+
return () => {
|
|
799
|
+
let index = 0;
|
|
800
|
+
return {
|
|
801
|
+
[Symbol.asyncIterator]() {
|
|
802
|
+
return this;
|
|
803
|
+
},
|
|
804
|
+
async next() {
|
|
805
|
+
if (index > sequence.d) {
|
|
806
|
+
return {
|
|
807
|
+
done: true,
|
|
808
|
+
value: void 0
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
const currentIndex = index++;
|
|
812
|
+
const currentItem = sequence.v[currentIndex];
|
|
813
|
+
if (currentIndex === sequence.t) {
|
|
814
|
+
throw currentItem;
|
|
815
|
+
}
|
|
816
|
+
return Promise.resolve({
|
|
817
|
+
done: currentIndex === sequence.d,
|
|
818
|
+
value: currentItem
|
|
819
|
+
});
|
|
557
820
|
}
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
821
|
+
};
|
|
822
|
+
};
|
|
823
|
+
}
|
|
824
|
+
function asyncIteratorToReadableStream(source, parser) {
|
|
825
|
+
return new ReadableStream({
|
|
826
|
+
async start(controller) {
|
|
827
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
828
|
+
while (parser.isAlive()) {
|
|
829
|
+
try {
|
|
830
|
+
const result = await iterator.next();
|
|
831
|
+
controller.enqueue([result.done ? 2 : 0, result.value]);
|
|
832
|
+
if (result.done) {
|
|
833
|
+
controller.close();
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
} catch (error) {
|
|
837
|
+
controller.enqueue([1, error]);
|
|
838
|
+
}
|
|
566
839
|
}
|
|
840
|
+
controller.close();
|
|
567
841
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
842
|
+
});
|
|
843
|
+
}
|
|
844
|
+
function readableStreamToAsyncIterator(source) {
|
|
845
|
+
let current = source;
|
|
846
|
+
return () => {
|
|
847
|
+
const [left, right] = current.tee();
|
|
848
|
+
const clone = left;
|
|
849
|
+
current = right;
|
|
850
|
+
const reader = clone.getReader();
|
|
851
|
+
return {
|
|
852
|
+
[Symbol.asyncIterator]() {
|
|
853
|
+
return this;
|
|
854
|
+
},
|
|
855
|
+
async next() {
|
|
856
|
+
const result = await reader.read();
|
|
857
|
+
if (result.done) {
|
|
858
|
+
return {
|
|
859
|
+
done: true,
|
|
860
|
+
value: void 0
|
|
861
|
+
};
|
|
862
|
+
}
|
|
863
|
+
const [status, value] = result.value;
|
|
864
|
+
if (status === 1) {
|
|
865
|
+
throw value;
|
|
866
|
+
}
|
|
867
|
+
return {
|
|
868
|
+
done: status === 2,
|
|
869
|
+
value
|
|
870
|
+
};
|
|
577
871
|
}
|
|
578
|
-
|
|
579
|
-
|
|
872
|
+
};
|
|
873
|
+
};
|
|
874
|
+
}
|
|
875
|
+
async function readableStreamToSequence(stream) {
|
|
876
|
+
const values = [];
|
|
877
|
+
let throwsAt = -1;
|
|
878
|
+
let doneAt = -1;
|
|
879
|
+
const iterator = stream.getReader();
|
|
880
|
+
while (true) {
|
|
881
|
+
try {
|
|
882
|
+
const value = await iterator.read();
|
|
883
|
+
values.push(value.value);
|
|
884
|
+
if (value.done) {
|
|
885
|
+
doneAt = values.length - 1;
|
|
886
|
+
break;
|
|
580
887
|
}
|
|
888
|
+
} catch (error) {
|
|
889
|
+
throwsAt = values.length;
|
|
890
|
+
doneAt = throwsAt;
|
|
891
|
+
values.push(error);
|
|
892
|
+
break;
|
|
581
893
|
}
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
894
|
+
}
|
|
895
|
+
return {
|
|
896
|
+
v: values,
|
|
897
|
+
t: throwsAt,
|
|
898
|
+
d: doneAt
|
|
899
|
+
};
|
|
900
|
+
}
|
|
901
|
+
function sequenceToReadableStream(sequence) {
|
|
902
|
+
return new ReadableStream({
|
|
903
|
+
start(controller) {
|
|
904
|
+
for (let i = 0; i < sequence.d; i++) {
|
|
905
|
+
controller.enqueue(sequence.v[i]);
|
|
906
|
+
}
|
|
907
|
+
if (sequence.t === -1) {
|
|
908
|
+
controller.close();
|
|
909
|
+
} else {
|
|
910
|
+
controller.error(sequence.v[sequence.t]);
|
|
589
911
|
}
|
|
590
912
|
}
|
|
591
|
-
|
|
592
|
-
return Symbol.iterator in value;
|
|
593
|
-
}
|
|
594
|
-
return false;
|
|
595
|
-
}
|
|
596
|
-
};
|
|
597
|
-
|
|
598
|
-
// src/core/promise-to-result.ts
|
|
599
|
-
async function promiseToResult(current) {
|
|
600
|
-
try {
|
|
601
|
-
return [1, await current];
|
|
602
|
-
} catch (e) {
|
|
603
|
-
return [0, e];
|
|
604
|
-
}
|
|
913
|
+
});
|
|
605
914
|
}
|
|
606
915
|
|
|
607
|
-
// src/core/
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
916
|
+
// src/core/special-reference.ts
|
|
917
|
+
var MAP_SENTINEL = {};
|
|
918
|
+
var ITERATOR = {};
|
|
919
|
+
var ASYNC_ITERATOR = {};
|
|
920
|
+
var READABLE_STREAM = {};
|
|
921
|
+
var UNIVERSAL_SENTINEL = {};
|
|
922
|
+
|
|
923
|
+
// src/core/context/parser.ts
|
|
924
|
+
var BaseParserContext = class {
|
|
925
|
+
constructor(options) {
|
|
926
|
+
this.marked = /* @__PURE__ */ new Set();
|
|
927
|
+
this.plugins = options.plugins;
|
|
928
|
+
this.features = ALL_ENABLED ^ (options.disabledFeatures || 0);
|
|
929
|
+
this.refs = options.refs || /* @__PURE__ */ new Map();
|
|
611
930
|
}
|
|
612
|
-
|
|
613
|
-
|
|
931
|
+
markRef(id) {
|
|
932
|
+
this.marked.add(id);
|
|
614
933
|
}
|
|
615
|
-
|
|
616
|
-
return
|
|
934
|
+
isMarked(id) {
|
|
935
|
+
return this.marked.has(id);
|
|
617
936
|
}
|
|
618
|
-
|
|
619
|
-
|
|
937
|
+
getReference(current) {
|
|
938
|
+
const registeredID = this.refs.get(current);
|
|
939
|
+
if (registeredID != null) {
|
|
940
|
+
this.markRef(registeredID);
|
|
941
|
+
return createIndexedValueNode(registeredID);
|
|
942
|
+
}
|
|
943
|
+
const id = this.refs.size;
|
|
944
|
+
this.refs.set(current, id);
|
|
945
|
+
if (hasReferenceID(current)) {
|
|
946
|
+
return createReferenceNode(id, current);
|
|
947
|
+
}
|
|
948
|
+
return id;
|
|
620
949
|
}
|
|
621
|
-
|
|
622
|
-
|
|
950
|
+
getStrictReference(current) {
|
|
951
|
+
const registeredID = this.refs.get(current);
|
|
952
|
+
if (registeredID != null) {
|
|
953
|
+
this.markRef(registeredID);
|
|
954
|
+
return createIndexedValueNode(registeredID);
|
|
955
|
+
}
|
|
956
|
+
const id = this.refs.size;
|
|
957
|
+
this.refs.set(current, id);
|
|
958
|
+
return createReferenceNode(id, current);
|
|
623
959
|
}
|
|
624
|
-
|
|
625
|
-
|
|
960
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
961
|
+
parseFunction(current) {
|
|
962
|
+
assert(hasReferenceID(current), new Error("Cannot serialize function without reference ID."));
|
|
963
|
+
return this.getStrictReference(current);
|
|
626
964
|
}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
return
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
return Uint32Array;
|
|
643
|
-
case "Uint8ClampedArray":
|
|
644
|
-
return Uint8ClampedArray;
|
|
645
|
-
case "Float32Array":
|
|
646
|
-
return Float32Array;
|
|
647
|
-
case "Float64Array":
|
|
648
|
-
return Float64Array;
|
|
649
|
-
case "BigInt64Array":
|
|
650
|
-
return BigInt64Array;
|
|
651
|
-
case "BigUint64Array":
|
|
652
|
-
return BigUint64Array;
|
|
653
|
-
default:
|
|
654
|
-
throw new Error(`Unknown TypedArray "${name}"`);
|
|
965
|
+
parseWKSymbol(current) {
|
|
966
|
+
assert(this.features & 1024 /* Symbol */, new UnsupportedTypeError(current));
|
|
967
|
+
const registeredID = this.refs.get(current);
|
|
968
|
+
if (registeredID != null) {
|
|
969
|
+
this.markRef(registeredID);
|
|
970
|
+
return createIndexedValueNode(registeredID);
|
|
971
|
+
}
|
|
972
|
+
const isValid = current in INV_SYMBOL_REF;
|
|
973
|
+
assert(current in INV_SYMBOL_REF || hasReferenceID(current), new Error("Cannot serialize symbol without reference ID."));
|
|
974
|
+
const id = this.refs.size;
|
|
975
|
+
this.refs.set(current, id);
|
|
976
|
+
if (isValid) {
|
|
977
|
+
return createWKSymbolNode(id, current);
|
|
978
|
+
}
|
|
979
|
+
return createReferenceNode(id, current);
|
|
655
980
|
}
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
return
|
|
981
|
+
parseMapSentinel() {
|
|
982
|
+
const registeredID = this.refs.get(MAP_SENTINEL);
|
|
983
|
+
if (registeredID != null) {
|
|
984
|
+
this.markRef(registeredID);
|
|
985
|
+
return createIndexedValueNode(registeredID);
|
|
986
|
+
}
|
|
987
|
+
const id = this.refs.size;
|
|
988
|
+
this.refs.set(MAP_SENTINEL, id);
|
|
989
|
+
return {
|
|
990
|
+
t: 41 /* MapSentinel */,
|
|
991
|
+
i: id,
|
|
992
|
+
s: void 0,
|
|
993
|
+
l: void 0,
|
|
994
|
+
c: void 0,
|
|
995
|
+
m: void 0,
|
|
996
|
+
p: void 0,
|
|
997
|
+
e: void 0,
|
|
998
|
+
a: void 0,
|
|
999
|
+
f: void 0,
|
|
1000
|
+
b: void 0,
|
|
1001
|
+
o: void 0
|
|
1002
|
+
};
|
|
665
1003
|
}
|
|
666
|
-
|
|
667
|
-
|
|
1004
|
+
parseIteratorFactory() {
|
|
1005
|
+
const registeredID = this.refs.get(ITERATOR);
|
|
1006
|
+
if (registeredID != null) {
|
|
1007
|
+
this.markRef(registeredID);
|
|
1008
|
+
return createIndexedValueNode(registeredID);
|
|
1009
|
+
}
|
|
1010
|
+
const id = this.refs.size;
|
|
1011
|
+
this.refs.set(ITERATOR, id);
|
|
1012
|
+
return {
|
|
1013
|
+
t: 42 /* IteratorFactory */,
|
|
1014
|
+
i: id,
|
|
1015
|
+
s: void 0,
|
|
1016
|
+
l: void 0,
|
|
1017
|
+
c: void 0,
|
|
1018
|
+
m: void 0,
|
|
1019
|
+
p: void 0,
|
|
1020
|
+
e: void 0,
|
|
1021
|
+
a: void 0,
|
|
1022
|
+
f: this.parseWKSymbol(Symbol.iterator),
|
|
1023
|
+
b: void 0,
|
|
1024
|
+
o: void 0
|
|
1025
|
+
};
|
|
668
1026
|
}
|
|
669
|
-
|
|
670
|
-
|
|
1027
|
+
parseAsyncIteratorFactory() {
|
|
1028
|
+
const registeredID = this.refs.get(ASYNC_ITERATOR);
|
|
1029
|
+
if (registeredID != null) {
|
|
1030
|
+
this.markRef(registeredID);
|
|
1031
|
+
return createIndexedValueNode(registeredID);
|
|
1032
|
+
}
|
|
1033
|
+
const id = this.refs.size;
|
|
1034
|
+
this.refs.set(ASYNC_ITERATOR, id);
|
|
1035
|
+
return {
|
|
1036
|
+
t: 44 /* AsyncIteratorFactory */,
|
|
1037
|
+
i: id,
|
|
1038
|
+
s: void 0,
|
|
1039
|
+
l: void 0,
|
|
1040
|
+
c: void 0,
|
|
1041
|
+
m: void 0,
|
|
1042
|
+
p: void 0,
|
|
1043
|
+
e: void 0,
|
|
1044
|
+
a: void 0,
|
|
1045
|
+
f: this.parseWKSymbol(Symbol.asyncIterator),
|
|
1046
|
+
b: void 0,
|
|
1047
|
+
o: void 0
|
|
1048
|
+
};
|
|
671
1049
|
}
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
1050
|
+
createObjectNode(id, current, empty, record) {
|
|
1051
|
+
return {
|
|
1052
|
+
t: empty ? 11 /* NullConstructor */ : 10 /* Object */,
|
|
1053
|
+
i: id,
|
|
1054
|
+
s: void 0,
|
|
1055
|
+
l: void 0,
|
|
1056
|
+
c: void 0,
|
|
1057
|
+
m: void 0,
|
|
1058
|
+
p: record,
|
|
1059
|
+
e: void 0,
|
|
1060
|
+
a: void 0,
|
|
1061
|
+
f: void 0,
|
|
1062
|
+
b: void 0,
|
|
1063
|
+
o: getObjectFlag(current)
|
|
1064
|
+
};
|
|
681
1065
|
}
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
1066
|
+
createMapNode(id, k, v, s) {
|
|
1067
|
+
return {
|
|
1068
|
+
t: 8 /* Map */,
|
|
1069
|
+
i: id,
|
|
1070
|
+
s: void 0,
|
|
1071
|
+
l: void 0,
|
|
1072
|
+
c: void 0,
|
|
1073
|
+
m: void 0,
|
|
1074
|
+
p: void 0,
|
|
1075
|
+
e: { k, v, s },
|
|
1076
|
+
a: void 0,
|
|
1077
|
+
f: this.parseMapSentinel(),
|
|
1078
|
+
b: void 0,
|
|
1079
|
+
o: void 0
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
parseReadableStreamFactory() {
|
|
1083
|
+
const registeredID = this.refs.get(READABLE_STREAM);
|
|
1084
|
+
if (registeredID != null) {
|
|
1085
|
+
this.markRef(registeredID);
|
|
1086
|
+
return createIndexedValueNode(registeredID);
|
|
695
1087
|
}
|
|
1088
|
+
const id = this.refs.size;
|
|
1089
|
+
this.refs.set(READABLE_STREAM, id);
|
|
1090
|
+
return {
|
|
1091
|
+
t: 47 /* ReadableStreamFactory */,
|
|
1092
|
+
i: id,
|
|
1093
|
+
s: void 0,
|
|
1094
|
+
l: void 0,
|
|
1095
|
+
c: void 0,
|
|
1096
|
+
m: void 0,
|
|
1097
|
+
p: void 0,
|
|
1098
|
+
e: void 0,
|
|
1099
|
+
a: void 0,
|
|
1100
|
+
f: void 0,
|
|
1101
|
+
b: void 0,
|
|
1102
|
+
o: void 0
|
|
1103
|
+
};
|
|
1104
|
+
}
|
|
1105
|
+
};
|
|
1106
|
+
|
|
1107
|
+
// src/core/utils/promise-to-result.ts
|
|
1108
|
+
async function promiseToResult(current) {
|
|
1109
|
+
try {
|
|
1110
|
+
return [1, await current];
|
|
1111
|
+
} catch (e) {
|
|
1112
|
+
return [0, e];
|
|
696
1113
|
}
|
|
697
|
-
return options;
|
|
698
1114
|
}
|
|
699
1115
|
|
|
700
1116
|
// src/core/web-api.ts
|
|
@@ -746,135 +1162,122 @@ function createDOMExceptionNode(id, current) {
|
|
|
746
1162
|
o: void 0
|
|
747
1163
|
};
|
|
748
1164
|
}
|
|
1165
|
+
function createEventNode(id, type, options) {
|
|
1166
|
+
return {
|
|
1167
|
+
t: 37 /* Event */,
|
|
1168
|
+
i: id,
|
|
1169
|
+
s: serializeString(type),
|
|
1170
|
+
l: void 0,
|
|
1171
|
+
c: void 0,
|
|
1172
|
+
m: void 0,
|
|
1173
|
+
p: void 0,
|
|
1174
|
+
e: void 0,
|
|
1175
|
+
a: void 0,
|
|
1176
|
+
f: options,
|
|
1177
|
+
b: void 0,
|
|
1178
|
+
o: void 0
|
|
1179
|
+
};
|
|
1180
|
+
}
|
|
1181
|
+
function createCustomEventNode(id, type, options) {
|
|
1182
|
+
return {
|
|
1183
|
+
t: 38 /* CustomEvent */,
|
|
1184
|
+
i: id,
|
|
1185
|
+
s: serializeString(type),
|
|
1186
|
+
l: void 0,
|
|
1187
|
+
c: void 0,
|
|
1188
|
+
m: void 0,
|
|
1189
|
+
p: void 0,
|
|
1190
|
+
e: void 0,
|
|
1191
|
+
a: void 0,
|
|
1192
|
+
f: options,
|
|
1193
|
+
b: void 0,
|
|
1194
|
+
o: void 0
|
|
1195
|
+
};
|
|
1196
|
+
}
|
|
1197
|
+
function createReadableStreamNode(id, factory, items) {
|
|
1198
|
+
return {
|
|
1199
|
+
t: 46 /* ReadableStream */,
|
|
1200
|
+
i: id,
|
|
1201
|
+
s: void 0,
|
|
1202
|
+
l: void 0,
|
|
1203
|
+
c: void 0,
|
|
1204
|
+
m: void 0,
|
|
1205
|
+
p: void 0,
|
|
1206
|
+
e: void 0,
|
|
1207
|
+
a: [
|
|
1208
|
+
factory,
|
|
1209
|
+
items
|
|
1210
|
+
],
|
|
1211
|
+
f: void 0,
|
|
1212
|
+
b: void 0,
|
|
1213
|
+
o: void 0
|
|
1214
|
+
};
|
|
1215
|
+
}
|
|
749
1216
|
|
|
750
|
-
// src/core/
|
|
1217
|
+
// src/core/context/parser/async.ts
|
|
751
1218
|
var BaseAsyncParserContext = class extends BaseParserContext {
|
|
752
1219
|
async parseItems(current) {
|
|
753
|
-
const size = current.length;
|
|
754
1220
|
const nodes = [];
|
|
755
|
-
|
|
756
|
-
for (let i = 0, item; i < size; i++) {
|
|
1221
|
+
for (let i = 0, len = current.length; i < len; i++) {
|
|
757
1222
|
if (i in current) {
|
|
758
|
-
|
|
759
|
-
if (this.isIterable(item)) {
|
|
760
|
-
deferred[i] = item;
|
|
761
|
-
} else {
|
|
762
|
-
nodes[i] = await this.parse(item);
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
for (let i = 0; i < size; i++) {
|
|
767
|
-
if (i in deferred) {
|
|
768
|
-
nodes[i] = await this.parse(deferred[i]);
|
|
1223
|
+
nodes[i] = await this.parse(current[i]);
|
|
769
1224
|
}
|
|
770
1225
|
}
|
|
771
1226
|
return nodes;
|
|
772
1227
|
}
|
|
773
1228
|
async parseArray(id, current) {
|
|
774
|
-
return
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
c: void 0,
|
|
780
|
-
m: void 0,
|
|
781
|
-
p: void 0,
|
|
782
|
-
e: void 0,
|
|
783
|
-
a: await this.parseItems(current),
|
|
784
|
-
f: void 0,
|
|
785
|
-
b: void 0,
|
|
786
|
-
o: getObjectFlag(current)
|
|
787
|
-
};
|
|
788
|
-
}
|
|
789
|
-
async parseBoxed(id, current) {
|
|
790
|
-
return {
|
|
791
|
-
t: 27 /* Boxed */,
|
|
792
|
-
i: id,
|
|
793
|
-
s: void 0,
|
|
794
|
-
l: void 0,
|
|
795
|
-
c: void 0,
|
|
796
|
-
m: void 0,
|
|
797
|
-
p: void 0,
|
|
798
|
-
e: void 0,
|
|
799
|
-
a: void 0,
|
|
800
|
-
f: await this.parse(current.valueOf()),
|
|
801
|
-
b: void 0,
|
|
802
|
-
o: void 0
|
|
803
|
-
};
|
|
804
|
-
}
|
|
805
|
-
async parseTypedArray(id, current) {
|
|
806
|
-
return {
|
|
807
|
-
t: 15 /* TypedArray */,
|
|
808
|
-
i: id,
|
|
809
|
-
s: void 0,
|
|
810
|
-
l: current.length,
|
|
811
|
-
c: current.constructor.name,
|
|
812
|
-
m: void 0,
|
|
813
|
-
p: void 0,
|
|
814
|
-
e: void 0,
|
|
815
|
-
a: void 0,
|
|
816
|
-
f: await this.parse(current.buffer),
|
|
817
|
-
b: current.byteOffset,
|
|
818
|
-
o: void 0
|
|
819
|
-
};
|
|
820
|
-
}
|
|
821
|
-
async parseBigIntTypedArray(id, current) {
|
|
822
|
-
return {
|
|
823
|
-
t: 16 /* BigIntTypedArray */,
|
|
824
|
-
i: id,
|
|
825
|
-
s: void 0,
|
|
826
|
-
l: current.length,
|
|
827
|
-
c: current.constructor.name,
|
|
828
|
-
m: void 0,
|
|
829
|
-
p: void 0,
|
|
830
|
-
e: void 0,
|
|
831
|
-
a: void 0,
|
|
832
|
-
f: await this.parse(current.buffer),
|
|
833
|
-
b: current.byteOffset,
|
|
834
|
-
o: void 0
|
|
835
|
-
};
|
|
836
|
-
}
|
|
837
|
-
async parseDataView(id, current) {
|
|
838
|
-
return {
|
|
839
|
-
t: 22 /* DataView */,
|
|
840
|
-
i: id,
|
|
841
|
-
s: void 0,
|
|
842
|
-
l: current.byteLength,
|
|
843
|
-
c: void 0,
|
|
844
|
-
m: void 0,
|
|
845
|
-
p: void 0,
|
|
846
|
-
e: void 0,
|
|
847
|
-
a: void 0,
|
|
848
|
-
f: await this.parse(current.buffer),
|
|
849
|
-
b: current.byteOffset,
|
|
850
|
-
o: void 0
|
|
851
|
-
};
|
|
1229
|
+
return createArrayNode(
|
|
1230
|
+
id,
|
|
1231
|
+
current,
|
|
1232
|
+
await this.parseItems(current)
|
|
1233
|
+
);
|
|
852
1234
|
}
|
|
853
1235
|
async parseProperties(properties) {
|
|
854
1236
|
const entries = Object.entries(properties);
|
|
855
1237
|
const keyNodes = [];
|
|
856
1238
|
const valueNodes = [];
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
key = serializeString(entries[i][0]);
|
|
861
|
-
item = entries[i][1];
|
|
862
|
-
if (this.isIterable(item)) {
|
|
863
|
-
deferredKeys.push(key);
|
|
864
|
-
deferredValues.push(item);
|
|
865
|
-
} else {
|
|
866
|
-
keyNodes.push(key);
|
|
867
|
-
valueNodes.push(await this.parse(item));
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
for (let i = 0, len = deferredKeys.length; i < len; i++) {
|
|
871
|
-
keyNodes.push(deferredKeys[i]);
|
|
872
|
-
valueNodes.push(await this.parse(deferredValues[i]));
|
|
1239
|
+
for (let i = 0, len = entries.length; i < len; i++) {
|
|
1240
|
+
keyNodes.push(serializeString(entries[i][0]));
|
|
1241
|
+
valueNodes.push(await this.parse(entries[i][1]));
|
|
873
1242
|
}
|
|
874
1243
|
if (this.features & 1024 /* Symbol */) {
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
1244
|
+
let symbol = Symbol.iterator;
|
|
1245
|
+
if (symbol in properties) {
|
|
1246
|
+
keyNodes.push(
|
|
1247
|
+
this.parseWKSymbol(symbol)
|
|
1248
|
+
);
|
|
1249
|
+
valueNodes.push(
|
|
1250
|
+
createIteratorFactoryInstanceNode(
|
|
1251
|
+
this.parseIteratorFactory(),
|
|
1252
|
+
await this.parse(
|
|
1253
|
+
iteratorToSequence(properties)
|
|
1254
|
+
)
|
|
1255
|
+
)
|
|
1256
|
+
);
|
|
1257
|
+
}
|
|
1258
|
+
symbol = Symbol.asyncIterator;
|
|
1259
|
+
if (symbol in properties) {
|
|
1260
|
+
keyNodes.push(
|
|
1261
|
+
this.parseWKSymbol(symbol)
|
|
1262
|
+
);
|
|
1263
|
+
valueNodes.push(
|
|
1264
|
+
createAsyncIteratorFactoryInstanceNode(
|
|
1265
|
+
this.parseAsyncIteratorFactory(),
|
|
1266
|
+
await this.parse(
|
|
1267
|
+
await asyncIteratorToSequence(properties)
|
|
1268
|
+
)
|
|
1269
|
+
)
|
|
1270
|
+
);
|
|
1271
|
+
}
|
|
1272
|
+
symbol = Symbol.toStringTag;
|
|
1273
|
+
if (symbol in properties) {
|
|
1274
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
1275
|
+
valueNodes.push(createStringNode(properties[symbol]));
|
|
1276
|
+
}
|
|
1277
|
+
symbol = Symbol.isConcatSpreadable;
|
|
1278
|
+
if (symbol in properties) {
|
|
1279
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
1280
|
+
valueNodes.push(properties[symbol] ? TRUE_NODE : FALSE_NODE);
|
|
878
1281
|
}
|
|
879
1282
|
}
|
|
880
1283
|
return {
|
|
@@ -884,99 +1287,61 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
884
1287
|
};
|
|
885
1288
|
}
|
|
886
1289
|
async parsePlainObject(id, current, empty) {
|
|
887
|
-
return
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
1290
|
+
return this.createObjectNode(
|
|
1291
|
+
id,
|
|
1292
|
+
current,
|
|
1293
|
+
empty,
|
|
1294
|
+
await this.parseProperties(current)
|
|
1295
|
+
);
|
|
1296
|
+
}
|
|
1297
|
+
async parseBoxed(id, current) {
|
|
1298
|
+
return createBoxedNode(id, await this.parse(current.valueOf()));
|
|
1299
|
+
}
|
|
1300
|
+
async parseTypedArray(id, current) {
|
|
1301
|
+
return createTypedArrayNode(id, current, await this.parse(current.buffer));
|
|
1302
|
+
}
|
|
1303
|
+
async parseBigIntTypedArray(id, current) {
|
|
1304
|
+
return createBigIntTypedArrayNode(id, current, await this.parse(current.buffer));
|
|
1305
|
+
}
|
|
1306
|
+
async parseDataView(id, current) {
|
|
1307
|
+
return createDataViewNode(id, current, await this.parse(current.buffer));
|
|
901
1308
|
}
|
|
902
1309
|
async parseError(id, current) {
|
|
903
1310
|
const options = getErrorOptions(current, this.features);
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
o: void 0
|
|
918
|
-
};
|
|
1311
|
+
return createErrorNode(
|
|
1312
|
+
id,
|
|
1313
|
+
current,
|
|
1314
|
+
options ? await this.parseProperties(options) : void 0
|
|
1315
|
+
);
|
|
1316
|
+
}
|
|
1317
|
+
async parseAggregateError(id, current) {
|
|
1318
|
+
const options = getErrorOptions(current, this.features);
|
|
1319
|
+
return createAggregateErrorNode(
|
|
1320
|
+
id,
|
|
1321
|
+
current,
|
|
1322
|
+
options ? await this.parseProperties(options) : void 0
|
|
1323
|
+
);
|
|
919
1324
|
}
|
|
920
1325
|
async parseMap(id, current) {
|
|
921
1326
|
const keyNodes = [];
|
|
922
1327
|
const valueNodes = [];
|
|
923
|
-
const deferredKey = [];
|
|
924
|
-
const deferredValue = [];
|
|
925
1328
|
for (const [key, value] of current.entries()) {
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
keyNodes.push(await this.parse(deferredKey[i]));
|
|
936
|
-
valueNodes.push(await this.parse(deferredValue[i]));
|
|
937
|
-
}
|
|
938
|
-
return {
|
|
939
|
-
t: 8 /* Map */,
|
|
940
|
-
i: id,
|
|
941
|
-
s: void 0,
|
|
942
|
-
l: void 0,
|
|
943
|
-
c: void 0,
|
|
944
|
-
m: void 0,
|
|
945
|
-
p: void 0,
|
|
946
|
-
e: { k: keyNodes, v: valueNodes, s: current.size },
|
|
947
|
-
a: void 0,
|
|
948
|
-
f: void 0,
|
|
949
|
-
b: void 0,
|
|
950
|
-
o: void 0
|
|
951
|
-
};
|
|
1329
|
+
keyNodes.push(await this.parse(key));
|
|
1330
|
+
valueNodes.push(await this.parse(value));
|
|
1331
|
+
}
|
|
1332
|
+
return this.createMapNode(
|
|
1333
|
+
id,
|
|
1334
|
+
keyNodes,
|
|
1335
|
+
valueNodes,
|
|
1336
|
+
current.size
|
|
1337
|
+
);
|
|
952
1338
|
}
|
|
953
1339
|
async parseSet(id, current) {
|
|
954
|
-
const
|
|
955
|
-
const deferred = [];
|
|
1340
|
+
const items = [];
|
|
956
1341
|
for (const item of current.keys()) {
|
|
957
|
-
|
|
958
|
-
deferred.push(item);
|
|
959
|
-
} else {
|
|
960
|
-
nodes.push(await this.parse(item));
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
for (let i = 0, len = deferred.length; i < len; i++) {
|
|
964
|
-
nodes.push(await this.parse(deferred[i]));
|
|
1342
|
+
items.push(await this.parse(item));
|
|
965
1343
|
}
|
|
966
|
-
return
|
|
967
|
-
t: 7 /* Set */,
|
|
968
|
-
i: id,
|
|
969
|
-
s: void 0,
|
|
970
|
-
l: current.size,
|
|
971
|
-
c: void 0,
|
|
972
|
-
m: void 0,
|
|
973
|
-
p: void 0,
|
|
974
|
-
e: void 0,
|
|
975
|
-
a: nodes,
|
|
976
|
-
f: void 0,
|
|
977
|
-
b: void 0,
|
|
978
|
-
o: void 0
|
|
979
|
-
};
|
|
1344
|
+
return createSetNode(id, current.size, items);
|
|
980
1345
|
}
|
|
981
1346
|
async parseBlob(id, current) {
|
|
982
1347
|
return {
|
|
@@ -1014,22 +1379,9 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1014
1379
|
const size = entries.length;
|
|
1015
1380
|
const keyNodes = [];
|
|
1016
1381
|
const valueNodes = [];
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
key = serializeString(entries[i][0]);
|
|
1021
|
-
item = entries[i][1];
|
|
1022
|
-
if (this.isIterable(item)) {
|
|
1023
|
-
deferredKeys.push(key);
|
|
1024
|
-
deferredValues.push(item);
|
|
1025
|
-
} else {
|
|
1026
|
-
keyNodes.push(key);
|
|
1027
|
-
valueNodes.push(await this.parse(item));
|
|
1028
|
-
}
|
|
1029
|
-
}
|
|
1030
|
-
for (let i = 0, len = deferredKeys.length; i < len; i++) {
|
|
1031
|
-
keyNodes.push(deferredKeys[i]);
|
|
1032
|
-
valueNodes.push(await this.parse(deferredValues[i]));
|
|
1382
|
+
for (let i = 0; i < size; i++) {
|
|
1383
|
+
keyNodes.push(serializeString(entries[i][0]));
|
|
1384
|
+
valueNodes.push(await this.parse(entries[i][1]));
|
|
1033
1385
|
}
|
|
1034
1386
|
return {
|
|
1035
1387
|
k: keyNodes,
|
|
@@ -1057,113 +1409,73 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1057
1409
|
o: void 0
|
|
1058
1410
|
};
|
|
1059
1411
|
}
|
|
1060
|
-
async parseFormData(id, current) {
|
|
1061
|
-
const items = [];
|
|
1062
|
-
current.forEach((value, key) => {
|
|
1063
|
-
items.push([key, value]);
|
|
1064
|
-
});
|
|
1065
|
-
return {
|
|
1066
|
-
t: 26 /* FormData */,
|
|
1067
|
-
i: id,
|
|
1068
|
-
s: void 0,
|
|
1069
|
-
l: void 0,
|
|
1070
|
-
c: void 0,
|
|
1071
|
-
m: void 0,
|
|
1072
|
-
p: void 0,
|
|
1073
|
-
e: await this.parsePlainProperties(items),
|
|
1074
|
-
a: void 0,
|
|
1075
|
-
f: void 0,
|
|
1076
|
-
b: void 0,
|
|
1077
|
-
o: void 0
|
|
1078
|
-
};
|
|
1079
|
-
}
|
|
1080
|
-
async parseRequest(id, current) {
|
|
1081
|
-
return {
|
|
1082
|
-
t: 35 /* Request */,
|
|
1083
|
-
i: id,
|
|
1084
|
-
s: serializeString(current.url),
|
|
1085
|
-
l: void 0,
|
|
1086
|
-
c: void 0,
|
|
1087
|
-
m: void 0,
|
|
1088
|
-
p: void 0,
|
|
1089
|
-
e: void 0,
|
|
1090
|
-
f: await this.parse(
|
|
1091
|
-
createRequestOptions(current, current.body ? await current.clone().arrayBuffer() : null)
|
|
1092
|
-
),
|
|
1093
|
-
a: void 0,
|
|
1094
|
-
b: void 0,
|
|
1095
|
-
o: void 0
|
|
1096
|
-
};
|
|
1097
|
-
}
|
|
1098
|
-
async parseResponse(id, current) {
|
|
1099
|
-
return {
|
|
1100
|
-
t: 36 /* Response */,
|
|
1101
|
-
i: id,
|
|
1102
|
-
s: void 0,
|
|
1103
|
-
l: void 0,
|
|
1104
|
-
c: void 0,
|
|
1105
|
-
m: void 0,
|
|
1106
|
-
p: void 0,
|
|
1107
|
-
e: void 0,
|
|
1108
|
-
f: void 0,
|
|
1109
|
-
a: [
|
|
1110
|
-
current.body ? await this.parse(await current.clone().arrayBuffer()) : NULL_NODE,
|
|
1111
|
-
await this.parse(createResponseOptions(current))
|
|
1112
|
-
],
|
|
1113
|
-
b: void 0,
|
|
1114
|
-
o: void 0
|
|
1115
|
-
};
|
|
1116
|
-
}
|
|
1117
|
-
async parseEvent(id, current) {
|
|
1412
|
+
async parseFormData(id, current) {
|
|
1413
|
+
const items = [];
|
|
1414
|
+
current.forEach((value, key) => {
|
|
1415
|
+
items.push([key, value]);
|
|
1416
|
+
});
|
|
1118
1417
|
return {
|
|
1119
|
-
t:
|
|
1418
|
+
t: 26 /* FormData */,
|
|
1120
1419
|
i: id,
|
|
1121
|
-
s:
|
|
1420
|
+
s: void 0,
|
|
1122
1421
|
l: void 0,
|
|
1123
1422
|
c: void 0,
|
|
1124
1423
|
m: void 0,
|
|
1125
1424
|
p: void 0,
|
|
1126
|
-
e:
|
|
1425
|
+
e: await this.parsePlainProperties(items),
|
|
1127
1426
|
a: void 0,
|
|
1128
|
-
f:
|
|
1427
|
+
f: void 0,
|
|
1129
1428
|
b: void 0,
|
|
1130
1429
|
o: void 0
|
|
1131
1430
|
};
|
|
1132
1431
|
}
|
|
1133
|
-
async
|
|
1432
|
+
async parseRequest(id, current) {
|
|
1134
1433
|
return {
|
|
1135
|
-
t:
|
|
1434
|
+
t: 35 /* Request */,
|
|
1136
1435
|
i: id,
|
|
1137
|
-
s: serializeString(current.
|
|
1436
|
+
s: serializeString(current.url),
|
|
1138
1437
|
l: void 0,
|
|
1139
1438
|
c: void 0,
|
|
1140
1439
|
m: void 0,
|
|
1141
1440
|
p: void 0,
|
|
1142
1441
|
e: void 0,
|
|
1442
|
+
f: await this.parse(
|
|
1443
|
+
createRequestOptions(current, current.body ? await current.clone().arrayBuffer() : null)
|
|
1444
|
+
),
|
|
1143
1445
|
a: void 0,
|
|
1144
|
-
f: await this.parse(createCustomEventOptions(current)),
|
|
1145
1446
|
b: void 0,
|
|
1146
1447
|
o: void 0
|
|
1147
1448
|
};
|
|
1148
1449
|
}
|
|
1149
|
-
async
|
|
1150
|
-
const options = getErrorOptions(current, this.features);
|
|
1151
|
-
const optionsNode = options ? await this.parseProperties(options) : void 0;
|
|
1450
|
+
async parseResponse(id, current) {
|
|
1152
1451
|
return {
|
|
1153
|
-
t:
|
|
1452
|
+
t: 36 /* Response */,
|
|
1154
1453
|
i: id,
|
|
1155
1454
|
s: void 0,
|
|
1156
1455
|
l: void 0,
|
|
1157
1456
|
c: void 0,
|
|
1158
|
-
m:
|
|
1159
|
-
p:
|
|
1457
|
+
m: void 0,
|
|
1458
|
+
p: void 0,
|
|
1160
1459
|
e: void 0,
|
|
1161
|
-
a: void 0,
|
|
1162
1460
|
f: void 0,
|
|
1461
|
+
a: [
|
|
1462
|
+
current.body ? await this.parse(await current.clone().arrayBuffer()) : NULL_NODE,
|
|
1463
|
+
await this.parse(createResponseOptions(current))
|
|
1464
|
+
],
|
|
1163
1465
|
b: void 0,
|
|
1164
1466
|
o: void 0
|
|
1165
1467
|
};
|
|
1166
1468
|
}
|
|
1469
|
+
async parseEvent(id, current) {
|
|
1470
|
+
return createEventNode(id, current.type, await this.parse(createEventOptions(current)));
|
|
1471
|
+
}
|
|
1472
|
+
async parseCustomEvent(id, current) {
|
|
1473
|
+
return createCustomEventNode(
|
|
1474
|
+
id,
|
|
1475
|
+
current.type,
|
|
1476
|
+
await this.parse(createCustomEventOptions(current))
|
|
1477
|
+
);
|
|
1478
|
+
}
|
|
1167
1479
|
async parsePromise(id, current) {
|
|
1168
1480
|
const [status, result] = await promiseToResult(current);
|
|
1169
1481
|
return {
|
|
@@ -1199,6 +1511,15 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1199
1511
|
}
|
|
1200
1512
|
return void 0;
|
|
1201
1513
|
}
|
|
1514
|
+
async parseReadableStream(id, current) {
|
|
1515
|
+
return createReadableStreamNode(
|
|
1516
|
+
id,
|
|
1517
|
+
this.parseReadableStreamFactory(),
|
|
1518
|
+
await this.parse(
|
|
1519
|
+
await readableStreamToSequence(current)
|
|
1520
|
+
)
|
|
1521
|
+
);
|
|
1522
|
+
}
|
|
1202
1523
|
async parseObject(id, current) {
|
|
1203
1524
|
if (Array.isArray(current)) {
|
|
1204
1525
|
return this.parseArray(id, current);
|
|
@@ -1306,6 +1627,8 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1306
1627
|
return this.parseCustomEvent(id, current);
|
|
1307
1628
|
case (typeof DOMException !== "undefined" ? DOMException : UNIVERSAL_SENTINEL):
|
|
1308
1629
|
return createDOMExceptionNode(id, current);
|
|
1630
|
+
case (typeof ReadableStream !== "undefined" ? ReadableStream : UNIVERSAL_SENTINEL):
|
|
1631
|
+
return this.parseReadableStream(id, current);
|
|
1309
1632
|
default:
|
|
1310
1633
|
break;
|
|
1311
1634
|
}
|
|
@@ -1320,7 +1643,7 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1320
1643
|
if (current instanceof Error) {
|
|
1321
1644
|
return this.parseError(id, current);
|
|
1322
1645
|
}
|
|
1323
|
-
if (currentFeatures & 1024 /* Symbol */ && Symbol.iterator in current) {
|
|
1646
|
+
if (currentFeatures & 1024 /* Symbol */ && (Symbol.iterator in current || Symbol.asyncIterator in current)) {
|
|
1324
1647
|
return this.parsePlainObject(id, current, !!currentClass);
|
|
1325
1648
|
}
|
|
1326
1649
|
throw new UnsupportedTypeError(current);
|
|
@@ -1350,14 +1673,10 @@ var BaseAsyncParserContext = class extends BaseParserContext {
|
|
|
1350
1673
|
const id = this.getReference(current);
|
|
1351
1674
|
return typeof id === "number" ? this.parseObject(id, current) : id;
|
|
1352
1675
|
}
|
|
1353
|
-
case "symbol":
|
|
1354
|
-
|
|
1355
|
-
const id = this.getReference(current);
|
|
1356
|
-
return typeof id === "number" ? createWKSymbolNode(id, current) : id;
|
|
1357
|
-
}
|
|
1676
|
+
case "symbol":
|
|
1677
|
+
return this.parseWKSymbol(current);
|
|
1358
1678
|
case "function":
|
|
1359
|
-
|
|
1360
|
-
return this.getStrictReference(current);
|
|
1679
|
+
return this.parseFunction(current);
|
|
1361
1680
|
default:
|
|
1362
1681
|
throw new UnsupportedTypeError(current);
|
|
1363
1682
|
}
|
|
@@ -1372,50 +1691,90 @@ var AsyncParserContext = class extends BaseAsyncParserContext {
|
|
|
1372
1691
|
}
|
|
1373
1692
|
};
|
|
1374
1693
|
|
|
1375
|
-
// src/core/
|
|
1376
|
-
function
|
|
1377
|
-
switch (
|
|
1378
|
-
case
|
|
1379
|
-
return
|
|
1380
|
-
case
|
|
1381
|
-
return
|
|
1382
|
-
case
|
|
1383
|
-
return
|
|
1694
|
+
// src/core/utils/typed-array.ts
|
|
1695
|
+
function getTypedArrayConstructor(name) {
|
|
1696
|
+
switch (name) {
|
|
1697
|
+
case "Int8Array":
|
|
1698
|
+
return Int8Array;
|
|
1699
|
+
case "Int16Array":
|
|
1700
|
+
return Int16Array;
|
|
1701
|
+
case "Int32Array":
|
|
1702
|
+
return Int32Array;
|
|
1703
|
+
case "Uint8Array":
|
|
1704
|
+
return Uint8Array;
|
|
1705
|
+
case "Uint16Array":
|
|
1706
|
+
return Uint16Array;
|
|
1707
|
+
case "Uint32Array":
|
|
1708
|
+
return Uint32Array;
|
|
1709
|
+
case "Uint8ClampedArray":
|
|
1710
|
+
return Uint8ClampedArray;
|
|
1711
|
+
case "Float32Array":
|
|
1712
|
+
return Float32Array;
|
|
1713
|
+
case "Float64Array":
|
|
1714
|
+
return Float64Array;
|
|
1715
|
+
case "BigInt64Array":
|
|
1716
|
+
return BigInt64Array;
|
|
1717
|
+
case "BigUint64Array":
|
|
1718
|
+
return BigUint64Array;
|
|
1384
1719
|
default:
|
|
1385
|
-
|
|
1720
|
+
throw new Error(`Unknown TypedArray "${name}"`);
|
|
1386
1721
|
}
|
|
1387
1722
|
}
|
|
1723
|
+
|
|
1724
|
+
// src/core/utils/deferred.ts
|
|
1388
1725
|
function createDeferred() {
|
|
1389
1726
|
let resolve;
|
|
1390
1727
|
let reject;
|
|
1391
1728
|
return {
|
|
1392
|
-
resolve(v) {
|
|
1393
|
-
resolve(v);
|
|
1394
|
-
},
|
|
1395
|
-
reject(v) {
|
|
1396
|
-
reject(v);
|
|
1397
|
-
},
|
|
1398
1729
|
promise: new Promise((res, rej) => {
|
|
1399
1730
|
resolve = res;
|
|
1400
1731
|
reject = rej;
|
|
1401
|
-
})
|
|
1732
|
+
}),
|
|
1733
|
+
resolve(value) {
|
|
1734
|
+
resolve(value);
|
|
1735
|
+
},
|
|
1736
|
+
reject(value) {
|
|
1737
|
+
reject(value);
|
|
1738
|
+
}
|
|
1739
|
+
};
|
|
1740
|
+
}
|
|
1741
|
+
function createDeferredStream() {
|
|
1742
|
+
let controller;
|
|
1743
|
+
return {
|
|
1744
|
+
stream: new ReadableStream({
|
|
1745
|
+
start(current) {
|
|
1746
|
+
controller = current;
|
|
1747
|
+
}
|
|
1748
|
+
}),
|
|
1749
|
+
close() {
|
|
1750
|
+
controller.close();
|
|
1751
|
+
},
|
|
1752
|
+
enqueue(data) {
|
|
1753
|
+
controller.enqueue(data);
|
|
1754
|
+
},
|
|
1755
|
+
error(e) {
|
|
1756
|
+
controller.error(e);
|
|
1757
|
+
}
|
|
1402
1758
|
};
|
|
1403
1759
|
}
|
|
1404
|
-
|
|
1760
|
+
|
|
1761
|
+
// src/core/context/deserializer.ts
|
|
1762
|
+
function applyObjectFlag(obj, flag) {
|
|
1763
|
+
switch (flag) {
|
|
1764
|
+
case 3 /* Frozen */:
|
|
1765
|
+
return Object.freeze(obj);
|
|
1766
|
+
case 1 /* NonExtensible */:
|
|
1767
|
+
return Object.preventExtensions(obj);
|
|
1768
|
+
case 2 /* Sealed */:
|
|
1769
|
+
return Object.seal(obj);
|
|
1770
|
+
default:
|
|
1771
|
+
return obj;
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
var BaseDeserializerContext = class {
|
|
1405
1775
|
constructor(options) {
|
|
1406
|
-
/**
|
|
1407
|
-
* Mapping ids to values
|
|
1408
|
-
* @private
|
|
1409
|
-
*/
|
|
1410
|
-
this.values = /* @__PURE__ */ new Map();
|
|
1411
1776
|
this.plugins = options.plugins;
|
|
1412
|
-
this.refs = new
|
|
1413
|
-
}
|
|
1414
|
-
assignIndexedValue(index, value) {
|
|
1415
|
-
if (this.refs.has(index)) {
|
|
1416
|
-
this.values.set(index, value);
|
|
1417
|
-
}
|
|
1418
|
-
return value;
|
|
1777
|
+
this.refs = options.refs || /* @__PURE__ */ new Map();
|
|
1419
1778
|
}
|
|
1420
1779
|
deserializeReference(node) {
|
|
1421
1780
|
return this.assignIndexedValue(node.i, getReference(deserializeString(node.s)));
|
|
@@ -1439,23 +1798,14 @@ var VanillaDeserializerContext = class {
|
|
|
1439
1798
|
deserializeProperties(node, result) {
|
|
1440
1799
|
const len = node.s;
|
|
1441
1800
|
if (len) {
|
|
1442
|
-
let key;
|
|
1443
|
-
let value;
|
|
1444
1801
|
const keys = node.k;
|
|
1445
1802
|
const vals = node.v;
|
|
1446
|
-
for (let i = 0; i < len; i++) {
|
|
1803
|
+
for (let i = 0, key; i < len; i++) {
|
|
1447
1804
|
key = keys[i];
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
const current = value;
|
|
1453
|
-
result[Symbol.iterator] = () => current.values();
|
|
1454
|
-
}
|
|
1455
|
-
break;
|
|
1456
|
-
default:
|
|
1457
|
-
result[deserializeString(key)] = value;
|
|
1458
|
-
break;
|
|
1805
|
+
if (typeof key === "string") {
|
|
1806
|
+
result[deserializeString(key)] = this.deserialize(vals[i]);
|
|
1807
|
+
} else {
|
|
1808
|
+
result[this.deserialize(key)] = this.deserialize(vals[i]);
|
|
1459
1809
|
}
|
|
1460
1810
|
}
|
|
1461
1811
|
}
|
|
@@ -1547,14 +1897,14 @@ var VanillaDeserializerContext = class {
|
|
|
1547
1897
|
}
|
|
1548
1898
|
async deserializePromise(node) {
|
|
1549
1899
|
const deferred = createDeferred();
|
|
1550
|
-
const result = this.assignIndexedValue(node.i, deferred
|
|
1900
|
+
const result = this.assignIndexedValue(node.i, deferred);
|
|
1551
1901
|
const deserialized = this.deserialize(node.f);
|
|
1552
1902
|
if (node.s) {
|
|
1553
1903
|
deferred.resolve(deserialized);
|
|
1554
1904
|
} else {
|
|
1555
1905
|
deferred.reject(deserialized);
|
|
1556
1906
|
}
|
|
1557
|
-
return result;
|
|
1907
|
+
return result.promise;
|
|
1558
1908
|
}
|
|
1559
1909
|
deserializeURL(node) {
|
|
1560
1910
|
return this.assignIndexedValue(node.i, new URL(deserializeString(node.s)));
|
|
@@ -1657,14 +2007,88 @@ var VanillaDeserializerContext = class {
|
|
|
1657
2007
|
for (let i = 0, len = currentPlugins.length; i < len; i++) {
|
|
1658
2008
|
const plugin = currentPlugins[i];
|
|
1659
2009
|
if (plugin.tag === node.c) {
|
|
1660
|
-
return
|
|
1661
|
-
|
|
1662
|
-
|
|
2010
|
+
return this.assignIndexedValue(
|
|
2011
|
+
node.i,
|
|
2012
|
+
plugin.deserialize(node.s, this, {
|
|
2013
|
+
id: node.i
|
|
2014
|
+
})
|
|
2015
|
+
);
|
|
1663
2016
|
}
|
|
1664
2017
|
}
|
|
1665
2018
|
}
|
|
1666
2019
|
throw new Error('Missing plugin for tag "' + node.c + '".');
|
|
1667
2020
|
}
|
|
2021
|
+
deserializePromiseConstructor(node) {
|
|
2022
|
+
return this.assignIndexedValue(
|
|
2023
|
+
node.i,
|
|
2024
|
+
createDeferred()
|
|
2025
|
+
).promise;
|
|
2026
|
+
}
|
|
2027
|
+
deserializePromiseResolve(node) {
|
|
2028
|
+
const deferred = this.refs.get(node.i);
|
|
2029
|
+
assert(deferred, new Error("Missing Promise instance."));
|
|
2030
|
+
deferred.resolve(
|
|
2031
|
+
this.deserialize(node.f)
|
|
2032
|
+
);
|
|
2033
|
+
return void 0;
|
|
2034
|
+
}
|
|
2035
|
+
deserializePromiseReject(node) {
|
|
2036
|
+
const deferred = this.refs.get(node.i);
|
|
2037
|
+
assert(deferred, new Error("Missing Promise instance."));
|
|
2038
|
+
deferred.reject(
|
|
2039
|
+
this.deserialize(node.f)
|
|
2040
|
+
);
|
|
2041
|
+
return void 0;
|
|
2042
|
+
}
|
|
2043
|
+
deserializeReadableStreamConstructor(node) {
|
|
2044
|
+
return this.assignIndexedValue(
|
|
2045
|
+
node.i,
|
|
2046
|
+
createDeferredStream()
|
|
2047
|
+
).stream;
|
|
2048
|
+
}
|
|
2049
|
+
deserializeReadableStreamEnqueue(node) {
|
|
2050
|
+
const deferred = this.refs.get(node.i);
|
|
2051
|
+
assert(deferred, new Error("Missing ReadableStream instance."));
|
|
2052
|
+
deferred.enqueue(
|
|
2053
|
+
this.deserialize(node.f)
|
|
2054
|
+
);
|
|
2055
|
+
return void 0;
|
|
2056
|
+
}
|
|
2057
|
+
deserializeReadableStreamError(node) {
|
|
2058
|
+
const deferred = this.refs.get(node.i);
|
|
2059
|
+
assert(deferred, new Error("Missing Promise instance."));
|
|
2060
|
+
deferred.error(
|
|
2061
|
+
this.deserialize(node.f)
|
|
2062
|
+
);
|
|
2063
|
+
return void 0;
|
|
2064
|
+
}
|
|
2065
|
+
deserializeReadableStreamClose(node) {
|
|
2066
|
+
const deferred = this.refs.get(node.i);
|
|
2067
|
+
assert(deferred, new Error("Missing Promise instance."));
|
|
2068
|
+
deferred.close();
|
|
2069
|
+
return void 0;
|
|
2070
|
+
}
|
|
2071
|
+
deserializeIteratorFactoryInstance(node) {
|
|
2072
|
+
const source = this.deserialize(node.a[1]);
|
|
2073
|
+
return sequenceToIterator(source);
|
|
2074
|
+
}
|
|
2075
|
+
deserializeAsyncIteratorFactoryInstance(node) {
|
|
2076
|
+
const source = this.deserialize(node.a[1]);
|
|
2077
|
+
if (source.constructor === ReadableStream) {
|
|
2078
|
+
return readableStreamToAsyncIterator(
|
|
2079
|
+
source
|
|
2080
|
+
);
|
|
2081
|
+
}
|
|
2082
|
+
return sequenceToAsyncIterator(source);
|
|
2083
|
+
}
|
|
2084
|
+
deserializeReadableStream(node) {
|
|
2085
|
+
return this.assignIndexedValue(
|
|
2086
|
+
node.i,
|
|
2087
|
+
sequenceToReadableStream(
|
|
2088
|
+
this.deserialize(node.a[1])
|
|
2089
|
+
)
|
|
2090
|
+
);
|
|
2091
|
+
}
|
|
1668
2092
|
deserialize(node) {
|
|
1669
2093
|
switch (node.t) {
|
|
1670
2094
|
case 2 /* Constant */:
|
|
@@ -1676,7 +2100,7 @@ var VanillaDeserializerContext = class {
|
|
|
1676
2100
|
case 3 /* BigInt */:
|
|
1677
2101
|
return BigInt(node.s);
|
|
1678
2102
|
case 4 /* IndexedValue */:
|
|
1679
|
-
return this.
|
|
2103
|
+
return this.refs.get(node.i);
|
|
1680
2104
|
case 20 /* Reference */:
|
|
1681
2105
|
return this.deserializeReference(node);
|
|
1682
2106
|
case 9 /* Array */:
|
|
@@ -1733,13 +2157,62 @@ var VanillaDeserializerContext = class {
|
|
|
1733
2157
|
return this.deserializeDOMException(node);
|
|
1734
2158
|
case 40 /* Plugin */:
|
|
1735
2159
|
return this.deserializePlugin(node);
|
|
2160
|
+
case 28 /* PromiseConstructor */:
|
|
2161
|
+
return this.deserializePromiseConstructor(node);
|
|
2162
|
+
case 29 /* PromiseResolve */:
|
|
2163
|
+
return this.deserializePromiseResolve(node);
|
|
2164
|
+
case 30 /* PromiseReject */:
|
|
2165
|
+
return this.deserializePromiseReject(node);
|
|
2166
|
+
case 31 /* ReadableStreamConstructor */:
|
|
2167
|
+
return this.deserializeReadableStreamConstructor(node);
|
|
2168
|
+
case 32 /* ReadableStreamEnqueue */:
|
|
2169
|
+
return this.deserializeReadableStreamEnqueue(node);
|
|
2170
|
+
case 34 /* ReadableStreamError */:
|
|
2171
|
+
return this.deserializeReadableStreamError(node);
|
|
2172
|
+
case 33 /* ReadableStreamClose */:
|
|
2173
|
+
return this.deserializeReadableStreamClose(node);
|
|
2174
|
+
case 43 /* IteratorFactoryInstance */:
|
|
2175
|
+
return this.deserializeIteratorFactoryInstance(node);
|
|
2176
|
+
case 45 /* AsyncIteratorFactoryInstance */:
|
|
2177
|
+
return this.deserializeAsyncIteratorFactoryInstance(node);
|
|
2178
|
+
case 46 /* ReadableStream */:
|
|
2179
|
+
return this.deserializeReadableStream(node);
|
|
2180
|
+
case 41 /* MapSentinel */:
|
|
2181
|
+
case 42 /* IteratorFactory */:
|
|
2182
|
+
case 44 /* AsyncIteratorFactory */:
|
|
2183
|
+
case 47 /* ReadableStreamFactory */:
|
|
1736
2184
|
default:
|
|
1737
2185
|
throw new Error("invariant");
|
|
1738
2186
|
}
|
|
1739
2187
|
}
|
|
1740
2188
|
};
|
|
1741
2189
|
|
|
1742
|
-
// src/core/
|
|
2190
|
+
// src/core/tree/deserializer.ts
|
|
2191
|
+
var VanillaDeserializerContext = class extends BaseDeserializerContext {
|
|
2192
|
+
constructor(options) {
|
|
2193
|
+
super({
|
|
2194
|
+
plugins: options.plugins,
|
|
2195
|
+
refs: void 0
|
|
2196
|
+
});
|
|
2197
|
+
this.mode = "vanilla";
|
|
2198
|
+
this.marked = new Set(options.markedRefs);
|
|
2199
|
+
}
|
|
2200
|
+
assignIndexedValue(index, value) {
|
|
2201
|
+
if (this.marked.has(index)) {
|
|
2202
|
+
this.refs.set(index, value);
|
|
2203
|
+
}
|
|
2204
|
+
return value;
|
|
2205
|
+
}
|
|
2206
|
+
};
|
|
2207
|
+
|
|
2208
|
+
// src/core/utils/is-valid-identifier.ts
|
|
2209
|
+
var IDENTIFIER_CHECK = /^[$A-Z_][0-9A-Z_$]*$/i;
|
|
2210
|
+
function isValidIdentifier(name) {
|
|
2211
|
+
const char = name[0];
|
|
2212
|
+
return (char === "$" || char === "_" || char >= "A" && char <= "Z" || char >= "a" && char <= "z") && IDENTIFIER_CHECK.test(name);
|
|
2213
|
+
}
|
|
2214
|
+
|
|
2215
|
+
// src/core/context/serializer.ts
|
|
1743
2216
|
function getAssignmentExpression(assignment) {
|
|
1744
2217
|
switch (assignment.t) {
|
|
1745
2218
|
case "index":
|
|
@@ -1812,10 +2285,6 @@ var SET_CONSTRUCTOR = "new Set";
|
|
|
1812
2285
|
var MAP_CONSTRUCTOR = "new Map";
|
|
1813
2286
|
var PROMISE_RESOLVE = "Promise.resolve";
|
|
1814
2287
|
var PROMISE_REJECT = "Promise.reject";
|
|
1815
|
-
var SYMBOL_ITERATOR = "Symbol.iterator";
|
|
1816
|
-
var SPECIAL_REFERENCE_VALUE = {
|
|
1817
|
-
[0 /* Sentinel */]: "[]"
|
|
1818
|
-
};
|
|
1819
2288
|
var OBJECT_FLAG_CONSTRUCTOR = {
|
|
1820
2289
|
[3 /* Frozen */]: "Object.freeze",
|
|
1821
2290
|
[2 /* Sealed */]: "Object.seal",
|
|
@@ -1839,11 +2308,24 @@ var BaseSerializerContext = class {
|
|
|
1839
2308
|
* @private
|
|
1840
2309
|
*/
|
|
1841
2310
|
this.assignments = [];
|
|
1842
|
-
this.specials = /* @__PURE__ */ new Set();
|
|
1843
2311
|
this.plugins = options.plugins;
|
|
1844
2312
|
this.features = options.features;
|
|
1845
2313
|
this.marked = new Set(options.markedRefs);
|
|
1846
2314
|
}
|
|
2315
|
+
createFunction(parameters, body) {
|
|
2316
|
+
if (this.features & 4 /* ArrowFunction */) {
|
|
2317
|
+
const joined = parameters.length === 1 ? parameters[0] : "(" + parameters.join(",") + ")";
|
|
2318
|
+
return joined + "=>" + body;
|
|
2319
|
+
}
|
|
2320
|
+
return "function(" + parameters.join(",") + "){return " + body + "}";
|
|
2321
|
+
}
|
|
2322
|
+
createEffectfulFunction(parameters, body) {
|
|
2323
|
+
if (this.features & 4 /* ArrowFunction */) {
|
|
2324
|
+
const joined = parameters.length === 1 ? parameters[0] : "(" + parameters.join(",") + ")";
|
|
2325
|
+
return joined + "=>{" + body + "}";
|
|
2326
|
+
}
|
|
2327
|
+
return "function(" + parameters.join(",") + "){" + body + "}";
|
|
2328
|
+
}
|
|
1847
2329
|
/**
|
|
1848
2330
|
* A tiny function that tells if a reference
|
|
1849
2331
|
* is to be accessed. This is a requirement for
|
|
@@ -1856,18 +2338,6 @@ var BaseSerializerContext = class {
|
|
|
1856
2338
|
isMarked(id) {
|
|
1857
2339
|
return this.marked.has(id);
|
|
1858
2340
|
}
|
|
1859
|
-
/**
|
|
1860
|
-
* Generates special references that isn't provided by the user
|
|
1861
|
-
* but by the script.
|
|
1862
|
-
*/
|
|
1863
|
-
getSpecialReference(ref) {
|
|
1864
|
-
const param = this.getRefParam("_" + ref);
|
|
1865
|
-
if (this.specials.has(ref)) {
|
|
1866
|
-
return param;
|
|
1867
|
-
}
|
|
1868
|
-
this.specials.add(ref);
|
|
1869
|
-
return param + "=" + SPECIAL_REFERENCE_VALUE[ref];
|
|
1870
|
-
}
|
|
1871
2341
|
pushObjectFlag(flag, id) {
|
|
1872
2342
|
if (flag !== 0 /* None */) {
|
|
1873
2343
|
this.markRef(id);
|
|
@@ -1949,24 +2419,6 @@ var BaseSerializerContext = class {
|
|
|
1949
2419
|
serializeReference(node) {
|
|
1950
2420
|
return this.assignIndexedValue(node.i, REFERENCES_KEY + '.get("' + node.s + '")');
|
|
1951
2421
|
}
|
|
1952
|
-
getIterableAccess() {
|
|
1953
|
-
return this.features & 2 /* ArrayPrototypeValues */ ? ".values()" : "[" + SYMBOL_ITERATOR + "]()";
|
|
1954
|
-
}
|
|
1955
|
-
serializeIterable(node) {
|
|
1956
|
-
const key = "[" + SYMBOL_ITERATOR + "]";
|
|
1957
|
-
const parent = this.stack;
|
|
1958
|
-
this.stack = [];
|
|
1959
|
-
let serialized = this.serialize(node) + this.getIterableAccess();
|
|
1960
|
-
this.stack = parent;
|
|
1961
|
-
if (this.features & 4 /* ArrowFunction */) {
|
|
1962
|
-
serialized = ":()=>" + serialized;
|
|
1963
|
-
} else if (this.features & 64 /* MethodShorthand */) {
|
|
1964
|
-
serialized = "(){return " + serialized + "}";
|
|
1965
|
-
} else {
|
|
1966
|
-
serialized = ":function(){return " + serialized + "}";
|
|
1967
|
-
}
|
|
1968
|
-
return key + serialized;
|
|
1969
|
-
}
|
|
1970
2422
|
serializeArrayItem(id, item, index) {
|
|
1971
2423
|
if (item) {
|
|
1972
2424
|
if (this.isIndexedValueInStack(item)) {
|
|
@@ -1996,36 +2448,33 @@ var BaseSerializerContext = class {
|
|
|
1996
2448
|
}
|
|
1997
2449
|
return this.assignIndexedValue(id, "[]");
|
|
1998
2450
|
}
|
|
1999
|
-
serializeProperty(
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
const
|
|
2005
|
-
|
|
2006
|
-
if (
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
this.createObjectAssign(id, key, refParam);
|
|
2011
|
-
} else {
|
|
2012
|
-
this.createArrayAssign(id, isIdentifier ? key : '"' + key + '"', refParam);
|
|
2013
|
-
}
|
|
2014
|
-
return "";
|
|
2451
|
+
serializeProperty(source, key, val) {
|
|
2452
|
+
if (typeof key === "string") {
|
|
2453
|
+
const check = Number(key);
|
|
2454
|
+
const isIdentifier = check >= 0 || isValidIdentifier(key);
|
|
2455
|
+
if (this.isIndexedValueInStack(val)) {
|
|
2456
|
+
const refParam = this.getRefParam(val.i);
|
|
2457
|
+
this.markRef(source.i);
|
|
2458
|
+
if (isIdentifier && check !== check) {
|
|
2459
|
+
this.createObjectAssign(source.i, key, refParam);
|
|
2460
|
+
} else {
|
|
2461
|
+
this.createArrayAssign(source.i, isIdentifier ? key : '"' + key + '"', refParam);
|
|
2015
2462
|
}
|
|
2016
|
-
return
|
|
2463
|
+
return "";
|
|
2017
2464
|
}
|
|
2465
|
+
return (isIdentifier ? key : '"' + key + '"') + ":" + this.serialize(val);
|
|
2018
2466
|
}
|
|
2467
|
+
return "[" + this.serialize(key) + "]:" + this.serialize(val);
|
|
2019
2468
|
}
|
|
2020
|
-
serializeProperties(
|
|
2021
|
-
const len =
|
|
2469
|
+
serializeProperties(source, record) {
|
|
2470
|
+
const len = record.s;
|
|
2022
2471
|
if (len) {
|
|
2023
|
-
this.stack.push(
|
|
2024
|
-
const keys =
|
|
2025
|
-
const values =
|
|
2026
|
-
let result = this.serializeProperty(
|
|
2472
|
+
this.stack.push(source.i);
|
|
2473
|
+
const keys = record.k;
|
|
2474
|
+
const values = record.v;
|
|
2475
|
+
let result = this.serializeProperty(source, keys[0], values[0]);
|
|
2027
2476
|
for (let i = 1, item = result; i < len; i++) {
|
|
2028
|
-
item = this.serializeProperty(
|
|
2477
|
+
item = this.serializeProperty(source, keys[i], values[i]);
|
|
2029
2478
|
result += (item && result && ",") + item;
|
|
2030
2479
|
}
|
|
2031
2480
|
this.stack.pop();
|
|
@@ -2035,88 +2484,83 @@ var BaseSerializerContext = class {
|
|
|
2035
2484
|
}
|
|
2036
2485
|
serializeObject(node) {
|
|
2037
2486
|
this.pushObjectFlag(node.o, node.i);
|
|
2038
|
-
return this.assignIndexedValue(node.i, this.serializeProperties(node
|
|
2487
|
+
return this.assignIndexedValue(node.i, this.serializeProperties(node, node.p));
|
|
2039
2488
|
}
|
|
2040
|
-
serializeWithObjectAssign(
|
|
2041
|
-
const fields = this.serializeProperties(
|
|
2489
|
+
serializeWithObjectAssign(source, value, serialized) {
|
|
2490
|
+
const fields = this.serializeProperties(source, value);
|
|
2042
2491
|
if (fields !== "{}") {
|
|
2043
2492
|
return "Object.assign(" + serialized + "," + fields + ")";
|
|
2044
2493
|
}
|
|
2045
2494
|
return serialized;
|
|
2046
2495
|
}
|
|
2047
|
-
serializeAssignment(
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
this.
|
|
2055
|
-
|
|
2056
|
-
this.
|
|
2057
|
-
this.createArrayAssign(
|
|
2058
|
-
sourceID,
|
|
2059
|
-
this.getSpecialReference(0 /* Sentinel */),
|
|
2060
|
-
this.features & 4 /* ArrowFunction */ ? "()=>" + serialized : "function(){return " + serialized + "}"
|
|
2061
|
-
);
|
|
2062
|
-
this.assignments = parentAssignment;
|
|
2496
|
+
serializeAssignment(source, mainAssignments, key, value) {
|
|
2497
|
+
if (typeof key === "string") {
|
|
2498
|
+
const serialized = this.serialize(value);
|
|
2499
|
+
const check = Number(key);
|
|
2500
|
+
const isIdentifier = check >= 0 || isValidIdentifier(key);
|
|
2501
|
+
if (this.isIndexedValueInStack(value)) {
|
|
2502
|
+
if (isIdentifier && check !== check) {
|
|
2503
|
+
this.createObjectAssign(source.i, key, serialized);
|
|
2504
|
+
} else {
|
|
2505
|
+
this.createArrayAssign(source.i, isIdentifier ? key : '"' + key + '"', serialized);
|
|
2063
2506
|
}
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
if (this.isIndexedValueInStack(value)) {
|
|
2070
|
-
if (isIdentifier && check !== check) {
|
|
2071
|
-
this.createObjectAssign(sourceID, key, serialized);
|
|
2072
|
-
} else {
|
|
2073
|
-
this.createArrayAssign(sourceID, isIdentifier ? key : '"' + key + '"', serialized);
|
|
2074
|
-
}
|
|
2507
|
+
} else {
|
|
2508
|
+
const parentAssignment = this.assignments;
|
|
2509
|
+
this.assignments = mainAssignments;
|
|
2510
|
+
if (isIdentifier) {
|
|
2511
|
+
this.createObjectAssign(source.i, key, serialized);
|
|
2075
2512
|
} else {
|
|
2076
|
-
|
|
2077
|
-
this.assignments = mainAssignments;
|
|
2078
|
-
if (isIdentifier) {
|
|
2079
|
-
this.createObjectAssign(sourceID, key, serialized);
|
|
2080
|
-
} else {
|
|
2081
|
-
this.createArrayAssign(sourceID, isIdentifier ? key : '"' + key + '"', serialized);
|
|
2082
|
-
}
|
|
2083
|
-
this.assignments = parentAssignment;
|
|
2513
|
+
this.createArrayAssign(source.i, isIdentifier ? key : '"' + key + '"', serialized);
|
|
2084
2514
|
}
|
|
2515
|
+
this.assignments = parentAssignment;
|
|
2085
2516
|
}
|
|
2517
|
+
} else {
|
|
2518
|
+
const parent = this.stack;
|
|
2519
|
+
this.stack = [];
|
|
2520
|
+
const serialized = this.serialize(value);
|
|
2521
|
+
this.stack = parent;
|
|
2522
|
+
const parentAssignment = this.assignments;
|
|
2523
|
+
this.assignments = mainAssignments;
|
|
2524
|
+
this.createArrayAssign(
|
|
2525
|
+
source.i,
|
|
2526
|
+
this.serialize(key),
|
|
2527
|
+
serialized
|
|
2528
|
+
);
|
|
2529
|
+
this.assignments = parentAssignment;
|
|
2086
2530
|
}
|
|
2087
2531
|
}
|
|
2088
|
-
serializeAssignments(
|
|
2532
|
+
serializeAssignments(source, node) {
|
|
2089
2533
|
const len = node.s;
|
|
2090
2534
|
if (len) {
|
|
2091
|
-
this.stack.push(
|
|
2535
|
+
this.stack.push(source.i);
|
|
2092
2536
|
const mainAssignments = [];
|
|
2093
2537
|
const keys = node.k;
|
|
2094
2538
|
const values = node.v;
|
|
2095
2539
|
for (let i = 0; i < len; i++) {
|
|
2096
|
-
this.serializeAssignment(
|
|
2540
|
+
this.serializeAssignment(source, mainAssignments, keys[i], values[i]);
|
|
2097
2541
|
}
|
|
2098
2542
|
this.stack.pop();
|
|
2099
2543
|
return resolveAssignments(mainAssignments);
|
|
2100
2544
|
}
|
|
2101
2545
|
return void 0;
|
|
2102
2546
|
}
|
|
2103
|
-
serializeDictionary(
|
|
2104
|
-
if (p) {
|
|
2547
|
+
serializeDictionary(node, init) {
|
|
2548
|
+
if (node.p) {
|
|
2105
2549
|
if (this.features & 128 /* ObjectAssign */) {
|
|
2106
|
-
init = this.serializeWithObjectAssign(
|
|
2550
|
+
init = this.serializeWithObjectAssign(node, node.p, init);
|
|
2107
2551
|
} else {
|
|
2108
|
-
this.markRef(i);
|
|
2109
|
-
const assignments = this.serializeAssignments(
|
|
2552
|
+
this.markRef(node.i);
|
|
2553
|
+
const assignments = this.serializeAssignments(node, node.p);
|
|
2110
2554
|
if (assignments) {
|
|
2111
|
-
return "(" + this.assignIndexedValue(i, init) + "," + assignments + this.getRefParam(i) + ")";
|
|
2555
|
+
return "(" + this.assignIndexedValue(node.i, init) + "," + assignments + this.getRefParam(node.i) + ")";
|
|
2112
2556
|
}
|
|
2113
2557
|
}
|
|
2114
2558
|
}
|
|
2115
|
-
return this.assignIndexedValue(i, init);
|
|
2559
|
+
return this.assignIndexedValue(node.i, init);
|
|
2116
2560
|
}
|
|
2117
2561
|
serializeNullConstructor(node) {
|
|
2118
2562
|
this.pushObjectFlag(node.o, node.i);
|
|
2119
|
-
return this.serializeDictionary(node
|
|
2563
|
+
return this.serializeDictionary(node, NULL_CONSTRUCTOR);
|
|
2120
2564
|
}
|
|
2121
2565
|
serializeDate(node) {
|
|
2122
2566
|
return this.assignIndexedValue(node.i, 'new Date("' + node.s + '")');
|
|
@@ -2151,7 +2595,7 @@ var BaseSerializerContext = class {
|
|
|
2151
2595
|
}
|
|
2152
2596
|
return this.assignIndexedValue(id, serialized);
|
|
2153
2597
|
}
|
|
2154
|
-
serializeMapEntry(id, key, val) {
|
|
2598
|
+
serializeMapEntry(id, key, val, sentinel) {
|
|
2155
2599
|
if (this.isIndexedValueInStack(key)) {
|
|
2156
2600
|
const keyRef = this.getRefParam(key.i);
|
|
2157
2601
|
this.markRef(id);
|
|
@@ -2161,9 +2605,9 @@ var BaseSerializerContext = class {
|
|
|
2161
2605
|
return "";
|
|
2162
2606
|
}
|
|
2163
2607
|
if (val.t !== 4 /* IndexedValue */ && val.i != null && this.isMarked(val.i)) {
|
|
2164
|
-
const serialized = "(" + this.serialize(val) + ",[" +
|
|
2608
|
+
const serialized = "(" + this.serialize(val) + ",[" + sentinel + "," + sentinel + "])";
|
|
2165
2609
|
this.createSetAssignment(id, keyRef, this.getRefParam(val.i));
|
|
2166
|
-
this.createDeleteAssignment(id,
|
|
2610
|
+
this.createDeleteAssignment(id, sentinel);
|
|
2167
2611
|
return serialized;
|
|
2168
2612
|
}
|
|
2169
2613
|
const parent = this.stack;
|
|
@@ -2176,9 +2620,9 @@ var BaseSerializerContext = class {
|
|
|
2176
2620
|
const valueRef = this.getRefParam(val.i);
|
|
2177
2621
|
this.markRef(id);
|
|
2178
2622
|
if (key.t !== 4 /* IndexedValue */ && key.i != null && this.isMarked(key.i)) {
|
|
2179
|
-
const serialized = "(" + this.serialize(key) + ",[" +
|
|
2623
|
+
const serialized = "(" + this.serialize(key) + ",[" + sentinel + "," + sentinel + "])";
|
|
2180
2624
|
this.createSetAssignment(id, this.getRefParam(key.i), valueRef);
|
|
2181
|
-
this.createDeleteAssignment(id,
|
|
2625
|
+
this.createDeleteAssignment(id, sentinel);
|
|
2182
2626
|
return serialized;
|
|
2183
2627
|
}
|
|
2184
2628
|
const parent = this.stack;
|
|
@@ -2193,13 +2637,15 @@ var BaseSerializerContext = class {
|
|
|
2193
2637
|
let serialized = MAP_CONSTRUCTOR;
|
|
2194
2638
|
const size = node.e.s;
|
|
2195
2639
|
const id = node.i;
|
|
2640
|
+
const sentinel = node.f;
|
|
2641
|
+
const sentinelID = this.getRefParam(sentinel.i);
|
|
2196
2642
|
if (size) {
|
|
2197
2643
|
const keys = node.e.k;
|
|
2198
2644
|
const vals = node.e.v;
|
|
2199
2645
|
this.stack.push(id);
|
|
2200
|
-
let result = this.serializeMapEntry(id, keys[0], vals[0]);
|
|
2646
|
+
let result = this.serializeMapEntry(id, keys[0], vals[0], sentinelID);
|
|
2201
2647
|
for (let i = 1, item = result; i < size; i++) {
|
|
2202
|
-
item = this.serializeMapEntry(id, keys[i], vals[i]);
|
|
2648
|
+
item = this.serializeMapEntry(id, keys[i], vals[i], sentinelID);
|
|
2203
2649
|
result += (item && result && ",") + item;
|
|
2204
2650
|
}
|
|
2205
2651
|
this.stack.pop();
|
|
@@ -2207,6 +2653,10 @@ var BaseSerializerContext = class {
|
|
|
2207
2653
|
serialized += "([" + result + "])";
|
|
2208
2654
|
}
|
|
2209
2655
|
}
|
|
2656
|
+
if (sentinel.t === 41 /* MapSentinel */) {
|
|
2657
|
+
this.markRef(sentinel.i);
|
|
2658
|
+
serialized = "(" + this.serialize(sentinel) + "," + serialized + ")";
|
|
2659
|
+
}
|
|
2210
2660
|
return this.assignIndexedValue(id, serialized);
|
|
2211
2661
|
}
|
|
2212
2662
|
serializeArrayBuffer(node) {
|
|
@@ -2239,10 +2689,10 @@ var BaseSerializerContext = class {
|
|
|
2239
2689
|
this.stack.push(id);
|
|
2240
2690
|
const serialized = 'new AggregateError([],"' + node.m + '")';
|
|
2241
2691
|
this.stack.pop();
|
|
2242
|
-
return this.serializeDictionary(
|
|
2692
|
+
return this.serializeDictionary(node, serialized);
|
|
2243
2693
|
}
|
|
2244
2694
|
serializeError(node) {
|
|
2245
|
-
return this.serializeDictionary(node
|
|
2695
|
+
return this.serializeDictionary(node, "new " + ERROR_CONSTRUCTOR_STRING[node.s] + '("' + node.m + '")');
|
|
2246
2696
|
}
|
|
2247
2697
|
serializePromise(node) {
|
|
2248
2698
|
let serialized;
|
|
@@ -2251,17 +2701,7 @@ var BaseSerializerContext = class {
|
|
|
2251
2701
|
const constructor = node.s ? PROMISE_RESOLVE : PROMISE_REJECT;
|
|
2252
2702
|
if (this.isIndexedValueInStack(fulfilled)) {
|
|
2253
2703
|
const ref = this.getRefParam(fulfilled.i);
|
|
2254
|
-
|
|
2255
|
-
if (node.s) {
|
|
2256
|
-
serialized = constructor + "().then(()=>" + ref + ")";
|
|
2257
|
-
} else {
|
|
2258
|
-
serialized = constructor + "().catch(()=>{throw " + ref + "})";
|
|
2259
|
-
}
|
|
2260
|
-
} else if (node.s) {
|
|
2261
|
-
serialized = constructor + "().then(function(){return " + ref + "})";
|
|
2262
|
-
} else {
|
|
2263
|
-
serialized = constructor + "().catch(function(){throw " + ref + "})";
|
|
2264
|
-
}
|
|
2704
|
+
serialized = constructor + (node.s ? "().then(" + this.createFunction([], ref) + ")" : "().catch(" + this.createEffectfulFunction([], "throw " + ref) + ")");
|
|
2265
2705
|
} else {
|
|
2266
2706
|
this.stack.push(id);
|
|
2267
2707
|
const result = this.serialize(fulfilled);
|
|
@@ -2297,7 +2737,7 @@ var BaseSerializerContext = class {
|
|
|
2297
2737
|
serializeHeaders(node) {
|
|
2298
2738
|
return this.assignIndexedValue(
|
|
2299
2739
|
node.i,
|
|
2300
|
-
"new Headers(" + this.serializeProperties(node
|
|
2740
|
+
"new Headers(" + this.serializeProperties(node, node.e) + ")"
|
|
2301
2741
|
);
|
|
2302
2742
|
}
|
|
2303
2743
|
serializeFormDataEntry(id, key, value) {
|
|
@@ -2341,35 +2781,104 @@ var BaseSerializerContext = class {
|
|
|
2341
2781
|
serializeEvent(node) {
|
|
2342
2782
|
return this.assignIndexedValue(
|
|
2343
2783
|
node.i,
|
|
2344
|
-
'new Event("' + node.s + '",' + this.serialize(node.f) + ")"
|
|
2784
|
+
'new Event("' + node.s + '",' + this.serialize(node.f) + ")"
|
|
2785
|
+
);
|
|
2786
|
+
}
|
|
2787
|
+
serializeCustomEvent(node) {
|
|
2788
|
+
return this.assignIndexedValue(
|
|
2789
|
+
node.i,
|
|
2790
|
+
'new CustomEvent("' + node.s + '",' + this.serialize(node.f) + ")"
|
|
2791
|
+
);
|
|
2792
|
+
}
|
|
2793
|
+
serializeDOMException(node) {
|
|
2794
|
+
return this.assignIndexedValue(
|
|
2795
|
+
node.i,
|
|
2796
|
+
'new DOMException("' + node.s + '","' + node.c + '")'
|
|
2797
|
+
);
|
|
2798
|
+
}
|
|
2799
|
+
serializePlugin(node) {
|
|
2800
|
+
const currentPlugins = this.plugins;
|
|
2801
|
+
if (currentPlugins) {
|
|
2802
|
+
for (let i = 0, len = currentPlugins.length; i < len; i++) {
|
|
2803
|
+
const plugin = currentPlugins[i];
|
|
2804
|
+
if (plugin.tag === node.c) {
|
|
2805
|
+
return this.assignIndexedValue(
|
|
2806
|
+
node.i,
|
|
2807
|
+
plugin.serialize(node.s, this, {
|
|
2808
|
+
id: node.i
|
|
2809
|
+
})
|
|
2810
|
+
);
|
|
2811
|
+
}
|
|
2812
|
+
}
|
|
2813
|
+
}
|
|
2814
|
+
throw new Error('Missing plugin for tag "' + node.c + '".');
|
|
2815
|
+
}
|
|
2816
|
+
serializeMapSentinel(node) {
|
|
2817
|
+
return this.assignIndexedValue(
|
|
2818
|
+
node.i,
|
|
2819
|
+
"[]"
|
|
2820
|
+
);
|
|
2821
|
+
}
|
|
2822
|
+
serializeIteratorFactory(node) {
|
|
2823
|
+
return this.assignIndexedValue(
|
|
2824
|
+
node.i,
|
|
2825
|
+
this.createFunction(
|
|
2826
|
+
["s"],
|
|
2827
|
+
this.createFunction(
|
|
2828
|
+
["i", "c", "d", "t"],
|
|
2829
|
+
"(i=0,t={[" + this.serialize(node.f) + "]:" + this.createFunction([], "t") + ",next:" + this.createEffectfulFunction([], "if(i>s.d)return{done:!0,value:void 0};c=i++,d=s.v[c];if(c===s.t)throw d;return{done:c===s.d,value:d}") + "})"
|
|
2830
|
+
)
|
|
2831
|
+
)
|
|
2832
|
+
);
|
|
2833
|
+
}
|
|
2834
|
+
serializeIteratorFactoryInstance(node) {
|
|
2835
|
+
return "(" + this.serialize(node.a[0]) + ")(" + this.serialize(node.a[1]) + ")";
|
|
2836
|
+
}
|
|
2837
|
+
serializeAsyncIteratorFactory(node) {
|
|
2838
|
+
return this.assignIndexedValue(
|
|
2839
|
+
node.i,
|
|
2840
|
+
this.createFunction(
|
|
2841
|
+
["s"],
|
|
2842
|
+
this.createFunction(
|
|
2843
|
+
["i", "t"],
|
|
2844
|
+
"(i=0,t={[" + this.serialize(node.f) + "]:" + this.createFunction([], "t") + ",next:" + this.createFunction(
|
|
2845
|
+
[],
|
|
2846
|
+
"Promise.resolve().then(" + this.createEffectfulFunction(
|
|
2847
|
+
["c", "d"],
|
|
2848
|
+
"if(i>s.d)return{done:!0,value:void 0};c=i++,d=s.v[c];if(c===s.t)throw d;return{done:c===s.d,value:d}"
|
|
2849
|
+
) + ")"
|
|
2850
|
+
) + "})"
|
|
2851
|
+
)
|
|
2852
|
+
)
|
|
2345
2853
|
);
|
|
2346
2854
|
}
|
|
2347
|
-
|
|
2855
|
+
serializeAsyncIteratorFactoryInstance(node) {
|
|
2856
|
+
return "(" + this.serialize(node.a[0]) + ")(" + this.serialize(node.a[1]) + ")";
|
|
2857
|
+
}
|
|
2858
|
+
serializeReadableStream(node) {
|
|
2859
|
+
this.stack.push(node.i);
|
|
2860
|
+
const result = "(" + this.serialize(node.a[0]) + ")(" + this.serialize(node.a[1]) + ")";
|
|
2861
|
+
this.stack.pop();
|
|
2348
2862
|
return this.assignIndexedValue(
|
|
2349
2863
|
node.i,
|
|
2350
|
-
|
|
2864
|
+
result
|
|
2351
2865
|
);
|
|
2352
2866
|
}
|
|
2353
|
-
|
|
2867
|
+
serializeReadableStreamFactory(node) {
|
|
2354
2868
|
return this.assignIndexedValue(
|
|
2355
2869
|
node.i,
|
|
2356
|
-
|
|
2870
|
+
this.createFunction(
|
|
2871
|
+
["s"],
|
|
2872
|
+
"new ReadableStream({start:" + this.createFunction(
|
|
2873
|
+
["c"],
|
|
2874
|
+
"Promise.resolve().then(" + this.createEffectfulFunction(
|
|
2875
|
+
["i", "v"],
|
|
2876
|
+
"for(i=0;i<s.d;i++)c.enqueue(s.v[i]);(s.t===-1)?c.close():c.error(s.v[i])"
|
|
2877
|
+
) + ")"
|
|
2878
|
+
) + "})"
|
|
2879
|
+
)
|
|
2357
2880
|
);
|
|
2358
2881
|
}
|
|
2359
|
-
serializePlugin(node) {
|
|
2360
|
-
const currentPlugins = this.plugins;
|
|
2361
|
-
if (currentPlugins) {
|
|
2362
|
-
for (let i = 0, len = currentPlugins.length; i < len; i++) {
|
|
2363
|
-
const plugin = currentPlugins[i];
|
|
2364
|
-
if (plugin.tag === node.c) {
|
|
2365
|
-
return plugin.serialize(node.s, this, {
|
|
2366
|
-
id: node.i
|
|
2367
|
-
});
|
|
2368
|
-
}
|
|
2369
|
-
}
|
|
2370
|
-
}
|
|
2371
|
-
throw new Error('Missing plugin for tag "' + node.c + '".');
|
|
2372
|
-
}
|
|
2373
2882
|
serialize(node) {
|
|
2374
2883
|
switch (node.t) {
|
|
2375
2884
|
case 2 /* Constant */:
|
|
@@ -2453,13 +2962,27 @@ var BaseSerializerContext = class {
|
|
|
2453
2962
|
return this.serializeDOMException(node);
|
|
2454
2963
|
case 40 /* Plugin */:
|
|
2455
2964
|
return this.serializePlugin(node);
|
|
2965
|
+
case 41 /* MapSentinel */:
|
|
2966
|
+
return this.serializeMapSentinel(node);
|
|
2967
|
+
case 42 /* IteratorFactory */:
|
|
2968
|
+
return this.serializeIteratorFactory(node);
|
|
2969
|
+
case 43 /* IteratorFactoryInstance */:
|
|
2970
|
+
return this.serializeIteratorFactoryInstance(node);
|
|
2971
|
+
case 44 /* AsyncIteratorFactory */:
|
|
2972
|
+
return this.serializeAsyncIteratorFactory(node);
|
|
2973
|
+
case 45 /* AsyncIteratorFactoryInstance */:
|
|
2974
|
+
return this.serializeAsyncIteratorFactoryInstance(node);
|
|
2975
|
+
case 46 /* ReadableStream */:
|
|
2976
|
+
return this.serializeReadableStream(node);
|
|
2977
|
+
case 47 /* ReadableStreamFactory */:
|
|
2978
|
+
return this.serializeReadableStreamFactory(node);
|
|
2456
2979
|
default:
|
|
2457
2980
|
throw new Error("invariant");
|
|
2458
2981
|
}
|
|
2459
2982
|
}
|
|
2460
2983
|
};
|
|
2461
2984
|
|
|
2462
|
-
// src/core/get-identifier.ts
|
|
2985
|
+
// src/core/utils/get-identifier.ts
|
|
2463
2986
|
var REF_START_CHARS = "hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_";
|
|
2464
2987
|
var REF_START_CHARS_LEN = REF_START_CHARS.length;
|
|
2465
2988
|
var REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_";
|
|
@@ -2476,7 +2999,7 @@ function getIdentifier(index) {
|
|
|
2476
2999
|
return ref;
|
|
2477
3000
|
}
|
|
2478
3001
|
|
|
2479
|
-
// src/core/tree/
|
|
3002
|
+
// src/core/tree/serializer.ts
|
|
2480
3003
|
var VanillaSerializerContext = class extends BaseSerializerContext {
|
|
2481
3004
|
constructor() {
|
|
2482
3005
|
super(...arguments);
|
|
@@ -2554,12 +3077,7 @@ var VanillaSerializerContext = class extends BaseSerializerContext {
|
|
|
2554
3077
|
body = index + "=" + body;
|
|
2555
3078
|
}
|
|
2556
3079
|
}
|
|
2557
|
-
|
|
2558
|
-
if (this.features & 4 /* ArrowFunction */) {
|
|
2559
|
-
params = this.vars.length > 1 || this.vars.length === 0 ? "(" + params + ")" : params;
|
|
2560
|
-
return "(" + params + "=>(" + body + "))()";
|
|
2561
|
-
}
|
|
2562
|
-
return "(function(" + params + "){return " + body + "})()";
|
|
3080
|
+
return "(" + this.createFunction(this.vars, "(" + body + ")") + ")()";
|
|
2563
3081
|
}
|
|
2564
3082
|
if (tree.t === 10 /* Object */) {
|
|
2565
3083
|
return "(" + result + ")";
|
|
@@ -2568,70 +3086,56 @@ var VanillaSerializerContext = class extends BaseSerializerContext {
|
|
|
2568
3086
|
}
|
|
2569
3087
|
};
|
|
2570
3088
|
|
|
2571
|
-
// src/core/
|
|
3089
|
+
// src/core/context/parser/sync.ts
|
|
2572
3090
|
var BaseSyncParserContext = class extends BaseParserContext {
|
|
2573
3091
|
parseItems(current) {
|
|
2574
|
-
const size = current.length;
|
|
2575
3092
|
const nodes = [];
|
|
2576
|
-
|
|
2577
|
-
for (let i = 0, item; i < size; i++) {
|
|
3093
|
+
for (let i = 0, len = current.length; i < len; i++) {
|
|
2578
3094
|
if (i in current) {
|
|
2579
|
-
|
|
2580
|
-
if (this.isIterable(item)) {
|
|
2581
|
-
deferred[i] = item;
|
|
2582
|
-
} else {
|
|
2583
|
-
nodes[i] = this.parse(item);
|
|
2584
|
-
}
|
|
2585
|
-
}
|
|
2586
|
-
}
|
|
2587
|
-
for (let i = 0; i < size; i++) {
|
|
2588
|
-
if (i in deferred) {
|
|
2589
|
-
nodes[i] = this.parse(deferred[i]);
|
|
3095
|
+
nodes[i] = this.parse(current[i]);
|
|
2590
3096
|
}
|
|
2591
3097
|
}
|
|
2592
3098
|
return nodes;
|
|
2593
3099
|
}
|
|
2594
3100
|
parseArray(id, current) {
|
|
2595
|
-
return
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
c: void 0,
|
|
2601
|
-
m: void 0,
|
|
2602
|
-
p: void 0,
|
|
2603
|
-
e: void 0,
|
|
2604
|
-
a: this.parseItems(current),
|
|
2605
|
-
f: void 0,
|
|
2606
|
-
b: void 0,
|
|
2607
|
-
o: getObjectFlag(current)
|
|
2608
|
-
};
|
|
3101
|
+
return createArrayNode(
|
|
3102
|
+
id,
|
|
3103
|
+
current,
|
|
3104
|
+
this.parseItems(current)
|
|
3105
|
+
);
|
|
2609
3106
|
}
|
|
2610
3107
|
parseProperties(properties) {
|
|
2611
3108
|
const entries = Object.entries(properties);
|
|
2612
3109
|
const keyNodes = [];
|
|
2613
3110
|
const valueNodes = [];
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
key = serializeString(entries[i][0]);
|
|
2618
|
-
item = entries[i][1];
|
|
2619
|
-
if (this.isIterable(item)) {
|
|
2620
|
-
deferredKeys.push(key);
|
|
2621
|
-
deferredValues.push(item);
|
|
2622
|
-
} else {
|
|
2623
|
-
keyNodes.push(key);
|
|
2624
|
-
valueNodes.push(this.parse(item));
|
|
2625
|
-
}
|
|
2626
|
-
}
|
|
2627
|
-
for (let i = 0, len = deferredKeys.length; i < len; i++) {
|
|
2628
|
-
keyNodes.push(deferredKeys[i]);
|
|
2629
|
-
valueNodes.push(this.parse(deferredValues[i]));
|
|
3111
|
+
for (let i = 0, len = entries.length; i < len; i++) {
|
|
3112
|
+
keyNodes.push(serializeString(entries[i][0]));
|
|
3113
|
+
valueNodes.push(this.parse(entries[i][1]));
|
|
2630
3114
|
}
|
|
2631
3115
|
if (this.features & 1024 /* Symbol */) {
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
3116
|
+
let symbol = Symbol.iterator;
|
|
3117
|
+
if (symbol in properties) {
|
|
3118
|
+
keyNodes.push(
|
|
3119
|
+
this.parseWKSymbol(symbol)
|
|
3120
|
+
);
|
|
3121
|
+
valueNodes.push(
|
|
3122
|
+
createIteratorFactoryInstanceNode(
|
|
3123
|
+
this.parseIteratorFactory(),
|
|
3124
|
+
this.parse(
|
|
3125
|
+
iteratorToSequence(properties)
|
|
3126
|
+
)
|
|
3127
|
+
)
|
|
3128
|
+
);
|
|
3129
|
+
}
|
|
3130
|
+
symbol = Symbol.toStringTag;
|
|
3131
|
+
if (symbol in properties) {
|
|
3132
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
3133
|
+
valueNodes.push(createStringNode(properties[symbol]));
|
|
3134
|
+
}
|
|
3135
|
+
symbol = Symbol.isConcatSpreadable;
|
|
3136
|
+
if (symbol in properties) {
|
|
3137
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
3138
|
+
valueNodes.push(properties[symbol] ? TRUE_NODE : FALSE_NODE);
|
|
2635
3139
|
}
|
|
2636
3140
|
}
|
|
2637
3141
|
return {
|
|
@@ -2641,184 +3145,69 @@ var BaseSyncParserContext = class extends BaseParserContext {
|
|
|
2641
3145
|
};
|
|
2642
3146
|
}
|
|
2643
3147
|
parsePlainObject(id, current, empty) {
|
|
2644
|
-
return
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
m: void 0,
|
|
2651
|
-
p: this.parseProperties(current),
|
|
2652
|
-
e: void 0,
|
|
2653
|
-
a: void 0,
|
|
2654
|
-
f: void 0,
|
|
2655
|
-
b: void 0,
|
|
2656
|
-
o: getObjectFlag(current)
|
|
2657
|
-
};
|
|
3148
|
+
return this.createObjectNode(
|
|
3149
|
+
id,
|
|
3150
|
+
current,
|
|
3151
|
+
empty,
|
|
3152
|
+
this.parseProperties(current)
|
|
3153
|
+
);
|
|
2658
3154
|
}
|
|
2659
3155
|
parseBoxed(id, current) {
|
|
2660
|
-
return
|
|
2661
|
-
t: 27 /* Boxed */,
|
|
2662
|
-
i: id,
|
|
2663
|
-
s: void 0,
|
|
2664
|
-
l: void 0,
|
|
2665
|
-
c: void 0,
|
|
2666
|
-
m: void 0,
|
|
2667
|
-
p: void 0,
|
|
2668
|
-
e: void 0,
|
|
2669
|
-
a: void 0,
|
|
2670
|
-
f: this.parse(current.valueOf()),
|
|
2671
|
-
b: void 0,
|
|
2672
|
-
o: void 0
|
|
2673
|
-
};
|
|
3156
|
+
return createBoxedNode(id, this.parse(current.valueOf()));
|
|
2674
3157
|
}
|
|
2675
3158
|
parseTypedArray(id, current) {
|
|
2676
|
-
return
|
|
2677
|
-
t: 15 /* TypedArray */,
|
|
2678
|
-
i: id,
|
|
2679
|
-
s: void 0,
|
|
2680
|
-
l: current.length,
|
|
2681
|
-
c: current.constructor.name,
|
|
2682
|
-
m: void 0,
|
|
2683
|
-
p: void 0,
|
|
2684
|
-
e: void 0,
|
|
2685
|
-
a: void 0,
|
|
2686
|
-
f: this.parse(current.buffer),
|
|
2687
|
-
b: current.byteOffset,
|
|
2688
|
-
o: void 0
|
|
2689
|
-
};
|
|
3159
|
+
return createTypedArrayNode(id, current, this.parse(current.buffer));
|
|
2690
3160
|
}
|
|
2691
3161
|
parseBigIntTypedArray(id, current) {
|
|
2692
|
-
return
|
|
2693
|
-
t: 16 /* BigIntTypedArray */,
|
|
2694
|
-
i: id,
|
|
2695
|
-
s: void 0,
|
|
2696
|
-
l: current.length,
|
|
2697
|
-
c: current.constructor.name,
|
|
2698
|
-
m: void 0,
|
|
2699
|
-
p: void 0,
|
|
2700
|
-
e: void 0,
|
|
2701
|
-
a: void 0,
|
|
2702
|
-
f: this.parse(current.buffer),
|
|
2703
|
-
b: current.byteOffset,
|
|
2704
|
-
o: void 0
|
|
2705
|
-
};
|
|
3162
|
+
return createBigIntTypedArrayNode(id, current, this.parse(current.buffer));
|
|
2706
3163
|
}
|
|
2707
3164
|
parseDataView(id, current) {
|
|
2708
|
-
return
|
|
2709
|
-
t: 22 /* DataView */,
|
|
2710
|
-
i: id,
|
|
2711
|
-
s: void 0,
|
|
2712
|
-
l: current.byteLength,
|
|
2713
|
-
c: void 0,
|
|
2714
|
-
m: void 0,
|
|
2715
|
-
p: void 0,
|
|
2716
|
-
e: void 0,
|
|
2717
|
-
a: void 0,
|
|
2718
|
-
f: this.parse(current.buffer),
|
|
2719
|
-
b: current.byteOffset,
|
|
2720
|
-
o: void 0
|
|
2721
|
-
};
|
|
3165
|
+
return createDataViewNode(id, current, this.parse(current.buffer));
|
|
2722
3166
|
}
|
|
2723
3167
|
parseError(id, current) {
|
|
2724
3168
|
const options = getErrorOptions(current, this.features);
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
o: void 0
|
|
2739
|
-
};
|
|
3169
|
+
return createErrorNode(
|
|
3170
|
+
id,
|
|
3171
|
+
current,
|
|
3172
|
+
options ? this.parseProperties(options) : void 0
|
|
3173
|
+
);
|
|
3174
|
+
}
|
|
3175
|
+
parseAggregateError(id, current) {
|
|
3176
|
+
const options = getErrorOptions(current, this.features);
|
|
3177
|
+
return createAggregateErrorNode(
|
|
3178
|
+
id,
|
|
3179
|
+
current,
|
|
3180
|
+
options ? this.parseProperties(options) : void 0
|
|
3181
|
+
);
|
|
2740
3182
|
}
|
|
2741
3183
|
parseMap(id, current) {
|
|
2742
3184
|
const keyNodes = [];
|
|
2743
3185
|
const valueNodes = [];
|
|
2744
|
-
const deferredKey = [];
|
|
2745
|
-
const deferredValue = [];
|
|
2746
3186
|
for (const [key, value] of current.entries()) {
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
keyNodes.push(this.parse(deferredKey[i]));
|
|
2757
|
-
valueNodes.push(this.parse(deferredValue[i]));
|
|
2758
|
-
}
|
|
2759
|
-
return {
|
|
2760
|
-
t: 8 /* Map */,
|
|
2761
|
-
i: id,
|
|
2762
|
-
s: void 0,
|
|
2763
|
-
l: void 0,
|
|
2764
|
-
c: void 0,
|
|
2765
|
-
m: void 0,
|
|
2766
|
-
p: void 0,
|
|
2767
|
-
e: { k: keyNodes, v: valueNodes, s: current.size },
|
|
2768
|
-
a: void 0,
|
|
2769
|
-
f: void 0,
|
|
2770
|
-
b: void 0,
|
|
2771
|
-
o: void 0
|
|
2772
|
-
};
|
|
3187
|
+
keyNodes.push(this.parse(key));
|
|
3188
|
+
valueNodes.push(this.parse(value));
|
|
3189
|
+
}
|
|
3190
|
+
return this.createMapNode(
|
|
3191
|
+
id,
|
|
3192
|
+
keyNodes,
|
|
3193
|
+
valueNodes,
|
|
3194
|
+
current.size
|
|
3195
|
+
);
|
|
2773
3196
|
}
|
|
2774
3197
|
parseSet(id, current) {
|
|
2775
|
-
const
|
|
2776
|
-
const deferred = [];
|
|
3198
|
+
const items = [];
|
|
2777
3199
|
for (const item of current.keys()) {
|
|
2778
|
-
|
|
2779
|
-
deferred.push(item);
|
|
2780
|
-
} else {
|
|
2781
|
-
nodes.push(this.parse(item));
|
|
2782
|
-
}
|
|
3200
|
+
items.push(this.parse(item));
|
|
2783
3201
|
}
|
|
2784
|
-
|
|
2785
|
-
nodes.push(this.parse(deferred[i]));
|
|
2786
|
-
}
|
|
2787
|
-
return {
|
|
2788
|
-
t: 7 /* Set */,
|
|
2789
|
-
i: id,
|
|
2790
|
-
s: void 0,
|
|
2791
|
-
l: current.size,
|
|
2792
|
-
c: void 0,
|
|
2793
|
-
m: void 0,
|
|
2794
|
-
p: void 0,
|
|
2795
|
-
e: void 0,
|
|
2796
|
-
a: nodes,
|
|
2797
|
-
f: void 0,
|
|
2798
|
-
b: void 0,
|
|
2799
|
-
o: void 0
|
|
2800
|
-
};
|
|
3202
|
+
return createSetNode(id, current.size, items);
|
|
2801
3203
|
}
|
|
2802
3204
|
parsePlainProperties(entries) {
|
|
2803
3205
|
const size = entries.length;
|
|
2804
3206
|
const keyNodes = [];
|
|
2805
3207
|
const valueNodes = [];
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
key = serializeString(entries[i][0]);
|
|
2810
|
-
item = entries[i][1];
|
|
2811
|
-
if (this.isIterable(item)) {
|
|
2812
|
-
deferredKeys.push(key);
|
|
2813
|
-
deferredValues.push(item);
|
|
2814
|
-
} else {
|
|
2815
|
-
keyNodes.push(key);
|
|
2816
|
-
valueNodes.push(this.parse(item));
|
|
2817
|
-
}
|
|
2818
|
-
}
|
|
2819
|
-
for (let i = 0, len = deferredKeys.length; i < len; i++) {
|
|
2820
|
-
keyNodes.push(deferredKeys[i]);
|
|
2821
|
-
valueNodes.push(this.parse(deferredValues[i]));
|
|
3208
|
+
for (let i = 0; i < size; i++) {
|
|
3209
|
+
keyNodes.push(serializeString(entries[i][0]));
|
|
3210
|
+
valueNodes.push(this.parse(entries[i][1]));
|
|
2822
3211
|
}
|
|
2823
3212
|
return {
|
|
2824
3213
|
k: keyNodes,
|
|
@@ -2867,54 +3256,10 @@ var BaseSyncParserContext = class extends BaseParserContext {
|
|
|
2867
3256
|
};
|
|
2868
3257
|
}
|
|
2869
3258
|
parseEvent(id, current) {
|
|
2870
|
-
return
|
|
2871
|
-
t: 37 /* Event */,
|
|
2872
|
-
i: id,
|
|
2873
|
-
s: serializeString(current.type),
|
|
2874
|
-
l: void 0,
|
|
2875
|
-
c: void 0,
|
|
2876
|
-
m: void 0,
|
|
2877
|
-
p: void 0,
|
|
2878
|
-
e: void 0,
|
|
2879
|
-
a: void 0,
|
|
2880
|
-
f: this.parse(createEventOptions(current)),
|
|
2881
|
-
b: void 0,
|
|
2882
|
-
o: void 0
|
|
2883
|
-
};
|
|
3259
|
+
return createEventNode(id, current.type, this.parse(createEventOptions(current)));
|
|
2884
3260
|
}
|
|
2885
3261
|
parseCustomEvent(id, current) {
|
|
2886
|
-
return
|
|
2887
|
-
t: 38 /* CustomEvent */,
|
|
2888
|
-
i: id,
|
|
2889
|
-
s: serializeString(current.type),
|
|
2890
|
-
l: void 0,
|
|
2891
|
-
c: void 0,
|
|
2892
|
-
m: void 0,
|
|
2893
|
-
p: void 0,
|
|
2894
|
-
e: void 0,
|
|
2895
|
-
a: void 0,
|
|
2896
|
-
f: this.parse(createCustomEventOptions(current)),
|
|
2897
|
-
b: void 0,
|
|
2898
|
-
o: void 0
|
|
2899
|
-
};
|
|
2900
|
-
}
|
|
2901
|
-
parseAggregateError(id, current) {
|
|
2902
|
-
const options = getErrorOptions(current, this.features);
|
|
2903
|
-
const optionsNode = options ? this.parseProperties(options) : void 0;
|
|
2904
|
-
return {
|
|
2905
|
-
t: 14 /* AggregateError */,
|
|
2906
|
-
i: id,
|
|
2907
|
-
s: void 0,
|
|
2908
|
-
l: void 0,
|
|
2909
|
-
c: void 0,
|
|
2910
|
-
m: serializeString(current.message),
|
|
2911
|
-
p: optionsNode,
|
|
2912
|
-
e: void 0,
|
|
2913
|
-
a: void 0,
|
|
2914
|
-
f: void 0,
|
|
2915
|
-
b: void 0,
|
|
2916
|
-
o: void 0
|
|
2917
|
-
};
|
|
3262
|
+
return createCustomEventNode(id, current.type, this.parse(createCustomEventOptions(current)));
|
|
2918
3263
|
}
|
|
2919
3264
|
parsePlugin(id, current) {
|
|
2920
3265
|
const currentPlugins = this.plugins;
|
|
@@ -3172,7 +3517,21 @@ var CrossAsyncParserContext = class extends BaseAsyncParserContext {
|
|
|
3172
3517
|
}
|
|
3173
3518
|
};
|
|
3174
3519
|
|
|
3175
|
-
// src/core/cross/
|
|
3520
|
+
// src/core/cross/deserializer.ts
|
|
3521
|
+
var CrossDeserializerContext = class extends BaseDeserializerContext {
|
|
3522
|
+
constructor() {
|
|
3523
|
+
super(...arguments);
|
|
3524
|
+
this.mode = "cross";
|
|
3525
|
+
}
|
|
3526
|
+
assignIndexedValue(index, value) {
|
|
3527
|
+
if (!this.refs.has(index)) {
|
|
3528
|
+
this.refs.set(index, value);
|
|
3529
|
+
}
|
|
3530
|
+
return value;
|
|
3531
|
+
}
|
|
3532
|
+
};
|
|
3533
|
+
|
|
3534
|
+
// src/core/cross/serializer.ts
|
|
3176
3535
|
var CrossSerializerContext = class extends BaseSerializerContext {
|
|
3177
3536
|
constructor(options) {
|
|
3178
3537
|
super(options);
|
|
@@ -3201,13 +3560,31 @@ var CrossSerializerContext = class extends BaseSerializerContext {
|
|
|
3201
3560
|
return this.assignIndexedValue(node.i, GLOBAL_CONTEXT_API + "." + GLOBAL_CONTEXT_STREAM_CONSTRUCTOR + "()");
|
|
3202
3561
|
}
|
|
3203
3562
|
serializeReadableStreamEnqueue(node) {
|
|
3204
|
-
return GLOBAL_CONTEXT_API + "." +
|
|
3563
|
+
return GLOBAL_CONTEXT_API + "." + GLOBAL_CONTEXT_STREAM_ENQUEUE + "(" + this.getRefParam(node.i) + "," + this.serialize(node.f) + ")";
|
|
3205
3564
|
}
|
|
3206
3565
|
serializeReadableStreamError(node) {
|
|
3207
|
-
return GLOBAL_CONTEXT_API + "." +
|
|
3566
|
+
return GLOBAL_CONTEXT_API + "." + GLOBAL_CONTEXT_STREAM_ERROR + "(" + this.getRefParam(node.i) + "," + this.serialize(node.f) + ")";
|
|
3208
3567
|
}
|
|
3209
3568
|
serializeReadableStreamClose(node) {
|
|
3210
|
-
return GLOBAL_CONTEXT_API + "." +
|
|
3569
|
+
return GLOBAL_CONTEXT_API + "." + GLOBAL_CONTEXT_STREAM_CLOSE + "(" + this.getRefParam(node.i) + ")";
|
|
3570
|
+
}
|
|
3571
|
+
serializeAsyncIteratorFactory(node) {
|
|
3572
|
+
return this.assignIndexedValue(
|
|
3573
|
+
node.i,
|
|
3574
|
+
this.createFunction(
|
|
3575
|
+
["s"],
|
|
3576
|
+
this.createFunction(
|
|
3577
|
+
["b", "t"],
|
|
3578
|
+
"(b=s.tee(),s=b[0],b=b[1].getReader(),t={[" + this.serialize(node.f) + "]:" + this.createFunction([], "t") + ",next:" + this.createFunction(
|
|
3579
|
+
[],
|
|
3580
|
+
"b.read().then(" + this.createEffectfulFunction(
|
|
3581
|
+
["d"],
|
|
3582
|
+
"if(d.done)return{done:!0,value:void 0};d=d.value;if(d[0]===1)throw d[1];return{done:d[0]===2,value:d[1]}"
|
|
3583
|
+
) + ")"
|
|
3584
|
+
) + "})"
|
|
3585
|
+
)
|
|
3586
|
+
)
|
|
3587
|
+
);
|
|
3211
3588
|
}
|
|
3212
3589
|
serializeTop(tree) {
|
|
3213
3590
|
const result = this.serialize(tree);
|
|
@@ -3224,14 +3601,11 @@ var CrossSerializerContext = class extends BaseSerializerContext {
|
|
|
3224
3601
|
}
|
|
3225
3602
|
const args = this.scopeId == null ? "()" : "(" + GLOBAL_CONTEXT_REFERENCES + '["' + serializeString(this.scopeId) + '"])';
|
|
3226
3603
|
const body = mainBody + (patches ? ref : "");
|
|
3227
|
-
|
|
3228
|
-
return "(" + params + "=>(" + body + "))" + args;
|
|
3229
|
-
}
|
|
3230
|
-
return "(function(" + params + "){return " + body + "})" + args;
|
|
3604
|
+
return "(" + this.createFunction([params], body) + ")" + args;
|
|
3231
3605
|
}
|
|
3232
3606
|
};
|
|
3233
3607
|
|
|
3234
|
-
// src/core/
|
|
3608
|
+
// src/core/context/parser/stream.ts
|
|
3235
3609
|
var BaseStreamParserContext = class extends BaseSyncParserContext {
|
|
3236
3610
|
constructor(options) {
|
|
3237
3611
|
super(options);
|
|
@@ -3272,6 +3646,63 @@ var BaseStreamParserContext = class extends BaseSyncParserContext {
|
|
|
3272
3646
|
this.onDone();
|
|
3273
3647
|
}
|
|
3274
3648
|
}
|
|
3649
|
+
parseProperties(properties) {
|
|
3650
|
+
const entries = Object.entries(properties);
|
|
3651
|
+
const keyNodes = [];
|
|
3652
|
+
const valueNodes = [];
|
|
3653
|
+
for (let i = 0, len = entries.length; i < len; i++) {
|
|
3654
|
+
keyNodes.push(serializeString(entries[i][0]));
|
|
3655
|
+
valueNodes.push(this.parse(entries[i][1]));
|
|
3656
|
+
}
|
|
3657
|
+
if (this.features & 1024 /* Symbol */) {
|
|
3658
|
+
let symbol = Symbol.iterator;
|
|
3659
|
+
if (symbol in properties) {
|
|
3660
|
+
keyNodes.push(
|
|
3661
|
+
this.parseWKSymbol(symbol)
|
|
3662
|
+
);
|
|
3663
|
+
valueNodes.push(
|
|
3664
|
+
createIteratorFactoryInstanceNode(
|
|
3665
|
+
this.parseIteratorFactory(),
|
|
3666
|
+
this.parse(
|
|
3667
|
+
iteratorToSequence(properties)
|
|
3668
|
+
)
|
|
3669
|
+
)
|
|
3670
|
+
);
|
|
3671
|
+
}
|
|
3672
|
+
symbol = Symbol.asyncIterator;
|
|
3673
|
+
if (symbol in properties) {
|
|
3674
|
+
keyNodes.push(
|
|
3675
|
+
this.parseWKSymbol(symbol)
|
|
3676
|
+
);
|
|
3677
|
+
valueNodes.push(
|
|
3678
|
+
createAsyncIteratorFactoryInstanceNode(
|
|
3679
|
+
this.parseAsyncIteratorFactory(),
|
|
3680
|
+
this.parse(
|
|
3681
|
+
asyncIteratorToReadableStream(
|
|
3682
|
+
properties,
|
|
3683
|
+
this
|
|
3684
|
+
)
|
|
3685
|
+
)
|
|
3686
|
+
)
|
|
3687
|
+
);
|
|
3688
|
+
}
|
|
3689
|
+
symbol = Symbol.toStringTag;
|
|
3690
|
+
if (symbol in properties) {
|
|
3691
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
3692
|
+
valueNodes.push(createStringNode(properties[symbol]));
|
|
3693
|
+
}
|
|
3694
|
+
symbol = Symbol.isConcatSpreadable;
|
|
3695
|
+
if (symbol in properties) {
|
|
3696
|
+
keyNodes.push(this.parseWKSymbol(symbol));
|
|
3697
|
+
valueNodes.push(properties[symbol] ? TRUE_NODE : FALSE_NODE);
|
|
3698
|
+
}
|
|
3699
|
+
}
|
|
3700
|
+
return {
|
|
3701
|
+
k: keyNodes,
|
|
3702
|
+
v: valueNodes,
|
|
3703
|
+
s: keyNodes.length
|
|
3704
|
+
};
|
|
3705
|
+
}
|
|
3275
3706
|
pushReadableStreamReader(id, reader) {
|
|
3276
3707
|
reader.read().then(
|
|
3277
3708
|
(data) => {
|
|
@@ -3592,7 +4023,7 @@ var BaseStreamParserContext = class extends BaseSyncParserContext {
|
|
|
3592
4023
|
if (current instanceof Error) {
|
|
3593
4024
|
return this.parseError(id, current);
|
|
3594
4025
|
}
|
|
3595
|
-
if (currentFeatures & 1024 /* Symbol */ && Symbol.iterator in current) {
|
|
4026
|
+
if (currentFeatures & 1024 /* Symbol */ && (Symbol.iterator in current || Symbol.asyncIterator in current)) {
|
|
3596
4027
|
return this.parsePlainObject(id, current, !!currentClass);
|
|
3597
4028
|
}
|
|
3598
4029
|
throw new UnsupportedTypeError(current);
|
|
@@ -3678,8 +4109,25 @@ async function crossSerializeAsync(source, options = {}) {
|
|
|
3678
4109
|
});
|
|
3679
4110
|
return serial.serializeTop(tree);
|
|
3680
4111
|
}
|
|
4112
|
+
function toCrossJSON(source, options = {}) {
|
|
4113
|
+
const ctx = new CrossSyncParserContext({
|
|
4114
|
+
plugins: options.plugins,
|
|
4115
|
+
disabledFeatures: options.disabledFeatures,
|
|
4116
|
+
refs: options.refs
|
|
4117
|
+
});
|
|
4118
|
+
return ctx.parse(source);
|
|
4119
|
+
}
|
|
4120
|
+
async function toCrossJSONAsync(source, options = {}) {
|
|
4121
|
+
const ctx = new CrossAsyncParserContext({
|
|
4122
|
+
plugins: options.plugins,
|
|
4123
|
+
disabledFeatures: options.disabledFeatures,
|
|
4124
|
+
refs: options.refs
|
|
4125
|
+
});
|
|
4126
|
+
return ctx.parse(source);
|
|
4127
|
+
}
|
|
3681
4128
|
function crossSerializeStream(source, options) {
|
|
3682
4129
|
const ctx = new CrossStreamParserContext({
|
|
4130
|
+
plugins: options.plugins,
|
|
3683
4131
|
refs: options.refs,
|
|
3684
4132
|
disabledFeatures: options.disabledFeatures,
|
|
3685
4133
|
onParse(node, initial) {
|
|
@@ -3711,6 +4159,27 @@ function crossSerializeStream(source, options) {
|
|
|
3711
4159
|
ctx.destroy();
|
|
3712
4160
|
};
|
|
3713
4161
|
}
|
|
4162
|
+
function toCrossJSONStream(source, options) {
|
|
4163
|
+
const ctx = new CrossStreamParserContext({
|
|
4164
|
+
plugins: options.plugins,
|
|
4165
|
+
refs: options.refs,
|
|
4166
|
+
disabledFeatures: options.disabledFeatures,
|
|
4167
|
+
onParse: options.onParse,
|
|
4168
|
+
onError: options.onError,
|
|
4169
|
+
onDone: options.onDone
|
|
4170
|
+
});
|
|
4171
|
+
ctx.start(source);
|
|
4172
|
+
return () => {
|
|
4173
|
+
ctx.destroy();
|
|
4174
|
+
};
|
|
4175
|
+
}
|
|
4176
|
+
function fromCrossJSON(source, options) {
|
|
4177
|
+
const ctx = new CrossDeserializerContext({
|
|
4178
|
+
plugins: options.plugins,
|
|
4179
|
+
refs: options.refs
|
|
4180
|
+
});
|
|
4181
|
+
return ctx.deserialize(source);
|
|
4182
|
+
}
|
|
3714
4183
|
|
|
3715
4184
|
// src/core/Serializer.ts
|
|
3716
4185
|
var Serializer = class {
|
|
@@ -3730,6 +4199,7 @@ var Serializer = class {
|
|
|
3730
4199
|
this.pending++;
|
|
3731
4200
|
this.keys.add(key);
|
|
3732
4201
|
this.cleanups.push(crossSerializeStream(value, {
|
|
4202
|
+
plugins: this.options.plugins,
|
|
3733
4203
|
scopeId: this.options.scopeId,
|
|
3734
4204
|
refs: this.refs,
|
|
3735
4205
|
disabledFeatures: this.options.disabledFeatures,
|
|
@@ -3806,10 +4276,14 @@ export {
|
|
|
3806
4276
|
crossSerializeStream,
|
|
3807
4277
|
src_default as default,
|
|
3808
4278
|
deserialize,
|
|
4279
|
+
fromCrossJSON,
|
|
3809
4280
|
fromJSON,
|
|
3810
4281
|
getCrossReferenceHeader,
|
|
3811
4282
|
serialize,
|
|
3812
4283
|
serializeAsync,
|
|
4284
|
+
toCrossJSON,
|
|
4285
|
+
toCrossJSONAsync,
|
|
4286
|
+
toCrossJSONStream,
|
|
3813
4287
|
toJSON,
|
|
3814
4288
|
toJSONAsync
|
|
3815
4289
|
};
|