seroval 1.3.2 → 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 (125) hide show
  1. package/dist/cjs/development/index.cjs +2817 -2700
  2. package/dist/cjs/development/index.cjs.map +4 -4
  3. package/dist/cjs/production/index.cjs +3 -17
  4. package/dist/esm/development/index.mjs +2817 -2700
  5. package/dist/esm/development/index.mjs.map +4 -4
  6. package/dist/esm/production/index.mjs +3 -17
  7. package/dist/types/core/base-primitives.d.ts +3 -4
  8. package/dist/types/core/base-primitives.d.ts.map +1 -1
  9. package/dist/types/core/compat.d.ts +3 -2
  10. package/dist/types/core/compat.d.ts.map +1 -1
  11. package/dist/types/core/constants.d.ts +2 -1
  12. package/dist/types/core/constants.d.ts.map +1 -1
  13. package/dist/types/core/constructors.d.ts +54 -0
  14. package/dist/types/core/constructors.d.ts.map +1 -0
  15. package/dist/types/core/context/async-parser.d.ts +20 -0
  16. package/dist/types/core/context/async-parser.d.ts.map +1 -0
  17. package/dist/types/core/context/deserializer.d.ts +40 -38
  18. package/dist/types/core/context/deserializer.d.ts.map +1 -1
  19. package/dist/types/core/context/parser.d.ts +34 -19
  20. package/dist/types/core/context/parser.d.ts.map +1 -1
  21. package/dist/types/core/context/serializer.d.ts +38 -99
  22. package/dist/types/core/context/serializer.d.ts.map +1 -1
  23. package/dist/types/core/context/sync-parser.d.ts +59 -0
  24. package/dist/types/core/context/sync-parser.d.ts.map +1 -0
  25. package/dist/types/core/cross/index.d.ts +12 -13
  26. package/dist/types/core/cross/index.d.ts.map +1 -1
  27. package/dist/types/core/errors.d.ts +9 -0
  28. package/dist/types/core/errors.d.ts.map +1 -1
  29. package/dist/types/core/function-string.d.ts +2 -2
  30. package/dist/types/core/function-string.d.ts.map +1 -1
  31. package/dist/types/core/literals.d.ts.map +1 -1
  32. package/dist/types/core/node.d.ts +1 -1
  33. package/dist/types/core/node.d.ts.map +1 -1
  34. package/dist/types/core/plugin.d.ts +13 -11
  35. package/dist/types/core/plugin.d.ts.map +1 -1
  36. package/dist/types/core/reference.d.ts.map +1 -1
  37. package/dist/types/core/special-reference.d.ts +3 -2
  38. package/dist/types/core/special-reference.d.ts.map +1 -1
  39. package/dist/types/core/stream.d.ts +1 -2
  40. package/dist/types/core/stream.d.ts.map +1 -1
  41. package/dist/types/core/string.d.ts.map +1 -1
  42. package/dist/types/core/symbols.d.ts +14 -0
  43. package/dist/types/core/symbols.d.ts.map +1 -0
  44. package/dist/types/core/tree/index.d.ts +7 -3
  45. package/dist/types/core/tree/index.d.ts.map +1 -1
  46. package/dist/types/core/types.d.ts +4 -11
  47. package/dist/types/core/types.d.ts.map +1 -1
  48. package/dist/types/core/utils/iterator-to-sequence.d.ts.map +1 -1
  49. package/dist/types/index.d.ts +10 -5
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/package.json +18 -21
  52. package/dist/types/core/context/parser/async.d.ts +0 -24
  53. package/dist/types/core/context/parser/async.d.ts.map +0 -1
  54. package/dist/types/core/context/parser/stream.d.ts +0 -43
  55. package/dist/types/core/context/parser/stream.d.ts.map +0 -1
  56. package/dist/types/core/context/parser/sync.d.ts +0 -30
  57. package/dist/types/core/context/parser/sync.d.ts.map +0 -1
  58. package/dist/types/core/cross/async.d.ts +0 -8
  59. package/dist/types/core/cross/async.d.ts.map +0 -1
  60. package/dist/types/core/cross/deserializer.d.ts +0 -9
  61. package/dist/types/core/cross/deserializer.d.ts.map +0 -1
  62. package/dist/types/core/cross/parser.d.ts +0 -6
  63. package/dist/types/core/cross/parser.d.ts.map +0 -1
  64. package/dist/types/core/cross/serializer.d.ts +0 -16
  65. package/dist/types/core/cross/serializer.d.ts.map +0 -1
  66. package/dist/types/core/cross/stream.d.ts +0 -8
  67. package/dist/types/core/cross/stream.d.ts.map +0 -1
  68. package/dist/types/core/cross/sync.d.ts +0 -8
  69. package/dist/types/core/cross/sync.d.ts.map +0 -1
  70. package/dist/types/core/tree/async.d.ts +0 -8
  71. package/dist/types/core/tree/async.d.ts.map +0 -1
  72. package/dist/types/core/tree/deserializer.d.ts +0 -13
  73. package/dist/types/core/tree/deserializer.d.ts.map +0 -1
  74. package/dist/types/core/tree/serializer.d.ts +0 -29
  75. package/dist/types/core/tree/serializer.d.ts.map +0 -1
  76. package/dist/types/core/tree/sync.d.ts +0 -8
  77. package/dist/types/core/tree/sync.d.ts.map +0 -1
  78. package/dist/types/core/utils/assert.d.ts +0 -2
  79. package/dist/types/core/utils/assert.d.ts.map +0 -1
  80. package/dist/types/core/utils/deferred.d.ts +0 -7
  81. package/dist/types/core/utils/deferred.d.ts.map +0 -1
  82. package/src/core/Serializer.ts +0 -119
  83. package/src/core/base-primitives.ts +0 -542
  84. package/src/core/compat.ts +0 -20
  85. package/src/core/constants.ts +0 -185
  86. package/src/core/context/deserializer.ts +0 -456
  87. package/src/core/context/parser/async.ts +0 -495
  88. package/src/core/context/parser/stream.ts +0 -323
  89. package/src/core/context/parser/sync.ts +0 -404
  90. package/src/core/context/parser.ts +0 -270
  91. package/src/core/context/serializer.ts +0 -1180
  92. package/src/core/cross/async.ts +0 -9
  93. package/src/core/cross/deserializer.ts +0 -16
  94. package/src/core/cross/index.ts +0 -170
  95. package/src/core/cross/parser.ts +0 -7
  96. package/src/core/cross/serializer.ts +0 -72
  97. package/src/core/cross/stream.ts +0 -9
  98. package/src/core/cross/sync.ts +0 -9
  99. package/src/core/errors.ts +0 -102
  100. package/src/core/function-string.ts +0 -31
  101. package/src/core/keys.ts +0 -17
  102. package/src/core/literals.ts +0 -43
  103. package/src/core/node.ts +0 -40
  104. package/src/core/opaque-reference.ts +0 -9
  105. package/src/core/plugin.ts +0 -91
  106. package/src/core/reference.ts +0 -63
  107. package/src/core/special-reference.ts +0 -114
  108. package/src/core/stream.ts +0 -205
  109. package/src/core/string.ts +0 -84
  110. package/src/core/tree/async.ts +0 -9
  111. package/src/core/tree/deserializer.ts +0 -26
  112. package/src/core/tree/index.ts +0 -111
  113. package/src/core/tree/serializer.ts +0 -98
  114. package/src/core/tree/sync.ts +0 -9
  115. package/src/core/types.ts +0 -370
  116. package/src/core/utils/assert.ts +0 -5
  117. package/src/core/utils/deferred.ts +0 -22
  118. package/src/core/utils/error.ts +0 -73
  119. package/src/core/utils/get-identifier.ts +0 -18
  120. package/src/core/utils/get-object-flag.ts +0 -14
  121. package/src/core/utils/is-valid-identifier.ts +0 -12
  122. package/src/core/utils/iterator-to-sequence.ts +0 -66
  123. package/src/core/utils/promise-to-result.ts +0 -9
  124. package/src/core/utils/typed-array.ts +0 -56
  125. package/src/index.ts +0 -18
