seroval 0.9.0 → 0.10.2

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 (90) hide show
  1. package/README.md +4 -287
  2. package/dist/cjs/development/index.cjs +3529 -1140
  3. package/dist/cjs/development/index.cjs.map +4 -4
  4. package/dist/cjs/production/index.cjs +3 -3
  5. package/dist/esm/development/index.mjs +3533 -1142
  6. package/dist/esm/development/index.mjs.map +4 -4
  7. package/dist/esm/production/index.mjs +3 -3
  8. package/dist/types/core/Serializer.d.ts +15 -0
  9. package/dist/types/{tree → core}/UnsupportedTypeError.d.ts +4 -3
  10. package/dist/types/{assert.d.ts → core/assert.d.ts} +1 -1
  11. package/dist/types/core/assignments.d.ts +33 -0
  12. package/dist/types/core/base-primitives.d.ts +12 -0
  13. package/dist/types/{compat.d.ts → core/compat.d.ts} +22 -22
  14. package/dist/types/core/constants.d.ts +89 -0
  15. package/dist/types/core/context.d.ts +9 -0
  16. package/dist/types/core/cross/async.d.ts +3 -0
  17. package/dist/types/core/cross/context.d.ts +37 -0
  18. package/dist/types/core/cross/index.d.ts +8 -0
  19. package/dist/types/core/cross/primitives.d.ts +9 -0
  20. package/dist/types/core/cross/serialize.d.ts +5 -0
  21. package/dist/types/core/cross/stream.d.ts +3 -0
  22. package/dist/types/core/cross/sync.d.ts +3 -0
  23. package/dist/types/core/cross/web-api.d.ts +4 -0
  24. package/dist/types/{get-identifier.d.ts → core/get-identifier.d.ts} +1 -1
  25. package/dist/types/core/keys.d.ts +13 -0
  26. package/dist/types/{tree/constants.d.ts → core/literals.d.ts} +9 -11
  27. package/dist/types/core/promise-to-result.d.ts +1 -0
  28. package/dist/types/{tree → core}/reference.d.ts +5 -6
  29. package/dist/types/{tree → core}/shared.d.ts +13 -13
  30. package/dist/types/{string.d.ts → core/string.d.ts} +3 -3
  31. package/dist/types/core/tree/async.d.ts +3 -0
  32. package/dist/types/core/tree/context.d.ts +44 -0
  33. package/dist/types/core/tree/deserialize.d.ts +3 -0
  34. package/dist/types/core/tree/index.d.ts +14 -0
  35. package/dist/types/core/tree/primitives.d.ts +9 -0
  36. package/dist/types/core/tree/serialize.d.ts +4 -0
  37. package/dist/types/core/tree/sync.d.ts +3 -0
  38. package/dist/types/core/tree/web-api.d.ts +4 -0
  39. package/dist/types/{tree → core}/types.d.ts +228 -238
  40. package/dist/types/core/web-api.d.ts +4 -0
  41. package/dist/types/index.d.ts +9 -19
  42. package/dist/types/types.d.ts +20 -20
  43. package/package.json +5 -5
  44. package/src/core/Serializer.ts +48 -0
  45. package/src/{tree → core}/UnsupportedTypeError.ts +1 -1
  46. package/src/core/assignments.ts +159 -0
  47. package/src/{tree/primitives.ts → core/base-primitives.ts} +33 -136
  48. package/src/core/constants.ts +169 -0
  49. package/src/core/context.ts +15 -0
  50. package/src/core/cross/async.ts +614 -0
  51. package/src/core/cross/context.ts +102 -0
  52. package/src/core/cross/index.ts +169 -0
  53. package/src/core/cross/primitives.ts +137 -0
  54. package/src/core/cross/serialize.ts +847 -0
  55. package/src/core/cross/stream.ts +745 -0
  56. package/src/core/cross/sync.ts +561 -0
  57. package/src/core/cross/web-api.ts +55 -0
  58. package/src/core/header.js +61 -0
  59. package/src/core/keys.ts +41 -0
  60. package/src/core/literals.ts +28 -0
  61. package/src/core/promise-to-result.ts +9 -0
  62. package/src/{tree → core}/reference.ts +6 -7
  63. package/src/{tree → core}/shared.ts +4 -4
  64. package/src/{tree → core/tree}/async.ts +46 -34
  65. package/src/core/tree/context.ts +125 -0
  66. package/src/{tree → core/tree}/deserialize.ts +68 -55
  67. package/src/core/tree/index.ts +142 -0
  68. package/src/core/tree/primitives.ts +132 -0
  69. package/src/{tree → core/tree}/serialize.ts +87 -193
  70. package/src/{tree → core/tree}/sync.ts +50 -39
  71. package/src/{tree → core/tree}/web-api.ts +8 -52
  72. package/src/{tree → core}/types.ts +76 -60
  73. package/src/core/web-api.ts +51 -0
  74. package/src/index.ts +7 -141
  75. package/src/types.ts +1 -1
  76. package/dist/types/context.d.ts +0 -67
  77. package/dist/types/tree/async.d.ts +0 -3
  78. package/dist/types/tree/deserialize.d.ts +0 -3
  79. package/dist/types/tree/primitives.d.ts +0 -19
  80. package/dist/types/tree/serialize.d.ts +0 -4
  81. package/dist/types/tree/symbols.d.ts +0 -33
  82. package/dist/types/tree/sync.d.ts +0 -3
  83. package/dist/types/tree/web-api.d.ts +0 -6
  84. package/src/context.ts +0 -164
  85. package/src/tree/constants.ts +0 -73
  86. package/src/tree/symbols.ts +0 -65
  87. /package/src/{assert.ts → core/assert.ts} +0 -0
  88. /package/src/{compat.ts → core/compat.ts} +0 -0
  89. /package/src/{get-identifier.ts → core/get-identifier.ts} +0 -0
  90. /package/src/{string.ts → core/string.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import type { ParserContext } from './context';
2
+ import type { SerovalNode } from '../types';
3
+ export default function parseAsync<T>(ctx: ParserContext, current: T): Promise<SerovalNode>;
@@ -0,0 +1,44 @@
1
+ import type { BaseParserContext, BaseSerializerContext } from '../context';
2
+ export interface ParserReference {
3
+ ids: Map<unknown, number>;
4
+ marked: Set<number>;
5
+ }
6
+ export interface ParserContext extends BaseParserContext {
7
+ reference: ParserReference;
8
+ }
9
+ export interface ParserOptions {
10
+ disabledFeatures: number;
11
+ }
12
+ export declare function createParserContext(options?: Partial<ParserOptions>): ParserContext;
13
+ export interface SerializerReference {
14
+ size: number;
15
+ valid: (number | undefined)[];
16
+ marked: Set<number>;
17
+ }
18
+ export interface SerializerContext extends BaseSerializerContext {
19
+ reference: SerializerReference;
20
+ vars: (string | undefined)[];
21
+ }
22
+ export interface SerializerOptions {
23
+ markedRefs: number[] | Set<number>;
24
+ features: number;
25
+ }
26
+ export declare function createSerializerContext(options: SerializerOptions): SerializerContext;
27
+ /**
28
+ * Increments the number of references the referenced value has
29
+ */
30
+ export declare function markRef(ctx: ParserContext | SerializerContext, current: number): void;
31
+ /**
32
+ * Creates the reference param (identifier) from the given reference ID
33
+ * Calling this function means the value has been referenced somewhere
34
+ */
35
+ export declare function getRefParam(ctx: SerializerContext, index: number): string;
36
+ export declare function createIndexedValue<T>(ctx: ParserContext, current: T): number;
37
+ export interface DeserializerContext {
38
+ values: Map<number, unknown>;
39
+ refs: Set<number>;
40
+ }
41
+ export interface DeserializerOptions {
42
+ markedRefs: number[] | Set<number>;
43
+ }
44
+ export declare function createDeserializerContext(options: DeserializerOptions): DeserializerContext;
@@ -0,0 +1,3 @@
1
+ import type { DeserializerContext } from './context';
2
+ import type { SerovalNode } from '../types';
3
+ export default function deserializeTree(ctx: DeserializerContext, node: SerovalNode): unknown;
@@ -0,0 +1,14 @@
1
+ import type { SerovalNode } from '../types';
2
+ import type { ParserOptions } from './context';
3
+ export declare function serialize<T>(source: T, options?: Partial<ParserOptions>): string;
4
+ export declare function serializeAsync<T>(source: T, options?: Partial<ParserOptions>): Promise<string>;
5
+ export declare function deserialize<T>(source: string): T;
6
+ export interface SerovalJSON {
7
+ t: SerovalNode;
8
+ f: number;
9
+ m: number[];
10
+ }
11
+ export declare function toJSON<T>(source: T, options?: Partial<ParserOptions>): SerovalJSON;
12
+ export declare function toJSONAsync<T>(source: T, options?: Partial<ParserOptions>): Promise<SerovalJSON>;
13
+ export declare function compileJSON(source: SerovalJSON): string;
14
+ export declare function fromJSON<T>(source: SerovalJSON): T;
@@ -0,0 +1,9 @@
1
+ import type { ParserContext } from './context';
2
+ import type { BigIntTypedArrayValue, TypedArrayValue } from '../../types';
3
+ import type { SerovalBigIntTypedArrayNode, SerovalTypedArrayNode, SerovalWKSymbolNode, SerovalReferenceNode, SerovalDataViewNode, SerovalNode, SerovalIndexedValueNode } from '../types';
4
+ export declare function serializeArrayBuffer(ctx: ParserContext, current: ArrayBuffer): SerovalNode;
5
+ export declare function createTypedArrayNode(ctx: ParserContext, id: number, current: TypedArrayValue): SerovalTypedArrayNode;
6
+ export declare function createBigIntTypedArrayNode(ctx: ParserContext, id: number, current: BigIntTypedArrayValue): SerovalBigIntTypedArrayNode;
7
+ export declare function createDataViewNode(ctx: ParserContext, id: number, current: DataView): SerovalDataViewNode;
8
+ export declare function createSymbolNode(ctx: ParserContext, current: symbol): SerovalIndexedValueNode | SerovalReferenceNode | SerovalWKSymbolNode;
9
+ export declare function createFunctionNode(ctx: ParserContext, current: Function): SerovalIndexedValueNode | SerovalReferenceNode;
@@ -0,0 +1,4 @@
1
+ import type { SerializerContext } from './context';
2
+ import type { SerovalNode } from '../types';
3
+ export declare function resolvePatches(ctx: SerializerContext): string | undefined;
4
+ export default function serializeTree(ctx: SerializerContext, node: SerovalNode): string;
@@ -0,0 +1,3 @@
1
+ import type { ParserContext } from './context';
2
+ import type { SerovalSyncNode } from '../types';
3
+ export default function parseSync<T>(ctx: ParserContext, current: T): SerovalSyncNode;
@@ -0,0 +1,4 @@
1
+ import type { ParserContext } from './context';
2
+ import type { SerovalBlobNode, SerovalFileNode } from '../types';
3
+ export declare function createBlobNode(ctx: ParserContext, id: number, current: Blob): Promise<SerovalBlobNode>;
4
+ export declare function createFileNode(ctx: ParserContext, id: number, current: File): Promise<SerovalFileNode>;
@@ -1,238 +1,228 @@
1
- import type { Symbols } from './symbols';
2
- export declare const enum SerovalConstant {
3
- Null = 0,
4
- Undefined = 1,
5
- True = 2,
6
- False = 3,
7
- NegativeZero = 4,
8
- Infinity = 5,
9
- NegativeInfinity = 6,
10
- NaN = 7
11
- }
12
- export declare const enum SerovalNodeType {
13
- Number = 0,
14
- String = 1,
15
- Constant = 2,
16
- BigInt = 3,
17
- IndexedValue = 4,
18
- Date = 5,
19
- RegExp = 6,
20
- Set = 7,
21
- Map = 8,
22
- Array = 9,
23
- Object = 10,
24
- NullConstructor = 11,
25
- Promise = 12,
26
- Error = 13,
27
- AggregateError = 14,
28
- TypedArray = 15,
29
- BigIntTypedArray = 16,
30
- WKSymbol = 17,
31
- URL = 18,
32
- URLSearchParams = 19,
33
- Reference = 20,
34
- ArrayBuffer = 21,
35
- DataView = 22,
36
- Blob = 23,
37
- File = 24,
38
- Headers = 25,
39
- FormData = 26,
40
- Boxed = 27
41
- }
42
- export declare const enum SerovalObjectFlags {
43
- None = 0,
44
- NonExtensible = 1,
45
- Sealed = 2,
46
- Frozen = 3
47
- }
48
- export interface SerovalBaseNode {
49
- t: SerovalNodeType;
50
- i: number | undefined;
51
- s: unknown;
52
- l: number | undefined;
53
- c: string | undefined;
54
- m: string | undefined;
55
- d: SerovalObjectRecordNode | SerovalMapRecordNode | undefined;
56
- a: (SerovalNode | undefined)[] | undefined;
57
- f: SerovalNode | undefined;
58
- b: number | undefined;
59
- o: SerovalObjectFlags | undefined;
60
- }
61
- export declare const enum SerovalObjectRecordSpecialKey {
62
- SymbolIterator = 0
63
- }
64
- export type SerovalObjectRecordKey = string | SerovalObjectRecordSpecialKey;
65
- export interface SerovalPlainRecordNode {
66
- k: string[];
67
- v: SerovalNode[];
68
- s: number;
69
- }
70
- export interface SerovalObjectRecordNode {
71
- k: SerovalObjectRecordKey[];
72
- v: SerovalNode[];
73
- s: number;
74
- }
75
- export interface SerovalMapRecordNode {
76
- k: SerovalNode[];
77
- v: SerovalNode[];
78
- s: number;
79
- }
80
- export interface SerovalNumberNode extends SerovalBaseNode {
81
- t: SerovalNodeType.Number;
82
- s: number;
83
- }
84
- export interface SerovalStringNode extends SerovalBaseNode {
85
- t: SerovalNodeType.String;
86
- s: string;
87
- }
88
- export interface SerovalConstantNode extends SerovalBaseNode {
89
- t: SerovalNodeType.Constant;
90
- s: SerovalConstant;
91
- }
92
- export type SerovalPrimitiveNode = SerovalNumberNode | SerovalStringNode | SerovalConstantNode;
93
- export interface SerovalIndexedValueNode extends SerovalBaseNode {
94
- t: SerovalNodeType.IndexedValue;
95
- i: number;
96
- }
97
- export interface SerovalBigIntNode extends SerovalBaseNode {
98
- t: SerovalNodeType.BigInt;
99
- s: string;
100
- }
101
- export interface SerovalDateNode extends SerovalBaseNode {
102
- t: SerovalNodeType.Date;
103
- i: number;
104
- s: string;
105
- }
106
- export interface SerovalRegExpNode extends SerovalBaseNode {
107
- t: SerovalNodeType.RegExp;
108
- i: number;
109
- c: string;
110
- m: string;
111
- }
112
- export interface SerovalArrayBufferNode extends SerovalBaseNode {
113
- t: SerovalNodeType.ArrayBuffer;
114
- i: number;
115
- s: number[];
116
- }
117
- export interface SerovalTypedArrayNode extends SerovalBaseNode {
118
- t: SerovalNodeType.TypedArray;
119
- i: number;
120
- l: number;
121
- c: string;
122
- f: SerovalNode;
123
- b: number;
124
- }
125
- export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
126
- t: SerovalNodeType.BigIntTypedArray;
127
- i: number;
128
- l: number;
129
- c: string;
130
- f: SerovalNode;
131
- b: number;
132
- }
133
- export type SerovalSemiPrimitiveNode = SerovalBigIntNode | SerovalDateNode | SerovalRegExpNode | SerovalTypedArrayNode | SerovalBigIntTypedArrayNode;
134
- export interface SerovalSetNode extends SerovalBaseNode {
135
- t: SerovalNodeType.Set;
136
- i: number;
137
- l: number;
138
- a: SerovalNode[];
139
- }
140
- export interface SerovalMapNode extends SerovalBaseNode {
141
- t: SerovalNodeType.Map;
142
- i: number;
143
- d: SerovalMapRecordNode;
144
- }
145
- export interface SerovalArrayNode extends SerovalBaseNode {
146
- t: SerovalNodeType.Array;
147
- l: number;
148
- a: (SerovalNode | undefined)[];
149
- i: number;
150
- o: SerovalObjectFlags;
151
- }
152
- export interface SerovalObjectNode extends SerovalBaseNode {
153
- t: SerovalNodeType.Object;
154
- d: SerovalObjectRecordNode;
155
- i: number;
156
- o: SerovalObjectFlags;
157
- }
158
- export interface SerovalNullConstructorNode extends SerovalBaseNode {
159
- t: SerovalNodeType.NullConstructor;
160
- d: SerovalObjectRecordNode;
161
- i: number;
162
- o: SerovalObjectFlags;
163
- }
164
- export interface SerovalPromiseNode extends SerovalBaseNode {
165
- t: SerovalNodeType.Promise;
166
- f: SerovalNode;
167
- i: number;
168
- }
169
- export interface SerovalErrorNode extends SerovalBaseNode {
170
- t: SerovalNodeType.Error;
171
- c: string;
172
- m: string;
173
- d: SerovalObjectRecordNode | undefined;
174
- i: number;
175
- }
176
- export interface SerovalAggregateErrorNode extends SerovalBaseNode {
177
- t: SerovalNodeType.AggregateError;
178
- i: number;
179
- m: string;
180
- d: SerovalObjectRecordNode | undefined;
181
- }
182
- export interface SerovalWKSymbolNode extends SerovalBaseNode {
183
- t: SerovalNodeType.WKSymbol;
184
- i: number;
185
- s: Symbols;
186
- }
187
- export interface SerovalURLNode extends SerovalBaseNode {
188
- t: SerovalNodeType.URL;
189
- i: number;
190
- s: string;
191
- }
192
- export interface SerovalURLSearchParamsNode extends SerovalBaseNode {
193
- t: SerovalNodeType.URLSearchParams;
194
- i: number;
195
- s: string;
196
- }
197
- export interface SerovalReferenceNode extends SerovalBaseNode {
198
- t: SerovalNodeType.Reference;
199
- i: number;
200
- s: string;
201
- }
202
- export interface SerovalDataViewNode extends SerovalBaseNode {
203
- t: SerovalNodeType.DataView;
204
- i: number;
205
- l: number;
206
- f: SerovalNode;
207
- b: number;
208
- }
209
- export interface SerovalBlobNode extends SerovalBaseNode {
210
- t: SerovalNodeType.Blob;
211
- i: number;
212
- c: string;
213
- f: SerovalNode;
214
- }
215
- export interface SerovalFileNode extends SerovalBaseNode {
216
- t: SerovalNodeType.File;
217
- i: number;
218
- c: string;
219
- m: string;
220
- f: SerovalNode;
221
- b: number;
222
- }
223
- export interface SerovalHeadersNode extends SerovalBaseNode {
224
- t: SerovalNodeType.Headers;
225
- i: number;
226
- d: SerovalPlainRecordNode;
227
- }
228
- export interface SerovalFormDataNode extends SerovalBaseNode {
229
- t: SerovalNodeType.FormData;
230
- i: number;
231
- d: SerovalPlainRecordNode;
232
- }
233
- export interface SerovalBoxedNode extends SerovalBaseNode {
234
- t: SerovalNodeType.Boxed;
235
- i: number;
236
- f: SerovalNode;
237
- }
238
- export type SerovalNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode | SerovalArrayBufferNode | SerovalDataViewNode | SerovalBlobNode | SerovalFileNode | SerovalHeadersNode | SerovalFormDataNode | SerovalBoxedNode;
1
+ import type { SerovalNodeType, SerovalObjectFlags, SerovalConstant, Symbols } from './constants';
2
+ export interface SerovalBaseNode {
3
+ t: SerovalNodeType;
4
+ i: number | undefined;
5
+ s: unknown;
6
+ l: number | undefined;
7
+ c: string | undefined;
8
+ m: string | undefined;
9
+ p: SerovalObjectRecordNode | undefined;
10
+ e: SerovalMapRecordNode | SerovalPlainRecordNode | undefined;
11
+ a: (SerovalNode | undefined)[] | undefined;
12
+ f: SerovalNode | undefined;
13
+ b: number | undefined;
14
+ o: SerovalObjectFlags | undefined;
15
+ }
16
+ export declare const enum SerovalObjectRecordSpecialKey {
17
+ SymbolIterator = 0
18
+ }
19
+ export type SerovalObjectRecordKey = string | SerovalObjectRecordSpecialKey;
20
+ export interface SerovalPlainRecordNode {
21
+ k: string[];
22
+ v: SerovalNode[];
23
+ s: number;
24
+ }
25
+ export interface SerovalObjectRecordNode {
26
+ k: SerovalObjectRecordKey[];
27
+ v: SerovalNode[];
28
+ s: number;
29
+ }
30
+ export interface SerovalMapRecordNode {
31
+ k: SerovalNode[];
32
+ v: SerovalNode[];
33
+ s: number;
34
+ }
35
+ export interface SerovalNumberNode extends SerovalBaseNode {
36
+ t: SerovalNodeType.Number;
37
+ s: number;
38
+ }
39
+ export interface SerovalStringNode extends SerovalBaseNode {
40
+ t: SerovalNodeType.String;
41
+ s: string;
42
+ }
43
+ export interface SerovalConstantNode extends SerovalBaseNode {
44
+ t: SerovalNodeType.Constant;
45
+ s: SerovalConstant;
46
+ }
47
+ export type SerovalPrimitiveNode = SerovalNumberNode | SerovalStringNode | SerovalConstantNode;
48
+ export interface SerovalIndexedValueNode extends SerovalBaseNode {
49
+ t: SerovalNodeType.IndexedValue;
50
+ i: number;
51
+ }
52
+ export interface SerovalBigIntNode extends SerovalBaseNode {
53
+ t: SerovalNodeType.BigInt;
54
+ s: string;
55
+ }
56
+ export interface SerovalDateNode extends SerovalBaseNode {
57
+ t: SerovalNodeType.Date;
58
+ i: number;
59
+ s: string;
60
+ }
61
+ export interface SerovalRegExpNode extends SerovalBaseNode {
62
+ t: SerovalNodeType.RegExp;
63
+ i: number;
64
+ c: string;
65
+ m: string;
66
+ }
67
+ export interface SerovalArrayBufferNode extends SerovalBaseNode {
68
+ t: SerovalNodeType.ArrayBuffer;
69
+ i: number;
70
+ s: number[];
71
+ }
72
+ export interface SerovalTypedArrayNode extends SerovalBaseNode {
73
+ t: SerovalNodeType.TypedArray;
74
+ i: number;
75
+ l: number;
76
+ c: string;
77
+ f: SerovalNode;
78
+ b: number;
79
+ }
80
+ export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
81
+ t: SerovalNodeType.BigIntTypedArray;
82
+ i: number;
83
+ l: number;
84
+ c: string;
85
+ f: SerovalNode;
86
+ b: number;
87
+ }
88
+ export type SerovalSemiPrimitiveNode = SerovalBigIntNode | SerovalDateNode | SerovalRegExpNode | SerovalTypedArrayNode | SerovalBigIntTypedArrayNode;
89
+ export interface SerovalSetNode extends SerovalBaseNode {
90
+ t: SerovalNodeType.Set;
91
+ i: number;
92
+ l: number;
93
+ a: SerovalNode[];
94
+ }
95
+ export interface SerovalMapNode extends SerovalBaseNode {
96
+ t: SerovalNodeType.Map;
97
+ i: number;
98
+ e: SerovalMapRecordNode;
99
+ }
100
+ export interface SerovalArrayNode extends SerovalBaseNode {
101
+ t: SerovalNodeType.Array;
102
+ l: number;
103
+ a: (SerovalNode | undefined)[];
104
+ i: number;
105
+ o: SerovalObjectFlags;
106
+ }
107
+ export interface SerovalObjectNode extends SerovalBaseNode {
108
+ t: SerovalNodeType.Object;
109
+ p: SerovalObjectRecordNode;
110
+ i: number;
111
+ o: SerovalObjectFlags;
112
+ }
113
+ export interface SerovalNullConstructorNode extends SerovalBaseNode {
114
+ t: SerovalNodeType.NullConstructor;
115
+ p: SerovalObjectRecordNode;
116
+ i: number;
117
+ o: SerovalObjectFlags;
118
+ }
119
+ export interface SerovalPromiseNode extends SerovalBaseNode {
120
+ t: SerovalNodeType.Promise;
121
+ s: 0 | 1;
122
+ f: SerovalNode;
123
+ i: number;
124
+ }
125
+ export interface SerovalErrorNode extends SerovalBaseNode {
126
+ t: SerovalNodeType.Error;
127
+ c: string;
128
+ m: string;
129
+ p: SerovalObjectRecordNode | undefined;
130
+ i: number;
131
+ }
132
+ export interface SerovalAggregateErrorNode extends SerovalBaseNode {
133
+ t: SerovalNodeType.AggregateError;
134
+ i: number;
135
+ m: string;
136
+ p: SerovalObjectRecordNode | undefined;
137
+ }
138
+ export interface SerovalWKSymbolNode extends SerovalBaseNode {
139
+ t: SerovalNodeType.WKSymbol;
140
+ i: number;
141
+ s: Symbols;
142
+ }
143
+ export interface SerovalURLNode extends SerovalBaseNode {
144
+ t: SerovalNodeType.URL;
145
+ i: number;
146
+ s: string;
147
+ }
148
+ export interface SerovalURLSearchParamsNode extends SerovalBaseNode {
149
+ t: SerovalNodeType.URLSearchParams;
150
+ i: number;
151
+ s: string;
152
+ }
153
+ export interface SerovalReferenceNode extends SerovalBaseNode {
154
+ t: SerovalNodeType.Reference;
155
+ i: number;
156
+ s: string;
157
+ }
158
+ export interface SerovalDataViewNode extends SerovalBaseNode {
159
+ t: SerovalNodeType.DataView;
160
+ i: number;
161
+ l: number;
162
+ f: SerovalNode;
163
+ b: number;
164
+ }
165
+ export interface SerovalBlobNode extends SerovalBaseNode {
166
+ t: SerovalNodeType.Blob;
167
+ i: number;
168
+ c: string;
169
+ f: SerovalNode;
170
+ }
171
+ export interface SerovalFileNode extends SerovalBaseNode {
172
+ t: SerovalNodeType.File;
173
+ i: number;
174
+ c: string;
175
+ m: string;
176
+ f: SerovalNode;
177
+ b: number;
178
+ }
179
+ export interface SerovalHeadersNode extends SerovalBaseNode {
180
+ t: SerovalNodeType.Headers;
181
+ i: number;
182
+ e: SerovalPlainRecordNode;
183
+ }
184
+ export interface SerovalFormDataNode extends SerovalBaseNode {
185
+ t: SerovalNodeType.FormData;
186
+ i: number;
187
+ e: SerovalPlainRecordNode;
188
+ }
189
+ export interface SerovalBoxedNode extends SerovalBaseNode {
190
+ t: SerovalNodeType.Boxed;
191
+ i: number;
192
+ f: SerovalNode;
193
+ }
194
+ export interface SerovalPromiseConstructorNode extends SerovalBaseNode {
195
+ t: SerovalNodeType.PromiseConstructor;
196
+ i: number;
197
+ }
198
+ export interface SerovalPromiseResolveNode extends SerovalBaseNode {
199
+ t: SerovalNodeType.PromiseResolve;
200
+ i: number;
201
+ f: SerovalNode;
202
+ }
203
+ export interface SerovalPromiseRejectNode extends SerovalBaseNode {
204
+ t: SerovalNodeType.PromiseReject;
205
+ i: number;
206
+ f: SerovalNode;
207
+ }
208
+ export interface SerovalReadableStreamConstructorNode extends SerovalBaseNode {
209
+ t: SerovalNodeType.ReadableStreamConstructor;
210
+ i: number;
211
+ }
212
+ export interface SerovalReadableStreamEnqueueNode extends SerovalBaseNode {
213
+ t: SerovalNodeType.ReadableStreamEnqueue;
214
+ i: number;
215
+ f: SerovalNode;
216
+ }
217
+ export interface SerovalReadableStreamCloseNode extends SerovalBaseNode {
218
+ t: SerovalNodeType.ReadableStreamClose;
219
+ i: number;
220
+ }
221
+ export interface SerovalReadableStreamErrorNode extends SerovalBaseNode {
222
+ t: SerovalNodeType.ReadableStreamError;
223
+ i: number;
224
+ f: SerovalNode;
225
+ }
226
+ export type SerovalSyncNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode | SerovalArrayBufferNode | SerovalDataViewNode | SerovalBlobNode | SerovalFileNode | SerovalHeadersNode | SerovalFormDataNode | SerovalBoxedNode;
227
+ export type SerovalAsyncNode = SerovalPromiseNode | SerovalBlobNode | SerovalFileNode | SerovalPromiseConstructorNode | SerovalPromiseResolveNode | SerovalPromiseRejectNode | SerovalReadableStreamConstructorNode | SerovalReadableStreamEnqueueNode | SerovalReadableStreamCloseNode | SerovalReadableStreamErrorNode;
228
+ export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;
@@ -0,0 +1,4 @@
1
+ import type { BaseParserContext } from './context';
2
+ import type { SerovalURLNode, SerovalURLSearchParamsNode } from './types';
3
+ export declare function createURLNode(ctx: BaseParserContext, id: number, current: URL): SerovalURLNode;
4
+ export declare function createURLSearchParamsNode(ctx: BaseParserContext, id: number, current: URLSearchParams): SerovalURLSearchParamsNode;
@@ -1,19 +1,9 @@
1
- import type { Options } from './context';
2
- import type { SerovalNode } from './tree/types';
3
- export type { AsyncServerValue, ServerValue, PrimitiveValue, CommonServerValue, SemiPrimitiveValue, ErrorValue, } from './types';
4
- export { Feature } from './compat';
5
- export declare function serialize<T>(source: T, options?: Partial<Options>): string;
6
- export declare function serializeAsync<T>(source: T, options?: Partial<Options>): Promise<string>;
7
- export declare function deserialize<T>(source: string): T;
8
- export interface SerovalJSON {
9
- t: SerovalNode;
10
- r: number;
11
- f: number;
12
- m: number[];
13
- }
14
- export declare function toJSON<T>(source: T, options?: Partial<Options>): SerovalJSON;
15
- export declare function toJSONAsync<T>(source: T, options?: Partial<Options>): Promise<SerovalJSON>;
16
- export declare function compileJSON(source: SerovalJSON): string;
17
- export declare function fromJSON<T>(source: SerovalJSON): T;
18
- export default serialize;
19
- export { createReference } from './tree/reference';
1
+ import { serialize } from './core/tree';
2
+ export type { AsyncServerValue, ServerValue, PrimitiveValue, CommonServerValue, SemiPrimitiveValue, ErrorValue, } from './types';
3
+ export { Feature } from './core/compat';
4
+ export { createReference } from './core/reference';
5
+ export * from './core/tree';
6
+ export * from './core/cross';
7
+ export { GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from './core/keys';
8
+ export { default as Serializer } from './core/Serializer';
9
+ export default serialize;
@@ -1,20 +1,20 @@
1
- import type { WellKnownSymbols } from './tree/symbols';
2
- export type PrimitiveValue = boolean | string | number | undefined | null | WellKnownSymbols;
3
- export type ErrorValue = Error | AggregateError | EvalError | RangeError | ReferenceError | TypeError | SyntaxError | URIError;
4
- export type TypedArrayValue = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;
5
- export type BigIntTypedArrayValue = BigInt64Array | BigUint64Array;
6
- export type WebAPIValue = URL | URLSearchParams | Blob | File;
7
- export type SemiPrimitiveValue = RegExp | Date | ArrayBuffer | DataView | TypedArrayValue | BigIntTypedArrayValue | bigint | WebAPIValue;
8
- export type CommonServerValue = PrimitiveValue | SemiPrimitiveValue | ErrorValue;
9
- export type ServerValue = CommonServerValue | Array<ServerValue> | readonly ServerValue[] | Iterable<ServerValue> | {
10
- [key: string | number]: ServerValue;
11
- } | {
12
- readonly [key: string | number]: ServerValue;
13
- } | Set<ServerValue> | Map<ServerValue, ServerValue>;
14
- export type AsyncServerValue = CommonServerValue | Array<AsyncServerValue> | readonly AsyncServerValue[] | Iterable<AsyncServerValue> | {
15
- [key: string | number]: AsyncServerValue;
16
- } | {
17
- readonly [key: string | number]: AsyncServerValue;
18
- } | Set<AsyncServerValue> | Map<AsyncServerValue, AsyncServerValue> | Promise<AsyncServerValue>;
19
- export type NonPrimitiveServerValue<T> = T extends PrimitiveValue ? never : T;
20
- export type MaybePromise<T> = T | Promise<T>;
1
+ import type { WellKnownSymbols } from './core/constants';
2
+ export type PrimitiveValue = boolean | string | number | undefined | null | WellKnownSymbols;
3
+ export type ErrorValue = Error | AggregateError | EvalError | RangeError | ReferenceError | TypeError | SyntaxError | URIError;
4
+ export type TypedArrayValue = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;
5
+ export type BigIntTypedArrayValue = BigInt64Array | BigUint64Array;
6
+ export type WebAPIValue = URL | URLSearchParams | Blob | File;
7
+ export type SemiPrimitiveValue = RegExp | Date | ArrayBuffer | DataView | TypedArrayValue | BigIntTypedArrayValue | bigint | WebAPIValue;
8
+ export type CommonServerValue = PrimitiveValue | SemiPrimitiveValue | ErrorValue;
9
+ export type ServerValue = CommonServerValue | Array<ServerValue> | readonly ServerValue[] | Iterable<ServerValue> | {
10
+ [key: string | number]: ServerValue;
11
+ } | {
12
+ readonly [key: string | number]: ServerValue;
13
+ } | Set<ServerValue> | Map<ServerValue, ServerValue>;
14
+ export type AsyncServerValue = CommonServerValue | Array<AsyncServerValue> | readonly AsyncServerValue[] | Iterable<AsyncServerValue> | {
15
+ [key: string | number]: AsyncServerValue;
16
+ } | {
17
+ readonly [key: string | number]: AsyncServerValue;
18
+ } | Set<AsyncServerValue> | Map<AsyncServerValue, AsyncServerValue> | Promise<AsyncServerValue>;
19
+ export type NonPrimitiveServerValue<T> = T extends PrimitiveValue ? never : T;
20
+ export type MaybePromise<T> = T | Promise<T>;