seroval 1.4.1 → 1.5.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.
Files changed (64) hide show
  1. package/dist/cjs/development/index.cjs +184 -44
  2. package/dist/cjs/development/index.cjs.map +4 -4
  3. package/dist/cjs/production/index.cjs +3 -3
  4. package/dist/esm/development/index.mjs +184 -44
  5. package/dist/esm/development/index.mjs.map +4 -4
  6. package/dist/esm/production/index.mjs +3 -3
  7. package/dist/types/core/base-primitives.d.ts +5 -4
  8. package/dist/types/core/base-primitives.d.ts.map +1 -1
  9. package/dist/types/core/constants.d.ts +2 -1
  10. package/dist/types/core/constants.d.ts.map +1 -1
  11. package/dist/types/core/constructors.d.ts +1 -5
  12. package/dist/types/core/constructors.d.ts.map +1 -1
  13. package/dist/types/core/context/async-parser.d.ts.map +1 -1
  14. package/dist/types/core/context/deserializer.d.ts.map +1 -1
  15. package/dist/types/core/context/parser.d.ts.map +1 -1
  16. package/dist/types/core/context/serializer.d.ts.map +1 -1
  17. package/dist/types/core/context/sync-parser.d.ts.map +1 -1
  18. package/dist/types/core/errors.d.ts +5 -5
  19. package/dist/types/core/errors.d.ts.map +1 -1
  20. package/dist/types/core/literals.d.ts.map +1 -1
  21. package/dist/types/core/node.d.ts +1 -1
  22. package/dist/types/core/node.d.ts.map +1 -1
  23. package/dist/types/core/plugin.d.ts +11 -7
  24. package/dist/types/core/plugin.d.ts.map +1 -1
  25. package/dist/types/core/sequence.d.ts +11 -0
  26. package/dist/types/core/sequence.d.ts.map +1 -0
  27. package/dist/types/core/types.d.ts +15 -4
  28. package/dist/types/core/types.d.ts.map +1 -1
  29. package/package.json +3 -2
  30. package/src/core/Serializer.ts +119 -0
  31. package/src/core/base-primitives.ts +537 -0
  32. package/src/core/compat.ts +23 -0
  33. package/src/core/constants.ts +202 -0
  34. package/src/core/constructors.ts +265 -0
  35. package/src/core/context/async-parser.ts +663 -0
  36. package/src/core/context/deserializer.ts +828 -0
  37. package/src/core/context/parser.ts +335 -0
  38. package/src/core/context/serializer.ts +1460 -0
  39. package/src/core/context/sync-parser.ts +932 -0
  40. package/src/core/cross/index.ts +188 -0
  41. package/src/core/errors.ts +196 -0
  42. package/src/core/function-string.ts +32 -0
  43. package/src/core/keys.ts +17 -0
  44. package/src/core/literals.ts +43 -0
  45. package/src/core/node.ts +40 -0
  46. package/src/core/opaque-reference.ts +9 -0
  47. package/src/core/plugin.ts +105 -0
  48. package/src/core/reference.ts +66 -0
  49. package/src/core/sequence.ts +55 -0
  50. package/src/core/special-reference.ts +42 -0
  51. package/src/core/stream.ts +71 -0
  52. package/src/core/string.ts +86 -0
  53. package/src/core/symbols.ts +18 -0
  54. package/src/core/tree/index.ts +134 -0
  55. package/src/core/types.ts +377 -0
  56. package/src/core/utils/error.ts +73 -0
  57. package/src/core/utils/get-identifier.ts +18 -0
  58. package/src/core/utils/get-object-flag.ts +14 -0
  59. package/src/core/utils/is-valid-identifier.ts +12 -0
  60. package/src/core/utils/promise-to-result.ts +9 -0
  61. package/src/core/utils/typed-array.ts +56 -0
  62. package/src/index.ts +36 -0
  63. package/dist/types/core/utils/iterator-to-sequence.d.ts +0 -8
  64. package/dist/types/core/utils/iterator-to-sequence.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "seroval",
