json-as 1.3.5 → 1.3.7
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/CHANGELOG.md +17 -1
- package/assembly/deserialize/helpers/uint.ts +4 -1
- package/assembly/deserialize/index/arbitrary.ts +5 -1
- package/assembly/deserialize/index/array.ts +13 -3
- package/assembly/deserialize/index/integer.ts +68 -1
- package/assembly/deserialize/index/string.ts +4 -1
- package/assembly/deserialize/index/typedarray.ts +13 -3
- package/assembly/deserialize/index/unsigned.ts +78 -1
- package/assembly/deserialize/simd/array/integer.ts +327 -50
- package/assembly/deserialize/simd/integer.ts +233 -0
- package/assembly/deserialize/simd/string.ts +45 -11
- package/assembly/deserialize/simple/arbitrary.ts +11 -4
- package/assembly/deserialize/simple/array/arbitrary.ts +24 -5
- package/assembly/deserialize/simple/array/array.ts +8 -2
- package/assembly/deserialize/simple/array/bool.ts +38 -7
- package/assembly/deserialize/simple/array/box.ts +8 -2
- package/assembly/deserialize/simple/array/float.ts +36 -9
- package/assembly/deserialize/simple/array/generic.ts +12 -4
- package/assembly/deserialize/simple/array/integer.ts +8 -2
- package/assembly/deserialize/simple/array/map.ts +26 -6
- package/assembly/deserialize/simple/array/object.ts +26 -6
- package/assembly/deserialize/simple/array/raw.ts +34 -7
- package/assembly/deserialize/simple/array/string.ts +8 -2
- package/assembly/deserialize/simple/array/struct.ts +26 -6
- package/assembly/deserialize/simple/array.ts +13 -3
- package/assembly/deserialize/simple/bool.ts +6 -2
- package/assembly/deserialize/simple/float.ts +6 -1
- package/assembly/deserialize/simple/integer.ts +10 -2
- package/assembly/deserialize/simple/map.ts +95 -22
- package/assembly/deserialize/simple/object.ts +63 -14
- package/assembly/deserialize/simple/raw.ts +4 -1
- package/assembly/deserialize/simple/set.ts +59 -14
- package/assembly/deserialize/simple/staticarray/string.ts +11 -3
- package/assembly/deserialize/simple/staticarray.ts +64 -14
- package/assembly/deserialize/simple/string.ts +5 -92
- package/assembly/deserialize/simple/struct.ts +5 -1
- package/assembly/deserialize/simple/typedarray.ts +16 -3
- package/assembly/deserialize/simple/unsigned.ts +10 -15
- package/assembly/deserialize/swar/array/arbitrary.ts +5 -1
- package/assembly/deserialize/swar/array/array.ts +30 -6
- package/assembly/deserialize/swar/array/bool.ts +22 -4
- package/assembly/deserialize/swar/array/box.ts +5 -1
- package/assembly/deserialize/swar/array/float.ts +15 -3
- package/assembly/deserialize/swar/array/generic.ts +24 -7
- package/assembly/deserialize/swar/array/integer.ts +328 -84
- package/assembly/deserialize/swar/array/map.ts +5 -1
- package/assembly/deserialize/swar/array/object.ts +27 -7
- package/assembly/deserialize/swar/array/raw.ts +5 -1
- package/assembly/deserialize/swar/array/shared.ts +36 -11
- package/assembly/deserialize/swar/array/string.ts +20 -4
- package/assembly/deserialize/swar/array/struct.ts +27 -7
- package/assembly/deserialize/swar/array.ts +19 -4
- package/assembly/deserialize/swar/integer.ts +246 -0
- package/assembly/deserialize/swar/string.ts +98 -194
- package/assembly/index.d.ts +3 -1
- package/assembly/index.ts +312 -81
- package/assembly/serialize/index/float.ts +5 -1
- package/assembly/serialize/index/typedarray.ts +25 -7
- package/assembly/serialize/simd/string.ts +6 -2
- package/assembly/serialize/simple/array.ts +179 -1
- package/assembly/serialize/simple/float.ts +4 -1
- package/assembly/serialize/simple/integer.ts +9 -9
- package/assembly/serialize/simple/map.ts +6 -2
- package/assembly/serialize/simple/raw.ts +5 -1
- package/assembly/serialize/simple/set.ts +6 -1
- package/assembly/serialize/simple/staticarray.ts +6 -1
- package/assembly/serialize/simple/string.ts +0 -1
- package/assembly/serialize/simple/typedarray.ts +10 -3
- package/assembly/serialize/swar/string.ts +25 -8
- package/assembly/tsconfig.json +1 -21
- package/assembly/util/atoi-fast.ts +81 -0
- package/assembly/util/concat.ts +5 -1
- package/assembly/util/dragonbox-cache.ts +443 -2
- package/assembly/util/dragonbox.ts +43 -14
- package/assembly/util/itoa-fast.ts +230 -0
- package/assembly/util/masks.ts +18 -1
- package/assembly/util/parsefloat-fast.ts +167 -0
- package/assembly/util/simd-int.ts +191 -0
- package/assembly/util/snp.ts +4 -1
- package/assembly/util/swar-int.ts +248 -0
- package/assembly/util/swar.ts +13 -3
- package/lib/as-bs.ts +13 -5
- package/package.json +12 -4
- package/transform/lib/builder.d.ts.map +1 -1
- package/transform/lib/builder.js +13 -5
- package/transform/lib/builder.js.map +1 -1
- package/transform/lib/index.d.ts +1 -0
- package/transform/lib/index.d.ts.map +1 -1
- package/transform/lib/index.js +1030 -241
- package/transform/lib/index.js.map +1 -1
- package/transform/lib/linkers/alias.d.ts.map +1 -1
- package/transform/lib/linkers/alias.js.map +1 -1
- package/transform/lib/linkers/custom.d.ts.map +1 -1
- package/transform/lib/linkers/custom.js +3 -2
- package/transform/lib/linkers/custom.js.map +1 -1
- package/transform/lib/linkers/imports.d.ts.map +1 -1
- package/transform/lib/linkers/imports.js.map +1 -1
- package/transform/lib/types.d.ts.map +1 -1
- package/transform/lib/types.js +54 -16
- package/transform/lib/types.js.map +1 -1
- package/transform/lib/util.d.ts.map +1 -1
- package/transform/lib/util.js +1 -1
- package/transform/lib/util.js.map +1 -1
- package/transform/lib/visitor.d.ts.map +1 -1
- package/transform/lib/visitor.js +2 -1
- package/transform/lib/visitor.js.map +1 -1
- package/assembly/custom/util.ts +0 -310
|
@@ -4,7 +4,11 @@ import { deserializeFloatArrayInto } from "./float";
|
|
|
4
4
|
import { ensureArrayField, scanValueEnd } from "./shared";
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
@inline export function deserializeArrayArrayInto<T extends unknown[][]>(
|
|
7
|
+
@inline export function deserializeArrayArrayInto<T extends unknown[][]>(
|
|
8
|
+
srcStart: usize,
|
|
9
|
+
srcEnd: usize,
|
|
10
|
+
out: T,
|
|
11
|
+
): usize {
|
|
8
12
|
let index = 0;
|
|
9
13
|
|
|
10
14
|
do {
|
|
@@ -25,7 +29,11 @@ import { ensureArrayField, scanValueEnd } from "./shared";
|
|
|
25
29
|
value = changetype<valueof<T>>(instantiate<valueof<T>>());
|
|
26
30
|
out.push(value);
|
|
27
31
|
}
|
|
28
|
-
srcStart = deserializeFloatArrayInto<valueof<T>>(
|
|
32
|
+
srcStart = deserializeFloatArrayInto<valueof<T>>(
|
|
33
|
+
srcStart,
|
|
34
|
+
srcEnd,
|
|
35
|
+
value,
|
|
36
|
+
);
|
|
29
37
|
if (!srcStart || srcStart >= srcEnd) break;
|
|
30
38
|
} else if (isArray<valueof<valueof<T>>>()) {
|
|
31
39
|
let value: valueof<T>;
|
|
@@ -35,7 +43,11 @@ import { ensureArrayField, scanValueEnd } from "./shared";
|
|
|
35
43
|
value = changetype<valueof<T>>(instantiate<valueof<T>>());
|
|
36
44
|
out.push(value);
|
|
37
45
|
}
|
|
38
|
-
srcStart = deserializeArrayArrayInto<valueof<T>>(
|
|
46
|
+
srcStart = deserializeArrayArrayInto<valueof<T>>(
|
|
47
|
+
srcStart,
|
|
48
|
+
srcEnd,
|
|
49
|
+
value,
|
|
50
|
+
);
|
|
39
51
|
if (!srcStart || srcStart >= srcEnd) break;
|
|
40
52
|
} else {
|
|
41
53
|
const valueEnd = scanValueEnd(srcStart, srcEnd);
|
|
@@ -45,7 +57,11 @@ import { ensureArrayField, scanValueEnd } from "./shared";
|
|
|
45
57
|
if (index < out.length) {
|
|
46
58
|
valuePtr = changetype<usize>(unchecked(out[index]));
|
|
47
59
|
}
|
|
48
|
-
const value = JSON.__deserialize<valueof<T>>(
|
|
60
|
+
const value = JSON.__deserialize<valueof<T>>(
|
|
61
|
+
srcStart,
|
|
62
|
+
valueEnd,
|
|
63
|
+
valuePtr,
|
|
64
|
+
);
|
|
49
65
|
if (index < out.length) unchecked((out[index] = value));
|
|
50
66
|
else out.push(value);
|
|
51
67
|
srcStart = valueEnd;
|
|
@@ -69,6 +85,14 @@ import { ensureArrayField, scanValueEnd } from "./shared";
|
|
|
69
85
|
}
|
|
70
86
|
|
|
71
87
|
|
|
72
|
-
@inline export function deserializeArrayArrayField<T extends unknown[][]>(
|
|
73
|
-
|
|
88
|
+
@inline export function deserializeArrayArrayField<T extends unknown[][]>(
|
|
89
|
+
srcStart: usize,
|
|
90
|
+
srcEnd: usize,
|
|
91
|
+
fieldPtr: usize,
|
|
92
|
+
): usize {
|
|
93
|
+
return deserializeArrayArrayInto<T>(
|
|
94
|
+
srcStart,
|
|
95
|
+
srcEnd,
|
|
96
|
+
ensureArrayField<T>(fieldPtr),
|
|
97
|
+
);
|
|
74
98
|
}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
BRACKET_LEFT,
|
|
3
|
+
BRACKET_RIGHT,
|
|
4
|
+
COMMA,
|
|
5
|
+
FALSE_WORD_U64,
|
|
6
|
+
TRUE_WORD_U64,
|
|
7
|
+
} from "../../../custom/chars";
|
|
2
8
|
import { ensureArrayElementSlot, ensureArrayField } from "./shared";
|
|
3
9
|
|
|
4
10
|
|
|
5
|
-
@inline export function deserializeBooleanArrayInto<T extends boolean[]>(
|
|
11
|
+
@inline export function deserializeBooleanArrayInto<T extends boolean[]>(
|
|
12
|
+
srcStart: usize,
|
|
13
|
+
srcEnd: usize,
|
|
14
|
+
out: T,
|
|
15
|
+
): usize {
|
|
6
16
|
let index = 0;
|
|
7
17
|
|
|
8
18
|
do {
|
|
@@ -46,6 +56,14 @@ import { ensureArrayElementSlot, ensureArrayField } from "./shared";
|
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
|
|
49
|
-
@inline export function deserializeBooleanArrayField<T extends boolean[]>(
|
|
50
|
-
|
|
59
|
+
@inline export function deserializeBooleanArrayField<T extends boolean[]>(
|
|
60
|
+
srcStart: usize,
|
|
61
|
+
srcEnd: usize,
|
|
62
|
+
fieldPtr: usize,
|
|
63
|
+
): usize {
|
|
64
|
+
return deserializeBooleanArrayInto<T>(
|
|
65
|
+
srcStart,
|
|
66
|
+
srcEnd,
|
|
67
|
+
ensureArrayField<T>(fieldPtr),
|
|
68
|
+
);
|
|
51
69
|
}
|
|
@@ -2,7 +2,11 @@ import { JSON } from "../../..";
|
|
|
2
2
|
import { ensureArrayField } from "./shared";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
@inline export function deserializeBoxArrayField<T extends JSON.Box<any>[]>(
|
|
5
|
+
@inline export function deserializeBoxArrayField<T extends JSON.Box<any>[]>(
|
|
6
|
+
srcStart: usize,
|
|
7
|
+
srcEnd: usize,
|
|
8
|
+
fieldPtr: usize,
|
|
9
|
+
): usize {
|
|
6
10
|
ensureArrayField<T>(fieldPtr);
|
|
7
11
|
throw new Error("Failed to parse JSON!");
|
|
8
12
|
}
|
|
@@ -3,7 +3,11 @@ import { BRACKET_LEFT, BRACKET_RIGHT, COMMA } from "../../../custom/chars";
|
|
|
3
3
|
import { ensureArrayElementSlot, ensureArrayField } from "./shared";
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
@inline export function deserializeFloatArrayInto<T extends number[]>(
|
|
6
|
+
@inline export function deserializeFloatArrayInto<T extends number[]>(
|
|
7
|
+
srcStart: usize,
|
|
8
|
+
srcEnd: usize,
|
|
9
|
+
out: T,
|
|
10
|
+
): usize {
|
|
7
11
|
let index = 0;
|
|
8
12
|
|
|
9
13
|
do {
|
|
@@ -38,6 +42,14 @@ import { ensureArrayElementSlot, ensureArrayField } from "./shared";
|
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
|
|
41
|
-
@inline export function deserializeFloatArrayField<T extends number[]>(
|
|
42
|
-
|
|
45
|
+
@inline export function deserializeFloatArrayField<T extends number[]>(
|
|
46
|
+
srcStart: usize,
|
|
47
|
+
srcEnd: usize,
|
|
48
|
+
fieldPtr: usize,
|
|
49
|
+
): usize {
|
|
50
|
+
return deserializeFloatArrayInto<T>(
|
|
51
|
+
srcStart,
|
|
52
|
+
srcEnd,
|
|
53
|
+
ensureArrayField<T>(fieldPtr),
|
|
54
|
+
);
|
|
43
55
|
}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { JSON } from "../../..";
|
|
2
2
|
import { BRACKET_LEFT, BRACKET_RIGHT, COMMA } from "../../../custom/chars";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import {
|
|
4
|
+
ensureArrayElementSlot,
|
|
5
|
+
ensureArrayField,
|
|
6
|
+
scanValueEnd,
|
|
7
|
+
} from "./shared";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@inline export function deserializeGenericArrayInto<T extends unknown[]>(
|
|
11
|
+
srcStart: usize,
|
|
12
|
+
srcEnd: usize,
|
|
13
|
+
out: T,
|
|
14
|
+
): usize {
|
|
15
|
+
if (srcStart >= srcEnd || load<u16>(srcStart) != BRACKET_LEFT)
|
|
16
|
+
throw new Error("Failed to parse JSON!");
|
|
8
17
|
srcStart += 2;
|
|
9
18
|
if (srcStart >= srcEnd) throw new Error("Failed to parse JSON!");
|
|
10
19
|
if (load<u16>(srcStart) == BRACKET_RIGHT) return srcStart + 2;
|
|
@@ -36,6 +45,14 @@ import { ensureArrayElementSlot, ensureArrayField, scanValueEnd } from "./shared
|
|
|
36
45
|
}
|
|
37
46
|
|
|
38
47
|
|
|
39
|
-
@inline export function deserializeGenericArrayField<T extends unknown[]>(
|
|
40
|
-
|
|
48
|
+
@inline export function deserializeGenericArrayField<T extends unknown[]>(
|
|
49
|
+
srcStart: usize,
|
|
50
|
+
srcEnd: usize,
|
|
51
|
+
fieldPtr: usize,
|
|
52
|
+
): usize {
|
|
53
|
+
return deserializeGenericArrayInto<T>(
|
|
54
|
+
srcStart,
|
|
55
|
+
srcEnd,
|
|
56
|
+
ensureArrayField<T>(fieldPtr),
|
|
57
|
+
);
|
|
41
58
|
}
|