seroval 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/cjs/development/index.cjs +524 -364
  2. package/dist/cjs/development/index.cjs.map +3 -3
  3. package/dist/cjs/production/index.cjs +3 -3
  4. package/dist/esm/development/index.mjs +524 -364
  5. package/dist/esm/development/index.mjs.map +3 -3
  6. package/dist/esm/production/index.mjs +3 -3
  7. package/dist/types/core/base-primitives.d.ts +2 -2
  8. package/dist/types/core/base-primitives.d.ts.map +1 -1
  9. package/dist/types/core/compat.d.ts +2 -1
  10. package/dist/types/core/compat.d.ts.map +1 -1
  11. package/dist/types/core/constants.d.ts +2 -2
  12. package/dist/types/core/constants.d.ts.map +1 -1
  13. package/dist/types/core/constructors.d.ts +1 -1
  14. package/dist/types/core/constructors.d.ts.map +1 -1
  15. package/dist/types/core/context/async-parser.d.ts +5 -4
  16. package/dist/types/core/context/async-parser.d.ts.map +1 -1
  17. package/dist/types/core/context/deserializer.d.ts +7 -2
  18. package/dist/types/core/context/deserializer.d.ts.map +1 -1
  19. package/dist/types/core/context/parser.d.ts +3 -1
  20. package/dist/types/core/context/parser.d.ts.map +1 -1
  21. package/dist/types/core/context/serializer.d.ts.map +1 -1
  22. package/dist/types/core/context/sync-parser.d.ts +5 -5
  23. package/dist/types/core/context/sync-parser.d.ts.map +1 -1
  24. package/dist/types/core/cross/index.d.ts.map +1 -1
  25. package/dist/types/core/errors.d.ts +9 -0
  26. package/dist/types/core/errors.d.ts.map +1 -1
  27. package/dist/types/core/literals.d.ts.map +1 -1
  28. package/dist/types/core/node.d.ts +1 -1
  29. package/dist/types/core/node.d.ts.map +1 -1
  30. package/dist/types/core/string.d.ts.map +1 -1
  31. package/dist/types/core/tree/index.d.ts +4 -1
  32. package/dist/types/core/tree/index.d.ts.map +1 -1
  33. package/dist/types/core/types.d.ts +2 -11
  34. package/dist/types/core/types.d.ts.map +1 -1
  35. package/package.json +2 -3
  36. package/src/core/Serializer.ts +0 -119
  37. package/src/core/base-primitives.ts +0 -515
  38. package/src/core/compat.ts +0 -21
  39. package/src/core/constants.ts +0 -187
  40. package/src/core/constructors.ts +0 -269
  41. package/src/core/context/async-parser.ts +0 -586
  42. package/src/core/context/deserializer.ts +0 -646
  43. package/src/core/context/parser.ts +0 -333
  44. package/src/core/context/serializer.ts +0 -1411
  45. package/src/core/context/sync-parser.ts +0 -833
  46. package/src/core/cross/index.ts +0 -186
  47. package/src/core/errors.ts +0 -163
  48. package/src/core/function-string.ts +0 -32
  49. package/src/core/keys.ts +0 -17
  50. package/src/core/literals.ts +0 -43
  51. package/src/core/node.ts +0 -40
  52. package/src/core/opaque-reference.ts +0 -9
  53. package/src/core/plugin.ts +0 -100
  54. package/src/core/reference.ts +0 -66
  55. package/src/core/special-reference.ts +0 -42
  56. package/src/core/stream.ts +0 -71
  57. package/src/core/string.ts +0 -84
  58. package/src/core/symbols.ts +0 -18
  59. package/src/core/tree/index.ts +0 -125
  60. package/src/core/types.ts +0 -375
  61. package/src/core/utils/error.ts +0 -73
  62. package/src/core/utils/get-identifier.ts +0 -18
  63. package/src/core/utils/get-object-flag.ts +0 -14
  64. package/src/core/utils/is-valid-identifier.ts +0 -12
  65. package/src/core/utils/iterator-to-sequence.ts +0 -44
  66. package/src/core/utils/promise-to-result.ts +0 -9
  67. package/src/core/utils/typed-array.ts +0 -56
  68. package/src/index.ts +0 -36
