json-as 1.3.0 → 1.3.1

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 (256) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +96 -14
  3. package/assembly/deserialize/index/typedarray.ts +14 -0
  4. package/assembly/deserialize/simd/string.ts +3 -3
  5. package/assembly/deserialize/simple/string.ts +88 -2
  6. package/assembly/deserialize/swar/string.ts +8 -11
  7. package/assembly/index.ts +137 -181
  8. package/assembly/serialize/index/arbitrary.ts +5 -0
  9. package/assembly/serialize/index/typedarray.ts +65 -0
  10. package/assembly/serialize/simd/string.ts +3 -11
  11. package/assembly/serialize/simple/arbitrary.ts +6 -0
  12. package/assembly/serialize/simple/string.ts +3 -11
  13. package/assembly/serialize/swar/string.ts +3 -11
  14. package/assembly/util/swar.ts +49 -0
  15. package/lib/as-bs.ts +88 -69
  16. package/package.json +19 -1
  17. package/transform/lib/index.d.ts +1 -0
  18. package/transform/lib/index.d.ts.map +1 -1
  19. package/transform/lib/index.js +153 -32
  20. package/transform/lib/index.js.map +1 -1
  21. package/transform/lib/linkers/custom.d.ts.map +1 -1
  22. package/transform/lib/linkers/custom.js +7 -3
  23. package/transform/lib/linkers/custom.js.map +1 -1
  24. package/transform/lib/types.d.ts +2 -0
  25. package/transform/lib/types.d.ts.map +1 -1
  26. package/transform/lib/types.js +13 -0
  27. package/transform/lib/types.js.map +1 -1
  28. package/.as-test/coverage/naive/coverage.arbitrary.spec.ts.log.json +0 -5628
  29. package/.as-test/coverage/naive/coverage.array.spec.ts.log.json +0 -5187
  30. package/.as-test/coverage/naive/coverage.bool.spec.ts.log.json +0 -5187
  31. package/.as-test/coverage/naive/coverage.box.spec.ts.log.json +0 -5187
  32. package/.as-test/coverage/naive/coverage.custom.spec.ts.log.json +0 -5187
  33. package/.as-test/coverage/naive/coverage.date.spec.ts.log.json +0 -5187
  34. package/.as-test/coverage/naive/coverage.enum.spec.ts.log.json +0 -5187
  35. package/.as-test/coverage/naive/coverage.float.spec.ts.log.json +0 -5187
  36. package/.as-test/coverage/naive/coverage.generics.spec.ts.log.json +0 -5187
  37. package/.as-test/coverage/naive/coverage.hierarchy.spec.ts.log.json +0 -5187
  38. package/.as-test/coverage/naive/coverage.integer.spec.ts.log.json +0 -5187
  39. package/.as-test/coverage/naive/coverage.map.spec.ts.log.json +0 -5187
  40. package/.as-test/coverage/naive/coverage.namespace.spec.ts.log.json +0 -5187
  41. package/.as-test/coverage/naive/coverage.null.spec.ts.log.json +0 -5187
  42. package/.as-test/coverage/naive/coverage.raw.spec.ts.log.json +0 -5187
  43. package/.as-test/coverage/naive/coverage.resolving.spec.ts.log.json +0 -5628
  44. package/.as-test/coverage/naive/coverage.set.spec.ts.log.json +0 -5187
  45. package/.as-test/coverage/naive/coverage.staticarray.spec.ts.log.json +0 -5187
  46. package/.as-test/coverage/naive/coverage.string.spec.ts.log.json +0 -5187
  47. package/.as-test/coverage/naive/coverage.struct.spec.ts.log.json +0 -5187
  48. package/.as-test/coverage/naive/coverage.types.spec.ts.log.json +0 -5187
  49. package/.as-test/coverage/simd/coverage.arbitrary.spec.ts.log.json +0 -5628
  50. package/.as-test/coverage/simd/coverage.array.spec.ts.log.json +0 -5187
  51. package/.as-test/coverage/simd/coverage.bool.spec.ts.log.json +0 -5187
  52. package/.as-test/coverage/simd/coverage.box.spec.ts.log.json +0 -5187
  53. package/.as-test/coverage/simd/coverage.custom.spec.ts.log.json +0 -5187
  54. package/.as-test/coverage/simd/coverage.date.spec.ts.log.json +0 -5187
  55. package/.as-test/coverage/simd/coverage.enum.spec.ts.log.json +0 -5187
  56. package/.as-test/coverage/simd/coverage.float.spec.ts.log.json +0 -5187
  57. package/.as-test/coverage/simd/coverage.generics.spec.ts.log.json +0 -5187
  58. package/.as-test/coverage/simd/coverage.hierarchy.spec.ts.log.json +0 -5187
  59. package/.as-test/coverage/simd/coverage.integer.spec.ts.log.json +0 -5187
  60. package/.as-test/coverage/simd/coverage.map.spec.ts.log.json +0 -5187
  61. package/.as-test/coverage/simd/coverage.namespace.spec.ts.log.json +0 -5187
  62. package/.as-test/coverage/simd/coverage.null.spec.ts.log.json +0 -5187
  63. package/.as-test/coverage/simd/coverage.raw.spec.ts.log.json +0 -5187
  64. package/.as-test/coverage/simd/coverage.resolving.spec.ts.log.json +0 -5628
  65. package/.as-test/coverage/simd/coverage.set.spec.ts.log.json +0 -5187
  66. package/.as-test/coverage/simd/coverage.staticarray.spec.ts.log.json +0 -5187
  67. package/.as-test/coverage/simd/coverage.string.spec.ts.log.json +0 -5187
  68. package/.as-test/coverage/simd/coverage.struct.spec.ts.log.json +0 -5187
  69. package/.as-test/coverage/simd/coverage.types.spec.ts.log.json +0 -5187
  70. package/.as-test/coverage/swar/coverage.arbitrary.spec.ts.log.json +0 -5628
  71. package/.as-test/coverage/swar/coverage.array.spec.ts.log.json +0 -5187
  72. package/.as-test/coverage/swar/coverage.bool.spec.ts.log.json +0 -5187
  73. package/.as-test/coverage/swar/coverage.box.spec.ts.log.json +0 -5187
  74. package/.as-test/coverage/swar/coverage.custom.spec.ts.log.json +0 -5187
  75. package/.as-test/coverage/swar/coverage.date.spec.ts.log.json +0 -5187
  76. package/.as-test/coverage/swar/coverage.enum.spec.ts.log.json +0 -5187
  77. package/.as-test/coverage/swar/coverage.float.spec.ts.log.json +0 -5187
  78. package/.as-test/coverage/swar/coverage.generics.spec.ts.log.json +0 -5187
  79. package/.as-test/coverage/swar/coverage.hierarchy.spec.ts.log.json +0 -5187
  80. package/.as-test/coverage/swar/coverage.integer.spec.ts.log.json +0 -5187
  81. package/.as-test/coverage/swar/coverage.map.spec.ts.log.json +0 -5187
  82. package/.as-test/coverage/swar/coverage.namespace.spec.ts.log.json +0 -5187
  83. package/.as-test/coverage/swar/coverage.null.spec.ts.log.json +0 -5187
  84. package/.as-test/coverage/swar/coverage.raw.spec.ts.log.json +0 -5187
  85. package/.as-test/coverage/swar/coverage.resolving.spec.ts.log.json +0 -5628
  86. package/.as-test/coverage/swar/coverage.set.spec.ts.log.json +0 -5187
  87. package/.as-test/coverage/swar/coverage.staticarray.spec.ts.log.json +0 -5187
  88. package/.as-test/coverage/swar/coverage.string.spec.ts.log.json +0 -5187
  89. package/.as-test/coverage/swar/coverage.struct.spec.ts.log.json +0 -5187
  90. package/.as-test/coverage/swar/coverage.types.spec.ts.log.json +0 -5187
  91. package/.as-test/logs/naive/run.arbitrary.spec.ts.log.json +0 -943
  92. package/.as-test/logs/naive/run.array.spec.ts.log.json +0 -1053
  93. package/.as-test/logs/naive/run.bool.spec.ts.log.json +0 -257
  94. package/.as-test/logs/naive/run.box.spec.ts.log.json +0 -353
  95. package/.as-test/logs/naive/run.custom.spec.ts.log.json +0 -309
  96. package/.as-test/logs/naive/run.date.spec.ts.log.json +0 -397
  97. package/.as-test/logs/naive/run.enum.spec.ts.log.json +0 -343
  98. package/.as-test/logs/naive/run.float.spec.ts.log.json +0 -453
  99. package/.as-test/logs/naive/run.generics.spec.ts.log.json +0 -393
  100. package/.as-test/logs/naive/run.hierarchy.spec.ts.log.json +0 -325
  101. package/.as-test/logs/naive/run.integer.spec.ts.log.json +0 -373
  102. package/.as-test/logs/naive/run.map.spec.ts.log.json +0 -247
  103. package/.as-test/logs/naive/run.namespace.spec.ts.log.json +0 -361
  104. package/.as-test/logs/naive/run.null.spec.ts.log.json +0 -273
  105. package/.as-test/logs/naive/run.raw.spec.ts.log.json +0 -309
  106. package/.as-test/logs/naive/run.resolving.spec.ts.log.json +0 -273
  107. package/.as-test/logs/naive/run.set.spec.ts.log.json +0 -733
  108. package/.as-test/logs/naive/run.staticarray.spec.ts.log.json +0 -931
  109. package/.as-test/logs/naive/run.string.spec.ts.log.json +0 -2289
  110. package/.as-test/logs/naive/run.struct.spec.ts.log.json +0 -523
  111. package/.as-test/logs/naive/run.types.spec.ts.log.json +0 -273
  112. package/.as-test/logs/naive/test.arbitrary.spec.ts.log.json +0 -943
  113. package/.as-test/logs/naive/test.array.spec.ts.log.json +0 -1053
  114. package/.as-test/logs/naive/test.bool.spec.ts.log.json +0 -257
  115. package/.as-test/logs/naive/test.box.spec.ts.log.json +0 -353
  116. package/.as-test/logs/naive/test.custom.spec.ts.log.json +0 -309
  117. package/.as-test/logs/naive/test.date.spec.ts.log.json +0 -397
  118. package/.as-test/logs/naive/test.enum.spec.ts.log.json +0 -343
  119. package/.as-test/logs/naive/test.float.spec.ts.log.json +0 -453
  120. package/.as-test/logs/naive/test.generics.spec.ts.log.json +0 -393
  121. package/.as-test/logs/naive/test.hierarchy.spec.ts.log.json +0 -325
  122. package/.as-test/logs/naive/test.integer.spec.ts.log.json +0 -373
  123. package/.as-test/logs/naive/test.log.json +0 -2289
  124. package/.as-test/logs/naive/test.map.spec.ts.log.json +0 -247
  125. package/.as-test/logs/naive/test.namespace.spec.ts.log.json +0 -361
  126. package/.as-test/logs/naive/test.null.spec.ts.log.json +0 -273
  127. package/.as-test/logs/naive/test.raw.spec.ts.log.json +0 -309
  128. package/.as-test/logs/naive/test.resolving.spec.ts.log.json +0 -273
  129. package/.as-test/logs/naive/test.set.spec.ts.log.json +0 -733
  130. package/.as-test/logs/naive/test.staticarray.spec.ts.log.json +0 -931
  131. package/.as-test/logs/naive/test.string.spec.ts.log.json +0 -2345
  132. package/.as-test/logs/naive/test.struct.spec.ts.log.json +0 -523
  133. package/.as-test/logs/naive/test.types.spec.ts.log.json +0 -273
  134. package/.as-test/logs/simd/run.arbitrary.spec.ts.log.json +0 -943
  135. package/.as-test/logs/simd/run.array.spec.ts.log.json +0 -1053
  136. package/.as-test/logs/simd/run.bool.spec.ts.log.json +0 -257
  137. package/.as-test/logs/simd/run.box.spec.ts.log.json +0 -353
  138. package/.as-test/logs/simd/run.custom.spec.ts.log.json +0 -309
  139. package/.as-test/logs/simd/run.date.spec.ts.log.json +0 -397
  140. package/.as-test/logs/simd/run.enum.spec.ts.log.json +0 -343
  141. package/.as-test/logs/simd/run.float.spec.ts.log.json +0 -453
  142. package/.as-test/logs/simd/run.generics.spec.ts.log.json +0 -393
  143. package/.as-test/logs/simd/run.hierarchy.spec.ts.log.json +0 -325
  144. package/.as-test/logs/simd/run.integer.spec.ts.log.json +0 -373
  145. package/.as-test/logs/simd/run.map.spec.ts.log.json +0 -247
  146. package/.as-test/logs/simd/run.namespace.spec.ts.log.json +0 -361
  147. package/.as-test/logs/simd/run.null.spec.ts.log.json +0 -273
  148. package/.as-test/logs/simd/run.raw.spec.ts.log.json +0 -309
  149. package/.as-test/logs/simd/run.resolving.spec.ts.log.json +0 -273
  150. package/.as-test/logs/simd/run.set.spec.ts.log.json +0 -733
  151. package/.as-test/logs/simd/run.staticarray.spec.ts.log.json +0 -931
  152. package/.as-test/logs/simd/run.string.spec.ts.log.json +0 -2289
  153. package/.as-test/logs/simd/run.struct.spec.ts.log.json +0 -523
  154. package/.as-test/logs/simd/run.types.spec.ts.log.json +0 -273
  155. package/.as-test/logs/simd/test.arbitrary.spec.ts.log.json +0 -943
  156. package/.as-test/logs/simd/test.array.spec.ts.log.json +0 -1053
  157. package/.as-test/logs/simd/test.bool.spec.ts.log.json +0 -257
  158. package/.as-test/logs/simd/test.box.spec.ts.log.json +0 -353
  159. package/.as-test/logs/simd/test.custom.spec.ts.log.json +0 -309
  160. package/.as-test/logs/simd/test.date.spec.ts.log.json +0 -397
  161. package/.as-test/logs/simd/test.enum.spec.ts.log.json +0 -343
  162. package/.as-test/logs/simd/test.float.spec.ts.log.json +0 -453
  163. package/.as-test/logs/simd/test.generics.spec.ts.log.json +0 -393
  164. package/.as-test/logs/simd/test.hierarchy.spec.ts.log.json +0 -325
  165. package/.as-test/logs/simd/test.integer.spec.ts.log.json +0 -373
  166. package/.as-test/logs/simd/test.log.json +0 -11371
  167. package/.as-test/logs/simd/test.map.spec.ts.log.json +0 -247
  168. package/.as-test/logs/simd/test.namespace.spec.ts.log.json +0 -361
  169. package/.as-test/logs/simd/test.null.spec.ts.log.json +0 -273
  170. package/.as-test/logs/simd/test.raw.spec.ts.log.json +0 -309
  171. package/.as-test/logs/simd/test.resolving.spec.ts.log.json +0 -273
  172. package/.as-test/logs/simd/test.set.spec.ts.log.json +0 -733
  173. package/.as-test/logs/simd/test.staticarray.spec.ts.log.json +0 -931
  174. package/.as-test/logs/simd/test.string.spec.ts.log.json +0 -2345
  175. package/.as-test/logs/simd/test.struct.spec.ts.log.json +0 -523
  176. package/.as-test/logs/simd/test.types.spec.ts.log.json +0 -273
  177. package/.as-test/logs/swar/run.arbitrary.spec.ts.log.json +0 -943
  178. package/.as-test/logs/swar/run.array.spec.ts.log.json +0 -1053
  179. package/.as-test/logs/swar/run.bool.spec.ts.log.json +0 -257
  180. package/.as-test/logs/swar/run.box.spec.ts.log.json +0 -353
  181. package/.as-test/logs/swar/run.custom.spec.ts.log.json +0 -309
  182. package/.as-test/logs/swar/run.date.spec.ts.log.json +0 -397
  183. package/.as-test/logs/swar/run.enum.spec.ts.log.json +0 -343
  184. package/.as-test/logs/swar/run.float.spec.ts.log.json +0 -453
  185. package/.as-test/logs/swar/run.generics.spec.ts.log.json +0 -393
  186. package/.as-test/logs/swar/run.hierarchy.spec.ts.log.json +0 -325
  187. package/.as-test/logs/swar/run.integer.spec.ts.log.json +0 -373
  188. package/.as-test/logs/swar/run.map.spec.ts.log.json +0 -247
  189. package/.as-test/logs/swar/run.namespace.spec.ts.log.json +0 -361
  190. package/.as-test/logs/swar/run.null.spec.ts.log.json +0 -273
  191. package/.as-test/logs/swar/run.raw.spec.ts.log.json +0 -309
  192. package/.as-test/logs/swar/run.resolving.spec.ts.log.json +0 -273
  193. package/.as-test/logs/swar/run.set.spec.ts.log.json +0 -733
  194. package/.as-test/logs/swar/run.staticarray.spec.ts.log.json +0 -931
  195. package/.as-test/logs/swar/run.string.spec.ts.log.json +0 -2289
  196. package/.as-test/logs/swar/run.struct.spec.ts.log.json +0 -523
  197. package/.as-test/logs/swar/run.types.spec.ts.log.json +0 -273
  198. package/.as-test/logs/swar/test.arbitrary.spec.ts.log.json +0 -943
  199. package/.as-test/logs/swar/test.array.spec.ts.log.json +0 -1053
  200. package/.as-test/logs/swar/test.bool.spec.ts.log.json +0 -257
  201. package/.as-test/logs/swar/test.box.spec.ts.log.json +0 -353
  202. package/.as-test/logs/swar/test.custom.spec.ts.log.json +0 -309
  203. package/.as-test/logs/swar/test.date.spec.ts.log.json +0 -397
  204. package/.as-test/logs/swar/test.enum.spec.ts.log.json +0 -343
  205. package/.as-test/logs/swar/test.float.spec.ts.log.json +0 -453
  206. package/.as-test/logs/swar/test.generics.spec.ts.log.json +0 -393
  207. package/.as-test/logs/swar/test.hierarchy.spec.ts.log.json +0 -325
  208. package/.as-test/logs/swar/test.integer.spec.ts.log.json +0 -373
  209. package/.as-test/logs/swar/test.log.json +0 -11371
  210. package/.as-test/logs/swar/test.map.spec.ts.log.json +0 -247
  211. package/.as-test/logs/swar/test.namespace.spec.ts.log.json +0 -361
  212. package/.as-test/logs/swar/test.null.spec.ts.log.json +0 -273
  213. package/.as-test/logs/swar/test.raw.spec.ts.log.json +0 -309
  214. package/.as-test/logs/swar/test.resolving.spec.ts.log.json +0 -273
  215. package/.as-test/logs/swar/test.set.spec.ts.log.json +0 -733
  216. package/.as-test/logs/swar/test.staticarray.spec.ts.log.json +0 -931
  217. package/.as-test/logs/swar/test.string.spec.ts.log.json +0 -2345
  218. package/.as-test/logs/swar/test.struct.spec.ts.log.json +0 -523
  219. package/.as-test/logs/swar/test.types.spec.ts.log.json +0 -273
  220. package/.as-test/logs/test.arbitrary.spec.ts.log.json +0 -943
  221. package/.as-test/logs/test.array.spec.ts.log.json +0 -1053
  222. package/.as-test/logs/test.bool.spec.ts.log.json +0 -257
  223. package/.as-test/logs/test.box.spec.ts.log.json +0 -353
  224. package/.as-test/logs/test.custom.spec.ts.log.json +0 -309
  225. package/.as-test/logs/test.date.spec.ts.log.json +0 -397
  226. package/.as-test/logs/test.enum.spec.ts.log.json +0 -343
  227. package/.as-test/logs/test.float.spec.ts.log.json +0 -453
  228. package/.as-test/logs/test.generics.spec.ts.log.json +0 -393
  229. package/.as-test/logs/test.hierarchy.spec.ts.log.json +0 -325
  230. package/.as-test/logs/test.integer.spec.ts.log.json +0 -373
  231. package/.as-test/logs/test.log.json +0 -11371
  232. package/.as-test/logs/test.map.spec.ts.log.json +0 -247
  233. package/.as-test/logs/test.namespace.spec.ts.log.json +0 -361
  234. package/.as-test/logs/test.null.spec.ts.log.json +0 -273
  235. package/.as-test/logs/test.raw.spec.ts.log.json +0 -309
  236. package/.as-test/logs/test.resolving.spec.ts.log.json +0 -273
  237. package/.as-test/logs/test.set.spec.ts.log.json +0 -733
  238. package/.as-test/logs/test.staticarray.spec.ts.log.json +0 -931
  239. package/.as-test/logs/test.string.spec.ts.log.json +0 -2289
  240. package/.as-test/logs/test.struct.spec.ts.log.json +0 -523
  241. package/.as-test/logs/test.types.spec.ts.log.json +0 -273
  242. package/.as-test/runners/default.bindings.js +0 -68
  243. package/.as-test/runners/default.wasi.js +0 -38
  244. package/ARCHITECTURE.md +0 -323
  245. package/CONTRIBUTING.md +0 -244
  246. package/TODO +0 -1
  247. package/as-test.config.json +0 -40
  248. package/assembly/test.ts +0 -24
  249. package/eslint.config.js +0 -68
  250. package/lib/tsconfig.json +0 -8
  251. package/test.ts +0 -99
  252. package/tools/assemblyscript-eslint-local.js +0 -6
  253. package/tools/assemblyscript-eslint.js +0 -53
  254. package/tools/assemblyscript-prettier-plugin.js +0 -33
  255. package/tools/replacer.js +0 -63
  256. package/transform/tsconfig.json +0 -35
