solve-engine 1.0.0-beta.7 → 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 (205) hide show
  1. package/dist/{BytecodeBuilder-3egMyuDi.d.cts → BytecodeBuilder-B0xskcv5.d.cts} +2 -1
  2. package/dist/{BytecodeBuilder-3egMyuDi.d.ts → BytecodeBuilder-B0xskcv5.d.ts} +2 -1
  3. package/dist/{Configuration-fVpd-HC-.d.cts → Configuration-B-G5gTRn.d.cts} +107 -29
  4. package/dist/{Configuration-fVpd-HC-.d.ts → Configuration-B-G5gTRn.d.ts} +107 -29
  5. package/dist/{EngineError-DvPSnhZi.d.cts → EngineError-LU7W7AgI.d.cts} +96 -16
  6. package/dist/{EngineError-DvPSnhZi.d.ts → EngineError-LU7W7AgI.d.ts} +96 -16
  7. package/dist/{Lexer-W9MBOP0V.d.ts → Lexer-BN5mt30n.d.ts} +16 -0
  8. package/dist/{Lexer-Cfm79Dak.d.cts → Lexer-D78E2yDW.d.cts} +16 -0
  9. package/dist/{PackageRegistry-CjDt-Jy_.d.ts → PackageRegistry-DFeINv2O.d.ts} +54 -13
  10. package/dist/{PackageRegistry-pHtKythi.d.cts → PackageRegistry-u2zdfFaj.d.cts} +54 -13
  11. package/dist/{Parselet-DEdF9I7n.d.ts → Parselet-BaySkMV3.d.ts} +37 -5
  12. package/dist/{Parselet-Cu0bLSis.d.cts → Parselet-DuI1Pjiq.d.cts} +37 -5
  13. package/dist/{ScopeManager-CKfQtl7l.d.cts → ScopeManager-B6GzdhVG.d.cts} +75 -6
  14. package/dist/{ScopeManager-B5k0nk05.d.ts → ScopeManager-udv4Twwq.d.ts} +75 -6
  15. package/dist/{VMCheckpoints-BmDwIXgK.d.ts → VMCheckpoints-BiaIlOOY.d.ts} +4 -4
  16. package/dist/{VMCheckpoints-CqFuLwrT.d.cts → VMCheckpoints-DwLjivM7.d.cts} +4 -4
  17. package/dist/{Value-KtAQNHur.d.cts → Value-CXJqDH9J.d.cts} +5 -2
  18. package/dist/{Value-KtAQNHur.d.ts → Value-CXJqDH9J.d.ts} +5 -2
  19. package/dist/{chunk-CSG5XVNJ.cjs → chunk-3AFRJYP4.cjs} +556 -414
  20. package/dist/chunk-3AFRJYP4.cjs.map +1 -0
  21. package/dist/chunk-3BOK2LDK.js +17 -0
  22. package/dist/chunk-3BOK2LDK.js.map +1 -0
  23. package/dist/{chunk-6RDSQURE.js → chunk-3D7V24DG.js} +57 -6
  24. package/dist/chunk-3D7V24DG.js.map +1 -0
  25. package/dist/{chunk-MEOHSQEH.js → chunk-3LAEG75D.js} +47 -15
  26. package/dist/chunk-3LAEG75D.js.map +1 -0
  27. package/dist/{chunk-P75775WC.js → chunk-3VNGREMU.js} +118 -41
  28. package/dist/chunk-3VNGREMU.js.map +1 -0
  29. package/dist/{chunk-4AVD7NZW.cjs → chunk-4B2CNWQU.cjs} +13 -7
  30. package/dist/chunk-4B2CNWQU.cjs.map +1 -0
  31. package/dist/{chunk-6GCKCWLB.js → chunk-526PMQOA.js} +126 -69
  32. package/dist/chunk-526PMQOA.js.map +1 -0
  33. package/dist/{chunk-2CS6OMZK.js → chunk-5F4C26RU.js} +8 -5
  34. package/dist/chunk-5F4C26RU.js.map +1 -0
  35. package/dist/{chunk-M4N5GA5Z.cjs → chunk-5KMIY374.cjs} +57 -6
  36. package/dist/chunk-5KMIY374.cjs.map +1 -0
  37. package/dist/{chunk-R24DI24X.cjs → chunk-5LI5EPGJ.cjs} +6 -5
  38. package/dist/chunk-5LI5EPGJ.cjs.map +1 -0
  39. package/dist/{chunk-BAMZT3GL.js → chunk-5WVP4YHP.js} +939 -134
  40. package/dist/chunk-5WVP4YHP.js.map +1 -0
  41. package/dist/{chunk-MZOVP3WI.cjs → chunk-6KFYJ6TD.cjs} +3 -2
  42. package/dist/chunk-6KFYJ6TD.cjs.map +1 -0
  43. package/dist/{chunk-BXKJLM5R.cjs → chunk-6WFMPTGB.cjs} +972 -636
  44. package/dist/chunk-6WFMPTGB.cjs.map +1 -0
  45. package/dist/{chunk-2MV4HBKC.cjs → chunk-A2N2GFCG.cjs} +10 -10
  46. package/dist/{chunk-2MV4HBKC.cjs.map → chunk-A2N2GFCG.cjs.map} +1 -1
  47. package/dist/chunk-ADBA3XBE.cjs +20 -0
  48. package/dist/chunk-ADBA3XBE.cjs.map +1 -0
  49. package/dist/{chunk-MBNQVDVC.cjs → chunk-AMOJYLG2.cjs} +16 -10
  50. package/dist/chunk-AMOJYLG2.cjs.map +1 -0
  51. package/dist/{chunk-CLVQBF5C.cjs → chunk-AQNHHJMJ.cjs} +5 -5
  52. package/dist/{chunk-CLVQBF5C.cjs.map → chunk-AQNHHJMJ.cjs.map} +1 -1
  53. package/dist/{chunk-AHCLWAM5.cjs → chunk-BHTNFEGZ.cjs} +13 -13
  54. package/dist/chunk-BHTNFEGZ.cjs.map +1 -0
  55. package/dist/{chunk-35IWNZPJ.cjs → chunk-E4NUZXVK.cjs} +58 -27
  56. package/dist/chunk-E4NUZXVK.cjs.map +1 -0
  57. package/dist/{chunk-P33SBYGG.js → chunk-GLG5ZMX7.js} +54 -23
  58. package/dist/chunk-GLG5ZMX7.js.map +1 -0
  59. package/dist/{chunk-BVAR5J2F.js → chunk-GQCOSXMG.js} +117 -6
  60. package/dist/chunk-GQCOSXMG.js.map +1 -0
  61. package/dist/{chunk-QDMPOAI7.cjs → chunk-HDP7VK3C.cjs} +1118 -313
  62. package/dist/chunk-HDP7VK3C.cjs.map +1 -0
  63. package/dist/{chunk-GVWHCL2N.js → chunk-HMOISHXR.js} +217 -75
  64. package/dist/chunk-HMOISHXR.js.map +1 -0
  65. package/dist/{chunk-MTX2KVU7.cjs → chunk-HVQFNJKE.cjs} +122 -90
  66. package/dist/chunk-HVQFNJKE.cjs.map +1 -0
  67. package/dist/{chunk-OC6LTXYS.cjs → chunk-JMXUNXQS.cjs} +126 -7
  68. package/dist/chunk-JMXUNXQS.cjs.map +1 -0
  69. package/dist/{chunk-WWOLFXTX.cjs → chunk-KBSXGXPM.cjs} +10 -7
  70. package/dist/chunk-KBSXGXPM.cjs.map +1 -0
  71. package/dist/{chunk-YU2CUNFO.js → chunk-KV7UW6T6.js} +11 -5
  72. package/dist/chunk-KV7UW6T6.js.map +1 -0
  73. package/dist/{chunk-CCJPSHGI.cjs → chunk-N7FNVFXW.cjs} +4 -12
  74. package/dist/chunk-N7FNVFXW.cjs.map +1 -0
  75. package/dist/{chunk-CYFK5SY2.js → chunk-O3ANBHSA.js} +169 -39
  76. package/dist/chunk-O3ANBHSA.js.map +1 -0
  77. package/dist/{chunk-NZFKROS7.cjs → chunk-PA4VC73I.cjs} +130 -72
  78. package/dist/chunk-PA4VC73I.cjs.map +1 -0
  79. package/dist/{chunk-NJTXJ5AG.cjs → chunk-PFUESQTW.cjs} +18 -18
  80. package/dist/{chunk-NJTXJ5AG.cjs.map → chunk-PFUESQTW.cjs.map} +1 -1
  81. package/dist/{chunk-SFQWJMKT.js → chunk-QY25VWBF.js} +51 -12
  82. package/dist/chunk-QY25VWBF.js.map +1 -0
  83. package/dist/{chunk-WC5FFSHB.js → chunk-R3PY4G7J.js} +3 -3
  84. package/dist/{chunk-WC5FFSHB.js.map → chunk-R3PY4G7J.js.map} +1 -1
  85. package/dist/{chunk-M5E34VG5.js → chunk-SBUFNJVE.js} +3 -3
  86. package/dist/{chunk-M5E34VG5.js.map → chunk-SBUFNJVE.js.map} +1 -1
  87. package/dist/{chunk-UKPGSAZW.js → chunk-TMA4RCEN.js} +3 -3
  88. package/dist/{chunk-UKPGSAZW.js.map → chunk-TMA4RCEN.js.map} +1 -1
  89. package/dist/{chunk-V6HA6JJZ.cjs → chunk-U5VAY32K.cjs} +215 -138
  90. package/dist/chunk-U5VAY32K.cjs.map +1 -0
  91. package/dist/{chunk-DUEZFTK2.js → chunk-UKQHXPGW.js} +4 -12
  92. package/dist/chunk-UKQHXPGW.js.map +1 -0
  93. package/dist/{chunk-4CVLFLOB.cjs → chunk-UM6BVY2S.cjs} +201 -69
  94. package/dist/chunk-UM6BVY2S.cjs.map +1 -0
  95. package/dist/{chunk-75JP4BZX.js → chunk-UQ3UIZJC.js} +3 -2
  96. package/dist/chunk-UQ3UIZJC.js.map +1 -0
  97. package/dist/{chunk-PCPX42KL.js → chunk-V4XG5QF6.js} +16 -10
  98. package/dist/chunk-V4XG5QF6.js.map +1 -0
  99. package/dist/{chunk-GPPLSM2Z.js → chunk-VB37OC6I.js} +6 -5
  100. package/dist/chunk-VB37OC6I.js.map +1 -0
  101. package/dist/{chunk-MVBEL57Q.js → chunk-Y7FT4IQT.js} +500 -170
  102. package/dist/chunk-Y7FT4IQT.js.map +1 -0
  103. package/dist/{chunk-OFXOTECC.js → chunk-YPPPYLSR.js} +7 -7
  104. package/dist/chunk-YPPPYLSR.js.map +1 -0
  105. package/dist/{chunk-M4F66R4O.cjs → chunk-YWQ6V4ZN.cjs} +121 -82
  106. package/dist/chunk-YWQ6V4ZN.cjs.map +1 -0
  107. package/dist/constants.cjs +5 -5
  108. package/dist/constants.d.cts +1 -1
  109. package/dist/constants.d.ts +1 -1
  110. package/dist/constants.js +2 -2
  111. package/dist/engine.cjs +31 -31
  112. package/dist/engine.d.cts +11 -11
  113. package/dist/engine.d.ts +11 -11
  114. package/dist/engine.js +21 -21
  115. package/dist/errors.cjs +19 -19
  116. package/dist/errors.d.cts +2 -2
  117. package/dist/errors.d.ts +2 -2
  118. package/dist/errors.js +1 -1
  119. package/dist/format.cjs +29 -22
  120. package/dist/format.cjs.map +1 -1
  121. package/dist/format.d.cts +1 -2
  122. package/dist/format.d.ts +1 -2
  123. package/dist/format.js +23 -16
  124. package/dist/format.js.map +1 -1
  125. package/dist/index.cjs +31 -31
  126. package/dist/index.d.cts +10 -10
  127. package/dist/index.d.ts +10 -10
  128. package/dist/index.js +22 -22
  129. package/dist/language.cjs +8 -8
  130. package/dist/language.cjs.map +1 -1
  131. package/dist/language.d.cts +10 -10
  132. package/dist/language.d.ts +10 -10
  133. package/dist/language.js +6 -6
  134. package/dist/language.js.map +1 -1
  135. package/dist/lexer.cjs +18 -18
  136. package/dist/lexer.d.cts +2 -2
  137. package/dist/lexer.d.ts +2 -2
  138. package/dist/lexer.js +6 -6
  139. package/dist/normalizer.cjs +12 -12
  140. package/dist/normalizer.js +6 -6
  141. package/dist/packages.cjs +39 -39
  142. package/dist/packages.d.cts +9 -9
  143. package/dist/packages.d.ts +9 -9
  144. package/dist/packages.js +16 -16
  145. package/dist/parser.cjs +15 -15
  146. package/dist/parser.d.cts +23 -9
  147. package/dist/parser.d.ts +23 -9
  148. package/dist/parser.js +5 -5
  149. package/dist/{pipeline-CrsRPmsv.d.ts → pipeline-B6k5lCB7.d.ts} +1 -1
  150. package/dist/{pipeline-DPUQt7yL.d.cts → pipeline-BEb3hujr.d.cts} +1 -1
  151. package/dist/resolvers.d.cts +2 -2
  152. package/dist/resolvers.d.ts +2 -2
  153. package/dist/uom.cjs +17 -17
  154. package/dist/uom.d.cts +2 -2
  155. package/dist/uom.d.ts +2 -2
  156. package/dist/uom.js +7 -7
  157. package/dist/utilities.cjs +8 -4
  158. package/dist/utilities.d.cts +19 -3
  159. package/dist/utilities.d.ts +19 -3
  160. package/dist/utilities.js +2 -2
  161. package/dist/vm.cjs +43 -31
  162. package/dist/vm.d.cts +105 -9
  163. package/dist/vm.d.ts +105 -9
  164. package/dist/vm.js +9 -9
  165. package/package.json +1 -1
  166. package/dist/chunk-2CS6OMZK.js.map +0 -1
  167. package/dist/chunk-35IWNZPJ.cjs.map +0 -1
  168. package/dist/chunk-4AVD7NZW.cjs.map +0 -1
  169. package/dist/chunk-4CVLFLOB.cjs.map +0 -1
  170. package/dist/chunk-6GCKCWLB.js.map +0 -1
  171. package/dist/chunk-6RDSQURE.js.map +0 -1
  172. package/dist/chunk-75JP4BZX.js.map +0 -1
  173. package/dist/chunk-AHCLWAM5.cjs.map +0 -1
  174. package/dist/chunk-BAMZT3GL.js.map +0 -1
  175. package/dist/chunk-BVAR5J2F.js.map +0 -1
  176. package/dist/chunk-BXKJLM5R.cjs.map +0 -1
  177. package/dist/chunk-CCJPSHGI.cjs.map +0 -1
  178. package/dist/chunk-CSG5XVNJ.cjs.map +0 -1
  179. package/dist/chunk-CYFK5SY2.js.map +0 -1
  180. package/dist/chunk-DUEZFTK2.js.map +0 -1
  181. package/dist/chunk-GPPLSM2Z.js.map +0 -1
  182. package/dist/chunk-GVWHCL2N.js.map +0 -1
  183. package/dist/chunk-M4F66R4O.cjs.map +0 -1
  184. package/dist/chunk-M4N5GA5Z.cjs.map +0 -1
  185. package/dist/chunk-MBNQVDVC.cjs.map +0 -1
  186. package/dist/chunk-MEOHSQEH.js.map +0 -1
  187. package/dist/chunk-MTX2KVU7.cjs.map +0 -1
  188. package/dist/chunk-MVBEL57Q.js.map +0 -1
  189. package/dist/chunk-MZOVP3WI.cjs.map +0 -1
  190. package/dist/chunk-N5YFR4UP.cjs +0 -10
  191. package/dist/chunk-N5YFR4UP.cjs.map +0 -1
  192. package/dist/chunk-NZFKROS7.cjs.map +0 -1
  193. package/dist/chunk-OC6LTXYS.cjs.map +0 -1
  194. package/dist/chunk-OFXOTECC.js.map +0 -1
  195. package/dist/chunk-P33SBYGG.js.map +0 -1
  196. package/dist/chunk-P75775WC.js.map +0 -1
  197. package/dist/chunk-PCPX42KL.js.map +0 -1
  198. package/dist/chunk-PFSDGGYL.js +0 -8
  199. package/dist/chunk-PFSDGGYL.js.map +0 -1
  200. package/dist/chunk-QDMPOAI7.cjs.map +0 -1
  201. package/dist/chunk-R24DI24X.cjs.map +0 -1
  202. package/dist/chunk-SFQWJMKT.js.map +0 -1
  203. package/dist/chunk-V6HA6JJZ.cjs.map +0 -1
  204. package/dist/chunk-WWOLFXTX.cjs.map +0 -1
  205. package/dist/chunk-YU2CUNFO.js.map +0 -1
