@elaraai/east 0.0.1-beta.8 → 1.0.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 (410) hide show
  1. package/LICENSE.md +15 -666
  2. package/README.md +113 -88
  3. package/dist/src/analyze.d.ts +3 -0
  4. package/dist/src/analyze.d.ts.map +1 -1
  5. package/dist/src/analyze.js +223 -111
  6. package/dist/src/analyze.js.map +1 -1
  7. package/dist/src/analyze.spec.d.ts +2 -0
  8. package/dist/src/analyze.spec.d.ts.map +1 -0
  9. package/dist/src/analyze.spec.js +445 -0
  10. package/dist/src/analyze.spec.js.map +1 -0
  11. package/dist/src/ast.d.ts +54 -35
  12. package/dist/src/ast.d.ts.map +1 -1
  13. package/dist/src/ast_to_ir.coerce_to.spec.d.ts +15 -0
  14. package/dist/src/ast_to_ir.coerce_to.spec.d.ts.map +1 -0
  15. package/dist/src/ast_to_ir.coerce_to.spec.js +420 -0
  16. package/dist/src/ast_to_ir.coerce_to.spec.js.map +1 -0
  17. package/dist/src/ast_to_ir.d.ts +18 -4
  18. package/dist/src/ast_to_ir.d.ts.map +1 -1
  19. package/dist/src/ast_to_ir.js +233 -178
  20. package/dist/src/ast_to_ir.js.map +1 -1
  21. package/dist/src/builtins.d.ts +1 -1
  22. package/dist/src/builtins.d.ts.map +1 -1
  23. package/dist/src/builtins.js +194 -2
  24. package/dist/src/builtins.js.map +1 -1
  25. package/dist/src/comparison.d.ts +2 -2
  26. package/dist/src/comparison.d.ts.map +1 -1
  27. package/dist/src/comparison.js +115 -40
  28. package/dist/src/comparison.js.map +1 -1
  29. package/dist/src/comparison.spec.d.ts +2 -0
  30. package/dist/src/comparison.spec.d.ts.map +1 -0
  31. package/dist/src/comparison.spec.js +1200 -0
  32. package/dist/src/comparison.spec.js.map +1 -0
  33. package/dist/src/compile.d.ts +31 -9
  34. package/dist/src/compile.d.ts.map +1 -1
  35. package/dist/src/compile.js +1048 -548
  36. package/dist/src/compile.js.map +1 -1
  37. package/dist/src/containers/matrix.d.ts +15 -0
  38. package/dist/src/containers/matrix.d.ts.map +1 -0
  39. package/dist/src/containers/matrix.js +15 -0
  40. package/dist/src/containers/matrix.js.map +1 -0
  41. package/dist/src/containers/ref.d.ts.map +1 -1
  42. package/dist/src/containers/ref.js +1 -1
  43. package/dist/src/containers/ref.js.map +1 -1
  44. package/dist/src/containers/sortedmap.spec.d.ts +2 -0
  45. package/dist/src/containers/sortedmap.spec.d.ts.map +1 -0
  46. package/dist/src/containers/sortedmap.spec.js +180 -0
  47. package/dist/src/containers/sortedmap.spec.js.map +1 -0
  48. package/dist/src/containers/sortedset.spec.d.ts +2 -0
  49. package/dist/src/containers/sortedset.spec.d.ts.map +1 -0
  50. package/dist/src/containers/sortedset.spec.js +228 -0
  51. package/dist/src/containers/sortedset.spec.js.map +1 -0
  52. package/dist/src/containers/variant.d.ts.map +1 -1
  53. package/dist/src/containers/variant.js +1 -1
  54. package/dist/src/containers/variant.js.map +1 -1
  55. package/dist/src/containers/variant.spec.d.ts +2 -0
  56. package/dist/src/containers/variant.spec.d.ts.map +1 -0
  57. package/dist/src/containers/variant.spec.js +217 -0
  58. package/dist/src/containers/variant.spec.js.map +1 -0
  59. package/dist/src/datetime_format/parse.spec.d.ts +6 -0
  60. package/dist/src/datetime_format/parse.spec.d.ts.map +1 -0
  61. package/dist/src/datetime_format/parse.spec.js +379 -0
  62. package/dist/src/datetime_format/parse.spec.js.map +1 -0
  63. package/dist/src/datetime_format/print.spec.d.ts +6 -0
  64. package/dist/src/datetime_format/print.spec.d.ts.map +1 -0
  65. package/dist/src/datetime_format/print.spec.js +257 -0
  66. package/dist/src/datetime_format/print.spec.js.map +1 -0
  67. package/dist/src/datetime_format/tokenize.spec.d.ts +2 -0
  68. package/dist/src/datetime_format/tokenize.spec.d.ts.map +1 -0
  69. package/dist/src/datetime_format/tokenize.spec.js +508 -0
  70. package/dist/src/datetime_format/tokenize.spec.js.map +1 -0
  71. package/dist/src/datetime_format/types.d.ts +23 -23
  72. package/dist/src/default.d.ts.map +1 -1
  73. package/dist/src/default.js +33 -0
  74. package/dist/src/default.js.map +1 -1
  75. package/dist/src/default.spec.d.ts +2 -0
  76. package/dist/src/default.spec.d.ts.map +1 -0
  77. package/dist/src/default.spec.js +178 -0
  78. package/dist/src/default.spec.js.map +1 -0
  79. package/dist/src/eastir.d.ts +7 -0
  80. package/dist/src/eastir.d.ts.map +1 -1
  81. package/dist/src/eastir.js +55 -7
  82. package/dist/src/eastir.js.map +1 -1
  83. package/dist/src/error.d.ts +14 -4
  84. package/dist/src/error.d.ts.map +1 -1
  85. package/dist/src/error.js +28 -3
  86. package/dist/src/error.js.map +1 -1
  87. package/dist/src/example.d.ts +87 -0
  88. package/dist/src/example.d.ts.map +1 -0
  89. package/dist/src/example.js +18 -0
  90. package/dist/src/example.js.map +1 -0
  91. package/dist/src/expr/array.d.ts +43 -1
  92. package/dist/src/expr/array.d.ts.map +1 -1
  93. package/dist/src/expr/array.js +103 -53
  94. package/dist/src/expr/array.js.map +1 -1
  95. package/dist/src/expr/ast.d.ts +1 -1
  96. package/dist/src/expr/ast.d.ts.map +1 -1
  97. package/dist/src/expr/ast.js +112 -54
  98. package/dist/src/expr/ast.js.map +1 -1
  99. package/dist/src/expr/asyncfunction.d.ts.map +1 -1
  100. package/dist/src/expr/asyncfunction.js +6 -4
  101. package/dist/src/expr/asyncfunction.js.map +1 -1
  102. package/dist/src/expr/blob.d.ts +48 -0
  103. package/dist/src/expr/blob.d.ts.map +1 -1
  104. package/dist/src/expr/blob.js +63 -8
  105. package/dist/src/expr/blob.js.map +1 -1
  106. package/dist/src/expr/block.d.ts +213 -12
  107. package/dist/src/expr/block.d.ts.map +1 -1
  108. package/dist/src/expr/block.js +796 -293
  109. package/dist/src/expr/block.js.map +1 -1
  110. package/dist/src/expr/boolean.d.ts +44 -0
  111. package/dist/src/expr/boolean.d.ts.map +1 -1
  112. package/dist/src/expr/boolean.js +58 -6
  113. package/dist/src/expr/boolean.js.map +1 -1
  114. package/dist/src/expr/datetime.d.ts +135 -0
  115. package/dist/src/expr/datetime.d.ts.map +1 -1
  116. package/dist/src/expr/datetime.js +184 -34
  117. package/dist/src/expr/datetime.js.map +1 -1
  118. package/dist/src/expr/dict.d.ts +47 -2
  119. package/dist/src/expr/dict.d.ts.map +1 -1
  120. package/dist/src/expr/dict.js +122 -61
  121. package/dist/src/expr/dict.js.map +1 -1
  122. package/dist/src/expr/expr.d.ts +3 -1
  123. package/dist/src/expr/expr.d.ts.map +1 -1
  124. package/dist/src/expr/expr.js +4 -3
  125. package/dist/src/expr/expr.js.map +1 -1
  126. package/dist/src/expr/float.d.ts +153 -0
  127. package/dist/src/expr/float.d.ts.map +1 -1
  128. package/dist/src/expr/float.js +191 -17
  129. package/dist/src/expr/float.js.map +1 -1
  130. package/dist/src/expr/function.d.ts +7 -2
  131. package/dist/src/expr/function.d.ts.map +1 -1
  132. package/dist/src/expr/function.js +6 -4
  133. package/dist/src/expr/function.js.map +1 -1
  134. package/dist/src/expr/index.d.ts +186 -2
  135. package/dist/src/expr/index.d.ts.map +1 -1
  136. package/dist/src/expr/index.js +183 -2
  137. package/dist/src/expr/index.js.map +1 -1
  138. package/dist/src/expr/integer.d.ts +180 -0
  139. package/dist/src/expr/integer.d.ts.map +1 -1
  140. package/dist/src/expr/integer.js +189 -18
  141. package/dist/src/expr/integer.js.map +1 -1
  142. package/dist/src/expr/libs/array.js +3 -3
  143. package/dist/src/expr/libs/array.js.map +1 -1
  144. package/dist/src/expr/libs/blob.js +3 -3
  145. package/dist/src/expr/libs/blob.js.map +1 -1
  146. package/dist/src/expr/libs/dict.js +1 -1
  147. package/dist/src/expr/libs/dict.js.map +1 -1
  148. package/dist/src/expr/libs/matrix.d.ts +17 -0
  149. package/dist/src/expr/libs/matrix.d.ts.map +1 -0
  150. package/dist/src/expr/libs/matrix.js +60 -0
  151. package/dist/src/expr/libs/matrix.js.map +1 -0
  152. package/dist/src/expr/libs/set.js +1 -1
  153. package/dist/src/expr/libs/set.js.map +1 -1
  154. package/dist/src/expr/libs/string.d.ts.map +1 -1
  155. package/dist/src/expr/libs/string.js +2 -1
  156. package/dist/src/expr/libs/string.js.map +1 -1
  157. package/dist/src/expr/libs/vector.d.ts +16 -0
  158. package/dist/src/expr/libs/vector.d.ts.map +1 -0
  159. package/dist/src/expr/libs/vector.js +44 -0
  160. package/dist/src/expr/libs/vector.js.map +1 -0
  161. package/dist/src/expr/matrix.d.ts +109 -0
  162. package/dist/src/expr/matrix.d.ts.map +1 -0
  163. package/dist/src/expr/matrix.js +224 -0
  164. package/dist/src/expr/matrix.js.map +1 -0
  165. package/dist/src/expr/recursive.d.ts +83 -0
  166. package/dist/src/expr/recursive.d.ts.map +1 -0
  167. package/dist/src/expr/recursive.js +99 -0
  168. package/dist/src/expr/recursive.js.map +1 -0
  169. package/dist/src/expr/ref.js +5 -5
  170. package/dist/src/expr/ref.js.map +1 -1
  171. package/dist/src/expr/set.d.ts +44 -2
  172. package/dist/src/expr/set.d.ts.map +1 -1
  173. package/dist/src/expr/set.js +102 -52
  174. package/dist/src/expr/set.js.map +1 -1
  175. package/dist/src/expr/string.d.ts +134 -0
  176. package/dist/src/expr/string.d.ts.map +1 -1
  177. package/dist/src/expr/string.js +173 -23
  178. package/dist/src/expr/string.js.map +1 -1
  179. package/dist/src/expr/struct.d.ts +1 -1
  180. package/dist/src/expr/struct.d.ts.map +1 -1
  181. package/dist/src/expr/struct.js +2 -2
  182. package/dist/src/expr/struct.js.map +1 -1
  183. package/dist/src/expr/types.d.ts +12 -9
  184. package/dist/src/expr/types.d.ts.map +1 -1
  185. package/dist/src/expr/variant.d.ts +108 -11
  186. package/dist/src/expr/variant.d.ts.map +1 -1
  187. package/dist/src/expr/variant.js +76 -38
  188. package/dist/src/expr/variant.js.map +1 -1
  189. package/dist/src/expr/vector.d.ts +102 -0
  190. package/dist/src/expr/vector.d.ts.map +1 -0
  191. package/dist/src/expr/vector.js +202 -0
  192. package/dist/src/expr/vector.js.map +1 -0
  193. package/dist/src/fuzz.d.ts +36 -2
  194. package/dist/src/fuzz.d.ts.map +1 -1
  195. package/dist/src/fuzz.js +409 -77
  196. package/dist/src/fuzz.js.map +1 -1
  197. package/dist/src/index.d.ts +4 -0
  198. package/dist/src/index.d.ts.map +1 -1
  199. package/dist/src/index.js +4 -0
  200. package/dist/src/index.js.map +1 -1
  201. package/dist/src/internal.d.ts +12 -2
  202. package/dist/src/internal.d.ts.map +1 -1
  203. package/dist/src/internal.js +13 -2
  204. package/dist/src/internal.js.map +1 -1
  205. package/dist/src/ir.d.ts +1754 -1484
  206. package/dist/src/ir.d.ts.map +1 -1
  207. package/dist/src/ir.js +51 -34
  208. package/dist/src/ir.js.map +1 -1
  209. package/dist/src/ir.spec.d.ts +2 -0
  210. package/dist/src/ir.spec.d.ts.map +1 -0
  211. package/dist/src/ir.spec.js +35 -0
  212. package/dist/src/ir.spec.js.map +1 -0
  213. package/dist/src/location.d.ts +56 -17
  214. package/dist/src/location.d.ts.map +1 -1
  215. package/dist/src/location.js +226 -29
  216. package/dist/src/location.js.map +1 -1
  217. package/dist/src/location.spec.d.ts +2 -0
  218. package/dist/src/location.spec.d.ts.map +1 -0
  219. package/dist/src/location.spec.js +102 -0
  220. package/dist/src/location.spec.js.map +1 -0
  221. package/dist/src/patch/apply.d.ts +15 -0
  222. package/dist/src/patch/apply.d.ts.map +1 -0
  223. package/dist/src/patch/apply.js +352 -0
  224. package/dist/src/patch/apply.js.map +1 -0
  225. package/dist/src/patch/compose.d.ts +15 -0
  226. package/dist/src/patch/compose.d.ts.map +1 -0
  227. package/dist/src/patch/compose.js +448 -0
  228. package/dist/src/patch/compose.js.map +1 -0
  229. package/dist/src/patch/diff.d.ts +15 -0
  230. package/dist/src/patch/diff.d.ts.map +1 -0
  231. package/dist/src/patch/diff.js +347 -0
  232. package/dist/src/patch/diff.js.map +1 -0
  233. package/dist/src/patch/fuzz.d.ts +73 -0
  234. package/dist/src/patch/fuzz.d.ts.map +1 -0
  235. package/dist/src/patch/fuzz.js +159 -0
  236. package/dist/src/patch/fuzz.js.map +1 -0
  237. package/dist/src/patch/index.d.ts +32 -0
  238. package/dist/src/patch/index.d.ts.map +1 -0
  239. package/dist/src/patch/index.js +48 -0
  240. package/dist/src/patch/index.js.map +1 -0
  241. package/dist/src/patch/invert.d.ts +15 -0
  242. package/dist/src/patch/invert.d.ts.map +1 -0
  243. package/dist/src/patch/invert.js +284 -0
  244. package/dist/src/patch/invert.js.map +1 -0
  245. package/dist/src/patch/merge.d.ts +56 -0
  246. package/dist/src/patch/merge.d.ts.map +1 -0
  247. package/dist/src/patch/merge.js +586 -0
  248. package/dist/src/patch/merge.js.map +1 -0
  249. package/dist/src/patch/merge.spec.d.ts +2 -0
  250. package/dist/src/patch/merge.spec.d.ts.map +1 -0
  251. package/dist/src/patch/merge.spec.js +1139 -0
  252. package/dist/src/patch/merge.spec.js.map +1 -0
  253. package/dist/src/patch/patch.spec.d.ts +2 -0
  254. package/dist/src/patch/patch.spec.d.ts.map +1 -0
  255. package/dist/src/patch/patch.spec.js +452 -0
  256. package/dist/src/patch/patch.spec.js.map +1 -0
  257. package/dist/src/patch/path.d.ts +115 -0
  258. package/dist/src/patch/path.d.ts.map +1 -0
  259. package/dist/src/patch/path.js +192 -0
  260. package/dist/src/patch/path.js.map +1 -0
  261. package/dist/src/patch/path.spec.d.ts +6 -0
  262. package/dist/src/patch/path.spec.d.ts.map +1 -0
  263. package/dist/src/patch/path.spec.js +322 -0
  264. package/dist/src/patch/path.spec.js.map +1 -0
  265. package/dist/src/patch/prune.d.ts +77 -0
  266. package/dist/src/patch/prune.d.ts.map +1 -0
  267. package/dist/src/patch/prune.js +115 -0
  268. package/dist/src/patch/prune.js.map +1 -0
  269. package/dist/src/patch/prune.spec.d.ts +6 -0
  270. package/dist/src/patch/prune.spec.d.ts.map +1 -0
  271. package/dist/src/patch/prune.spec.js +473 -0
  272. package/dist/src/patch/prune.spec.js.map +1 -0
  273. package/dist/src/patch/type_of_patch.d.ts +25 -0
  274. package/dist/src/patch/type_of_patch.d.ts.map +1 -0
  275. package/dist/src/patch/type_of_patch.js +144 -0
  276. package/dist/src/patch/type_of_patch.js.map +1 -0
  277. package/dist/src/patch/types.d.ts +220 -0
  278. package/dist/src/patch/types.d.ts.map +1 -0
  279. package/dist/src/patch/types.js +62 -0
  280. package/dist/src/patch/types.js.map +1 -0
  281. package/dist/src/patch/validate.d.ts +44 -0
  282. package/dist/src/patch/validate.d.ts.map +1 -0
  283. package/dist/src/patch/validate.js +190 -0
  284. package/dist/src/patch/validate.js.map +1 -0
  285. package/dist/src/patch/validate.spec.d.ts +6 -0
  286. package/dist/src/patch/validate.spec.d.ts.map +1 -0
  287. package/dist/src/patch/validate.spec.js +225 -0
  288. package/dist/src/patch/validate.spec.js.map +1 -0
  289. package/dist/src/patch/walk.d.ts +121 -0
  290. package/dist/src/patch/walk.d.ts.map +1 -0
  291. package/dist/src/patch/walk.js +385 -0
  292. package/dist/src/patch/walk.js.map +1 -0
  293. package/dist/src/patch/walk.spec.d.ts +6 -0
  294. package/dist/src/patch/walk.spec.d.ts.map +1 -0
  295. package/dist/src/patch/walk.spec.js +621 -0
  296. package/dist/src/patch/walk.spec.js.map +1 -0
  297. package/dist/src/platform.d.ts +6 -0
  298. package/dist/src/platform.d.ts.map +1 -1
  299. package/dist/src/platform.spec.d.ts +2 -0
  300. package/dist/src/platform.spec.d.ts.map +1 -0
  301. package/dist/src/platform.spec.js +330 -0
  302. package/dist/src/platform.spec.js.map +1 -0
  303. package/dist/src/serialization/beast.d.ts.map +1 -1
  304. package/dist/src/serialization/beast.js +12 -0
  305. package/dist/src/serialization/beast.js.map +1 -1
  306. package/dist/src/serialization/beast.spec.d.ts +6 -0
  307. package/dist/src/serialization/beast.spec.d.ts.map +1 -0
  308. package/dist/src/serialization/beast.spec.js +406 -0
  309. package/dist/src/serialization/beast.spec.js.map +1 -0
  310. package/dist/src/serialization/beast2/index.d.ts +50 -0
  311. package/dist/src/serialization/beast2/index.d.ts.map +1 -0
  312. package/dist/src/serialization/beast2/index.js +756 -0
  313. package/dist/src/serialization/beast2/index.js.map +1 -0
  314. package/dist/src/serialization/beast2/index.spec.d.ts +6 -0
  315. package/dist/src/serialization/beast2/index.spec.d.ts.map +1 -0
  316. package/dist/src/serialization/beast2/index.spec.js +528 -0
  317. package/dist/src/serialization/beast2/index.spec.js.map +1 -0
  318. package/dist/src/serialization/beast2/sourcemap-table.d.ts +29 -0
  319. package/dist/src/serialization/beast2/sourcemap-table.d.ts.map +1 -0
  320. package/dist/src/serialization/beast2/sourcemap-table.js +82 -0
  321. package/dist/src/serialization/beast2/sourcemap-table.js.map +1 -0
  322. package/dist/src/serialization/beast2/string-table.d.ts +16 -0
  323. package/dist/src/serialization/beast2/string-table.d.ts.map +1 -0
  324. package/dist/src/serialization/beast2/string-table.js +38 -0
  325. package/dist/src/serialization/beast2/string-table.js.map +1 -0
  326. package/dist/src/serialization/beast2/type-table.d.ts +86 -0
  327. package/dist/src/serialization/beast2/type-table.d.ts.map +1 -0
  328. package/dist/src/serialization/beast2/type-table.js +618 -0
  329. package/dist/src/serialization/beast2/type-table.js.map +1 -0
  330. package/dist/src/serialization/beast2/value-table.d.ts +40 -0
  331. package/dist/src/serialization/beast2/value-table.d.ts.map +1 -0
  332. package/dist/src/serialization/beast2/value-table.js +157 -0
  333. package/dist/src/serialization/beast2/value-table.js.map +1 -0
  334. package/dist/src/serialization/binary-utils.d.ts +33 -0
  335. package/dist/src/serialization/binary-utils.d.ts.map +1 -1
  336. package/dist/src/serialization/binary-utils.js +157 -0
  337. package/dist/src/serialization/binary-utils.js.map +1 -1
  338. package/dist/src/serialization/csv.d.ts +17 -17
  339. package/dist/src/serialization/csv.d.ts.map +1 -1
  340. package/dist/src/serialization/csv.js +10 -8
  341. package/dist/src/serialization/csv.js.map +1 -1
  342. package/dist/src/serialization/csv.spec.d.ts +2 -0
  343. package/dist/src/serialization/csv.spec.d.ts.map +1 -0
  344. package/dist/src/serialization/csv.spec.js +556 -0
  345. package/dist/src/serialization/csv.spec.js.map +1 -0
  346. package/dist/src/serialization/east-inferred.spec.d.ts +2 -0
  347. package/dist/src/serialization/east-inferred.spec.d.ts.map +1 -0
  348. package/dist/src/serialization/east-inferred.spec.js +322 -0
  349. package/dist/src/serialization/east-inferred.spec.js.map +1 -0
  350. package/dist/src/serialization/east.d.ts +1 -1
  351. package/dist/src/serialization/east.d.ts.map +1 -1
  352. package/dist/src/serialization/east.js +178 -26
  353. package/dist/src/serialization/east.js.map +1 -1
  354. package/dist/src/serialization/east.spec.d.ts +2 -0
  355. package/dist/src/serialization/east.spec.d.ts.map +1 -0
  356. package/dist/src/serialization/east.spec.js +1548 -0
  357. package/dist/src/serialization/east.spec.js.map +1 -0
  358. package/dist/src/serialization/index.d.ts +1 -2
  359. package/dist/src/serialization/index.d.ts.map +1 -1
  360. package/dist/src/serialization/index.js +1 -2
  361. package/dist/src/serialization/index.js.map +1 -1
  362. package/dist/src/serialization/json.d.ts +1 -1
  363. package/dist/src/serialization/json.d.ts.map +1 -1
  364. package/dist/src/serialization/json.js +123 -24
  365. package/dist/src/serialization/json.js.map +1 -1
  366. package/dist/src/serialization/json.spec.d.ts +2 -0
  367. package/dist/src/serialization/json.spec.d.ts.map +1 -0
  368. package/dist/src/serialization/json.spec.js +1297 -0
  369. package/dist/src/serialization/json.spec.js.map +1 -0
  370. package/dist/src/type_of_type.d.ts +72 -35
  371. package/dist/src/type_of_type.d.ts.map +1 -1
  372. package/dist/src/type_of_type.is_data.spec.d.ts +6 -0
  373. package/dist/src/type_of_type.is_data.spec.d.ts.map +1 -0
  374. package/dist/src/type_of_type.is_data.spec.js +221 -0
  375. package/dist/src/type_of_type.is_data.spec.js.map +1 -0
  376. package/dist/src/type_of_type.js +355 -80
  377. package/dist/src/type_of_type.js.map +1 -1
  378. package/dist/src/type_of_type.to_etv.spec.d.ts +6 -0
  379. package/dist/src/type_of_type.to_etv.spec.d.ts.map +1 -0
  380. package/dist/src/type_of_type.to_etv.spec.js +263 -0
  381. package/dist/src/type_of_type.to_etv.spec.js.map +1 -0
  382. package/dist/src/types.d.ts +82 -12
  383. package/dist/src/types.d.ts.map +1 -1
  384. package/dist/src/types.error.spec.d.ts +2 -0
  385. package/dist/src/types.error.spec.d.ts.map +1 -0
  386. package/dist/src/types.error.spec.js +665 -0
  387. package/dist/src/types.error.spec.js.map +1 -0
  388. package/dist/src/types.js +663 -156
  389. package/dist/src/types.js.map +1 -1
  390. package/dist/src/types.spec.d.ts +2 -0
  391. package/dist/src/types.spec.d.ts.map +1 -0
  392. package/dist/src/types.spec.js +946 -0
  393. package/dist/src/types.spec.js.map +1 -0
  394. package/dist/src/walker.d.ts +65 -0
  395. package/dist/src/walker.d.ts.map +1 -0
  396. package/dist/src/walker.js +165 -0
  397. package/dist/src/walker.js.map +1 -0
  398. package/dist/src/walker.spec.d.ts +6 -0
  399. package/dist/src/walker.spec.d.ts.map +1 -0
  400. package/dist/src/walker.spec.js +109 -0
  401. package/dist/src/walker.spec.js.map +1 -0
  402. package/package.json +16 -38
  403. package/dist/src/serialization/beast2-stream.d.ts +0 -38
  404. package/dist/src/serialization/beast2-stream.d.ts.map +0 -1
  405. package/dist/src/serialization/beast2-stream.js +0 -670
  406. package/dist/src/serialization/beast2-stream.js.map +0 -1
  407. package/dist/src/serialization/beast2.d.ts +0 -41
  408. package/dist/src/serialization/beast2.d.ts.map +0 -1
  409. package/dist/src/serialization/beast2.js +0 -495
  410. package/dist/src/serialization/beast2.js.map +0 -1
