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
@@ -15,11 +15,7 @@
15
15
  * @param str - Any number. Can include scientific notation.
16
16
  */
17
17
  // @ts-ignore: Decorator
18
- @inline export function snip_fast<T extends number>(
19
- str: string,
20
- len: u32 = 0,
21
- offset: u32 = 0,
22
- ): T {
18
+ @inline export function snip_fast<T extends number>(str: string, len: u32 = 0, offset: u32 = 0): T {
23
19
  if (isSigned<T>()) {
24
20
  const firstChar: u32 = load<u16>(changetype<usize>(str));
25
21
  if (firstChar == 48) return 0 as T;
@@ -39,31 +35,19 @@
39
35
  // The first char (f) is E or e
40
36
  // We push the offset up by two and apply the notation.
41
37
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
42
- return -(
43
- val /
44
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)
45
- ) as T;
38
+ return -(val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
46
39
  } else {
47
40
  // Inlined this operation instead of using a loop
48
- return -(
49
- val *
50
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)
51
- ) as T;
41
+ return -(val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
52
42
  }
53
43
  } else if (high > 57) {
54
44
  // The first char (f) is E or e
55
45
  // We push the offset up by two and apply the notation.
56
46
  if (load<u16>(changetype<usize>(str) + <usize>offset + 4) == 45) {
57
- return -(
58
- val /
59
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)
60
- ) as T;
47
+ return -(val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
61
48
  } else {
62
49
  // Inlined this operation instead of using a loop
63
- return -(
64
- val *
65
- 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)
66
- ) as T;
50
+ return -(val * 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)) as T;
67
51
  }
68
52
  } else {
69
53
  val = (val * 100 + (low - 48) * 10 + (high - 48)) as T;
@@ -78,16 +62,10 @@
78
62
  // The first char (f) is E or e
79
63
  // We push the offset up by two and apply the notation.
80
64
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
81
- return -(
82
- val /
83
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)
84
- ) as T;
65
+ return -(val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
85
66
  } else {
86
67
  // Inlined this operation instead of using a loop
87
- return -(
88
- val *
89
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)
90
- ) as T;
68
+ return -(val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
91
69
  }