@@ -1,19 +1,19 @@
1
- import { BindingPower, BytecodeBuilder } from './chunk-6GCKCWLB.js';
2
- import { createFusedToken, isInsideRangeContext } from './chunk-OFXOTECC.js';
3
- import { stripQuotes } from './chunk-PFSDGGYL.js';
4
- import { CurrencyAsyncResolver, nextInstruction } from './chunk-YU2CUNFO.js';
1
+ import { BindingPower, BytecodeBuilder, bigIntLiteralDigits } from './chunk-526PMQOA.js';
2
+ import { createFusedToken, isInsideRangeContext } from './chunk-YPPPYLSR.js';
3
+ import { stripQuotes } from './chunk-3BOK2LDK.js';
4
+ import { CurrencyAsyncResolver, nextInstruction } from './chunk-KV7UW6T6.js';
5
5
  import { getActiveQueryClient } from './chunk-NLNDMWZC.js';
6
- import { allocatePluginFunctionIndex, sharedGlobalVariableStore, adjustForInflation, CPI_MIN_YEAR, CPI_MAX_YEAR } from './chunk-MVBEL57Q.js';
6
+ import { allocatePluginFunctionIndex, sharedGlobalVariableStore, adjustForInflation, CPI_MIN_YEAR, CPI_MAX_YEAR } from './chunk-Y7FT4IQT.js';
7
7
  import { createTimeoutSignal } from './chunk-Z4X2RWOF.js';
