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
@@ -1,23 +1,7 @@
1
- import {
2
- BACK_SLASH,
3
- COMMA,
4
- CHAR_F,
5
- BRACE_LEFT,
6
- BRACKET_LEFT,
7
- CHAR_N,
8
- QUOTE,
9
- BRACE_RIGHT,
10
- BRACKET_RIGHT,
11
- CHAR_T,
12
- COLON,
13
- } from "../../custom/chars";
14
- import { isSpace } from "../../util";
1
+ import { BACK_SLASH, COMMA, CHAR_F, BRACE_LEFT, BRACKET_LEFT, CHAR_N, QUOTE, BRACE_RIGHT, BRACKET_RIGHT, CHAR_T, COLON } from "../../custom/chars";
2
+ import { isSpace, isUnescapedQuote, scanStringEnd } from "../../util";
15
3
 
16
- export function deserializeStruct<T>(
17
- srcStart: usize,
18
- srcEnd: usize,
19
- dst: usize,
20
- ): T {
4
+ export function deserializeStruct<T>(srcStart: usize, srcEnd: usize, dst: usize): T {
21
5
  const out = changetype<nonnull<T>>(dst || __new(offsetof<T>(), idof<T>()));
22
6
 
23
7
  // @ts-ignore: supplied by transform
@@ -32,35 +16,22 @@ export function deserializeStruct<T>(
32
16
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
33
17
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2; // would like to optimize this later
34
18
 
35
- if (srcStart - srcEnd == 0)
36
- throw new Error("Input string had zero length or was all whitespace");
37
- if (load<u16>(srcStart) != BRACE_LEFT)
38
- throw new Error(
39
- "Expected '{' at start of object at position " +
40
- (srcEnd - srcStart).toString(),
41
- );
42
- if (load<u16>(srcEnd - 2) != BRACE_RIGHT)
43
- throw new Error(
44
- "Expected '}' at end of object at position " +
45
- (srcEnd - srcStart).toString(),
46
- );
19
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
20
+ if (load<u16>(srcStart) != BRACE_LEFT) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
21
+ if (load<u16>(srcEnd - 2) != BRACE_RIGHT) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
47
22
 
48
23
  srcStart += 2;
49
24
  while (srcStart < srcEnd) {
50
25
  let code = load<u16>(srcStart); // while (isSpace(code)) code = load<u16>(srcStart += 2);
51
26
  if (keyStart == 0) {
52
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
27
+ if (code == QUOTE && isUnescapedQuote(srcStart)) {
53
28
  if (isKey) {
54
29
  keyStart = lastIndex;
55
30
  keyEnd = srcStart;
56
31
  // console.log("Key: " + ptrToStr(lastIndex, srcStart));
57
32
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart + 2)));
58
33
  while (isSpace((code = load<u16>((srcStart += 2))))) {}
59
- if (code !== COLON)
60
- throw new Error(
61
- "Expected ':' after key at position " +
62
- (srcEnd - srcStart).toString(),
63
- );
34
+ if (code !== COLON) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
64
35
  isKey = false;
65
36
  } else {
66
37
  // console.log("Got key start");
@@ -73,27 +44,13 @@ export function deserializeStruct<T>(
73
44
  } else {
74
45
  if (code == QUOTE) {
75
46
  lastIndex = srcStart;
47
+ srcStart = scanStringEnd(srcStart, srcEnd);
48
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
49
+ // @ts-ignore: exists
50
+ out.__DESERIALIZE(keyStart, keyEnd, lastIndex, srcStart + 2, changetype<usize>(out));
76
51
  srcStart += 2;
77
- while (srcStart < srcEnd) {
78
- const code = load<u16>(srcStart);
79
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
80
- // console.log("Value (string): " + ptrToStr(lastIndex, srcStart + 2));
81
- // @ts-ignore: exists
82
- out.__DESERIALIZE(
83
- keyStart,
84
- keyEnd,
85
- lastIndex,
86
- srcStart + 2,
87
- changetype<usize>(out),
88
- );
89
- // while (isSpace(load<u16>(srcStart))) srcStart += 2;
90
- srcStart += 4;
91
- // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
92
- keyStart = 0;
93
- break;
94
- }
95
- srcStart += 2;
96
- }
52
+ keyStart = 0;
53
+ continue;
97
54
  } else if (code - 48 <= 9 || code == 45) {
98
55
  lastIndex = srcStart;
99
56
  srcStart += 2;
@@ -102,13 +59,7 @@ export function deserializeStruct<T>(
102
59
  if (code == COMMA || code == BRACE_RIGHT || isSpace(code)) {
103
60
  // console.log("Value (number): " + ptrToStr(lastIndex, srcStart));
104
61
  // @ts-ignore: exists
105
- out.__DESERIALIZE(
106
- keyStart,
107
- keyEnd,
108
- lastIndex,
109
- srcStart,
110
- changetype<usize>(out),
111
- );
62
+ out.__DESERIALIZE(keyStart, keyEnd, lastIndex, srcStart, changetype<usize>(out));
112
63
  // while (isSpace(load<u16>((srcStart += 2)))) {
113
64
  // /* empty */
114
65
  // }
@@ -126,25 +77,13 @@ export function deserializeStruct<T>(
126
77
  while (srcStart < srcEnd) {
127
78
  const code = load<u16>(srcStart);
128
79
  if (code == QUOTE) {
129
- srcStart += 2;
130
- while (
131
- !(
132
- load<u16>(srcStart) == QUOTE &&
133
- load<u16>(srcStart - 2) != BACK_SLASH
134
- )
135
- )
136
- srcStart += 2;
80
+ srcStart = scanStringEnd(srcStart, srcEnd);
81
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
137
82
  } else if (code == BRACE_RIGHT) {
138
83
  if (--depth == 0) {
139
84
  // console.log("Value (object): " + ptrToStr(lastIndex, srcStart + 2));
140
85
  // @ts-ignore: exists
141
- out.__DESERIALIZE(
142
- keyStart,
143
- keyEnd,
144
- lastIndex,
145
- (srcStart += 2),
146
- changetype<usize>(out),
147
- );
86
+ out.__DESERIALIZE(keyStart, keyEnd, lastIndex, (srcStart += 2), changetype<usize>(out));
148
87
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
149
88
  keyStart = 0;
150
89
  // while (isSpace(load<u16>(srcStart))) {
@@ -162,25 +101,13 @@ export function deserializeStruct<T>(
162
101
  while (srcStart < srcEnd) {
163
102
  const code = load<u16>(srcStart);
164
103
  if (code == QUOTE) {
165
- srcStart += 2;
166
- while (
167
- !(
168
- load<u16>(srcStart) == QUOTE &&
169
- load<u16>(srcStart - 2) != BACK_SLASH
170
- )
171
- )
172
- srcStart += 2;
104
+ srcStart = scanStringEnd(srcStart, srcEnd);
105
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
173
106
  } else if (code == BRACKET_RIGHT) {
174
107
  if (--depth == 0) {
175
108
  // console.log("Value (array): " + ptrToStr(lastIndex, srcStart + 2));
176
109
  // @ts-ignore: exists
177
- out.__DESERIALIZE(
178
- keyStart,
179
- keyEnd,
180
- lastIndex,
181
- (srcStart += 2),
182
- changetype<usize>(out),
183
- );
110
+ out.__DESERIALIZE(keyStart, keyEnd, lastIndex, (srcStart += 2), changetype<usize>(out));
184
111
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
185
112
  keyStart = 0;
186
113
  // while (isSpace(load<u16>((srcStart += 2)))) {
@@ -195,13 +122,7 @@ export function deserializeStruct<T>(
195
122
  if (load<u64>(srcStart) == 28429475166421108) {
196
123
  // console.log("Value (bool): " + ptrToStr(srcStart, srcStart + 8));
197
124
  // @ts-ignore: exists
198
- out.__DESERIALIZE(
199
- keyStart,
200
- keyEnd,
201
- srcStart,
202
- (srcStart += 8),
203
- changetype<usize>(out),
204
- );
125
+ out.__DESERIALIZE(keyStart, keyEnd, srcStart, (srcStart += 8), changetype<usize>(out));
205
126
  // while (isSpace(load<u16>((srcStart += 2)))) {
206
127
  // /* empty */
207
128
  // }
@@ -213,13 +134,7 @@ export function deserializeStruct<T>(
213
134
  if (load<u64>(srcStart, 2) == 28429466576093281) {
214
135
  // console.log("Value (bool): " + ptrToStr(srcStart, srcStart + 10));
215
136
  // @ts-ignore: exists
216
- out.__DESERIALIZE(
217
- keyStart,
218
- keyEnd,
219
- srcStart,
220
- (srcStart += 10),
221
- changetype<usize>(out),
222
- );
137
+ out.__DESERIALIZE(keyStart, keyEnd, srcStart, (srcStart += 10), changetype<usize>(out));
223
138
  // while (isSpace(load<u16>((srcStart += 2)))) {
224
139
  // /* empty */
225
140
  // }
@@ -231,13 +146,7 @@ export function deserializeStruct<T>(
231
146
  if (load<u64>(srcStart) == 30399761348886638) {
232
147
  // console.log("Value (null): " + ptrToStr(srcStart, srcStart + 8));
233
148
  // @ts-ignore: exists
234
- out.__DESERIALIZE(
235
- keyStart,
236
- keyEnd,
237
- srcStart,
238
- (srcStart += 8),
239
- changetype<usize>(out),
240
- );
149
+ out.__DESERIALIZE(keyStart, keyEnd, srcStart, (srcStart += 8), changetype<usize>(out));
241
150
  // while (isSpace(load<u16>((srcStart += 2)))) {
242
151
  /* empty */
243
152
  // }
@@ -248,12 +157,7 @@ export function deserializeStruct<T>(
248
157
  } else if (isSpace(code)) {
249
158
  srcStart += 2;
250
159
  } else {
251
- throw new Error(
252
- "Unexpected character in JSON object '" +
253
- String.fromCharCode(code) +
254
- "' at position " +
255
- (srcEnd - srcStart).toString(),
256
- );
160
+ throw new Error("Unexpected character in JSON object '" + String.fromCharCode(code) + "' at position " + (srcEnd - srcStart).toString());
257
161
  }
258
162
  }
259
163
  }
@@ -0,0 +1,94 @@
1
+ import { COMMA, BRACKET_RIGHT } from "../../custom/chars";
2
+ import { deserializeFloat } from "../index/float";
3
+ import { atoi, isSpace } from "../../util";
4
+
5
+
6
+ @inline function countTypedArrayElements(srcStart: usize, srcEnd: usize): i32 {
7
+ let count = 0;
8
+
9
+ while (srcStart < srcEnd) {
10
+ const code = load<u16>(srcStart);
11
+ if (code - 48 <= 9 || code == 45) {
12
+ count++;
13
+ srcStart += 2;
14
+
15
+ while (srcStart < srcEnd) {
16
+ const code = load<u16>(srcStart);
17
+ if (code == COMMA || code == BRACKET_RIGHT || isSpace(code)) break;
18
+ srcStart += 2;
19
+ }
20
+ }
21
+
22
+ srcStart += 2;
23
+ }
24
+
25
+ return count;
26
+ }
27
+
28
+ export function deserializeTypedArray<T extends ArrayLike<number>>(srcStart: usize, srcEnd: usize, dst: usize = 0): T {
29
+ const count = countTypedArrayElements(srcStart, srcEnd);
30
+ let out = changetype<T>(dst || changetype<usize>(instantiate<T>(count)));
31
+
32
+ if (out.length != count) {
33
+ out = changetype<T>(instantiate<T>(count));
34
+ }
35
+
36
+ let index = 0;
37
+ while (srcStart < srcEnd) {
38
+ const code = load<u16>(srcStart);
39
+ if (code - 48 <= 9 || code == 45) {
40
+ const lastIndex = srcStart;
41
+ srcStart += 2;
42
+
43
+ while (srcStart < srcEnd) {
44
+ const code = load<u16>(srcStart);
45
+ if (code == COMMA || code == BRACKET_RIGHT || isSpace(code)) {
46
+ if (isFloat<valueof<T>>()) {
47
+ unchecked((out[index++] = deserializeFloat<valueof<T>>(lastIndex, srcStart)));
48
+ } else {
49
+ unchecked((out[index++] = atoi<valueof<T>>(lastIndex, srcStart)));
50
+ }
51
+ break;
52
+ }
53
+ srcStart += 2;
54
+ }
55
+ }
56
+
57
+ srcStart += 2;
58
+ }
59
+
60
+ return out;
61
+ }
62
+
63
+ export function deserializeArrayBuffer(srcStart: usize, srcEnd: usize, dst: usize = 0): ArrayBuffer {
64
+ const count = countTypedArrayElements(srcStart, srcEnd);
65
+ let out = dst ? changetype<ArrayBuffer>(dst) : new ArrayBuffer(count);
66
+
67
+ if (out.byteLength != count) {
68
+ out = new ArrayBuffer(count);
69
+ }
70
+
71
+ const outStart = changetype<usize>(out);
72
+ let index: usize = 0;
73
+
74
+ while (srcStart < srcEnd) {
75
+ const code = load<u16>(srcStart);
76
+ if (code - 48 <= 9 || code == 45) {
77
+ const lastIndex = srcStart;
78
+ srcStart += 2;
79
+
80
+ while (srcStart < srcEnd) {
81
+ const code = load<u16>(srcStart);
82
+ if (code == COMMA || code == BRACKET_RIGHT || isSpace(code)) {
83
+ store<u8>(outStart + index++, atoi<u8>(lastIndex, srcStart));
84
+ break;
85
+ }
86
+ srcStart += 2;
87
+ }
88
+ }
89
+
90
+ srcStart += 2;
91
+ }
92
+
93
+ return out;
94
+ }
@@ -0,0 +1,8 @@
1
+ import { JSON } from "../../..";
2
+ import { ensureArrayField } from "./shared";
3
+
4
+
5
+ @inline export function deserializeArbitraryArrayField(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
6
+ ensureArrayField<JSON.Value[]>(fieldPtr);
7
+ throw new Error("Failed to parse JSON!");
8
+ }
@@ -0,0 +1,39 @@
1
+ import { BRACKET_LEFT, BRACKET_RIGHT, COMMA } from "../../../custom/chars";
2
+ import { deserializeArrayField } from "../array";
3
+ import { ensureArrayElementSlot, ensureArrayField } from "./shared";
4
+
5
+
6
+ @inline export function deserializeArrayArrayField<T extends unknown[][]>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
7
+ const out = ensureArrayField<T>(fieldPtr);
8
+ let index = 0;
9
+
10
+ do {
11
+ if (srcStart >= srcEnd || load<u16>(srcStart) != BRACKET_LEFT) break;
12
+ srcStart += 2;
13
+ if (srcStart >= srcEnd) break;
14
+ if (load<u16>(srcStart) == BRACKET_RIGHT) {
15
+ out.length = 0;
16
+ return srcStart + 2;
17
+ }
18
+
19
+ while (srcStart < srcEnd) {
20
+ const slot = ensureArrayElementSlot<T>(out, index);
21
+ srcStart = deserializeArrayField<valueof<T>>(srcStart, srcEnd, slot);
22
+ if (!srcStart || srcStart >= srcEnd) break;
23
+
24
+ const code = load<u16>(srcStart);
25
+ if (code == COMMA) {
26
+ srcStart += 2;
27
+ index++;
28
+ continue;
29
+ }
30
+ if (code == BRACKET_RIGHT) {
31
+ out.length = index + 1;
32
+ return srcStart + 2;
33
+ }
34
+ break;
35
+ }
36
+ } while (false);
37
+
38
+ throw new Error("Failed to parse JSON!");
39
+ }
@@ -0,0 +1,47 @@
1
+ import { BRACKET_LEFT, BRACKET_RIGHT, COMMA, FALSE_WORD_U64, TRUE_WORD_U64 } from "../../../custom/chars";
2
+ import { ensureArrayElementSlot, ensureArrayField } from "./shared";
3
+
4
+
5
+ @inline export function deserializeBooleanArrayField<T extends boolean[]>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
6
+ const out = ensureArrayField<T>(fieldPtr);
7
+ let index = 0;
8
+
9
+ do {
10
+ if (srcStart >= srcEnd || load<u16>(srcStart) != BRACKET_LEFT) break;
11
+ srcStart += 2;
12
+ if (srcStart >= srcEnd) break;
13
+ if (load<u16>(srcStart) == BRACKET_RIGHT) {
14
+ out.length = 0;
15
+ return srcStart + 2;
16
+ }
17
+
18
+ while (srcStart < srcEnd) {
19
+ const slot = ensureArrayElementSlot<T>(out, index);
20
+ const block = load<u64>(srcStart);
21
+ if (block == TRUE_WORD_U64) {
22
+ store<valueof<T>>(slot, true);
23
+ srcStart += 8;
24
+ } else if (block == FALSE_WORD_U64) {
25
+ store<valueof<T>>(slot, false);
26
+ srcStart += 10;
27
+ } else {
28
+ break;
29
+ }
30
+
31
+ if (srcStart >= srcEnd) break;
32
+ const code = load<u16>(srcStart);
33
+ if (code == COMMA) {
34
+ srcStart += 2;
35
+ index++;
36
+ continue;
37
+ }
38
+ if (code == BRACKET_RIGHT) {
39
+ out.length = index + 1;
40
+ return srcStart + 2;
41
+ }
42
+ break;
43
+ }
44
+ } while (false);
45
+
46
+ throw new Error("Failed to parse JSON!");
47
+ }
@@ -0,0 +1,8 @@
1
+ import { JSON } from "../../..";
2
+ import { ensureArrayField } from "./shared";
3
+
4
+
5
+ @inline export function deserializeBoxArrayField<T extends JSON.Box<any>[]>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
6
+ ensureArrayField<T>(fieldPtr);
7
+ throw new Error("Failed to parse JSON!");
8
+ }
@@ -0,0 +1,39 @@
1
+ import { deserializeFloatField } from "../../float";
2
+ import { BRACKET_LEFT, BRACKET_RIGHT, COMMA } from "../../../custom/chars";
3
+ import { ensureArrayElementSlot, ensureArrayField } from "./shared";
4
+
5
+
6
+ @inline export function deserializeFloatArrayField<T extends number[]>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
7
+ const out = ensureArrayField<T>(fieldPtr);
8
+ let index = 0;
9
+
10
+ do {
11
+ if (srcStart >= srcEnd || load<u16>(srcStart) != BRACKET_LEFT) break;
12
+ srcStart += 2;
13
+ if (srcStart >= srcEnd) break;
14
+ if (load<u16>(srcStart) == BRACKET_RIGHT) {
15
+ out.length = 0;
16
+ return srcStart + 2;
17
+ }
18
+
19
+ while (srcStart < srcEnd) {
20
+ const slot = ensureArrayElementSlot<T>(out, index);
21
+ srcStart = deserializeFloatField<valueof<T>>(srcStart, srcEnd, slot);
22
+ if (!srcStart || srcStart >= srcEnd) break;
23
+
24
+ const code = load<u16>(srcStart);
25
+ if (code == COMMA) {
26
+ srcStart += 2;
27
+ index++;
28
+ continue;
29
+ }
30
+ if (code == BRACKET_RIGHT) {
31
+ out.length = index + 1;
32
+ return srcStart + 2;
33
+ }
34
+ break;
35
+ }
36
+ } while (false);
37
+
38
+ throw new Error("Failed to parse JSON!");
39
+ }