solve-engine 1.0.1 → 1.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 (237) hide show
  1. package/dist/{BytecodeBuilder-B0xskcv5.d.cts → BytecodeBuilder-Bp9xeTmX.d.cts} +4 -0
  2. package/dist/{BytecodeBuilder-B0xskcv5.d.ts → BytecodeBuilder-Bp9xeTmX.d.ts} +4 -0
  3. package/dist/{Configuration-B-G5gTRn.d.cts → Configuration-C9W8tJv_.d.cts} +53 -1
  4. package/dist/{Configuration-B-G5gTRn.d.ts → Configuration-C9W8tJv_.d.ts} +53 -1
  5. package/dist/{EngineError-LU7W7AgI.d.cts → EngineError-B61GS1jp.d.cts} +14 -0
  6. package/dist/{EngineError-LU7W7AgI.d.ts → EngineError-B61GS1jp.d.ts} +14 -0
  7. package/dist/FormattingSettings-CJHyxcYu.d.cts +27 -0
  8. package/dist/FormattingSettings-CJHyxcYu.d.ts +27 -0
  9. package/dist/{Lexer-D78E2yDW.d.cts → Lexer-BOs7euZe.d.cts} +58 -1
  10. package/dist/{Lexer-BN5mt30n.d.ts → Lexer-CSI_lwbW.d.ts} +58 -1
  11. package/dist/PackageCompatibility-B-7rK1TD.d.cts +76 -0
  12. package/dist/PackageCompatibility-Dh59eF-X.d.ts +76 -0
  13. package/dist/{PackageRegistry-B37mRvvz.d.cts → PackageRegistry-BHWJP83F.d.cts} +449 -11
  14. package/dist/{PackageRegistry-DCUEzbQt.d.ts → PackageRegistry-_8rDlvxI.d.ts} +449 -11
  15. package/dist/{Parselet-BaySkMV3.d.ts → Parselet-BBT8riYh.d.ts} +12 -3
  16. package/dist/{Parselet-DuI1Pjiq.d.cts → Parselet-BHcgK9S7.d.cts} +12 -3
  17. package/dist/{ScopeManager-B6GzdhVG.d.cts → ScopeManager-8vf02dwj.d.cts} +56 -5
  18. package/dist/{ScopeManager-udv4Twwq.d.ts → ScopeManager-CxA24W5n.d.ts} +56 -5
  19. package/dist/{Token-BzG5G4ja.d.cts → Token-B1hdkedD.d.cts} +9 -0
  20. package/dist/{Token-BzG5G4ja.d.ts → Token-B1hdkedD.d.ts} +9 -0
  21. package/dist/{TokenNormalizer-t_GotBxr.d.ts → TokenNormalizer-C6VzZgHa.d.ts} +1 -1
  22. package/dist/{TokenNormalizer-DGVa24Q-.d.cts → TokenNormalizer-DRc1Js1V.d.cts} +1 -1
  23. package/dist/{VMCheckpoints-DwLjivM7.d.cts → VMCheckpoints-ELYqITdF.d.cts} +3 -3
  24. package/dist/{VMCheckpoints-BiaIlOOY.d.ts → VMCheckpoints-MK--EBH2.d.ts} +3 -3
  25. package/dist/{Value-CXJqDH9J.d.cts → Value-BUi1RA3S.d.cts} +124 -5
  26. package/dist/{Value-CXJqDH9J.d.ts → Value-BUi1RA3S.d.ts} +124 -5
  27. package/dist/WorkerError-_-RkoQ5P.d.ts +75 -0
  28. package/dist/WorkerError-gzmaopj2.d.cts +75 -0
  29. package/dist/{chunk-GQCOSXMG.js → chunk-267JPOTF.js} +43 -5
  30. package/dist/chunk-267JPOTF.js.map +1 -0
  31. package/dist/{chunk-JMXUNXQS.cjs → chunk-2TZKENDH.cjs} +51 -8
  32. package/dist/chunk-2TZKENDH.cjs.map +1 -0
  33. package/dist/chunk-3OWCDIPN.js +215 -0
  34. package/dist/chunk-3OWCDIPN.js.map +1 -0
  35. package/dist/{chunk-VB37OC6I.js → chunk-4D6NIHE2.js} +40 -3
  36. package/dist/chunk-4D6NIHE2.js.map +1 -0
  37. package/dist/{chunk-TY3TLZAW.cjs → chunk-536WPM2V.cjs} +18 -2
  38. package/dist/chunk-536WPM2V.cjs.map +1 -0
  39. package/dist/chunk-5HRB36DK.js +405 -0
  40. package/dist/chunk-5HRB36DK.js.map +1 -0
  41. package/dist/chunk-5ON7PUAZ.js +12 -0
  42. package/dist/chunk-5ON7PUAZ.js.map +1 -0
  43. package/dist/{chunk-KV7UW6T6.js → chunk-7KYSUDQO.js} +12 -5
  44. package/dist/chunk-7KYSUDQO.js.map +1 -0
  45. package/dist/{chunk-6WFMPTGB.cjs → chunk-7ZX6B7SY.cjs} +774 -528
  46. package/dist/chunk-7ZX6B7SY.cjs.map +1 -0
  47. package/dist/chunk-ALYRJ72W.cjs +434 -0
  48. package/dist/chunk-ALYRJ72W.cjs.map +1 -0
  49. package/dist/{chunk-5KMIY374.cjs → chunk-B4HBEFTB.cjs} +17 -2
  50. package/dist/chunk-B4HBEFTB.cjs.map +1 -0
  51. package/dist/chunk-B7NLZMQ3.cjs +74 -0
  52. package/dist/chunk-B7NLZMQ3.cjs.map +1 -0
  53. package/dist/{chunk-UQ3UIZJC.js → chunk-BLI4NIQY.js} +6 -2
  54. package/dist/chunk-BLI4NIQY.js.map +1 -0
  55. package/dist/{chunk-BHTNFEGZ.cjs → chunk-C75AFGVD.cjs} +11 -11
  56. package/dist/{chunk-BHTNFEGZ.cjs.map → chunk-C75AFGVD.cjs.map} +1 -1
  57. package/dist/{chunk-G535KJEG.js → chunk-CCBZZQAE.js} +2 -2
  58. package/dist/{chunk-G535KJEG.js.map → chunk-CCBZZQAE.js.map} +1 -1
  59. package/dist/chunk-CKQMXMHR.cjs +219 -0
  60. package/dist/chunk-CKQMXMHR.cjs.map +1 -0
  61. package/dist/{chunk-PFUESQTW.cjs → chunk-EJ3ILXX6.cjs} +48 -2
  62. package/dist/chunk-EJ3ILXX6.cjs.map +1 -0
  63. package/dist/{chunk-526PMQOA.js → chunk-ENKKJYD3.js} +10 -4
  64. package/dist/chunk-ENKKJYD3.js.map +1 -0
  65. package/dist/{chunk-5X2PTP6F.cjs → chunk-ENRIK36Q.cjs} +2 -12
  66. package/dist/chunk-ENRIK36Q.cjs.map +1 -0
  67. package/dist/{chunk-3D7V24DG.js → chunk-ERCOHGXD.js} +17 -2
  68. package/dist/chunk-ERCOHGXD.js.map +1 -0
  69. package/dist/{chunk-IF532O7C.js → chunk-FD5ZZHEU.js} +3 -12
  70. package/dist/chunk-FD5ZZHEU.js.map +1 -0
  71. package/dist/{chunk-TBN7DEHO.js → chunk-G7Z4HJQA.js} +11 -5
  72. package/dist/chunk-G7Z4HJQA.js.map +1 -0
  73. package/dist/{chunk-QY25VWBF.js → chunk-GQMUHVE3.js} +142 -6
  74. package/dist/chunk-GQMUHVE3.js.map +1 -0
  75. package/dist/chunk-GUG7SNSV.js +1764 -0
  76. package/dist/chunk-GUG7SNSV.js.map +1 -0
  77. package/dist/{chunk-UM6BVY2S.cjs → chunk-HIQ5HSZL.cjs} +175 -43
  78. package/dist/chunk-HIQ5HSZL.cjs.map +1 -0
  79. package/dist/{chunk-HVQFNJKE.cjs → chunk-HVRVSI2Z.cjs} +104 -86
  80. package/dist/chunk-HVRVSI2Z.cjs.map +1 -0
  81. package/dist/{chunk-3LAEG75D.js → chunk-I4GAWIPW.js} +24 -6
  82. package/dist/chunk-I4GAWIPW.js.map +1 -0
  83. package/dist/{chunk-PA4VC73I.cjs → chunk-J45BCEZ4.cjs} +33 -27
  84. package/dist/chunk-J45BCEZ4.cjs.map +1 -0
  85. package/dist/{chunk-V5PYO44Y.js → chunk-JIPATHVY.js} +1853 -2638
  86. package/dist/chunk-JIPATHVY.js.map +1 -0
  87. package/dist/{chunk-YPPPYLSR.js → chunk-JJIXHXFQ.js} +5 -5
  88. package/dist/{chunk-YPPPYLSR.js.map → chunk-JJIXHXFQ.js.map} +1 -1
  89. package/dist/chunk-L2TE7PMO.cjs +14 -0
  90. package/dist/chunk-L2TE7PMO.cjs.map +1 -0
  91. package/dist/{chunk-B7TLZABL.cjs → chunk-MG6Q3DUO.cjs} +1962 -2746
  92. package/dist/chunk-MG6Q3DUO.cjs.map +1 -0
  93. package/dist/{chunk-R3PY4G7J.js → chunk-MVTOCRV2.js} +48 -3
  94. package/dist/chunk-MVTOCRV2.js.map +1 -0
  95. package/dist/{chunk-Y7FT4IQT.js → chunk-NKW7LKYU.js} +266 -28
  96. package/dist/chunk-NKW7LKYU.js.map +1 -0
  97. package/dist/{chunk-O3ANBHSA.js → chunk-NNQ2TYDF.js} +123 -5
  98. package/dist/chunk-NNQ2TYDF.js.map +1 -0
  99. package/dist/{chunk-5F4C26RU.js → chunk-OADDUPT3.js} +4 -4
  100. package/dist/{chunk-5F4C26RU.js.map → chunk-OADDUPT3.js.map} +1 -1
  101. package/dist/{chunk-3AFRJYP4.cjs → chunk-OTN6SZOD.cjs} +1868 -393
  102. package/dist/chunk-OTN6SZOD.cjs.map +1 -0
  103. package/dist/{chunk-5LI5EPGJ.cjs → chunk-QFTDTX6K.cjs} +40 -3
  104. package/dist/chunk-QFTDTX6K.cjs.map +1 -0
  105. package/dist/{chunk-HMOISHXR.js → chunk-RRLHC37V.js} +1530 -57
  106. package/dist/chunk-RRLHC37V.js.map +1 -0
  107. package/dist/chunk-SNHVVOJK.cjs +1768 -0
  108. package/dist/chunk-SNHVVOJK.cjs.map +1 -0
  109. package/dist/{chunk-HDP7VK3C.cjs → chunk-SRGQ72IR.cjs} +649 -349
  110. package/dist/chunk-SRGQ72IR.cjs.map +1 -0
  111. package/dist/{chunk-4B2CNWQU.cjs → chunk-SSV46KFA.cjs} +14 -7
  112. package/dist/chunk-SSV46KFA.cjs.map +1 -0
  113. package/dist/{chunk-AJA6LUI7.js → chunk-UO6BUV6K.js} +18 -2
  114. package/dist/chunk-UO6BUV6K.js.map +1 -0
  115. package/dist/chunk-WWQEY7BV.js +67 -0
  116. package/dist/chunk-WWQEY7BV.js.map +1 -0
  117. package/dist/{chunk-5WVP4YHP.js → chunk-WXEHD6TT.js} +333 -33
  118. package/dist/chunk-WXEHD6TT.js.map +1 -0
  119. package/dist/{chunk-47LRVGOT.cjs → chunk-XA4CKRML.cjs} +2 -2
  120. package/dist/{chunk-47LRVGOT.cjs.map → chunk-XA4CKRML.cjs.map} +1 -1
  121. package/dist/{chunk-6KFYJ6TD.cjs → chunk-XIYYHA65.cjs} +6 -2
  122. package/dist/chunk-XIYYHA65.cjs.map +1 -0
  123. package/dist/{chunk-KBSXGXPM.cjs → chunk-XJGJCF2R.cjs} +6 -6
  124. package/dist/{chunk-KBSXGXPM.cjs.map → chunk-XJGJCF2R.cjs.map} +1 -1
  125. package/dist/{chunk-YWQ6V4ZN.cjs → chunk-YTIYVHL7.cjs} +211 -75
  126. package/dist/chunk-YTIYVHL7.cjs.map +1 -0
  127. package/dist/{chunk-TMA4RCEN.js → chunk-Z7XGGLI2.js} +3 -3
  128. package/dist/{chunk-TMA4RCEN.js.map → chunk-Z7XGGLI2.js.map} +1 -1
  129. package/dist/{chunk-A2N2GFCG.cjs → chunk-ZVTWQLK4.cjs} +10 -10
  130. package/dist/{chunk-A2N2GFCG.cjs.map → chunk-ZVTWQLK4.cjs.map} +1 -1
  131. package/dist/{chunk-2XLQPQKI.cjs → chunk-ZXCESUJS.cjs} +15 -9
  132. package/dist/chunk-ZXCESUJS.cjs.map +1 -0
  133. package/dist/constants.cjs +5 -5
  134. package/dist/constants.d.cts +1 -1
  135. package/dist/constants.d.ts +1 -1
  136. package/dist/constants.js +2 -2
  137. package/dist/engine.cjs +52 -35
  138. package/dist/engine.d.cts +13 -13
  139. package/dist/engine.d.ts +13 -13
  140. package/dist/engine.js +26 -21
  141. package/dist/errors.cjs +44 -19
  142. package/dist/errors.d.cts +3 -2
  143. package/dist/errors.d.ts +3 -2
  144. package/dist/errors.js +2 -1
  145. package/dist/format.cjs +19 -169
  146. package/dist/format.cjs.map +1 -1
  147. package/dist/format.d.cts +18 -26
  148. package/dist/format.d.ts +18 -26
  149. package/dist/format.js +7 -171
  150. package/dist/format.js.map +1 -1
  151. package/dist/index.cjs +250 -31
  152. package/dist/index.cjs.map +1 -1
  153. package/dist/index.d.cts +110 -74
  154. package/dist/index.d.ts +110 -74
  155. package/dist/index.js +228 -23
  156. package/dist/index.js.map +1 -1
  157. package/dist/language.cjs +9 -9
  158. package/dist/language.d.cts +12 -12
  159. package/dist/language.d.ts +12 -12
  160. package/dist/language.js +3 -3
  161. package/dist/lexer.cjs +16 -16
  162. package/dist/lexer.d.cts +3 -3
  163. package/dist/lexer.d.ts +3 -3
  164. package/dist/lexer.js +5 -5
  165. package/dist/normalizer.cjs +10 -10
  166. package/dist/normalizer.d.cts +3 -3
  167. package/dist/normalizer.d.ts +3 -3
  168. package/dist/normalizer.js +4 -4
  169. package/dist/packages.cjs +45 -36
  170. package/dist/packages.d.cts +135 -31
  171. package/dist/packages.d.ts +135 -31
  172. package/dist/packages.js +14 -13
  173. package/dist/parser.cjs +16 -16
  174. package/dist/parser.d.cts +6 -5
  175. package/dist/parser.d.ts +6 -5
  176. package/dist/parser.js +6 -6
  177. package/dist/{pipeline-BEb3hujr.d.cts → pipeline-CtfJtPQc.d.cts} +3 -3
  178. package/dist/{pipeline-B6k5lCB7.d.ts → pipeline-DCd5M6Gk.d.ts} +3 -3
  179. package/dist/resolvers.d.cts +3 -3
  180. package/dist/resolvers.d.ts +3 -3
  181. package/dist/testing.cjs +478 -0
  182. package/dist/testing.cjs.map +1 -0
  183. package/dist/testing.d.cts +271 -0
  184. package/dist/testing.d.ts +271 -0
  185. package/dist/testing.js +470 -0
  186. package/dist/testing.js.map +1 -0
  187. package/dist/uom.cjs +16 -16
  188. package/dist/uom.d.cts +3 -3
  189. package/dist/uom.d.ts +3 -3
  190. package/dist/uom.js +6 -6
  191. package/dist/utilities.cjs +6 -5
  192. package/dist/utilities.js +2 -1
  193. package/dist/vm.cjs +34 -34
  194. package/dist/vm.d.cts +8 -8
  195. package/dist/vm.d.ts +8 -8
  196. package/dist/vm.js +9 -9
  197. package/dist/worker.cjs +493 -0
  198. package/dist/worker.cjs.map +1 -0
  199. package/dist/worker.d.cts +509 -0
  200. package/dist/worker.d.ts +509 -0
  201. package/dist/worker.js +484 -0
  202. package/dist/worker.js.map +1 -0
  203. package/package.json +21 -1
  204. package/dist/chunk-2XLQPQKI.cjs.map +0 -1
  205. package/dist/chunk-3AFRJYP4.cjs.map +0 -1
  206. package/dist/chunk-3D7V24DG.js.map +0 -1
  207. package/dist/chunk-3LAEG75D.js.map +0 -1
  208. package/dist/chunk-4B2CNWQU.cjs.map +0 -1
  209. package/dist/chunk-526PMQOA.js.map +0 -1
  210. package/dist/chunk-5KMIY374.cjs.map +0 -1
  211. package/dist/chunk-5LI5EPGJ.cjs.map +0 -1
  212. package/dist/chunk-5WVP4YHP.js.map +0 -1
  213. package/dist/chunk-5X2PTP6F.cjs.map +0 -1
  214. package/dist/chunk-6KFYJ6TD.cjs.map +0 -1
  215. package/dist/chunk-6WFMPTGB.cjs.map +0 -1
  216. package/dist/chunk-AJA6LUI7.js.map +0 -1
  217. package/dist/chunk-B7TLZABL.cjs.map +0 -1
  218. package/dist/chunk-GQCOSXMG.js.map +0 -1
  219. package/dist/chunk-HDP7VK3C.cjs.map +0 -1
  220. package/dist/chunk-HMOISHXR.js.map +0 -1
  221. package/dist/chunk-HVQFNJKE.cjs.map +0 -1
  222. package/dist/chunk-IF532O7C.js.map +0 -1
  223. package/dist/chunk-JMXUNXQS.cjs.map +0 -1
  224. package/dist/chunk-KV7UW6T6.js.map +0 -1
  225. package/dist/chunk-O3ANBHSA.js.map +0 -1
  226. package/dist/chunk-PA4VC73I.cjs.map +0 -1
  227. package/dist/chunk-PFUESQTW.cjs.map +0 -1
  228. package/dist/chunk-QY25VWBF.js.map +0 -1
  229. package/dist/chunk-R3PY4G7J.js.map +0 -1
  230. package/dist/chunk-TBN7DEHO.js.map +0 -1
  231. package/dist/chunk-TY3TLZAW.cjs.map +0 -1
  232. package/dist/chunk-UM6BVY2S.cjs.map +0 -1
  233. package/dist/chunk-UQ3UIZJC.js.map +0 -1
  234. package/dist/chunk-V5PYO44Y.js.map +0 -1
  235. package/dist/chunk-VB37OC6I.js.map +0 -1
  236. package/dist/chunk-Y7FT4IQT.js.map +0 -1
  237. package/dist/chunk-YWQ6V4ZN.cjs.map +0 -1