@@ -3,6 +3,7 @@
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
5
  import { printIdentifier, TypeWiden, isTypeEqual, NeverType, NullType, BooleanType, IntegerType, FloatType, StringType, DateTimeType, BlobType, ArrayType, SetType, DictType, StructType, VariantType } from "../types.js";
6
+ import { matrix } from "../containers/matrix.js";
6
7
  import { compareFor } from "../comparison.js";
7
8
  import { SortedMap } from "../containers/sortedmap.js";
8
9
  import { SortedSet } from "../containers/sortedset.js";
@@ -139,7 +140,7 @@ export function decodeEastFor(type) {
139
140
  }
140
141
  };
141
142
  }
142
- export function printFor(type, typeCtx = []) {
143
+ export function printFor(type, typeCtx = new Map()) {
143
144
  // Convert EastType to EastTypeValue if necessary
144
145
  if (!isVariant(type)) {
145
146
  type = toEastTypeValue(type);
@@ -199,9 +200,7 @@ export function printFor(type, typeCtx = []) {
199
200
  ctx.currentPath.pop();
200
201
  return `&${str}`;
201
202
  };
202
- typeCtx.push(ret);
203
203
  value_printer = printFor(type.value, typeCtx);
204
- typeCtx.pop();
205
204
  return ret;
206
205
  }
207
206
  else if (type.type === "Array") {
@@ -224,9 +223,7 @@ export function printFor(type, typeCtx = []) {
224
223
  }
225
224
  return `[${parts.join(", ")}]`;
226
225
  };
227
- typeCtx.push(ret);
228
226
  value_printer = printFor(type.value, typeCtx);
229
- typeCtx.pop();
230
227
  return ret;
231
228
  }
232
229
  else if (type.type === "Set") {
@@ -276,9 +273,7 @@ export function printFor(type, typeCtx = []) {
276
273
  }
277
274
  return `{${parts.join(",")}}`;
278
275
  };
279
- typeCtx.push(ret);
280
276
  value_printer = printFor(type.value.value, typeCtx);
281
- typeCtx.pop();
282
277
  return ret;
283
278
  }
