json-as 1.2.6 → 1.3.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.
Files changed (348) hide show
  1. package/.as-test/coverage/naive/coverage.arbitrary.spec.ts.log.json +5628 -0
  2. package/.as-test/coverage/naive/coverage.array.spec.ts.log.json +5187 -0
  3. package/.as-test/coverage/naive/coverage.bool.spec.ts.log.json +5187 -0
  4. package/.as-test/coverage/naive/coverage.box.spec.ts.log.json +5187 -0
  5. package/.as-test/coverage/naive/coverage.custom.spec.ts.log.json +5187 -0
  6. package/.as-test/coverage/naive/coverage.date.spec.ts.log.json +5187 -0
  7. package/.as-test/coverage/naive/coverage.enum.spec.ts.log.json +5187 -0
  8. package/.as-test/coverage/naive/coverage.float.spec.ts.log.json +5187 -0
  9. package/.as-test/coverage/naive/coverage.generics.spec.ts.log.json +5187 -0
  10. package/.as-test/coverage/naive/coverage.hierarchy.spec.ts.log.json +5187 -0
  11. package/.as-test/coverage/naive/coverage.integer.spec.ts.log.json +5187 -0
  12. package/.as-test/coverage/naive/coverage.map.spec.ts.log.json +5187 -0
  13. package/.as-test/coverage/naive/coverage.namespace.spec.ts.log.json +5187 -0
  14. package/.as-test/coverage/naive/coverage.null.spec.ts.log.json +5187 -0
  15. package/.as-test/coverage/naive/coverage.raw.spec.ts.log.json +5187 -0
  16. package/.as-test/coverage/naive/coverage.resolving.spec.ts.log.json +5628 -0
  17. package/.as-test/coverage/naive/coverage.set.spec.ts.log.json +5187 -0
  18. package/.as-test/coverage/naive/coverage.staticarray.spec.ts.log.json +5187 -0
  19. package/.as-test/coverage/naive/coverage.string.spec.ts.log.json +5187 -0
  20. package/.as-test/coverage/naive/coverage.struct.spec.ts.log.json +5187 -0
  21. package/.as-test/coverage/naive/coverage.types.spec.ts.log.json +5187 -0
  22. package/.as-test/coverage/simd/coverage.arbitrary.spec.ts.log.json +5628 -0
  23. package/.as-test/coverage/simd/coverage.array.spec.ts.log.json +5187 -0
  24. package/.as-test/coverage/simd/coverage.bool.spec.ts.log.json +5187 -0
  25. package/.as-test/coverage/simd/coverage.box.spec.ts.log.json +5187 -0
  26. package/.as-test/coverage/simd/coverage.custom.spec.ts.log.json +5187 -0
  27. package/.as-test/coverage/simd/coverage.date.spec.ts.log.json +5187 -0
  28. package/.as-test/coverage/simd/coverage.enum.spec.ts.log.json +5187 -0
  29. package/.as-test/coverage/simd/coverage.float.spec.ts.log.json +5187 -0
  30. package/.as-test/coverage/simd/coverage.generics.spec.ts.log.json +5187 -0
  31. package/.as-test/coverage/simd/coverage.hierarchy.spec.ts.log.json +5187 -0
  32. package/.as-test/coverage/simd/coverage.integer.spec.ts.log.json +5187 -0
  33. package/.as-test/coverage/simd/coverage.map.spec.ts.log.json +5187 -0
  34. package/.as-test/coverage/simd/coverage.namespace.spec.ts.log.json +5187 -0
  35. package/.as-test/coverage/simd/coverage.null.spec.ts.log.json +5187 -0
  36. package/.as-test/coverage/simd/coverage.raw.spec.ts.log.json +5187 -0
  37. package/.as-test/coverage/simd/coverage.resolving.spec.ts.log.json +5628 -0
  38. package/.as-test/coverage/simd/coverage.set.spec.ts.log.json +5187 -0
  39. package/.as-test/coverage/simd/coverage.staticarray.spec.ts.log.json +5187 -0
  40. package/.as-test/coverage/simd/coverage.string.spec.ts.log.json +5187 -0
  41. package/.as-test/coverage/simd/coverage.struct.spec.ts.log.json +5187 -0
  42. package/.as-test/coverage/simd/coverage.types.spec.ts.log.json +5187 -0
  43. package/.as-test/coverage/swar/coverage.arbitrary.spec.ts.log.json +5628 -0
  44. package/.as-test/coverage/swar/coverage.array.spec.ts.log.json +5187 -0
  45. package/.as-test/coverage/swar/coverage.bool.spec.ts.log.json +5187 -0
  46. package/.as-test/coverage/swar/coverage.box.spec.ts.log.json +5187 -0
  47. package/.as-test/coverage/swar/coverage.custom.spec.ts.log.json +5187 -0
  48. package/.as-test/coverage/swar/coverage.date.spec.ts.log.json +5187 -0
  49. package/.as-test/coverage/swar/coverage.enum.spec.ts.log.json +5187 -0
  50. package/.as-test/coverage/swar/coverage.float.spec.ts.log.json +5187 -0
  51. package/.as-test/coverage/swar/coverage.generics.spec.ts.log.json +5187 -0
  52. package/.as-test/coverage/swar/coverage.hierarchy.spec.ts.log.json +5187 -0
  53. package/.as-test/coverage/swar/coverage.integer.spec.ts.log.json +5187 -0
  54. package/.as-test/coverage/swar/coverage.map.spec.ts.log.json +5187 -0
  55. package/.as-test/coverage/swar/coverage.namespace.spec.ts.log.json +5187 -0
  56. package/.as-test/coverage/swar/coverage.null.spec.ts.log.json +5187 -0
  57. package/.as-test/coverage/swar/coverage.raw.spec.ts.log.json +5187 -0
  58. package/.as-test/coverage/swar/coverage.resolving.spec.ts.log.json +5628 -0
  59. package/.as-test/coverage/swar/coverage.set.spec.ts.log.json +5187 -0
  60. package/.as-test/coverage/swar/coverage.staticarray.spec.ts.log.json +5187 -0
  61. package/.as-test/coverage/swar/coverage.string.spec.ts.log.json +5187 -0
  62. package/.as-test/coverage/swar/coverage.struct.spec.ts.log.json +5187 -0
  63. package/.as-test/coverage/swar/coverage.types.spec.ts.log.json +5187 -0
  64. package/.as-test/logs/naive/run.arbitrary.spec.ts.log.json +943 -0
  65. package/.as-test/logs/naive/run.array.spec.ts.log.json +1053 -0
  66. package/.as-test/logs/naive/run.bool.spec.ts.log.json +257 -0
  67. package/.as-test/logs/naive/run.box.spec.ts.log.json +353 -0
  68. package/.as-test/logs/naive/run.custom.spec.ts.log.json +309 -0
  69. package/.as-test/logs/naive/run.date.spec.ts.log.json +397 -0
  70. package/.as-test/logs/naive/run.enum.spec.ts.log.json +343 -0
  71. package/.as-test/logs/naive/run.float.spec.ts.log.json +453 -0
  72. package/.as-test/logs/naive/run.generics.spec.ts.log.json +393 -0
  73. package/.as-test/logs/naive/run.hierarchy.spec.ts.log.json +325 -0
  74. package/.as-test/logs/naive/run.integer.spec.ts.log.json +373 -0
  75. package/.as-test/logs/naive/run.map.spec.ts.log.json +247 -0
  76. package/.as-test/logs/naive/run.namespace.spec.ts.log.json +361 -0
  77. package/.as-test/logs/naive/run.null.spec.ts.log.json +273 -0
  78. package/.as-test/logs/naive/run.raw.spec.ts.log.json +309 -0
  79. package/.as-test/logs/naive/run.resolving.spec.ts.log.json +273 -0
  80. package/.as-test/logs/naive/run.set.spec.ts.log.json +733 -0
  81. package/.as-test/logs/naive/run.staticarray.spec.ts.log.json +931 -0
  82. package/.as-test/logs/naive/run.string.spec.ts.log.json +2289 -0
  83. package/.as-test/logs/naive/run.struct.spec.ts.log.json +523 -0
  84. package/.as-test/logs/naive/run.types.spec.ts.log.json +273 -0
  85. package/.as-test/logs/naive/test.arbitrary.spec.ts.log.json +943 -0
  86. package/.as-test/logs/naive/test.array.spec.ts.log.json +1053 -0
  87. package/.as-test/logs/naive/test.bool.spec.ts.log.json +257 -0
  88. package/.as-test/logs/naive/test.box.spec.ts.log.json +353 -0
  89. package/.as-test/logs/naive/test.custom.spec.ts.log.json +309 -0
  90. package/.as-test/logs/naive/test.date.spec.ts.log.json +397 -0
  91. package/.as-test/logs/naive/test.enum.spec.ts.log.json +343 -0
  92. package/.as-test/logs/naive/test.float.spec.ts.log.json +453 -0
  93. package/.as-test/logs/naive/test.generics.spec.ts.log.json +393 -0
  94. package/.as-test/logs/naive/test.hierarchy.spec.ts.log.json +325 -0
  95. package/.as-test/logs/naive/test.integer.spec.ts.log.json +373 -0
  96. package/.as-test/logs/naive/test.log.json +2289 -0
  97. package/.as-test/logs/naive/test.map.spec.ts.log.json +247 -0
  98. package/.as-test/logs/naive/test.namespace.spec.ts.log.json +361 -0
  99. package/.as-test/logs/naive/test.null.spec.ts.log.json +273 -0
  100. package/.as-test/logs/naive/test.raw.spec.ts.log.json +309 -0
  101. package/.as-test/logs/naive/test.resolving.spec.ts.log.json +273 -0
  102. package/.as-test/logs/naive/test.set.spec.ts.log.json +733 -0
  103. package/.as-test/logs/naive/test.staticarray.spec.ts.log.json +931 -0
  104. package/.as-test/logs/naive/test.string.spec.ts.log.json +2345 -0
  105. package/.as-test/logs/naive/test.struct.spec.ts.log.json +523 -0
  106. package/.as-test/logs/naive/test.types.spec.ts.log.json +273 -0
  107. package/.as-test/logs/simd/run.arbitrary.spec.ts.log.json +943 -0
  108. package/.as-test/logs/simd/run.array.spec.ts.log.json +1053 -0
  109. package/.as-test/logs/simd/run.bool.spec.ts.log.json +257 -0
  110. package/.as-test/logs/simd/run.box.spec.ts.log.json +353 -0
  111. package/.as-test/logs/simd/run.custom.spec.ts.log.json +309 -0
  112. package/.as-test/logs/simd/run.date.spec.ts.log.json +397 -0
  113. package/.as-test/logs/simd/run.enum.spec.ts.log.json +343 -0
  114. package/.as-test/logs/simd/run.float.spec.ts.log.json +453 -0
  115. package/.as-test/logs/simd/run.generics.spec.ts.log.json +393 -0
  116. package/.as-test/logs/simd/run.hierarchy.spec.ts.log.json +325 -0
  117. package/.as-test/logs/simd/run.integer.spec.ts.log.json +373 -0
  118. package/.as-test/logs/simd/run.map.spec.ts.log.json +247 -0
  119. package/.as-test/logs/simd/run.namespace.spec.ts.log.json +361 -0
  120. package/.as-test/logs/simd/run.null.spec.ts.log.json +273 -0
  121. package/.as-test/logs/simd/run.raw.spec.ts.log.json +309 -0
  122. package/.as-test/logs/simd/run.resolving.spec.ts.log.json +273 -0
  123. package/.as-test/logs/simd/run.set.spec.ts.log.json +733 -0
  124. package/.as-test/logs/simd/run.staticarray.spec.ts.log.json +931 -0
  125. package/.as-test/logs/simd/run.string.spec.ts.log.json +2289 -0
  126. package/.as-test/logs/simd/run.struct.spec.ts.log.json +523 -0
  127. package/.as-test/logs/simd/run.types.spec.ts.log.json +273 -0
  128. package/.as-test/logs/simd/test.arbitrary.spec.ts.log.json +943 -0
  129. package/.as-test/logs/simd/test.array.spec.ts.log.json +1053 -0
  130. package/.as-test/logs/simd/test.bool.spec.ts.log.json +257 -0
  131. package/.as-test/logs/simd/test.box.spec.ts.log.json +353 -0
  132. package/.as-test/logs/simd/test.custom.spec.ts.log.json +309 -0
  133. package/.as-test/logs/simd/test.date.spec.ts.log.json +397 -0
  134. package/.as-test/logs/simd/test.enum.spec.ts.log.json +343 -0
  135. package/.as-test/logs/simd/test.float.spec.ts.log.json +453 -0
  136. package/.as-test/logs/simd/test.generics.spec.ts.log.json +393 -0
  137. package/.as-test/logs/simd/test.hierarchy.spec.ts.log.json +325 -0
  138. package/.as-test/logs/simd/test.integer.spec.ts.log.json +373 -0
  139. package/.as-test/logs/simd/test.log.json +11371 -0
  140. package/.as-test/logs/simd/test.map.spec.ts.log.json +247 -0
  141. package/.as-test/logs/simd/test.namespace.spec.ts.log.json +361 -0
  142. package/.as-test/logs/simd/test.null.spec.ts.log.json +273 -0
  143. package/.as-test/logs/simd/test.raw.spec.ts.log.json +309 -0
  144. package/.as-test/logs/simd/test.resolving.spec.ts.log.json +273 -0
  145. package/.as-test/logs/simd/test.set.spec.ts.log.json +733 -0
  146. package/.as-test/logs/simd/test.staticarray.spec.ts.log.json +931 -0
  147. package/.as-test/logs/simd/test.string.spec.ts.log.json +2345 -0
  148. package/.as-test/logs/simd/test.struct.spec.ts.log.json +523 -0
  149. package/.as-test/logs/simd/test.types.spec.ts.log.json +273 -0
  150. package/.as-test/logs/swar/run.arbitrary.spec.ts.log.json +943 -0
  151. package/.as-test/logs/swar/run.array.spec.ts.log.json +1053 -0
  152. package/.as-test/logs/swar/run.bool.spec.ts.log.json +257 -0
  153. package/.as-test/logs/swar/run.box.spec.ts.log.json +353 -0
  154. package/.as-test/logs/swar/run.custom.spec.ts.log.json +309 -0
  155. package/.as-test/logs/swar/run.date.spec.ts.log.json +397 -0
  156. package/.as-test/logs/swar/run.enum.spec.ts.log.json +343 -0
  157. package/.as-test/logs/swar/run.float.spec.ts.log.json +453 -0
  158. package/.as-test/logs/swar/run.generics.spec.ts.log.json +393 -0
  159. package/.as-test/logs/swar/run.hierarchy.spec.ts.log.json +325 -0
  160. package/.as-test/logs/swar/run.integer.spec.ts.log.json +373 -0
  161. package/.as-test/logs/swar/run.map.spec.ts.log.json +247 -0
  162. package/.as-test/logs/swar/run.namespace.spec.ts.log.json +361 -0
  163. package/.as-test/logs/swar/run.null.spec.ts.log.json +273 -0
  164. package/.as-test/logs/swar/run.raw.spec.ts.log.json +309 -0
  165. package/.as-test/logs/swar/run.resolving.spec.ts.log.json +273 -0
  166. package/.as-test/logs/swar/run.set.spec.ts.log.json +733 -0
  167. package/.as-test/logs/swar/run.staticarray.spec.ts.log.json +931 -0
  168. package/.as-test/logs/swar/run.string.spec.ts.log.json +2289 -0
  169. package/.as-test/logs/swar/run.struct.spec.ts.log.json +523 -0
  170. package/.as-test/logs/swar/run.types.spec.ts.log.json +273 -0
  171. package/.as-test/logs/swar/test.arbitrary.spec.ts.log.json +943 -0
  172. package/.as-test/logs/swar/test.array.spec.ts.log.json +1053 -0
  173. package/.as-test/logs/swar/test.bool.spec.ts.log.json +257 -0
  174. package/.as-test/logs/swar/test.box.spec.ts.log.json +353 -0
  175. package/.as-test/logs/swar/test.custom.spec.ts.log.json +309 -0
  176. package/.as-test/logs/swar/test.date.spec.ts.log.json +397 -0
  177. package/.as-test/logs/swar/test.enum.spec.ts.log.json +343 -0
  178. package/.as-test/logs/swar/test.float.spec.ts.log.json +453 -0
  179. package/.as-test/logs/swar/test.generics.spec.ts.log.json +393 -0
  180. package/.as-test/logs/swar/test.hierarchy.spec.ts.log.json +325 -0
  181. package/.as-test/logs/swar/test.integer.spec.ts.log.json +373 -0
  182. package/.as-test/logs/swar/test.log.json +11371 -0
  183. package/.as-test/logs/swar/test.map.spec.ts.log.json +247 -0
  184. package/.as-test/logs/swar/test.namespace.spec.ts.log.json +361 -0
  185. package/.as-test/logs/swar/test.null.spec.ts.log.json +273 -0
  186. package/.as-test/logs/swar/test.raw.spec.ts.log.json +309 -0
  187. package/.as-test/logs/swar/test.resolving.spec.ts.log.json +273 -0
  188. package/.as-test/logs/swar/test.set.spec.ts.log.json +733 -0
  189. package/.as-test/logs/swar/test.staticarray.spec.ts.log.json +931 -0
  190. package/.as-test/logs/swar/test.string.spec.ts.log.json +2345 -0
  191. package/.as-test/logs/swar/test.struct.spec.ts.log.json +523 -0
  192. package/.as-test/logs/swar/test.types.spec.ts.log.json +273 -0
  193. package/.as-test/logs/test.arbitrary.spec.ts.log.json +943 -0
  194. package/.as-test/logs/test.array.spec.ts.log.json +1053 -0
  195. package/.as-test/logs/test.bool.spec.ts.log.json +257 -0
  196. package/.as-test/logs/test.box.spec.ts.log.json +353 -0
  197. package/.as-test/logs/test.custom.spec.ts.log.json +309 -0
  198. package/.as-test/logs/test.date.spec.ts.log.json +397 -0
  199. package/.as-test/logs/test.enum.spec.ts.log.json +343 -0
  200. package/.as-test/logs/test.float.spec.ts.log.json +453 -0
  201. package/.as-test/logs/test.generics.spec.ts.log.json +393 -0
  202. package/.as-test/logs/test.hierarchy.spec.ts.log.json +325 -0
  203. package/.as-test/logs/test.integer.spec.ts.log.json +373 -0
  204. package/.as-test/logs/test.log.json +11371 -0
  205. package/.as-test/logs/test.map.spec.ts.log.json +247 -0
  206. package/.as-test/logs/test.namespace.spec.ts.log.json +361 -0
  207. package/.as-test/logs/test.null.spec.ts.log.json +273 -0
  208. package/.as-test/logs/test.raw.spec.ts.log.json +309 -0
  209. package/.as-test/logs/test.resolving.spec.ts.log.json +273 -0
  210. package/.as-test/logs/test.set.spec.ts.log.json +733 -0
  211. package/.as-test/logs/test.staticarray.spec.ts.log.json +931 -0
  212. package/.as-test/logs/test.string.spec.ts.log.json +2289 -0
  213. package/.as-test/logs/test.struct.spec.ts.log.json +523 -0
  214. package/.as-test/logs/test.types.spec.ts.log.json +273 -0
  215. package/.as-test/runners/default.bindings.js +68 -0
  216. package/.as-test/runners/default.wasi.js +38 -0
  217. package/ARCHITECTURE.md +6 -3
  218. package/CONTRIBUTING.md +9 -3
  219. package/README.md +39 -22
  220. package/as-test.config.json +40 -0
  221. package/assembly/custom/util.ts +24 -70
  222. package/assembly/deserialize/float.ts +181 -0
  223. package/assembly/deserialize/helpers/uint.ts +12 -0
  224. package/assembly/deserialize/index/arbitrary.ts +25 -0
  225. package/assembly/deserialize/index/array.ts +61 -0
  226. package/assembly/deserialize/index/bool.ts +1 -0
  227. package/assembly/deserialize/index/date.ts +1 -0
  228. package/assembly/deserialize/index/float.ts +1 -0
  229. package/assembly/deserialize/index/integer.ts +1 -0
  230. package/assembly/deserialize/index/map.ts +1 -0
  231. package/assembly/deserialize/index/object.ts +1 -0
  232. package/assembly/deserialize/index/raw.ts +1 -0
  233. package/assembly/deserialize/index/set.ts +1 -0
  234. package/assembly/deserialize/index/staticarray.ts +1 -0
  235. package/assembly/deserialize/index/string.ts +15 -0
  236. package/assembly/deserialize/index/struct.ts +1 -0
  237. package/assembly/deserialize/index/typedarray.ts +1 -0
  238. package/assembly/deserialize/index/unsigned.ts +1 -0
  239. package/assembly/deserialize/index.ts +14 -0
  240. package/assembly/deserialize/integer.ts +42 -0
  241. package/assembly/deserialize/simd/array/integer.ts +307 -0
  242. package/assembly/deserialize/simd/string.ts +129 -10
  243. package/assembly/deserialize/simple/arbitrary.ts +5 -12
  244. package/assembly/deserialize/simple/array/arbitrary.ts +12 -36
  245. package/assembly/deserialize/simple/array/array.ts +2 -8
  246. package/assembly/deserialize/simple/array/bool.ts +2 -8
  247. package/assembly/deserialize/simple/array/box.ts +2 -8
  248. package/assembly/deserialize/simple/array/float.ts +2 -8
  249. package/assembly/deserialize/simple/array/integer.ts +2 -8
  250. package/assembly/deserialize/simple/array/map.ts +6 -26
  251. package/assembly/deserialize/simple/array/object.ts +6 -26
  252. package/assembly/deserialize/simple/array/raw.ts +18 -61
  253. package/assembly/deserialize/simple/array/string.ts +5 -10
  254. package/assembly/deserialize/simple/array/struct.ts +6 -26
  255. package/assembly/deserialize/simple/array.ts +2 -5
  256. package/assembly/deserialize/simple/bool.ts +2 -6
  257. package/assembly/deserialize/simple/map.ts +29 -102
  258. package/assembly/deserialize/simple/object.ts +24 -81
  259. package/assembly/deserialize/simple/raw.ts +1 -4
  260. package/assembly/deserialize/simple/set.ts +11 -37
  261. package/assembly/deserialize/simple/staticarray/array.ts +1 -1
  262. package/assembly/deserialize/simple/staticarray/bool.ts +1 -1
  263. package/assembly/deserialize/simple/staticarray/float.ts +1 -1
  264. package/assembly/deserialize/simple/staticarray/integer.ts +1 -1
  265. package/assembly/deserialize/simple/staticarray/string.ts +7 -14
  266. package/assembly/deserialize/simple/staticarray/struct.ts +1 -1
  267. package/assembly/deserialize/simple/staticarray.ts +57 -21
  268. package/assembly/deserialize/simple/string.ts +2 -8
  269. package/assembly/deserialize/simple/struct.ts +25 -121
  270. package/assembly/deserialize/simple/typedarray.ts +94 -0
  271. package/assembly/deserialize/swar/array/arbitrary.ts +8 -0
  272. package/assembly/deserialize/swar/array/array.ts +39 -0
  273. package/assembly/deserialize/swar/array/bool.ts +47 -0
  274. package/assembly/deserialize/swar/array/box.ts +8 -0
  275. package/assembly/deserialize/swar/array/float.ts +39 -0
  276. package/assembly/deserialize/swar/array/integer.ts +461 -0
  277. package/assembly/deserialize/swar/array/map.ts +7 -0
  278. package/assembly/deserialize/swar/array/object.ts +44 -0
  279. package/assembly/deserialize/swar/array/raw.ts +8 -0
  280. package/assembly/deserialize/swar/array/shared.ts +96 -0
  281. package/assembly/deserialize/swar/array/string.ts +39 -0
  282. package/assembly/deserialize/swar/array/struct.ts +44 -0
  283. package/assembly/deserialize/swar/array.ts +49 -0
  284. package/assembly/deserialize/swar/string.ts +650 -14
  285. package/assembly/deserialize/unsigned.ts +75 -0
  286. package/assembly/index.d.ts +1 -3
  287. package/assembly/index.ts +251 -265
  288. package/assembly/serialize/index/arbitrary.ts +70 -0
  289. package/assembly/serialize/index/array.ts +1 -0
  290. package/assembly/serialize/index/bool.ts +1 -0
  291. package/assembly/serialize/index/date.ts +1 -0
  292. package/assembly/serialize/index/float.ts +1 -0
  293. package/assembly/serialize/index/integer.ts +1 -0
  294. package/assembly/serialize/index/map.ts +1 -0
  295. package/assembly/serialize/index/object.ts +46 -0
  296. package/assembly/serialize/index/raw.ts +1 -0
  297. package/assembly/serialize/index/set.ts +1 -0
  298. package/assembly/serialize/index/staticarray.ts +1 -0
  299. package/assembly/serialize/index/string.ts +15 -0
  300. package/assembly/serialize/index/struct.ts +1 -0
  301. package/assembly/serialize/index/typedarray.ts +1 -0
  302. package/assembly/serialize/index.ts +13 -0
  303. package/assembly/serialize/simd/string.ts +1 -2
  304. package/assembly/serialize/simple/raw.ts +1 -5
  305. package/assembly/serialize/simple/typedarray.ts +63 -0
  306. package/assembly/serialize/swar/string.ts +3 -10
  307. package/assembly/test.ts +21 -27
  308. package/assembly/util/concat.ts +1 -5
  309. package/assembly/util/index.ts +1 -0
  310. package/assembly/util/masks.ts +12 -18
  311. package/assembly/util/memory.ts +0 -0
  312. package/assembly/util/snp.ts +1 -4
  313. package/assembly/util/stringScan.ts +24 -0
  314. package/assembly/util/swar.ts +1 -6
  315. package/eslint.config.js +21 -13
  316. package/lib/as-bs.ts +69 -78
  317. package/package.json +8 -5
  318. package/test.ts +99 -0
  319. package/tools/assemblyscript-eslint-local.js +1 -24
  320. package/tools/assemblyscript-eslint.js +38 -14
  321. package/tools/assemblyscript-prettier-plugin.js +33 -0
  322. package/tools/replacer.js +63 -0
  323. package/transform/lib/builder.d.ts.map +1 -1
  324. package/transform/lib/builder.js +5 -13
  325. package/transform/lib/builder.js.map +1 -1
  326. package/transform/lib/index.d.ts.map +1 -1
  327. package/transform/lib/index.js +529 -735
  328. package/transform/lib/index.js.map +1 -1
  329. package/transform/lib/linkers/alias.d.ts.map +1 -1
  330. package/transform/lib/linkers/alias.js.map +1 -1
  331. package/transform/lib/linkers/custom.d.ts.map +1 -1
  332. package/transform/lib/linkers/custom.js +4 -9
  333. package/transform/lib/linkers/custom.js.map +1 -1
  334. package/transform/lib/linkers/imports.d.ts.map +1 -1
  335. package/transform/lib/linkers/imports.js.map +1 -1
  336. package/transform/lib/types.d.ts +4 -0
  337. package/transform/lib/types.d.ts.map +1 -1
  338. package/transform/lib/types.js +70 -21
  339. package/transform/lib/types.js.map +1 -1
  340. package/transform/lib/util.d.ts.map +1 -1
  341. package/transform/lib/util.js +1 -1
  342. package/transform/lib/util.js.map +1 -1
  343. package/transform/lib/visitor.d.ts.map +1 -1
  344. package/transform/lib/visitor.js +1 -2
  345. package/transform/lib/visitor.js.map +1 -1
  346. package/.prettierrc +0 -3
  347. package/assembly/deserialize/simple/float.ts +0 -11
  348. package/assembly/deserialize/simple/integer.ts +0 -9