package/dist/lexer.js CHANGED
@@ -1,11 +1,11 @@
1
- export { Lexer, LexerState, buildTokenLookup, sharedLexer } from './chunk-5F4C26RU.js';
2
- import './chunk-AJA6LUI7.js';
3
- export { ExpressionLexer, LexerToken } from './chunk-QY25VWBF.js';
4
- export { TokenTypes, registerAllTokenTypes, registerTokenType, tokenTypeId, tokenTypeName } from './chunk-VB37OC6I.js';
1
+ export { Lexer, LexerState, buildTokenLookup, sharedLexer } from './chunk-OADDUPT3.js';
2
+ import './chunk-UO6BUV6K.js';
3
+ export { ExpressionLexer, LexerToken } from './chunk-GQMUHVE3.js';
4
+ export { TokenTypes, registerAllTokenTypes, registerTokenType, tokenTypeId, tokenTypeName } from './chunk-4D6NIHE2.js';
5
5
  import './chunk-XBTEO4OB.js';
6
6
  export { knownUnits } from './chunk-SBUFNJVE.js';
7
7
  import './chunk-V4XG5QF6.js';
8
- import './chunk-3D7V24DG.js';
8
+ import './chunk-ERCOHGXD.js';
9
9
  import './chunk-YLJ4XMA6.js';
