seroval 0.4.0-alpha.8 → 0.4.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.
- package/README.md +81 -55
- package/dist/cjs/development/index.cjs +999 -831
- package/dist/cjs/development/index.cjs.map +4 -4
- package/dist/cjs/production/index.cjs +2 -2
- package/dist/esm/development/index.mjs +999 -831
- package/dist/esm/development/index.mjs.map +4 -4
- package/dist/esm/production/index.mjs +2 -2
- package/dist/types/compat.d.ts +10 -25
- package/dist/types/context.d.ts +17 -15
- package/dist/types/index.d.ts +2 -1
- package/dist/types/tree/primitives.d.ts +17 -0
- package/dist/types/tree/serialize.d.ts +1 -1
- package/dist/types/tree/shared.d.ts +4 -8
- package/dist/types/tree/types.d.ts +108 -59
- package/dist/types/types.d.ts +3 -2
- package/package.json +2 -2
- package/src/compat.ts +10 -246
- package/src/context.ts +37 -26
- package/src/index.ts +33 -41
- package/src/quote.ts +1 -1
- package/src/tree/async.ts +362 -163
- package/src/tree/primitives.ts +150 -0
- package/src/tree/serialize.ts +308 -282
- package/src/tree/shared.ts +43 -119
- package/src/tree/sync.ts +295 -146
- package/src/tree/types.ts +143 -65
- package/src/types.ts +4 -1
- package/dist/types/checks.d.ts +0 -5
- package/src/checks.ts +0 -40
package/src/tree/types.ts
CHANGED
|
@@ -19,72 +19,150 @@ export const enum SerovalNodeType {
|
|
|
19
19
|
BigIntTypedArray,
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
export interface SerovalBaseNode {
|
|
23
|
+
// Type of the node
|
|
24
|
+
t: SerovalNodeType;
|
|
25
|
+
// Serialized value
|
|
26
|
+
s: PrimitiveValue | undefined;
|
|
27
|
+
// Reference ID
|
|
28
|
+
i: number | undefined;
|
|
29
|
+
// Size/Byte offset
|
|
30
|
+
l: number | undefined;
|
|
31
|
+
// Constructor name
|
|
32
|
+
c: string | undefined;
|
|
33
|
+
// dictionary
|
|
34
|
+
d: SerovalDictionaryNode | undefined;
|
|
35
|
+
// message
|
|
36
|
+
m: string | undefined;
|
|
37
|
+
// next node
|
|
38
|
+
n: SerovalNode | undefined;
|
|
39
|
+
// array of nodes
|
|
40
|
+
a: SerovalNode[] | undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface SerovalObjectRecordNode {
|
|
44
|
+
k: string[];
|
|
45
|
+
v: SerovalNode[];
|
|
46
|
+
s: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface SerovalMapRecordNode {
|
|
50
|
+
k: SerovalNode[];
|
|
51
|
+
v: SerovalNode[];
|
|
52
|
+
s: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type SerovalDictionaryNode =
|
|
56
|
+
| SerovalObjectRecordNode
|
|
57
|
+
| SerovalMapRecordNode;
|
|
58
|
+
|
|
59
|
+
export interface SerovalPrimitiveNode extends SerovalBaseNode {
|
|
60
|
+
t: SerovalNodeType.Primitive;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface SerovalReferenceNode extends SerovalBaseNode {
|
|
64
|
+
t: SerovalNodeType.Reference;
|
|
65
|
+
i: number;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface SerovalBigIntNode extends SerovalBaseNode {
|
|
69
|
+
t: SerovalNodeType.BigInt;
|
|
70
|
+
s: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface SerovalDateNode extends SerovalBaseNode {
|
|
74
|
+
t: SerovalNodeType.Date;
|
|
75
|
+
i: number;
|
|
76
|
+
s: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface SerovalRegExpNode extends SerovalBaseNode {
|
|
80
|
+
t: SerovalNodeType.RegExp;
|
|
81
|
+
i: number;
|
|
82
|
+
s: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface SerovalTypedArrayNode extends SerovalBaseNode {
|
|
86
|
+
t: SerovalNodeType.TypedArray;
|
|
87
|
+
i: number;
|
|
88
|
+
s: string;
|
|
89
|
+
l: number;
|
|
90
|
+
c: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
|
|
94
|
+
t: SerovalNodeType.BigIntTypedArray;
|
|
95
|
+
i: number;
|
|
96
|
+
s: string;
|
|
97
|
+
l: number;
|
|
98
|
+
c: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
27
101
|
export type SerovalSemiPrimitiveNode =
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
];
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
102
|
+
| SerovalBigIntNode
|
|
103
|
+
| SerovalDateNode
|
|
104
|
+
| SerovalRegExpNode
|
|
105
|
+
| SerovalTypedArrayNode
|
|
106
|
+
| SerovalBigIntTypedArrayNode;
|
|
107
|
+
|
|
108
|
+
export interface SerovalSetNode extends SerovalBaseNode {
|
|
109
|
+
t: SerovalNodeType.Set;
|
|
110
|
+
a: SerovalNode[];
|
|
111
|
+
i: number;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface SerovalMapNode extends SerovalBaseNode {
|
|
115
|
+
t: SerovalNodeType.Map;
|
|
116
|
+
d: SerovalMapRecordNode;
|
|
117
|
+
i: number;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface SerovalArrayNode extends SerovalBaseNode {
|
|
121
|
+
t: SerovalNodeType.Array;
|
|
122
|
+
a: SerovalNode[];
|
|
123
|
+
i: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface SerovalObjectNode extends SerovalBaseNode {
|
|
127
|
+
t: SerovalNodeType.Object;
|
|
128
|
+
d: SerovalObjectRecordNode;
|
|
129
|
+
i: number;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface SerovalNullConstructorNode extends SerovalBaseNode {
|
|
133
|
+
t: SerovalNodeType.NullConstructor;
|
|
134
|
+
d: SerovalObjectRecordNode;
|
|
135
|
+
i: number;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface SerovalPromiseNode extends SerovalBaseNode {
|
|
139
|
+
t: SerovalNodeType.Promise;
|
|
140
|
+
n: SerovalNode;
|
|
141
|
+
i: number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface SerovalErrorNode extends SerovalBaseNode {
|
|
145
|
+
t: SerovalNodeType.Error;
|
|
146
|
+
c: string;
|
|
147
|
+
m: string;
|
|
148
|
+
d: SerovalObjectRecordNode | undefined;
|
|
149
|
+
i: number;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface SerovalAggregateErrorNode extends SerovalBaseNode {
|
|
153
|
+
t: SerovalNodeType.AggregateError;
|
|
154
|
+
m: string;
|
|
155
|
+
d: SerovalObjectRecordNode | undefined;
|
|
156
|
+
n: SerovalNode;
|
|
157
|
+
i: number;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface SerovalIterableNode extends SerovalBaseNode {
|
|
161
|
+
t: SerovalNodeType.Iterable;
|
|
162
|
+
d: SerovalObjectRecordNode | undefined;
|
|
163
|
+
a: SerovalNode[];
|
|
164
|
+
i: number;
|
|
165
|
+
}
|
|
88
166
|
|
|
89
167
|
export type SerovalNode =
|
|
90
168
|
| SerovalPrimitiveNode
|
package/src/types.ts
CHANGED
|
@@ -25,7 +25,9 @@ export type TypedArrayValue =
|
|
|
25
25
|
| Uint32Array
|
|
26
26
|
| Uint8ClampedArray
|
|
27
27
|
| Float32Array
|
|
28
|
-
| Float64Array
|
|
28
|
+
| Float64Array;
|
|
29
|
+
|
|
30
|
+
export type BigIntTypedArrayValue =
|
|
29
31
|
| BigInt64Array
|
|
30
32
|
| BigUint64Array;
|
|
31
33
|
|
|
@@ -33,6 +35,7 @@ export type SemiPrimitiveValue =
|
|
|
33
35
|
| RegExp
|
|
34
36
|
| Date
|
|
35
37
|
| TypedArrayValue
|
|
38
|
+
| BigIntTypedArrayValue
|
|
36
39
|
| bigint;
|
|
37
40
|
|
|
38
41
|
export type CommonServerValue =
|
package/dist/types/checks.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { AsyncServerValue, PrimitiveValue } from './types';
|
|
2
|
-
export declare function isPrimitive(current: unknown): current is PrimitiveValue;
|
|
3
|
-
export declare function isPromise<T>(obj: unknown): obj is PromiseLike<T>;
|
|
4
|
-
export declare function constructorCheck<T extends NonNullable<AsyncServerValue>>(value: unknown, constructor: unknown): value is T;
|
|
5
|
-
export declare function isIterable<T>(obj: unknown): obj is Iterable<T>;
|
package/src/checks.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { AsyncServerValue, PrimitiveValue } from './types';
|
|
2
|
-
|
|
3
|
-
export function isPrimitive(current: unknown): current is PrimitiveValue {
|
|
4
|
-
if (!current || current === true) {
|
|
5
|
-
return true;
|
|
6
|
-
}
|
|
7
|
-
const type = typeof current;
|
|
8
|
-
return type === 'number'
|
|
9
|
-
|| type === 'string';
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function isPromise<T>(obj: unknown): obj is PromiseLike<T> {
|
|
13
|
-
return !!obj
|
|
14
|
-
&& (typeof obj === 'object' || typeof obj === 'function')
|
|
15
|
-
&& 'then' in obj
|
|
16
|
-
&& typeof obj.then === 'function';
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function constructorCheck<T extends NonNullable<AsyncServerValue>>(
|
|
20
|
-
value: unknown,
|
|
21
|
-
constructor: unknown,
|
|
22
|
-
): value is T {
|
|
23
|
-
return (value as { constructor: unknown }).constructor === constructor;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function isIterableBuiltin(obj: unknown) {
|
|
27
|
-
return (
|
|
28
|
-
Array.isArray(obj)
|
|
29
|
-
|| constructorCheck<Set<any>>(obj, Set)
|
|
30
|
-
|| constructorCheck<Map<any, any>>(obj, Map)
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function isIterable<T>(obj: unknown): obj is Iterable<T> {
|
|
35
|
-
return !!obj
|
|
36
|
-
&& typeof obj === 'object'
|
|
37
|
-
&& !isIterableBuiltin(obj)
|
|
38
|
-
&& Symbol.iterator in obj
|
|
39
|
-
&& typeof obj[Symbol.iterator] === 'function';
|
|
40
|
-
}
|