seroval 1.1.1 → 1.2.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 (55) hide show
  1. package/dist/cjs/development/index.cjs +728 -523
  2. package/dist/cjs/development/index.cjs.map +3 -3
  3. package/dist/cjs/production/index.cjs +7 -7
  4. package/dist/esm/development/index.mjs +728 -523
  5. package/dist/esm/development/index.mjs.map +3 -3
  6. package/dist/esm/production/index.mjs +7 -7
  7. package/dist/types/core/abort-signal.d.ts +2 -0
  8. package/dist/types/core/abort-signal.d.ts.map +1 -0
  9. package/dist/types/core/base-primitives.d.ts +2 -1
  10. package/dist/types/core/base-primitives.d.ts.map +1 -1
  11. package/dist/types/core/compat.d.ts +3 -2
  12. package/dist/types/core/compat.d.ts.map +1 -1
  13. package/dist/types/core/constants.d.ts +5 -1
  14. package/dist/types/core/constants.d.ts.map +1 -1
  15. package/dist/types/core/context/deserializer.d.ts +3 -0
  16. package/dist/types/core/context/deserializer.d.ts.map +1 -1
  17. package/dist/types/core/context/parser/async.d.ts +3 -0
  18. package/dist/types/core/context/parser/async.d.ts.map +1 -1
  19. package/dist/types/core/context/parser/stream.d.ts +3 -1
  20. package/dist/types/core/context/parser/stream.d.ts.map +1 -1
  21. package/dist/types/core/context/parser/sync.d.ts +4 -1
  22. package/dist/types/core/context/parser/sync.d.ts.map +1 -1
  23. package/dist/types/core/context/parser.d.ts +9 -10
  24. package/dist/types/core/context/parser.d.ts.map +1 -1
  25. package/dist/types/core/context/serializer.d.ts +4 -1
  26. package/dist/types/core/context/serializer.d.ts.map +1 -1
  27. package/dist/types/core/cross/index.d.ts.map +1 -1
  28. package/dist/types/core/literals.d.ts.map +1 -1
  29. package/dist/types/core/node.d.ts +8 -0
  30. package/dist/types/core/node.d.ts.map +1 -0
  31. package/dist/types/core/special-reference.d.ts +6 -1
  32. package/dist/types/core/special-reference.d.ts.map +1 -1
  33. package/dist/types/core/tree/serializer.d.ts +2 -1
  34. package/dist/types/core/tree/serializer.d.ts.map +1 -1
  35. package/dist/types/core/types.d.ts +20 -2
  36. package/dist/types/core/types.d.ts.map +1 -1
  37. package/dist/types/core/utils/iterator-to-sequence.d.ts.map +1 -1
  38. package/package.json +8 -8
  39. package/src/core/abort-signal.ts +19 -0
  40. package/src/core/base-primitives.ts +359 -337
  41. package/src/core/compat.ts +2 -1
  42. package/src/core/constants.ts +5 -0
  43. package/src/core/context/deserializer.ts +34 -1
  44. package/src/core/context/parser/async.ts +75 -22
  45. package/src/core/context/parser/stream.ts +91 -37
  46. package/src/core/context/parser/sync.ts +61 -7
  47. package/src/core/context/parser.ts +121 -117
  48. package/src/core/context/serializer.ts +55 -9
  49. package/src/core/cross/index.ts +2 -6
  50. package/src/core/literals.ts +16 -15
  51. package/src/core/node.ts +40 -0
  52. package/src/core/special-reference.ts +7 -0
  53. package/src/core/tree/serializer.ts +7 -0
  54. package/src/core/types.ts +32 -2
  55. package/src/core/utils/iterator-to-sequence.ts +3 -1
package/src/core/types.ts CHANGED
@@ -269,6 +269,9 @@ export interface SerovalPluginNode extends SerovalBaseNode {
269
269
  c: string;
270
270
  }
271
271
 
272
+ /**
273
+ * Represents special values as placeholders
274
+ */
272
275
  export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
273
276
  t: SerovalNodeType.SpecialReference;
274
277
  i: number;
@@ -302,24 +305,48 @@ export interface SerovalStreamConstructorNode extends SerovalBaseNode {
302
305
  t: SerovalNodeType.StreamConstructor;
303
306
  i: number;
304
307
  a: SerovalNode[];
308
+ // special reference to the constructor
305
309
  f: SerovalNodeWithID;
306
310
  }
307
311
 
308
312
  export interface SerovalStreamNextNode extends SerovalBaseNode {
309
313
  t: SerovalNodeType.StreamNext;
310
314
  i: number;
315
+ // Next value
311
316
  f: SerovalNode;
312
317
  }
313
318
 
314
319
  export interface SerovalStreamThrowNode extends SerovalBaseNode {
315
320
  t: SerovalNodeType.StreamThrow;
316
321
  i: number;
322
+ // Throw value
317
323
  f: SerovalNode;
318
324
  }
319
325
 
320
326
  export interface SerovalStreamReturnNode extends SerovalBaseNode {
321
327
  t: SerovalNodeType.StreamReturn;
322
328
  i: number;
329
+ // Return value
330
+ f: SerovalNode;
331
+ }
332
+
333
+ export interface SerovalAbortSignalConstructorNode extends SerovalBaseNode {
334
+ t: SerovalNodeType.AbortSignalConstructor;
335
+ i: number;
336
+ // special reference to the constructor
337
+ f: SerovalNodeWithID;
338
+ }
339
+
340
+ export interface SerovalAbortSignalAbortNode extends SerovalBaseNode {
341
+ t: SerovalNodeType.AbortSignalAbort;
342
+ i: number;
343
+ a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
344
+ }
345
+
346
+ export interface SerovalAbortSignalSyncNode extends SerovalBaseNode {
347
+ t: SerovalNodeType.AbortSignalSync;
348
+ i: number;
349
+ // Abort reason
323
350
  f: SerovalNode;
324
351
  }
325
352
 
@@ -345,7 +372,8 @@ export type SerovalSyncNode =
345
372
  | SerovalIteratorFactoryNode
346
373
  | SerovalIteratorFactoryInstanceNode
347
374
  | SerovalAsyncIteratorFactoryNode
348
- | SerovalAsyncIteratorFactoryInstanceNode;
375
+ | SerovalAsyncIteratorFactoryInstanceNode
376
+ | SerovalAbortSignalSyncNode;
349
377
 
350
378
  export type SerovalAsyncNode =
351
379
  | SerovalPromiseNode
@@ -355,7 +383,9 @@ export type SerovalAsyncNode =
355
383
  | SerovalStreamConstructorNode
356
384
  | SerovalStreamNextNode
357
385
  | SerovalStreamThrowNode
358
- | SerovalStreamReturnNode;
386
+ | SerovalStreamReturnNode
387
+ | SerovalAbortSignalConstructorNode
388
+ | SerovalAbortSignalAbortNode;
359
389
 
360
390
  export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;
361
391
 
@@ -1,3 +1,5 @@
1
+ import { NIL } from "../constants";
2
+
1
3
  export interface Sequence {
2
4
  v: unknown[];
3
5
  t: number;
@@ -46,7 +48,7 @@ export function sequenceToIterator<T>(
46
48
  if (index > sequence.d) {
47
49
  return {
48
50
  done: true,
49
- value: undefined,
51
+ value: NIL,
50
52
  };
51
53
  }
52
54
  const currentIndex = index++;