10
10
  //# sourceMappingURL=lexer.js.map
11
11
  //# sourceMappingURL=lexer.js.map
@@ -1,40 +1,40 @@
1
1
  'use strict';
2
2
 
3
3
  require('./chunk-NGBBNL4K.cjs');
4
- var chunkBHTNFEGZ_cjs = require('./chunk-BHTNFEGZ.cjs');
5
- require('./chunk-YWQ6V4ZN.cjs');
6
- require('./chunk-5LI5EPGJ.cjs');
4
+ var chunkC75AFGVD_cjs = require('./chunk-C75AFGVD.cjs');
5
+ require('./chunk-YTIYVHL7.cjs');
6
+ require('./chunk-QFTDTX6K.cjs');
7
7
  require('./chunk-OUHT5Z36.cjs');
8
8
  require('./chunk-AQNHHJMJ.cjs');
9
9
  require('./chunk-AMOJYLG2.cjs');
10
- require('./chunk-5KMIY374.cjs');
10
+ require('./chunk-B4HBEFTB.cjs');
11
11
  require('./chunk-B7LXJ6LC.cjs');
12
12
 
13
13
 
14
14
 
15
15
  Object.defineProperty(exports, "BUILTIN_PHRASES", {
16
16
  enumerable: true,
17
- get: function () { return chunkBHTNFEGZ_cjs.BUILTIN_PHRASES; }
17
+ get: function () { return chunkC75AFGVD_cjs.BUILTIN_PHRASES; }
18
18
  });