8
- import { resolveCurrencyAlias } from './chunk-CYFK5SY2.js';
9
- import { errorValue, numberValue, stringValue, boolValue, uomValue, datetimeValue, timecodeUnit, ValueType } from './chunk-BVAR5J2F.js';
10
- import { getMeasure, convertUnit } from './chunk-WC5FFSHB.js';
11
- import { LexerToken } from './chunk-SFQWJMKT.js';
12
- import { tokenTypeId } from './chunk-GPPLSM2Z.js';
8
+ import { resolveCurrencyAlias } from './chunk-O3ANBHSA.js';
9
+ import { errorValue, numberValue, stringValue, boolValue, uomValue, datetimeValue, timecodeUnit, ValueType } from './chunk-GQCOSXMG.js';
10
+ import { getMeasure, convertUnit } from './chunk-R3PY4G7J.js';
11
+ import { LexerToken } from './chunk-QY25VWBF.js';
12
+ import { tokenTypeId } from './chunk-VB37OC6I.js';
13
13
  import { getLocale } from './chunk-XBTEO4OB.js';
14
- import { isKnownUnit } from './chunk-M5E34VG5.js';
15
- import { UNIT_TABLE } from './chunk-PCPX42KL.js';
16
- import { ErrorFactory } from './chunk-6RDSQURE.js';
14
+ import { isKnownUnit } from './chunk-SBUFNJVE.js';
15
+ import { UNIT_TABLE } from './chunk-V4XG5QF6.js';
16
+ import { ErrorFactory } from './chunk-3D7V24DG.js';
17
17
 