@@ -0,0 +1,273 @@
1
+ [
2
+ {
3
+ "file": "assembly/__tests__/types.spec.ts",
4
+ "suites": [
5
+ {
6
+ "file": "types.spec.ts",
7
+ "order": 1,
8
+ "time": {
9
+ "start": 24563168.395059,
10
+ "end": 24563168.738608
11
+ },
12
+ "description": "Should serialize with type aliases",
13
+ "depth": 0,
14
+ "suites": [],
15
+ "tests": [
16
+ {
17
+ "order": 0,
18
+ "type": "",
19
+ "verdict": "ok",
20
+ "left": "{\"foo\":\"bar\"}",
21
+ "right": "{\"foo\":\"bar\"}",
22
+ "instr": "toBe",
23
+ "message": "",
24
+ "location": "22:3"
25
+ }
26
+ ],
27
+ "logs": [],
28
+ "kind": "describe",
29
+ "verdict": "ok"
30
+ },
31
+ {
32
+ "file": "types.spec.ts",
33
+ "order": 1,
34
+ "time": {
35
+ "start": 24563168.79409,
36
+ "end": 24563168.974308
37
+ },
38
+ "description": "Should deserialize with type aliases",
39
+ "depth": 0,
40
+ "suites": [],
41
+ "tests": [
42
+ {
43
+ "order": 0,
44
+ "type": "",
45
+ "verdict": "ok",
46
+ "left": "{\"foo\":\"bar\"}",
47
+ "right": "{\"foo\":\"bar\"}",
48
+ "instr": "toBe",
49
+ "message": "",
50
+ "location": "26:3"
51
+ }
52
+ ],
53
+ "logs": [],
54
+ "kind": "describe",
55
+ "verdict": "ok"
56
+ },
57
+ {
58
+ "file": "types.spec.ts",
59
+ "order": 6,
60
+ "time": {
61
+ "start": 24563169.012157,
62
+ "end": 24563169.688812
63
+ },
64
+ "description": "Additional regression coverage - primitives and arrays",
65
+ "depth": 0,
66
+ "suites": [],
67
+ "tests": [
68
+ {
69
+ "order": 0,
70
+ "type": "",
71
+ "verdict": "ok",
72
+ "left": "\"regression\"",
73
+ "right": "\"regression\"",
74
+ "instr": "toBe",
75
+ "message": "",
76
+ "location": "30:3"
77
+ },
78
+ {
79
+ "order": 1,
80
+ "type": "",
81
+ "verdict": "ok",
82
+ "left": "-42",
83
+ "right": "-42",
84
+ "instr": "toBe",
85
+ "message": "",
86
+ "location": "31:3"
87
+ },
88
+ {
89
+ "order": 2,
90
+ "type": "",
91
+ "verdict": "ok",
92
+ "left": "false",
93
+ "right": "false",
94
+ "instr": "toBe",
95
+ "message": "",
96
+ "location": "32:3"
97
+ },
98
+ {
99
+ "order": 3,
100
+ "type": "",
101
+ "verdict": "ok",
102
+ "left": "3.5",
103
+ "right": "3.5",
104
+ "instr": "toBe",
105
+ "message": "",
106
+ "location": "33:3"
107
+ },
108
+ {
109
+ "order": 4,
110
+ "type": "",
111
+ "verdict": "ok",
112
+ "left": "[1,2,3,4]",
113
+ "right": "[1,2,3,4]",
114
+ "instr": "toBe",
115
+ "message": "",
116
+ "location": "34:3"
117
+ },
118
+ {
119
+ "order": 5,
120
+ "type": "",
121
+ "verdict": "ok",
122
+ "left": "[\"a\",\"b\",\"c\"]",
123
+ "right": "[\"a\",\"b\",\"c\"]",
124
+ "instr": "toBe",
125
+ "message": "",
126
+ "location": "35:3"
127
+ }
128
+ ],
129
+ "logs": [],
130
+ "kind": "describe",
131
+ "verdict": "ok"
132
+ },
133
+ {
134
+ "file": "types.spec.ts",
135
+ "order": 2,
136
+ "time": {
137
+ "start": 24563169.72887,
138
+ "end": 24563169.834605
139
+ },
140
+ "description": "Should handle additional alias instances",
141
+ "depth": 0,
142
+ "suites": [],
143
+ "tests": [
144
+ {
145
+ "order": 0,
146
+ "type": "",
147
+ "verdict": "ok",
148
+ "left": "{\"foo\":\"\"}",
149
+ "right": "{\"foo\":\"\"}",
150
+ "instr": "toBe",
151
+ "message": "",
152
+ "location": "39:3"
153
+ },
154
+ {
155
+ "order": 1,
156
+ "type": "",
157
+ "verdict": "ok",
158
+ "left": "{\"foo\":\"symbols-!@#\"}",
159
+ "right": "{\"foo\":\"symbols-!@#\"}",
160
+ "instr": "toBe",
161
+ "message": "",
162
+ "location": "40:3"
163
+ }
164
+ ],
165
+ "logs": [],
166
+ "kind": "describe",
167
+ "verdict": "ok"
168
+ },
169
+ {
170
+ "file": "types.spec.ts",
171
+ "order": 2,
172
+ "time": {
173
+ "start": 24563169.865938,
174
+ "end": 24563169.990183
175
+ },
176
+ "description": "Should deserialize additional alias payloads",
177
+ "depth": 0,
178
+ "suites": [],
179
+ "tests": [
180
+ {
181
+ "order": 0,
182
+ "type": "",
183
+ "verdict": "ok",
184
+ "left": "",
185
+ "right": "",
186
+ "instr": "toBe",
187
+ "message": "",
188
+ "location": "44:3"
189
+ },
190
+ {
191
+ "order": 1,
192
+ "type": "",
193
+ "verdict": "ok",
194
+ "left": "multi word value",
195
+ "right": "multi word value",
196
+ "instr": "toBe",
197
+ "message": "",
198
+ "location": "45:3"
199
+ }
200
+ ],
201
+ "logs": [],
202
+ "kind": "describe",
203
+ "verdict": "ok"
204
+ },
205
+ {
206
+ "file": "types.spec.ts",
207
+ "order": 5,
208
+ "time": {
209
+ "start": 24563170.034756,
210
+ "end": 24563170.386557
211
+ },
212
+ "description": "Extended regression coverage - nested and escaped payloads",
213
+ "depth": 0,
214
+ "suites": [],
215
+ "tests": [
216
+ {
217
+ "order": 0,
218
+ "type": "",
219
+ "verdict": "ok",
220
+ "left": "0",
221
+ "right": "0",
222
+ "instr": "toBe",
223
+ "message": "",
224
+ "location": "49:3"
225
+ },
226
+ {
227
+ "order": 1,
228
+ "type": "",
229
+ "verdict": "ok",
230
+ "left": "true",
231
+ "right": "true",
232
+ "instr": "toBe",
233
+ "message": "",
234
+ "location": "50:3"
235
+ },
236
+ {
237
+ "order": 2,
238
+ "type": "",
239
+ "verdict": "ok",
240
+ "left": "-0.125",
241
+ "right": "-0.125",
242
+ "instr": "toBe",
243
+ "message": "",
244
+ "location": "51:3"
245
+ },
246
+ {
247
+ "order": 3,
248
+ "type": "",
249
+ "verdict": "ok",
250
+ "left": "[[1],[2,3],[]]",
251
+ "right": "[[1],[2,3],[]]",
252
+ "instr": "toBe",
253
+ "message": "",
254
+ "location": "52:3"
255
+ },
256
+ {
257
+ "order": 4,
258
+ "type": "",
259
+ "verdict": "ok",
260
+ "left": "\"line\\nbreak\"",
261
+ "right": "\"line\\nbreak\"",
262
+ "instr": "toBe",
263
+ "message": "",
264
+ "location": "53:3"
265
+ }
266
+ ],
267
+ "logs": [],
268
+ "kind": "describe",
269
+ "verdict": "ok"
270
+ }
271
+ ]
272
+ }
273
+ ]
@@ -0,0 +1,68 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { pathToFileURL } from "url";
4
+
5
+ let patched = false;
6
+
7
+ function readExact(length) {
8
+ const out = Buffer.alloc(length);
9
+ let offset = 0;
10
+ while (offset < length) {
11
+ let read = 0;
12
+ try {
13
+ read = fs.readSync(0, out, offset, length - offset, null);
14
+ } catch (error) {
15
+ if (error && error.code === "EAGAIN") {
16
+ continue;
17
+ }
18
+ throw error;
19
+ }
20
+ if (!read) break;
21
+ offset += read;
22
+ }
23
+ const view = out.subarray(0, offset);
24
+ return view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);
25
+ }
26
+
27
+ function writeRaw(data) {
28
+ const view = Buffer.from(data);
29
+ fs.writeSync(1, view);
30
+ }
31
+
32
+ function withNodeIo(imports = {}) {
33
+ if (!patched) {
34
+ patched = true;
35
+ const originalWrite = process.stdout.write.bind(process.stdout);
36
+ process.stdout.write = (chunk, ...args) => {
37
+ if (chunk instanceof ArrayBuffer) {
38
+ writeRaw(chunk);
39
+ return true;
40
+ }
41
+ return originalWrite(chunk, ...args);
42
+ };
43
+ process.stdin.read = (size) => readExact(Number(size ?? 0));
44
+ }
45
+ return imports;
46
+ }
47
+
48
+ const wasmPathArg = process.argv[2];
49
+ if (!wasmPathArg) {
50
+ process.stderr.write("usage: node ./.as-test/runners/default.bindings.js <file.wasm>\n");
51
+ process.exit(1);
52
+ }
53
+
54
+ const wasmPath = path.resolve(process.cwd(), wasmPathArg);
55
+ const jsPath = wasmPath.replace(/\.wasm$/, ".js");
56
+
57
+ try {
58
+ const binary = fs.readFileSync(wasmPath);
59
+ const module = new WebAssembly.Module(binary);
60
+ const mod = await import(pathToFileURL(jsPath).href);
61
+ if (typeof mod.instantiate !== "function") {
62
+ throw new Error("bindings helper missing instantiate export");
63
+ }
64
+ mod.instantiate(module, withNodeIo({}));
65
+ } catch (error) {
66
+ process.stderr.write("failed to run bindings module: " + String(error) + "\n");
67
+ process.exit(1);
68
+ }
@@ -0,0 +1,38 @@
1
+ import { readFileSync } from "fs";
2
+ import { WASI } from "wasi";
3
+
4
+ const originalEmitWarning = process.emitWarning.bind(process);
5
+ process.emitWarning = (warning, ...args) => {
6
+ const type = typeof args[0] == "string" ? args[0] : "";
7
+ const name = typeof warning?.name == "string" ? warning.name : type;
8
+ const message = typeof warning == "string" ? warning : String(warning?.message ?? "");
9
+ if (name == "ExperimentalWarning" && message.includes("WASI is an experimental feature")) {
10
+ return;
11
+ }
12
+ return originalEmitWarning(warning, ...args);
13
+ };
14
+
15
+ const wasmPath = process.argv[2];
16
+ if (!wasmPath) {
17
+ process.stderr.write("usage: node ./.as-test/runners/default.wasi.js <file.wasm>\n");
18
+ process.exit(1);
19
+ }
20
+
21
+ try {
22
+ const wasi = new WASI({
23
+ version: "preview1",
24
+ args: [wasmPath],
25
+ env: process.env,
26
+ preopens: {},
27
+ });
28
+
29
+ const binary = readFileSync(wasmPath);
30
+ const module = new WebAssembly.Module(binary);
31
+ const instance = new WebAssembly.Instance(module, {
32
+ wasi_snapshot_preview1: wasi.wasiImport,
33
+ });
34
+ wasi.start(instance);
35
+ } catch (error) {
36
+ process.stderr.write("failed to run WASI module: " + String(error) + "\n");
37
+ process.exit(1);
38
+ }
package/ARCHITECTURE.md CHANGED
@@ -58,9 +58,9 @@ The transform (`transform/src/`) is an AssemblyScript compiler plugin that runs
58
58
  - Decorator metadata (@alias, @omit, @omitnull, @omitif)
