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,32 +1,16 @@
1
1
  import { JSON } from "../..";
2
2
  import { bs } from "../../../lib/as-bs";
3
- import {
4
- BACK_SLASH,
5
- COMMA,
6
- CHAR_F,
7
- BRACE_LEFT,
8
- BRACKET_LEFT,
9
- CHAR_N,
10
- QUOTE,
11
- BRACE_RIGHT,
12
- BRACKET_RIGHT,
13
- CHAR_T,
14
- COLON,
15
- } from "../../custom/chars";
16
- import { isSpace } from "../../util";
3
+ import { BACK_SLASH, COMMA, CHAR_F, BRACE_LEFT, BRACKET_LEFT, CHAR_N, QUOTE, BRACE_RIGHT, BRACKET_RIGHT, CHAR_T, COLON } from "../../custom/chars";
4
+ import { isSpace, isUnescapedQuote, scanStringEnd } from "../../util";
17
5
  import { ptrToStr } from "../../util/ptrToStr";
18
6
  import { deserializeString_SWAR } from "../swar/string";
19
7
  import { deserializeArbitrary } from "./arbitrary";
20
8
  import { deserializeArray } from "./array";
21
9
  import { deserializeBoolean } from "./bool";
22
- import { deserializeFloat } from "./float";
10
+ import { deserializeFloat } from "../float";
23
11
  import { deserializeString } from "./string";
24
12
 