284
279
  else if (type.type === "Struct") {
@@ -295,11 +290,9 @@ export function printFor(type, typeCtx = []) {
295
290
  }
296
291
  return `(${parts.join(", ")})`;
297
292
  };
298
- typeCtx.push(ret);
299
293
  for (const { name: k, type: t } of type.value) {
300
294
  field_printers.push([k, printFor(t, typeCtx)]);
301
295
  }
302
- typeCtx.pop();
303
296
  return ret;
304
297
  }
305
298
  else if (type.type === "Variant") {
@@ -311,7 +304,6 @@ export function printFor(type, typeCtx = []) {
311
304
  ctx.currentPath.pop();
312
305
  return result;
313
306
  };
314
- typeCtx.push(ret);
315
307
  for (const { name: k, type: t } of type.value) {
316
308
  if (t.type === "Null") {
317
309
  const prefix = `.${printIdentifier(k)}`;
@@ -323,7 +315,6 @@ export function printFor(type, typeCtx = []) {
323
315
  case_printers[k] = (value, ctx) => prefix + print_data(value, ctx);
324
316
  }
325
317
  }
326
- typeCtx.pop();
327
318
  return ret;
328
319
  }
329
320
  else if (type.type === "Function") {
@@ -334,8 +325,42 @@ export function printFor(type, typeCtx = []) {
334
325
  // This is just a convenience printer - async functions cannot be serialized/deserialized
335
326
  return (_, _ctx) => `async (${type.value.inputs.map((x) => printTypeValue(x)).join(", ")}) => ${printTypeValue(type.value.output)}`;
336
327
  }
328
+ else if (type.type === "Vector") {
329
+ const elementPrinter = printFor(type.value, typeCtx);
330
+ const isBoolean = type.value.type === "Boolean";
331
+ return (v, _ctx) => {
332
+ const parts = [];
333
+ for (let i = 0; i < v.length; i++) {
334
+ parts.push(elementPrinter(isBoolean ? v[i] !== 0 : v[i]));
335
+ }
336
+ return `vec[${parts.join(", ")}]`;
337
+ };
338
+ }
339
+ else if (type.type === "Matrix") {
340
+ const elementPrinter = printFor(type.value, typeCtx);
341
+ const isBoolean = type.value.type === "Boolean";
342
+ return (v, _ctx) => {
343
+ const { data, rows, cols } = v;
344
+ const rowParts = [];
345
+ for (let r = 0; r < rows; r++) {
346
+ const elemParts = [];
347
+ for (let c = 0; c < cols; c++) {
348
+ elemParts.push(elementPrinter(isBoolean ? data[r * cols + c] !== 0 : data[r * cols + c]));
349
+ }
350
+ rowParts.push(`[${elemParts.join(", ")}]`);
351
+ }
352
+ return `mat[${rowParts.join(", ")}]`;
353
+ };
354
+ }
355
+ else if (type.type === "Recursive" && type.value.type === "wrapper") {
356
+ let inner;
357
+ const ret = (...args) => inner(...args);
358
+ typeCtx.set(type.value.value.id, ret);
359
+ inner = printFor(type.value.value.inner, typeCtx);
360
+ return ret;
361
+ }
337
362
  else if (type.type === "Recursive") {
338
- const ret = typeCtx[typeCtx.length - Number(type.value)];
363
+ const ret = typeCtx.get(type.value.value);
339
364
  if (ret === undefined) {
340
365
  throw new Error(`Internal error: Recursive type context not found`);
341
366
  }
@@ -406,7 +431,7 @@ const consumeWhitespace = (input, pos) => {
406
431
  }
407
432
  return pos;
408
433
  };
409
- const createParser = (type, frozen, typeCtx = []) => {
434
+ const createParser = (type, frozen, typeCtx = new Map()) => {
410
435
  switch (type.type) {
411
436
  case "Null":
412
437
  return parseNull;
@@ -438,10 +463,21 @@ const createParser = (type, frozen, typeCtx = []) => {
438
463
  throw new Error(`Cannot parse .Function`);
439
464
  case "AsyncFunction":
440
465
  throw new Error(`Cannot parse .AsyncFunction`);
466
+ case "Vector":
467
+ return createVectorParser(type.value, frozen);
468
+ case "Matrix":
469
+ return createMatrixParser(type.value, frozen);
441
470
  case "Never":
442
471
  return (_input, pos, _ctx) => { throw new ParseError(`Attempted to parse value of type .Never`, pos); };
443
472
  case "Recursive":
444
- const ret = typeCtx[typeCtx.length - Number(type.value)];
473
+ if (type.value.type === "wrapper") {
474
+ let inner;
475
+ const wrapRet = (...args) => inner(...args);
476
+ typeCtx.set(type.value.value.id, wrapRet);
477
+ inner = createParser(type.value.value.inner, frozen, typeCtx);
478
+ return wrapRet;
479
+ }
480
+ const ret = typeCtx.get(type.value.value);
445
481
  if (ret === undefined) {
446
482
  throw new Error(`Internal error: Recursive type context not found`);
447
483
  }
@@ -456,7 +492,7 @@ const parseInteger = (input, pos, _ctx) => {
456
492
  throw new ParseError("expected integer, got end of input", pos);
457
493
  }
458
494
  let start = pos;
459
- if (input[pos] === '-') {
495
+ if (input[pos] === '-' || input[pos] === '+') {
460
496
  pos++;
461
497
  }
462
498
  let hasDigits = false;
@@ -471,7 +507,8 @@ const parseInteger = (input, pos, _ctx) => {
471
507
  const intStr = input.slice(start, pos);
472
508
  let value;
473
509
  try {
474
- value = BigInt(intStr);
510
+ // BigInt() rejects a leading '+', so strip it before constructing.
511
+ value = BigInt(intStr[0] === '+' ? intStr.slice(1) : intStr);
475
512
  }
476
513
  catch {
477
514
  // BigInt() throws if the string is invalid (shouldn't happen given our parsing logic)
@@ -793,9 +830,7 @@ const createRefParser = (value_type, frozen, typeCtx) => {
793
830
  r.value = value;
794
831
  return { value: r, position };
795
832
  };
796
- typeCtx.push(ret);
797
833
  valueParser = createParser(value_type, frozen, typeCtx);
798
- typeCtx.pop();
799
834
  return ret;
800
835
  };
801
836
  const createArrayParser = (value_type, frozen, typeCtx) => {
@@ -862,9 +897,7 @@ const createArrayParser = (value_type, frozen, typeCtx) => {
862
897
  elementIndex++;
863
898
  }
864
899
  };
865
- typeCtx.push(ret);
866
900
  valueParser = createParser(value_type, frozen, typeCtx);
867
- typeCtx.pop();
868
901
  return ret;
869
902
  };
870
903
  const createSetParser = (key_type, frozen, typeCtx) => {
@@ -1027,9 +1060,7 @@ const createDictParser = (key_type, value_type, frozen, typeCtx) => {
1027
1060
  entryIndex++;
1028
1061
  }
1029
1062
  };
1030
- typeCtx.push(ret);
1031
1063
  valueParser = createParser(value_type, frozen, typeCtx);
1032
- typeCtx.pop();
1033
1064
  return ret;
1034
1065
  };
1035
1066
  const parseQuotedIdentifier = (input, pos, _ctx) => {
@@ -1199,11 +1230,9 @@ const createStructParser = (fields, frozen, typeCtx) => {
1199
1230
  }
1200
1231
  return { value: result, position: pos + 1 };
1201
1232
  };
1202
- typeCtx.push(ret);
1203
1233
  for (const field of fields) {
1204
1234
  fieldParsers.push(createParser(field.type, frozen, typeCtx));
1205
1235
  }
1206
- typeCtx.pop();
1207
1236
  return ret;
1208
1237
  };
1209
1238
  const createVariantParser = (cases, frozen, typeCtx) => {
@@ -1256,7 +1285,6 @@ const createVariantParser = (cases, frozen, typeCtx) => {
1256
1285
  ctx.currentPath.pop();
1257
1286
  }
1258
1287
  };
1259
- typeCtx.push(ret);
1260
1288
  for (const { name, type: caseType } of cases) {
1261
1289
  if (caseType.type === 'Null') {
1262
1290
  // Special case for null type - the "null" is actually optional
@@ -1279,9 +1307,133 @@ const createVariantParser = (cases, frozen, typeCtx) => {
1279
1307
  caseParsers[name] = createParser(caseType, frozen, typeCtx);
1280
1308
  }
1281
1309
  }
1282
- typeCtx.pop();
1283
1310
  return ret;
1284
1311
  };
1312
+ const createVectorParser = (element_type, frozen) => {
1313
+ const elementParser = createParser(element_type, frozen);
1314
+ return (input, pos, _ctx) => {
1315
+ pos = consumeWhitespace(input, pos);
1316
+ if (!input.startsWith('vec[', pos)) {
1317
+ throw new ParseError("expected 'vec[' to start vector", pos);
1318
+ }
1319
+ pos = consumeWhitespace(input, pos + 4);
1320
+ const values = [];
1321
+ // Handle empty vector
1322
+ if (input[pos] === ']') {
1323
+ return { value: _createTypedArray(element_type, values, frozen), position: pos + 1 };
1324
+ }
1325
+ let elementIndex = 0;
1326
+ while (true) {
1327
+ try {
1328
+ const { value: elementValue, position: elementPos } = elementParser(input, pos);
1329
+ values.push(elementValue);
1330
+ pos = consumeWhitespace(input, elementPos);
1331
+ }
1332
+ catch (e) {
1333
+ if (e instanceof ParseError) {
1334
+ const newPath = `[${elementIndex}]` + (e.path ? e.path : '');
1335
+ throw new ParseError(e.message, e.position, newPath);
1336
+ }
1337
+ throw e;
1338
+ }
1339
+ if (input[pos] === ']') {
1340
+ return { value: _createTypedArray(element_type, values, frozen), position: pos + 1 };
1341
+ }
1342
+ if (input[pos] !== ',') {
1343
+ throw new ParseError("expected ',' or ']' after vector element", pos);
1344
+ }
1345
+ pos = consumeWhitespace(input, pos + 1);
1346
+ elementIndex++;
1347
+ }
1348
+ };
1349
+ };
1350
+ const createMatrixParser = (element_type, frozen) => {
1351
+ const elementParser = createParser(element_type, frozen);
1352
+ return (input, pos, _ctx) => {
1353
+ pos = consumeWhitespace(input, pos);
1354
+ if (!input.startsWith('mat[', pos)) {
1355
+ throw new ParseError("expected 'mat[' to start matrix", pos);
1356
+ }
1357
+ pos = consumeWhitespace(input, pos + 4);
1358
+ const rows = [];
1359
+ // Handle empty matrix
1360
+ if (input[pos] === ']') {
1361
+ return { value: matrix(_createTypedArray(element_type, [], frozen), 0, 0), position: pos + 1 };
1362
+ }
1363
+ while (true) {
1364
+ // Parse a row: [elem, elem, ...]
1365
+ pos = consumeWhitespace(input, pos);
1366
+ if (input[pos] !== '[') {
1367
+ throw new ParseError("expected '[' to start matrix row", pos);
1368
+ }
1369
+ pos = consumeWhitespace(input, pos + 1);
1370
+ const row = [];
1371
+ // Handle empty row
1372
+ if (input[pos] !== ']') {
1373
+ let colIndex = 0;
1374
+ while (true) {
1375
+ try {
1376
+ const { value: elementValue, position: elementPos } = elementParser(input, pos);
1377
+ row.push(elementValue);
1378
+ pos = consumeWhitespace(input, elementPos);
1379
+ }
1380
+ catch (e) {
1381
+ if (e instanceof ParseError) {
1382
+ const newPath = `[${rows.length}][${colIndex}]` + (e.path ? e.path : '');
1383
+ throw new ParseError(e.message, e.position, newPath);
1384
+ }
1385
+ throw e;
1386
+ }
1387
+ if (input[pos] === ']') {
1388
+ break;
1389
+ }
1390
+ if (input[pos] !== ',') {
1391
+ throw new ParseError("expected ',' or ']' after matrix element", pos);
1392
+ }
1393
+ pos = consumeWhitespace(input, pos + 1);
1394
+ colIndex++;
1395
+ }
1396
+ }
1397
+ pos = consumeWhitespace(input, pos + 1); // consume ']'
1398
+ rows.push(row);
1399
+ if (input[pos] === ']') {
1400
+ // Validate all rows have the same number of columns
1401
+ const numCols = rows.length > 0 ? rows[0].length : 0;
1402
+ for (let i = 1; i < rows.length; i++) {
1403
+ if (rows[i].length !== numCols) {
1404
+ throw new ParseError(`matrix row ${i} has ${rows[i].length} columns, expected ${numCols}`, pos);
1405
+ }
1406
+ }
1407
+ const flat = rows.flat();
1408
+ const numRows = rows.length;
1409
+ return { value: matrix(_createTypedArray(element_type, flat, frozen), numRows, numCols), position: pos + 1 };
1410
+ }
1411
+ if (input[pos] !== ',') {
1412
+ throw new ParseError("expected ',' or ']' after matrix row", pos);
1413
+ }
1414
+ pos = consumeWhitespace(input, pos + 1);
1415
+ }
1416
+ };
1417
+ };
1418
+ function _createTypedArray(element_type, values, frozen) {
1419
+ let result;
1420
+ if (element_type.type === "Float") {
1421
+ result = new Float64Array(values);
1422
+ }
1423
+ else if (element_type.type === "Integer") {
1424
+ result = new BigInt64Array(values);
1425
+ }
1426
+ else if (element_type.type === "Boolean") {
1427
+ result = new Uint8ClampedArray(values.map(v => v ? 1 : 0));
1428
+ }
1429
+ else {
1430
+ throw new Error(`Unsupported vector/matrix element type: ${element_type.type}`);
1431
+ }
1432
+ if (frozen) {
1433
+ Object.freeze(result);
1434
+ }
1435
+ return result;
1436
+ }
1285
1437
  /**
1286
1438
  * Parse an East value and infer its type from the syntax.
1287
1439
  *