59
59
  - Inheritance relationships
60
60
  - Type dependencies
61
- 3. **Code Generation**: Generates two methods for each class:
61
+ 3. **Code Generation**: Generates methods for each class:
62
62
  - `__SERIALIZE(ptr: usize): void` - Writes JSON to the buffer
63
- - `__DESERIALIZE<T>(srcStart, srcEnd, out): T` - Parses JSON into object
63
+ - `__DESERIALIZE<T>(srcStart, srcEnd, out): usize` - Parses JSON into `out` and returns the advanced source pointer
64
64
 
65
65
  ### Key Files
66
66
 
@@ -91,9 +91,10 @@ __SERIALIZE(ptr: usize): void {
91
91
  bs.offset += 2;
92
92
  }
93
93
 
94
- __DESERIALIZE<T>(srcStart: usize, srcEnd: usize, out: T): T {
94
+ __DESERIALIZE<T>(srcStart: usize, srcEnd: usize, out: T): usize {
95
95
  // Key matching and value parsing logic
96
96
  // Uses switch statements on key length for efficiency
97
+ return srcStart;
97
98
  }
98
99
  ```
99
100
 
@@ -286,12 +287,14 @@ For `@json` decorated classes, the generated `__DESERIALIZE` method:
286
287
  4. Compares key bytes directly (often as `u32` or `u64` for short keys)
287
288
  5. Deserializes value to appropriate type
288
289
  6. Stores in output object at correct offset
290
+ 7. Returns the updated source pointer after the parsed value
289
291
 
290
292
  ## Environment Variables
291
293
 
292
294
  | Variable | Default | Description |
293
295
  |----------|---------|-------------|
294
296
  | `JSON_MODE` | SWAR | Optimization mode: NAIVE, SWAR, SIMD |
297
+ | `JSON_USE_FAST_PATH` | 0 | When set to `1`, emit the fast struct `__DESERIALIZE` body and helper; otherwise emit only the slow path |
295
298
  | `JSON_DEBUG` | 0 | Debug level 0-3 (prints generated code) |
296
299
  | `JSON_WRITE` | "" | Comma-separated files to output after transform |
297
300
  | `JSON_CACHE` | 0 | Enable string caching (set to 1) |
package/CONTRIBUTING.md CHANGED
@@ -60,7 +60,7 @@ npm test
60
60
  Run a specific test file:
61
61
 
62
62
  ```bash
63
- ./run-tests.sh string # Runs string.spec.ts
63
+ npm test string # Runs string.spec.ts
64
64
  ```
65
65
 
66
66
  ### Running Benchmarks
@@ -79,17 +79,23 @@ npm run bench:js
79
79
 
80
80
  ```
81
81
  json-as/
82
- ├── assembly/ # AssemblyScript runtime implementation
82
+ ├── .as-test/ # As-test configuration and runners
83
+ ├── assembly/ # AssemblyScript runtime implementation
83
84
  │ ├── index.ts # Main entry point (JSON namespace)
84
85
  │ ├── serialize/ # Serialization implementations
86
+ │ │ ├── index/ # Indexer of all methods
85
87
  │ │ ├── simple/ # Naive implementation
86
88
  │ │ ├── swar/ # SWAR-optimized
87
89
  │ │ └── simd/ # SIMD-optimized
88
90
  │ ├── deserialize/ # Deserialization implementations
91
+ │ │ ├── index/ # Indexer of all methods
92
+ │ │ ├── simple/ # Naive implementation
93
+ │ │ ├── swar/ # SWAR-optimized
94
+ │ │ └── simd/ # SIMD-optimized
89
95
  │ ├── util/ # Utility functions
90
96
  │ ├── custom/ # Constants and character codes
91
97
  │ └── __tests__/ # Test files
92
- ├── transform/ # TypeScript compiler transform
98
+ ├── transform/ # TypeScript compiler transform
93
99
  │ └── src/ # Transform source code
94
100
  ├── lib/ # Shared utilities (buffer system)
95
101
  ├── bench/ # Benchmark suite
package/README.md CHANGED
@@ -36,7 +36,7 @@ npm install json-as
36
36
  Add the `--transform` to your `asc` command (e.g. in package.json)
37
37
 
38
38
  ```bash
39
- --transform json-as/transform
39
+ --transform json-as
40
40
  ```
41
41
 
42
42
  Optionally, for additional performance, also add:
@@ -50,7 +50,7 @@ Alternatively, add it to your `asconfig.json`
50
50
  ```typescript
51
51
  {
52
52
  "options": {
53
- "transform": ["json-as/transform"]
53
+ "transform": ["json-as"]
54
54
  }
55
55
  }
56
56
  ```
@@ -400,15 +400,15 @@ This allows custom serialization while maintaining a generic interface for the l
400
400
 
401
401
  The `json-as` library is engineered for **multi-GB/s processing speeds**, leveraging SIMD and SWAR optimizations along with highly efficient transformations. The charts below highlight key performance metrics such as build time, operations-per-second, and throughput.
402
402
 
403
- You can **re-run the benchmarks** at any time by clicking the button below. After the workflow completes, refresh this page to view updated results.
404
-
405
- [![Run Benchmarks](https://img.shields.io/badge/Run_Benchmark-blue)](https://github.com/JairusSW/json-as/actions/workflows/benchmark.yml)
406
-
407
403
  ### Comparison to JavaScript
408
404
 
409
- The following charts compare JSON-AS (both SWAR and SIMD variants) against JavaScript's native `JSON` implementation. Benchmarks were conducted in a GitHub Actions environment. On modern hardware, you may see even higher throughput.
405
+ The following charts compare JSON-AS (both SWAR and SIMD variants) against JavaScript's native `JSON` implementation. The published charts are generated locally and pushed to the `docs` branch.
410
406
 
411
407
  > Note: Benchmarks reflect the **latest version**. Older versions may show different performance.
408
+ >
409
+ > Current local benchmark machine: AMD Ryzen 7 7800X3D (8 cores, 8 threads), 96 MB L3 cache, 32 GB RAM.
410
+ >
411
+ > Benchmark results include normal end-to-end work such as allocating the destination object or array before deserializing into it. Raw parser throughput is higher than the published figures because these numbers intentionally include that allocation/setup cost.
412
412
 
413
413
  <img src="https://raw.githubusercontent.com/JairusSW/json-as/refs/heads/docs/charts/chart01.svg" alt="Performance Chart 1">
414
414
 
@@ -418,9 +418,9 @@ The following charts compare JSON-AS (both SWAR and SIMD variants) against JavaS
418
418
 
419
419
  <img src="https://raw.githubusercontent.com/JairusSW/json-as/refs/heads/docs/charts/chart04.png" alt="Performance Chart 4">
420
420
 
421
- > Note: I have focused on extensively optimizing serialization. I used to have deserialization be highly unsafe and extremely fast, but I've since doubled down on safety for deserialization which has negatively affected performance. I will be optimizing soon.
421
+ <img src="https://raw.githubusercontent.com/JairusSW/json-as/refs/heads/docs/charts/chart05.png" alt="Performance Chart 5">
422
422
 
423
- > Note on Token: I am currently working on optimizing the token deserialization process. This reflects the *future* performance of this library.
423
+ <img src="https://raw.githubusercontent.com/JairusSW/json-as/refs/heads/docs/charts/chart06.png" alt="Performance Chart 6">
424
424
 
425
425
  ### Performance Tuning
426
426
 
@@ -433,46 +433,63 @@ Here's a short list:
433
433
 
434
434
  **JSON_MODE** (default: SWAR) - Selects which mode should be used. Can be `NAIVE,SWAR,SIMD`. Note that `--enable simd` may be required.
435
435
 
436
+ **JSON_USE_FAST_PATH** (default: 0) - When set to `1`, the transform emits the fast `__DESERIALIZE` implementation for generated structs. When unset or `0`, it emits only the slow path.
437
+
436
438
  **JSON_WRITE** (default: "") - Select a series of files to output after transform and optimization passes have completed for easy inspection. Usage: `JSON_WRITE=.path-to-file-a.ts,./path-to-file-b.ts`
437
439
 
438
- ### Running benchmarks locally
440
+ ### Running Benchmarks Locally
439
441
 
440
- Benchmarks are run directly on top of v8 for more tailored control
442
+ Benchmarks are run directly on top of `v8` for tighter control over the engine configuration.
441
443
 
442
- 1. Download JSVU off of npm
444
+ 1. Install the local benchmark prerequisites:
443
445
 
444
446
  ```bash
445
- npm install jsvu -g
447
+ npm install -g jsvu
448
+ jsvu --engines=v8
446
449
  ```
447
450
 
448
- 2. Modify your dotfiles to add `~/.jsvu/bin` to `PATH`
451
+ 2. Add `~/.jsvu/bin` to your `PATH` and make sure `wasm-opt` is installed:
449
452
 
450
453
  ```bash
451
454
  export PATH="${HOME}/.jsvu/bin:${PATH}"
455
+ sudo apt-get install -y binaryen
452
456
  ```
453
457
 
454
- 3. Clone the repository
458
+ 3. Install project dependencies:
455
459
 
456
460
  ```bash
457
- git clone https://github.com/JairusSW/json-as
461
+ npm install
458
462
  ```
459
463
 
460
- 4. Install dependencies
464
+ 4. Run either benchmark suite directly:
461
465
 
462
466
  ```bash
463
- npm i
467
+ ./run-bench.as.sh
468
+ ./run-bench.js.sh
464
469
  ```
465
470
 
466
- 5. Run benchmarks for either AssemblyScript or JavaScript
471
+ 5. Build charts from the latest local logs:
467
472
 
468
473
  ```bash
469
- ./run-bench.as.sh
474
+ ./build-charts.sh
470
475
  ```
471
476
 
472
- or
477
+ 6. Publish benchmark charts to the `docs` branch:
473
478
 
474
479
  ```bash
475
- ./run-bench.js.sh
480
+ ./publish-benchmarks.sh
481
+ ```
482
+
483
+ If you already have fresh logs and only want to rebuild charts and push them:
484
+
485
+ ```bash
486
+ ./publish-benchmarks.sh --no-run
487
+ ```
488
+
489
+ Or run the full local publish flow in one step:
490
+
491
+ ```bash
492
+ npm run bench:publish
476
493
  ```
477
494
 
478
495
  ## Debugging
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "./node_modules/as-test/as-test.config.schema.json",
3
+ "input": ["./assembly/__tests__/*.spec.ts"],
4
+ "outDir": "./.as-test/build",
5
+ "logs": "./.as-test/logs",
6
+ "coverageDir": "./.as-test/coverage",
7
+ "snapshotDir": "./.as-test/snapshots",
8
+ "config": "none",
9
+ "coverage": true,
10
+ "buildOptions": {
11
+ "args": ["--transform ./transform", "--debug"],
12
+ "target": "wasi"
13
+ },
14
+ "runOptions": {
15
+ "runtime": {
16
+ "cmd": "wasmtime <file>"
17
+ },
18
+ "reporter": "default"
19
+ },
20
+ "modes": {
21
+ "naive": {
22
+ "env": {
23
+ "JSON_MODE": "NAIVE"
24
+ }
25
+ },
26
+ "swar": {
27
+ "env": {
28
+ "JSON_MODE": "SWAR"
29
+ }
30
+ },
31
+ "simd": {
32
+ "env": {
33
+ "JSON_MODE": "SIMD"
34
+ },
35
+ "buildOptions": {
36
+ "args": ["--enable simd"]
37
+ }
38
+ }
39
+ }
40
+ }