25
- export function deserializeObject(
26
- srcStart: usize,
27
- srcEnd: usize,
28
- dst: usize,
29
- ): JSON.Obj {
13
+ export function deserializeObject(srcStart: usize, srcEnd: usize, dst: usize): JSON.Obj {
30
14
  const out = changetype<JSON.Obj>(dst || changetype<usize>(new JSON.Obj()));
31
15
 
32
16
  let keyStart: usize = 0;
@@ -38,35 +22,22 @@ export function deserializeObject(
38
22
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
39
23
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2; // would like to optimize this later
40
24
 
41
- if (srcStart - srcEnd == 0)
42
- throw new Error("Input string had zero length or was all whitespace");
43
- if (load<u16>(srcStart) != BRACE_LEFT)
44
- throw new Error(
45
- "Expected '{' at start of object at position " +
46
- (srcEnd - srcStart).toString(),
47
- );
48
- if (load<u16>(srcEnd - 2) != BRACE_RIGHT)
49
- throw new Error(
50
- "Expected '}' at end of object at position " +
51
- (srcEnd - srcStart).toString(),
52
- );
25
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
26
+ if (load<u16>(srcStart) != BRACE_LEFT) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
27
+ if (load<u16>(srcEnd - 2) != BRACE_RIGHT) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
53
28
 
54
29
  srcStart += 2;
55
30
  while (srcStart < srcEnd) {
56
31
  let code = load<u16>(srcStart); // while (isSpace(code)) code = load<u16>(srcStart += 2);
57
32
  if (keyStart == 0) {
58
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
33
+ if (code == QUOTE && isUnescapedQuote(srcStart)) {
59
34
  if (isKey) {
60
35
  keyStart = lastIndex;
61
36
  keyEnd = srcStart;
62
37
  // console.log("Key: " + ptrToStr(lastIndex, srcStart));
63
38
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart + 2)));
64
39
  while (isSpace((code = load<u16>((srcStart += 2))))) {}
65
- if (code !== COLON)
66
- throw new Error(
67
- "Expected ':' after key at position " +
68
- (srcEnd - srcStart).toString(),
69
- );
40
+ if (code !== COLON) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
70
41
  isKey = false;
71
42
  } else {
72
43
  // console.log("Got key start");
@@ -79,23 +50,12 @@ export function deserializeObject(
79
50
  } else {
80
51
  if (code == QUOTE) {
81
52
  lastIndex = srcStart;
53
+ srcStart = scanStringEnd(srcStart, srcEnd);
54
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
55
+ out.set(ptrToStr(keyStart, keyEnd), deserializeString(lastIndex, srcStart + 2));
82
56
  srcStart += 2;
83
- while (srcStart < srcEnd) {
84
- const code = load<u16>(srcStart);
85
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
86
- // console.log("Value (string):-" + deserializeString_SWAR(lastIndex, srcStart + 2, 0) + "-");
87
- out.set(
88
- ptrToStr(keyStart, keyEnd),
89
- deserializeString(lastIndex, srcStart + 2),
90
- );
91
- // while (isSpace(load<u16>(srcStart))) srcStart += 2;
92
- srcStart += 4;
93
- // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
94
- keyStart = 0;
95
- break;
96
- }
97
- srcStart += 2;
98
- }
57
+ keyStart = 0;
58
+ continue;
99
59
  } else if (code - 48 <= 9 || code == 45) {
100
60
  lastIndex = srcStart;
101
61
  srcStart += 2;
@@ -103,10 +63,7 @@ export function deserializeObject(
103
63
  const code = load<u16>(srcStart);
104
64
  if (code == COMMA || code == BRACE_RIGHT || isSpace(code)) {
105
65
  // console.log("Value (number): " + ptrToStr(lastIndex, srcStart));
106
- out.set(
107
- ptrToStr(keyStart, keyEnd),
108
- deserializeFloat<f64>(lastIndex, srcStart),
109
- );
66
+ out.set(ptrToStr(keyStart, keyEnd), deserializeFloat<f64>(lastIndex, srcStart));
110
67
  // while (isSpace(load<u16>((srcStart += 2)))) {
111
68
  // /* empty */
112
69
  // }
@@ -124,21 +81,12 @@ export function deserializeObject(
124
81
  while (srcStart < srcEnd) {
125
82
  const code = load<u16>(srcStart);
126
83
  if (code == QUOTE) {
127
- srcStart += 2;
128
- while (
129
- !(
130
- load<u16>(srcStart) == QUOTE &&
131
- load<u16>(srcStart - 2) != BACK_SLASH
132
- )
133
- )
134
- srcStart += 2;
84
+ srcStart = scanStringEnd(srcStart, srcEnd);
85
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
135
86
  } else if (code == BRACE_RIGHT) {
136
87
  if (--depth == 0) {
137
88
  // console.log("Value (object): " + ptrToStr(lastIndex, srcStart + 2));
138
- out.set(
139
- ptrToStr(keyStart, keyEnd),
140
- deserializeObject(lastIndex, (srcStart += 2), 0),
141
- );
89
+ out.set(ptrToStr(keyStart, keyEnd), deserializeObject(lastIndex, (srcStart += 2), 0));
142
90
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
143
91
  keyStart = 0;
144
92
  // while (isSpace(load<u16>(srcStart))) {
@@ -155,13 +103,13 @@ export function deserializeObject(
155
103
  srcStart += 2;
156
104
  while (srcStart < srcEnd) {
157
105
  const code = load<u16>(srcStart);
158
- if (code == BRACKET_RIGHT) {
106
+ if (code == QUOTE) {
107
+ srcStart = scanStringEnd(srcStart, srcEnd);
108
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
109
+ } else if (code == BRACKET_RIGHT) {
159
110
  if (--depth == 0) {
160
111
  // console.log("Value (array): " + ptrToStr(lastIndex, srcStart + 2));
161
- out.set(
162
- ptrToStr(keyStart, keyEnd),
163
- deserializeArray<JSON.Value[]>(lastIndex, (srcStart += 2), 0),
164
- );
112
+ out.set(ptrToStr(keyStart, keyEnd), deserializeArray<JSON.Value[]>(lastIndex, (srcStart += 2), 0));
165
113
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
166
114
  keyStart = 0;
167
115
  // while (isSpace(load<u16>((srcStart += 2)))) {
@@ -211,12 +159,7 @@ export function deserializeObject(
211
159
  } else if (isSpace(code)) {
212
160
  srcStart += 2;
213
161
  } else {
214
- throw new Error(
215
- "Unexpected character in JSON object '" +
216
- String.fromCharCode(code) +
217
- "' at position " +
218
- (srcEnd - srcStart).toString(),
219
- );
162
+ throw new Error("Unexpected character in JSON object '" + String.fromCharCode(code) + "' at position " + (srcEnd - srcStart).toString());
220
163
  }
221
164
  }
222
165
  }
@@ -2,9 +2,6 @@ import { JSON } from "../..";
2
2
  import { ptrToStr } from "../../util/ptrToStr";
3
3
 
4
4
  // @ts-ignore: inline
5
- @inline export function deserializeRaw(
6
- srcStart: usize,
7
- srcEnd: usize,
8
- ): JSON.Raw {
5
+ @inline export function deserializeRaw(srcStart: usize, srcEnd: usize): JSON.Raw {
9
6
  return JSON.Raw.from(ptrToStr(srcStart, srcEnd));
10
7
  }
@@ -1,36 +1,16 @@
1
1
  import { JSON } from "../..";
2
- import {
3
- BACK_SLASH,
4
- BRACKET_LEFT,
5
- BRACKET_RIGHT,
6
- BRACE_LEFT,
7
- BRACE_RIGHT,
8
- CHAR_F,
9
- CHAR_N,
10
- CHAR_T,
11
- COMMA,
12
- QUOTE,
13
- } from "../../custom/chars";
14
- import { isSpace, atoi } from "../../util";
2
+ import { BACK_SLASH, BRACKET_LEFT, BRACKET_RIGHT, BRACE_LEFT, BRACE_RIGHT, CHAR_F, CHAR_N, CHAR_T, COMMA, QUOTE } from "../../custom/chars";
3
+ import { isSpace, atoi, isUnescapedQuote, scanStringEnd } from "../../util";
15
4
 
16
- export function deserializeSet<T extends Set<any>>(
17
- srcStart: usize,
18
- srcEnd: usize,
19
- dst: usize,
20
- ): T {
21
- const out = changetype<nonnull<T>>(
22
- dst || changetype<usize>(instantiate<T>()),
23
- );
5
+ export function deserializeSet<T extends Set<any>>(srcStart: usize, srcEnd: usize, dst: usize): T {
6
+ const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
24
7
 
25
8
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
26
9
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
27
10
 
28
- if (srcStart >= srcEnd)
29
- throw new Error("Input string had zero length or was all whitespace");
30
- if (load<u16>(srcStart) != BRACKET_LEFT)
31
- throw new Error("Expected '[' at start of set");
32
- if (load<u16>(srcEnd - 2) != BRACKET_RIGHT)
33
- throw new Error("Expected ']' at end of set");
11
+ if (srcStart >= srcEnd) throw new Error("Input string had zero length or was all whitespace");
12
+ if (load<u16>(srcStart) != BRACKET_LEFT) throw new Error("Expected '[' at start of set");
13
+ if (load<u16>(srcEnd - 2) != BRACKET_RIGHT) throw new Error("Expected ']' at end of set");
34
14
 
35
15
  srcStart += 2;
36
16
 
@@ -45,7 +25,7 @@ export function deserializeSet<T extends Set<any>>(
45
25
  srcStart += 2;
46
26
  while (srcStart < srcEnd) {
47
27
  const c = load<u16>(srcStart);
48
- if (c == QUOTE && load<u16>(srcStart - 2) != BACK_SLASH) {
28
+ if (c == QUOTE && isUnescapedQuote(srcStart)) {
49
29
  // @ts-ignore: type
50
30
  out.add(JSON.__deserialize<indexof<T>>(lastIndex, srcStart + 2));
51
31
  srcStart += 2;
@@ -107,14 +87,8 @@ export function deserializeSet<T extends Set<any>>(
107
87
  while (srcStart < srcEnd) {
108
88
  const c = load<u16>(srcStart);
109
89
  if (c == QUOTE) {
110
- srcStart += 2;
111
- while (
112
- !(
113
- load<u16>(srcStart) == QUOTE &&
114
- load<u16>(srcStart - 2) != BACK_SLASH
115
- )
116
- )
117
- srcStart += 2;
90
+ srcStart = scanStringEnd(srcStart, srcEnd);
91
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON set");
118
92
  } else if (c == BRACE_RIGHT) {
119
93
  if (--depth == 0) {
120
94
  srcStart += 2;
@@ -153,7 +127,7 @@ export function deserializeSet<T extends Set<any>>(
153
127
  srcStart += 2;
154
128
  while (srcStart < srcEnd) {
155
129
  const c = load<u16>(srcStart);
156
- if (c == QUOTE && load<u16>(srcStart - 2) != BACK_SLASH) {
130
+ if (c == QUOTE && isUnescapedQuote(srcStart)) {
157
131
  // @ts-ignore: type
158
132
  out.add(JSON.__deserialize<indexof<T>>(lastIndex, srcStart + 2));
159
133
  srcStart += 2;
@@ -19,7 +19,7 @@ export function deserializeStaticArrayArray<T extends StaticArray<any>>(
19
19
  ptr += 2;
20
20
  }
21
21
 
22
- const outSize = (<usize>count) << alignof<valueof<T>>();
22
+ const outSize = count << (alignof<valueof<T>>());
23
23
  const out = changetype<nonnull<T>>(dst || __new(outSize, idof<T>()));
24
24
 
25
25
  // Second pass: populate values
@@ -20,7 +20,7 @@ export function deserializeStaticArrayBoolean<T extends StaticArray<any>>(
20
20
  }
21
21
 
22
22
  // Allocate StaticArray with correct size
23
- const outSize = (<usize>count) << alignof<valueof<T>>();
23
+ const outSize = count << (alignof<valueof<T>>());
24
24
  const out = changetype<nonnull<T>>(dst || __new(outSize, idof<T>()));
25
25
 
26
26
  // Second pass: populate values
@@ -23,7 +23,7 @@ export function deserializeStaticArrayFloat<T extends StaticArray<any>>(
23
23
  ptr += 2;
24
24
  }
25
25
 
26
- const outSize = (<usize>count) << alignof<valueof<T>>();
26
+ const outSize = count << (alignof<valueof<T>>());
27
27
  const out = changetype<nonnull<T>>(dst || __new(outSize, idof<T>()));
28
28
 
29
29
  let index = 0;
@@ -22,7 +22,7 @@ export function deserializeStaticArrayInteger<T extends StaticArray<any>>(
22
22
  ptr += 2;
23
23
  }
24
24
 
25
- const outSize = (<usize>count) << alignof<valueof<T>>();
25
+ const outSize = count << (alignof<valueof<T>>());
26
26
  const out = changetype<nonnull<T>>(dst || __new(outSize, idof<T>()));
27
27
 
28
28
  // Second pass: populate values
@@ -1,11 +1,8 @@
1
1
  import { JSON } from "../../..";
2
- import { BACK_SLASH, QUOTE } from "../../../custom/chars";
2
+ import { QUOTE } from "../../../custom/chars";
3
+ import { isUnescapedQuote } from "../../../util";
3
4
 
4
- export function deserializeStaticArrayString(
5
- srcStart: usize,
6
- srcEnd: usize,
7
- dst: usize,
8
- ): StaticArray<string> {
5
+ export function deserializeStaticArrayString(srcStart: usize, srcEnd: usize, dst: usize): StaticArray<string> {
9
6
  // First pass: count elements using same logic as Array deserializer
10
7
  let count: i32 = 0;
11
8
  let ptr = srcStart;
@@ -15,7 +12,7 @@ export function deserializeStaticArrayString(
15
12
  if (code == QUOTE) {
16
13
  if (!inString) {
17
14
  inString = true;
18
- } else if (load<u16>(ptr - 2) != BACK_SLASH) {
15
+ } else if (isUnescapedQuote(ptr)) {
19
16
  count++;
20
17
  inString = false;
21
18
  }
@@ -25,9 +22,7 @@ export function deserializeStaticArrayString(
25
22
 
26
23
  // Allocate StaticArray with correct size
27
24
  const outSize = (<usize>count) << alignof<string>();
28
- const out = changetype<StaticArray<string>>(
29
- dst || __new(outSize, idof<StaticArray<string>>()),
30
- );
25
+ const out = changetype<StaticArray<string>>(dst || __new(outSize, idof<StaticArray<string>>()));
31
26
 
32
27
  // Second pass: populate values
33
28
  let index = 0;
@@ -39,10 +34,8 @@ export function deserializeStaticArrayString(
39
34
  if (!inString) {
40
35
  inString = true;
41
36
  lastPos = srcStart;
42
- } else if (load<u16>(srcStart - 2) != BACK_SLASH) {
43
- unchecked(
44
- (out[index++] = JSON.__deserialize<string>(lastPos, srcStart + 2)),
45
- );
37
+ } else if (isUnescapedQuote(srcStart)) {
38
+ unchecked((out[index++] = JSON.__deserialize<string>(lastPos, srcStart + 2)));
46
39
  inString = false;
47
40
  }
48
41
  }
@@ -44,7 +44,7 @@ export function deserializeStaticArrayStruct<T extends StaticArray<any>>(
44
44
  }
45
45
 
46
46
  // Allocate StaticArray with correct size
47
- const outSize = (<usize>count) << alignof<valueof<T>>();
47
+ const outSize = count << (alignof<valueof<T>>());
48
48
  const out = changetype<nonnull<T>>(dst || __new(outSize, idof<T>()));
49
49
 
50
50
  // Second pass: populate values
@@ -1,36 +1,72 @@
1
- import { deserializeStaticArrayInteger } from "./staticarray/integer";
2
- import { deserializeStaticArrayFloat } from "./staticarray/float";
1
+ import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
2
+ import { JSON } from "../..";
3
+ import { deserializeArbitraryArray } from "./array/arbitrary";
4
+ import { deserializeArrayArray } from "./array/array";
5
+ import { deserializeBooleanArray } from "./array/bool";
6
+ import { deserializeBoxArray } from "./array/box";
7
+ import { deserializeFloatArray } from "./array/float";
8
+ import { deserializeIntegerArray } from "./array/integer";
9
+ import { deserializeMapArray } from "./array/map";
10
+ import { deserializeObjectArray } from "./array/object";
11
+ import { deserializeRawArray } from "./array/raw";
12
+ import { deserializeStructArray } from "./array/struct";
13
+ import { deserializeStringArray } from "./array/string";
3
14
  import { deserializeStaticArrayBoolean } from "./staticarray/bool";
15
+ import { deserializeStaticArrayFloat } from "./staticarray/float";
16
+ import { deserializeStaticArrayInteger } from "./staticarray/integer";
4
17
  import { deserializeStaticArrayString } from "./staticarray/string";
5
- import { deserializeStaticArrayArray } from "./staticarray/array";
6
- import { deserializeStaticArrayStruct } from "./staticarray/struct";
7
18
 
8
- export function deserializeStaticArray<T extends StaticArray<any>>(
9
- srcStart: usize,
10
- srcEnd: usize,
11
- dst: usize,
12
- ): T {
19
+
20
+ @inline function materializeStaticArray<T extends StaticArray<any>>(src: valueof<T>[], dst: usize): T {
21
+ const byteLength = <usize>src.length * sizeof<valueof<T>>();
22
+ let out = dst;
23
+
24
+ if (!out) {
25
+ out = __new(byteLength, idof<T>());
26
+ } else if (changetype<OBJECT>(out - TOTAL_OVERHEAD).rtSize != byteLength) {
27
+ out = __renew(out, byteLength);
28
+ }
29
+
30
+ const typed = changetype<T>(out);
31
+ for (let i = 0; i < src.length; i++) {
32
+ unchecked((typed[i] = unchecked(src[i])));
33
+ }
34
+ return typed;
35
+ }
36
+
37
+ export function deserializeStaticArray<T extends StaticArray<any>>(srcStart: usize, srcEnd: usize, dst: usize): T {
13
38
  if (isString<valueof<T>>()) {
14
- return <T>deserializeStaticArrayString(srcStart, srcEnd, dst);
39
+ return changetype<T>(deserializeStaticArrayString(srcStart, srcEnd, dst));
15
40
  } else if (isBoolean<valueof<T>>()) {
16
41
  return deserializeStaticArrayBoolean<T>(srcStart, srcEnd, dst);
17
42
  } else if (isInteger<valueof<T>>()) {
18
43
  return deserializeStaticArrayInteger<T>(srcStart, srcEnd, dst);
19
44
  } else if (isFloat<valueof<T>>()) {
20
45
  return deserializeStaticArrayFloat<T>(srcStart, srcEnd, dst);
21
- } else if (isArrayLike<valueof<T>>()) {
22
- return deserializeStaticArrayArray<T>(srcStart, srcEnd, dst);
46
+ } else if (isArray<valueof<T>>()) {
47
+ return materializeStaticArray<T>(deserializeArrayArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
23
48
  } else if (isManaged<valueof<T>>() || isReference<valueof<T>>()) {
24
49
  const type = changetype<nonnull<valueof<T>>>(0);
25
- if (isDefined(type.__DESERIALIZE)) {
26
- return deserializeStaticArrayStruct<T>(srcStart, srcEnd, dst);
50
+ if (type instanceof StaticArray) {
51
+ return materializeStaticArray<T>(deserializeArrayArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
52
+ } else if (type instanceof JSON.Value) {
53
+ return materializeStaticArray<T>(changetype<valueof<T>[]>(deserializeArbitraryArray(srcStart, srcEnd, 0)), dst);
54
+ } else if (type instanceof JSON.Box) {
55
+ return materializeStaticArray<T>(changetype<valueof<T>[]>(deserializeBoxArray<valueof<T>[]>(srcStart, srcEnd, 0)), dst);
56
+ } else if (type instanceof JSON.Obj) {
57
+ return materializeStaticArray<T>(deserializeObjectArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
58
+ } else if (type instanceof JSON.Raw) {
59
+ return materializeStaticArray<T>(changetype<valueof<T>[]>(deserializeRawArray(srcStart, srcEnd, 0)), dst);
60
+ } else if (type instanceof Map) {
61
+ return materializeStaticArray<T>(deserializeMapArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
62
+ // @ts-ignore: supplied by transform
63
+ } else if (isDefined(type.__DESERIALIZE_CUSTOM)) {
64
+ return materializeStaticArray<T>(deserializeStructArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
65
+ // @ts-ignore: supplied by transform
66
+ } else if (isDefined(type.__DESERIALIZE)) {
67
+ return materializeStaticArray<T>(deserializeStructArray<valueof<T>[]>(srcStart, srcEnd, 0), dst);
27
68
  }
28
- throw new Error(
29
- "Could not parse static array of type " + nameof<T>() + "!",
30
- );
31
- } else {
32
- throw new Error(
33
- "Could not parse static array of type " + nameof<T>() + "!",
34
- );
35
69
  }
70
+
71
+ throw new Error("Could not parse static array of type " + nameof<T>() + "!");
36
72
  }
@@ -1,15 +1,9 @@
1
1
  import { bs } from "../../../lib/as-bs";
2
- import {
3
- DESERIALIZE_ESCAPE_TABLE,
4
- ESCAPE_HEX_TABLE,
5
- } from "../../globals/tables";
2
+ import { DESERIALIZE_ESCAPE_TABLE, ESCAPE_HEX_TABLE } from "../../globals/tables";
6
3
  import { hex4_to_u16_swar } from "../../util/swar";
7
4
 
8
5
  // @ts-ignore: inline
9
- @inline export function deserializeString(
10
- srcStart: usize,
11
- srcEnd: usize,
12
- ): string {
6
+ @inline export function deserializeString(srcStart: usize, srcEnd: usize): string {
13
7
  // Strip quotes
14
8
  srcStart += 2;
15
9
  srcEnd -= 2;