solve-engine 1.2.0 → 2.1.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 (385) hide show
  1. package/README.md +12 -17
  2. package/dist/{BytecodeBuilder-Bp9xeTmX.d.cts → BytecodeBuilder-DGGeByAP.d.cts} +18 -0
  3. package/dist/{BytecodeBuilder-Bp9xeTmX.d.ts → BytecodeBuilder-DGGeByAP.d.ts} +18 -0
  4. package/dist/{Configuration-C9W8tJv_.d.cts → Configuration-B6W0-T67.d.cts} +17 -4
  5. package/dist/{Configuration-C9W8tJv_.d.ts → Configuration-B6W0-T67.d.ts} +17 -4
  6. package/dist/{EngineError-CNA_rHY-.d.cts → EngineError-Ce1lPkjZ.d.cts} +2 -0
  7. package/dist/{EngineError-CNA_rHY-.d.ts → EngineError-Ce1lPkjZ.d.ts} +2 -0
  8. package/dist/{PackageCompatibility-B6NX9IaN.d.cts → PackageCompatibility-Bn5jnBtA.d.cts} +2 -2
  9. package/dist/{PackageCompatibility-Ceg5XdAp.d.ts → PackageCompatibility-CIvq2MP5.d.ts} +2 -2
  10. package/dist/{PackageRegistry-DrCPQNyy.d.ts → PackageRegistry-DzeiWcv4.d.ts} +93 -172
  11. package/dist/{PackageRegistry-DnJYVw9G.d.cts → PackageRegistry-dpdurBVO.d.cts} +93 -172
  12. package/dist/{Parselet-Bhf7d0_W.d.ts → Parselet-B-zoPrTa.d.ts} +8 -5
  13. package/dist/{Parselet-Cv7S7KRt.d.cts → Parselet-C4Wu055_.d.cts} +8 -5
  14. package/dist/{ScopeManager-Bzq87GfA.d.ts → ScopeManager-C2LDOrDx.d.ts} +7 -16
  15. package/dist/{ScopeManager-DRDBVfan.d.cts → ScopeManager-D7uMXbhS.d.cts} +7 -16
  16. package/dist/{VMCheckpoints-C6c17Hbo.d.ts → VMCheckpoints-CGyFhivM.d.ts} +3 -3
  17. package/dist/{VMCheckpoints-dZxSMGHG.d.cts → VMCheckpoints-I9jg3jWR.d.cts} +3 -3
  18. package/dist/{Value-DZNQ_PU7.d.cts → Value-CCi_Eecs.d.cts} +40 -0
  19. package/dist/{Value-DZNQ_PU7.d.ts → Value-CCi_Eecs.d.ts} +40 -0
  20. package/dist/{WorkerError-Djd7GGGa.d.cts → WorkerError-B4p6PNfx.d.cts} +1 -1
  21. package/dist/{WorkerError-B7t7R2-m.d.ts → WorkerError-Dhj9BQ_A.d.ts} +1 -1
  22. package/dist/chunk-2JMFUQZH.js +2 -0
  23. package/dist/chunk-2JMFUQZH.js.map +1 -0
  24. package/dist/chunk-2LFLR3VZ.cjs +2 -0
  25. package/dist/chunk-2LFLR3VZ.cjs.map +1 -0
  26. package/dist/chunk-2RWAXT6O.js +0 -1
  27. package/dist/chunk-32GC2FHC.cjs +2 -0
  28. package/dist/chunk-32GC2FHC.cjs.map +1 -0
  29. package/dist/chunk-4BZIYU7S.cjs +3 -0
  30. package/dist/chunk-4BZIYU7S.cjs.map +1 -0
  31. package/dist/chunk-4E4YVQKK.js +5 -0
  32. package/dist/chunk-4E4YVQKK.js.map +1 -0
  33. package/dist/chunk-4QVBSG6B.cjs +2 -0
  34. package/dist/chunk-4QVBSG6B.cjs.map +1 -0
  35. package/dist/chunk-5FO4PDIG.js +2 -0
  36. package/dist/chunk-5FO4PDIG.js.map +1 -0
  37. package/dist/chunk-5IJD5L3O.cjs +2 -0
  38. package/dist/chunk-5IJD5L3O.cjs.map +1 -0
  39. package/dist/chunk-62LMTO4F.js +2 -0
  40. package/dist/chunk-62LMTO4F.js.map +1 -0
  41. package/dist/chunk-6G3PMEPA.js +2 -0
  42. package/dist/chunk-6G3PMEPA.js.map +1 -0
  43. package/dist/chunk-6INX773F.cjs +2 -0
  44. package/dist/chunk-6INX773F.cjs.map +1 -0
  45. package/dist/chunk-76F3LCIL.js +4 -0
  46. package/dist/chunk-76F3LCIL.js.map +1 -0
  47. package/dist/chunk-7BXPCWKM.cjs +2 -0
  48. package/dist/chunk-7BXPCWKM.cjs.map +1 -0
  49. package/dist/chunk-7GK3XEZF.js +2 -0
  50. package/dist/chunk-7GK3XEZF.js.map +1 -0
  51. package/dist/chunk-AXMQG5TS.cjs +2 -0
  52. package/dist/chunk-AXMQG5TS.cjs.map +1 -0
  53. package/dist/chunk-CIQOK7Q4.cjs +2 -0
  54. package/dist/chunk-CIQOK7Q4.cjs.map +1 -0
  55. package/dist/chunk-E2Q3PQ2G.js +3 -0
  56. package/dist/chunk-E2Q3PQ2G.js.map +1 -0
  57. package/dist/chunk-E6Z4NQAS.js +2 -0
  58. package/dist/chunk-E6Z4NQAS.js.map +1 -0
  59. package/dist/chunk-EFJCC6FJ.cjs +2 -0
  60. package/dist/chunk-EFJCC6FJ.cjs.map +1 -0
  61. package/dist/chunk-ESUN2THE.cjs +2 -0
  62. package/dist/chunk-ESUN2THE.cjs.map +1 -0
  63. package/dist/chunk-EVAOPEO4.js +2 -0
  64. package/dist/chunk-EVAOPEO4.js.map +1 -0
  65. package/dist/chunk-EVI6OHQH.cjs +2 -0
  66. package/dist/chunk-EVI6OHQH.cjs.map +1 -0
  67. package/dist/chunk-FDE5HWDI.cjs +2 -0
  68. package/dist/chunk-FDE5HWDI.cjs.map +1 -0
  69. package/dist/chunk-FWW3M36J.cjs +2 -0
  70. package/dist/chunk-FWW3M36J.cjs.map +1 -0
  71. package/dist/chunk-G7TBEQRQ.js +2 -0
  72. package/dist/chunk-G7TBEQRQ.js.map +1 -0
  73. package/dist/chunk-GK2OHWRF.cjs +5 -0
  74. package/dist/chunk-GK2OHWRF.cjs.map +1 -0
  75. package/dist/chunk-HFKDWQUL.js +2 -0
  76. package/dist/chunk-HFKDWQUL.js.map +1 -0
  77. package/dist/chunk-HLBYHXQD.cjs +3 -0
  78. package/dist/chunk-HLBYHXQD.cjs.map +1 -0
  79. package/dist/chunk-I52MYCVI.js +3 -0
  80. package/dist/chunk-I52MYCVI.js.map +1 -0
  81. package/dist/chunk-IANAMBJQ.cjs +2 -0
  82. package/dist/chunk-IANAMBJQ.cjs.map +1 -0
  83. package/dist/chunk-IJMNVBIS.js +2 -0
  84. package/dist/chunk-IJMNVBIS.js.map +1 -0
  85. package/dist/chunk-J4LZD4ZY.js +3 -0
  86. package/dist/chunk-J4LZD4ZY.js.map +1 -0
  87. package/dist/chunk-JAK3RAFA.cjs +2 -0
  88. package/dist/chunk-JAK3RAFA.cjs.map +1 -0
  89. package/dist/chunk-JFAJN3C2.cjs +2 -0
  90. package/dist/chunk-JFAJN3C2.cjs.map +1 -0
  91. package/dist/chunk-JPFCXLJV.js +2 -0
  92. package/dist/chunk-JPFCXLJV.js.map +1 -0
  93. package/dist/chunk-JUIJ6NRD.cjs +3 -0
  94. package/dist/chunk-JUIJ6NRD.cjs.map +1 -0
  95. package/dist/chunk-MIQBJGGR.js +2 -0
  96. package/dist/chunk-MIQBJGGR.js.map +1 -0
  97. package/dist/chunk-MPB7KUN5.js +3 -0
  98. package/dist/chunk-MPB7KUN5.js.map +1 -0
  99. package/dist/chunk-MSYX32PF.cjs +2 -0
  100. package/dist/chunk-MSYX32PF.cjs.map +1 -0
  101. package/dist/chunk-MVZUTETT.js +2 -0
  102. package/dist/chunk-MVZUTETT.js.map +1 -0
  103. package/dist/chunk-N7N7MPMK.cjs +2 -0
  104. package/dist/chunk-N7N7MPMK.cjs.map +1 -0
  105. package/dist/chunk-NGBBNL4K.cjs +1 -3
  106. package/dist/chunk-OVKDDTXO.cjs +3 -0
  107. package/dist/chunk-OVKDDTXO.cjs.map +1 -0
  108. package/dist/chunk-P6WPEUAJ.cjs +2 -0
  109. package/dist/chunk-P6WPEUAJ.cjs.map +1 -0
  110. package/dist/chunk-PS272DZJ.cjs +2 -0
  111. package/dist/chunk-PS272DZJ.cjs.map +1 -0
  112. package/dist/chunk-R2ENWQ76.js +2 -0
  113. package/dist/chunk-R2ENWQ76.js.map +1 -0
  114. package/dist/chunk-R2SZFJTT.cjs +2 -0
  115. package/dist/chunk-R2SZFJTT.cjs.map +1 -0
  116. package/dist/chunk-RAF57WYO.js +2 -0
  117. package/dist/chunk-RAF57WYO.js.map +1 -0
  118. package/dist/chunk-RSF25YSJ.js +2 -0
  119. package/dist/chunk-RSF25YSJ.js.map +1 -0
  120. package/dist/chunk-SOMGSIO4.cjs +3 -0
  121. package/dist/chunk-SOMGSIO4.cjs.map +1 -0
  122. package/dist/chunk-SYYE3QAX.cjs +2 -0
  123. package/dist/chunk-SYYE3QAX.cjs.map +1 -0
  124. package/dist/chunk-TCZSPH4A.js +2 -0
  125. package/dist/chunk-TCZSPH4A.js.map +1 -0
  126. package/dist/chunk-TLG7VZRX.cjs +2 -0
  127. package/dist/chunk-TLG7VZRX.cjs.map +1 -0
  128. package/dist/chunk-TN5E6JU6.js +2 -0
  129. package/dist/chunk-TN5E6JU6.js.map +1 -0
  130. package/dist/chunk-TRBXW6HW.js +2 -0
  131. package/dist/{chunk-AQNHHJMJ.cjs.map → chunk-TRBXW6HW.js.map} +1 -1
  132. package/dist/chunk-TTFO4YDP.cjs +2 -0
  133. package/dist/chunk-TTFO4YDP.cjs.map +1 -0
  134. package/dist/chunk-TWC7K3ZX.js +2 -0
  135. package/dist/chunk-TWC7K3ZX.js.map +1 -0
  136. package/dist/chunk-U4AEVL5Z.js +2 -0
  137. package/dist/chunk-U4AEVL5Z.js.map +1 -0
  138. package/dist/chunk-UURM7P3P.cjs +4 -0
  139. package/dist/chunk-UURM7P3P.cjs.map +1 -0
  140. package/dist/chunk-VAGS5JS7.cjs +2 -0
  141. package/dist/chunk-VAGS5JS7.cjs.map +1 -0
  142. package/dist/chunk-W2JAR233.js +2 -0
  143. package/dist/chunk-W2JAR233.js.map +1 -0
  144. package/dist/chunk-WGZ3FNHI.js +2 -0
  145. package/dist/chunk-WGZ3FNHI.js.map +1 -0
  146. package/dist/chunk-XEIDV5JP.js +2 -0
  147. package/dist/chunk-XEIDV5JP.js.map +1 -0
  148. package/dist/chunk-XNIWQHXY.js +2 -0
  149. package/dist/chunk-XNIWQHXY.js.map +1 -0
  150. package/dist/chunk-Y7O4D3BJ.cjs +2 -0
  151. package/dist/chunk-Y7O4D3BJ.cjs.map +1 -0
  152. package/dist/chunk-YAHGSBMC.js +2 -0
  153. package/dist/chunk-YAHGSBMC.js.map +1 -0
  154. package/dist/chunk-YAYBVVG2.js +3 -0
  155. package/dist/chunk-YAYBVVG2.js.map +1 -0
  156. package/dist/chunk-YJ2OPULK.js +2 -0
  157. package/dist/chunk-YJ2OPULK.js.map +1 -0
  158. package/dist/chunk-YVKHEAFT.js +2 -0
  159. package/dist/chunk-YVKHEAFT.js.map +1 -0
  160. package/dist/chunk-ZCNBT44X.cjs +2 -0
  161. package/dist/chunk-ZCNBT44X.cjs.map +1 -0
  162. package/dist/chunk-ZLRJ7TDP.cjs +2 -0
  163. package/dist/chunk-ZLRJ7TDP.cjs.map +1 -0
  164. package/dist/constants.cjs +1 -21
  165. package/dist/constants.d.cts +1 -1
  166. package/dist/constants.d.ts +1 -1
  167. package/dist/constants.js +1 -4
  168. package/dist/engine.cjs +1 -94
  169. package/dist/engine.d.cts +10 -11
  170. package/dist/engine.d.ts +10 -11
  171. package/dist/engine.js +1 -37
  172. package/dist/errors.cjs +1 -105
  173. package/dist/errors.d.cts +3 -3
  174. package/dist/errors.d.ts +3 -3
  175. package/dist/errors.js +1 -4
  176. package/dist/format.cjs +1 -26
  177. package/dist/format.d.cts +2 -2
  178. package/dist/format.d.ts +2 -2
  179. package/dist/format.js +1 -9
  180. package/dist/index.cjs +1 -314
  181. package/dist/index.cjs.map +1 -1
  182. package/dist/index.d.cts +52 -20
  183. package/dist/index.d.ts +52 -20
  184. package/dist/index.js +1 -278
  185. package/dist/index.js.map +1 -1
  186. package/dist/language.cjs +1 -369
  187. package/dist/language.cjs.map +1 -1
  188. package/dist/language.d.cts +9 -10
  189. package/dist/language.d.ts +9 -10
  190. package/dist/language.js +1 -348
  191. package/dist/language.js.map +1 -1
  192. package/dist/lexer.cjs +1 -63
  193. package/dist/lexer.js +1 -10
  194. package/dist/normalizer.cjs +1 -39
  195. package/dist/normalizer.js +1 -10
  196. package/dist/packages.cjs +1 -132
  197. package/dist/packages.d.cts +8 -9
  198. package/dist/packages.d.ts +8 -9
  199. package/dist/packages.js +1 -23
  200. package/dist/parser.cjs +1 -54
  201. package/dist/parser.d.cts +8 -8
  202. package/dist/parser.d.ts +8 -8
  203. package/dist/parser.js +1 -9
  204. package/dist/{pipeline-D-PS9gVw.d.ts → pipeline-72QmQlGx.d.ts} +1 -1
  205. package/dist/{pipeline-DtSBJ8TS.d.cts → pipeline-DCQicwWX.d.cts} +1 -1
  206. package/dist/resolvers.cjs +1 -12
  207. package/dist/resolvers.d.cts +2 -2
  208. package/dist/resolvers.d.ts +2 -2
  209. package/dist/resolvers.js +1 -3
  210. package/dist/services.cjs +1 -20
  211. package/dist/services.js +1 -3
  212. package/dist/testing.cjs +3 -477
  213. package/dist/testing.cjs.map +1 -1
  214. package/dist/testing.d.cts +9 -10
  215. package/dist/testing.d.ts +9 -10
  216. package/dist/testing.js +3 -469
  217. package/dist/testing.js.map +1 -1
  218. package/dist/uom.cjs +1 -55
  219. package/dist/uom.d.cts +2 -2
  220. package/dist/uom.d.ts +2 -2
  221. package/dist/uom.js +1 -10
  222. package/dist/utilities.cjs +1 -36
  223. package/dist/utilities.js +1 -7
  224. package/dist/vm.cjs +1 -295
  225. package/dist/vm.cjs.map +1 -1
  226. package/dist/vm.d.cts +22 -10
  227. package/dist/vm.d.ts +22 -10
  228. package/dist/vm.js +1 -193
  229. package/dist/vm.js.map +1 -1
  230. package/dist/worker.cjs +2 -492
  231. package/dist/worker.cjs.map +1 -1
  232. package/dist/worker.d.cts +16 -17
  233. package/dist/worker.d.ts +16 -17
  234. package/dist/worker.js +2 -483
  235. package/dist/worker.js.map +1 -1
  236. package/package.json +1 -13
  237. package/dist/chunk-3BOK2LDK.js +0 -17
  238. package/dist/chunk-3BOK2LDK.js.map +0 -1
  239. package/dist/chunk-3VGDNEE3.js +0 -84
  240. package/dist/chunk-3VGDNEE3.js.map +0 -1
  241. package/dist/chunk-4K5W7EH2.cjs +0 -112
  242. package/dist/chunk-4K5W7EH2.cjs.map +0 -1
  243. package/dist/chunk-5EFKSKMA.js +0 -413
  244. package/dist/chunk-5EFKSKMA.js.map +0 -1
  245. package/dist/chunk-5HRB36DK.js +0 -405
  246. package/dist/chunk-5HRB36DK.js.map +0 -1
  247. package/dist/chunk-5ON7PUAZ.js +0 -12
  248. package/dist/chunk-5ON7PUAZ.js.map +0 -1
  249. package/dist/chunk-7AXJNQMF.cjs +0 -297
  250. package/dist/chunk-7AXJNQMF.cjs.map +0 -1
  251. package/dist/chunk-7JM3F4KL.js +0 -1795
  252. package/dist/chunk-7JM3F4KL.js.map +0 -1
  253. package/dist/chunk-7USV76HV.cjs +0 -341
  254. package/dist/chunk-7USV76HV.cjs.map +0 -1
  255. package/dist/chunk-A2DZ5BEJ.cjs +0 -1930
  256. package/dist/chunk-A2DZ5BEJ.cjs.map +0 -1
  257. package/dist/chunk-ADBA3XBE.cjs +0 -20
  258. package/dist/chunk-ADBA3XBE.cjs.map +0 -1
  259. package/dist/chunk-AKNGX4TZ.cjs +0 -236
  260. package/dist/chunk-AKNGX4TZ.cjs.map +0 -1
  261. package/dist/chunk-ALYRJ72W.cjs +0 -434
  262. package/dist/chunk-ALYRJ72W.cjs.map +0 -1
  263. package/dist/chunk-AMOJYLG2.cjs +0 -1692
  264. package/dist/chunk-AMOJYLG2.cjs.map +0 -1
  265. package/dist/chunk-AOH6UR2L.js +0 -825
  266. package/dist/chunk-AOH6UR2L.js.map +0 -1
  267. package/dist/chunk-AQNHHJMJ.cjs +0 -261
  268. package/dist/chunk-B7LXJ6LC.cjs +0 -36
  269. package/dist/chunk-B7LXJ6LC.cjs.map +0 -1
  270. package/dist/chunk-BESTLPRK.cjs +0 -6919
  271. package/dist/chunk-BESTLPRK.cjs.map +0 -1
  272. package/dist/chunk-BLI4NIQY.js +0 -98
  273. package/dist/chunk-BLI4NIQY.js.map +0 -1
  274. package/dist/chunk-BSPXMGIS.js +0 -455
  275. package/dist/chunk-BSPXMGIS.js.map +0 -1
  276. package/dist/chunk-C2OMO3WN.cjs +0 -2806
  277. package/dist/chunk-C2OMO3WN.cjs.map +0 -1
  278. package/dist/chunk-CSDQMDU2.js +0 -204
  279. package/dist/chunk-CSDQMDU2.js.map +0 -1
  280. package/dist/chunk-EJ3ILXX6.cjs +0 -223
  281. package/dist/chunk-EJ3ILXX6.cjs.map +0 -1
  282. package/dist/chunk-ENRIK36Q.cjs +0 -94
  283. package/dist/chunk-ENRIK36Q.cjs.map +0 -1
  284. package/dist/chunk-F4UB4XIL.js +0 -109
  285. package/dist/chunk-F4UB4XIL.js.map +0 -1
  286. package/dist/chunk-FD5ZZHEU.js +0 -92
  287. package/dist/chunk-FD5ZZHEU.js.map +0 -1
  288. package/dist/chunk-FE4RC37D.js +0 -2801
  289. package/dist/chunk-FE4RC37D.js.map +0 -1
  290. package/dist/chunk-FEAIOR7N.cjs +0 -91
  291. package/dist/chunk-FEAIOR7N.cjs.map +0 -1
  292. package/dist/chunk-FR7RNOPT.cjs +0 -3303
  293. package/dist/chunk-FR7RNOPT.cjs.map +0 -1
  294. package/dist/chunk-G2YPPLGX.cjs +0 -484
  295. package/dist/chunk-G2YPPLGX.cjs.map +0 -1
  296. package/dist/chunk-GCM5JHMX.js +0 -88
  297. package/dist/chunk-GCM5JHMX.js.map +0 -1
  298. package/dist/chunk-GDEU72RG.cjs +0 -829
  299. package/dist/chunk-GDEU72RG.cjs.map +0 -1
  300. package/dist/chunk-HKTQCQ4Z.cjs +0 -8383
  301. package/dist/chunk-HKTQCQ4Z.cjs.map +0 -1
  302. package/dist/chunk-HWHU642X.cjs +0 -316
  303. package/dist/chunk-HWHU642X.cjs.map +0 -1
  304. package/dist/chunk-ICEKS6YC.cjs +0 -507
  305. package/dist/chunk-ICEKS6YC.cjs.map +0 -1
  306. package/dist/chunk-IJGOFP2J.js +0 -6904
  307. package/dist/chunk-IJGOFP2J.js.map +0 -1
  308. package/dist/chunk-IQJGDZOP.js +0 -333
  309. package/dist/chunk-IQJGDZOP.js.map +0 -1
  310. package/dist/chunk-IT74O4BE.cjs +0 -456
  311. package/dist/chunk-IT74O4BE.cjs.map +0 -1
  312. package/dist/chunk-KXDQKVNX.cjs +0 -459
  313. package/dist/chunk-KXDQKVNX.cjs.map +0 -1
  314. package/dist/chunk-L2TE7PMO.cjs +0 -14
  315. package/dist/chunk-L2TE7PMO.cjs.map +0 -1
  316. package/dist/chunk-L5YHV6BQ.js +0 -499
  317. package/dist/chunk-L5YHV6BQ.js.map +0 -1
  318. package/dist/chunk-LO7HU5WB.cjs +0 -209
  319. package/dist/chunk-LO7HU5WB.cjs.map +0 -1
  320. package/dist/chunk-LSALB3IN.js +0 -292
  321. package/dist/chunk-LSALB3IN.js.map +0 -1
  322. package/dist/chunk-MI7OTUHL.cjs +0 -339
  323. package/dist/chunk-MI7OTUHL.cjs.map +0 -1
  324. package/dist/chunk-MIGXCBXT.cjs +0 -381
  325. package/dist/chunk-MIGXCBXT.cjs.map +0 -1
  326. package/dist/chunk-MVTOCRV2.js +0 -213
  327. package/dist/chunk-MVTOCRV2.js.map +0 -1
  328. package/dist/chunk-N7FNVFXW.cjs +0 -32
  329. package/dist/chunk-N7FNVFXW.cjs.map +0 -1
  330. package/dist/chunk-N7OA4WPJ.js +0 -362
  331. package/dist/chunk-N7OA4WPJ.js.map +0 -1
  332. package/dist/chunk-NAWZATKT.js +0 -478
  333. package/dist/chunk-NAWZATKT.js.map +0 -1
  334. package/dist/chunk-NLNDMWZC.js +0 -31
  335. package/dist/chunk-NLNDMWZC.js.map +0 -1
  336. package/dist/chunk-ORM7CHYZ.js +0 -1531
  337. package/dist/chunk-ORM7CHYZ.js.map +0 -1
  338. package/dist/chunk-OUHT5Z36.cjs +0 -393
  339. package/dist/chunk-OUHT5Z36.cjs.map +0 -1
  340. package/dist/chunk-PCZVMMWU.cjs +0 -74
  341. package/dist/chunk-PCZVMMWU.cjs.map +0 -1
  342. package/dist/chunk-RNKDIXDV.js +0 -336
  343. package/dist/chunk-RNKDIXDV.js.map +0 -1
  344. package/dist/chunk-SBUFNJVE.js +0 -258
  345. package/dist/chunk-SBUFNJVE.js.map +0 -1
  346. package/dist/chunk-TC6BTUSU.cjs +0 -1799
  347. package/dist/chunk-TC6BTUSU.cjs.map +0 -1
  348. package/dist/chunk-TPOK3UNI.js +0 -8355
  349. package/dist/chunk-TPOK3UNI.js.map +0 -1
  350. package/dist/chunk-UF6JG5SG.js +0 -312
  351. package/dist/chunk-UF6JG5SG.js.map +0 -1
  352. package/dist/chunk-UKQHXPGW.js +0 -30
  353. package/dist/chunk-UKQHXPGW.js.map +0 -1
  354. package/dist/chunk-V4XG5QF6.js +0 -1685
  355. package/dist/chunk-V4XG5QF6.js.map +0 -1
  356. package/dist/chunk-VEKIWQ3F.cjs +0 -39
  357. package/dist/chunk-VEKIWQ3F.cjs.map +0 -1
  358. package/dist/chunk-WMQRJTAO.js +0 -3266
  359. package/dist/chunk-WMQRJTAO.js.map +0 -1
  360. package/dist/chunk-X6K3HUOY.cjs +0 -86
  361. package/dist/chunk-X6K3HUOY.cjs.map +0 -1
  362. package/dist/chunk-XBTEO4OB.js +0 -391
  363. package/dist/chunk-XBTEO4OB.js.map +0 -1
  364. package/dist/chunk-XIYYHA65.cjs +0 -101
  365. package/dist/chunk-XIYYHA65.cjs.map +0 -1
  366. package/dist/chunk-YJHY7CMN.cjs +0 -1534
  367. package/dist/chunk-YJHY7CMN.cjs.map +0 -1
  368. package/dist/chunk-YLJ4XMA6.js +0 -33
  369. package/dist/chunk-YLJ4XMA6.js.map +0 -1
  370. package/dist/chunk-YNIWOYW6.js +0 -232
  371. package/dist/chunk-YNIWOYW6.js.map +0 -1
  372. package/dist/chunk-Z2XP767T.cjs +0 -35
  373. package/dist/chunk-Z2XP767T.cjs.map +0 -1
  374. package/dist/chunk-Z4X2RWOF.js +0 -37
  375. package/dist/chunk-Z4X2RWOF.js.map +0 -1
  376. package/dist/chunk-ZN6YYPIW.js +0 -67
  377. package/dist/chunk-ZN6YYPIW.js.map +0 -1
  378. package/dist/chunk-ZNFFTYWH.js +0 -1854
  379. package/dist/chunk-ZNFFTYWH.js.map +0 -1
  380. package/dist/variables.cjs +0 -17
  381. package/dist/variables.cjs.map +0 -1
  382. package/dist/variables.d.cts +0 -87
  383. package/dist/variables.d.ts +0 -87
  384. package/dist/variables.js +0 -4
  385. package/dist/variables.js.map +0 -1