@@ -1,71 +0,0 @@
1
- import {
2
- ASYNC_ITERATOR_CONSTRUCTOR,
3
- PROMISE_CONSTRUCTOR,
4
- STREAM_CONSTRUCTOR,
5
- } from './constructors';
6
- import { SYM_ASYNC_ITERATOR } from './symbols';
7
-
8
- export interface StreamListener<T> {
9
- next(value: T): void;
10
- throw(value: unknown): void;
11
- return(value: T): void;
12
- }
13
-
14
- export interface Stream<T> {
15
- __SEROVAL_STREAM__: true;
16
-
17
- on(listener: StreamListener<T>): () => void;
18
-
19
- next(value: T): void;
20
- throw(value: unknown): void;
21
- return(value: T): void;
22
- }
23
-
24
- export function isStream<T>(value: object): value is Stream<T> {
25
- return '__SEROVAL_STREAM__' in value;
26
- }
27
-
28
- export function createStream<T>(): Stream<T> {
29
- return STREAM_CONSTRUCTOR() as unknown as Stream<T>;
30
- }
31
-
32
- export function createStreamFromAsyncIterable<T>(
33
- iterable: AsyncIterable<T>,
34
- ): Stream<T> {
35
- const stream = createStream<T>();
36
-
37
- const iterator = iterable[SYM_ASYNC_ITERATOR]();
38
-
39
- async function push(): Promise<void> {
40
- try {
41
- const value = await iterator.next();
42
- if (value.done) {
43
- stream.return(value.value as T);
44
- } else {
45
- stream.next(value.value);
46
- await push();
47
- }
48
- } catch (error) {
49
- stream.throw(error);
50
- }
51
- }
52
-
53
- push().catch(() => {
54
- // no-op
55
- });
56
-
57
- return stream;
58
- }
59
-
60
- const createAsyncIterable = ASYNC_ITERATOR_CONSTRUCTOR(
61
- SYM_ASYNC_ITERATOR,
62
- PROMISE_CONSTRUCTOR,
63
- );
64
-
65
- export function streamToAsyncIterable<T>(
66
- stream: Stream<T>,
67
- ): () => AsyncIterableIterator<T> {
68
- return createAsyncIterable(
69
- stream,
70
- ) as unknown as () => AsyncIterableIterator<T>;
71
- }
@@ -1,84 +0,0 @@
1
- export function serializeChar(str: string): string | undefined {
2
- switch (str) {
3
- case '"':
4
- return '\\"';
5
- case '\\':
6
- return '\\\\';
7
- case '\n':
8
- return '\\n';
9
- case '\r':
10
- return '\\r';
11
- case '\b':
12
- return '\\b';
13
- case '\t':
14
- return '\\t';
15
- case '\f':
16
- return '\\f';
17
- case '<':
18
- return '\\x3C';
19
- case '\u2028':
20
- return '\\u2028';
21
- case '\u2029':
22
- return '\\u2029';
23
- default:
24
- return undefined;
25
- }
26
- }
27
-
28
- // Written by https://github.com/DylanPiercey and is distributed under the MIT license.
29
- // Creates a JavaScript double quoted string and escapes all characters
30
- // not listed as DoubleStringCharacters on
31
- // Also includes "<" to escape "</script>" and "\" to avoid invalid escapes in the output.
32
- // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
33
- export function serializeString(str: string): string {
34
- let result = '';
35
- let lastPos = 0;
36
- let replacement: string | undefined;
37
- for (let i = 0, len = str.length; i < len; i++) {
38
- replacement = serializeChar(str[i]);
39
- if (replacement) {
40
- result += str.slice(lastPos, i) + replacement;
41
- lastPos = i + 1;
42
- }
43
- }
44
- if (lastPos === 0) {
45
- result = str;
46
- } else {
47
- result += str.slice(lastPos);
48
- }
49
- return result;
50
- }
51
-
52
- function deserializeReplacer(str: string): string {
53
- switch (str) {
54
- case '\\\\':
55
- return '\\';
56
- case '\\"':
57
- return '"';
58
- case '\\n':
59
- return '\n';
60
- case '\\r':
61
- return '\r';
62
- case '\\b':
63
- return '\b';
64
- case '\\t':
65
- return '\t';
66
- case '\\f':
67
- return '\f';
68
- case '\\x3C':
69
- return '\x3C';
70
- case '\\u2028':
71
- return '\u2028';
72
- case '\\u2029':
73
- return '\u2029';
74
- default:
75
- return str;
76
- }
77
- }
78
-
79
- export function deserializeString(str: string): string {
80
- return str.replace(
81
- /(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,
82
- deserializeReplacer,
83
- );
84
- }
@@ -1,18 +0,0 @@
1
- export const SYM_ASYNC_ITERATOR: typeof Symbol.asyncIterator = Symbol.asyncIterator;
2
- export const SYM_HAS_INSTANCE: typeof Symbol.hasInstance = Symbol.hasInstance;
3
- export const SYM_IS_CONCAT_SPREADABLE: typeof Symbol.isConcatSpreadable = Symbol.isConcatSpreadable;
4
- export const SYM_ITERATOR: typeof Symbol.iterator = Symbol.iterator;
5
- export const SYM_MATCH: typeof Symbol.match = Symbol.match;
6
- export const SYM_MATCH_ALL: typeof Symbol.matchAll = Symbol.matchAll;
7
- export const SYM_REPLACE: typeof Symbol.replace = Symbol.replace;
8
- export const SYM_SEARCH: typeof Symbol.search = Symbol.search;
9
- export const SYM_SPECIES: typeof Symbol.species = Symbol.species;
10
- export const SYM_SPLIT: typeof Symbol.split = Symbol.split;
11
- export const SYM_TO_PRIMITIVE: typeof Symbol.toPrimitive = Symbol.toPrimitive;
12
- export const SYM_TO_STRING_TAG: typeof Symbol.toStringTag = Symbol.toStringTag;
13
- export const SYM_UNSCOPABLES: typeof Symbol.unscopables = Symbol.unscopables;
14
-
15
- // For the future
16
-
17
- // export const SYM_DISPOSE = Symbol.dispose;
18
- // export const SYM_ASYNC_DISPOSE = Symbol.asyncDispose;
@@ -1,125 +0,0 @@
1
- import {
2
- createAsyncParserContext,
3
- parseTopAsync,
4
- } from '../context/async-parser';
5
- import {
6
- createVanillaDeserializerContext,
7
- deserializeTop,
8
- } from '../context/deserializer';
9
- import type { BaseParserContextOptions } from '../context/parser';
10
- import {
11
- createVanillaSerializerContext,
12
- serializeTopVanilla,
13
- } from '../context/serializer';
14
- import { createSyncParserContext, parseTop } from '../context/sync-parser';
15
- import {
16
- type PluginAccessOptions,
17
- resolvePlugins,
18
- SerovalMode,
19
- } from '../plugin';
20
- import type { SerovalNode } from '../types';
21
- export type SyncParserContextOptions = Omit<BaseParserContextOptions, 'refs'>;
22
- export type AsyncParserContextOptions = Omit<BaseParserContextOptions, 'refs'>;
23
-
24
- export function serialize<T>(
25
- source: T,
26
- options: SyncParserContextOptions = {},
27
- ): string {
28
- const plugins = resolvePlugins(options.plugins);
29
- const ctx = createSyncParserContext(SerovalMode.Vanilla, {
30
- plugins,
31
- disabledFeatures: options.disabledFeatures,
32
- });
33
- const tree = parseTop(ctx, source);
34
- const serial = createVanillaSerializerContext({
35
- plugins,
36
- features: ctx.base.features,
37
- markedRefs: ctx.base.marked,
38
- });
39
- return serializeTopVanilla(serial, tree);
40
- }
41
-
42
- export async function serializeAsync<T>(
43
- source: T,
44
- options: AsyncParserContextOptions = {},
45
- ): Promise<string> {
46
- const plugins = resolvePlugins(options.plugins);
47
- const ctx = createAsyncParserContext(SerovalMode.Vanilla, {
48
- plugins,
49
- disabledFeatures: options.disabledFeatures,
50
- });
51
- const tree = await parseTopAsync(ctx, source);
52
- const serial = createVanillaSerializerContext({
53
- plugins,
54
- features: ctx.base.features,
55
- markedRefs: ctx.base.marked,
56
- });
57
- return serializeTopVanilla(serial, tree);
58
- }
59
-
60
- export function deserialize<T>(source: string): T {
61
- return (0, eval)(source) as T;
62
- }
63
-
64
- export interface SerovalJSON {
65
- t: SerovalNode;
66
- f: number;
67
- m: number[];
68
- }
69
-
70
- export function toJSON<T>(
71
- source: T,
72
- options: SyncParserContextOptions = {},
73
- ): SerovalJSON {
74
- const plugins = resolvePlugins(options.plugins);
75
- const ctx = createSyncParserContext(SerovalMode.Vanilla, {
76
- plugins,
77
- disabledFeatures: options.disabledFeatures,
78
- });
79
- return {
80
- t: parseTop(ctx, source),
81
- f: ctx.base.features,
82
- m: Array.from(ctx.base.marked),
83
- };
84
- }
85
-
86
- export async function toJSONAsync<T>(
87
- source: T,
88
- options: AsyncParserContextOptions = {},
89
- ): Promise<SerovalJSON> {
90
- const plugins = resolvePlugins(options.plugins);
91
- const ctx = createAsyncParserContext(SerovalMode.Vanilla, {
92
- plugins,
93
- disabledFeatures: options.disabledFeatures,
94
- });
95
- return {
96
- t: await parseTopAsync(ctx, source),
97
- f: ctx.base.features,
98
- m: Array.from(ctx.base.marked),
99
- };
100
- }
101
-
102
- export function compileJSON(
103
- source: SerovalJSON,
104
- options: PluginAccessOptions = {},
105
- ): string {
106
- const plugins = resolvePlugins(options.plugins);
107
- const ctx = createVanillaSerializerContext({
108
- plugins,
109
- features: source.f,
110
- markedRefs: source.m,
111
- });
112
- return serializeTopVanilla(ctx, source.t);
113
- }
114
-
115
- export function fromJSON<T>(
116
- source: SerovalJSON,
117
- options: PluginAccessOptions = {},
118
- ): T {
119
- const plugins = resolvePlugins(options.plugins);
120
- const ctx = createVanillaDeserializerContext({
121
- plugins,
122
- markedRefs: source.m,
123
- });
124
- return deserializeTop(ctx, source.t) as T;
125
- }
package/src/core/types.ts DELETED
@@ -1,375 +0,0 @@
1
- import type {
2
- ErrorConstructorTag,
3
- SerovalConstant,
4
- SerovalNodeType,
5
- SerovalObjectFlags,
6
- Symbols,
7
- } from './constants';
8
- import type { SpecialReference } from './special-reference';
9
-
10
- export interface SerovalBaseNode {
11
- // Type of the node
12
- t: SerovalNodeType;
13
- // Reference ID
14
- i: number | undefined;
15
- // Serialized value
16
- s: unknown;
17
- // size/length
18
- l: number | undefined;
19
- // Constructor name / RegExp source
20
- c: string | undefined;
21
- // message/flags
22
- m: string | undefined;
23
- // properties (objects)
24
- p: SerovalObjectRecordNode | undefined;
25
- // entries (for Map, etc.)
26
- e: SerovalMapRecordNode | undefined;
27
- // array of nodes
28
- a: (SerovalNode | undefined)[] | undefined;
29
- // fulfilled node
30
- f: SerovalNode | undefined;
31
- // byte offset/object flags
32
- b: number | undefined;
33
- // object flag
34
- o: SerovalObjectFlags | undefined;
35
- }
36
-
37
- export type SerovalObjectRecordKey = string | SerovalNode;
38
-
39
- export interface SerovalObjectRecordNode {
40
- k: SerovalObjectRecordKey[];
41
- v: SerovalNode[];
42
- s: number;
43
- }
44
-
45
- export interface SerovalMapRecordNode {
46
- k: SerovalNode[];
47
- v: SerovalNode[];
48
- s: number;
49
- }
50
-
51
- export interface SerovalNumberNode extends SerovalBaseNode {
52
- t: SerovalNodeType.Number;
53
- s: number;
54
- }
55
-
56
- export interface SerovalStringNode extends SerovalBaseNode {
57
- t: SerovalNodeType.String;
58
- s: string;
59
- }
60
-
61
- export interface SerovalConstantNode extends SerovalBaseNode {
62
- t: SerovalNodeType.Constant;
63
- s: SerovalConstant;
64
- }
65
-
66
- export type SerovalPrimitiveNode =
67
- | SerovalNumberNode
68
- | SerovalStringNode
69
- | SerovalConstantNode;
70
-
71
- export interface SerovalIndexedValueNode extends SerovalBaseNode {
72
- t: SerovalNodeType.IndexedValue;
73
- // id
74
- i: number;
75
- }
76
-
77
- export interface SerovalBigIntNode extends SerovalBaseNode {
78
- t: SerovalNodeType.BigInt;
79
- // value in string
80
- s: string;
81
- }
82
-
83
- export interface SerovalDateNode extends SerovalBaseNode {
84
- t: SerovalNodeType.Date;
85
- // id (Dates are stateful)
86
- i: number;
87
- // value in ISO string
88
- s: string;
89
- }
90
-
91
- export interface SerovalRegExpNode extends SerovalBaseNode {
92
- t: SerovalNodeType.RegExp;
93
- // id (RegExp are stateful)
94
- i: number;
95
- // source
96
- c: string;
97
- // flags
98
- m: string;
99
- }
100
-
101
- export interface SerovalArrayBufferNode extends SerovalBaseNode {
102
- t: SerovalNodeType.ArrayBuffer;
103
- // id
104
- i: number;
105
- // byte string
106
- s: string;
107
- // length
108
- l: number;
109
- // array buffer constructor
110
- f: SerovalNodeWithID;
111
- }
112
-
113
-
114
- export interface SerovalTypedArrayNode extends SerovalBaseNode {
115
- t: SerovalNodeType.TypedArray;
116
- // id
117
- i: number;
118
- // length
119
- l: number;
120
- // TypedArray Constructor
121
- c: string;
122
- // ArrayBuffer reference
123
- f: SerovalNode;
124
- // Byte Offset
125
- b: number;
126
- }
127
-
128
- export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
129
- t: SerovalNodeType.BigIntTypedArray;
130
- i: number;
131
- // length
132
- l: number;
133
- // TypedArray Constructor
134
- c: string;
135
- // ArrayBuffer reference
136
- f: SerovalNode;
137
- // Byte Offset
138
- b: number;
139
- }
140
-
141
- export type SerovalSemiPrimitiveNode =
142
- | SerovalBigIntNode
143
- | SerovalDateNode
144
- | SerovalRegExpNode
145
- | SerovalTypedArrayNode
146
- | SerovalBigIntTypedArrayNode;
147
-
148
- export interface SerovalSetNode extends SerovalBaseNode {
149
- t: SerovalNodeType.Set;
150
- // id
151
- i: number;
152
- // Size of Set
153
- l: number;
154
- // Items in Set (as array)
155
- a: SerovalNode[];
156
- }
157
-
158
- export interface SerovalMapNode extends SerovalBaseNode {
159
- t: SerovalNodeType.Map;
160
- i: number;
161
- // key/value pairs
162
- e: SerovalMapRecordNode;
163
- f: SerovalNodeWithID;
164
- }
165
-
166
- export interface SerovalArrayNode extends SerovalBaseNode {
167
- t: SerovalNodeType.Array;
168
- // size of array
169
- l: number;
170
- // items
171
- a: (SerovalNode | undefined)[];
172
- i: number;
173
- o: SerovalObjectFlags;
174
- }
175
-
176
- export interface SerovalObjectNode extends SerovalBaseNode {
177
- t: SerovalNodeType.Object;
178
- // key/value pairs
179
- p: SerovalObjectRecordNode;
180
- i: number;
181
- o: SerovalObjectFlags;
182
- }
183
-
184
- export interface SerovalNullConstructorNode extends SerovalBaseNode {
185
- t: SerovalNodeType.NullConstructor;
186
- // key/value pairs
187
- p: SerovalObjectRecordNode;
188
- i: number;
189
- o: SerovalObjectFlags;
190
- }
191
-
192
- export interface SerovalPromiseNode extends SerovalBaseNode {
193
- t: SerovalNodeType.Promise;
194
- s: 0 | 1;
195
- // resolved value
196
- f: SerovalNode;
197
- i: number;
198
- }
199
-
200
- export interface SerovalErrorNode extends SerovalBaseNode {
201
- t: SerovalNodeType.Error;
202
- // constructor name
203
- s: ErrorConstructorTag;
204
- // message
205
- m: string;
206
- // other properties
207
- p: SerovalObjectRecordNode | undefined;
208
- i: number;
209
- }
210
-
211
- export interface SerovalAggregateErrorNode extends SerovalBaseNode {
212
- t: SerovalNodeType.AggregateError;
213
- i: number;
214
- // message
215
- m: string;
216
- // other properties
217
- p: SerovalObjectRecordNode | undefined;
218
- }
219
-
220
- export interface SerovalWKSymbolNode extends SerovalBaseNode {
221
- t: SerovalNodeType.WKSymbol;
222
- i: number;
223
- s: Symbols;
224
- }
225
-
226
- export interface SerovalReferenceNode extends SerovalBaseNode {
227
- t: SerovalNodeType.Reference;
228
- i: number;
229
- // id of the reference in the map
230
- s: string;
231
- }
232
-
233
- export interface SerovalDataViewNode extends SerovalBaseNode {
234
- t: SerovalNodeType.DataView;
235
- i: number;
236
- // byte length
237
- l: number;
238
- // reference to array buffer
239
- f: SerovalNode;
240
- // byte offset
241
- b: number;
242
- }
243
-
244
- export interface SerovalBoxedNode extends SerovalBaseNode {
245
- t: SerovalNodeType.Boxed;
246
- i: number;
247
- f: SerovalNode;
248
- }
249
-
250
- export interface SerovalPromiseConstructorNode extends SerovalBaseNode {
251
- t: SerovalNodeType.PromiseConstructor;
252
- i: number;
253
- s: number;
254
- f: SerovalNodeWithID;
255
- }
256
-
257
- export interface SerovalPromiseResolveNode extends SerovalBaseNode {
258
- t: SerovalNodeType.PromiseSuccess;
259
- i: number;
260
- a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
261
- }
262
-
263
- export interface SerovalPromiseRejectNode extends SerovalBaseNode {
264
- t: SerovalNodeType.PromiseFailure;
265
- i: number;
266
- a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
267
- }
268
-
269
- export interface SerovalPluginNode extends SerovalBaseNode {
270
- t: SerovalNodeType.Plugin;
271
- i: number;
272
- // value
273
- s: unknown;
274
- // tag name
275
- c: string;
276
- }
277
-
278
- /**
279
- * Represents special values as placeholders
280
- */
281
- export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
282
- t: SerovalNodeType.SpecialReference;
283
- i: number;
284
- s: SpecialReference;
285
- }
286
-
287
- export interface SerovalIteratorFactoryNode extends SerovalBaseNode {
288
- t: SerovalNodeType.IteratorFactory;
289
- i: number;
290
- f: SerovalNodeWithID;
291
- }
292
-
293
- export interface SerovalIteratorFactoryInstanceNode extends SerovalBaseNode {
294
- t: SerovalNodeType.IteratorFactoryInstance;
295
- a: [instance: SerovalNodeWithID, sequence: SerovalNode];
296
- }
297
-
298
- export interface SerovalAsyncIteratorFactoryNode extends SerovalBaseNode {
299
- t: SerovalNodeType.AsyncIteratorFactory;
300
- i: number;
301
- a: [promise: SerovalNodeWithID, symbol: SerovalNodeWithID];
302
- }
303
-
304
- export interface SerovalAsyncIteratorFactoryInstanceNode
305
- extends SerovalBaseNode {
306
- t: SerovalNodeType.AsyncIteratorFactoryInstance;
307
- a: [instance: SerovalNodeWithID, sequence: SerovalNode];
308
- }
309
-
310
- export interface SerovalStreamConstructorNode extends SerovalBaseNode {
311
- t: SerovalNodeType.StreamConstructor;
312
- i: number;
313
- a: SerovalNode[];
314
- // special reference to the constructor
315
- f: SerovalNodeWithID;
316
- }
317
-
318
- export interface SerovalStreamNextNode extends SerovalBaseNode {
319
- t: SerovalNodeType.StreamNext;
320
- i: number;
321
- // Next value
322
- f: SerovalNode;
323
- }
324
-
325
- export interface SerovalStreamThrowNode extends SerovalBaseNode {
326
- t: SerovalNodeType.StreamThrow;
327
- i: number;
328
- // Throw value
329
- f: SerovalNode;
330
- }
331
-
332
- export interface SerovalStreamReturnNode extends SerovalBaseNode {
333
- t: SerovalNodeType.StreamReturn;
334
- i: number;
335
- // Return value
336
- f: SerovalNode;
337
- }
338
-
339
- export type SerovalSyncNode =
340
- | SerovalPrimitiveNode
341
- | SerovalIndexedValueNode
342
- | SerovalSemiPrimitiveNode
343
- | SerovalSetNode
344
- | SerovalMapNode
345
- | SerovalArrayNode
346
- | SerovalObjectNode
347
- | SerovalNullConstructorNode
348
- | SerovalPromiseNode
349
- | SerovalErrorNode
350
- | SerovalAggregateErrorNode
351
- | SerovalWKSymbolNode
352
- | SerovalReferenceNode
353
- | SerovalArrayBufferNode
354
- | SerovalDataViewNode
355
- | SerovalBoxedNode
356
- | SerovalPluginNode
357
- | SerovalSpecialReferenceNode
358
- | SerovalIteratorFactoryNode
359
- | SerovalIteratorFactoryInstanceNode
360
- | SerovalAsyncIteratorFactoryNode
361
- | SerovalAsyncIteratorFactoryInstanceNode;
362
-
363
- export type SerovalAsyncNode =
364
- | SerovalPromiseNode
365
- | SerovalPromiseConstructorNode
366
- | SerovalPromiseResolveNode
367
- | SerovalPromiseRejectNode
368
- | SerovalStreamConstructorNode
369
- | SerovalStreamNextNode
370
- | SerovalStreamThrowNode
371
- | SerovalStreamReturnNode;
372
-
373
- export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;
374
-
375
- export type SerovalNodeWithID = Extract<SerovalNode, { i: number }>;