19
19
  Object.defineProperty(exports, "PhraseTrie", {
20
20
  enumerable: true,
21
- get: function () { return chunkBHTNFEGZ_cjs.PhraseTrie; }
21
+ get: function () { return chunkC75AFGVD_cjs.PhraseTrie; }
22
22
  });
23
23
  Object.defineProperty(exports, "TokenNormalizer", {
24
24
  enumerable: true,
25
- get: function () { return chunkBHTNFEGZ_cjs.TokenNormalizer; }
25
+ get: function () { return chunkC75AFGVD_cjs.TokenNormalizer; }
26
26
  });
27
27
  Object.defineProperty(exports, "createBuiltinNormalizerRules", {
28
28
  enumerable: true,
29
- get: function () { return chunkBHTNFEGZ_cjs.createBuiltinNormalizerRules; }
29
+ get: function () { return chunkC75AFGVD_cjs.createBuiltinNormalizerRules; }
30
30
  });
31
31
  Object.defineProperty(exports, "createFusedToken", {
32
32
  enumerable: true,
33
- get: function () { return chunkBHTNFEGZ_cjs.createFusedToken; }
33
+ get: function () { return chunkC75AFGVD_cjs.createFusedToken; }
34
34
  });
35
35
  Object.defineProperty(exports, "implicitMultiplyRule", {
36
36
  enumerable: true,
37
- get: function () { return chunkBHTNFEGZ_cjs.implicitMultiplyRule; }
37
+ get: function () { return chunkC75AFGVD_cjs.implicitMultiplyRule; }
38
38
  });
39
39
  //# sourceMappingURL=normalizer.cjs.map
40
40
  //# sourceMappingURL=normalizer.cjs.map
@@ -1,6 +1,6 @@
1
- import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-DGVa24Q-.cjs';
2
- export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-DGVa24Q-.cjs';
3
- import { T as Token } from './Token-BzG5G4ja.cjs';
1
+ import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-DRc1Js1V.cjs';
2
+ export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-DRc1Js1V.cjs';
3
+ import { T as Token } from './Token-B1hdkedD.cjs';
4
4
 