package/README.md CHANGED
@@ -44,10 +44,10 @@ npm install solve-engine
44
44
  ## Quick start
45
45
 
46
46
  ```typescript
47
- import { ExpressionEngine } from "solve-engine";
47
+ import { createEngine } from "solve-engine";
48
48
 
49
- const engine = new ExpressionEngine("en");
50
- const [value] = engine.evaluateExpression("2 + 2 * 10");
49
+ const engine = createEngine();
50
+ const value = engine.evaluateExpression("2 + 2 * 10");
51
51
 
52
52
  console.log(value.toNumber()); // 22
53
53
  ```
@@ -67,7 +67,7 @@ reachable from the module-level data query service, so a parsed engine stays
67
67
  retained until `clear()` releases it.
68
68
 
69
69
  ```typescript
70
- const engine = new ExpressionEngine();
70
+ const engine = createEngine();
71
71
  engine.parseDocument(text);
72
72
  // ... read results ...
73
73
  engine.clear();
@@ -93,7 +93,7 @@ call to remember.
93
93
  ```typescript
94
94
  import { formatValue } from "solve-engine/format";
95
95
 
96
- const [value] = engine.evaluateExpression("10 USD to GBP");
96
+ const value = engine.evaluateExpression("10 USD to GBP");
97
97
  console.log(formatValue(value)); // uses DEFAULT_FORMATTING_SETTINGS if no settings passed