3
3
  "type": "module",
4
- "version": "1.4.1",
4
+ "version": "1.5.0",
5
5
  "files": [
6
- "dist"
6
+ "dist",
7
+ "src"
7
8
  ],
8
9
  "engines": {
9
10
  "node": ">=10"
@@ -0,0 +1,119 @@
1
+ import { crossSerializeStream } from './cross';
2
+ import {
3
+ resolvePlugins,
4
+ type Plugin,
5
+ type PluginAccessOptions,
6
+ } from './plugin';
7
+ import { serializeString } from './string';
8
+
9
+ export interface SerializerOptions extends PluginAccessOptions {
10
+ globalIdentifier: string;
11
+ scopeId?: string;
12
+ disabledFeatures?: number;
13
+ onData: (result: string) => void;
14
+ onError: (error: unknown) => void;
15
+ onDone?: () => void;
16
+ }
17
+
18
+ export default class Serializer {
19
+ private alive = true;
20
+
21
+ private flushed = false;
22
+
23
+ private done = false;
24
+
25
+ private pending = 0;
26
+
27
+ private cleanups: (() => void)[] = [];
28
+
29
+ private refs = new Map<unknown, number>();
30
+
31
+ private plugins?: Plugin<any, any>[];
32
+
33
+ constructor(private options: SerializerOptions) {
34
+ this.plugins = resolvePlugins(options.plugins);
35
+ }
36
+
37
+ keys = new Set<string>();
38
+
39
+ write(key: string, value: unknown): void {
40
+ if (this.alive && !this.flushed) {
41
+ this.pending++;
42
+ this.keys.add(key);
43
+ this.cleanups.push(
44
+ crossSerializeStream(value, {
45
+ plugins: this.plugins,
46
+ scopeId: this.options.scopeId,
47
+ refs: this.refs,
48
+ disabledFeatures: this.options.disabledFeatures,
49
+ onError: this.options.onError,
50
+ onSerialize: (data, initial) => {
51
+ if (this.alive) {
52
+ this.options.onData(
53
+ initial
54
+ ? this.options.globalIdentifier +
55
+ '["' +
56
+ serializeString(key) +
57
+ '"]=' +
58
+ data
59
+ : data,
60
+ );
61
+ }
62
+ },
63
+ onDone: () => {
64
+ if (this.alive) {
65
+ this.pending--;
66
+ if (
67
+ this.pending <= 0 &&
68
+ this.flushed &&
69
+ !this.done &&
70
+ this.options.onDone
71
+ ) {
72
+ this.options.onDone();
73
+ this.done = true;
74
+ }
75
+ }
76
+ },
77
+ }),
78
+ );
79
+ }
80
+ }
81
+
82
+ ids = 0;
83
+
84
+ private getNextID(): string {
85
+ while (this.keys.has('' + this.ids)) {
86
+ this.ids++;
87
+ }
88
+ return '' + this.ids;
89
+ }
90
+
91
+ push(value: unknown): string {
92
+ const newID = this.getNextID();
93
+ this.write(newID, value);
94
+ return newID;
95
+ }
96
+
97
+ flush(): void {
98
+ if (this.alive) {
99
+ this.flushed = true;
100
+ if (this.pending <= 0 && !this.done && this.options.onDone) {
101
+ this.options.onDone();
102
+ this.done = true;
103
+ }
104
+ }
105
+ }
106
+
107
+ close(): void {
108
+ if (this.alive) {
109
+ for (let i = 0, len = this.cleanups.length; i < len; i++) {
110
+ this.cleanups[i]();
111
+ }
112
+ if (!this.done && this.options.onDone) {
113
+ this.options.onDone();
114
+ this.done = true;
115
+ }
116
+ this.alive = false;
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,537 @@
1
+ import type { WellKnownSymbols } from './constants';
2
+ import { INV_SYMBOL_REF, NIL, SerovalNodeType } from './constants';
3
+ import {
4
+ INFINITY_NODE,
5
+ NAN_NODE,
6
+ NEG_INFINITY_NODE,
7
+ NEG_ZERO_NODE,
8
+ } from './literals';
9
+ import { createSerovalNode } from './node';
10
+ import { getReferenceID } from './reference';
11
+ import { serializeString } from './string';
12
+ import type {
13
+ SerovalAggregateErrorNode,
14
+ SerovalArrayNode,
15
+ SerovalAsyncIteratorFactoryInstanceNode,
16
+ SerovalBigIntNode,
17
+ SerovalBigIntTypedArrayNode,
18
+ SerovalBoxedNode,
19
+ SerovalConstantNode,
20
+ SerovalDataViewNode,
21
+ SerovalDateNode,
22
+ SerovalErrorNode,
23
+ SerovalIndexedValueNode,
24
+ SerovalIteratorFactoryInstanceNode,
25
+ SerovalNode,
26
+ SerovalNodeWithID,
27
+ SerovalNumberNode,
28
+ SerovalObjectRecordNode,
29
+ SerovalPluginNode,
30
+ SerovalReferenceNode,
31
+ SerovalRegExpNode,
32
+ SerovalSequenceNode,
33
+ SerovalSetNode,
34
+ SerovalStreamConstructorNode,
35
+ SerovalStreamNextNode,
36
+ SerovalStreamReturnNode,
37
+ SerovalStreamThrowNode,
38
+ SerovalStringNode,
39
+ SerovalTypedArrayNode,
40
+ SerovalWKSymbolNode,
41
+ } from './types';
42
+ import { getErrorConstructor } from './utils/error';
43
+ import { getObjectFlag } from './utils/get-object-flag';
44
+ import type {
45
+ BigIntTypedArrayValue,
46
+ TypedArrayValue,
47
+ } from './utils/typed-array';
48
+
49
+ export function createNumberNode(
50
+ value: number,
51
+ ): SerovalConstantNode | SerovalNumberNode {
52
+ switch (value) {
53
+ case Number.POSITIVE_INFINITY:
54
+ return INFINITY_NODE;
55
+ case Number.NEGATIVE_INFINITY:
56
+ return NEG_INFINITY_NODE;
57
+ }
58
+ if (value !== value) {
59
+ return NAN_NODE;
60
+ }
61
+ if (Object.is(value, -0)) {
62
+ return NEG_ZERO_NODE;
63
+ }
64
+ return createSerovalNode(
65
+ SerovalNodeType.Number,
66
+ NIL,
67
+ value,
68
+ NIL,
69
+ NIL,
70
+ NIL,
71
+ NIL,
72
+ NIL,
73
+ NIL,
74
+ NIL,
75
+ NIL,
76
+ NIL,
77
+ );
78
+ }
79
+
80
+ export function createStringNode(value: string): SerovalStringNode {
81
+ return createSerovalNode(
82
+ SerovalNodeType.String,
83
+ NIL,
84
+ serializeString(value),
85
+ NIL,
86
+ NIL,
87
+ NIL,
88
+ NIL,
89
+ NIL,
90
+ NIL,
91
+ NIL,
92
+ NIL,
93
+ NIL,
94
+ );
95
+ }
96
+
97
+ export function createBigIntNode(current: bigint): SerovalBigIntNode {
98
+ return createSerovalNode(
99
+ SerovalNodeType.BigInt,
100
+ NIL,
101
+ '' + current,
102
+ NIL,
103
+ NIL,
104
+ NIL,
105
+ NIL,
106
+ NIL,
107
+ NIL,
108
+ NIL,
109
+ NIL,
110
+ NIL,
111
+ );
112
+ }
113
+
114
+ export function createIndexedValueNode(id: number): SerovalIndexedValueNode {
115
+ return createSerovalNode(
116
+ SerovalNodeType.IndexedValue,
117
+ id,
118
+ NIL,
119
+ NIL,
120
+ NIL,
121
+ NIL,
122
+ NIL,
123
+ NIL,
124
+ NIL,
125
+ NIL,
126
+ NIL,
127
+ NIL,
128
+ );
129
+ }
130
+
131
+ export function createDateNode(id: number, current: Date): SerovalDateNode {
132
+ const timestamp = current.valueOf();
133
+ return createSerovalNode(
134
+ SerovalNodeType.Date,
135
+ id,
136
+ timestamp !== timestamp ? '' : current.toISOString(),
137
+ NIL,
138
+ NIL,
139
+ NIL,
140
+ NIL,
141
+ NIL,
142
+ NIL,
143
+ NIL,
144
+ NIL,
145
+ NIL,
146
+ );
147
+ }
148
+
149
+ export function createRegExpNode(
150
+ id: number,
151
+ current: RegExp,
152
+ ): SerovalRegExpNode {
153
+ return createSerovalNode(
154
+ SerovalNodeType.RegExp,
155
+ id,
156
+ NIL,
157
+ serializeString(current.source),
158
+ current.flags,
159
+ NIL,
160
+ NIL,
161
+ NIL,
162
+ NIL,
163
+ NIL,
164
+ NIL,
165
+ NIL,
166
+ );
167
+ }
168
+
169
+ export function createWKSymbolNode(
170
+ id: number,
171
+ current: WellKnownSymbols,
172
+ ): SerovalWKSymbolNode {
173
+ return createSerovalNode(
174
+ SerovalNodeType.WKSymbol,
175
+ id,
176
+ INV_SYMBOL_REF[current],
177
+ NIL,
178
+ NIL,
179
+ NIL,
180
+ NIL,
181
+ NIL,
182
+ NIL,
183
+ NIL,
184
+ NIL,
185
+ NIL,
186
+ );
187
+ }
188
+
189
+ export function createReferenceNode<T>(
190
+ id: number,
191
+ ref: T,
192
+ ): SerovalReferenceNode {
193
+ return createSerovalNode(
194
+ SerovalNodeType.Reference,
195
+ id,
196
+ serializeString(getReferenceID(ref)),
197
+ NIL,
198
+ NIL,
199
+ NIL,
200
+ NIL,
201
+ NIL,
202
+ NIL,
203
+ NIL,
204
+ NIL,
205
+ NIL,
206
+ );
207
+ }
208
+
209
+ export function createPluginNode(
210
+ id: number,
211
+ tag: string,
212
+ value: Record<string, SerovalNode>,
213
+ ): SerovalPluginNode {
214
+ return createSerovalNode(
215
+ SerovalNodeType.Plugin,
216
+ id,
217
+ value,
218
+ serializeString(tag),
219
+ NIL,
220
+ NIL,
221
+ NIL,
222
+ NIL,
223
+ NIL,
224
+ NIL,
225
+ NIL,
226
+ NIL,
227
+ );
228
+ }
229
+
230
+ export function createArrayNode(
231
+ id: number,
232
+ current: unknown[],
233
+ parsedItems: SerovalArrayNode['a'],
234
+ ): SerovalArrayNode {
235
+ return createSerovalNode(
236
+ SerovalNodeType.Array,
237
+ id,
238
+ NIL,
239
+ NIL,
240
+ NIL,
241
+ NIL,
242
+ NIL,
243
+ parsedItems,
244
+ NIL,
245
+ NIL,
246
+ getObjectFlag(current),
247
+ NIL,
248
+ );
249
+ }
250
+
251
+ export function createBoxedNode(
252
+ id: number,
253
+ boxed: SerovalNode,
254
+ ): SerovalBoxedNode {
255
+ return createSerovalNode(
256
+ SerovalNodeType.Boxed,
257
+ id,
258
+ NIL,
259
+ NIL,
260
+ NIL,
261
+ NIL,
262
+ NIL,
263
+ NIL,
264
+ boxed,
265
+ NIL,
266
+ NIL,
267
+ NIL,
268
+ );
269
+ }
270
+
271
+ export function createTypedArrayNode(
272
+ id: number,
273
+ current: TypedArrayValue,
274
+ buffer: SerovalNode,
275
+ ): SerovalTypedArrayNode {
276
+ return createSerovalNode(
277
+ SerovalNodeType.TypedArray,
278
+ id,
279
+ NIL,
280
+ current.constructor.name,
281
+ NIL,
282
+ NIL,
283
+ NIL,
284
+ NIL,
285
+ buffer,
286
+ current.byteOffset,
287
+ NIL,
288
+ current.length,
289
+ );
290
+ }
291
+
292
+ export function createBigIntTypedArrayNode(
293
+ id: number,
294
+ current: BigIntTypedArrayValue,
295
+ buffer: SerovalNode,
296
+ ): SerovalBigIntTypedArrayNode {
297
+ return createSerovalNode(
298
+ SerovalNodeType.BigIntTypedArray,
299
+ id,
300
+ NIL,
301
+ current.constructor.name,
302
+ NIL,
303
+ NIL,
304
+ NIL,
305
+ NIL,
306
+ buffer,
307
+ current.byteOffset,
308
+ NIL,
309
+ current.byteLength,
310
+ );
311
+ }
312
+
313
+ export function createDataViewNode(
314
+ id: number,
315
+ current: DataView,
316
+ buffer: SerovalNode,
317
+ ): SerovalDataViewNode {
318
+ return createSerovalNode(
319
+ SerovalNodeType.DataView,
320
+ id,
321
+ NIL,
322
+ NIL,
323
+ NIL,
324
+ NIL,
325
+ NIL,
326
+ NIL,
327
+ buffer,
328
+ current.byteOffset,
329
+ NIL,
330
+ current.byteLength,
331
+ );
332
+ }
333
+
334
+ export function createErrorNode(
335
+ id: number,
336
+ current: Error,
337
+ options: SerovalObjectRecordNode | undefined,
338
+ ): SerovalErrorNode {
339
+ return createSerovalNode(
340
+ SerovalNodeType.Error,
341
+ id,
342
+ getErrorConstructor(current),
343
+ NIL,
344
+ serializeString(current.message),
345
+ options,
346
+ NIL,
347
+ NIL,
348
+ NIL,
349
+ NIL,
350
+ NIL,
351
+ NIL,
352
+ );
353
+ }
354
+
355
+ export function createAggregateErrorNode(
356
+ id: number,
357
+ current: AggregateError,
358
+ options: SerovalObjectRecordNode | undefined,
359
+ ): SerovalAggregateErrorNode {
360
+ return createSerovalNode(
361
+ SerovalNodeType.AggregateError,
362
+ id,
363
+ getErrorConstructor(current),
364
+ NIL,
365
+ serializeString(current.message),
366
+ options,
367
+ NIL,
368
+ NIL,
369
+ NIL,
370
+ NIL,
371
+ NIL,
372
+ NIL,
373
+ );
374
+ }
375
+
376
+ export function createSetNode(
377
+ id: number,
378
+ items: SerovalNode[],
379
+ ): SerovalSetNode {
380
+ return createSerovalNode(
381
+ SerovalNodeType.Set,
382
+ id,
383
+ NIL,
384
+ NIL,
385
+ NIL,
386
+ NIL,
387
+ NIL,
388
+ items,
389
+ NIL,
390
+ NIL,
391
+ NIL,
392
+ NIL,
393
+ );
394
+ }
395
+
396
+ export function createIteratorFactoryInstanceNode(
397
+ factory: SerovalNodeWithID,
398
+ items: SerovalNodeWithID,
399
+ ): SerovalIteratorFactoryInstanceNode {
400
+ return createSerovalNode(
401
+ SerovalNodeType.IteratorFactoryInstance,
402
+ NIL,
403
+ NIL,
404
+ NIL,
405
+ NIL,
406
+ NIL,
407
+ NIL,
408
+ [factory, items],
409
+ NIL,
410
+ NIL,
411
+ NIL,
412
+ NIL,
413
+ );
414
+ }
415
+
416
+ export function createAsyncIteratorFactoryInstanceNode(
417
+ factory: SerovalNodeWithID,
418
+ items: SerovalNodeWithID,
419
+ ): SerovalAsyncIteratorFactoryInstanceNode {
420
+ return createSerovalNode(
421
+ SerovalNodeType.AsyncIteratorFactoryInstance,
422
+ NIL,
423
+ NIL,
424
+ NIL,
425
+ NIL,
426
+ NIL,
427
+ NIL,
428
+ [factory, items],
429
+ NIL,
430
+ NIL,
431
+ NIL,
432
+ NIL,
433
+ );
434
+ }
435
+
436
+ export function createStreamConstructorNode(
437
+ id: number,
438
+ factory: SerovalNodeWithID,
439
+ sequence: SerovalNode[],
440
+ ): SerovalStreamConstructorNode {
441
+ return createSerovalNode(
442
+ SerovalNodeType.StreamConstructor,
443
+ id,
444
+ NIL,
445
+ NIL,
446
+ NIL,
447
+ NIL,
448
+ NIL,
449
+ sequence,
450
+ factory,
451
+ NIL,
452
+ NIL,
453
+ NIL,
454
+ );
455
+ }
456
+
457
+ export function createStreamNextNode(
458
+ id: number,
459
+ parsed: SerovalNode,
460
+ ): SerovalStreamNextNode {
461
+ return createSerovalNode(
462
+ SerovalNodeType.StreamNext,
463
+ id,
464
+ NIL,
465
+ NIL,
466
+ NIL,
467
+ NIL,
468
+ NIL,
469
+ NIL,
470
+ parsed,
471
+ NIL,
472
+ NIL,
473
+ NIL,
474
+ );
475
+ }
476
+
477
+ export function createStreamThrowNode(
478
+ id: number,
479
+ parsed: SerovalNode,
480
+ ): SerovalStreamThrowNode {
481
+ return createSerovalNode(
482
+ SerovalNodeType.StreamThrow,
483
+ id,
484
+ NIL,
485
+ NIL,
486
+ NIL,
487
+ NIL,
488
+ NIL,
489
+ NIL,
490
+ parsed,
491
+ NIL,
492
+ NIL,
493
+ NIL,
494
+ );
495
+ }
496
+
497
+ export function createStreamReturnNode(
498
+ id: number,
499
+ parsed: SerovalNode,
500
+ ): SerovalStreamReturnNode {
501
+ return createSerovalNode(
502
+ SerovalNodeType.StreamReturn,
503
+ id,
504
+ NIL,
505
+ NIL,
506
+ NIL,
507
+ NIL,
508
+ NIL,
509
+ NIL,
510
+ parsed,
511
+ NIL,
512
+ NIL,
513
+ NIL,
514
+ );
515
+ }
516
+
517
+ export function createSequenceNode(
518
+ id: number,
519
+ sequence: SerovalNode[],
520
+ throwAt: number,
521
+ doneAt: number,
522
+ ): SerovalSequenceNode {
523
+ return createSerovalNode(
524
+ SerovalNodeType.Sequence,
525
+ id,
526
+ throwAt,
527
+ NIL,
528
+ NIL,
529
+ NIL,
530
+ NIL,
531
+ sequence,
532
+ NIL,
533
+ NIL,
534
+ NIL,
535
+ doneAt,
536
+ );
537
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * References
3
+ * - https://compat-table.github.io/compat-table/es6/
4
+ * - MDN
5
+ */
6
+
7
+ export enum Feature {
8
+ AggregateError = 0x01,
9
+ // @deprecated
10
+ ArrowFunction = 0x02,
11
+ ErrorPrototypeStack = 0x04,
12
+ ObjectAssign = 0x08,
13
+ BigIntTypedArray = 0x10,
14
+ RegExp = 0x20,
15
+ }
16
+
17
+ export const ALL_ENABLED =
18
+ Feature.AggregateError |
19
+ Feature.ArrowFunction |
20
+ Feature.ErrorPrototypeStack |
21
+ Feature.ObjectAssign |
22
+ Feature.BigIntTypedArray |
23
+ Feature.RegExp;