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