seroval 0.15.1 → 1.0.2
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/README.md +3 -3
- package/dist/cjs/development/index.cjs +1287 -1945
- package/dist/cjs/development/index.cjs.map +3 -3
- package/dist/cjs/production/index.cjs +3 -3
- package/dist/esm/development/index.mjs +1288 -1946
- 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/UnsupportedTypeError.d.ts.map +1 -1
- package/dist/types/core/base-primitives.d.ts +6 -2
- package/dist/types/core/base-primitives.d.ts.map +1 -1
- package/dist/types/core/compat.d.ts +5 -13
- package/dist/types/core/compat.d.ts.map +1 -1
- package/dist/types/core/constants.d.ts +17 -29
- package/dist/types/core/constants.d.ts.map +1 -1
- package/dist/types/core/context/deserializer.d.ts +6 -16
- package/dist/types/core/context/deserializer.d.ts.map +1 -1
- package/dist/types/core/context/parser/async.d.ts +2 -11
- package/dist/types/core/context/parser/async.d.ts.map +1 -1
- package/dist/types/core/context/parser/stream.d.ts +10 -10
- package/dist/types/core/context/parser/stream.d.ts.map +1 -1
- package/dist/types/core/context/parser/sync.d.ts +5 -7
- package/dist/types/core/context/parser/sync.d.ts.map +1 -1
- package/dist/types/core/context/parser.d.ts +26 -5
- package/dist/types/core/context/parser.d.ts.map +1 -1
- package/dist/types/core/context/serializer.d.ts +21 -30
- package/dist/types/core/context/serializer.d.ts.map +1 -1
- package/dist/types/core/cross/async.d.ts.map +1 -1
- package/dist/types/core/cross/deserializer.d.ts.map +1 -1
- package/dist/types/core/cross/index.d.ts.map +1 -1
- package/dist/types/core/cross/parser.d.ts.map +1 -1
- package/dist/types/core/cross/serializer.d.ts +1 -1
- package/dist/types/core/cross/serializer.d.ts.map +1 -1
- package/dist/types/core/cross/stream.d.ts.map +1 -1
- package/dist/types/core/cross/sync.d.ts.map +1 -1
- package/dist/types/core/keys.d.ts.map +1 -1
- package/dist/types/core/literals.d.ts.map +1 -1
- package/dist/types/core/plugin.d.ts +21 -0
- package/dist/types/core/plugin.d.ts.map +1 -1
- package/dist/types/core/reference.d.ts.map +1 -1
- package/dist/types/core/special-reference.d.ts +4 -9
- package/dist/types/core/special-reference.d.ts.map +1 -1
- package/dist/types/core/stream.d.ts +18 -0
- package/dist/types/core/stream.d.ts.map +1 -0
- package/dist/types/core/string.d.ts.map +1 -1
- package/dist/types/core/tree/async.d.ts.map +1 -1
- package/dist/types/core/tree/deserializer.d.ts.map +1 -1
- package/dist/types/core/tree/index.d.ts +1 -1
- package/dist/types/core/tree/index.d.ts.map +1 -1
- package/dist/types/core/tree/serializer.d.ts +3 -11
- package/dist/types/core/tree/serializer.d.ts.map +1 -1
- package/dist/types/core/types.d.ts +28 -122
- package/dist/types/core/types.d.ts.map +1 -1
- package/dist/types/core/utils/deferred.d.ts +0 -7
- package/dist/types/core/utils/deferred.d.ts.map +1 -1
- package/dist/types/core/utils/error.d.ts +2 -1
- package/dist/types/core/utils/error.d.ts.map +1 -1
- package/dist/types/core/utils/get-identifier.d.ts.map +1 -1
- package/dist/types/core/utils/is-valid-identifier.d.ts.map +1 -1
- package/dist/types/core/utils/iterator-to-sequence.d.ts +0 -12
- package/dist/types/core/utils/iterator-to-sequence.d.ts.map +1 -1
- package/dist/types/core/utils/typed-array.d.ts +2 -0
- package/dist/types/core/utils/typed-array.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/core/Serializer.ts +44 -28
- package/src/core/UnsupportedTypeError.ts +2 -3
- package/src/core/base-primitives.ts +124 -38
- package/src/core/compat.ts +5 -14
- package/src/core/constants.ts +28 -39
- package/src/core/context/deserializer.ts +122 -308
- package/src/core/context/parser/async.ts +163 -375
- package/src/core/context/parser/stream.ts +110 -381
- package/src/core/context/parser/sync.ts +125 -266
- package/src/core/context/parser.ts +119 -68
- package/src/core/context/serializer.ts +396 -473
- package/src/core/cross/async.ts +1 -1
- package/src/core/cross/deserializer.ts +1 -4
- package/src/core/cross/index.ts +26 -20
- package/src/core/cross/parser.ts +1 -1
- package/src/core/cross/serializer.ts +30 -20
- package/src/core/cross/stream.ts +1 -1
- package/src/core/cross/sync.ts +1 -1
- package/src/core/keys.ts +3 -1
- package/src/core/literals.ts +22 -8
- package/src/core/plugin.ts +48 -10
- package/src/core/reference.ts +4 -5
- package/src/core/special-reference.ts +5 -15
- package/src/core/stream.ts +205 -0
- package/src/core/string.ts +53 -22
- package/src/core/tree/async.ts +1 -1
- package/src/core/tree/deserializer.ts +4 -9
- package/src/core/tree/index.ts +15 -10
- package/src/core/tree/serializer.ts +6 -50
- package/src/core/types.ts +39 -179
- package/src/core/utils/deferred.ts +0 -27
- package/src/core/utils/error.ts +26 -15
- package/src/core/utils/get-identifier.ts +5 -4
- package/src/core/utils/is-valid-identifier.ts +6 -5
- package/src/core/utils/iterator-to-sequence.ts +0 -174
- package/src/core/utils/typed-array.ts +35 -11
- package/src/index.ts +3 -12
- package/dist/types/core/utils/constructors.d.ts +0 -5
- package/dist/types/core/utils/constructors.d.ts.map +0 -1
- package/dist/types/core/web-api.d.ts +0 -8
- package/dist/types/core/web-api.d.ts.map +0 -1
- package/dist/types/types.d.ts +0 -21
- package/dist/types/types.d.ts.map +0 -1
- package/src/core/utils/constructors.ts +0 -49
- package/src/core/web-api.ts +0 -138
- package/src/example.ts +0 -25
- package/src/types.ts +0 -84
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { BigIntTypedArrayValue, TypedArrayValue } from '../types';
|
|
2
1
|
import assert from './utils/assert';
|
|
3
2
|
import type { WellKnownSymbols } from './constants';
|
|
4
3
|
import { INV_SYMBOL_REF, SerovalNodeType } from './constants';
|
|
@@ -33,41 +32,49 @@ import type {
|
|
|
33
32
|
SerovalReferenceNode,
|
|
34
33
|
SerovalRegExpNode,
|
|
35
34
|
SerovalSetNode,
|
|
35
|
+
SerovalStreamConstructorNode,
|
|
36
|
+
SerovalStreamNextNode,
|
|
37
|
+
SerovalStreamReturnNode,
|
|
38
|
+
SerovalStreamThrowNode,
|
|
36
39
|
SerovalStringNode,
|
|
37
40
|
SerovalTypedArrayNode,
|
|
38
41
|
SerovalWKSymbolNode,
|
|
39
42
|
} from './types';
|
|
40
43
|
import { getObjectFlag } from './utils/get-object-flag';
|
|
44
|
+
import type {
|
|
45
|
+
BigIntTypedArrayValue,
|
|
46
|
+
TypedArrayValue,
|
|
47
|
+
} from './utils/typed-array';
|
|
41
48
|
|
|
42
|
-
export function createNumberNode(
|
|
49
|
+
export function createNumberNode(
|
|
50
|
+
value: number,
|
|
51
|
+
): SerovalConstantNode | SerovalNumberNode {
|
|
43
52
|
switch (value) {
|
|
44
53
|
case Infinity:
|
|
45
54
|
return INFINITY_NODE;
|
|
46
55
|
case -Infinity:
|
|
47
56
|
return NEG_INFINITY_NODE;
|
|
48
|
-
default:
|
|
49
|
-
// eslint-disable-next-line no-self-compare
|
|
50
|
-
if (value !== value) {
|
|
51
|
-
return NAN_NODE;
|
|
52
|
-
}
|
|
53
|
-
if (Object.is(value, -0)) {
|
|
54
|
-
return NEG_ZERO_NODE;
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
t: SerovalNodeType.Number,
|
|
58
|
-
i: undefined,
|
|
59
|
-
s: value,
|
|
60
|
-
l: undefined,
|
|
61
|
-
c: undefined,
|
|
62
|
-
m: undefined,
|
|
63
|
-
p: undefined,
|
|
64
|
-
e: undefined,
|
|
65
|
-
a: undefined,
|
|
66
|
-
f: undefined,
|
|
67
|
-
b: undefined,
|
|
68
|
-
o: undefined,
|
|
69
|
-
};
|
|
70
57
|
}
|
|
58
|
+
if (value !== value) {
|
|
59
|
+
return NAN_NODE;
|
|
60
|
+
}
|
|
61
|
+
if (Object.is(value, -0)) {
|
|
62
|
+
return NEG_ZERO_NODE;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
t: SerovalNodeType.Number,
|
|
66
|
+
i: undefined,
|
|
67
|
+
s: value,
|
|
68
|
+
l: undefined,
|
|
69
|
+
c: undefined,
|
|
70
|
+
m: undefined,
|
|
71
|
+
p: undefined,
|
|
72
|
+
e: undefined,
|
|
73
|
+
a: undefined,
|
|
74
|
+
f: undefined,
|
|
75
|
+
b: undefined,
|
|
76
|
+
o: undefined,
|
|
77
|
+
};
|
|
71
78
|
}
|
|
72
79
|
|
|
73
80
|
export function createStringNode(value: string): SerovalStringNode {
|
|
@@ -87,9 +94,7 @@ export function createStringNode(value: string): SerovalStringNode {
|
|
|
87
94
|
};
|
|
88
95
|
}
|
|
89
96
|
|
|
90
|
-
export function createBigIntNode(
|
|
91
|
-
current: bigint,
|
|
92
|
-
): SerovalBigIntNode {
|
|
97
|
+
export function createBigIntNode(current: bigint): SerovalBigIntNode {
|
|
93
98
|
return {
|
|
94
99
|
t: SerovalNodeType.BigInt,
|
|
95
100
|
i: undefined,
|
|
@@ -140,13 +145,16 @@ export function createDateNode(id: number, current: Date): SerovalDateNode {
|
|
|
140
145
|
};
|
|
141
146
|
}
|
|
142
147
|
|
|
143
|
-
export function createRegExpNode(
|
|
148
|
+
export function createRegExpNode(
|
|
149
|
+
id: number,
|
|
150
|
+
current: RegExp,
|
|
151
|
+
): SerovalRegExpNode {
|
|
144
152
|
return {
|
|
145
153
|
t: SerovalNodeType.RegExp,
|
|
146
154
|
i: id,
|
|
147
155
|
s: undefined,
|
|
148
156
|
l: undefined,
|
|
149
|
-
c: current.source,
|
|
157
|
+
c: serializeString(current.source),
|
|
150
158
|
m: current.flags,
|
|
151
159
|
p: undefined,
|
|
152
160
|
e: undefined,
|
|
@@ -187,7 +195,10 @@ export function createWKSymbolNode(
|
|
|
187
195
|
id: number,
|
|
188
196
|
current: WellKnownSymbols,
|
|
189
197
|
): SerovalWKSymbolNode {
|
|
190
|
-
assert(
|
|
198
|
+
assert(
|
|
199
|
+
current in INV_SYMBOL_REF,
|
|
200
|
+
new Error('Only well-known symbols are supported.'),
|
|
201
|
+
);
|
|
191
202
|
return {
|
|
192
203
|
t: SerovalNodeType.WKSymbol,
|
|
193
204
|
i: id,
|
|
@@ -425,10 +436,7 @@ export function createIteratorFactoryInstanceNode(
|
|
|
425
436
|
m: undefined,
|
|
426
437
|
p: undefined,
|
|
427
438
|
e: undefined,
|
|
428
|
-
a: [
|
|
429
|
-
factory,
|
|
430
|
-
items,
|
|
431
|
-
],
|
|
439
|
+
a: [factory, items],
|
|
432
440
|
f: undefined,
|
|
433
441
|
b: undefined,
|
|
434
442
|
o: undefined,
|
|
@@ -448,12 +456,90 @@ export function createAsyncIteratorFactoryInstanceNode(
|
|
|
448
456
|
m: undefined,
|
|
449
457
|
p: undefined,
|
|
450
458
|
e: undefined,
|
|
451
|
-
a: [
|
|
452
|
-
factory,
|
|
453
|
-
items,
|
|
454
|
-
],
|
|
459
|
+
a: [factory, items],
|
|
455
460
|
f: undefined,
|
|
456
461
|
b: undefined,
|
|
457
462
|
o: undefined,
|
|
458
463
|
};
|
|
459
464
|
}
|
|
465
|
+
|
|
466
|
+
export function createStreamConstructorNode(
|
|
467
|
+
id: number,
|
|
468
|
+
factory: SerovalNodeWithID,
|
|
469
|
+
sequence: SerovalNode[],
|
|
470
|
+
): SerovalStreamConstructorNode {
|
|
471
|
+
return {
|
|
472
|
+
t: SerovalNodeType.StreamConstructor,
|
|
473
|
+
i: id,
|
|
474
|
+
s: undefined,
|
|
475
|
+
l: undefined,
|
|
476
|
+
c: undefined,
|
|
477
|
+
m: undefined,
|
|
478
|
+
p: undefined,
|
|
479
|
+
e: undefined,
|
|
480
|
+
a: sequence,
|
|
481
|
+
f: factory,
|
|
482
|
+
b: undefined,
|
|
483
|
+
o: undefined,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
export function createStreamNextNode(
|
|
488
|
+
id: number,
|
|
489
|
+
parsed: SerovalNode,
|
|
490
|
+
): SerovalStreamNextNode {
|
|
491
|
+
return {
|
|
492
|
+
t: SerovalNodeType.StreamNext,
|
|
493
|
+
i: id,
|
|
494
|
+
s: undefined,
|
|
495
|
+
l: undefined,
|
|
496
|
+
c: undefined,
|
|
497
|
+
m: undefined,
|
|
498
|
+
p: undefined,
|
|
499
|
+
e: undefined,
|
|
500
|
+
a: undefined,
|
|
501
|
+
f: parsed,
|
|
502
|
+
b: undefined,
|
|
503
|
+
o: undefined,
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
export function createStreamThrowNode(
|
|
508
|
+
id: number,
|
|
509
|
+
parsed: SerovalNode,
|
|
510
|
+
): SerovalStreamThrowNode {
|
|
511
|
+
return {
|
|
512
|
+
t: SerovalNodeType.StreamThrow,
|
|
513
|
+
i: id,
|
|
514
|
+
s: undefined,
|
|
515
|
+
l: undefined,
|
|
516
|
+
c: undefined,
|
|
517
|
+
m: undefined,
|
|
518
|
+
p: undefined,
|
|
519
|
+
e: undefined,
|
|
520
|
+
a: undefined,
|
|
521
|
+
f: parsed,
|
|
522
|
+
b: undefined,
|
|
523
|
+
o: undefined,
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export function createStreamReturnNode(
|
|
528
|
+
id: number,
|
|
529
|
+
parsed: SerovalNode,
|
|
530
|
+
): SerovalStreamReturnNode {
|
|
531
|
+
return {
|
|
532
|
+
t: SerovalNodeType.StreamReturn,
|
|
533
|
+
i: id,
|
|
534
|
+
s: undefined,
|
|
535
|
+
l: undefined,
|
|
536
|
+
c: undefined,
|
|
537
|
+
m: undefined,
|
|
538
|
+
p: undefined,
|
|
539
|
+
e: undefined,
|
|
540
|
+
a: undefined,
|
|
541
|
+
f: parsed,
|
|
542
|
+
b: undefined,
|
|
543
|
+
o: undefined,
|
|
544
|
+
};
|
|
545
|
+
}
|
package/src/core/compat.ts
CHANGED
|
@@ -6,19 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
export const enum Feature {
|
|
8
8
|
AggregateError = 0x01,
|
|
9
|
-
ArrowFunction =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ObjectAssign = 0x80,
|
|
14
|
-
Promise = 0x100,
|
|
15
|
-
Set = 0x200,
|
|
16
|
-
Symbol = 0x400,
|
|
17
|
-
TypedArray = 0x800,
|
|
18
|
-
BigIntTypedArray = 0x1000,
|
|
19
|
-
WebAPI = 0x2000,
|
|
9
|
+
ArrowFunction = 0x02,
|
|
10
|
+
ErrorPrototypeStack = 0x04,
|
|
11
|
+
ObjectAssign = 0x08,
|
|
12
|
+
BigIntTypedArray = 0x10,
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
export const ALL_ENABLED =
|
|
23
|
-
|
|
24
|
-
export const BIGINT_FLAG = Feature.BigIntTypedArray | Feature.BigInt;
|
|
15
|
+
export const ALL_ENABLED = 0x1f;
|
package/src/core/constants.ts
CHANGED
|
@@ -28,35 +28,23 @@ export const enum SerovalNodeType {
|
|
|
28
28
|
TypedArray = 15,
|
|
29
29
|
BigIntTypedArray = 16,
|
|
30
30
|
WKSymbol = 17,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Request = 35,
|
|
49
|
-
Response = 36,
|
|
50
|
-
Event = 37,
|
|
51
|
-
CustomEvent = 38,
|
|
52
|
-
DOMException = 39,
|
|
53
|
-
Plugin = 40,
|
|
54
|
-
SpecialReference = 41,
|
|
55
|
-
IteratorFactory = 42,
|
|
56
|
-
IteratorFactoryInstance = 43,
|
|
57
|
-
AsyncIteratorFactory = 44,
|
|
58
|
-
AsyncIteratorFactoryInstance = 45,
|
|
59
|
-
ReadableStream = 46,
|
|
31
|
+
Reference = 18,
|
|
32
|
+
ArrayBuffer = 19,
|
|
33
|
+
DataView = 20,
|
|
34
|
+
Boxed = 21,
|
|
35
|
+
PromiseConstructor = 22,
|
|
36
|
+
PromiseResolve = 23,
|
|
37
|
+
PromiseReject = 24,
|
|
38
|
+
Plugin = 25,
|
|
39
|
+
SpecialReference = 26,
|
|
40
|
+
IteratorFactory = 27,
|
|
41
|
+
IteratorFactoryInstance = 28,
|
|
42
|
+
AsyncIteratorFactory = 29,
|
|
43
|
+
AsyncIteratorFactoryInstance = 30,
|
|
44
|
+
StreamConstructor = 31,
|
|
45
|
+
StreamNext = 32,
|
|
46
|
+
StreamThrow = 33,
|
|
47
|
+
StreamReturn = 34,
|
|
60
48
|
}
|
|
61
49
|
|
|
62
50
|
export const enum SerovalObjectFlags {
|
|
@@ -98,7 +86,7 @@ export const SYMBOL_STRING: Record<Symbols, string> = {
|
|
|
98
86
|
[Symbols.Unscopables]: 'Symbol.unscopables',
|
|
99
87
|
};
|
|
100
88
|
|
|
101
|
-
export const INV_SYMBOL_REF = {
|
|
89
|
+
export const INV_SYMBOL_REF = /* @__PURE__ */ {
|
|
102
90
|
[Symbol.asyncIterator]: Symbols.AsyncIterator,
|
|
103
91
|
[Symbol.hasInstance]: Symbols.HasInstance,
|
|
104
92
|
[Symbol.isConcatSpreadable]: Symbols.IsConcatSpreadable,
|
|
@@ -183,12 +171,13 @@ type ErrorConstructors =
|
|
|
183
171
|
| TypeErrorConstructor
|
|
184
172
|
| URIErrorConstructor;
|
|
185
173
|
|
|
186
|
-
export const ERROR_CONSTRUCTOR: Record<ErrorConstructorTag, ErrorConstructors> =
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
174
|
+
export const ERROR_CONSTRUCTOR: Record<ErrorConstructorTag, ErrorConstructors> =
|
|
175
|
+
{
|
|
176
|
+
[ErrorConstructorTag.Error]: Error,
|
|
177
|
+
[ErrorConstructorTag.EvalError]: EvalError,
|
|
178
|
+
[ErrorConstructorTag.RangeError]: RangeError,
|
|
179
|
+
[ErrorConstructorTag.ReferenceError]: ReferenceError,
|
|
180
|
+
[ErrorConstructorTag.SyntaxError]: SyntaxError,
|
|
181
|
+
[ErrorConstructorTag.TypeError]: TypeError,
|
|
182
|
+
[ErrorConstructorTag.URIError]: URIError,
|
|
183
|
+
};
|