18
18
  // src/packages/arithmetic/parselets/NumberParselet.ts
19
19
  var CHAINED_DOT_THOUSANDS_GROUPS = /^\d{1,3}(\.\d{3}){2,}$/;
@@ -73,13 +73,14 @@ var PrefixOpParselet = class {
73
73
 
74
74
  // src/packages/arithmetic/parselets/BinaryOpParselet.ts
75
75
  var BinaryOpParselet = class {
76
- constructor(bp, opcode) {
76
+ constructor(bp, opcode, rightAssociative = false) {
77
77
  this.opcode = opcode;
78
78
  this.category = "Arithmetic";
79
79
  this.bindingPower = bp;
80
+ this.rightBindingPower = rightAssociative ? bp - 1 : bp;
80
81
  }
81
82
  parse(parser, left, token, builder) {
82
- parser.parseExpression(this.bindingPower, builder);
83
+ parser.parseExpression(this.rightBindingPower, builder);
83
84
  builder.emitOpcode(this.opcode);
84
85
  }
85
86
  };
@@ -162,7 +163,8 @@ function largeNumberSuffixNormalizerRule(priority = 65) {
162
163
  if (!suffixToken) return null;
163
164
  if (suffixToken.type !== "IDENT" && suffixToken.type !== "UNIT") return null;
164
165
  const adjacent = numberToken.offset + numberToken.text.length === suffixToken.offset;
165
- const magnitude = adjacent ? SUFFIX_MAGNITUDE[suffixToken.value] ?? WORD_MAGNITUDE[suffixToken.value.toLowerCase()] : WORD_MAGNITUDE[suffixToken.value.toLowerCase()];
166
+ const wordMagnitude = suffixToken.type === "UNIT" ? void 0 : WORD_MAGNITUDE[suffixToken.value.toLowerCase()];
167
+ const magnitude = adjacent ? SUFFIX_MAGNITUDE[suffixToken.value] ?? wordMagnitude : wordMagnitude;
166
168
  if (magnitude === void 0) return null;
167
169
  const scaled = scaleDecimalString(numberToken.text, magnitude);
168
170
  return {
@@ -199,15 +201,25 @@ var ARITHMETIC_PACKAGE = {
199
201
  { tokenType: "STAR", parselet: new BinaryOpParselet(BindingPower.Product, 22 /* MUL */) },
200
202
  { tokenType: "SLASH", parselet: new BinaryOpParselet(BindingPower.Product, 23 /* DIV */) },
201
203
  { tokenType: "MOD", parselet: new BinaryOpParselet(BindingPower.Product, 24 /* MOD */) },
202
- { tokenType: "CARET", parselet: new BinaryOpParselet(BindingPower.Exponent, 25 /* EXP */) },
204
+ // `^` is right-associative, so "2 ^ 3 ^ 2" is 2^(3^2) = 512. The Tier 1
205
+ // fast path in PrecedenceParser is what actually runs for `^`; this
206
+ // registration has to agree with it or the two tiers describe different
207
+ // languages.
208
+ { tokenType: "CARET", parselet: new BinaryOpParselet(BindingPower.Exponent, 25 /* EXP */, true) },
203
209
  { tokenType: "TIMES_BY", parselet: new BinaryOpParselet(BindingPower.Product, 22 /* MUL */) },
204
210
  { tokenType: "MULTIPLY_BY", parselet: new BinaryOpParselet(BindingPower.Product, 22 /* MUL */) },
205
211
  { tokenType: "DIVIDE_BY", parselet: new BinaryOpParselet(BindingPower.Product, 23 /* DIV */) },
206
- { tokenType: "LSHIFT", parselet: new BinaryOpParselet(BindingPower.Sum, 30 /* LSHIFT */) },
207
- { tokenType: "RSHIFT", parselet: new BinaryOpParselet(BindingPower.Sum, 31 /* RSHIFT */) },
208
- { tokenType: "URSHIFT", parselet: new BinaryOpParselet(BindingPower.Sum, 32 /* URSHIFT */) },
209
- { tokenType: "BIT_AND", parselet: new BinaryOpParselet(BindingPower.Product, 33 /* BIT_AND */) },
210
- { tokenType: "BIT_OR", parselet: new BinaryOpParselet(BindingPower.Sum, 34 /* BIT_OR */) },
212
+ // The shifts and the bitwise trio, at the levels BindingPower gives them
213
+ // and therefore at C and JavaScript precedence. These six are declared
214
+ // twice, here and in BUILTIN_INFIX_BP, and only the Tier 1 numbers are
215
+ // ever read, so the levels must be the SAME names in both places. When
216
+ // they were not, the four that had a fast-path entry ran at one level
217
+ // while `>>>`, which had none, ran at another.
218
+ { tokenType: "LSHIFT", parselet: new BinaryOpParselet(BindingPower.Shift, 30 /* LSHIFT */) },
219
+ { tokenType: "RSHIFT", parselet: new BinaryOpParselet(BindingPower.Shift, 31 /* RSHIFT */) },
220
+ { tokenType: "URSHIFT", parselet: new BinaryOpParselet(BindingPower.Shift, 32 /* URSHIFT */) },
221
+ { tokenType: "BIT_AND", parselet: new BinaryOpParselet(BindingPower.BitwiseAnd, 33 /* BIT_AND */) },
222
+ { tokenType: "BIT_OR", parselet: new BinaryOpParselet(BindingPower.BitwiseOr, 34 /* BIT_OR */) },
211
223
  { tokenType: "BIT_XOR", parselet: new BinaryOpParselet(BindingPower.BitwiseXor, 35 /* BIT_XOR */) }
212
224
  ],
213
225
  normalizerRules: [largeNumberSuffixNormalizerRule()]
@@ -677,13 +689,16 @@ var FUNCTION_PACKAGE = {
677
689
  var NowParselet = class {
678
690
  constructor(dayOffset = 0) {
679
691
  this.category = "Date/Time";
680
- this.msOffset = dayOffset * 24 * 60 * 60 * 1e3;
692
+ this.dayOffset = dayOffset;
681
693
  }
682
694
  parse(parser, token, builder) {
683
695
  builder.emitOpcode(90 /* DATE_NOW */);
684
- if (this.msOffset !== 0) {
696
+ if (this.dayOffset !== 0) {
685
697
  builder.emitOpcode(10 /* PUSH_NUMBER */);
686
- builder.emitNumber(this.msOffset);
698
+ builder.emitNumber(this.dayOffset);
699
+ builder.emitOpcode(13 /* PUSH_STRING */);
700
+ builder.emitString("days");
701
+ builder.emitOpcode(80 /* UOM_CONVERT */);
687
702
  builder.emitOpcode(20 /* ADD */);
688
703
  }
689
704
  }
@@ -801,9 +816,11 @@ function workdaysInDurationHandler(args) {
801
816
  } else {
802
817
  totalDays = v.toNumber();
803
818
  }
804
- const fullWeeks = Math.floor(totalDays / 7);
805
- const remainderDays = totalDays - fullWeeks * 7;
806
- const workdays = fullWeeks * 5 + Math.min(remainderDays, 5);
819
+ const sign = totalDays < 0 ? -1 : 1;
820
+ const magnitudeDays = Math.abs(totalDays);
821
+ const fullWeeks = Math.floor(magnitudeDays / 7);
822
+ const remainderDays = magnitudeDays - fullWeeks * 7;
823
+ const workdays = sign * (fullWeeks * 5 + Math.min(remainderDays, 5));
807
824
  return numberValue(workdays);
808
825
  }
809
826
  var WEEKDAY_NAMES = [
@@ -1125,6 +1142,15 @@ var DATETIME_LITERAL_TYPE_ID = tokenTypeId(DATETIME_LITERAL_TYPE);
1125
1142
  var PLAIN_INTEGER = /^\d+$/;
1126
1143
  var DOT_DAY_MONTH = /^\d{1,2}\.\d{1,2}$/;
1127
1144
  var DOT_LEADING_YEAR = /^\.(\d{2}|\d{4})$/;
1145
+ var DAY_OR_MONTH = /^\d{1,2}$/;
1146
+ function writtenAsOneRun(tokens) {
1147
+ for (let i = 0; i < tokens.length - 1; i++) {
1148
+ const token = tokens[i];
1149
+ const end = token.sourceEnd ?? token.offset + token.text.length;
1150
+ if (end !== tokens[i + 1].offset) return false;
1151
+ }
1152
+ return true;
1153
+ }
1128
1154
  function resolveYear(digits) {
1129
1155
  if (digits.length === 4) return Number(digits);
1130
1156
  if (digits.length === 2) {
@@ -1153,6 +1179,48 @@ function buildDateToken(day, month, year, sourceTokens, ruleName) {
1153
1179
  );
1154
1180
  return { consumed: sourceTokens.length, replacement: [fusedToken], ruleName };
1155
1181
  }
1182
+ var ISO_TIMESTAMP = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?/;
1183
+ var ISO_TOKEN_TYPES = /* @__PURE__ */ new Set(["NUMBER", "MINUS", "PLUS", "COLON", "IDENT"]);
1184
+ var ISO_MAX_TOKENS = 16;
1185
+ function fuseIsoTimestamp(tokens, pos, ruleName) {
1186
+ const first = tokens[pos];
1187
+ if (first.sourceEnd !== void 0) return null;
1188
+ let text = first.text;
1189
+ let runEnd = first.offset + first.text.length;
1190
+ const window = [first];
1191
+ for (let i = pos + 1; i < tokens.length && window.length < ISO_MAX_TOKENS; i++) {
1192
+ const next = tokens[i];
1193
+ if (next.sourceEnd !== void 0) break;
1194
+ if (next.offset !== runEnd || !ISO_TOKEN_TYPES.has(next.type)) break;
1195
+ text += next.text;
1196
+ runEnd = next.offset + next.text.length;
1197
+ window.push(next);
1198
+ }
1199
+ const matched = ISO_TIMESTAMP.exec(text);
1200
+ if (matched === null) return null;
1201
+ let consumed = 0;
1202
+ let covered = 0;
1203
+ for (const token of window) {
1204
+ covered += token.text.length;
1205
+ consumed++;
1206
+ if (covered >= matched[0].length) break;
1207
+ }
1208
+ if (covered !== matched[0].length) return null;
1209
+ const epochMs = parseIso8601(matched[0]);
1210
+ if (epochMs === null) return null;
1211
+ const fusedToken = new LexerToken(
1212
+ DATETIME_LITERAL_TYPE,
1213
+ DATETIME_LITERAL_TYPE_ID,
1214
+ String(epochMs),
1215
+ matched[0],
1216
+ first.offset,
1217
+ 0,
1218
+ first.line,
1219
+ first.col,
1220
+ first.offset + matched[0].length
1221
+ );
1222
+ return { consumed, replacement: [fusedToken], ruleName };
1223
+ }
1156
1224
  function dateLiteralNormalizerRule() {
1157
1225
  return {
1158
1226
  name: "datetime:date-literal",
@@ -1178,6 +1246,10 @@ function dateLiteralNormalizerRule() {
1178
1246
  }
1179
1247
  return null;
1180
1248
  }
1249
+ if (t0.value.length === 4 && PLAIN_INTEGER.test(t0.value)) {
1250
+ const timestamp = fuseIsoTimestamp(tokens, pos, "datetime:date-literal:iso-timestamp");
1251
+ if (timestamp) return timestamp;
1252
+ }
1181
1253
  if (!PLAIN_INTEGER.test(t0.value)) return null;
1182
1254
  const sep1 = tokens[pos + 1];
1183
1255
  if (!sep1 || sep1.type !== "SLASH" && sep1.type !== "MINUS") return null;
@@ -1188,14 +1260,18 @@ function dateLiteralNormalizerRule() {
1188
1260
  if (!sep2 || sep2.type !== sep1.type) return null;
1189
1261
  if (!t2 || t2.type !== "NUMBER" || !PLAIN_INTEGER.test(t2.value)) return null;
1190
1262
  const sourceTokens = [t0, sep1, t1, sep2, t2];
1263
+ if (!writtenAsOneRun(sourceTokens)) return null;
1191
1264
  if (sep1.type === "SLASH") {
1265
+ if (!DAY_OR_MONTH.test(t0.value) || !DAY_OR_MONTH.test(t1.value)) return null;
1192
1266
  const year2 = resolveYear(t2.value);
1193
1267
  if (year2 === null) return null;
1194
1268
  return buildDateToken(Number(t0.value), Number(t1.value), year2, sourceTokens, "datetime:date-literal:european");
1195
1269
  }
1196
1270
  if (t0.value.length === 4) {
1271
+ if (!DAY_OR_MONTH.test(t1.value) || !DAY_OR_MONTH.test(t2.value)) return null;
1197
1272
  return buildDateToken(Number(t2.value), Number(t1.value), Number(t0.value), sourceTokens, "datetime:date-literal:iso");
1198
1273
  }
1274
+ if (!DAY_OR_MONTH.test(t0.value) || !DAY_OR_MONTH.test(t1.value)) return null;
1199
1275
  const year = resolveYear(t2.value);
1200
1276
  if (year === null) return null;
1201
1277
  return buildDateToken(Number(t1.value), Number(t0.value), year, sourceTokens, "datetime:date-literal:us");
@@ -2054,14 +2130,14 @@ var VideoTimecodeParselet = class {
2054
2130
  }
2055
2131
  parser.consume();
2056
2132
  const fps = parseFloat(fpsToken.value);
2057
- const fpsWhole = Math.floor(fps);
2133
+ const fpsWhole = Math.round(fps);
2058
2134
  if (frames >= fpsWhole) {
2059
2135
  throw ErrorFactory.parsing(
2060
2136
  "TIMECODE_FRAME_OUT_OF_RANGE",
2061
2137
  `Frame number ${frames} is out of range for ${fps} fps (must be 0-${fpsWhole - 1})`
2062
2138
  );
2063
2139
  }
2064
- const totalFrames = Math.round((hours * 3600 + minutes * 60 + seconds) * fps) + frames;
2140
+ const totalFrames = (hours * 3600 + minutes * 60 + seconds) * fpsWhole + frames;
2065
2141
  let unit = timecodeUnit(fps);
2066
2142
  if (parser.peek()?.type === "IN") {
2067
2143
  parser.consume();
@@ -3309,6 +3385,27 @@ function ingredientNameNormalizerRule(priority = 68) {
3309
3385
  };
3310
3386
  }
3311
3387
 
3388
+ // src/packages/uom/normalizer/MultiWordUnitNormalizerRule.ts
3389
+ function multiWordUnitNormalizerRule(priority = 78) {
3390
+ return {
3391
+ name: "uom:multi-word-unit",
3392
+ priority,
3393
+ match(tokens, pos) {
3394
+ const first = tokens[pos];
3395
+ const second = tokens[pos + 1];
3396
+ if (first?.type !== "UNIT" || second?.type !== "UNIT") return null;
3397
+ if (first.offset + first.text.length + 1 !== second.offset) return null;
3398
+ const spelling = `${first.value} ${second.value}`;
3399
+ if (UNIT_TABLE[spelling] === void 0) return null;
3400
+ return {
3401
+ consumed: 2,
3402
+ replacement: [createFusedToken("UNIT", spelling, tokens.slice(pos, pos + 2))],
3403
+ ruleName: "uom:multi-word-unit"
3404
+ };
3405
+ }
3406
+ };
3407
+ }
3408
+
3312
3409
  // src/packages/uom/UomPackage.ts
3313
3410
  var UOM_PACKAGE = {
3314
3411
  name: "solve-uom",
@@ -3324,6 +3421,9 @@ var UOM_PACKAGE = {
3324
3421
  { tokenType: "INGREDIENT_NAME", parselet: new CookingConversionParselet() }
3325
3422
  ],
3326
3423
  normalizerRules: [
3424
+ // Highest priority of the unit rules: a two-word spelling has to become one
3425
+ // token before anything else reads the first word as a unit on its own.
3426
+ multiWordUnitNormalizerRule(),
3327
3427
  uomPossibilitiesNormalizerRule(),
3328
3428
  compoundQuantityNormalizerRule(),
3329
3429
  twoUnitConversionNormalizerRule(),
@@ -3710,7 +3810,9 @@ var SumParselet = class {
3710
3810
  parser.consume("COMMA");
3711
3811
  parseCollectionExpr(parser, builder);
3712
3812
  parser.consume("RPAREN");
3713
- emitInvoke(builder, 158 /* REDUCE_INVOKE */, { kind: 0, program: bodyProgram }, ["acc", "x"], 0);
3813
+ builder.emitOpcode(10 /* PUSH_NUMBER */);
3814
+ builder.emitNumber(0);
3815
+ emitInvoke(builder, 158 /* REDUCE_INVOKE */, { kind: 0, program: bodyProgram }, ["acc", "x"], 1);
3714
3816
  }
3715
3817
  };
3716
3818
 
@@ -3737,7 +3839,9 @@ var ProdParselet = class {
3737
3839
  parser.consume("COMMA");
3738
3840
  parseCollectionExpr(parser, builder);
3739
3841
  parser.consume("RPAREN");
3740
- emitInvoke(builder, 158 /* REDUCE_INVOKE */, { kind: 0, program: bodyProgram }, ["acc", "x"], 0);
3842
+ builder.emitOpcode(10 /* PUSH_NUMBER */);
3843
+ builder.emitNumber(1);
3844
+ emitInvoke(builder, 158 /* REDUCE_INVOKE */, { kind: 0, program: bodyProgram }, ["acc", "x"], 1);
3741
3845
  }
3742
3846
  };
3743
3847
 
@@ -3837,6 +3941,42 @@ var FactorParselet = class {
3837
3941
  }
3838
3942
  };
3839
3943
 
3944
+ // src/packages/symbolic/parselets/VariableArgument.ts
3945
+ function readVariableName(parser, verb) {
3946
+ const token = parser.peek();
3947
+ if (!token || token.type !== "IDENT" && token.type !== "UNIT") {
3948
+ throw ErrorFactory.parsing(
3949
+ "SYMBOLIC_REQUIRES_VARIABLE_NAME",
3950
+ `${verb} needs the name of an unknown here, as in ${verb}(x^2, x).`,
3951
+ { found: token?.type ?? "end of input" }
3952
+ );
3953
+ }
3954
+ parser.consume();
3955
+ return token.value;
3956
+ }
3957
+ function emitVariableName(builder, name) {
3958
+ builder.emitOpcode(13 /* PUSH_STRING */);
3959
+ builder.emitString(name);
3960
+ }
3961
+ function parseBoundExpression(parser, builder, verb) {
3962
+ const inner = new BytecodeBuilder();
3963
+ parser.parseExpression(BindingPower.Lowest, inner);
3964
+ parser.setBuilder(builder);
3965
+ const program = inner.build();
3966
+ if (program.hasAsync) {
3967
+ throw ErrorFactory.parsing(
3968
+ "SYMBOLIC_ARGUMENT_MUST_BE_SYNCHRONOUS",
3969
+ `${verb}'s expression must be synchronous (no weather/stocks/currency calls).`
3970
+ );
3971
+ }
3972
+ return program;
3973
+ }
3974
+ function emitBoundExpression(builder, program, name) {
3975
+ const index = builder.emitAnonymousBody([name], program);
3976
+ builder.emitOpcode(159 /* BIND_UNKNOWN */);
3977
+ builder.emitIndex(index);
3978
+ }
3979
+
3840
3980
  // src/packages/symbolic/parselets/SolveParselet.ts
3841
3981
  var SolveParselet = class {
3842
3982
  constructor() {
@@ -3844,13 +3984,8 @@ var SolveParselet = class {
3844
3984
  }
3845
3985
  parse(parser, _token, builder) {
3846
3986
  parser.consume("LPAREN");
3847
- parser.parseExpression(BindingPower.Lowest, builder);
3848
- if (parser.match("EQUALS")) {
3849
- parser.parseExpression(BindingPower.Lowest, builder);
3850
- } else {
3851
- builder.emitOpcode(10 /* PUSH_NUMBER */);
3852
- builder.emitNumber(0);
3853
- }
3987
+ const left = parseBoundExpression(parser, builder, "solve");
3988
+ const right = parser.match("EQUALS") ? parseBoundExpression(parser, builder, "solve") : null;
3854
3989
  parser.consume("COMMA");
3855
3990
  const variable = parser.peek();
3856
3991
  if (!variable || variable.type !== "IDENT" && variable.type !== "UNIT") {
@@ -3861,8 +3996,14 @@ var SolveParselet = class {
3861
3996
  );
3862
3997
  }
3863
3998
  parser.consume();
3864
- builder.emitOpcode(13 /* PUSH_STRING */);
3865
- builder.emitString(variable.value);
3999
+ emitBoundExpression(builder, left, variable.value);
4000
+ if (right) {
4001
+ emitBoundExpression(builder, right, variable.value);
4002
+ } else {
4003
+ builder.emitOpcode(10 /* PUSH_NUMBER */);
4004
+ builder.emitNumber(0);
4005
+ }
4006
+ emitVariableName(builder, variable.value);
3866
4007
  parser.consume("RPAREN");
3867
4008
  builder.emitOpcode(51 /* CALL_BUILTIN */);
3868
4009
  builder.emitIndex(SYMBOLIC_BUILTIN_SOLVE);
@@ -3870,21 +4011,6 @@ var SolveParselet = class {
3870
4011
  }
3871
4012
  };
3872
4013
 
3873
- // src/packages/symbolic/parselets/VariableArgument.ts
3874
- function consumeVariableName(parser, builder, verb) {
3875
- const token = parser.peek();
3876
- if (!token || token.type !== "IDENT" && token.type !== "UNIT") {
3877
- throw ErrorFactory.parsing(
3878
- "SYMBOLIC_REQUIRES_VARIABLE_NAME",
3879
- `${verb} needs the name of an unknown here, as in ${verb}(x^2, x).`,
3880
- { found: token?.type ?? "end of input" }
3881
- );
3882
- }
3883
- parser.consume();
3884
- builder.emitOpcode(13 /* PUSH_STRING */);
3885
- builder.emitString(token.value);
3886
- }
3887
-
3888
4014
  // src/packages/symbolic/parselets/DerParselet.ts
3889
4015
  var DerParselet = class {
3890
4016
  constructor() {
@@ -3892,9 +4018,11 @@ var DerParselet = class {
3892
4018
  }
3893
4019
  parse(parser, _token, builder) {
3894
4020
  parser.consume("LPAREN");
3895
- parser.parseExpression(BindingPower.Lowest, builder);
4021
+ const expression = parseBoundExpression(parser, builder, "der");
3896
4022
  parser.consume("COMMA");
3897
- consumeVariableName(parser, builder, "der");
4023
+ const variable = readVariableName(parser, "der");
4024
+ emitBoundExpression(builder, expression, variable);
4025
+ emitVariableName(builder, variable);
3898
4026
  if (parser.match("COMMA")) {
3899
4027
  parser.parseExpression(BindingPower.Lowest, builder);
3900
4028
  } else {
@@ -3915,9 +4043,11 @@ var IntegralParselet = class {
3915
4043
  }
3916
4044
  parse(parser, _token, builder) {
3917
4045
  parser.consume("LPAREN");
3918
- parser.parseExpression(BindingPower.Lowest, builder);
4046
+ const expression = parseBoundExpression(parser, builder, "integral");
3919
4047
  parser.consume("COMMA");
3920
- consumeVariableName(parser, builder, "integral");
4048
+ const variable = readVariableName(parser, "integral");
4049
+ emitBoundExpression(builder, expression, variable);
4050
+ emitVariableName(builder, variable);
3921
4051
  parser.consume("RPAREN");
3922
4052
  builder.emitOpcode(51 /* CALL_BUILTIN */);
3923
4053
  builder.emitIndex(SYMBOLIC_BUILTIN_INTEGRAL);
@@ -3932,9 +4062,11 @@ var TaylorParselet = class {
3932
4062
  }
3933
4063
  parse(parser, _token, builder) {
3934
4064
  parser.consume("LPAREN");
3935
- parser.parseExpression(BindingPower.Lowest, builder);
4065
+ const expression = parseBoundExpression(parser, builder, "taylor");
3936
4066
  parser.consume("COMMA");
3937
- consumeVariableName(parser, builder, "taylor");
4067
+ const variable = readVariableName(parser, "taylor");
4068
+ emitBoundExpression(builder, expression, variable);
4069
+ emitVariableName(builder, variable);
3938
4070
  parser.consume("EQUALS");
3939
4071
  parser.parseExpression(BindingPower.Lowest, builder);
3940
4072
  parser.consume("COMMA");
@@ -4267,10 +4399,8 @@ var BigIntNumberParselet = class {
4267
4399
  this.category = "BigInt";
4268
4400
  }
4269
4401
  parse(parser, token, builder) {
4270
- let raw = token.value;
4271
- if (raw.endsWith("n")) raw = raw.slice(0, -1);
4272
4402
  builder.emitOpcode(11 /* PUSH_BIGINT */);
4273
- builder.emitString(raw);
4403
+ builder.emitString(bigIntLiteralDigits(token.value, parser.getLocaleCode()));
4274
4404
  }
4275
4405
  };
4276
4406
 
@@ -4456,6 +4586,7 @@ function emitRoundDirection(builder, direction) {
4456
4586
  var ROUND_BUILTIN = 8;
4457
4587
  var CEIL_BUILTIN = 6;
4458
4588
  var FLOOR_BUILTIN = 7;
4589
+ var ROUND_TO_PLACES_BUILTIN = 97;
4459
4590
  function readDirection(parser) {
4460
4591
  const next = parser.peek();
4461
4592
  const word = (next?.text ?? "").toLowerCase();
@@ -4523,14 +4654,11 @@ var DecimalPlacesParselet = class {
4523
4654
  `"to ${token.value} dp": expected a place count between 0 and 100`
4524
4655
  );
4525
4656
  }
4526
- const scale = Math.pow(10, places);
4527
4657
  builder.emitOpcode(10 /* PUSH_NUMBER */);
4528
- builder.emitNumber(scale);
4529
- builder.emitOpcode(22 /* MUL */);
4530
- emitRoundDirection(builder, "nearest");
4531
- builder.emitOpcode(10 /* PUSH_NUMBER */);
4532
- builder.emitNumber(scale);
4533
- builder.emitOpcode(23 /* DIV */);
4658
+ builder.emitNumber(places);
4659
+ builder.emitOpcode(51 /* CALL_BUILTIN */);
4660
+ builder.emitIndex(ROUND_TO_PLACES_BUILTIN);
4661
+ builder.emitIndex(2);
4534
4662
  }
4535
4663
  };
4536
4664
 
@@ -4569,6 +4697,7 @@ function decimalPlacesNormalizerRule(priority = 66) {
4569
4697
  }
4570
4698
 
4571
4699
  // src/packages/converters/normalizer/ConverterPrepositionNormalizerRule.ts
4700
+ var FUNC_TYPED_CONVERTERS = /* @__PURE__ */ new Set(["hex", "bin"]);
4572
4701
  function converterPrepositionNormalizerRule(priority = 67) {
4573
4702
  return {
4574
4703
  name: "converters:preposition",
@@ -4576,7 +4705,9 @@ function converterPrepositionNormalizerRule(priority = 67) {
4576
4705
  match(tokens, pos) {
4577
4706
  const preposition = tokens[pos];
4578
4707
  if (preposition?.type !== "IN" && preposition?.type !== "TO") return null;
4579
- if (tokens[pos + 1]?.type !== "CONVERTER_NAME") return null;
4708
+ const target = tokens[pos + 1];
4709
+ const isConverterTarget = target?.type === "CONVERTER_NAME" || target?.type === "FUNC" && FUNC_TYPED_CONVERTERS.has(target.value.toLowerCase());
4710
+ if (!isConverterTarget) return null;
4580
4711
  return {
4581
4712
  consumed: 1,
4582
4713
  replacement: [createFusedToken("AS", "as", [preposition])],
@@ -5144,12 +5275,23 @@ function inflationFutureValueHandler(args) {
5144
5275
 
5145
5276
  // src/packages/finance/parselets/InflationQueryParselet.ts
5146
5277
  var INFLATION_ADJUST_BUILTIN_IDX = 60;
5278
+ function hasInflationKeyword(parser) {
5279
+ for (let offset = 0; ; offset++) {
5280
+ const token = parser.peekAt(offset);
5281
+ if (!token) return false;
5282
+ if (token.type === "FROM" || token.type === "WORTH_IN") return true;
5283
+ }
5284
+ }
5147
5285
  var InflationQueryParselet = class {
5148
5286
  constructor(variant) {
5149
5287
  this.variant = variant;
5150
5288
  this.category = "Finance";
5151
5289
  }
5152
5290
  parse(parser, _token, builder) {
5291
+ if (!hasInflationKeyword(parser)) {
5292
+ parser.parseExpression(BindingPower.Lowest, builder);
5293
+ return;
5294
+ }
5153
5295
  parser.parseExpression(BindingPower.Product, builder);
5154
5296
  if (this.variant === "what-was") {
5155
5297
  parser.consume("WORTH_IN");
@@ -6366,5 +6508,5 @@ var BUILTIN_PACKAGES = [
6366
6508
  ];
6367
6509
 
6368
6510
  export { ARITHMETIC_PACKAGE, BIGINT_PACKAGE, BUILTIN_PACKAGES, CONDITIONALS_PACKAGE, CONVERTERS_PACKAGE, CURRENCY_PACKAGE, DATETIME_PACKAGE, DICE_PACKAGE, FINANCE_PACKAGE, FUNCTION_PACKAGE, LINES_PACKAGE, MAPREDUCE_PACKAGE, MATHPHRASES_PACKAGE, MATRIX_PACKAGE, PERCENTAGE_PACKAGE, SYMBOLIC_PACKAGE, TIME_PACKAGE, UOM_PACKAGE, VARIABLES_PACKAGE, VECTOR_PACKAGE, WEATHER_PACKAGE, containsSymbolicCall, createKnowledgePackage, createStocksPackage };
6369
- //# sourceMappingURL=chunk-GVWHCL2N.js.map
6370
- //# sourceMappingURL=chunk-GVWHCL2N.js.map
6511
+ //# sourceMappingURL=chunk-HMOISHXR.js.map
6512
+ //# sourceMappingURL=chunk-HMOISHXR.js.map