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.
Files changed (107) hide show
  1. package/CHANGELOG.md +17 -1
  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 +9 -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 +25 -8
  70. package/assembly/tsconfig.json +1 -21
  71. package/assembly/util/atoi-fast.ts +81 -0
  72. package/assembly/util/concat.ts +5 -1
  73. package/assembly/util/dragonbox-cache.ts +443 -2
  74. package/assembly/util/dragonbox.ts +43 -14
  75. package/assembly/util/itoa-fast.ts +230 -0
  76. package/assembly/util/masks.ts +18 -1
  77. package/assembly/util/parsefloat-fast.ts +167 -0
  78. package/assembly/util/simd-int.ts +191 -0
  79. package/assembly/util/snp.ts +4 -1
  80. package/assembly/util/swar-int.ts +248 -0
  81. package/assembly/util/swar.ts +13 -3
  82. package/lib/as-bs.ts +13 -5
  83. package/package.json +12 -4
  84. package/transform/lib/builder.d.ts.map +1 -1
  85. package/transform/lib/builder.js +13 -5
  86. package/transform/lib/builder.js.map +1 -1
  87. package/transform/lib/index.d.ts +1 -0
  88. package/transform/lib/index.d.ts.map +1 -1
  89. package/transform/lib/index.js +1030 -241
  90. package/transform/lib/index.js.map +1 -1
  91. package/transform/lib/linkers/alias.d.ts.map +1 -1
  92. package/transform/lib/linkers/alias.js.map +1 -1
  93. package/transform/lib/linkers/custom.d.ts.map +1 -1
  94. package/transform/lib/linkers/custom.js +3 -2
  95. package/transform/lib/linkers/custom.js.map +1 -1
  96. package/transform/lib/linkers/imports.d.ts.map +1 -1
  97. package/transform/lib/linkers/imports.js.map +1 -1
  98. package/transform/lib/types.d.ts.map +1 -1
  99. package/transform/lib/types.js +54 -16
  100. package/transform/lib/types.js.map +1 -1
  101. package/transform/lib/util.d.ts.map +1 -1
  102. package/transform/lib/util.js +1 -1
  103. package/transform/lib/util.js.map +1 -1
  104. package/transform/lib/visitor.d.ts.map +1 -1
  105. package/transform/lib/visitor.js +2 -1
  106. package/transform/lib/visitor.js.map +1 -1
  107. package/assembly/custom/util.ts +0 -310