98
98
  ```
99
99
 
@@ -104,8 +104,8 @@ they are:
104
104
 
105
105
  | Subpath | Purpose |
106
106
  |---|---|
107
- | `solve-engine` | Start here, `ExpressionEngine`, `PackageRegistry`/`packageRegistry`, `IEnginePackage`. |
108
- | `solve-engine/engine` | `ExpressionEngine` and its supporting types (`LineEvaluation`, `EvalResults`, etc.) directly, without the package-registration wrapper. |
107
+ | `solve-engine` | Start here, `ExpressionEngine`, `createEngine`, `IEnginePackage`. |
108
+ | `solve-engine/engine` | `ExpressionEngine` and its supporting types (`Explanation`, `EngineSnapshot`, etc.) directly, without the package-registration wrapper. |
109
109
  | `solve-engine/vm` | The bytecode VM: `Value`/`ValueType`, opcode dispatch, `allocatePluginFunctionIndex`. |
110
110
  | `solve-engine/format` | Turning a `Value` into a display string (numbers, dates, units, vectors, ...). |
111
111
  | `solve-engine/language` | Editor-agnostic language service: token categories, completions, highlighting. |
@@ -122,7 +122,6 @@ depend on):
122
122
  | `solve-engine/lexer` | Tokenizer, `LexerVocabulary` for registering custom keywords/operators/units. |
123
123
  | `solve-engine/parser` | Pratt parser, `BytecodeBuilder`, `OpCode`. |
124
124
  | `solve-engine/normalizer` | Post-lexer token transforms (phrase fusion, implicit multiply). |
125
- | `solve-engine/variables` | Variable resolution (`IVariableSource`). |
126
125
  | `solve-engine/resolvers` | Async resolvers (`IAsyncResolver`) for data that loads asynchronously. |
127
126
  | `solve-engine/errors` | `EngineError` and the error factory. |
128
127
  | `solve-engine/utilities` | Small stateless helpers (e.g. `stripQuotes`). |
@@ -136,8 +135,8 @@ minor versions without notice.
136
135
  ## Authoring a package
137
136
 
138
137
  A **package** (`IEnginePackage`) is a plain data descriptor bundling everything needed to
139
- extend the engine with a new domain: custom tokens, parselets, VM opcode handlers, variable
140
- sources, and optional async resolvers. See
138
+ extend the engine with a new domain: custom tokens, parselets, VM opcode handlers, and
139
+ optional async resolvers. See
141
140
  [`solve-engine/api`'s `IEnginePackage`](https://github.com/LiamRiddell/solve-engine/blob/main/packages/engine/src/api/PackageRegistry.ts) for the full field list
142
141
  with inline documentation and examples for each field.
143
142
 
@@ -211,17 +210,13 @@ published package, see `files` in `package.json`, only `dist/` ships):
211
210
 
212
211
  ## Known limitations
213
212
 
214
- **Cross-instance isolation is partial.** Plugin functions, the opcode registry and
215
- variable sources are now owned per `ExpressionEngine`, so two engines with different
216
- package sets no longer interfere across those. The lexer and the currency exchange rates
213
+ **Cross-instance isolation is partial.** Plugin functions and the opcode registry are
214
+ now owned per `ExpressionEngine`, so two engines with different package sets no longer
215
+ interfere across those. The lexer and the currency exchange rates
217
216
  are still module-level singletons, so full isolation between two engines in one process
218
217
  cannot yet be assumed. Tracked as "L1, EngineContext"; three of its five migrations have
219
218
  landed and the remaining two are a prerequisite for 1.0.0 proper.
220
219
 
221
- **`variableSources` does nothing.** A package can declare them, the engine registers and
222
- unregisters them, and no evaluation path ever consults them. Treat the extension point as
223
- absent until that changes.
224
-
225
220
  **Async results need a host hook.** `AsyncResolutionBatcher.onLineResult` is the only
226
221
  mechanism that patches a resolved async value back into the document model, and it is not
227
222
  wired inside the package. A host that does not supply it gets async values that never
@@ -182,6 +182,7 @@ interface UserFunctionDef {
182
182
  * - In-place reset for reuse without reallocation
183
183
  */
184
184
  declare class BytecodeBuilder {
185
+ private readonly pluginFunctionIndex?;
185
186
  private opcodes;
186
187
  private numbers;
187
188
  private strings;
@@ -189,6 +190,23 @@ declare class BytecodeBuilder {
189
190
  private _hasAsync;
190
191
  private userFunctionBodies;
191
192
  private anonymousBodies;
193
+ /**
194
+ * The per-engine `plugin function name -> registry index` map, wired in by
195
+ * the engine so {@link emitPluginCall} can resolve a name at emit time. The
196
+ * same object reference is shared with every builder in an engine (the pool
197
+ * and each ad-hoc nested-body builder), and the engine populates it as
198
+ * packages register, so a parselet never sees the numeric index.
199
+ */
200
+ constructor(pluginFunctionIndex?: ReadonlyMap<string, number> | undefined);
201
+ /** The name->index map, so a nested-body builder inherits the same resolution. */
202
+ get pluginIndexMap(): ReadonlyMap<string, number> | undefined;
203
+ /**
204
+ * Emit a plugin-function call by NAME. The engine assigns each registered
205
+ * `pluginFunctions` entry an index at registration; this resolves the name to
206
+ * that index and emits `CALL_PLUGIN` + index + argCount. Package authors emit
207
+ * through this rather than a hand-allocated index.
208
+ */
209
+ emitPluginCall(name: string, argCount: number): void;
192
210
  /** Emit an {@link OpCode} instruction. */
193
211
  emitOpcode(op: OpCode): void;
194
212
  /**
@@ -182,6 +182,7 @@ interface UserFunctionDef {
182
182
  * - In-place reset for reuse without reallocation
183
183
  */
184
184
  declare class BytecodeBuilder {
185
+ private readonly pluginFunctionIndex?;
185
186
  private opcodes;
186
187
  private numbers;
187
188
  private strings;
@@ -189,6 +190,23 @@ declare class BytecodeBuilder {
189
190
  private _hasAsync;
190
191
  private userFunctionBodies;
191
192
  private anonymousBodies;
193
+ /**
194
+ * The per-engine `plugin function name -> registry index` map, wired in by
195
+ * the engine so {@link emitPluginCall} can resolve a name at emit time. The
196
+ * same object reference is shared with every builder in an engine (the pool
197
+ * and each ad-hoc nested-body builder), and the engine populates it as
198
+ * packages register, so a parselet never sees the numeric index.
199
+ */
200
+ constructor(pluginFunctionIndex?: ReadonlyMap<string, number> | undefined);
201
+ /** The name->index map, so a nested-body builder inherits the same resolution. */
202
+ get pluginIndexMap(): ReadonlyMap<string, number> | undefined;
203
+ /**
204
+ * Emit a plugin-function call by NAME. The engine assigns each registered
205
+ * `pluginFunctions` entry an index at registration; this resolves the name to
206
+ * that index and emits `CALL_PLUGIN` + index + argCount. Package authors emit
207
+ * through this rather than a hand-allocated index.
208
+ */
209
+ emitPluginCall(name: string, argCount: number): void;
192
210
  /** Emit an {@link OpCode} instruction. */
193
211
  emitOpcode(op: OpCode): void;
194
212
  /**
@@ -79,7 +79,7 @@ interface DateConfig {
79
79
  *
80
80
  * Optional and unset by default: with no calendar, working-day arithmetic
81
81
  * skips weekends only. A host that wants holidays excluded too supplies one
82
- * here (`new ExpressionEngine("en", false, { date: { holidays } })`), the
82
+ * here (`new ExpressionEngine({ config: { date: { holidays } } })`), the
83
83
  * same way stocks and weather take a host data source. Threaded into the VM
84
84
  * by `engine/ExpressionEngine.ts` exactly as {@link maxOffsetYears} is,
85
85
  * because working-day math is a VM operation several grammar forms share, so
@@ -261,13 +261,13 @@ interface VMConfig {
261
261
  * ```typescript