@@ -1,9 +0,0 @@
1
- import BaseSyncParserContext from '../context/parser/sync';
2
- import type { BaseParserContextOptions } from '../context/parser';
3
- import type { SerovalMode } from '../plugin';
4
-
5
- export type SyncParserContextOptions = Omit<BaseParserContextOptions, 'refs'>;
6
-
7
- export default class SyncParserContext extends BaseSyncParserContext {
8
- readonly mode: SerovalMode = 'vanilla';
9
- }
package/src/core/types.ts DELETED
@@ -1,370 +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
- // sequence in bytes
106
- s: number[];
107
- }
108
-
109
- export interface SerovalTypedArrayNode extends SerovalBaseNode {
110
- t: SerovalNodeType.TypedArray;
111
- // id
112
- i: number;
113
- // length
114
- l: number;
115
- // TypedArray Constructor
116
- c: string;
117
- // ArrayBuffer reference
118
- f: SerovalNode;
119
- // Byte Offset
120
- b: number;
121
- }
122
-
123
- export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
124
- t: SerovalNodeType.BigIntTypedArray;
125
- i: number;
126
- // length
127
- l: number;
128
- // TypedArray Constructor
129
- c: string;
130
- // ArrayBuffer reference
131
- f: SerovalNode;
132
- // Byte Offset
133
- b: number;
134
- }
135
-
136
- export type SerovalSemiPrimitiveNode =
137
- | SerovalBigIntNode
138
- | SerovalDateNode
139
- | SerovalRegExpNode
140
- | SerovalTypedArrayNode
141
- | SerovalBigIntTypedArrayNode;
142
-
143
- export interface SerovalSetNode extends SerovalBaseNode {
144
- t: SerovalNodeType.Set;
145
- // id
146
- i: number;
147
- // Size of Set
148
- l: number;
149
- // Items in Set (as array)
150
- a: SerovalNode[];
151
- }
152
-
153
- export interface SerovalMapNode extends SerovalBaseNode {
154
- t: SerovalNodeType.Map;
155
- i: number;
156
- // key/value pairs
157
- e: SerovalMapRecordNode;
158
- f: SerovalNodeWithID;
159
- }
160
-
161
- export interface SerovalArrayNode extends SerovalBaseNode {
162
- t: SerovalNodeType.Array;
163
- // size of array
164
- l: number;
165
- // items
166
- a: (SerovalNode | undefined)[];
167
- i: number;
168
- o: SerovalObjectFlags;
169
- }
170
-
171
- export interface SerovalObjectNode extends SerovalBaseNode {
172
- t: SerovalNodeType.Object;
173
- // key/value pairs
174
- p: SerovalObjectRecordNode;
175
- i: number;
176
- o: SerovalObjectFlags;
177
- }
178
-
179
- export interface SerovalNullConstructorNode extends SerovalBaseNode {
180
- t: SerovalNodeType.NullConstructor;
181
- // key/value pairs
182
- p: SerovalObjectRecordNode;
183
- i: number;
184
- o: SerovalObjectFlags;
185
- }
186
-
187
- export interface SerovalPromiseNode extends SerovalBaseNode {
188
- t: SerovalNodeType.Promise;
189
- s: 0 | 1;
190
- // resolved value
191
- f: SerovalNode;
192
- i: number;
193
- }
194
-
195
- export interface SerovalErrorNode extends SerovalBaseNode {
196
- t: SerovalNodeType.Error;
197
- // constructor name
198
- s: ErrorConstructorTag;
199
- // message
200
- m: string;
201
- // other properties
202
- p: SerovalObjectRecordNode | undefined;
203
- i: number;
204
- }
205
-
206
- export interface SerovalAggregateErrorNode extends SerovalBaseNode {
207
- t: SerovalNodeType.AggregateError;
208
- i: number;
209
- // message
210
- m: string;
211
- // other properties
212
- p: SerovalObjectRecordNode | undefined;
213
- }
214
-
215
- export interface SerovalWKSymbolNode extends SerovalBaseNode {
216
- t: SerovalNodeType.WKSymbol;
217
- i: number;
218
- s: Symbols;
219
- }
220
-
221
- export interface SerovalReferenceNode extends SerovalBaseNode {
222
- t: SerovalNodeType.Reference;
223
- i: number;
224
- // id of the reference in the map
225
- s: string;
226
- }
227
-
228
- export interface SerovalDataViewNode extends SerovalBaseNode {
229
- t: SerovalNodeType.DataView;
230
- i: number;
231
- // byte length
232
- l: number;
233
- // reference to array buffer
234
- f: SerovalNode;
235
- // byte offset
236
- b: number;
237
- }
238
-
239
- export interface SerovalBoxedNode extends SerovalBaseNode {
240
- t: SerovalNodeType.Boxed;
241
- i: number;
242
- f: SerovalNode;
243
- }
244
-
245
- export interface SerovalPromiseConstructorNode extends SerovalBaseNode {
246
- t: SerovalNodeType.PromiseConstructor;
247
- i: number;
248
- s: number;
249
- f: SerovalNodeWithID;
250
- }
251
-
252
- export interface SerovalPromiseResolveNode extends SerovalBaseNode {
253
- t: SerovalNodeType.PromiseSuccess;
254
- i: number;
255
- a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
256
- }
257
-
258
- export interface SerovalPromiseRejectNode extends SerovalBaseNode {
259
- t: SerovalNodeType.PromiseFailure;
260
- i: number;
261
- a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
262
- }
263
-
264
- export interface SerovalPluginNode extends SerovalBaseNode {
265
- t: SerovalNodeType.Plugin;
266
- i: number;
267
- // value
268
- s: unknown;
269
- // tag name
270
- c: string;
271
- }
272
-
273
- /**
274
- * Represents special values as placeholders
275
- */
276
- export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
277
- t: SerovalNodeType.SpecialReference;
278
- i: number;
279
- s: SpecialReference;
280
- }
281
-
282
- export interface SerovalIteratorFactoryNode extends SerovalBaseNode {
283
- t: SerovalNodeType.IteratorFactory;
284
- i: number;
285
- f: SerovalNodeWithID;
286
- }
287
-
288
- export interface SerovalIteratorFactoryInstanceNode extends SerovalBaseNode {
289
- t: SerovalNodeType.IteratorFactoryInstance;
290
- a: [instance: SerovalNodeWithID, sequence: SerovalNode];
291
- }
292
-
293
- export interface SerovalAsyncIteratorFactoryNode extends SerovalBaseNode {
294
- t: SerovalNodeType.AsyncIteratorFactory;
295
- i: number;
296
- a: [promise: SerovalNodeWithID, symbol: SerovalNodeWithID];
297
- }
298
-
299
- export interface SerovalAsyncIteratorFactoryInstanceNode
300
- extends SerovalBaseNode {
301
- t: SerovalNodeType.AsyncIteratorFactoryInstance;
302
- a: [instance: SerovalNodeWithID, sequence: SerovalNode];
303
- }
304
-
305
- export interface SerovalStreamConstructorNode extends SerovalBaseNode {
306
- t: SerovalNodeType.StreamConstructor;
307
- i: number;
308
- a: SerovalNode[];
309
- // special reference to the constructor
310
- f: SerovalNodeWithID;
311
- }
312
-
313
- export interface SerovalStreamNextNode extends SerovalBaseNode {
314
- t: SerovalNodeType.StreamNext;
315
- i: number;
316
- // Next value
317
- f: SerovalNode;
318
- }
319
-
320
- export interface SerovalStreamThrowNode extends SerovalBaseNode {
321
- t: SerovalNodeType.StreamThrow;
322
- i: number;
323
- // Throw value
324
- f: SerovalNode;
325
- }
326
-
327
- export interface SerovalStreamReturnNode extends SerovalBaseNode {
328
- t: SerovalNodeType.StreamReturn;
329
- i: number;
330
- // Return value
331
- f: SerovalNode;
332
- }
333
-
334
- export type SerovalSyncNode =
335
- | SerovalPrimitiveNode
336
- | SerovalIndexedValueNode
337
- | SerovalSemiPrimitiveNode
338
- | SerovalSetNode
339
- | SerovalMapNode
340
- | SerovalArrayNode
341
- | SerovalObjectNode
342
- | SerovalNullConstructorNode
343
- | SerovalPromiseNode
344
- | SerovalErrorNode
345
- | SerovalAggregateErrorNode
346
- | SerovalWKSymbolNode
347
- | SerovalReferenceNode
348
- | SerovalArrayBufferNode
349
- | SerovalDataViewNode
350
- | SerovalBoxedNode
351
- | SerovalPluginNode
352
- | SerovalSpecialReferenceNode
353
- | SerovalIteratorFactoryNode
354
- | SerovalIteratorFactoryInstanceNode
355
- | SerovalAsyncIteratorFactoryNode
356
- | SerovalAsyncIteratorFactoryInstanceNode;
357
-
358
- export type SerovalAsyncNode =
359
- | SerovalPromiseNode
360
- | SerovalPromiseConstructorNode
361
- | SerovalPromiseResolveNode
362
- | SerovalPromiseRejectNode
363
- | SerovalStreamConstructorNode
364
- | SerovalStreamNextNode
365
- | SerovalStreamThrowNode
366
- | SerovalStreamReturnNode;
367
-
368
- export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;
369
-
370
- export type SerovalNodeWithID = Extract<SerovalNode, { i: number }>;
@@ -1,5 +0,0 @@
1
- export default function assert(cond: unknown, error: Error): asserts cond {
2
- if (!cond) {
3
- throw error;
4
- }
5
- }
@@ -1,22 +0,0 @@
1
- export interface Deferred {
2
- promise: Promise<unknown>;
3
- resolve(value: unknown): void;
4
- reject(value: unknown): void;
5
- }
6
-
7
- export function createDeferred(): Deferred {
8
- let resolve: Deferred['resolve'];
9
- let reject: Deferred['reject'];
10
- return {
11
- promise: new Promise<unknown>((res, rej) => {
12
- resolve = res;
13
- reject = rej;
14
- }),
15
- resolve(value): void {
16
- resolve(value);
17
- },
18
- reject(value): void {
19
- reject(value);
20
- },
21
- };
22
- }
@@ -1,73 +0,0 @@
1
- import { Feature } from '../compat';
2
- import { ERROR_CONSTRUCTOR_STRING, ErrorConstructorTag } from '../constants';
3
-
4
- type ErrorValue =
5
- | Error
6
- | AggregateError
7
- | EvalError
8
- | RangeError
9
- | ReferenceError
10
- | TypeError
11
- | SyntaxError
12
- | URIError;
13
-
14
- export function getErrorConstructor(error: ErrorValue): ErrorConstructorTag {
15
- if (error instanceof EvalError) {
16
- return ErrorConstructorTag.EvalError;
17
- }
18
- if (error instanceof RangeError) {
19
- return ErrorConstructorTag.RangeError;
20
- }
21
- if (error instanceof ReferenceError) {
22
- return ErrorConstructorTag.ReferenceError;
23
- }
24
- if (error instanceof SyntaxError) {
25
- return ErrorConstructorTag.SyntaxError;
26
- }
27
- if (error instanceof TypeError) {
28
- return ErrorConstructorTag.TypeError;
29
- }
30
- if (error instanceof URIError) {
31
- return ErrorConstructorTag.URIError;
32
- }
33
- return ErrorConstructorTag.Error;
34
- }
35
-
36
- function getInitialErrorOptions(
37
- error: Error,
38
- ): Record<string, unknown> | undefined {
39
- const construct = ERROR_CONSTRUCTOR_STRING[getErrorConstructor(error)];
40
- // Name has been modified
41
- if (error.name !== construct) {
42
- return { name: error.name };
43
- }
44
- if (error.constructor.name !== construct) {
45
- // Otherwise, name is overriden because
46
- // the Error class is extended
47
- return { name: error.constructor.name };
48
- }
49
- return {};
50
- }
51
-
52
- export function getErrorOptions(
53
- error: Error,
54
- features: number,
55
- ): Record<string, unknown> | undefined {
56
- let options = getInitialErrorOptions(error);
57
- const names = Object.getOwnPropertyNames(error);
58
- for (let i = 0, len = names.length, name: string; i < len; i++) {
59
- name = names[i];
60
- if (name !== 'name' && name !== 'message') {
61
- if (name === 'stack') {
62
- if (features & Feature.ErrorPrototypeStack) {
63
- options = options || {};
64
- options[name] = error[name as keyof Error];
65
- }
66
- } else {
67
- options = options || {};
68
- options[name] = error[name as keyof Error];
69
- }
70
- }
71
- }
72
- return options;
73
- }
@@ -1,18 +0,0 @@
1
- // Written by https://github.com/DylanPiercey and is distributed under the MIT license.
2
- const REF_START_CHARS = /* @__PURE__ */ 'hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_'; // Avoids chars that could evaluate to a reserved word.
3
- const REF_START_CHARS_LEN = /* @__PURE__ */ REF_START_CHARS.length;
4
- const REF_CHARS =
5
- /* @__PURE__ */ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_';
6
- const REF_CHARS_LEN = /* @__PURE__ */ REF_CHARS.length;
7
-
8
- export default function getIdentifier(index: number): string {
9
- let mod = index % REF_START_CHARS_LEN;
10
- let ref = REF_START_CHARS[mod];
11
- index = (index - mod) / REF_START_CHARS_LEN;
12
- while (index > 0) {
13
- mod = index % REF_CHARS_LEN;
14
- ref += REF_CHARS[mod];
15
- index = (index - mod) / REF_CHARS_LEN;
16
- }
17
- return ref;
18
- }
@@ -1,14 +0,0 @@
1
- import { SerovalObjectFlags } from '../constants';
2
-
3
- export function getObjectFlag(obj: unknown): SerovalObjectFlags {
4
- if (Object.isFrozen(obj)) {
5
- return SerovalObjectFlags.Frozen;
6
- }
7
- if (Object.isSealed(obj)) {
8
- return SerovalObjectFlags.Sealed;
9
- }
10
- if (Object.isExtensible(obj)) {
11
- return SerovalObjectFlags.None;
12
- }
13
- return SerovalObjectFlags.NonExtensible;
14
- }
@@ -1,12 +0,0 @@
1
- const IDENTIFIER_CHECK = /^[$A-Z_][0-9A-Z_$]*$/i;
2
-
3
- export function isValidIdentifier(name: string): boolean {
4
- const char = name[0];
5
- return (
6
- (char === '$' ||
7
- char === '_' ||
8
- (char >= 'A' && char <= 'Z') ||
9
- (char >= 'a' && char <= 'z')) &&
10
- IDENTIFIER_CHECK.test(name)
11
- );
12
- }
@@ -1,66 +0,0 @@
1
- import { NIL } from "../constants";
2
-
3
- export interface Sequence {
4
- v: unknown[];
5
- t: number;
6
- d: number;
7
- }
8
-
9
- export function iteratorToSequence<T>(source: Iterable<T>): Sequence {
10
- const values: unknown[] = [];
11
- let throwsAt = -1;
12
- let doneAt = -1;
13
-
14
- const iterator = source[Symbol.iterator]();
15
-
16
- while (true) {
17
- try {
18
- const value = iterator.next();
19
- values.push(value.value);
20
- if (value.done) {
21
- doneAt = values.length - 1;
22
- break;
23
- }
24
- } catch (error) {
25
- throwsAt = values.length;
26
- values.push(error);
27
- }
28
- }
29
-
30
- return {
31
- v: values,
32
- t: throwsAt,
33
- d: doneAt,
34
- };
35
- }
36
-
37
- export function sequenceToIterator<T>(
38
- sequence: Sequence,
39
- ): () => IterableIterator<T> {
40
- return (): IterableIterator<T> => {
41
- let index = 0;
42
-
43
- return {
44
- [Symbol.iterator](): IterableIterator<T> {
45
- return this;
46
- },
47
- next(): IteratorResult<T> {
48
- if (index > sequence.d) {
49
- return {
50
- done: true,
51
- value: NIL,
52
- };
53
- }
54
- const currentIndex = index++;
55
- const currentItem = sequence.v[currentIndex];
56
- if (currentIndex === sequence.t) {
57
- throw currentItem;
58
- }
59
- return {
60
- done: currentIndex === sequence.d,
61
- value: currentItem as T,
62
- };
63
- },
64
- };
65
- };
66
- }
@@ -1,9 +0,0 @@
1
- export default async function promiseToResult(
2
- current: Promise<unknown>,
3
- ): Promise<[0 | 1, unknown]> {
4
- try {
5
- return [1, await current];
6
- } catch (e) {
7
- return [0, e];
8
- }
9
- }
@@ -1,56 +0,0 @@
1
- import { SerovalUnknownTypedArrayError } from '../errors';
2
-
3
- type TypedArrayConstructor =
4
- | Int8ArrayConstructor
5
- | Int16ArrayConstructor
6
- | Int32ArrayConstructor
7
- | Uint8ArrayConstructor
8
- | Uint16ArrayConstructor
9
- | Uint32ArrayConstructor
10
- | Uint8ClampedArrayConstructor
11
- | Float32ArrayConstructor
12
- | Float64ArrayConstructor
13
- | BigInt64ArrayConstructor
14
- | BigUint64ArrayConstructor;
15
-
16
- export type TypedArrayValue =
17
- | Int8Array
18
- | Int16Array
19
- | Int32Array
20
- | Uint8Array
21
- | Uint16Array
22
- | Uint32Array
23
- | Uint8ClampedArray
24
- | Float32Array
25
- | Float64Array;
26
-
27
- export type BigIntTypedArrayValue = BigInt64Array | BigUint64Array;
28
-
29
- export function getTypedArrayConstructor(name: string): TypedArrayConstructor {
30
- switch (name) {
31
- case 'Int8Array':
32
- return Int8Array;
33
- case 'Int16Array':
34
- return Int16Array;
35
- case 'Int32Array':
36
- return Int32Array;
37
- case 'Uint8Array':
38
- return Uint8Array;
39
- case 'Uint16Array':
40
- return Uint16Array;
41
- case 'Uint32Array':
42
- return Uint32Array;
43
- case 'Uint8ClampedArray':
44
- return Uint8ClampedArray;
45
- case 'Float32Array':
46
- return Float32Array;
47
- case 'Float64Array':
48
- return Float64Array;
49
- case 'BigInt64Array':
50
- return BigInt64Array;
51
- case 'BigUint64Array':
52
- return BigUint64Array;
53
- default:
54
- throw new SerovalUnknownTypedArrayError(name);
55
- }
56
- }
package/src/index.ts DELETED
@@ -1,18 +0,0 @@
1
- export { Feature } from './core/compat';
2
- export { createReference } from './core/reference';
3
-
4
- export * from './core/cross';
5
- export * from './core/tree';
6
-
7
- export { getCrossReferenceHeader } from './core/keys';
8
-
9
- export * from './core/plugin';
10
- export { default as Serializer } from './core/Serializer';
11
-
12
- export { createStream } from './core/stream';
13
- export type { Stream } from './core/stream';
14
-
15
- export * from './core/errors';
16
- export type { SerovalNode } from './core/types';
17
-
18
- export { OpaqueReference } from './core/opaque-reference';