@@ -0,0 +1,248 @@
1
+ // 4-digit lane masks
2
+ const LANE_LO_4: u64 = 0x00ff_00ff_00ff_00ff;
3
+ const ZERO_4: u64 = 0x0030_0030_0030_0030;
4
+ const RANGE_ADD_4: u64 = 0x0006_0006_0006_0006;
5
+ const RANGE_MASK_4: u64 = 0xfff0_fff0_fff0_fff0;
6
+
7
+ // 32-bit-pair masks used by the pair-multiply fold
8
+ const U32_LO_PAIR: u64 = 0x0000_ffff_0000_ffff;
9
+
10
+ /**
11
+ * Magic multiplier for the 4-digit final combine.
12
+ *
13
+ * With `pairs = (cd << 32) | ab` where `ab` and `cd` are two-digit fold
14
+ * results each in `[0, 99]`, multiplying by this constant places
15
+ * `ab*100 + cd` in the high 32 bits via the u64 multiplication's cross-term.
16
+ * Taking the high 32 yields the 4-digit value `1000a + 100b + 10c + d`.
17
+ */
18
+ const FINAL_4_MAGIC: u64 = 0x0000_0064_0000_0001;
19
+
20
+ /**
21
+ * Parse four UTF-16 ASCII digits in a `u64` into the 4-digit value, using
22
+ * the baseline scalar combine. Kept for reference and head-to-head benches.
23
+ *
24
+ * Returns `U32.MAX_VALUE` on any non-digit lane.
25
+ *
26
+ * @param block Four UTF-16 code units packed into a `u64`.
27
+ * @returns The parsed 4-digit value, or `U32.MAX_VALUE` on invalid input.
28
+ */
29
+ // @ts-expect-error: @inline is a valid decorator
30
+ @inline export function parse4Digits_Baseline(block: u64): u32 {
31
+ const digits = (block & LANE_LO_4) - ZERO_4;
32
+ if (((digits | (digits + RANGE_ADD_4)) & RANGE_MASK_4) != 0) {
33
+ return U32.MAX_VALUE;
34
+ }
35
+ return <u32>(
36
+ (<u32>(digits & 0xffff) * 1000 +
37
+ <u32>((digits >> 16) & 0xffff) * 100 +
38
+ <u32>((digits >> 32) & 0xffff) * 10 +
39
+ <u32>(digits >> 48))
40
+ );
41
+ }
42
+
43
+ /**
44
+ * Parse four UTF-16 ASCII digits into the 4-digit value.
45
+ *
46
+ * Three Lemire-inspired op reductions vs the baseline:
47
+ *
48
+ * 1. Skip the initial `& LANE_LO_4` mask. For valid UTF-16 ASCII the high
49
+ * byte of each lane is already 0, so the AND is redundant. Validation
50
+ * runs before any multiply and rejects every input where dropping the
51
+ * AND would produce inter-lane carry corruption.
52
+ * 2. Mul-then-mask pair fold: apply `digits * 10 + (digits >> 16)` to the
53
+ * whole `u64` and mask after. Saves one AND vs the lane-isolated form.
54
+ * 3. Magic-multiplier final combine: see {@link FINAL_4_MAGIC}.
55
+ *
56
+ * Returns `U32.MAX_VALUE` on any non-digit lane.
57
+ *
58
+ * @param block Four UTF-16 code units packed into a `u64`.
59
+ * @returns The parsed 4-digit value, or `U32.MAX_VALUE` on invalid input.
60
+ */
61
+ // @ts-expect-error: @inline is a valid decorator
62
+ @inline export function parse4Digits_PairMul(block: u64): u32 {
63
+ const digits = block - ZERO_4;
64
+ if (((digits | (digits + RANGE_ADD_4)) & RANGE_MASK_4) != 0) {
65
+ return U32.MAX_VALUE;
66
+ }
67
+ const pairs = (digits * 10 + (digits >> 16)) & U32_LO_PAIR;
68
+ return <u32>((pairs * FINAL_4_MAGIC) >> 32);
69
+ }
70
+
71
+ /**
72
+ * Same as {@link parse4Digits_PairMul} but with the validation step removed.
73
+ * Used in consume-to-end paths where the caller has already bounded the
74
+ * digit range, so per-stride validation isn't needed.
75
+ *
76
+ * @param block Four UTF-16 code units packed into a `u64`.
77
+ * @returns The parsed 4-digit value.
78
+ */
79
+ // @ts-expect-error: @inline is a valid decorator
80
+ @inline export function parse4Digits_PairMul_Unsafe(block: u64): u32 {
81
+ const digits = block - ZERO_4;
82
+ const pairs = (digits * 10 + (digits >> 16)) & U32_LO_PAIR;
83
+ return <u32>((pairs * FINAL_4_MAGIC) >> 32);
84
+ }
85
+
86
+ /**
87
+ * Parse eight UTF-16 ASCII digits across two `u64` blocks into one 8-digit
88
+ * `u32` value.
89
+ *
90
+ * Caller passes two consecutive `u64` loads (16 source bytes). Validates
91
+ * both halves with one combined check, then folds each half via
92
+ * {@link parse4Digits_PairMul} and combines as `lo * 10_000 + hi`.
93
+ *
94
+ * Returns `U32.MAX_VALUE` on any non-digit lane.
95
+ *
96
+ * @param lo The first `u64`, four UTF-16 code units.
97
+ * @param hi The second `u64`, four UTF-16 code units.
98
+ * @returns The parsed 8-digit value, or `U32.MAX_VALUE` on invalid input.
99
+ */
100
+ // @ts-expect-error: @inline is a valid decorator
101
+ @inline export function parse8Digits_PairMul(lo: u64, hi: u64): u32 {
102
+ const loDigits = lo - ZERO_4;
103
+ const hiDigits = hi - ZERO_4;
104
+ const bad =
105
+ (loDigits |
106
+ (loDigits + RANGE_ADD_4) |
107
+ hiDigits |
108
+ (hiDigits + RANGE_ADD_4)) &
109
+ RANGE_MASK_4;
110
+ if (bad != 0) return U32.MAX_VALUE;
111
+
112
+ const loPairs = (loDigits * 10 + (loDigits >> 16)) & U32_LO_PAIR;
113
+ const hiPairs = (hiDigits * 10 + (hiDigits >> 16)) & U32_LO_PAIR;
114
+ const loVal = <u32>((loPairs * FINAL_4_MAGIC) >> 32);
115
+ const hiVal = <u32>((hiPairs * FINAL_4_MAGIC) >> 32);
116
+ return loVal * 10_000 + hiVal;
117
+ }
118
+
119
+ /**
120
+ * Same as {@link parse8Digits_PairMul} but with the validation step removed.
121
+ * Used in consume-to-end paths.
122
+ *
123
+ * @param lo The first `u64`, four UTF-16 code units.
124
+ * @param hi The second `u64`, four UTF-16 code units.
125
+ * @returns The parsed 8-digit value.
126
+ */
127
+ // @ts-expect-error: @inline is a valid decorator
128
+ @inline export function parse8Digits_PairMul_Unsafe(lo: u64, hi: u64): u32 {
129
+ const loDigits = lo - ZERO_4;
130
+ const hiDigits = hi - ZERO_4;
131
+ const loPairs = (loDigits * 10 + (loDigits >> 16)) & U32_LO_PAIR;
132
+ const hiPairs = (hiDigits * 10 + (hiDigits >> 16)) & U32_LO_PAIR;
133
+ const loVal = <u32>((loPairs * FINAL_4_MAGIC) >> 32);
134
+ const hiVal = <u32>((hiPairs * FINAL_4_MAGIC) >> 32);
135
+ return loVal * 10_000 + hiVal;
136
+ }
137
+
138
+ /**
139
+ * Non-digit lane mask for a `u64` holding four UTF-16 code units. Returns a
140
+ * `u64` with bit 7 of each non-digit lane set, or 0 if all four lanes are
141
+ * valid ASCII `'0'..'9'`. Lets a caller find the digit-run boundary in one
142
+ * SWAR step:
143
+ *
144
+ * ```ts
145
+ * const mask = nonDigitMask4(block);
146
+ * if (mask == 0) { /* all valid *\/ }
147
+ * else { const laneIdx = ctz(mask) >> 3; /* first bad byte *\/ }
148
+ * ```
149
+ *
150
+ * @param block Four UTF-16 code units packed into a `u64`.
151
+ * @returns A mask with non-digit lanes flagged in their high bit, or 0.
152
+ */
153
+ // @ts-expect-error: @inline is a valid decorator
154
+ @inline export function nonDigitMask4(block: u64): u64 {
155
+ const digits = (block & LANE_LO_4) - ZERO_4;
156
+ return (digits | (digits + RANGE_ADD_4)) & RANGE_MASK_4;
157
+ }
158
+
159
+ /**
160
+ * Parse sixteen UTF-16 ASCII digits (32 source bytes) into one 16-digit
161
+ * `u64` value.
162
+ *
163
+ * Mirrors the SIMD 16-digit parser's shape using pure SWAR. Four `u64`
164
+ * loads, one combined validation mask, four independent 4-digit folds (each
165
+ * a chance for the engine to issue them in parallel), then a parallel-pair
166
+ * tree combine.
167
+ *
168
+ * Best for long-integer atoi: one branch covers 16 digits, the four folds
169
+ * have no cross-dependencies, and the final combine forms two independent
170
+ * 8-digit values that merge in one mul-add.
171
+ *
172
+ * Returns `U64.MAX_VALUE` on any non-digit lane.
173
+ *
174
+ * @param srcStart Pointer to the start of 32 source bytes (16 UTF-16 chars).
175
+ * @returns The parsed 16-digit value, or `U64.MAX_VALUE` on invalid input.
176
+ */
177
+ // @ts-expect-error: @inline is a valid decorator
178
+ @inline export function parse16Digits_SWAR(srcStart: usize): u64 {
179
+ const b0 = load<u64>(srcStart);
180
+ const b1 = load<u64>(srcStart, 8);
181
+ const b2 = load<u64>(srcStart, 16);
182
+ const b3 = load<u64>(srcStart, 24);
183
+
184
+ const d0 = b0 - ZERO_4;
185
+ const d1 = b1 - ZERO_4;
186
+ const d2 = b2 - ZERO_4;
187
+ const d3 = b3 - ZERO_4;
188
+
189
+ const bad =
190
+ (d0 |
191
+ (d0 + RANGE_ADD_4) |
192
+ d1 |
193
+ (d1 + RANGE_ADD_4) |
194
+ d2 |
195
+ (d2 + RANGE_ADD_4) |
196
+ d3 |
197
+ (d3 + RANGE_ADD_4)) &
198
+ RANGE_MASK_4;
199
+ if (bad != 0) return U64.MAX_VALUE;
200
+
201
+ const p0 = (d0 * 10 + (d0 >> 16)) & U32_LO_PAIR;
202
+ const p1 = (d1 * 10 + (d1 >> 16)) & U32_LO_PAIR;
203
+ const p2 = (d2 * 10 + (d2 >> 16)) & U32_LO_PAIR;
204
+ const p3 = (d3 * 10 + (d3 >> 16)) & U32_LO_PAIR;
205
+
206
+ const v0 = <u32>((p0 * FINAL_4_MAGIC) >> 32);
207
+ const v1 = <u32>((p1 * FINAL_4_MAGIC) >> 32);
208
+ const v2 = <u32>((p2 * FINAL_4_MAGIC) >> 32);
209
+ const v3 = <u32>((p3 * FINAL_4_MAGIC) >> 32);
210
+
211
+ const pair01 = <u64>v0 * 10_000 + <u64>v1;
212
+ const pair23 = <u64>v2 * 10_000 + <u64>v3;
213
+ return pair01 * 100_000_000 + pair23;
214
+ }
215
+
216
+ /**
217
+ * Same as {@link parse16Digits_SWAR} but with the validation step removed.
218
+ * Used in consume-to-end paths.
219
+ *
220
+ * @param srcStart Pointer to the start of 32 source bytes (16 UTF-16 chars).
221
+ * @returns The parsed 16-digit value.
222
+ */
223
+ // @ts-expect-error: @inline is a valid decorator
224
+ @inline export function parse16Digits_SWAR_Unsafe(srcStart: usize): u64 {
225
+ const b0 = load<u64>(srcStart);
226
+ const b1 = load<u64>(srcStart, 8);
227
+ const b2 = load<u64>(srcStart, 16);
228
+ const b3 = load<u64>(srcStart, 24);
229
+
230
+ const d0 = b0 - ZERO_4;
231
+ const d1 = b1 - ZERO_4;
232
+ const d2 = b2 - ZERO_4;
233
+ const d3 = b3 - ZERO_4;
234
+
235
+ const p0 = (d0 * 10 + (d0 >> 16)) & U32_LO_PAIR;
236
+ const p1 = (d1 * 10 + (d1 >> 16)) & U32_LO_PAIR;
237
+ const p2 = (d2 * 10 + (d2 >> 16)) & U32_LO_PAIR;
238
+ const p3 = (d3 * 10 + (d3 >> 16)) & U32_LO_PAIR;
239
+
240
+ const v0 = <u32>((p0 * FINAL_4_MAGIC) >> 32);
241
+ const v1 = <u32>((p1 * FINAL_4_MAGIC) >> 32);
242
+ const v2 = <u32>((p2 * FINAL_4_MAGIC) >> 32);
243
+ const v3 = <u32>((p3 * FINAL_4_MAGIC) >> 32);
244
+
245
+ const pair01 = <u64>v0 * 10_000 + <u64>v1;
246
+ const pair23 = <u64>v2 * 10_000 + <u64>v3;
247
+ return pair01 * 100_000_000 + pair23;
248
+ }
@@ -23,7 +23,12 @@
23
23
  // (c & 0xF) + 9 * (c >> 6)