92
70
  } else {
93
71
  val = (val * 10 + (ch - 48)) as T;
@@ -106,21 +84,17 @@
106
84
  // The first char (f) is E or e
107
85
  // We push the offset up by two and apply the notation.
108
86
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
109
- return (val /
110
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
87
+ return (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
111
88
  } else {
112
89
  // Inlined this operation instead of using a loop
113
- return (val *
114
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
90
+ return (val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
115
91
  }
116
92
  } else if (high > 57) {
117
93
  if (load<u16>(changetype<usize>(str) + <usize>offset + 4) == 45) {
118
- return (val /
119
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
94
+ return (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
120
95
  } else {
121
96
  // Inlined this operation instead of using a loop
122
- return (val *
123
- 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)) as T;
97
+ return (val * 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)) as T;
124
98
  }
125
99
  } else {
126
100
  // Optimized with multiplications and shifts.
@@ -135,12 +109,10 @@
135
109
  // e is 101 and E is 69.
136
110
  if (ch > 57) {
137
111
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
138
- val = (val /
139
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
112
+ val = (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
140
113
  } else {
141
114
  // Inlined this operation instead of using a loop
142
- val = (val *
143
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
115
+ val = (val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
144
116
  }
145
117
  return val as T;
146
118
  } else {
@@ -165,21 +137,17 @@
165
137
  // The first char (f) is E or e
166
138
  // We push the offset up by two and apply the notation.
167
139
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
168
- return (val /
169
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
140
+ return (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
170
141
  } else {
171
142
  // Inlined this operation instead of using a loop
172
- return (val *
173
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
143
+ return (val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
174
144
  }
175
145
  } else if (high > 57) {
176
146
  if (load<u16>(changetype<usize>(str) + <usize>offset + 4) == 45) {
177
- return (val /
178
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
147
+ return (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
179
148
  } else {
180
149
  // Inlined this operation instead of using a loop
181
- return (val *
182
- 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)) as T;
150
+ return (val * 10 ** (__atoi_fast<u32>(str, offset + 4, offset + 6) + 1)) as T;
183
151
  }
184
152
  } else {
185
153
  // Optimized with multiplications and shifts.
@@ -194,12 +162,10 @@
194
162
  // e is 101 and E is 69.
195
163
  if (ch > 57) {
196
164
  if (load<u16>(changetype<usize>(str) + <usize>offset + 2) == 45) {
197
- return (val /
198
- 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
165
+ return (val / 10 ** (__atoi_fast<u32>(str, offset + 6, offset + 8) - 1)) as T;
199
166
  } else {
200
167
  // Inlined this operation instead of using a loop
201
- return (val *
202
- 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
168
+ return (val * 10 ** (__atoi_fast<u32>(str, offset + 2, offset + 4) + 1)) as T;
203
169
  }
204
170
  } else {
205
171
  val = (val * 10 + (ch - 48)) as T;
@@ -214,11 +180,7 @@
214
180
  */
215
181
 
216
182
  // @ts-ignore
217
- @inline export function __atoi_fast<T extends number>(
218
- str: string,
219
- start: u32 = 0,
220
- end: u32 = 0,
221
- ): T {
183
+ @inline export function __atoi_fast<T extends number>(str: string, start: u32 = 0, end: u32 = 0): T {
222
184
  // @ts-ignore
223
185
  let val: T = 0;
224
186
  if (!end) end = start + u32(str.length << 1);
@@ -227,21 +189,18 @@
227
189
  if (load<u16>(changetype<usize>(str) + <usize>start) == 45) {
228
190
  start += 2;
229
191
  for (; start < end; start += 2) {
230
- val = (val * 10 +
231
- (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
192
+ val = (val * 10 + (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
232
193
  }
233
194
  return -val as T;
234
195
  } else {
235
196
  for (; start < end; start += 2) {
236
- val = (val * 10 +
237
- (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
197
+ val = (val * 10 + (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
238
198
  }
239
199
  return val as T;
240
200
  }
241
201
  } else {
242
202
  for (; start < end; start += 2) {
243
- val = (val * 10 +
244
- (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
203
+ val = (val * 10 + (load<u16>(changetype<usize>(str) + <usize>start) - 48)) as T;
245
204
  }
246
205
  return val as T;
247
206
  }
@@ -308,12 +267,7 @@
308
267
  }
309
268
 
310
269
  // @ts-ignore
311
- @inline export function containsCodePoint(
312
- str: string,
313
- code: u32,
314
- start: i32,
315
- end: i32,
316
- ): bool {
270
+ @inline export function containsCodePoint(str: string, code: u32, start: i32, end: i32): bool {
317
271
  for (let i = start; i <= end; i++) {
318
272
  if (unsafeCharCodeAt(str, i) == code) return true;
319
273
  }
@@ -0,0 +1,181 @@
1
+ import { ptrToStr } from "../util/ptrToStr";
2
+
3
+ // @ts-ignore: inline
4
+ @inline function pow10Fast(exponent: u32): f64 {
5
+ let result = 1.0;
6
+ if (exponent & 1) result *= 1e1;
7
+ if (exponent & 2) result *= 1e2;
8
+ if (exponent & 4) result *= 1e4;
9
+ if (exponent & 8) result *= 1e8;
10
+ if (exponent & 16) result *= 1e16;
11
+ if (exponent & 32) result *= 1e32;
12
+ if (exponent & 64) result *= 1e64;
13
+ if (exponent & 128) result *= 1e128;
14
+ if (exponent & 256) result *= 1e256;
15
+ return result;
16
+ }
17
+
18
+ // @ts-ignore: inline
19
+ @inline export function deserializeFloat<T>(srcStart: usize, srcEnd: usize): T {
20
+ let negative = false;
21
+ if (load<u16>(srcStart) == 45) {
22
+ negative = true;
23
+ srcStart += 2;
24
+ if (srcStart >= srcEnd) unreachable();
25
+ }
26
+
27
+ let value: f64 = 0.0;
28
+ let seenDigit = false;
29
+
30
+ while (srcStart < srcEnd) {
31
+ const digit = <u32>load<u16>(srcStart) - 48;
32
+ if (digit > 9) break;
33
+ value = value * 10.0 + <f64>digit;
34
+ seenDigit = true;
35
+ srcStart += 2;
36
+ }
37
+
38
+ if (srcStart < srcEnd && load<u16>(srcStart) == 46) {
39
+ srcStart += 2;
40
+ let fraction: u64 = 0;
41
+ let digits: u32 = 0;
42
+ while (srcStart < srcEnd) {
43
+ const digit = <u32>load<u16>(srcStart) - 48;
44
+ if (digit > 9) break;
45
+ fraction = fraction * 10 + digit;
46
+ digits += 1;
47
+ seenDigit = true;
48
+ srcStart += 2;
49
+ }
50
+ if (digits != 0) value += <f64>fraction / pow10Fast(digits);
51
+ }
52
+
53
+ if (!seenDigit) {
54
+ // @ts-ignore
55
+ const type: T = 0;
56
+ // @ts-ignore
57
+ if (type instanceof f64) return f64.parse(ptrToStr(srcStart, srcEnd));
58
+ // @ts-ignore
59
+ return f32.parse(ptrToStr(srcStart, srcEnd));
60
+ }
61
+
62
+ if (srcStart < srcEnd) {
63
+ const code = load<u16>(srcStart);
64
+ if (code == 101 || code == 69) {
65
+ srcStart += 2;
66
+ if (srcStart >= srcEnd) unreachable();
67
+
68
+ let exponentNegative = false;
69
+ let exponentCode = load<u16>(srcStart);
70
+ if (exponentCode == 45 || exponentCode == 43) {
71
+ exponentNegative = exponentCode == 45;
72
+ srcStart += 2;
73
+ if (srcStart >= srcEnd) unreachable();
74
+ exponentCode = load<u16>(srcStart);
75
+ }
76
+
77
+ let exponent = <u32>exponentCode - 48;
78
+ if (exponent > 9) unreachable();
79
+ srcStart += 2;
80
+ while (srcStart < srcEnd) {
81
+ const digit = <u32>load<u16>(srcStart) - 48;
82
+ if (digit > 9) break;
83
+ exponent = exponent * 10 + digit;
84
+ srcStart += 2;
85
+ }
86
+
87
+ const power = pow10Fast(exponent);
88
+ value = exponentNegative ? value / power : value * power;
89
+ }
90
+ }
91
+
92
+ if (negative) value = -value;
93
+
94
+ // @ts-ignore
95
+ const type: T = 0;
96
+ // @ts-ignore
97
+ if (type instanceof f64) return <T>value;
98
+ // @ts-ignore
99
+ return <T>(<f32>value);
100
+ }
101
+
102
+ // @ts-ignore: inline
103
+ @inline export function deserializeFloatField<T extends number>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
104
+ let negative = false;
105
+ if (load<u16>(srcStart) == 45) {
106
+ negative = true;
107
+ srcStart += 2;
108
+ if (srcStart >= srcEnd) unreachable();
109
+ }
110
+
111
+ let value: f64 = 0.0;
112
+ let seenDigit = false;
113
+
114
+ while (srcStart < srcEnd) {
115
+ const code = load<u16>(srcStart);
116
+ const digit = <u32>code - 48;
117
+ if (digit > 9) break;
118
+ value = value * 10.0 + <f64>digit;
119
+ seenDigit = true;
120
+ srcStart += 2;
121
+ }
122
+
123
+ if (srcStart < srcEnd && load<u16>(srcStart) == 46) {
124
+ srcStart += 2;
125
+ let fraction: u64 = 0;
126
+ let digits: u32 = 0;
127
+ while (srcStart < srcEnd) {
128
+ const code = load<u16>(srcStart);
129
+ const digit = <u32>code - 48;
130
+ if (digit > 9) break;
131
+ fraction = fraction * 10 + digit;
132
+ digits += 1;
133
+ seenDigit = true;
134
+ srcStart += 2;
135
+ }
136
+ if (digits != 0) value += <f64>fraction / pow10Fast(digits);
137
+ }
138
+
139
+ if (!seenDigit) unreachable();
140
+
141
+ if (srcStart < srcEnd) {
142
+ const code = load<u16>(srcStart);
143
+ if (code == 101 || code == 69) {
144
+ srcStart += 2;
145
+ if (srcStart >= srcEnd) unreachable();
146
+
147
+ let exponentNegative = false;
148
+ let exponentCode = load<u16>(srcStart);
149
+ if (exponentCode == 45 || exponentCode == 43) {
150
+ exponentNegative = exponentCode == 45;
151
+ srcStart += 2;
152
+ if (srcStart >= srcEnd) unreachable();
153
+ exponentCode = load<u16>(srcStart);
154
+ }
155
+
156
+ let exponent = <u32>exponentCode - 48;
157
+ if (exponent > 9) unreachable();
158
+ srcStart += 2;
159
+ while (srcStart < srcEnd) {
160
+ const code = load<u16>(srcStart);
161
+ const digit = <u32>code - 48;
162
+ if (digit > 9) break;
163
+ exponent = exponent * 10 + digit;
164
+ srcStart += 2;
165
+ }
166
+
167
+ const power = pow10Fast(exponent);
168
+ value = exponentNegative ? value / power : value * power;
169
+ }
170
+ }
171
+
172
+ if (negative) value = -value;
173
+
174
+ if (sizeof<T>() == sizeof<f32>()) {
175
+ store<f32>(fieldPtr, <f32>value);
176
+ } else {
177
+ store<f64>(fieldPtr, value);
178
+ }
179
+
180
+ return srcStart;
181
+ }
@@ -0,0 +1,12 @@
1
+ export function deserializeUintScan<T extends number>(src: usize, dst: usize): usize {
2
+ let digit = <T>load<u16>(src) - 48;
3
+ if (digit > 9) abort("Found invalid digit");
4
+ let val = digit;
5
+ src += 2;
6
+ while ((digit = <u32>load<u16>(src) - 48) < 10) {
7
+ val = val * 10 + digit;
8
+ src += 2;
9
+ }
10
+ store<T>(dst, val);
11
+ return src;
12
+ }
@@ -0,0 +1,25 @@
1
+ import { JSON } from "../..";
2
+ import { deserializeArray } from "./array";
3
+ import { deserializeBoolean } from "./bool";
4
+ import { deserializeFloat } from "./float";
5
+ import { deserializeObject } from "./object";
6
+ import { deserializeString } from "./string";
7
+ import { BRACE_LEFT, BRACKET_LEFT, CHAR_N, QUOTE } from "../../custom/chars";
8
+
9
+ export function deserializeArbitrary(srcStart: usize, srcEnd: usize, dst: usize): JSON.Value {
10
+ const firstChar = load<u16>(srcStart);
11
+ if (firstChar == QUOTE) {
12
+ return JSON.Value.from(deserializeString(srcStart, srcEnd));
13
+ } else if (firstChar == BRACE_LEFT) {
14
+ return JSON.Value.from(deserializeObject(srcStart, srcEnd, 0));
15
+ } else if (firstChar - 48 <= 9 || firstChar == 45) {
16
+ return JSON.Value.from(deserializeFloat<f64>(srcStart, srcEnd));
17
+ } else if (firstChar == BRACKET_LEFT) {
18
+ return JSON.Value.from(deserializeArray<JSON.Value[]>(srcStart, srcEnd, 0));
19
+ } else if (firstChar == 116 || firstChar == 102) {
20
+ return JSON.Value.from(deserializeBoolean(srcStart, srcEnd));
21
+ } else if (firstChar == CHAR_N) {
22
+ return JSON.Value.from<usize>(0);
23
+ }
24
+ return unreachable();
25
+ }
@@ -0,0 +1,61 @@
1
+ import { JSON, JSONMode } from "../..";
2
+ import { deserializeArbitraryArray } from "../simple/array/arbitrary";
3
+ import { deserializeArrayArray } from "../simple/array/array";
4
+ import { deserializeBooleanArray } from "../simple/array/bool";
5
+ import { deserializeBoxArray } from "../simple/array/box";
6
+ import { deserializeFloatArray } from "../simple/array/float";
7
+ import { deserializeIntegerArray as deserializeIntegerArray_NAIVE } from "../simple/array/integer";
8
+ import { deserializeMapArray } from "../simple/array/map";
9
+ import { deserializeObjectArray } from "../simple/array/object";
10
+ import { deserializeRawArray } from "../simple/array/raw";
11
+ import { deserializeStringArray } from "../simple/array/string";
12
+ import { deserializeStructArray } from "../simple/array/struct";
13
+ import { deserializeIntegerArray_SIMD } from "../simd/array/integer";
14
+ import { deserializeIntegerArray_SWAR } from "../swar/array/integer";
15
+
16
+ export { deserializeArrayField, deserializeArrayField as deserializeArrayField_SWAR } from "../swar/array";
17
+
18
+ export function deserializeArray<T extends unknown[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
19
+ if (isString<valueof<T>>()) {
20
+ return <T>deserializeStringArray(srcStart, srcEnd, dst);
21
+ } else if (isBoolean<valueof<T>>()) {
22
+ return deserializeBooleanArray<T>(srcStart, srcEnd, dst);
23
+ } else if (isInteger<valueof<T>>()) {
24
+ if (JSON_MODE == JSONMode.SIMD) {
25
+ // @ts-ignore: integer array branch
26
+ return deserializeIntegerArray_SIMD<T>(srcStart, srcEnd, dst);
27
+ } else if (JSON_MODE == JSONMode.SWAR) {
28
+ // @ts-ignore: integer array branch
29
+ return deserializeIntegerArray_SWAR<T>(srcStart, srcEnd, dst);
30
+ } else {
31
+ // @ts-ignore: integer array branch
32
+ return deserializeIntegerArray_NAIVE<T>(srcStart, srcEnd, dst);
33
+ }
34
+ } else if (isFloat<valueof<T>>()) {
35
+ return deserializeFloatArray<T>(srcStart, srcEnd, dst);
36
+ } else if (isArray<valueof<T>>()) {
37
+ return deserializeArrayArray<T>(srcStart, srcEnd, dst);
38
+ } else if (isManaged<valueof<T>>() || isReference<valueof<T>>()) {
39
+ const type = changetype<nonnull<valueof<T>>>(0);
40
+ if (type instanceof JSON.Value) {
41
+ return deserializeArbitraryArray(srcStart, srcEnd, dst) as T;
42
+ } else if (type instanceof JSON.Box) {
43
+ return deserializeBoxArray<T>(srcStart, srcEnd, dst);
44
+ } else if (type instanceof JSON.Obj) {
45
+ return deserializeObjectArray<T>(srcStart, srcEnd, dst);
46
+ } else if (type instanceof JSON.Raw) {
47
+ return deserializeRawArray(srcStart, srcEnd, dst) as T;
48
+ } else if (type instanceof Map) {
49
+ return deserializeMapArray<T>(srcStart, srcEnd, dst);
50
+ // @ts-ignore: defined by transform
51
+ } else if (isDefined(type.__DESERIALIZE_CUSTOM)) {
52
+ return deserializeStructArray<T>(srcStart, srcEnd, dst);
53
+ // @ts-ignore: defined by transform
54
+ } else if (isDefined(type.__DESERIALIZE)) {
55
+ return deserializeStructArray<T>(srcStart, srcEnd, dst);
56
+ }
57
+ throw new Error("Could not parse array of type " + nameof<T>() + "!");
58
+ } else {
59
+ throw new Error("Could not parse array of type " + nameof<T>() + "!");
60
+ }
61
+ }
@@ -0,0 +1 @@
1
+ export { deserializeBoolean } from "../simple/bool";
@@ -0,0 +1 @@
1
+ export { deserializeDate } from "../simple/date";
@@ -0,0 +1 @@
1
+ export { deserializeFloat } from "../float";
@@ -0,0 +1 @@
1
+ export { deserializeInteger } from "../integer";
@@ -0,0 +1 @@
1
+ export { deserializeMap } from "../simple/map";
@@ -0,0 +1 @@
1
+ export { deserializeObject } from "../simple/object";
@@ -0,0 +1 @@
1
+ export { deserializeRaw } from "../simple/raw";
@@ -0,0 +1 @@
1
+ export { deserializeSet } from "../simple/set";
@@ -0,0 +1 @@
1
+ export { deserializeStaticArray } from "../simple/staticarray";
@@ -0,0 +1,15 @@
1
+ import { JSONMode } from "../..";
2
+ import { deserializeString as deserializeString_NAIVE } from "../simple/string";
3
+ import { deserializeString_SIMD } from "../simd/string";
4
+ import { deserializeString_SWAR } from "../swar/string";
5
+
6
+
7
+ @inline export function deserializeString(srcStart: usize, srcEnd: usize): string {
8
+ if (JSON_MODE == JSONMode.SIMD) {
9
+ return deserializeString_SIMD(srcStart, srcEnd);
10
+ } else if (JSON_MODE == JSONMode.NAIVE) {
11
+ return deserializeString_NAIVE(srcStart, srcEnd);
12
+ } else {
13
+ return deserializeString_SWAR(srcStart, srcEnd);
14
+ }
15
+ }
@@ -0,0 +1 @@
1
+ export { deserializeStruct } from "../simple/struct";
@@ -0,0 +1 @@
1
+ export { deserializeArrayBuffer, deserializeTypedArray } from "../simple/typedarray";
@@ -0,0 +1 @@
1
+ export { deserializeUnsigned } from "../unsigned";
@@ -0,0 +1,14 @@
1
+ export * from "./index/arbitrary";
2
+ export * from "./index/array";
3
+ export * from "./index/bool";
4
+ export * from "./index/date";
5
+ export * from "./index/float";
6
+ export * from "./index/integer";
7
+ export * from "./index/map";
8
+ export * from "./index/object";
9
+ export * from "./index/raw";
10
+ export * from "./index/set";
11
+ export * from "./index/staticarray";
12
+ export * from "./index/string";
13
+ export * from "./index/struct";
14
+ export * from "./index/unsigned";
@@ -0,0 +1,42 @@
1
+ import { atoi } from "../util/atoi";
2
+
3
+ // @ts-ignore: inline
4
+ @inline export function deserializeInteger<T>(srcStart: usize, srcEnd: usize): T {
5
+ return atoi<T>(srcStart, srcEnd);
6
+ }
7
+
8
+ // @ts-ignore: inline
9
+ @inline export function deserializeIntegerField<T extends number>(srcStart: usize, srcEnd: usize, fieldPtr: usize): usize {
10
+ let negative = false;
11
+ if (load<u16>(srcStart) == 45) {
12
+ negative = true;
13
+ srcStart += 2;
14
+ if (srcStart >= srcEnd) unreachable();
15
+ }
16
+
17
+ let digit = <u32>load<u16>(srcStart) - 48;
18
+ if (digit > 9) unreachable();
19
+
20
+ let value: u64 = digit;
21
+ srcStart += 2;
22
+ while (srcStart < srcEnd) {
23
+ digit = <u32>load<u16>(srcStart) - 48;
24
+ if (digit > 9) break;
25
+ value = value * 10 + digit;
26
+ srcStart += 2;
27
+ }
28
+
29
+ if (sizeof<T>() == sizeof<i8>()) {
30
+ store<i8>(fieldPtr, negative ? -(<i8>value) : <i8>value);
31
+ } else if (sizeof<T>() == sizeof<i16>()) {
32
+ store<i16>(fieldPtr, negative ? -(<i16>value) : <i16>value);
33
+ } else if (sizeof<T>() == sizeof<i32>()) {
34
+ store<i32>(fieldPtr, negative ? -(<i32>value) : <i32>value);
35
+ } else if (sizeof<T>() == sizeof<isize>()) {
36
+ store<isize>(fieldPtr, negative ? -(<isize>value) : <isize>value);
37
+ } else {
38
+ store<i64>(fieldPtr, negative ? -(<i64>value) : <i64>value);
39
+ }
40
+
41
+ return srcStart;
42
+ }