5
5
  /**
6
6
  * PhraseTrie, optimized word-level trie for multi-word phrase fusion.
@@ -1,6 +1,6 @@
1
- import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-t_GotBxr.js';
2
- export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-t_GotBxr.js';
3
- import { T as Token } from './Token-BzG5G4ja.js';
1
+ import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-C6VzZgHa.js';
2
+ export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-C6VzZgHa.js';
3
+ import { T as Token } from './Token-B1hdkedD.js';
4
4
 
5
5
  /**
6
6
  * PhraseTrie, optimized word-level trie for multi-word phrase fusion.
@@ -1,11 +1,11 @@
1
1
  import './chunk-2RWAXT6O.js';
2
- export { BUILTIN_PHRASES, PhraseTrie, TokenNormalizer, createBuiltinNormalizerRules, createFusedToken, implicitMultiplyRule } from './chunk-YPPPYLSR.js';
3
- import './chunk-QY25VWBF.js';
4
- import './chunk-VB37OC6I.js';
2
+ export { BUILTIN_PHRASES, PhraseTrie, TokenNormalizer, createBuiltinNormalizerRules, createFusedToken, implicitMultiplyRule } from './chunk-JJIXHXFQ.js';
3
+ import './chunk-GQMUHVE3.js';
4
+ import './chunk-4D6NIHE2.js';
5
5
  import './chunk-XBTEO4OB.js';
6
6
  import './chunk-SBUFNJVE.js';
7
7
  import './chunk-V4XG5QF6.js';
8
- import './chunk-3D7V24DG.js';
8
+ import './chunk-ERCOHGXD.js';
9
9
  import './chunk-YLJ4XMA6.js';
10
10
  //# sourceMappingURL=normalizer.js.map
11
11
  //# sourceMappingURL=normalizer.js.map
package/dist/packages.cjs CHANGED
@@ -1,120 +1,129 @@
1
1
  'use strict';
2
2
 
3
- var chunk3AFRJYP4_cjs = require('./chunk-3AFRJYP4.cjs');
4
- require('./chunk-PA4VC73I.cjs');
5
- require('./chunk-BHTNFEGZ.cjs');
3
+ var chunkOTN6SZOD_cjs = require('./chunk-OTN6SZOD.cjs');
4
+ require('./chunk-J45BCEZ4.cjs');
5
+ require('./chunk-C75AFGVD.cjs');
6
6
  require('./chunk-ADBA3XBE.cjs');
7
- require('./chunk-4B2CNWQU.cjs');
7
+ require('./chunk-SSV46KFA.cjs');
8
8
  require('./chunk-Z2XP767T.cjs');
9
- require('./chunk-6WFMPTGB.cjs');
9
+ require('./chunk-7ZX6B7SY.cjs');
10
10
  require('./chunk-FEAIOR7N.cjs');
11
- require('./chunk-A2N2GFCG.cjs');
12
- require('./chunk-6KFYJ6TD.cjs');
11
+ require('./chunk-ZVTWQLK4.cjs');
12
+ require('./chunk-XIYYHA65.cjs');
13
13
  require('./chunk-VEKIWQ3F.cjs');
14
- require('./chunk-UM6BVY2S.cjs');
15
- require('./chunk-JMXUNXQS.cjs');
16
- require('./chunk-PFUESQTW.cjs');
17
- require('./chunk-YWQ6V4ZN.cjs');
18
- require('./chunk-5LI5EPGJ.cjs');
14
+ require('./chunk-ALYRJ72W.cjs');
15
+ require('./chunk-HIQ5HSZL.cjs');
16
+ require('./chunk-2TZKENDH.cjs');
17
+ require('./chunk-EJ3ILXX6.cjs');
18
+ require('./chunk-YTIYVHL7.cjs');
19
+ require('./chunk-QFTDTX6K.cjs');
19
20
  require('./chunk-OUHT5Z36.cjs');
20
21
  require('./chunk-AQNHHJMJ.cjs');
21
22
  require('./chunk-AMOJYLG2.cjs');
22
- require('./chunk-5KMIY374.cjs');
23
+ require('./chunk-B4HBEFTB.cjs');
23
24
  require('./chunk-B7LXJ6LC.cjs');
24
25
 
25
26
 
26
27
 
27
28
  Object.defineProperty(exports, "ARITHMETIC_PACKAGE", {
28
29
  enumerable: true,
29
- get: function () { return chunk3AFRJYP4_cjs.ARITHMETIC_PACKAGE; }
30
+ get: function () { return chunkOTN6SZOD_cjs.ARITHMETIC_PACKAGE; }
30
31
  });
31
32
  Object.defineProperty(exports, "BIGINT_PACKAGE", {
32
33
  enumerable: true,
33
- get: function () { return chunk3AFRJYP4_cjs.BIGINT_PACKAGE; }
34
+ get: function () { return chunkOTN6SZOD_cjs.BIGINT_PACKAGE; }
34
35
  });
35
36
  Object.defineProperty(exports, "BUILTIN_PACKAGES", {
36
37
  enumerable: true,
37
- get: function () { return chunk3AFRJYP4_cjs.BUILTIN_PACKAGES; }
38
+ get: function () { return chunkOTN6SZOD_cjs.BUILTIN_PACKAGES; }
38
39
  });
39
40
  Object.defineProperty(exports, "CONDITIONALS_PACKAGE", {
40
41
  enumerable: true,
41
- get: function () { return chunk3AFRJYP4_cjs.CONDITIONALS_PACKAGE; }
42
+ get: function () { return chunkOTN6SZOD_cjs.CONDITIONALS_PACKAGE; }
42
43
  });
43
44
  Object.defineProperty(exports, "CONVERTERS_PACKAGE", {
44
45
  enumerable: true,
45
- get: function () { return chunk3AFRJYP4_cjs.CONVERTERS_PACKAGE; }
46
+ get: function () { return chunkOTN6SZOD_cjs.CONVERTERS_PACKAGE; }
46
47
  });
47
48
  Object.defineProperty(exports, "CURRENCY_PACKAGE", {
48
49
  enumerable: true,
49
- get: function () { return chunk3AFRJYP4_cjs.CURRENCY_PACKAGE; }
50
+ get: function () { return chunkOTN6SZOD_cjs.CURRENCY_PACKAGE; }
50
51
  });
51
52
  Object.defineProperty(exports, "DATETIME_PACKAGE", {
52
53
  enumerable: true,
53
- get: function () { return chunk3AFRJYP4_cjs.DATETIME_PACKAGE; }
54
+ get: function () { return chunkOTN6SZOD_cjs.DATETIME_PACKAGE; }
54
55
  });
55
56
  Object.defineProperty(exports, "DICE_PACKAGE", {
56
57
  enumerable: true,
57
- get: function () { return chunk3AFRJYP4_cjs.DICE_PACKAGE; }
58
+ get: function () { return chunkOTN6SZOD_cjs.DICE_PACKAGE; }
58
59
  });
59
60
  Object.defineProperty(exports, "FINANCE_PACKAGE", {
60
61
  enumerable: true,
61
- get: function () { return chunk3AFRJYP4_cjs.FINANCE_PACKAGE; }
62
+ get: function () { return chunkOTN6SZOD_cjs.FINANCE_PACKAGE; }
62
63
  });
63
64
  Object.defineProperty(exports, "FUNCTION_PACKAGE", {
64
65
  enumerable: true,
65
- get: function () { return chunk3AFRJYP4_cjs.FUNCTION_PACKAGE; }
66
+ get: function () { return chunkOTN6SZOD_cjs.FUNCTION_PACKAGE; }
66
67
  });
67
68
  Object.defineProperty(exports, "LINES_PACKAGE", {
68
69
  enumerable: true,
69
- get: function () { return chunk3AFRJYP4_cjs.LINES_PACKAGE; }
70
+ get: function () { return chunkOTN6SZOD_cjs.LINES_PACKAGE; }
70
71
  });
71
72
  Object.defineProperty(exports, "MAPREDUCE_PACKAGE", {
72
73
  enumerable: true,
73
- get: function () { return chunk3AFRJYP4_cjs.MAPREDUCE_PACKAGE; }
74
+ get: function () { return chunkOTN6SZOD_cjs.MAPREDUCE_PACKAGE; }
74
75
  });
75
76
  Object.defineProperty(exports, "MATHPHRASES_PACKAGE", {
76
77
  enumerable: true,
77
- get: function () { return chunk3AFRJYP4_cjs.MATHPHRASES_PACKAGE; }
78
+ get: function () { return chunkOTN6SZOD_cjs.MATHPHRASES_PACKAGE; }
78
79
  });
79
80
  Object.defineProperty(exports, "MATRIX_PACKAGE", {
80
81
  enumerable: true,
81
- get: function () { return chunk3AFRJYP4_cjs.MATRIX_PACKAGE; }
82
+ get: function () { return chunkOTN6SZOD_cjs.MATRIX_PACKAGE; }
82
83
  });
83
84
  Object.defineProperty(exports, "PERCENTAGE_PACKAGE", {
84
85
  enumerable: true,
85
- get: function () { return chunk3AFRJYP4_cjs.PERCENTAGE_PACKAGE; }
86
+ get: function () { return chunkOTN6SZOD_cjs.PERCENTAGE_PACKAGE; }
86
87
  });
87
88
  Object.defineProperty(exports, "SYMBOLIC_PACKAGE", {
88
89
  enumerable: true,
89
- get: function () { return chunk3AFRJYP4_cjs.SYMBOLIC_PACKAGE; }
90
+ get: function () { return chunkOTN6SZOD_cjs.SYMBOLIC_PACKAGE; }
91
+ });
92
+ Object.defineProperty(exports, "TABLES_PACKAGE", {
93
+ enumerable: true,
94
+ get: function () { return chunkOTN6SZOD_cjs.TABLES_PACKAGE; }
90
95
  });
91
96
  Object.defineProperty(exports, "TIME_PACKAGE", {
92
97
  enumerable: true,
93
- get: function () { return chunk3AFRJYP4_cjs.TIME_PACKAGE; }
98
+ get: function () { return chunkOTN6SZOD_cjs.TIME_PACKAGE; }
94
99
  });
95
100
  Object.defineProperty(exports, "UOM_PACKAGE", {
96
101
  enumerable: true,
97
- get: function () { return chunk3AFRJYP4_cjs.UOM_PACKAGE; }
102
+ get: function () { return chunkOTN6SZOD_cjs.UOM_PACKAGE; }
98
103
  });
99
104
  Object.defineProperty(exports, "VARIABLES_PACKAGE", {
100
105
  enumerable: true,
101
- get: function () { return chunk3AFRJYP4_cjs.VARIABLES_PACKAGE; }
106
+ get: function () { return chunkOTN6SZOD_cjs.VARIABLES_PACKAGE; }
102
107
  });
103
108
  Object.defineProperty(exports, "VECTOR_PACKAGE", {
104
109
  enumerable: true,
105
- get: function () { return chunk3AFRJYP4_cjs.VECTOR_PACKAGE; }
110
+ get: function () { return chunkOTN6SZOD_cjs.VECTOR_PACKAGE; }
106
111
  });
107
112
  Object.defineProperty(exports, "WEATHER_PACKAGE", {
108
113
  enumerable: true,
109
- get: function () { return chunk3AFRJYP4_cjs.WEATHER_PACKAGE; }
114
+ get: function () { return chunkOTN6SZOD_cjs.WEATHER_PACKAGE; }
115
+ });
116
+ Object.defineProperty(exports, "createCurrencyPackage", {
117
+ enumerable: true,
118
+ get: function () { return chunkOTN6SZOD_cjs.createCurrencyPackage; }
110
119
  });
111
120
  Object.defineProperty(exports, "createKnowledgePackage", {
112
121
  enumerable: true,
113
- get: function () { return chunk3AFRJYP4_cjs.createKnowledgePackage; }
122
+ get: function () { return chunkOTN6SZOD_cjs.createKnowledgePackage; }
114
123
  });
115
124
  Object.defineProperty(exports, "createStocksPackage", {
116
125
  enumerable: true,
117
- get: function () { return chunk3AFRJYP4_cjs.createStocksPackage; }
126
+ get: function () { return chunkOTN6SZOD_cjs.createStocksPackage; }
118
127
  });
119
128
  //# sourceMappingURL=packages.cjs.map
120
129
  //# sourceMappingURL=packages.cjs.map
@@ -1,17 +1,17 @@
1
- import { I as IEnginePackage } from './PackageRegistry-B37mRvvz.cjs';
2
- import './Parselet-DuI1Pjiq.cjs';
3
- import './BytecodeBuilder-B0xskcv5.cjs';
4
- import './Token-BzG5G4ja.cjs';
5
- import './pipeline-BEb3hujr.cjs';
6
- import './Value-CXJqDH9J.cjs';
1
+ import { I as IEnginePackage } from './PackageRegistry-BHWJP83F.cjs';
2
+ import './Parselet-BHcgK9S7.cjs';
3
+ import './BytecodeBuilder-Bp9xeTmX.cjs';
4
+ import './Token-B1hdkedD.cjs';
5
+ import './pipeline-CtfJtPQc.cjs';
6
+ import './Value-BUi1RA3S.cjs';
7
7
  import './variables.cjs';
8
- import './Lexer-D78E2yDW.cjs';
8
+ import './Lexer-BOs7euZe.cjs';
9
9
  import './resolvers.cjs';
10
10
  import '@tanstack/query-core';
11
- import './TokenNormalizer-DGVa24Q-.cjs';
12
- import './ScopeManager-B6GzdhVG.cjs';
13
- import './EngineError-LU7W7AgI.cjs';
14
- import './Configuration-B-G5gTRn.cjs';
11
+ import './TokenNormalizer-DRc1Js1V.cjs';
12
+ import './ScopeManager-8vf02dwj.cjs';
13
+ import './EngineError-B61GS1jp.cjs';
14
+ import './Configuration-C9W8tJv_.cjs';
15
15
 
16
16
  /** Core arithmetic: numbers, `()` grouping, `pi`/`e` constants, `+ - * / % ^`, bitwise `<< >> & | ^`, and their `*_by` word forms. */
