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,646 +0,0 @@
1
- import {
2
- CONSTANT_VAL,
3
- ERROR_CONSTRUCTOR,
4
- SerovalNodeType,
5
- SerovalObjectFlags,
6
- SYMBOL_REF,
7
- } from '../constants';
8
- import {
9
- ARRAY_BUFFER_CONSTRUCTOR,
10
- PROMISE_CONSTRUCTOR,
11
- type PromiseConstructorResolver,
12
- } from '../constructors';
13
- import {
14
- SerovalDeserializationError,
15
- SerovalMissingInstanceError,
16
- SerovalMissingPluginError,
17
- SerovalUnsupportedNodeError,
18
- } from '../errors';
19
- import type { PluginAccessOptions } from '../plugin';
20
- import { SerovalMode } from '../plugin';
21
- import { getReference } from '../reference';
22
- import type { Stream } from '../stream';
23
- import { createStream, streamToAsyncIterable } from '../stream';
24
- import { deserializeString } from '../string';
25
- import type {
26
- SerovalAggregateErrorNode,
27
- SerovalArrayBufferNode,
28
- SerovalArrayNode,
29
- SerovalAsyncIteratorFactoryInstanceNode,
30
- SerovalAsyncIteratorFactoryNode,
31
- SerovalBigIntTypedArrayNode,
32
- SerovalBoxedNode,
33
- SerovalDataViewNode,
34
- SerovalDateNode,
35
- SerovalErrorNode,
36
- SerovalIteratorFactoryInstanceNode,
37
- SerovalIteratorFactoryNode,
38
- SerovalMapNode,
39
- SerovalNode,
40
- SerovalNullConstructorNode,
41
- SerovalObjectNode,
42
- SerovalObjectRecordKey,
43
- SerovalObjectRecordNode,
44
- SerovalPluginNode,
45
- SerovalPromiseConstructorNode,
46
- SerovalPromiseNode,
47
- SerovalPromiseRejectNode,
48
- SerovalPromiseResolveNode,
49
- SerovalReferenceNode,
50
- SerovalRegExpNode,
51
- SerovalSetNode,
52
- SerovalStreamConstructorNode,
53
- SerovalStreamNextNode,
54
- SerovalStreamReturnNode,
55
- SerovalStreamThrowNode,
56
- SerovalTypedArrayNode,
57
- } from '../types';
58
- import type { Sequence } from '../utils/iterator-to-sequence';
59
- import { sequenceToIterator } from '../utils/iterator-to-sequence';
60
- import type {
61
- BigIntTypedArrayValue,
62
- TypedArrayValue,
63
- } from '../utils/typed-array';
64
- import { getTypedArrayConstructor } from '../utils/typed-array';
65
-
66
- function applyObjectFlag(obj: unknown, flag: SerovalObjectFlags): unknown {
67
- switch (flag) {
68
- case SerovalObjectFlags.Frozen:
69
- return Object.freeze(obj);
70
- case SerovalObjectFlags.NonExtensible:
71
- return Object.preventExtensions(obj);
72
- case SerovalObjectFlags.Sealed:
73
- return Object.seal(obj);
74
- default:
75
- return obj;
76
- }
77
- }
78
-
79
- type AssignableValue = AggregateError | Error | Iterable<unknown>;
80
- type AssignableNode = SerovalAggregateErrorNode | SerovalErrorNode;
81
-
82
- export interface BaseDeserializerContextOptions extends PluginAccessOptions {
83
- refs?: Map<number, unknown>;
84
- }
85
-
86
- export interface BaseDeserializerContext extends PluginAccessOptions {
87
- readonly mode: SerovalMode;
88
- /**
89
- * Mapping ids to values
90
- */
91
- refs: Map<number, unknown>;
92
- }
93
-
94
- export function createBaseDeserializerContext(
95
- mode: SerovalMode,
96
- options: BaseDeserializerContextOptions,
97
- ): BaseDeserializerContext {
98
- return {
99
- mode,
100
- plugins: options.plugins,
101
- refs: options.refs || new Map(),
102
- };
103
- }
104
-
105
- export interface VanillaDeserializerContextOptions
106
- extends Omit<BaseDeserializerContextOptions, 'refs'> {
107
- markedRefs: number[] | Set<number>;
108
- }
109
-
110
- export interface VanillaDeserializerState {
111
- marked: Set<number>;
112
- }
113
-
114
- export interface VanillaDeserializerContext {
115
- mode: SerovalMode.Vanilla;
116
- base: BaseDeserializerContext;
117
- child: DeserializePluginContext | undefined;
118
- state: VanillaDeserializerState;
119
- }
120
-
121
- export function createVanillaDeserializerContext(
122
- options: VanillaDeserializerContextOptions,
123
- ): VanillaDeserializerContext {
124
- return {
125
- mode: SerovalMode.Vanilla,
126
- base: createBaseDeserializerContext(SerovalMode.Vanilla, options),
127
- child: undefined,
128
- state: {
129
- marked: new Set(options.markedRefs),
130
- },
131
- };
132
- }
133
-
134
- export interface CrossDeserializerContext {
135
- mode: SerovalMode.Cross;
136
- base: BaseDeserializerContext;
137
- child: DeserializePluginContext | undefined;
138
- }
139
-
140
- export type CrossDeserializerContextOptions = BaseDeserializerContextOptions;
141
-
142
- export function createCrossDeserializerContext(
143
- options: CrossDeserializerContextOptions,
144
- ): CrossDeserializerContext {
145
- return {
146
- mode: SerovalMode.Cross,
147
- base: createBaseDeserializerContext(SerovalMode.Cross, options),
148
- child: undefined,
149
- };
150
- }
151
-
152
- type DeserializerContext =
153
- | VanillaDeserializerContext
154
- | CrossDeserializerContext;
155
-
156
- export class DeserializePluginContext {
157
- constructor(private _p: DeserializerContext) {}
158
-
159
- deserialize<T>(node: SerovalNode): T {
160
- return deserialize(this._p, node) as T;
161
- }
162
- }
163
-
164
- function assignIndexedValueVanilla<T>(
165
- ctx: VanillaDeserializerContext,
166
- id: number,
167
- value: T,
168
- ): T {
169
- if (ctx.state.marked.has(id)) {
170
- ctx.base.refs.set(id, value);
171
- }
172
- return value;
173
- }
174
-
175
- function assignIndexedValueCross<T>(
176
- ctx: CrossDeserializerContext,
177
- id: number,
178
- value: T,
179
- ): T {
180
- if (!ctx.base.refs.has(id)) {
181
- ctx.base.refs.set(id, value);
182
- }
183
- return value;
184
- }
185
-
186
- function assignIndexedValue<T>(
187
- ctx: DeserializerContext,
188
- id: number,
189
- value: T,
190
- ): T {
191
- return ctx.mode === SerovalMode.Vanilla
192
- ? assignIndexedValueVanilla(ctx, id, value)
193
- : assignIndexedValueCross(ctx, id, value);
194
- }
195
-
196
- function deserializeReference(
197
- ctx: DeserializerContext,
198
- node: SerovalReferenceNode,
199
- ): unknown {
200
- return assignIndexedValue(
201
- ctx,
202
- node.i,
203
- getReference(deserializeString(node.s)),
204
- );
205
- }
206
-
207
- function deserializeArray(
208
- ctx: DeserializerContext,
209
- node: SerovalArrayNode,
210
- ): unknown[] {
211
- const len = node.l;
212
- const result: unknown[] = assignIndexedValue(
213
- ctx,
214
- node.i,
215
- new Array<unknown>(len),
216
- );
217
- let item: SerovalNode | undefined;
218
- for (let i = 0; i < len; i++) {
219
- item = node.a[i];
220
- if (item) {
221
- result[i] = deserialize(ctx, item);
222
- }
223
- }
224
- applyObjectFlag(result, node.o);
225
- return result;
226
- }
227
-
228
- function deserializeProperties(
229
- ctx: DeserializerContext,
230
- node: SerovalObjectRecordNode,
231
- result: Record<string | symbol, unknown>,
232
- ): Record<string | symbol, unknown> {
233
- const len = node.s;
234
- if (len) {
235
- const keys = node.k;
236
- const vals = node.v;
237
- for (let i = 0, key: SerovalObjectRecordKey; i < len; i++) {
238
- key = keys[i];
239
- if (typeof key === 'string') {
240
- result[deserializeString(key)] = deserialize(ctx, vals[i]);
241
- } else {
242
- result[deserialize(ctx, key) as symbol] = deserialize(ctx, vals[i]);
243
- }
244
- }
245
- }
246
- return result;
247
- }
248
-
249
- function deserializeObject(
250
- ctx: DeserializerContext,
251
- node: SerovalObjectNode | SerovalNullConstructorNode,
252
- ): Record<string, unknown> {
253
- const result = assignIndexedValue(
254
- ctx,
255
- node.i,
256
- (node.t === SerovalNodeType.Object ? {} : Object.create(null)) as Record<
257
- string,
258
- unknown
259
- >,
260
- );
261
- deserializeProperties(ctx, node.p, result);
262
- applyObjectFlag(result, node.o);
263
- return result;
264
- }
265
-
266
- function deserializeDate(
267
- ctx: DeserializerContext,
268
- node: SerovalDateNode,
269
- ): Date {
270
- return assignIndexedValue(ctx, node.i, new Date(node.s));
271
- }
272
-
273
- function deserializeRegExp(
274
- ctx: DeserializerContext,
275
- node: SerovalRegExpNode,
276
- ): RegExp {
277
- return assignIndexedValue(
278
- ctx,
279
- node.i,
280
- new RegExp(deserializeString(node.c), node.m),
281
- );
282
- }
283
-
284
- function deserializeSet(
285
- ctx: DeserializerContext,
286
- node: SerovalSetNode,
287
- ): Set<unknown> {
288
- const result = assignIndexedValue(ctx, node.i, new Set<unknown>());
289
- const items = node.a;
290
- for (let i = 0, len = node.l; i < len; i++) {
291
- result.add(deserialize(ctx, items[i]));
292
- }
293
- return result;
294
- }
295
-
296
- function deserializeMap(
297
- ctx: DeserializerContext,
298
- node: SerovalMapNode,
299
- ): Map<unknown, unknown> {
300
- const result = assignIndexedValue(ctx, node.i, new Map<unknown, unknown>());
301
- const keys = node.e.k;
302
- const vals = node.e.v;
303
- for (let i = 0, len = node.e.s; i < len; i++) {
304
- result.set(deserialize(ctx, keys[i]), deserialize(ctx, vals[i]));
305
- }
306
- return result;
307
- }
308
-
309
- function deserializeArrayBuffer(
310
- ctx: DeserializerContext,
311
- node: SerovalArrayBufferNode,
312
- ): ArrayBuffer {
313
- const result = assignIndexedValue(
314
- ctx,
315
- node.i,
316
- ARRAY_BUFFER_CONSTRUCTOR(node.l, deserializeString(node.s)),
317
- );
318
- return result;
319
- }
320
-
321
- function deserializeTypedArray(
322
- ctx: DeserializerContext,
323
- node: SerovalTypedArrayNode | SerovalBigIntTypedArrayNode,
324
- ): TypedArrayValue | BigIntTypedArrayValue {
325
- const construct = getTypedArrayConstructor(node.c) as Int8ArrayConstructor;
326
- const source = deserialize(ctx, node.f) as ArrayBuffer;
327
- const result = assignIndexedValue(
328
- ctx,
329
- node.i,
330
- new construct(source, node.b, node.l),
331
- );
332
- return result;
333
- }
334
-
335
- function deserializeDataView(
336
- ctx: DeserializerContext,
337
- node: SerovalDataViewNode,
338
- ): DataView {
339
- const source = deserialize(ctx, node.f) as ArrayBuffer;
340
- const result = assignIndexedValue(
341
- ctx,
342
- node.i,
343
- new DataView(source, node.b, node.l),
344
- );
345
- return result;
346
- }
347
-
348
- function deserializeDictionary<T extends AssignableValue>(
349
- ctx: DeserializerContext,
350
- node: AssignableNode,
351
- result: T,
352
- ): T {
353
- if (node.p) {
354
- const fields = deserializeProperties(ctx, node.p, {});
355
- Object.assign(result, fields);
356
- }
357
- return result;
358
- }
359
-
360
- function deserializeAggregateError(
361
- ctx: DeserializerContext,
362
- node: SerovalAggregateErrorNode,
363
- ): AggregateError {
364
- // Serialize the required arguments
365
- const result = assignIndexedValue(
366
- ctx,
367
- node.i,
368
- new AggregateError([], deserializeString(node.m)),
369
- );
370
- // `AggregateError` might've been extended
371
- // either through class or custom properties
372
- // Make sure to assign extra properties
373
- return deserializeDictionary(ctx, node, result);
374
- }
375
-
376
- function deserializeError(
377
- ctx: DeserializerContext,
378
- node: SerovalErrorNode,
379
- ): Error {
380
- const construct = ERROR_CONSTRUCTOR[node.s];
381
- const result = assignIndexedValue(
382
- ctx,
383
- node.i,
384
- new construct(deserializeString(node.m)),
385
- );
386
- return deserializeDictionary(ctx, node, result);
387
- }
388
-
389
- function deserializePromise(
390
- ctx: DeserializerContext,
391
- node: SerovalPromiseNode,
392
- ): Promise<unknown> {
393
- const deferred = PROMISE_CONSTRUCTOR();
394
- const result = assignIndexedValue(ctx, node.i, deferred.p);
395
- const deserialized = deserialize(ctx, node.f);
396
- if (node.s) {
397
- deferred.s(deserialized);
398
- } else {
399
- deferred.f(deserialized);
400
- }
401
- return result;
402
- }
403
-
404
- function deserializeBoxed(
405
- ctx: DeserializerContext,
406
- node: SerovalBoxedNode,
407
- ): unknown {
408
- // biome-ignore lint/style/useConsistentBuiltinInstantiation: intended
409
- return assignIndexedValue(ctx, node.i, Object(deserialize(ctx, node.f)));
410
- }
411
-
412
- function deserializePlugin(
413
- ctx: DeserializerContext,
414
- node: SerovalPluginNode,
415
- ): unknown {
416
- const currentPlugins = ctx.base.plugins;
417
- if (currentPlugins) {
418
- const tag = deserializeString(node.c);
419
- for (let i = 0, len = currentPlugins.length; i < len; i++) {
420
- const plugin = currentPlugins[i];
421
- if (plugin.tag === tag) {
422
- if (ctx.child == null) {
423
- ctx.child = new DeserializePluginContext(ctx);
424
- }
425
- return assignIndexedValue(
426
- ctx,
427
- node.i,
428
- plugin.deserialize(node.s, ctx.child, {
429
- id: node.i,
430
- }),
431
- );
432
- }
433
- }
434
- }
435
- throw new SerovalMissingPluginError(node.c);
436
- }
437
-
438
- function deserializePromiseConstructor(
439
- ctx: DeserializerContext,
440
- node: SerovalPromiseConstructorNode,
441
- ): unknown {
442
- return assignIndexedValue(
443
- ctx,
444
- node.i,
445
- assignIndexedValue(ctx, node.s, PROMISE_CONSTRUCTOR()).p,
446
- );
447
- }
448
-
449
- function deserializePromiseResolve(
450
- ctx: DeserializerContext,
451
- node: SerovalPromiseResolveNode,
452
- ): unknown {
453
- const deferred = ctx.base.refs.get(node.i) as
454
- | PromiseConstructorResolver
455
- | undefined;
456
- if (deferred) {
457
- deferred.s(deserialize(ctx, node.a[1]));
458
- return undefined;
459
- }
460
- throw new SerovalMissingInstanceError('Promise');
461
- }
462
-
463
- function deserializePromiseReject(
464
- ctx: DeserializerContext,
465
- node: SerovalPromiseRejectNode,
466
- ): unknown {
467
- const deferred = ctx.base.refs.get(node.i) as
468
- | PromiseConstructorResolver
469
- | undefined;
470
- if (deferred) {
471
- deferred.f(deserialize(ctx, node.a[1]));
472
- return undefined;
473
- }
474
- throw new SerovalMissingInstanceError('Promise');
475
- }
476
-
477
- function deserializeIteratorFactoryInstance(
478
- ctx: DeserializerContext,
479
- node: SerovalIteratorFactoryInstanceNode,
480
- ): unknown {
481
- deserialize(ctx, node.a[0]);
482
- const source = deserialize(ctx, node.a[1]);
483
- return sequenceToIterator(source as Sequence);
484
- }
485
-
486
- function deserializeAsyncIteratorFactoryInstance(
487
- ctx: DeserializerContext,
488
- node: SerovalAsyncIteratorFactoryInstanceNode,
489
- ): unknown {
490
- deserialize(ctx, node.a[0]);
491
- const source = deserialize(ctx, node.a[1]);
492
- return streamToAsyncIterable(source as Stream<any>);
493
- }
494
-
495
- function deserializeStreamConstructor(
496
- ctx: DeserializerContext,
497
- node: SerovalStreamConstructorNode,
498
- ): unknown {
499
- const result = assignIndexedValue(ctx, node.i, createStream());
500
- const len = node.a.length;
501
- if (len) {
502
- for (let i = 0; i < len; i++) {
503
- deserialize(ctx, node.a[i]);
504
- }
505
- }
506
- return result;
507
- }
508
-
509
- function deserializeStreamNext(
510
- ctx: DeserializerContext,
511
- node: SerovalStreamNextNode,
512
- ): unknown {
513
- const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
514
- if (deferred) {
515
- deferred.next(deserialize(ctx, node.f));
516
- return undefined;
517
- }
518
- throw new SerovalMissingInstanceError('Stream');
519
- }
520
-
521
- function deserializeStreamThrow(
522
- ctx: DeserializerContext,
523
- node: SerovalStreamThrowNode,
524
- ): unknown {
525
- const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
526
- if (deferred) {
527
- deferred.throw(deserialize(ctx, node.f));
528
- return undefined;
529
- }
530
- throw new SerovalMissingInstanceError('Stream');
531
- }
532
-
533
- function deserializeStreamReturn(
534
- ctx: DeserializerContext,
535
- node: SerovalStreamReturnNode,
536
- ): unknown {
537
- const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
538
- if (deferred) {
539
- deferred.return(deserialize(ctx, node.f));
540
- return undefined;
541
- }
542
- throw new SerovalMissingInstanceError('Stream');
543
- }
544
-
545
- function deserializeIteratorFactory(
546
- ctx: DeserializerContext,
547
- node: SerovalIteratorFactoryNode,
548
- ): unknown {
549
- deserialize(ctx, node.f);
550
- return undefined;
551
- }
552
-
553
- function deserializeAsyncIteratorFactory(
554
- ctx: DeserializerContext,
555
- node: SerovalAsyncIteratorFactoryNode,
556
- ): unknown {
557
- deserialize(ctx, node.a[1]);
558
- return undefined;
559
- }
560
- export function deserialize(
561
- ctx: DeserializerContext,
562
- node: SerovalNode,
563
- ): unknown {
564
- switch (node.t) {
565
- case SerovalNodeType.Constant:
566
- return CONSTANT_VAL[node.s];
567
- case SerovalNodeType.Number:
568
- return node.s;
569
- case SerovalNodeType.String:
570
- return deserializeString(node.s);
571
- case SerovalNodeType.BigInt:
572
- return BigInt(node.s);
573
- case SerovalNodeType.IndexedValue:
574
- return ctx.base.refs.get(node.i);
575
- case SerovalNodeType.Reference:
576
- return deserializeReference(ctx, node);
577
- case SerovalNodeType.Array:
578
- return deserializeArray(ctx, node);
579
- case SerovalNodeType.Object:
580
- case SerovalNodeType.NullConstructor:
581
- return deserializeObject(ctx, node);
582
- case SerovalNodeType.Date:
583
- return deserializeDate(ctx, node);
584
- case SerovalNodeType.RegExp:
585
- return deserializeRegExp(ctx, node);
586
- case SerovalNodeType.Set:
587
- return deserializeSet(ctx, node);
588
- case SerovalNodeType.Map:
589
- return deserializeMap(ctx, node);
590
- case SerovalNodeType.ArrayBuffer:
591
- return deserializeArrayBuffer(ctx, node);
592
- case SerovalNodeType.BigIntTypedArray:
593
- case SerovalNodeType.TypedArray:
594
- return deserializeTypedArray(ctx, node);
595
- case SerovalNodeType.DataView:
596
- return deserializeDataView(ctx, node);
597
- case SerovalNodeType.AggregateError:
598
- return deserializeAggregateError(ctx, node);
599
- case SerovalNodeType.Error:
600
- return deserializeError(ctx, node);
601
- case SerovalNodeType.Promise:
602
- return deserializePromise(ctx, node);
603
- case SerovalNodeType.WKSymbol:
604
- return SYMBOL_REF[node.s];
605
- case SerovalNodeType.Boxed:
606
- return deserializeBoxed(ctx, node);
607
- case SerovalNodeType.Plugin:
608
- return deserializePlugin(ctx, node);
609
- case SerovalNodeType.PromiseConstructor:
610
- return deserializePromiseConstructor(ctx, node);
611
- case SerovalNodeType.PromiseSuccess:
612
- return deserializePromiseResolve(ctx, node);
613
- case SerovalNodeType.PromiseFailure:
614
- return deserializePromiseReject(ctx, node);
615
- case SerovalNodeType.IteratorFactoryInstance:
616
- return deserializeIteratorFactoryInstance(ctx, node);
617
- case SerovalNodeType.AsyncIteratorFactoryInstance:
618
- return deserializeAsyncIteratorFactoryInstance(ctx, node);
619
- case SerovalNodeType.StreamConstructor:
620
- return deserializeStreamConstructor(ctx, node);
621
- case SerovalNodeType.StreamNext:
622
- return deserializeStreamNext(ctx, node);
623
- case SerovalNodeType.StreamThrow:
624
- return deserializeStreamThrow(ctx, node);
625
- case SerovalNodeType.StreamReturn:
626
- return deserializeStreamReturn(ctx, node);
627
- case SerovalNodeType.IteratorFactory:
628
- return deserializeIteratorFactory(ctx, node);
629
- case SerovalNodeType.AsyncIteratorFactory:
630
- return deserializeAsyncIteratorFactory(ctx, node);
631
- // case SerovalNodeType.SpecialReference:
632
- default:
633
- throw new SerovalUnsupportedNodeError(node);
634
- }
635
- }
636
-
637
- export function deserializeTop(
638
- ctx: DeserializerContext,
639
- node: SerovalNode,
640
- ): unknown {
641
- try {
642
- return deserialize(ctx, node);
643
- } catch (error) {
644
- throw new SerovalDeserializationError(error);
645
- }
646
- }