262
262
  * import { ExpressionEngine } from "solve-js";
263
263
  *
264
- * const engine = new ExpressionEngine("en", false, {
264
+ * const engine = new ExpressionEngine({ config: {
265
265
  * validation: {
266
266
  * maxExpressionLength: 1000,
267
267
  * maxComplexity: 200,
268
268
  * },
269
269
  * // date, performance, vm, worker, diagnostic all use defaults
270
- * });
270
+ * } });
271
271
  * ```
272
272
  */
273
273
  interface EngineConfig {
@@ -284,6 +284,19 @@ interface EngineConfig {
284
284
  /** Diagnostic pipeline configuration */
285
285
  readonly diagnostic: DiagnosticConfig;
286
286
  }
287
+ /**
288
+ * A partial {@link EngineConfig} override, one section at a time.
289
+ *
290
+ * Overrides are merged per section over {@link DEFAULT_CONFIG}, so you can set a
291
+ * single field of one section (`{ validation: { maxExpressionLength: 1000 } }`)
292
+ * and keep every other default in that section. A plain `Partial<EngineConfig>`
293
+ * cannot express that, it demands a whole section object, which is why the
294
+ * documented overrides never typechecked against it. This is the type the
295
+ * constructor and {@link createEngine} accept.
296
+ */
297
+ type EngineConfigOverride = {
298
+ readonly [K in keyof EngineConfig]?: Partial<EngineConfig[K]>;
299
+ };
287
300
  /**
288
301
  * Default configuration values
289
302
  */
@@ -355,4 +368,4 @@ interface ValidationResult {
355
368
  warnings?: string[];
356
369
  }
357
370
 
358
- export { ConfigManager as C, DEFAULT_CONFIG as D, type EngineConfig as E, type HolidayCalendar as H, type PerformanceConfig as P, type VMConfig as V, type WorkerConfig as W, type DateConfig as a, type DiagnosticConfig as b, type HolidayPredicate as c, type ValidationConfig as d, type ValidationResult as e };
371
+ export { ConfigManager as C, DEFAULT_CONFIG as D, type EngineConfigOverride as E, type HolidayCalendar as H, type PerformanceConfig as P, type VMConfig as V, type WorkerConfig as W, type EngineConfig as a, type DateConfig as b, type DiagnosticConfig as c, type HolidayPredicate as d, type ValidationConfig as e, type ValidationResult as f };
@@ -79,7 +79,7 @@ interface DateConfig {
79
79
  *
80
80
  * Optional and unset by default: with no calendar, working-day arithmetic
81
81
  * skips weekends only. A host that wants holidays excluded too supplies one
82
- * here (`new ExpressionEngine("en", false, { date: { holidays } })`), the
82
+ * here (`new ExpressionEngine({ config: { date: { holidays } } })`), the
83
83
  * same way stocks and weather take a host data source. Threaded into the VM
84
84
  * by `engine/ExpressionEngine.ts` exactly as {@link maxOffsetYears} is,
85
85
  * because working-day math is a VM operation several grammar forms share, so
@@ -261,13 +261,13 @@ interface VMConfig {
261
261
  * ```typescript