17
17
  declare const ARITHMETIC_PACKAGE: IEnginePackage;
@@ -27,6 +27,12 @@ declare const ARITHMETIC_PACKAGE: IEnginePackage;
27
27
  * variable-name-collision reason "total"/"average"/etc. are fused
28
28
  * elsewhere in this codebase, "what" is common enough to be worth
29
29
  * protecting as a `:variableName`.
30
+ *
31
+ * Successive change is `120 up 10% then down 10%` (118.80, not 120),
32
+ * `50 up 20%`, `80 down 15%` and the repeat form `100 up 10% three times`.
33
+ * `up`/`down` are retyped from a bare IDENT only when a percentage follows
34
+ * (percentUpDownNormalizerRule), so prose keeps the words. See
35
+ * UpDownParselet.ts.
30
36
  */
31
37
  declare const PERCENTAGE_PACKAGE: IEnginePackage;
32
38
 
@@ -46,6 +52,16 @@ declare const FUNCTION_PACKAGE: IEnginePackage;
46
52
  * arithmetic, special-cased in `vm/VM.ts`'s ADD/SUB dispatch for the
47
53
  * `workday`/`workdays` UNIT (see `lexer/units.ts`) since business-day
48
54
  * math needs actual weekend-skipping, not a linear ms conversion.