@@ -7,6 +7,7 @@ import { serializeInteger } from "./integer";
7
7
  import { serializeMap } from "./map";
8
8
  import { serializeObject } from "./object";
9
9
  import { serializeString } from "./string";
10
+ import { serializeDynamic } from "./typedarray";
10
11
 
11
12
  export function serializeArbitrary(src: JSON.Value): void {
12
13
  switch (src.type) {
@@ -60,6 +61,10 @@ export function serializeArbitrary(src: JSON.Value): void {
60
61
  case JSON.Types.Map:
61
62
  serializeMap(src.get<Map<string, JSON.Value>>());
62
63
  break;
64
+ case JSON.Types.TypedArray:
65
+ case JSON.Types.ArrayBuffer:
66
+ serializeDynamic(src.type, src.get<usize>());
67
+ break;
63
68
  default: {
64
69
  const fn = JSON.Value.METHODS.get(src.type - JSON.Types.Struct);
65
70
  const ptr = src.get<usize>();
@@ -1 +1,66 @@
1
+ import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
2
+ import { JSON } from "../..";
1
3
  export { serializeArrayBufferUnsafe, serializeTypedArray } from "../simple/typedarray";
4
+ import { serializeArrayBufferUnsafe, serializeTypedArray } from "../simple/typedarray";
5
+
6
+
7
+ @inline export function serializeDynamic(type: u16, data: usize): void {
8
+ if (type == JSON.Types.ArrayBuffer) {
9
+ serializeArrayBufferUnsafe(data, changetype<OBJECT>(data - TOTAL_OVERHEAD).rtSize);
10
+ } else if (type == JSON.Types.TypedArray) {
11
+ const id = changetype<OBJECT>(data - TOTAL_OVERHEAD).rtId;
12
+ if (id == idof<Int8Array>()) {
13
+ serializeTypedArray<Int8Array>(changetype<Int8Array>(data));
14
+ } else if (id == idof<Uint8Array>()) {
15
+ serializeTypedArray<Uint8Array>(changetype<Uint8Array>(data));
16
+ } else if (id == idof<Uint8ClampedArray>()) {
17
+ serializeTypedArray<Uint8ClampedArray>(changetype<Uint8ClampedArray>(data));
18
+ } else if (id == idof<Int16Array>()) {
19
+ serializeTypedArray<Int16Array>(changetype<Int16Array>(data));
20
+ } else if (id == idof<Uint16Array>()) {
21
+ serializeTypedArray<Uint16Array>(changetype<Uint16Array>(data));
22
+ } else if (id == idof<Int32Array>()) {
23
+ serializeTypedArray<Int32Array>(changetype<Int32Array>(data));
24
+ } else if (id == idof<Uint32Array>()) {
25
+ serializeTypedArray<Uint32Array>(changetype<Uint32Array>(data));
26
+ } else if (id == idof<Int64Array>()) {
27
+ serializeTypedArray<Int64Array>(changetype<Int64Array>(data));
28
+ } else if (id == idof<Uint64Array>()) {
29
+ serializeTypedArray<Uint64Array>(changetype<Uint64Array>(data));
30
+ } else if (id == idof<Float32Array>()) {
31
+ serializeTypedArray<Float32Array>(changetype<Float32Array>(data));
32
+ } else if (id == idof<Float64Array>()) {
33
+ serializeTypedArray<Float64Array>(changetype<Float64Array>(data));
34
+ } else if (changetype<Int8Array>(data) instanceof Int8Array) {
35
+ serializeTypedArray<Int8Array>(changetype<Int8Array>(data));
36
+ } else if (changetype<Uint8Array>(data) instanceof Uint8Array) {
37
+ serializeTypedArray<Uint8Array>(changetype<Uint8Array>(data));
38
+ } else if (changetype<Uint8ClampedArray>(data) instanceof Uint8ClampedArray) {
39
+ serializeTypedArray<Uint8ClampedArray>(changetype<Uint8ClampedArray>(data));
40
+ } else if (changetype<Int16Array>(data) instanceof Int16Array) {
41
+ serializeTypedArray<Int16Array>(changetype<Int16Array>(data));
42
+ } else if (changetype<Uint16Array>(data) instanceof Uint16Array) {
43
+ serializeTypedArray<Uint16Array>(changetype<Uint16Array>(data));
44
+ } else if (changetype<Int32Array>(data) instanceof Int32Array) {
45
+ serializeTypedArray<Int32Array>(changetype<Int32Array>(data));
46
+ } else if (changetype<Uint32Array>(data) instanceof Uint32Array) {
47
+ serializeTypedArray<Uint32Array>(changetype<Uint32Array>(data));
48
+ } else if (changetype<Int64Array>(data) instanceof Int64Array) {
49
+ serializeTypedArray<Int64Array>(changetype<Int64Array>(data));
50
+ } else if (changetype<Uint64Array>(data) instanceof Uint64Array) {
51
+ serializeTypedArray<Uint64Array>(changetype<Uint64Array>(data));
52
+ } else if (changetype<Float32Array>(data) instanceof Float32Array) {
53
+ serializeTypedArray<Float32Array>(changetype<Float32Array>(data));
54
+ } else if (changetype<Float64Array>(data) instanceof Float64Array) {
55
+ serializeTypedArray<Float64Array>(changetype<Float64Array>(data));
56
+ } else {
57
+ throw new Error("Unsupported typed array in JSON.Value");
58
+ }
59
+ }
60
+ }
61
+
62
+
63
+ @inline export function serializeArrayBuffer(data: ArrayBuffer): void {
64
+ const dataStart = changetype<usize>(data);
65
+ serializeArrayBufferUnsafe(dataStart, changetype<OBJECT>(dataStart - TOTAL_OVERHEAD).rtSize);
66
+ }
@@ -2,6 +2,7 @@ import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
2
2
  import { bs, sc } from "../../../lib/as-bs";
3
3
  import { BACK_SLASH } from "../../custom/chars";
4
4
  import { SERIALIZE_ESCAPE_TABLE } from "../../globals/tables";
5
+ import { u16_to_hex4_swar } from "../../util/swar";
5
6
  // @ts-expect-error: @lazy is a valid decorator
6
7
  @lazy const U00_MARKER = 13511005048209500;
7
8
  // @ts-expect-error: @lazy is a valid decorator
@@ -118,7 +119,7 @@ export function serializeString_SIMD(src: string): void {
118
119
  // unpaired high/low surrogate
119
120
  const dstIdx = bs.offset + laneIdx - 1;
120
121
  store<u32>(dstIdx, U_MARKER); // \u
121
- store<u64>(dstIdx, load<u64>(changetype<usize>(code.toString(16))), 4);
122
+ store<u64>(dstIdx, u16_to_hex4_swar(code), 4);
122
123
  // memory.copy(dstIdx + 12, srcIdx + 1, 15 - laneIdx);
123
124
  store<v128>(dstIdx, load<v128>(srcIdx, 1), 12);
124
125
  bs.offset += 10;
@@ -181,15 +182,6 @@ export function serializeString_SIMD(src: string): void {
181
182
  @inline function write_u_escape(code: u16): void {
182
183
  bs.growSize(10);
183
184
  store<u32>(bs.offset, U_MARKER); // "\u"
184
- // write hex digits (lowercase, matches tests)
185
- store<u16>(bs.offset + 4, hexNibble((code >> 12) & 0xf));
186
- store<u16>(bs.offset + 6, hexNibble((code >> 8) & 0xf));
187
- store<u16>(bs.offset + 8, hexNibble((code >> 4) & 0xf));
188
- store<u16>(bs.offset + 10, hexNibble(code & 0xf));
185
+ store<u64>(bs.offset, u16_to_hex4_swar(code), 4);
189
186
  bs.offset += 12;
190
187
  }
191
-
192
- // @ts-expect-error: @inline is a valid decorator
193
- @inline function hexNibble(n: u16): u16 {
194
- return n < 10 ? 48 + n : 87 + n;
195
- }
@@ -7,6 +7,7 @@ import { serializeInteger } from "./integer";
7
7
  import { serializeMap } from "./map";
8
8
  import { serializeObject } from "./object";
9
9
  import { serializeString } from "./string";
10
+ import { serializeDynamic } from "../index/typedarray";
10
11
 
11
12
  export function serializeArbitrary(src: JSON.Value): void {
12
13
  switch (src.type) {
@@ -63,6 +64,11 @@ export function serializeArbitrary(src: JSON.Value): void {
63
64
  serializeMap(src.get<Map<string, JSON.Value>>());
64
65
  break;
65
66
  }
67
+ case JSON.Types.TypedArray:
68
+ case JSON.Types.ArrayBuffer: {
69
+ serializeDynamic(src.type, src.get<usize>());
70
+ break;
71
+ }
66
72
  default: {
67
73
  const fn = JSON.Value.METHODS.get(src.type - JSON.Types.Struct);
68
74
  const ptr = src.get<usize>();
@@ -3,6 +3,7 @@ import { _intTo16 } from "../../custom/util";
3
3
  import { bytes } from "../../util/bytes";
4
4
  import { BACK_SLASH, QUOTE } from "../../custom/chars";
5
5
  import { SERIALIZE_ESCAPE_TABLE } from "../../globals/tables";
6
+ import { u16_to_hex4_swar } from "../../util/swar";
6
7
  import { serializeStruct } from "./struct";
7
8
 
8
9
  // @ts-ignore: decorator allowed
@@ -68,7 +69,7 @@ import { serializeStruct } from "./struct";
68
69
  // unpaired high/low surrogate
69
70
  bs.growSize(10);
70
71
  store<u32>(bs.offset, U_MARKER); // \u
71
- store<u64>(bs.offset, load<u64>(changetype<usize>(code.toString(16))), 4);
72
+ store<u64>(bs.offset, u16_to_hex4_swar(code), 4);
72
73
  bs.offset += 12;
73
74
  lastPtr = srcPtr;
74
75
  continue;
@@ -84,15 +85,6 @@ import { serializeStruct } from "./struct";
84
85
  @inline function write_u_escape(code: u16): void {
85
86
  bs.growSize(10);
86
87
  store<u32>(bs.offset, U_MARKER); // "\u"
87
- // write hex digits (lowercase, matches tests)
88
- store<u16>(bs.offset + 4, hexNibble((code >> 12) & 0xf));
89
- store<u16>(bs.offset + 6, hexNibble((code >> 8) & 0xf));
90
- store<u16>(bs.offset + 8, hexNibble((code >> 4) & 0xf));
91
- store<u16>(bs.offset + 10, hexNibble(code & 0xf));
88
+ store<u64>(bs.offset, u16_to_hex4_swar(code), 4);
92
89
  bs.offset += 12;
93
90
  }
94
-
95
- // @ts-ignore: inline
96
- @inline function hexNibble(n: u16): u16 {
97
- return n < 10 ? 48 + n : 87 + n;
98
- }
@@ -1,6 +1,7 @@
1
1
  import { bs, sc } from "../../../lib/as-bs";
2
2
  import { BACK_SLASH } from "../../custom/chars";
3
3
  import { SERIALIZE_ESCAPE_TABLE } from "../../globals/tables";
4
+ import { u16_to_hex4_swar } from "../../util/swar";
4
5
  import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
5
6
 
6
7
  // @ts-expect-error: @lazy is a valid decorator
@@ -89,7 +90,7 @@ export function serializeString_SWAR(src: string): void {
89
90
  // unpaired high/low surrogate
90
91
  const dstIdx = bs.offset + laneIdx - 1;
91
92
  store<u32>(dstIdx, U_MARKER); // \u
92
- store<u64>(dstIdx, load<u64>(changetype<usize>(code.toString(16))), 4);
93
+ store<u64>(dstIdx, u16_to_hex4_swar(code), 4);
93
94
  store<u64>(dstIdx, load<u64>(srcIdx, 1), 12);
94
95
  bs.offset += 10;
95
96
  } while (mask !== 0);
@@ -152,19 +153,10 @@ export function serializeString_SWAR(src: string): void {
152
153
  @inline function write_u_escape(code: u16): void {
153
154
  bs.growSize(10);
154
155
  store<u32>(bs.offset, U_MARKER); // "\u"
155
- // write hex digits (lowercase, matches tests)
156
- store<u16>(bs.offset + 4, hexNibble((code >> 12) & 0xf));
157
- store<u16>(bs.offset + 6, hexNibble((code >> 8) & 0xf));
158
- store<u16>(bs.offset + 8, hexNibble((code >> 4) & 0xf));
159
- store<u16>(bs.offset + 10, hexNibble(code & 0xf));
156
+ store<u64>(bs.offset, u16_to_hex4_swar(code), 4);
160
157
  bs.offset += 12;
161
158
  }
162
159
 
163
- // @ts-expect-error: @inline is a valid decorator
164
- @inline function hexNibble(n: u16): u16 {
165
- return n < 10 ? 48 + n : 87 + n;
166
- }
167
-
168
160
  // @ts-expect-error: @inline is a valid decorator
169
161
  @inline export function detect_escapable_u64_swar_safe(block: u64): u64 {
170
162
  const lo = block & 0x00ff_00ff_00ff_00ff;
@@ -1,3 +1,23 @@
1
+ /**
2
+ * Decode four lowercase ASCII hex digits packed into UTF-16 lanes into one `u16`.
3
+ *
4
+ * The input is a `u64` whose four 16-bit lanes each contain one ASCII hex code
5
+ * unit in the low byte:
6
+ *
7
+ * - lane 0: most-significant hex digit
8
+ * - lane 1: next hex digit
9
+ * - lane 2: next hex digit
10
+ * - lane 3: least-significant hex digit
11
+ *
12
+ * For example, `0x0034_0033_0032_0031` represents the UTF-16 string `"1234"`
13
+ * and decodes to `0x1234`.
14
+ *
15
+ * This helper assumes the digits are already valid lowercase hexadecimal
16
+ * characters in the ranges `0-9` or `a-f`.
17
+ *
18
+ * @param block Packed UTF-16 ASCII hex digits.
19
+ * @returns The decoded 16-bit value.
20
+ */
1
21
  // @ts-expect-error: @inline is a valid decorator
2
22
  @inline export function hex4_to_u16_swar(block: u64): u16 {
3
23
  // (c & 0xF) + 9 * (c >> 6)
@@ -5,3 +25,32 @@
5
25
 
6
26
  return <u16>(((block >> 0) << 12) | ((block >> 16) << 8) | ((block >> 32) << 4) | (block >> 48));
7
27
  }
28
+
29
+ /**
30
+ * Encode one `u16` into four lowercase ASCII hex digits packed into UTF-16 lanes.
31
+ *
32
+ * The returned `u64` is laid out so it can be written directly as four UTF-16
33
+ * code units:
34
+ *
35
+ * - lane 0: most-significant hex digit
36
+ * - lane 1: next hex digit
37
+ * - lane 2: next hex digit
38
+ * - lane 3: least-significant hex digit
39
+ *
40
+ * Each lane stores the ASCII character in the low byte and zero in the high
41
+ * byte. For example, `0x1234` becomes `0x0034_0033_0032_0031`, which
42
+ * represents the UTF-16 string `"1234"`.
43
+ *
44
+ * This helper is the inverse of {@link hex4_to_u16_swar}.
45
+ *
46
+ * @param code The 16-bit value to encode.
47
+ * @returns Four packed UTF-16 ASCII hex digits.
48
+ */
49
+ // @ts-expect-error: @inline is a valid decorator
50
+ @inline export function u16_to_hex4_swar(code: u16): u64 {
51
+ let block = (<u64>((code >> 12) & 0xf)) | ((<u64>((code >> 8) & 0xf)) << 16) | ((<u64>((code >> 4) & 0xf)) << 32) | ((<u64>(code & 0xf)) << 48);
52
+
53
+ const alphaMask = ((block + 0x0006_0006_0006_0006) >> 4) & 0x0001_0001_0001_0001;
54
+ block += 0x0030_0030_0030_0030 + alphaMask * 39;
55
+ return block;
56
+ }
package/lib/as-bs.ts CHANGED
@@ -3,7 +3,7 @@ import { heap } from "memory";
3
3
 
4
4
  // Buffer management constants
5
5
  const SHRINK_EVERY_N_MASK: usize = 255; // check every 256 outputs
6
- const MIN_BUFFER_SIZE: usize = 128;
6
+ const MIN_BUFFER_SIZE: usize = 1024;
7
7
 
8
8
  // Exponential moving average smoothing factor (0.0 to 1.0)
9
9
  // Higher values = more responsive to recent sizes, lower = more stable
@@ -26,8 +26,8 @@ export namespace bs {
26
26
  /** Proposed size of output */
27
27
  export let stackSize: usize = 0;
28
28
 
29
- let pauseOffset: usize = 0;
30
- let pauseStackSize: usize = 0;
29
+ let pauseOffsets = new Array<usize>();
30
+ let pauseStackSizes = new Array<usize>();
31
31
 
32
32
  // Exponential moving average of output sizes for adaptive buffer sizing
33
33
  // This provides smoother adaptation than simple averaging
@@ -50,10 +50,9 @@ export namespace bs {
50
50
  // @ts-expect-error: @inline is a valid decorator
51
51
  @inline function renewBuffer(newSize: usize): void {
52
52
  const oldPtr = buffer;
53
+ const relOffset = offset - oldPtr;
53
54
  const newPtr = heap.realloc(oldPtr, newSize);
54
- const delta = newPtr - oldPtr;
55
- offset += delta;
56
- if (pauseOffset != 0) pauseOffset += delta;
55
+ offset = newPtr + relOffset;
57
56
  buffer = newPtr;
58
57
  bufferSize = newSize;
59
58
  }
@@ -81,24 +80,13 @@ export namespace bs {
81
80
 
82
81
  export let cacheOutput: usize = 0;
83
82
  export let cacheOutputLen: usize = 0;
84
-
85
- // @ts-expect-error: @inline is a valid decorator
86
- @inline export function digestArena(): void {
87
- if (cacheOutput === 0) return;
88
- const len = cacheOutputLen;
89
- proposeSize(<u32>len);
90
- memory.copy(offset, cacheOutput, len);
91
- offset += len;
92
- bs.cacheOutput = 0;
93
- bs.cacheOutputLen = 0;
94
- }
95
83
  /**
96
84
  * Stores the state of the buffer, allowing further changes to be reset
97
85
  */
98
86
  // @ts-expect-error: @inline is a valid decorator
99
87
  @inline export function saveState(): void {
100
- pauseOffset = offset;
101
- pauseStackSize = stackSize;
88
+ pauseOffsets.push(offset - buffer);
89
+ pauseStackSizes.push(stackSize);
102
90
  }
103
91
 
104
92
  /**
@@ -107,19 +95,13 @@ export namespace bs {
107
95
  */
108
96
  // @ts-expect-error: @inline is a valid decorator
109
97
  @inline export function loadState(): void {
110
- offset = pauseOffset;
111
- stackSize = pauseStackSize;
112
- }
113
-
114
- /**
115
- * Resets the buffer to the state it was in when `pause()` was called.
116
- * This allows for changes made after the pause to be discarded.
117
- */
118
- // @ts-expect-error: @inline is a valid decorator
119
- @inline export function resetState(): void {
120
- offset = pauseOffset;
121
- stackSize = pauseStackSize;
122
- pauseOffset = 0;
98
+ const length = pauseOffsets.length;
99
+ if (length == 0) return;
100
+ const index = length - 1;
101
+ offset = buffer + unchecked(pauseOffsets[index]);
102
+ stackSize = unchecked(pauseStackSizes[index]);
103
+ pauseOffsets.length = index;
104
+ pauseStackSizes.length = index;
123
105
  }
124
106
 
125
107
  /**
@@ -161,13 +143,28 @@ export namespace bs {
161
143
  // @ts-expect-error: @inline is a valid decorator
162
144
  @inline export function resize(newSize: u32): void {
163
145
  const oldPtr = buffer;
146
+ const relOffset = offset - oldPtr;
164
147
  const newPtr = heap.realloc(buffer, newSize);
165
- const delta = newPtr - oldPtr;
166
- if (pauseOffset != 0) pauseOffset += delta;
167
148
  buffer = newPtr;
168
149
  bufferSize = newSize;
169
- offset = buffer;
170
- stackSize = 0;
150
+ offset = buffer + relOffset;
151
+ }
152
+
153
+ /**
154
+ * Shrinks the buffer using the same adaptive sizing policy as normal output
155
+ * finalization. Keeps enough capacity for the recent typical output size while
156
+ * releasing clearly excess memory.
157
+ */
158
+ // @ts-expect-error: @inline is a valid decorator
159
+ @inline export function shrink(): void {
160
+ let next = typicalSize << 1;
161
+ if (next < MIN_BUFFER_SIZE) next = MIN_BUFFER_SIZE;
162
+ if (bufferSize > next) {
163
+ resize(u32(next));
164
+ } else {
165
+ offset = buffer;
166
+ stackSize = 0;
167
+ }
171
168
  }
172
169
 
173
170
  /**
@@ -176,13 +173,14 @@ export namespace bs {
176
173
  */
177
174
  // @ts-expect-error: @inline is a valid decorator
178
175
  @inline export function cpyOut<T>(): T {
179
- if (pauseOffset == 0) {
176
+ if (pauseOffsets.length == 0) {
180
177
  const len = offset - buffer;
181
178
  // @ts-expect-error: __new is a runtime builtin
182
179
  const _out = __new(len, idof<T>());
183
180
  memory.copy(_out, buffer, len);
184
181
  return changetype<T>(_out);
185
182
  } else {
183
+ const pauseOffset = buffer + unchecked(pauseOffsets[pauseOffsets.length - 1]);
186
184
  const len = offset - pauseOffset;
187
185
  // @ts-expect-error: __new is a runtime builtin
188
186
  const _out = __new(len, idof<T>());
@@ -192,6 +190,59 @@ export namespace bs {
192
190
  }
193
191
  }
194
192
 
193
+ /**
194
+ * Copies the slice starting at a caller-provided relative buffer offset and restores
195
+ * `offset` back to that slice start.
196
+ *
197
+ * This is intended for deserializers that borrow `bs` as temporary scratch space and
198
+ * already know their local slice start as `bs.offset - bs.buffer`.
199
+ *
200
+ * Note: this restores only `offset`. Deserialization paths do not currently depend on
201
+ * `stackSize`, which is tracked for serialization growth heuristics.
202
+ */
203
+ // @ts-expect-error: @inline is a valid decorator
204
+ @inline export function sliceOut<T>(start: usize): T {
205
+ const sliceStart = buffer + start;
206
+ const len = offset - sliceStart;
207
+ // @ts-expect-error: __new is a runtime builtin
208
+ const _out = __new(len, idof<T>());
209
+ memory.copy(_out, sliceStart, len);
210
+ offset = sliceStart;
211
+ return changetype<T>(_out);
212
+ }
213
+
214
+ /**
215
+ * Copies the slice starting at a caller-provided relative buffer offset into a string field
216
+ * and restores `offset` back to that slice start.
217
+ */
218
+ // @ts-expect-error: @inline is a valid decorator
219
+ @inline export function toField(start: usize, dstFieldPtr: usize): void {
220
+ const sliceStart = buffer + start;
221
+ const byteLength = <u32>(offset - sliceStart);
222
+ if (byteLength == 0) {
223
+ store<usize>(dstFieldPtr, changetype<usize>(""));
224
+ offset = sliceStart;
225
+ return;
226
+ }
227
+
228
+ const current = load<usize>(dstFieldPtr);
229
+ let stringPtr: usize;
230
+ if (current != 0 && changetype<OBJECT>(current - TOTAL_OVERHEAD).rtSize == byteLength) {
231
+ stringPtr = current;
232
+ } else if (current != 0 && current != changetype<usize>("")) {
233
+ // @ts-expect-error: __renew is a runtime builtin
234
+ stringPtr = __renew(current, byteLength);
235
+ store<usize>(dstFieldPtr, stringPtr);
236
+ } else {
237
+ // @ts-expect-error: __new is a runtime builtin
238
+ stringPtr = __new(byteLength, idof<string>());
239
+ store<usize>(dstFieldPtr, stringPtr);
240
+ }
241
+
242
+ memory.copy(stringPtr, sliceStart, byteLength);
243
+ offset = sliceStart;
244
+ }
245
+
195
246
  /**
196
247
  * Copies the buffer's content to a new object of a specified type.
197
248
  * Uses exponential moving average to track typical output sizes for
@@ -220,38 +271,6 @@ export namespace bs {
220
271
  }
221
272
  return changetype<T>(out);
222
273
  }
223
-
224
- /**
225
- * Copies the buffer's content to a new object of a specified type.
226
- * @returns The new object containing the buffer's content.
227
- */
228
- // @ts-expect-error: @inline is a valid decorator
229
- @inline export function view<T>(): T {
230
- const len = offset - buffer;
231
- // @ts-expect-error: __new is a runtime builtin
232
- const _out = __new(len, idof<T>());
233
- memory.copy(_out, buffer, len);
234
- return changetype<T>(_out);
235
- }
236
-
237
- /**
238
- * Copies the buffer's content to a given destination pointer.
239
- * Uses exponential moving average for adaptive buffer sizing.
240
- * @param dst - The destination pointer.
241
- * @returns The destination pointer cast to the specified type.
242
- */
243
- // @ts-expect-error: @inline is a valid decorator
244
- @inline export function outTo<T>(dst: usize): T {
245
- const len = offset - buffer;
246
- if (len != changetype<OBJECT>(dst - TOTAL_OVERHEAD).rtSize) {
247
- // @ts-expect-error: __renew is a runtime builtin
248
- dst = __renew(dst, len);
249
- }
250
- memory.copy(dst, buffer, len);
251
-
252
- finalizeDynamicOutput(len);
253
- return changetype<T>(dst);
254
- }
255
274
  }
256
275
 
257
276
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,6 +41,24 @@
41
41
  ],
42
42
  "description": "The only JSON library you'll need for AssemblyScript with SIMD and SWAR",
43
43
  "homepage": "https://github.com/JairusSW/json-as#readme",
44
+ "files": [
45
+ "assembly/custom/",
46
+ "assembly/deserialize/",
47
+ "assembly/globals/",
48
+ "assembly/serialize/",
49
+ "assembly/util/",
50
+ "assembly/index.ts",
51
+ "assembly/index.d.ts",
52
+ "assembly/types.ts",
53
+ "assembly/tsconfig.json",
54
+ "lib/as-bs.ts",
55
+ "transform/lib/",
56
+ "transform/package.json",
57
+ "index.ts",
58
+ "README.md",
59
+ "CHANGELOG.md",
60
+ "LICENSE"
61
+ ],
44
62
  "keywords": [
45
63
  "assemblyscript",
46
64
  "json",
@@ -13,6 +13,7 @@ export declare class JSONTransform extends Visitor {
13
13
  imports: ImportStatement[];
14
14
  simdStatements: string[];
15
15
  visitedClasses: Set<string>;
16
+ private collectInheritedFieldMembers;
16
17
  visitClassDeclarationRef(node: ClassDeclaration): void;
17
18
  resolveType(type: string, source: Src, visited?: Set<string>): string;
18
19
  visitClassDeclaration(node: ClassDeclaration): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA4G,eAAe,EAA8G,MAAM,EAAE,OAAO,EAAS,MAAM,EAA6C,MAAM,uCAAuC,CAAC;AAC3X,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAK7D,OAAO,EAA2B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA2BvC,qBAAa,aAAc,SAAQ,OAAO;IACxC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAuB;IAExC,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,EAAG,MAAM,CAAC;IACjB,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAA+B;IAC7D,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,CAAmB;IACrC,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAqB;IAEvD,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAYtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,cAAoB,GAAG,MAAM;IAsC3E,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAowCnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAItC,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA6ClD,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIjD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAiH9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,EAAE;IA0BxD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO;CAc3D;AA4BD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAwDjC;AAoKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA4G,eAAe,EAA8G,MAAM,EAAE,OAAO,EAAS,MAAM,EAA6C,MAAM,uCAAuC,CAAC;AAC3X,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAK7D,OAAO,EAA2B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAkFvC,qBAAa,aAAc,SAAQ,OAAO;IACxC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAuB;IAExC,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,EAAG,MAAM,CAAC;IACjB,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAA+B;IAC7D,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,CAAmB;IACrC,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAqB;IAEvD,OAAO,CAAC,4BAA4B;IA6CpC,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAYtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,cAAoB,GAAG,MAAM;IAsC3E,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA0yCnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAItC,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA6ClD,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIjD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAuG9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,EAAE;IA0BxD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO;CAc3D;AA4BD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAwDjC;AAoKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C"}