262
262
  * import { ExpressionEngine } from "solve-js";
263
263
  *
264
- * const engine = new ExpressionEngine("en", false, {
264
+ * const engine = new ExpressionEngine({ config: {
265
265
  * validation: {
266
266
  * maxExpressionLength: 1000,
267
267
  * maxComplexity: 200,
268
268
  * },
269
269
  * // date, performance, vm, worker, diagnostic all use defaults
270
- * });
270
+ * } });
271
271
  * ```
272
272
  */
273
273
  interface EngineConfig {
@@ -284,6 +284,19 @@ interface EngineConfig {
284
284
  /** Diagnostic pipeline configuration */
285
285
  readonly diagnostic: DiagnosticConfig;
286
286
  }
287
+ /**
288
+ * A partial {@link EngineConfig} override, one section at a time.
289
+ *
290
+ * Overrides are merged per section over {@link DEFAULT_CONFIG}, so you can set a
291
+ * single field of one section (`{ validation: { maxExpressionLength: 1000 } }`)
292
+ * and keep every other default in that section. A plain `Partial<EngineConfig>`
293
+ * cannot express that, it demands a whole section object, which is why the
294
+ * documented overrides never typechecked against it. This is the type the
295
+ * constructor and {@link createEngine} accept.
296
+ */
297
+ type EngineConfigOverride = {
298
+ readonly [K in keyof EngineConfig]?: Partial<EngineConfig[K]>;
299
+ };
287
300
  /**
288
301
  * Default configuration values
289
302
  */
@@ -355,4 +368,4 @@ interface ValidationResult {
355
368
  warnings?: string[];
356
369
  }
357
370
 
358
- export { ConfigManager as C, DEFAULT_CONFIG as D, type EngineConfig as E, type HolidayCalendar as H, type PerformanceConfig as P, type VMConfig as V, type WorkerConfig as W, type DateConfig as a, type DiagnosticConfig as b, type HolidayPredicate as c, type ValidationConfig as d, type ValidationResult as e };
371
+ export { ConfigManager as C, DEFAULT_CONFIG as D, type EngineConfigOverride as E, type HolidayCalendar as H, type PerformanceConfig as P, type VMConfig as V, type WorkerConfig as W, type EngineConfig as a, type DateConfig as b, type DiagnosticConfig as c, type HolidayPredicate as d, type ValidationConfig as e, type ValidationResult as f };
@@ -52,6 +52,8 @@ declare const CoreErrorCodes: {
52
52
  readonly TOO_MANY_FUNCTION_DEFINITIONS: "TOO_MANY_FUNCTION_DEFINITIONS";
53
53
  /** `BytecodeBuilder`'s `anonymousBodies` side-table (map/reduce inline transform bodies) exceeding its capacity. Same class as `TOO_MANY_FUNCTION_DEFINITIONS` above. */
54
54
  readonly TOO_MANY_ANONYMOUS_BODIES: "TOO_MANY_ANONYMOUS_BODIES";
55
+ /** New with the 2.0 descriptor redesign: a parselet emits a plugin call by NAME (`BytecodeBuilder.emitPluginCall(name, argCount)`) and the engine resolves that name to the index it assigned at registration. This fires when the name is absent from the builder's name->index map: the package used a `pluginFunctions` name it never declared, or the expression was parsed before that package registered. Not a user-input error; a package-authoring/registration fault. See `parser/BytecodeBuilder.ts`'s `emitPluginCall()`. */
56
+ readonly UNKNOWN_PLUGIN_FUNCTION: "UNKNOWN_PLUGIN_FUNCTION";
55
57
  readonly EVALUATION_ERROR: "EVALUATION_ERROR";
56
58
  readonly INSTRUCTION_LIMIT_EXCEEDED: "INSTRUCTION_LIMIT_EXCEEDED";
57
59
  readonly STACK_LIMIT_EXCEEDED: "STACK_LIMIT_EXCEEDED";
@@ -52,6 +52,8 @@ declare const CoreErrorCodes: {
52
52
  readonly TOO_MANY_FUNCTION_DEFINITIONS: "TOO_MANY_FUNCTION_DEFINITIONS";
53
53
  /** `BytecodeBuilder`'s `anonymousBodies` side-table (map/reduce inline transform bodies) exceeding its capacity. Same class as `TOO_MANY_FUNCTION_DEFINITIONS` above. */
54
54
  readonly TOO_MANY_ANONYMOUS_BODIES: "TOO_MANY_ANONYMOUS_BODIES";
55
+ /** New with the 2.0 descriptor redesign: a parselet emits a plugin call by NAME (`BytecodeBuilder.emitPluginCall(name, argCount)`) and the engine resolves that name to the index it assigned at registration. This fires when the name is absent from the builder's name->index map: the package used a `pluginFunctions` name it never declared, or the expression was parsed before that package registered. Not a user-input error; a package-authoring/registration fault. See `parser/BytecodeBuilder.ts`'s `emitPluginCall()`. */
56
+ readonly UNKNOWN_PLUGIN_FUNCTION: "UNKNOWN_PLUGIN_FUNCTION";
55
57
  readonly EVALUATION_ERROR: "EVALUATION_ERROR";
56
58
  readonly INSTRUCTION_LIMIT_EXCEEDED: "INSTRUCTION_LIMIT_EXCEEDED";
57
59
  readonly STACK_LIMIT_EXCEEDED: "STACK_LIMIT_EXCEEDED";
@@ -1,4 +1,4 @@
1
- import { I as IEnginePackage } from './PackageRegistry-DnJYVw9G.cjs';
1
+ import { I as IEnginePackage } from './PackageRegistry-dpdurBVO.cjs';
2
2
 
3
3
  /**
4
4
  * Package load-time compatibility checking, the "detect overlapping
@@ -41,7 +41,7 @@ import { I as IEnginePackage } from './PackageRegistry-DnJYVw9G.cjs';
41
41
  /** How serious a detected conflict is. */
42
42
  type CompatibilitySeverity = "error" | "warning" | "info";
43
43
  /** The category of overlap detected between two packages. */
44
- type CompatibilityConflictKind = "prefixParseletTokenType" | "infixParseletTokenType" | "phrase" | "converterName" | "pluginFunctionIndex" | "lexerKeyword" | "lexerOperator" | "asyncResolverNamespace" | "tokenCategory";
44
+ type CompatibilityConflictKind = "prefixParseletTokenType" | "infixParseletTokenType" | "phrase" | "converterName" | "pluginFunctionName" | "lexerKeyword" | "lexerOperator" | "asyncResolverNamespace" | "tokenCategory" | "normalizerRuleName";
45
45
  /** One way two packages collide, for example claiming the same keyword. */
46
46
  interface CompatibilityConflict {
47
47
  kind: CompatibilityConflictKind;
@@ -1,4 +1,4 @@
1
- import { I as IEnginePackage } from './PackageRegistry-DrCPQNyy.js';
1
+ import { I as IEnginePackage } from './PackageRegistry-DzeiWcv4.js';
2
2
 
3
3
  /**
4
4
  * Package load-time compatibility checking, the "detect overlapping
@@ -41,7 +41,7 @@ import { I as IEnginePackage } from './PackageRegistry-DrCPQNyy.js';
41
41
  /** How serious a detected conflict is. */
42
42
  type CompatibilitySeverity = "error" | "warning" | "info";
43
43
  /** The category of overlap detected between two packages. */
44
- type CompatibilityConflictKind = "prefixParseletTokenType" | "infixParseletTokenType" | "phrase" | "converterName" | "pluginFunctionIndex" | "lexerKeyword" | "lexerOperator" | "asyncResolverNamespace" | "tokenCategory";
44
+ type CompatibilityConflictKind = "prefixParseletTokenType" | "infixParseletTokenType" | "phrase" | "converterName" | "pluginFunctionName" | "lexerKeyword" | "lexerOperator" | "asyncResolverNamespace" | "tokenCategory" | "normalizerRuleName";
45
45
  /** One way two packages collide, for example claiming the same keyword. */
46
46
  interface CompatibilityConflict {
47
47
  kind: CompatibilityConflictKind;