55
+ * - `N working/business days after|from|before <date>`, the natural-language
56
+ * spelling of the same offset (`5 working days after 20 Dec`,
57
+ * `3 business days from today`). Fused as INFIX phrase tokens
58
+ * (`WORKDAYS_AFTER`/`WORKDAYS_BEFORE`) since the count is the left operand;
59
+ * emits `DATE_WORKDAY_OFFSET`, which walks the very same `addBusinessDays()`
60
+ * as `<date> + N workdays`. See `WorkdayOffsetParselet.ts`.
61
+ * - `working/business days between <date> and <date>`, the COUNT of working
62
+ * days in the inclusive window (`working days between 1 Jan and 31 Jan`), the
63
+ * working-day sibling of `<unit> between` below. Emits
64
+ * `DATE_WORKDAYS_BETWEEN`. See `WorkdaysBetweenParselet.ts`.
49
65
  * - `<amount>/workday x <duration>`, a Rate, exactly like `$99/week`
50
66
  * already works, using `uom/UomConverter.ts`'s workday<->day shim so
51
67
  * `getMeasure()`/`convertUnit()` treat "workday" as a Time-measure unit
@@ -64,8 +80,9 @@ declare const FUNCTION_PACKAGE: IEnginePackage;
64
80
  * leading `how many` is accepted for it and for `until`/`since`, see
65
81
  * `BetweenUnitNormalizerRule.ts`.
66
82
  * - `<date> is a weekend` / `is a workday`, postfix predicates, see
67
- * `DayTypePredicateParselet.ts`. Mon-Fri only, matching the workday
68
- * scope decision below.
83
+ * `DayTypePredicateParselet.ts`. Mon-Fri only: these answer the week's
84
+ * SHAPE (is this a weekday), which the holiday calendar deliberately does
85
+ * not touch, see the scope note below.
69
86
  * - `current timestamp` / `<date/time> to timestamp` / `<ISO8601 string
70
87
  * or unix timestamp> to date`. See `CurrentTimestampParselet.ts` /
71
88
  * `ToTimestampParselet.ts` / `ToDateParselet.ts` and
@@ -89,16 +106,22 @@ declare const FUNCTION_PACKAGE: IEnginePackage;
89
106
  * feature across two packages for a marginal "which package owns the
90
107
  * converter-name list" tidiness gain.
91
108
  *
92
- * SCOPE DECISION (workdays, both the count and the date-arithmetic forms):
93
- * plain Mon-Fri business-day math, with NO public-holiday exclusion.
94
- * SoulverCore's own workday calculations auto-exclude public holidays via
95
- * a live-updating, region-configurable holiday database, picking which
96
- * holidays/region and keeping such a database current is real, separate
97
- * scope this pass deliberately does not take on (see `vm/VM.ts`'s
98
- * `addBusinessDays()` doc comment for the fuller version of this note,
99
- * matching this session's established pattern of documenting a scoped-down
100
- * simplification rather than silently pretending to support something it
101
- * doesn't, e.g. Finance's "no hardcoded tax rate" decision).
109
+ * SCOPE DECISION (holidays): the business-day WALK and COUNT (the offset forms,
110
+ * `between`, and `<date> + N workdays`) skip weekends always, and public
111
+ * holidays too when the host configures a calendar via `date.holidays` (see
112
+ * `constants/Configuration.ts` and `vm/HolidayCalendar.ts`). No calendar means
113
+ * weekends-only, the honest default: the engine excludes exactly the days it
114
+ * can prove are non-working. Picking a region's holidays and keeping them
115
+ * current is the host's to own, the same "bring your own data source" shape
116
+ * stocks and weather use, so this package never guesses a holiday the caller
117
+ * did not supply.
118
+ *
119
+ * Two workday features stay weekends-only by design, and say so: `workdays in
120
+ * <duration>` (a deterministic ratio with no anchor date, so no calendar to
121
+ * consult, see `WorkdaysInParselet.ts`) and the `is a weekend`/`is a workday`
122
+ * predicates (which report the week's Mon-Fri shape, a different question from
123
+ * "is this a working day here"). See `vm/VM.ts`'s `addBusinessDays()` for the
124
+ * walk's side of this.
102
125
  */
103
126
  declare const DATETIME_PACKAGE: IEnginePackage;
104
127
 
@@ -168,13 +191,62 @@ declare const VARIABLES_PACKAGE: IEnginePackage;
168
191
  */
169
192
  declare const UOM_PACKAGE: IEnginePackage;
170
193
 
194
+ /**
195
+ * Resolve one historical exchange rate: the value of 1 unit of `from` in `to`
196
+ * on `isoDate` (`YYYY-MM-DD`). Supplied by the host, backed by whichever
197
+ * provider and key THEY have. Receives an `AbortSignal` that fires on caller
198
+ * cancellation or the fetch timeout, pass it to `fetch()`.
199
+ */
200
+ type HistoricalRateProvider = (from: string, to: string, isoDate: string, signal: AbortSignal) => Promise<number>;
201
+
202
+ /**
203
+ * Configuration for {@link createCurrencyPackage}.
204
+ *
205
+ * Live conversion (`100 USD in GBP`) needs no configuration, it is backed by
206
+ * the built-in Frankfurter/CoinGecko fetch and works out of the box. Only the
207
+ * historical form (`100 USD in GBP on <date>`) needs a host-supplied data
208
+ * source, since no free keyless historical-FX endpoint exists to bake in. See
209
+ * `uom/HistoricalCurrency.ts`'s module doc.
210
+ */
211
+ interface CurrencyPackageConfig {
212
+ /**
213
+ * Resolve the exchange rate for one currency pair on one past date, backed
214
+ * by whichever provider and key the host has. Required for
215
+ * `<money> in <currency> on <date>` to return real data, when omitted, that
216
+ * form resolves to an honest `HISTORICAL_RATES_NOT_CONFIGURED` error `Value`
217
+ * rather than falling back to today's rate.
218
+ */
219
+ historicalRateProvider?: HistoricalRateProvider;
220
+ }
221
+
171
222
  /**
172
223
  * Currency: `$10`, `£10`, `€10`, `¥10`, `₽10`, `₩10`, `₹10`, `₺10`, `₴10`,
173
- * `₪10`, `₫10`, `₦10`, `₱10`, `10 USD in GBP`, and word forms like
174
- * `10 euros`/`10 dollars` (see `uom/CurrencyAliases.ts` for the full
175
- * symbol/word alias tables and the ambiguity decisions behind them)
176
- * rates are fetched asynchronously (via {@link CurrencyAsyncResolver}) and
177
- * the expression shows Pending until they resolve.
224
+ * `₪10`, `₫10`, `₦10`, `₱10`, `10 USD in GBP`, `100 USD in GBP on 2024-01-15`,
225
+ * and word forms like `10 euros`/`10 dollars` (see `uom/CurrencyAliases.ts` for
226
+ * the full symbol/word alias tables and the ambiguity decisions behind them).
227
+ *
228
+ * Live rates are fetched asynchronously (via {@link CurrencyAsyncResolver}) and
229
+ * the expression shows Pending until they resolve. The dated `on <date>` form
230
+ * resolves through a HOST-SUPPLIED {@link CurrencyPackageConfig.historicalRateProvider}
231
+ * instead, unconfigured, it reports `HISTORICAL_RATES_NOT_CONFIGURED` plainly
232
+ * rather than drifting to today's rate (see `uom/HistoricalCurrency.ts`).
233
+ *
234
+ * **A factory, but still a default builtin.** Unlike stocks (no free provider,
235
+ * so excluded from `BUILTIN_PACKAGES`), the LIVE half of currency needs no
236
+ * configuration, so {@link CURRENCY_PACKAGE} = `createCurrencyPackage()` ships
237
+ * as a default. The historical resolver is registered either way, so the
238
+ * grammar always recognises `on <date>` and answers the not-configured case
239
+ * honestly; supplying a provider is what turns that error into a real rate. A
240
+ * host wanting historical conversion calls `createCurrencyPackage({ historicalRateProvider })`
241
+ * and swaps the result in for the default in its `packages` array.
242
+ */
243
+ declare function createCurrencyPackage(config?: CurrencyPackageConfig): IEnginePackage;
244
+ /**
245
+ * The default currency package, live rates configured, historical rates NOT.
246
+ *
247
+ * Kept as a named constant so existing imports and {@link BUILTIN_PACKAGES}
248
+ * keep working unchanged, a host wanting historical conversion builds its own
249
+ * via {@link createCurrencyPackage} and substitutes it in.
178
250
  */
