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,39 +1,19 @@
1
- import {
2
- BRACE_LEFT,
3
- BRACE_RIGHT,
4
- BRACKET_LEFT,
5
- BRACKET_RIGHT,
6
- } from "../../../custom/chars";
1
+ import { BRACE_LEFT, BRACE_RIGHT, BRACKET_LEFT, BRACKET_RIGHT } from "../../../custom/chars";
7
2
  import { JSON } from "../../..";
8
3
  import { isSpace } from "util/string";
9
4
 
10
- export function deserializeMapArray<T extends Map<any, any>[]>(
11
- srcStart: usize,
12
- srcEnd: usize,
13
- dst: usize,
14
- ): T {
15
- const out = changetype<nonnull<T>>(
16
- dst || changetype<usize>(instantiate<T>()),
17
- );
5
+ export function deserializeMapArray<T extends Map<any, any>[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
6
+ const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
18
7
  let lastIndex: usize = 0;
19
8
  let depth: u32 = 0;
20
9
 
21
10
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
22
11
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
23
12
 
24
- if (srcStart - srcEnd == 0)
25
- throw new Error("Input string had zero length or was all whitespace");
13
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
26
14
 
27
- if (load<u16>(srcStart) != BRACKET_LEFT)
28
- throw new Error(
29
- "Expected '[' at start of object at position " +
30
- (srcEnd - srcStart).toString(),
31
- );
32
- if (load<u16>(srcEnd - 2) != BRACKET_RIGHT)
33
- throw new Error(
34
- "Expected ']' at end of object at position " +
35
- (srcEnd - srcStart).toString(),
36
- );
15
+ if (load<u16>(srcStart) != BRACKET_LEFT) throw new Error("Expected '[' at start of object at position " + (srcEnd - srcStart).toString());
16
+ if (load<u16>(srcEnd - 2) != BRACKET_RIGHT) throw new Error("Expected ']' at end of object at position " + (srcEnd - srcStart).toString());
37
17
 
38
18
  while (srcStart < srcEnd) {
39
19
  const code = load<u16>(srcStart);
@@ -1,39 +1,19 @@
1
- import {
2
- BRACE_LEFT,
3
- BRACE_RIGHT,
4
- BRACKET_LEFT,
5
- BRACKET_RIGHT,
6
- } from "../../../custom/chars";
1
+ import { BRACE_LEFT, BRACE_RIGHT, BRACKET_LEFT, BRACKET_RIGHT } from "../../../custom/chars";
7
2
  import { JSON } from "../../..";
8
3
  import { isSpace } from "util/string";
9
4
 
10
- export function deserializeObjectArray<T extends unknown[]>(
11
- srcStart: usize,
12
- srcEnd: usize,
13
- dst: usize,
14
- ): T {
15
- const out = changetype<nonnull<T>>(
16
- dst || changetype<usize>(instantiate<T>()),
17
- );
5
+ export function deserializeObjectArray<T extends unknown[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
6
+ const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
18
7
  let lastIndex: usize = 0;
19
8
  let depth: u32 = 0;
20
9
 
21
10
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
22
11
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
23
12
 
24
- if (srcStart - srcEnd == 0)
25
- throw new Error("Input string had zero length or was all whitespace");
13
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
26
14
 
27
- if (load<u16>(srcStart) != BRACKET_LEFT)
28
- throw new Error(
29
- "Expected '[' at start of object at position " +
30
- (srcEnd - srcStart).toString(),
31
- );
32
- if (load<u16>(srcEnd - 2) != BRACKET_RIGHT)
33
- throw new Error(
34
- "Expected ']' at end of object at position " +
35
- (srcEnd - srcStart).toString(),
36
- );
15
+ if (load<u16>(srcStart) != BRACKET_LEFT) throw new Error("Expected '[' at start of object at position " + (srcEnd - srcStart).toString());
16
+ if (load<u16>(srcEnd - 2) != BRACKET_RIGHT) throw new Error("Expected ']' at end of object at position " + (srcEnd - srcStart).toString());
37
17
 
38
18
  while (srcStart < srcEnd) {
39
19
  const code = load<u16>(srcStart);
@@ -1,49 +1,27 @@
1
- import { isSpace } from "../../../util";
2
- import {
3
- COMMA,
4
- BRACKET_RIGHT,
5
- QUOTE,
6
- BRACE_LEFT,
7
- BRACE_RIGHT,
8
- BRACKET_LEFT,
9
- BACK_SLASH,
10
- CHAR_T,
11
- CHAR_F,
12
- CHAR_N,
13
- } from "../../../custom/chars";
1
+ import { isSpace, isUnescapedQuote, scanStringEnd } from "../../../util";
2
+ import { COMMA, BRACKET_RIGHT, QUOTE, BRACE_LEFT, BRACE_RIGHT, BRACKET_LEFT, BACK_SLASH, CHAR_T, CHAR_F, CHAR_N } from "../../../custom/chars";
14
3
  import { JSON } from "../../..";
15
4
  import { ptrToStr } from "../../../util/ptrToStr";
16
5
 
17
- export function deserializeRawArray(
18
- srcStart: usize,
19
- srcEnd: usize,
20
- dst: usize,
21
- ): JSON.Raw[] {
6
+ export function deserializeRawArray(srcStart: usize, srcEnd: usize, dst: usize): JSON.Raw[] {
22
7
  // console.log("data: " + ptrToStr(srcStart, srcEnd));
23
- const out = changetype<JSON.Raw[]>(
24
- dst || changetype<usize>(instantiate<JSON.Raw[]>()),
25
- );
8
+ const out = changetype<JSON.Raw[]>(dst || changetype<usize>(instantiate<JSON.Raw[]>()));
26
9
  let lastIndex: usize = 0;
27
10
  let depth = 0;
28
11
  srcStart += 2;
29
12
  while (srcStart < srcEnd) {
30
13
  let code = load<u16>(srcStart);
31
- if (code == QUOTE) {
14
+ if (code == BRACKET_RIGHT) {
15
+ break;
16
+ } else if (code == COMMA || isSpace(code)) {
17
+ srcStart += 2;
18
+ continue;
19
+ } else if (code == QUOTE) {
32
20
  lastIndex = srcStart;
21
+ srcStart = scanStringEnd(srcStart, srcEnd);
22
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON array");
23
+ out.push(JSON.Raw.from(ptrToStr(lastIndex, srcStart + 2)));
33
24
  srcStart += 2;
34
- while (srcStart < srcEnd) {
35
- code = load<u16>(srcStart);
36
- if (code == QUOTE || isSpace(code)) {
37
- // console.log("Value (string): " + ptrToStr(lastIndex, srcStart));
38
- out.push(JSON.Raw.from(ptrToStr(lastIndex, srcStart + 2)));
39
- // while (isSpace(load<u16>((srcStart += 2)))) {
40
- // /* empty */
41
- // }
42
- srcStart += 4;
43
- break;
44
- }
45
- srcStart += 2;
46
- }
47
25
  } else if (code - 48 <= 9 || code == 45) {
48
26
  lastIndex = srcStart;
49
27
  srcStart += 2;
@@ -64,14 +42,8 @@ export function deserializeRawArray(
64
42
  while (srcStart < srcEnd) {
65
43
  const code = load<u16>(srcStart);
66
44
  if (code == QUOTE) {
67
- srcStart += 2;
68
- while (
69
- !(
70
- load<u16>(srcStart) == QUOTE &&
71
- load<u16>(srcStart - 2) != BACK_SLASH
72
- )
73
- )
74
- srcStart += 2;
45
+ srcStart = scanStringEnd(srcStart, srcEnd);
46
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON array");
75
47
  } else if (code == BRACE_RIGHT) {
76
48
  if (--depth == 0) {
77
49
  // console.log("Value (object): " + ptrToStr(lastIndex, srcStart + 2));
@@ -89,14 +61,8 @@ export function deserializeRawArray(
89
61
  while (srcStart < srcEnd) {
90
62
  const code = load<u16>(srcStart);
91
63
  if (code == QUOTE) {
92
- srcStart += 2;
93
- while (
94
- !(
95
- load<u16>(srcStart) == QUOTE &&
96
- load<u16>(srcStart - 2) != BACK_SLASH
97
- )
98
- )
99
- srcStart += 2;
64
+ srcStart = scanStringEnd(srcStart, srcEnd);
65
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON array");
100
66
  } else if (code == BRACKET_RIGHT) {
101
67
  if (--depth == 0) {
102
68
  // console.log("Value (array): " + ptrToStr(lastIndex, srcStart + 2));
@@ -125,17 +91,8 @@ export function deserializeRawArray(
125
91
  out.push(JSON.Raw.from("null"));
126
92
  srcStart += 10;
127
93
  }
128
- } else if (isSpace(code)) {
129
- srcStart += 2;
130
94
  } else {
131
- throw new Error(
132
- "Unexpected character in JSON object '" +
133
- String.fromCharCode(code) +
134
- "' at position " +
135
- (srcEnd - srcStart).toString() +
136
- " " +
137
- ptrToStr(lastIndex, srcStart + 10),
138
- );
95
+ throw new Error("Unexpected character in JSON object '" + String.fromCharCode(code) + "' at position " + (srcEnd - srcStart).toString() + " " + ptrToStr(lastIndex, srcStart + 10));
139
96
  }
140
97
  }
141
98
  return out;
@@ -1,14 +1,9 @@
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 deserializeStringArray(
5
- srcStart: usize,
6
- srcEnd: usize,
7
- dst: usize,
8
- ): string[] {
9
- const out = changetype<string[]>(
10
- dst || changetype<usize>(instantiate<string[]>()),
11
- );
5
+ export function deserializeStringArray(srcStart: usize, srcEnd: usize, dst: usize): string[] {
6
+ const out = changetype<string[]>(dst || changetype<usize>(instantiate<string[]>()));
12
7
  let lastPos: usize = 2;
13
8
  let inString = false;
14
9
  while (srcStart < srcEnd) {
@@ -17,7 +12,7 @@ export function deserializeStringArray(
17
12
  if (!inString) {
18
13
  inString = true;
19
14
  lastPos = srcStart;
20
- } else if (load<u16>(srcStart - 2) != BACK_SLASH) {
15
+ } else if (isUnescapedQuote(srcStart)) {
21
16
  out.push(JSON.__deserialize<string>(lastPos, srcStart + 2));
22
17
  inString = false;
23
18
  }
@@ -1,39 +1,19 @@
1
- import {
2
- BRACE_LEFT,
3
- BRACE_RIGHT,
4
- BRACKET_LEFT,
5
- BRACKET_RIGHT,
6
- } from "../../../custom/chars";
1
+ import { BRACE_LEFT, BRACE_RIGHT, BRACKET_LEFT, BRACKET_RIGHT } from "../../../custom/chars";
7
2
  import { JSON } from "../../..";
8
3
  import { isSpace } from "util/string";
9
4
 
10
- export function deserializeStructArray<T extends unknown[]>(
11
- srcStart: usize,
12
- srcEnd: usize,
13
- dst: usize,
14
- ): T {
15
- const out = changetype<nonnull<T>>(
16
- dst || changetype<usize>(instantiate<T>()),
17
- );
5
+ export function deserializeStructArray<T extends unknown[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
6
+ const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
18
7
  let lastIndex: usize = 0;
19
8
  let depth: u32 = 0;
20
9
 
21
10
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
22
11
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
23
12
 
24
- if (srcStart - srcEnd == 0)
25
- throw new Error("Input string had zero length or was all whitespace");
13
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
26
14
 
27
- if (load<u16>(srcStart) != BRACKET_LEFT)
28
- throw new Error(
29
- "Expected '[' at start of object at position " +
30
- (srcEnd - srcStart).toString(),
31
- );
32
- if (load<u16>(srcEnd - 2) != BRACKET_RIGHT)
33
- throw new Error(
34
- "Expected ']' at end of object at position " +
35
- (srcEnd - srcStart).toString(),
36
- );
15
+ if (load<u16>(srcStart) != BRACKET_LEFT) throw new Error("Expected '[' at start of object at position " + (srcEnd - srcStart).toString());
16
+ if (load<u16>(srcEnd - 2) != BRACKET_RIGHT) throw new Error("Expected ']' at end of object at position " + (srcEnd - srcStart).toString());
37
17
 
38
18
  while (srcStart < srcEnd) {
39
19
  const code = load<u16>(srcStart);
@@ -10,13 +10,10 @@ import { deserializeStringArray } from "./array/string";
10
10
  import { deserializeObjectArray } from "./array/object";
11
11
  import { deserializeBoxArray } from "./array/box";
12
12
  import { deserializeRawArray } from "./array/raw";
13
+ export { deserializeArrayField, deserializeArrayField as deserializeArrayField_SWAR } from "../swar/array";
13
14
 
14
15
  // @ts-ignore: Decorator valid here
15
- export function deserializeArray<T extends unknown[]>(
16
- srcStart: usize,
17
- srcEnd: usize,
18
- dst: usize,
19
- ): T {
16
+ export function deserializeArray<T extends unknown[]>(srcStart: usize, srcEnd: usize, dst: usize): T {
20
17
  if (isString<valueof<T>>()) {
21
18
  return <T>deserializeStringArray(srcStart, srcEnd, dst);
22
19
  } else if (isBoolean<valueof<T>>()) {
@@ -1,11 +1,7 @@
1
1
  // @ts-ignore: inline
2
- @inline export function deserializeBoolean(
3
- srcStart: usize,
4
- srcEnd: usize,
5
- ): boolean {
2
+ @inline export function deserializeBoolean(srcStart: usize, srcEnd: usize): boolean {
6
3
  const block = load<u64>(srcStart);
7
4
  if (block == 28429475166421108) return true;
8
- else if (block == 32370086184550502 && load<u16>(srcStart, 8) == 101)
9
- return false;
5
+ else if (block == 32370086184550502 && load<u16>(srcStart, 8) == 101) return false;
10
6
  return false; //throw new Error(`Expected to find boolean, but found "${data.slice(0, 100)}" instead!`);
11
7
  }
@@ -1,18 +1,6 @@
1
1
  import { JSON } from "../..";
2
- import {
3
- BACK_SLASH,
4
- COMMA,
5
- CHAR_F,
6
- BRACE_LEFT,
7
- BRACKET_LEFT,
8
- CHAR_N,
9
- QUOTE,
10
- BRACE_RIGHT,
11
- BRACKET_RIGHT,
12
- CHAR_T,
13
- COLON,
14
- } from "../../custom/chars";
15
- import { isSpace } from "../../util";
2
+ import { BACK_SLASH, COMMA, CHAR_F, BRACE_LEFT, BRACKET_LEFT, CHAR_N, QUOTE, BRACE_RIGHT, BRACKET_RIGHT, CHAR_T, COLON } from "../../custom/chars";
3
+ import { isSpace, isUnescapedQuote, scanStringEnd } from "../../util";
16
4
 
17
5
  // @ts-ignore: Decorator is valid here
18
6
  @inline function normalizeQuotes<T>(start: usize, end: usize): T {
@@ -20,21 +8,10 @@ import { isSpace } from "../../util";
20
8
  return JSON.__deserialize<T>(start, end);
21
9
  }
22
10
 
23
- export function deserializeMap<T extends Map<any, any>>(
24
- srcStart: usize,
25
- srcEnd: usize,
26
- dst: usize,
27
- ): T {
28
- const out = changetype<nonnull<T>>(
29
- dst || changetype<usize>(instantiate<T>()),
30
- );
11
+ export function deserializeMap<T extends Map<any, any>>(srcStart: usize, srcEnd: usize, dst: usize): T {
12
+ const out = changetype<nonnull<T>>(dst || changetype<usize>(instantiate<T>()));
31
13
  // @ts-ignore: type
32
- if (
33
- !isString<indexof<T>>() &&
34
- !isInteger<indexof<T>>() &&
35
- !isFloat<indexof<T>>()
36
- )
37
- throw new Error("Map key must also be a valid JSON key!");
14
+ if (!isString<indexof<T>>() && !isInteger<indexof<T>>() && !isFloat<indexof<T>>()) throw new Error("Map key must also be a valid JSON key!");
38
15
 
39
16
  let keyStart: usize = 0;
40
17
  let keyEnd: usize = 0;
@@ -45,35 +22,22 @@ export function deserializeMap<T extends Map<any, any>>(
45
22
  while (srcStart < srcEnd && isSpace(load<u16>(srcStart))) srcStart += 2;
46
23
  while (srcEnd > srcStart && isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2; // would like to optimize this later
47
24
 
48
- if (srcStart - srcEnd == 0)
49
- throw new Error("Input string had zero length or was all whitespace");
50
- if (load<u16>(srcStart) != BRACE_LEFT)
51
- throw new Error(
52
- "Expected '{' at start of object at position " +
53
- (srcEnd - srcStart).toString(),
54
- );
55
- if (load<u16>(srcEnd - 2) != BRACE_RIGHT)
56
- throw new Error(
57
- "Expected '}' at end of object at position " +
58
- (srcEnd - srcStart).toString(),
59
- );
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());
60
28
 
61
29
  srcStart += 2;
62
30
  while (srcStart < srcEnd) {
63
31
  let code = load<u16>(srcStart); // while (isSpace(code)) code = load<u16>(srcStart += 2);
64
32
  if (keyStart == 0) {
65
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
33
+ if (code == QUOTE && isUnescapedQuote(srcStart)) {
66
34
  if (isKey) {
67
35
  keyStart = lastIndex;
68
36
  keyEnd = srcStart;
69
37
  // console.log("Key: " + ptrToStr(lastIndex, srcStart));
70
38
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart + 2)));
71
39
  while (isSpace((code = load<u16>((srcStart += 2))))) {}
72
- if (code !== COLON)
73
- throw new Error(
74
- "Expected ':' after key at position " +
75
- (srcEnd - srcStart).toString(),
76
- );
40
+ if (code !== COLON) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
77
41
  isKey = false;
78
42
  } else {
79
43
  // console.log("Got key start");
@@ -86,24 +50,13 @@ export function deserializeMap<T extends Map<any, any>>(
86
50
  } else {
87
51
  if (code == QUOTE) {
88
52
  lastIndex = srcStart;
53
+ srcStart = scanStringEnd(srcStart, srcEnd);
54
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
55
+ // @ts-ignore: type
56
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(lastIndex, srcStart + 2));
89
57
  srcStart += 2;
90
- while (srcStart < srcEnd) {
91
- const code = load<u16>(srcStart);
92
- if (code == QUOTE && load<u16>(srcStart - 2) !== BACK_SLASH) {
93
- // console.log("Value (string): " + ptrToStr(lastIndex, srcStart + 2));
94
- // @ts-ignore: type
95
- out.set(
96
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
97
- JSON.__deserialize<valueof<T>>(lastIndex, srcStart + 2),
98
- );
99
- // while (isSpace(load<u16>(srcStart))) srcStart += 2;
100
- srcStart += 4;
101
- // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
102
- keyStart = 0;
103
- break;
104
- }
105
- srcStart += 2;
106
- }
58
+ keyStart = 0;
59
+ continue;
107
60
  } else if (code - 48 <= 9 || code == 45) {
108
61
  lastIndex = srcStart;
109
62
  srcStart += 2;
@@ -112,10 +65,7 @@ export function deserializeMap<T extends Map<any, any>>(
112
65
  if (code == COMMA || code == BRACE_RIGHT || isSpace(code)) {
113
66
  // console.log("Value (number): " + ptrToStr(lastIndex, srcStart));
114
67
  // @ts-ignore: type
115
- out.set(
116
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
117
- JSON.__deserialize<valueof<T>>(lastIndex, srcStart),
118
- );
68
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(lastIndex, srcStart));
119
69
  // while (isSpace(load<u16>((srcStart += 2)))) {
120
70
  // /* empty */
121
71
  // }
@@ -133,22 +83,13 @@ export function deserializeMap<T extends Map<any, any>>(
133
83
  while (srcStart < srcEnd) {
134
84
  const code = load<u16>(srcStart);
135
85
  if (code == QUOTE) {
136
- srcStart += 2;
137
- while (
138
- !(
139
- load<u16>(srcStart) == QUOTE &&
140
- load<u16>(srcStart - 2) != BACK_SLASH
141
- )
142
- )
143
- srcStart += 2;
86
+ srcStart = scanStringEnd(srcStart, srcEnd);
87
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
144
88
  } else if (code == BRACE_RIGHT) {
145
89
  if (--depth == 0) {
146
90
  // console.log("Value (object): " + ptrToStr(lastIndex, srcStart + 2));
147
91
  // @ts-ignore: type
148
- out.set(
149
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
150
- JSON.__deserialize<valueof<T>>(lastIndex, (srcStart += 2)),
151
- );
92
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(lastIndex, (srcStart += 2)));
152
93
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
153
94
  keyStart = 0;
154
95
  // while (isSpace(load<u16>(srcStart))) {
@@ -165,14 +106,14 @@ export function deserializeMap<T extends Map<any, any>>(
165
106
  srcStart += 2;
166
107
  while (srcStart < srcEnd) {
167
108
  const code = load<u16>(srcStart);
168
- if (code == BRACKET_RIGHT) {
109
+ if (code == QUOTE) {
110
+ srcStart = scanStringEnd(srcStart, srcEnd);
111
+ if (srcStart >= srcEnd) throw new Error("Unterminated string in JSON object");
112
+ } else if (code == BRACKET_RIGHT) {
169
113
  if (--depth == 0) {
170
114
  // console.log("Value (array): " + ptrToStr(lastIndex, srcStart + 2));
171
115
  // @ts-ignore: type
172
- out.set(
173
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
174
- JSON.__deserialize<valueof<T>>(lastIndex, (srcStart += 2)),
175
- );
116
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(lastIndex, (srcStart += 2)));
176
117
  // console.log("Next: " + String.fromCharCode(load<u16>(srcStart)));
177
118
  keyStart = 0;
178
119
  // while (isSpace(load<u16>((srcStart += 2)))) {
@@ -187,10 +128,7 @@ export function deserializeMap<T extends Map<any, any>>(
187
128
  if (load<u64>(srcStart) == 28429475166421108) {
188
129
  // console.log("Value (bool): " + ptrToStr(srcStart, srcStart + 8));
189
130
  // @ts-ignore: type
190
- out.set(
191
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
192
- JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 8)),
193
- );
131
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 8)));
194
132
  // while (isSpace(load<u16>((srcStart += 2)))) {
195
133
  // /* empty */
196
134
  // }
@@ -202,10 +140,7 @@ export function deserializeMap<T extends Map<any, any>>(
202
140
  if (load<u64>(srcStart, 2) == 28429466576093281) {
203
141
  // console.log("Value (bool): " + ptrToStr(srcStart, srcStart + 10));
204
142
  // @ts-ignore: type
205
- out.set(
206
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
207
- JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 10)),
208
- );
143
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 10)));
209
144
  // while (isSpace(load<u16>((srcStart += 2)))) {
210
145
  // /* empty */
211
146
  // }
@@ -217,10 +152,7 @@ export function deserializeMap<T extends Map<any, any>>(
217
152
  if (load<u64>(srcStart) == 30399761348886638) {
218
153
  // console.log("Value (null): " + ptrToStr(srcStart, srcStart + 8));
219
154
  // @ts-ignore: type
220
- out.set(
221
- normalizeQuotes<indexof<T>>(keyStart, keyEnd),
222
- JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 8)),
223
- );
155
+ out.set(normalizeQuotes<indexof<T>>(keyStart, keyEnd), JSON.__deserialize<valueof<T>>(srcStart, (srcStart += 8)));
224
156
  // while (isSpace(load<u16>((srcStart += 2)))) {
225
157
  /* empty */
226
158
  // }
@@ -231,12 +163,7 @@ export function deserializeMap<T extends Map<any, any>>(
231
163
  } else if (isSpace(code)) {
232
164
  srcStart += 2;
233
165
  } else {
234
- throw new Error(
235
- "Unexpected character in JSON object '" +
236
- String.fromCharCode(code) +
237
- "' at position " +
238
- (srcEnd - srcStart).toString(),
239
- );
166
+ throw new Error("Unexpected character in JSON object '" + String.fromCharCode(code) + "' at position " + (srcEnd - srcStart).toString());
240
167
  }
241
168
  }
242
169
  }