24
24
  block = (block & 0x0f000f000f000f) + ((block >> 6) & 0x03000300030003) * 9;
25
25
 
26
- return <u16>(((block >> 0) << 12) | ((block >> 16) << 8) | ((block >> 32) << 4) | (block >> 48));
26
+ return <u16>(
27
+ (((block >> 0) << 12) |
28
+ ((block >> 16) << 8) |
29
+ ((block >> 32) << 4) |
30
+ (block >> 48))
31
+ );
27
32
  }
28
33
 
29
34
  /**
@@ -48,9 +53,14 @@
48
53
  */
49
54
  // @ts-expect-error: @inline is a valid decorator
50
55
  @inline export function u16_to_hex4_swar(code: u16): u64 {
51
- let block = (<u64>((code >> 12) & 0xf)) | ((<u64>((code >> 8) & 0xf)) << 16) | ((<u64>((code >> 4) & 0xf)) << 32) | ((<u64>(code & 0xf)) << 48);
56
+ let block =
57
+ (<u64>((code >> 12) & 0xf)) |
58
+ ((<u64>((code >> 8) & 0xf)) << 16) |
59
+ ((<u64>((code >> 4) & 0xf)) << 32) |
60
+ ((<u64>(code & 0xf)) << 48);
52
61
 
53
- const alphaMask = ((block + 0x0006_0006_0006_0006) >> 4) & 0x0001_0001_0001_0001;
62
+ const alphaMask =
63
+ ((block + 0x0006_0006_0006_0006) >> 4) & 0x0001_0001_0001_0001;
54
64
  block += 0x0030_0030_0030_0030 + alphaMask * 39;
55
65
  return block;
56
66
  }