179
251
  declare const CURRENCY_PACKAGE: IEnginePackage;
180
252
 
@@ -640,6 +712,38 @@ declare function createKnowledgePackage(config?: KnowledgePackageConfig): IEngin
640
712
  */
641
713
  declare const LINES_PACKAGE: IEnginePackage;
642
714
 
715
+ /**
716
+ * Read a markdown table's column as data: `sum of column "cost" in table
717
+ * above`, `average of column "cost" above`.
718
+ *
719
+ * A markdown table is the one block the evaluator classifies and then skips,
720
+ * so a note can hold a table of numbers and none of them can be totalled from
721
+ * where they sit. This package addresses the nearest table above the query
722
+ * line, names one of its columns, and reduces that column's numeric cells,
723
+ * reusing the same cross-line plumbing the lines package built for `total
724
+ * above` (a per-line `LineExecutionContext`, extended with `getLineText` so
725
+ * the skipped table rows can be read back from source).
726
+ *
727
+ * Trigger-word collision policy (this codebase's phrase-fusion rule, see
728
+ * `MathPhrasesPackage.ts`): the whole verb-and-noun is phrase-fused, never the
729
+ * bare verb. `average of` is already fused to `AVERAGE_OF` by the math-phrases
730
+ * package; registering the longer `average of column` in the same phrase trie
731
+ * wins by longest-match, so plain `average of 1, 2, 3` is untouched while
732
+ * `average of column "x"` routes here. `sum of` is claimed by no one, so
733
+ * `sum of column` fuses cleanly. Synonyms (`total`->sum, `mean`->average)
734
+ * share a token type and parselet, matching how the lines package treats
735
+ * `sum`/`total` as one.
736
+ *
737
+ * Decisions worth stating (also in the docs and changeset):
738
+ * - Addressing: nearest table above only. An explicit table label is deferred.
739
+ * - Non-numeric cells: skipped, not an error, so a stray label or a blank cell
740
+ * does not break an otherwise-numeric column. A column with no numbers at all
741
+ * is a clear error (except `count`, which is then zero).
742
+ * - Currency and units in cells: not read yet. A cell carrying a `$` or a unit
743
+ * is treated as non-numeric and skipped. Plain numbers first, on purpose.
744
+ */
745
+ declare const TABLES_PACKAGE: IEnginePackage;
746
+
643
747
  /**
644
748
  * Built-in packages.
645
749
  *
@@ -658,8 +762,8 @@ declare const LINES_PACKAGE: IEnginePackage;
658
762
  /**
659
763
  * The packages an engine registers when the caller names none.
660
764
  *
661
- * Twenty of the twenty-two. Stocks and knowledge are excluded because both
662
- * need a host-supplied data source and do nothing useful without one, so
765
+ * Twenty-four of the twenty-six. Stocks and knowledge are excluded because
766
+ * both need a host-supplied data source and do nothing useful without one, so
663
767
  * registering them by default would only produce NOT_CONFIGURED results.
664
768
  *
665
769
  * Pass a filtered copy to the {@link ExpressionEngine} constructor to opt out
@@ -688,4 +792,4 @@ interface IVector4 {
688
792
  w: number;
689
793
  }
690
794
 
691
- export { ARITHMETIC_PACKAGE, BIGINT_PACKAGE, BUILTIN_PACKAGES, CONDITIONALS_PACKAGE, CONVERTERS_PACKAGE, CURRENCY_PACKAGE, type CityWeather, DATETIME_PACKAGE, DICE_PACKAGE, FINANCE_PACKAGE, FUNCTION_PACKAGE, type IVector2, type IVector3, type IVector4, type KnowledgePackageConfig, LINES_PACKAGE, MAPREDUCE_PACKAGE, MATHPHRASES_PACKAGE, MATRIX_PACKAGE, PERCENTAGE_PACKAGE, SYMBOLIC_PACKAGE, type StockHistoricalQuote, type StockQuote, type StocksPackageConfig, TIME_PACKAGE, UOM_PACKAGE, VARIABLES_PACKAGE, VECTOR_PACKAGE, WEATHER_PACKAGE, type WeatherQueryKind, createKnowledgePackage, createStocksPackage };
795
+ export { ARITHMETIC_PACKAGE, BIGINT_PACKAGE, BUILTIN_PACKAGES, CONDITIONALS_PACKAGE, CONVERTERS_PACKAGE, CURRENCY_PACKAGE, type CityWeather, type CurrencyPackageConfig, DATETIME_PACKAGE, DICE_PACKAGE, FINANCE_PACKAGE, FUNCTION_PACKAGE, type HistoricalRateProvider, type IVector2, type IVector3, type IVector4, type KnowledgePackageConfig, LINES_PACKAGE, MAPREDUCE_PACKAGE, MATHPHRASES_PACKAGE, MATRIX_PACKAGE, PERCENTAGE_PACKAGE, SYMBOLIC_PACKAGE, type StockHistoricalQuote, type StockQuote, type StocksPackageConfig, TABLES_PACKAGE, TIME_PACKAGE, UOM_PACKAGE, VARIABLES_PACKAGE, VECTOR_PACKAGE, WEATHER_PACKAGE, type WeatherQueryKind, createCurrencyPackage, createKnowledgePackage, createStocksPackage };