package/lib/as-bs.ts CHANGED
@@ -180,7 +180,8 @@ export namespace bs {
180
180
  memory.copy(_out, buffer, len);
181
181
  return changetype<T>(_out);
182
182
  } else {
183
- const pauseOffset = buffer + unchecked(pauseOffsets[pauseOffsets.length - 1]);
183
+ const pauseOffset =
184
+ buffer + unchecked(pauseOffsets[pauseOffsets.length - 1]);
184
185
  const len = offset - pauseOffset;
185
186
  // @ts-expect-error: __new is a runtime builtin
186
187
  const _out = __new(len, idof<T>());
@@ -330,15 +331,22 @@ export namespace sc {
330
331
  // @ts-expect-error: JSON_CACHE may not be defined. If so, it will default to false.
331
332
  export const CACHE_ENABLED: bool = isDefined(JSON_CACHE) ? JSON_CACHE : false;
332
333
  // @ts-expect-error: JSON_CACHE_SIZE may not be defined. If so, it will default to 1MB.
333
- export const CACHE_BYTES: usize = isDefined(JSON_CACHE_SIZE) ? <usize>JSON_CACHE_SIZE : (1 << 20);
334
+ export const CACHE_BYTES: usize = isDefined(JSON_CACHE_SIZE)
335
+ ? <usize>JSON_CACHE_SIZE
336
+ : 1 << 20;
334
337
  /** Minimum serialized length to cache - smaller outputs aren't worth caching */
335
338
  export const MIN_CACHE_LEN: usize = 128;
336
339
  /** Size of the circular arena buffer for cached strings */
337
- export const ARENA_SIZE: usize = CACHE_BYTES >= MIN_CACHE_LEN ? CACHE_BYTES : MIN_CACHE_LEN;
340
+ export const ARENA_SIZE: usize =
341
+ CACHE_BYTES >= MIN_CACHE_LEN ? CACHE_BYTES : MIN_CACHE_LEN;
338
342
 
339
343
  /** Number of cache slots (power of 2 for efficient masking). Set to 0 when caching disabled. */
340
- const CACHE_SIZE_BASE: i32 = CACHE_ENABLED ? i32((ARENA_SIZE >> 10) >= 1 ? (ARENA_SIZE >> 10) : 1) : 0;
341
- export const CACHE_SIZE: usize = CACHE_ENABLED ? <usize>(1 << (32 - clz<i32>(CACHE_SIZE_BASE - 1))) : 0;
344
+ const CACHE_SIZE_BASE: i32 = CACHE_ENABLED
345
+ ? i32(ARENA_SIZE >> 10 >= 1 ? ARENA_SIZE >> 10 : 1)
346
+ : 0;
347
+ export const CACHE_SIZE: usize = CACHE_ENABLED
348
+ ? <usize>(1 << (32 - clz<i32>(CACHE_SIZE_BASE - 1)))
349
+ : 0;
342
350
  /** Bitmask for fast modulo operation on cache index */
343
351
  export const CACHE_MASK: usize = CACHE_SIZE > 0 ? CACHE_SIZE - 1 : 0;
344
352
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,15 +12,18 @@
12
12
  "@assemblyscript/wasi-shim": "^0.1.0",
13
13
  "@eslint/js": "^10.0.1",
14
14
  "@types/node": "^25.6.2",
15
- "as-test": "1.0.16",
15
+ "as-test": "^1.1.10",
16
16
  "assemblyscript": "^0.28.17",
17
17
  "assemblyscript-prettier": "^3.0.4",
18
18
  "chartjs-node-canvas": "^5.0.0",
19
19
  "chartjs-plugin-datalabels": "^2.2.0",
20
20
  "eslint": "^10.3.0",
21
+ "husky": "^9.1.7",
22
+ "json-as": "./",
21
23
  "prettier": "3.8.3",
22
24
  "serve": "^14.2.6",
23
25
  "tinybench": "^6.0.1",
26
+ "try-as": "^1.0.1",
24
27
  "typescript": "^6.0.3",
25
28
  "typescript-eslint": "^8.59.2"
26
29
  },
@@ -83,12 +86,13 @@
83
86
  "scripts": {
84
87
  "ci": "act",
85
88
  "test": "ast test --parallel",
89
+ "test:transform": "node transform/__tests__/normalize-base-rel.test.mjs",
86
90
  "test:fast": "npm run build:transform && JSON_USE_FAST_PATH=1 ast test --parallel --mode swar,simd",
87
91
  "fuzz": "ast fuzz",
88
92
  "test:fuzz": "ast test --fuzz --parallel",
89
93
  "test:ci": "ast test --parallel --clean",
90
94
  "test:coverage": "ast test --enable coverage",
91
- "bench": "npm run bench:as && npm run bench:js && npm run charts:build",
95
+ "bench": "bash -c 'bash ./scripts/run-bench.as.sh \"$@\" && { arg=\"${1:-}\"; if [ -z \"$arg\" ] || [ \"${arg#custom/}\" = \"$arg\" ]; then bash ./scripts/run-bench.js.sh \"$@\"; fi; } && bash ./scripts/build-charts.sh' --",
92
96
  "bench:as": "bash ./scripts/run-bench.as.sh",
93
97
  "bench:js": "bash ./scripts/run-bench.js.sh",
94
98
  "charts": "bun run charts:build && bun run charts:serve",
@@ -105,12 +109,16 @@
105
109
  "format": "prettier -w .",
106
110
  "lint": "eslint . --no-warn-ignored",
107
111
  "lint:fix": "eslint . --fix --no-warn-ignored",
112
+ "commitmsg:verify": "bash ./scripts/commit-msg.sh",
113
+ "precommit:verify": "bash ./scripts/pre-commit.sh",
114
+ "prepush:verify": "bash ./scripts/pre-push.sh",
108
115
  "typecheck": "tsc -p ./transform --noEmit",
109
116
  "clean": "rm -rf build/ transform/lib/",
110
117
  "prebuild": "npm run clean",
111
118
  "build": "npm run build:transform",
112
119
  "pretest": "npm run build:transform",
113
- "check": "npm run typecheck && npm run lint"
120
+ "check": "npm run typecheck && npm run lint",
121
+ "prepare": "husky"
114
122
  },
115
123
  "type": "module",
116
124
  "types": "assembly/index.ts"
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { isTypeOmitted, operatorTokenToString, util } from "assemblyscript/dist/assemblyscript.js";
1
+ import { isTypeOmitted, operatorTokenToString, util, } from "assemblyscript/dist/assemblyscript.js";
2
2
  import { NodeKind } from "./types.js";
3
3
  import { Visitor } from "./visitor.js";
4
4
  function assert(isTruish, message = "assertion error") {
@@ -523,7 +523,9 @@ export class ASTBuilder extends Visitor {
523
523
  else {
524
524
  const last = sb[sb.length - 1];
525
525
  const lastCharPos = last.length - 1;
526
- if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 || last.charCodeAt(lastCharPos) == 59)) {
526
+ if (lastCharPos >= 0 &&
527
+ (last.charCodeAt(lastCharPos) == 125 ||
528
+ last.charCodeAt(lastCharPos) == 59)) {
527
529
  sb.push("\n");
528
530
  }
529
531
  else {
@@ -631,7 +633,8 @@ export class ASTBuilder extends Visitor {
631
633
  }
632
634
  for (let i = 0, k = members.length; i < k; ++i) {
633
635
  const member = members[i];
634
- if (member.kind != NodeKind.FieldDeclaration || member.parameterIndex < 0) {
636
+ if (member.kind != NodeKind.FieldDeclaration ||
637
+ member.parameterIndex < 0) {
635
638
  util.indent(sb, indentLevel);
636
639
  this.visitNodeAndTerminate(member);
637
640
  }
@@ -926,7 +929,8 @@ export class ASTBuilder extends Visitor {
926
929
  }
927
930
  }
928
931
  else {
929
- if (!isTypeOmitted(returnType) && !node.isAny(524288 | 4096)) {
932
+ if (!isTypeOmitted(returnType) &&
933
+ !node.isAny(524288 | 4096)) {
930
934
  sb.push("): ");
931
935
  this.visitTypeNode(returnType);
932
936
  }
@@ -1247,7 +1251,11 @@ export class ASTBuilder extends Visitor {
1247
1251
  const numDeclarations = declarations.length;
1248
1252
  const firstDeclaration = declarations[0];
1249
1253
  this.serializeExternalModifiers(firstDeclaration);
1250
- sb.push(firstDeclaration.is(8) ? "const " : firstDeclaration.is(16) ? "let " : "var ");
1254
+ sb.push(firstDeclaration.is(8)
1255
+ ? "const "
1256
+ : firstDeclaration.is(16)
1257
+ ? "let "
1258
+ : "var ");
1251
1259
  this.visitVariableDeclaration(node.declarations[0]);
1252
1260
  for (let i = 1; i < numDeclarations; ++i) {
1253
1261
  sb.push(", ");