solve-engine 1.1.0 → 1.2.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.
- package/dist/{EngineError-B61GS1jp.d.cts → EngineError-CNA_rHY-.d.cts} +6 -0
- package/dist/{EngineError-B61GS1jp.d.ts → EngineError-CNA_rHY-.d.ts} +6 -0
- package/dist/{Lexer-BOs7euZe.d.cts → Lexer-B4C1qHXu.d.cts} +1 -1
- package/dist/{Lexer-CSI_lwbW.d.ts → Lexer-DKMlj7Sy.d.ts} +1 -1
- package/dist/{PackageCompatibility-B-7rK1TD.d.cts → PackageCompatibility-B6NX9IaN.d.cts} +1 -1
- package/dist/{PackageCompatibility-Dh59eF-X.d.ts → PackageCompatibility-Ceg5XdAp.d.ts} +1 -1
- package/dist/{PackageRegistry-BHWJP83F.d.cts → PackageRegistry-DnJYVw9G.d.cts} +55 -8
- package/dist/{PackageRegistry-_8rDlvxI.d.ts → PackageRegistry-DrCPQNyy.d.ts} +55 -8
- package/dist/{Parselet-BBT8riYh.d.ts → Parselet-Bhf7d0_W.d.ts} +2 -2
- package/dist/{Parselet-BHcgK9S7.d.cts → Parselet-Cv7S7KRt.d.cts} +2 -2
- package/dist/{ScopeManager-CxA24W5n.d.ts → ScopeManager-Bzq87GfA.d.ts} +10 -3
- package/dist/{ScopeManager-8vf02dwj.d.cts → ScopeManager-DRDBVfan.d.cts} +10 -3
- package/dist/{Token-B1hdkedD.d.cts → Token-CbP_OutD.d.cts} +9 -0
- package/dist/{Token-B1hdkedD.d.ts → Token-CbP_OutD.d.ts} +9 -0
- package/dist/{TokenNormalizer-C6VzZgHa.d.ts → TokenNormalizer-DCWdZjGz.d.ts} +1 -1
- package/dist/{TokenNormalizer-DRc1Js1V.d.cts → TokenNormalizer-DnlL7_8c.d.cts} +1 -1
- package/dist/{VMCheckpoints-MK--EBH2.d.ts → VMCheckpoints-C6c17Hbo.d.ts} +2 -2
- package/dist/{VMCheckpoints-ELYqITdF.d.cts → VMCheckpoints-dZxSMGHG.d.cts} +2 -2
- package/dist/{Value-BUi1RA3S.d.cts → Value-DZNQ_PU7.d.cts} +32 -5
- package/dist/{Value-BUi1RA3S.d.ts → Value-DZNQ_PU7.d.ts} +32 -5
- package/dist/{WorkerError-_-RkoQ5P.d.ts → WorkerError-B7t7R2-m.d.ts} +1 -1
- package/dist/{WorkerError-gzmaopj2.d.cts → WorkerError-Djd7GGGa.d.cts} +1 -1
- package/dist/{chunk-SSV46KFA.cjs → chunk-4K5W7EH2.cjs} +6 -6
- package/dist/{chunk-SSV46KFA.cjs.map → chunk-4K5W7EH2.cjs.map} +1 -1
- package/dist/{chunk-267JPOTF.js → chunk-5EFKSKMA.js} +11 -4
- package/dist/chunk-5EFKSKMA.js.map +1 -0
- package/dist/{chunk-536WPM2V.cjs → chunk-7AXJNQMF.cjs} +17 -3
- package/dist/chunk-7AXJNQMF.cjs.map +1 -0
- package/dist/{chunk-GUG7SNSV.js → chunk-7JM3F4KL.js} +39 -8
- package/dist/chunk-7JM3F4KL.js.map +1 -0
- package/dist/{chunk-XJGJCF2R.cjs → chunk-7USV76HV.cjs} +6 -6
- package/dist/{chunk-XJGJCF2R.cjs.map → chunk-7USV76HV.cjs.map} +1 -1
- package/dist/{chunk-HIQ5HSZL.cjs → chunk-A2DZ5BEJ.cjs} +53 -46
- package/dist/{chunk-HIQ5HSZL.cjs.map → chunk-A2DZ5BEJ.cjs.map} +1 -1
- package/dist/{chunk-CKQMXMHR.cjs → chunk-AKNGX4TZ.cjs} +28 -11
- package/dist/chunk-AKNGX4TZ.cjs.map +1 -0
- package/dist/{chunk-I4GAWIPW.js → chunk-AOH6UR2L.js} +6 -6
- package/dist/{chunk-I4GAWIPW.js.map → chunk-AOH6UR2L.js.map} +1 -1
- package/dist/{chunk-MG6Q3DUO.cjs → chunk-BESTLPRK.cjs} +326 -214
- package/dist/chunk-BESTLPRK.cjs.map +1 -0
- package/dist/{chunk-Z7XGGLI2.js → chunk-BSPXMGIS.js} +3 -3
- package/dist/{chunk-Z7XGGLI2.js.map → chunk-BSPXMGIS.js.map} +1 -1
- package/dist/{chunk-SRGQ72IR.cjs → chunk-C2OMO3WN.cjs} +376 -370
- package/dist/chunk-C2OMO3WN.cjs.map +1 -0
- package/dist/{chunk-G7Z4HJQA.js → chunk-CSDQMDU2.js} +4 -4
- package/dist/{chunk-G7Z4HJQA.js.map → chunk-CSDQMDU2.js.map} +1 -1
- package/dist/{chunk-7KYSUDQO.js → chunk-F4UB4XIL.js} +4 -4
- package/dist/{chunk-7KYSUDQO.js.map → chunk-F4UB4XIL.js.map} +1 -1
- package/dist/{chunk-WXEHD6TT.js → chunk-FE4RC37D.js} +15 -9
- package/dist/chunk-FE4RC37D.js.map +1 -0
- package/dist/{chunk-7ZX6B7SY.cjs → chunk-FR7RNOPT.cjs} +637 -556
- package/dist/chunk-FR7RNOPT.cjs.map +1 -0
- package/dist/{chunk-QFTDTX6K.cjs → chunk-G2YPPLGX.cjs} +29 -2
- package/dist/chunk-G2YPPLGX.cjs.map +1 -0
- package/dist/{chunk-HVRVSI2Z.cjs → chunk-GDEU72RG.cjs} +86 -86
- package/dist/{chunk-HVRVSI2Z.cjs.map → chunk-GDEU72RG.cjs.map} +1 -1
- package/dist/{chunk-OTN6SZOD.cjs → chunk-HKTQCQ4Z.cjs} +860 -489
- package/dist/chunk-HKTQCQ4Z.cjs.map +1 -0
- package/dist/{chunk-XA4CKRML.cjs → chunk-HWHU642X.cjs} +2 -2
- package/dist/{chunk-XA4CKRML.cjs.map → chunk-HWHU642X.cjs.map} +1 -1
- package/dist/{chunk-C75AFGVD.cjs → chunk-ICEKS6YC.cjs} +11 -11
- package/dist/{chunk-C75AFGVD.cjs.map → chunk-ICEKS6YC.cjs.map} +1 -1
- package/dist/{chunk-JIPATHVY.js → chunk-IJGOFP2J.js} +138 -26
- package/dist/chunk-IJGOFP2J.js.map +1 -0
- package/dist/{chunk-ENKKJYD3.js → chunk-IQJGDZOP.js} +4 -4
- package/dist/{chunk-ENKKJYD3.js.map → chunk-IQJGDZOP.js.map} +1 -1
- package/dist/{chunk-2TZKENDH.cjs → chunk-IT74O4BE.cjs} +15 -7
- package/dist/chunk-IT74O4BE.cjs.map +1 -0
- package/dist/{chunk-ZVTWQLK4.cjs → chunk-KXDQKVNX.cjs} +10 -10
- package/dist/{chunk-ZVTWQLK4.cjs.map → chunk-KXDQKVNX.cjs.map} +1 -1
- package/dist/{chunk-JJIXHXFQ.js → chunk-L5YHV6BQ.js} +5 -5
- package/dist/{chunk-JJIXHXFQ.js.map → chunk-L5YHV6BQ.js.map} +1 -1
- package/dist/{chunk-ZXCESUJS.cjs → chunk-LO7HU5WB.cjs} +8 -8
- package/dist/{chunk-ZXCESUJS.cjs.map → chunk-LO7HU5WB.cjs.map} +1 -1
- package/dist/{chunk-UO6BUV6K.js → chunk-LSALB3IN.js} +17 -3
- package/dist/chunk-LSALB3IN.js.map +1 -0
- package/dist/{chunk-J45BCEZ4.cjs → chunk-MI7OTUHL.cjs} +27 -27
- package/dist/{chunk-J45BCEZ4.cjs.map → chunk-MI7OTUHL.cjs.map} +1 -1
- package/dist/{chunk-B4HBEFTB.cjs → chunk-MIGXCBXT.cjs} +8 -2
- package/dist/chunk-MIGXCBXT.cjs.map +1 -0
- package/dist/{chunk-ERCOHGXD.js → chunk-N7OA4WPJ.js} +8 -2
- package/dist/chunk-N7OA4WPJ.js.map +1 -0
- package/dist/{chunk-4D6NIHE2.js → chunk-NAWZATKT.js} +29 -2
- package/dist/chunk-NAWZATKT.js.map +1 -0
- package/dist/{chunk-GQMUHVE3.js → chunk-ORM7CHYZ.js} +36 -5
- package/dist/chunk-ORM7CHYZ.js.map +1 -0
- package/dist/{chunk-B7NLZMQ3.cjs → chunk-PCZVMMWU.cjs} +8 -8
- package/dist/{chunk-B7NLZMQ3.cjs.map → chunk-PCZVMMWU.cjs.map} +1 -1
- package/dist/{chunk-OADDUPT3.js → chunk-RNKDIXDV.js} +4 -4
- package/dist/{chunk-OADDUPT3.js.map → chunk-RNKDIXDV.js.map} +1 -1
- package/dist/{chunk-SNHVVOJK.cjs → chunk-TC6BTUSU.cjs} +55 -24
- package/dist/chunk-TC6BTUSU.cjs.map +1 -0
- package/dist/{chunk-RRLHC37V.js → chunk-TPOK3UNI.js} +387 -17
- package/dist/chunk-TPOK3UNI.js.map +1 -0
- package/dist/{chunk-CCBZZQAE.js → chunk-UF6JG5SG.js} +2 -2
- package/dist/{chunk-CCBZZQAE.js.map → chunk-UF6JG5SG.js.map} +1 -1
- package/dist/{chunk-NKW7LKYU.js → chunk-WMQRJTAO.js} +88 -7
- package/dist/chunk-WMQRJTAO.js.map +1 -0
- package/dist/{chunk-YTIYVHL7.cjs → chunk-YJHY7CMN.cjs} +108 -77
- package/dist/chunk-YJHY7CMN.cjs.map +1 -0
- package/dist/{chunk-3OWCDIPN.js → chunk-YNIWOYW6.js} +21 -4
- package/dist/chunk-YNIWOYW6.js.map +1 -0
- package/dist/{chunk-WWQEY7BV.js → chunk-ZN6YYPIW.js} +3 -3
- package/dist/{chunk-WWQEY7BV.js.map → chunk-ZN6YYPIW.js.map} +1 -1
- package/dist/{chunk-NNQ2TYDF.js → chunk-ZNFFTYWH.js} +11 -5
- package/dist/chunk-ZNFFTYWH.js.map +1 -0
- package/dist/constants.cjs +5 -5
- package/dist/constants.js +2 -2
- package/dist/engine.cjs +33 -33
- package/dist/engine.d.cts +27 -11
- package/dist/engine.d.ts +27 -11
- package/dist/engine.js +20 -20
- package/dist/errors.cjs +26 -26
- package/dist/errors.d.cts +3 -3
- package/dist/errors.d.ts +3 -3
- package/dist/errors.js +2 -2
- package/dist/format.cjs +7 -7
- package/dist/format.d.cts +1 -1
- package/dist/format.d.ts +1 -1
- package/dist/format.js +4 -4
- package/dist/index.cjs +48 -48
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +21 -21
- package/dist/language.cjs +7 -7
- package/dist/language.d.cts +10 -10
- package/dist/language.d.ts +10 -10
- package/dist/language.js +2 -2
- package/dist/lexer.cjs +16 -16
- package/dist/lexer.d.cts +3 -3
- package/dist/lexer.d.ts +3 -3
- package/dist/lexer.js +5 -5
- package/dist/normalizer.cjs +10 -10
- package/dist/normalizer.d.cts +3 -3
- package/dist/normalizer.d.ts +3 -3
- package/dist/normalizer.js +4 -4
- package/dist/packages.cjs +40 -36
- package/dist/packages.d.cts +37 -11
- package/dist/packages.d.ts +37 -11
- package/dist/packages.js +11 -11
- package/dist/parser.cjs +13 -13
- package/dist/parser.d.cts +4 -4
- package/dist/parser.d.ts +4 -4
- package/dist/parser.js +5 -5
- package/dist/{pipeline-CtfJtPQc.d.cts → pipeline-D-PS9gVw.d.ts} +3 -3
- package/dist/{pipeline-DCd5M6Gk.d.ts → pipeline-DtSBJ8TS.d.cts} +3 -3
- package/dist/resolvers.d.cts +2 -2
- package/dist/resolvers.d.ts +2 -2
- package/dist/testing.cjs +26 -26
- package/dist/testing.d.cts +10 -10
- package/dist/testing.d.ts +10 -10
- package/dist/testing.js +19 -19
- package/dist/uom.cjs +8 -8
- package/dist/uom.d.cts +2 -2
- package/dist/uom.d.ts +2 -2
- package/dist/uom.js +4 -4
- package/dist/vm.cjs +32 -32
- package/dist/vm.d.cts +7 -7
- package/dist/vm.d.ts +7 -7
- package/dist/vm.js +7 -7
- package/dist/worker.cjs +38 -38
- package/dist/worker.d.cts +10 -10
- package/dist/worker.d.ts +10 -10
- package/dist/worker.js +20 -20
- package/package.json +1 -1
- package/dist/chunk-267JPOTF.js.map +0 -1
- package/dist/chunk-2TZKENDH.cjs.map +0 -1
- package/dist/chunk-3OWCDIPN.js.map +0 -1
- package/dist/chunk-4D6NIHE2.js.map +0 -1
- package/dist/chunk-536WPM2V.cjs.map +0 -1
- package/dist/chunk-7ZX6B7SY.cjs.map +0 -1
- package/dist/chunk-B4HBEFTB.cjs.map +0 -1
- package/dist/chunk-CKQMXMHR.cjs.map +0 -1
- package/dist/chunk-ERCOHGXD.js.map +0 -1
- package/dist/chunk-GQMUHVE3.js.map +0 -1
- package/dist/chunk-GUG7SNSV.js.map +0 -1
- package/dist/chunk-JIPATHVY.js.map +0 -1
- package/dist/chunk-MG6Q3DUO.cjs.map +0 -1
- package/dist/chunk-NKW7LKYU.js.map +0 -1
- package/dist/chunk-NNQ2TYDF.js.map +0 -1
- package/dist/chunk-OTN6SZOD.cjs.map +0 -1
- package/dist/chunk-QFTDTX6K.cjs.map +0 -1
- package/dist/chunk-RRLHC37V.js.map +0 -1
- package/dist/chunk-SNHVVOJK.cjs.map +0 -1
- package/dist/chunk-SRGQ72IR.cjs.map +0 -1
- package/dist/chunk-UO6BUV6K.js.map +0 -1
- package/dist/chunk-WXEHD6TT.js.map +0 -1
- package/dist/chunk-YTIYVHL7.cjs.map +0 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { BindingPower, BytecodeBuilder, bigIntLiteralDigits } from './chunk-
|
|
2
|
-
import { createFusedToken, isInsideRangeContext } from './chunk-
|
|
1
|
+
import { BindingPower, BytecodeBuilder, bigIntLiteralDigits } from './chunk-IQJGDZOP.js';
|
|
2
|
+
import { createFusedToken, isInsideRangeContext } from './chunk-L5YHV6BQ.js';
|
|
3
3
|
import { stripQuotes } from './chunk-3BOK2LDK.js';
|
|
4
|
-
import { CurrencyAsyncResolver, nextInstruction } from './chunk-
|
|
4
|
+
import { CurrencyAsyncResolver, nextInstruction } from './chunk-F4UB4XIL.js';
|
|
5
5
|
import { getActiveQueryClient } from './chunk-NLNDMWZC.js';
|
|
6
|
-
import { allocatePluginFunctionIndex, sharedGlobalVariableStore, adjustForInflation, solveForVariable, CPI_MIN_YEAR, CPI_MAX_YEAR } from './chunk-
|
|
7
|
-
import { sharedCurrencyExchange } from './chunk-
|
|
6
|
+
import { allocatePluginFunctionIndex, sharedGlobalVariableStore, adjustForInflation, solveForVariable, CPI_MIN_YEAR, CPI_MAX_YEAR } from './chunk-WMQRJTAO.js';
|
|
7
|
+
import { sharedCurrencyExchange } from './chunk-BSPXMGIS.js';
|
|
8
8
|
import { createTimeoutSignal } from './chunk-Z4X2RWOF.js';
|
|
9
9
|
import { parseColour, clamp255, clamp01, hslToRgb, rotateHue, complement, grayscale, invert, mix, withAlpha, contrastRatio, relativeLuminance, hsvToRgb, hwbToRgb, isDark, readableColour, wcagLevel, WCAG_THRESHOLDS, lighten, darken, saturate, desaturate, rgbToHsl, tint, shade, tone } from './chunk-5HRB36DK.js';
|
|
10
|
-
import { resolveCurrencyAlias, varNode, constNode, rationalFromNumber, simplifySymbolic, rationalToNumber } from './chunk-
|
|
11
|
-
import { errorValue, colourValue, numberValue, boolValue, stringValue, faultedOperand, uomValue, datetimeValue, timecodeUnit, symbolicValue, ValueType } from './chunk-
|
|
10
|
+
import { resolveCurrencyAlias, varNode, constNode, rationalFromNumber, simplifySymbolic, rationalToNumber } from './chunk-ZNFFTYWH.js';
|
|
11
|
+
import { errorValue, colourValue, numberValue, boolValue, stringValue, faultedOperand, uomValue, datetimeValue, timecodeUnit, symbolicValue, ValueType } from './chunk-5EFKSKMA.js';
|
|
12
12
|
import { getMeasure, convertUnit } from './chunk-MVTOCRV2.js';
|
|
13
|
-
import { LexerToken } from './chunk-
|
|
14
|
-
import { tokenTypeId } from './chunk-
|
|
13
|
+
import { LexerToken } from './chunk-ORM7CHYZ.js';
|
|
14
|
+
import { tokenTypeId } from './chunk-NAWZATKT.js';
|
|
15
15
|
import { getLocale } from './chunk-XBTEO4OB.js';
|
|
16
16
|
import { isKnownUnit } from './chunk-SBUFNJVE.js';
|
|
17
17
|
import { UNIT_TABLE } from './chunk-V4XG5QF6.js';
|
|
18
|
-
import { ErrorFactory } from './chunk-
|
|
18
|
+
import { ErrorFactory } from './chunk-N7OA4WPJ.js';
|
|
19
19
|
|
|
20
20
|
// src/packages/arithmetic/parselets/NumberParselet.ts
|
|
21
21
|
var CHAINED_DOT_THOUSANDS_GROUPS = /^\d{1,3}(\.\d{3}){2,}$/;
|
|
@@ -5635,6 +5635,105 @@ var LoanRepaymentParselet = class {
|
|
|
5635
5635
|
}
|
|
5636
5636
|
};
|
|
5637
5637
|
|
|
5638
|
+
// src/packages/finance/parselets/BillSplitParselets.ts
|
|
5639
|
+
var SplitBetweenParselet = class {
|
|
5640
|
+
constructor(builtinIndex) {
|
|
5641
|
+
this.builtinIndex = builtinIndex;
|
|
5642
|
+
this.category = "Finance";
|
|
5643
|
+
}
|
|
5644
|
+
parse(parser, _token, builder) {
|
|
5645
|
+
parser.parseExpression(BindingPower.Lowest, builder);
|
|
5646
|
+
parser.consume("BETWEEN");
|
|
5647
|
+
parser.parseExpression(BindingPower.Lowest, builder);
|
|
5648
|
+
parser.match("PEOPLE");
|
|
5649
|
+
builder.emitOpcode(51 /* CALL_BUILTIN */);
|
|
5650
|
+
builder.emitIndex(this.builtinIndex);
|
|
5651
|
+
builder.emitIndex(2);
|
|
5652
|
+
}
|
|
5653
|
+
};
|
|
5654
|
+
var SplitWaysParselet = class {
|
|
5655
|
+
constructor(builtinIndex) {
|
|
5656
|
+
this.builtinIndex = builtinIndex;
|
|
5657
|
+
this.category = "Finance";
|
|
5658
|
+
this.bindingPower = BindingPower.Conditional;
|
|
5659
|
+
}
|
|
5660
|
+
parse(parser, _left, _token, builder) {
|
|
5661
|
+
parser.parseExpression(BindingPower.Conditional, builder);
|
|
5662
|
+
parser.consume("WAYS");
|
|
5663
|
+
builder.emitOpcode(51 /* CALL_BUILTIN */);
|
|
5664
|
+
builder.emitIndex(this.builtinIndex);
|
|
5665
|
+
builder.emitIndex(2);
|
|
5666
|
+
}
|
|
5667
|
+
};
|
|
5668
|
+
|
|
5669
|
+
// src/packages/finance/parselets/SavingsGoalParselets.ts
|
|
5670
|
+
var SAVINGS_PERIODS = {
|
|
5671
|
+
daily: { perYear: 365, unit: "days" },
|
|
5672
|
+
weekly: { perYear: 52, unit: "weeks" },
|
|
5673
|
+
monthly: { perYear: 12, unit: "months" },
|
|
5674
|
+
yearly: { perYear: 1, unit: "years" },
|
|
5675
|
+
annually: { perYear: 1, unit: "years" }
|
|
5676
|
+
};
|
|
5677
|
+
function readSavingsPeriod(parser) {
|
|
5678
|
+
const token = parser.peek();
|
|
5679
|
+
const word = (token?.text ?? token?.value ?? "").toLowerCase();
|
|
5680
|
+
const period = SAVINGS_PERIODS[word];
|
|
5681
|
+
if (period === void 0) {
|
|
5682
|
+
throw ErrorFactory.parsing(
|
|
5683
|
+
"UNKNOWN_SAVINGS_PERIOD",
|
|
5684
|
+
`savings goal: expected a contribution period, one of ${Object.keys(SAVINGS_PERIODS).join(", ")}, not "${word || "?"}".`
|
|
5685
|
+
);
|
|
5686
|
+
}
|
|
5687
|
+
parser.consume();
|
|
5688
|
+
return period;
|
|
5689
|
+
}
|
|
5690
|
+
var SavingsDurationParselet = class {
|
|
5691
|
+
constructor(builtinIndex) {
|
|
5692
|
+
this.builtinIndex = builtinIndex;
|
|
5693
|
+
this.category = "Finance";
|
|
5694
|
+
}
|
|
5695
|
+
parse(parser, _token, builder) {
|
|
5696
|
+
parser.parseExpression(BindingPower.Conditional, builder);
|
|
5697
|
+
if (!parser.match("RATE_AT")) parser.consume("AT");
|
|
5698
|
+
parser.parseExpression(BindingPower.Product, builder);
|
|
5699
|
+
parser.match("STAR");
|
|
5700
|
+
const period = readSavingsPeriod(parser);
|
|
5701
|
+
builder.emitOpcode(10 /* PUSH_NUMBER */);
|
|
5702
|
+
builder.emitNumber(period.perYear);
|
|
5703
|
+
if (parser.match("RATE_AT") || parser.match("AT")) {
|
|
5704
|
+
parser.parseExpression(BindingPower.Conditional, builder);
|
|
5705
|
+
} else {
|
|
5706
|
+
builder.emitOpcode(10 /* PUSH_NUMBER */);
|
|
5707
|
+
builder.emitNumber(0);
|
|
5708
|
+
}
|
|
5709
|
+
builder.emitOpcode(13 /* PUSH_STRING */);
|
|
5710
|
+
builder.emitString(period.unit);
|
|
5711
|
+
builder.emitOpcode(51 /* CALL_BUILTIN */);
|
|
5712
|
+
builder.emitIndex(this.builtinIndex);
|
|
5713
|
+
builder.emitIndex(5);
|
|
5714
|
+
}
|
|
5715
|
+
};
|
|
5716
|
+
var SavingsContributionParselet = class {
|
|
5717
|
+
constructor(builtinIndex) {
|
|
5718
|
+
this.builtinIndex = builtinIndex;
|
|
5719
|
+
this.category = "Finance";
|
|
5720
|
+
}
|
|
5721
|
+
parse(parser, _token, builder) {
|
|
5722
|
+
parser.parseExpression(BindingPower.Product, builder);
|
|
5723
|
+
parser.consume("IN");
|
|
5724
|
+
parser.parseExpression(BindingPower.Conditional, builder);
|
|
5725
|
+
if (parser.match("RATE_AT") || parser.match("AT")) {
|
|
5726
|
+
parser.parseExpression(BindingPower.Conditional, builder);
|
|
5727
|
+
} else {
|
|
5728
|
+
builder.emitOpcode(10 /* PUSH_NUMBER */);
|
|
5729
|
+
builder.emitNumber(0);
|
|
5730
|
+
}
|
|
5731
|
+
builder.emitOpcode(51 /* CALL_BUILTIN */);
|
|
5732
|
+
builder.emitIndex(this.builtinIndex);
|
|
5733
|
+
builder.emitIndex(3);
|
|
5734
|
+
}
|
|
5735
|
+
};
|
|
5736
|
+
|
|
5638
5737
|
// src/packages/finance/parselets/SalesTaxParselet.ts
|
|
5639
5738
|
var SalesTaxParselet = class {
|
|
5640
5739
|
constructor(builtinIndex) {
|
|
@@ -5936,6 +6035,77 @@ function recurringScheduleNormalizerRule(priority = 78) {
|
|
|
5936
6035
|
};
|
|
5937
6036
|
}
|
|
5938
6037
|
|
|
6038
|
+
// src/packages/finance/normalizer/BillSplitNormalizerRule.ts
|
|
6039
|
+
function wordOf2(token) {
|
|
6040
|
+
if (token === void 0) return "";
|
|
6041
|
+
return (token.text ?? token.value ?? "").toLowerCase();
|
|
6042
|
+
}
|
|
6043
|
+
var VALUE_ENDERS2 = /* @__PURE__ */ new Set([
|
|
6044
|
+
"NUMBER",
|
|
6045
|
+
"FLOAT",
|
|
6046
|
+
"HEX",
|
|
6047
|
+
"BIGINT",
|
|
6048
|
+
"RPAREN",
|
|
6049
|
+
"RBRACKET",
|
|
6050
|
+
"IDENT",
|
|
6051
|
+
"PERCENT",
|
|
6052
|
+
"STRING"
|
|
6053
|
+
]);
|
|
6054
|
+
var NUMERIC = /* @__PURE__ */ new Set(["NUMBER", "FLOAT"]);
|
|
6055
|
+
function billSplitNormalizerRule(priority = 77) {
|
|
6056
|
+
return {
|
|
6057
|
+
name: "finance:bill-split",
|
|
6058
|
+
priority,
|
|
6059
|
+
match(tokens, pos) {
|
|
6060
|
+
const head = tokens[pos];
|
|
6061
|
+
if (head === void 0) return null;
|
|
6062
|
+
if (VALUE_ENDERS2.has(head.type)) {
|
|
6063
|
+
const split = tokens[pos + 1];
|
|
6064
|
+
const count2 = tokens[pos + 2];
|
|
6065
|
+
const ways = tokens[pos + 3];
|
|
6066
|
+
if (split?.type === "IDENT" && wordOf2(split) === "split" && count2 !== void 0 && NUMERIC.has(count2.type) && ways?.type === "IDENT" && wordOf2(ways) === "ways") {
|
|
6067
|
+
return {
|
|
6068
|
+
consumed: 4,
|
|
6069
|
+
replacement: [
|
|
6070
|
+
head,
|
|
6071
|
+
createFusedToken("SPLIT_WAYS", "split", [split]),
|
|
6072
|
+
count2,
|
|
6073
|
+
createFusedToken("WAYS", "ways", [ways])
|
|
6074
|
+
],
|
|
6075
|
+
ruleName: "finance:bill-split"
|
|
6076
|
+
};
|
|
6077
|
+
}
|
|
6078
|
+
}
|
|
6079
|
+
if (head.type !== "IDENT" || wordOf2(head) !== "split") return null;
|
|
6080
|
+
const before = tokens[pos - 1];
|
|
6081
|
+
if (before !== void 0 && VALUE_ENDERS2.has(before.type)) return null;
|
|
6082
|
+
let betweenIndex = -1;
|
|
6083
|
+
for (let i = pos + 1; i < tokens.length; i++) {
|
|
6084
|
+
if (tokens[i].type === "BETWEEN") {
|
|
6085
|
+
betweenIndex = i;
|
|
6086
|
+
break;
|
|
6087
|
+
}
|
|
6088
|
+
}
|
|
6089
|
+
if (betweenIndex === -1) return null;
|
|
6090
|
+
const count = tokens[betweenIndex + 1];
|
|
6091
|
+
if (count === void 0 || !NUMERIC.has(count.type)) return null;
|
|
6092
|
+
const peopleIndex = betweenIndex + 2;
|
|
6093
|
+
const hasPeople = tokens[peopleIndex]?.type === "IDENT" && wordOf2(tokens[peopleIndex]) === "people";
|
|
6094
|
+
const lastIndex = hasPeople ? peopleIndex : betweenIndex + 1;
|
|
6095
|
+
const replacement = [
|
|
6096
|
+
createFusedToken("SPLIT", "split", [head]),
|
|
6097
|
+
...tokens.slice(pos + 1, betweenIndex + 2)
|
|
6098
|
+
];
|
|
6099
|
+
if (hasPeople) replacement.push(createFusedToken("PEOPLE", "people", [tokens[peopleIndex]]));
|
|
6100
|
+
return {
|
|
6101
|
+
consumed: lastIndex - pos + 1,
|
|
6102
|
+
replacement,
|
|
6103
|
+
ruleName: "finance:bill-split"
|
|
6104
|
+
};
|
|
6105
|
+
}
|
|
6106
|
+
};
|
|
6107
|
+
}
|
|
6108
|
+
|
|
5939
6109
|
// src/packages/finance/FinancePackage.ts
|
|
5940
6110
|
var COMPOUND_FV = 51;
|
|
5941
6111
|
var COMPOUND_INTEREST = 52;
|
|
@@ -5949,6 +6119,9 @@ var ANNUAL_RETURN = 84;
|
|
|
5949
6119
|
var TAX_REMOVE = 59;
|
|
5950
6120
|
var TAX_IN = 85;
|
|
5951
6121
|
var TAX_ON = 86;
|
|
6122
|
+
var SPLIT_EACH = 98;
|
|
6123
|
+
var SAVINGS_PAYMENT = 99;
|
|
6124
|
+
var SAVINGS_PERIODS2 = 100;
|
|
5952
6125
|
var FINANCE_PACKAGE = {
|
|
5953
6126
|
name: "solve-finance",
|
|
5954
6127
|
phrases: {
|
|
@@ -5980,6 +6153,9 @@ var FINANCE_PACKAGE = {
|
|
|
5980
6153
|
"annual return on": "ANNUAL_RETURN_ON",
|
|
5981
6154
|
"value of": "VALUE_OF",
|
|
5982
6155
|
"worth in": "WORTH_IN",
|
|
6156
|
+
"how long to save": "SAVINGS_HOW_LONG",
|
|
6157
|
+
"how much per month to save": "SAVINGS_HOW_MUCH",
|
|
6158
|
+
"how much per month to reach": "SAVINGS_HOW_MUCH",
|
|
5983
6159
|
"assuming": "ASSUMING"
|
|
5984
6160
|
},
|
|
5985
6161
|
prefixParselets: [
|
|
@@ -5998,9 +6174,12 @@ var FINANCE_PACKAGE = {
|
|
|
5998
6174
|
{ tokenType: "TAX_ON", parselet: new SalesTaxParselet(TAX_ON) },
|
|
5999
6175
|
{ tokenType: "TAX_OFF", parselet: new SalesTaxParselet(TAX_REMOVE) },
|
|
6000
6176
|
{ tokenType: "TAX_IN_PHRASE", parselet: new SalesTaxParselet(TAX_IN) },
|
|
6177
|
+
{ tokenType: "SPLIT", parselet: new SplitBetweenParselet(SPLIT_EACH) },
|
|
6001
6178
|
{ tokenType: "WHAT_IS", parselet: new InflationQueryParselet("what-is") },
|
|
6002
6179
|
{ tokenType: "WHAT_WAS", parselet: new InflationQueryParselet("what-was") },
|
|
6003
|
-
{ tokenType: "VALUE_OF", parselet: new InflationFutureValueParselet() }
|
|
6180
|
+
{ tokenType: "VALUE_OF", parselet: new InflationFutureValueParselet() },
|
|
6181
|
+
{ tokenType: "SAVINGS_HOW_LONG", parselet: new SavingsDurationParselet(SAVINGS_PERIODS2) },
|
|
6182
|
+
{ tokenType: "SAVINGS_HOW_MUCH", parselet: new SavingsContributionParselet(SAVINGS_PAYMENT) }
|
|
6004
6183
|
],
|
|
6005
6184
|
infixParselets: [
|
|
6006
6185
|
// The documented bare forms: "$1,000 after 3 years at 7%" and the "for
|
|
@@ -6009,14 +6188,22 @@ var FINANCE_PACKAGE = {
|
|
|
6009
6188
|
{ tokenType: "AFTER", parselet: new InvestmentGrowthParselet(COMPOUND_FV, COMPOUND_FV_EVERY) },
|
|
6010
6189
|
{ tokenType: "FOR_DURATION", parselet: new InvestmentGrowthParselet(COMPOUND_FV, COMPOUND_FV_EVERY) },
|
|
6011
6190
|
{ tokenType: "INVESTED", parselet: new ReturnOnInvestmentParselet(ROI) },
|
|
6012
|
-
{ tokenType: "IN_YEAR_DOLLARS", parselet: new InYearDollarsParselet() }
|
|
6191
|
+
{ tokenType: "IN_YEAR_DOLLARS", parselet: new InYearDollarsParselet() },
|
|
6192
|
+
// The amount-first split spelling, `<amount> split N ways`. Infix so the
|
|
6193
|
+
// amount (which may be `$120 + 18%`) is the left operand. See
|
|
6194
|
+
// BillSplitParselets.ts.
|
|
6195
|
+
{ tokenType: "SPLIT_WAYS", parselet: new SplitWaysParselet(SPLIT_EACH) }
|
|
6013
6196
|
],
|
|
6014
6197
|
normalizerRules: [
|
|
6015
6198
|
inYearDollarsNormalizerRule(),
|
|
6016
6199
|
// `450 monthly for 18 months` -> `450 * 18`. A recurring schedule totalled
|
|
6017
6200
|
// as a plain multiplication, so a currency amount stays currency and an
|
|
6018
6201
|
// exact one stays exact. See RecurringScheduleNormalizerRule.ts.
|
|
6019
|
-
recurringScheduleNormalizerRule()
|
|
6202
|
+
recurringScheduleNormalizerRule(),
|
|
6203
|
+
// `split $180 between 4` / `$120 + 18% split 3 ways`. Retypes split/ways/
|
|
6204
|
+
// people contextually so those words stay ordinary names everywhere else.
|
|
6205
|
+
// See BillSplitNormalizerRule.ts.
|
|
6206
|
+
billSplitNormalizerRule()
|
|
6020
6207
|
],
|
|
6021
6208
|
pluginFunctions: [
|
|
6022
6209
|
{ index: INFLATION_FROM_YEAR_TO_PRESENT_IDX, handler: inflationFromYearToPresentHandler },
|
|
@@ -7284,6 +7471,185 @@ var TABLES_PACKAGE = {
|
|
|
7284
7471
|
]
|
|
7285
7472
|
};
|
|
7286
7473
|
|
|
7474
|
+
// src/packages/tags/parselets/TagAggregateParselet.ts
|
|
7475
|
+
var TagAggregateParselet = class {
|
|
7476
|
+
constructor(pluginFnIndex) {
|
|
7477
|
+
this.pluginFnIndex = pluginFnIndex;
|
|
7478
|
+
this.category = "Tags";
|
|
7479
|
+
}
|
|
7480
|
+
parse(_parser, token, builder) {
|
|
7481
|
+
builder.emitOpcode(13 /* PUSH_STRING */);
|
|
7482
|
+
builder.emitString(token.value);
|
|
7483
|
+
builder.emitOpcode(50 /* CALL_PLUGIN */);
|
|
7484
|
+
builder.emitIndex(this.pluginFnIndex);
|
|
7485
|
+
builder.emitIndex(1);
|
|
7486
|
+
}
|
|
7487
|
+
};
|
|
7488
|
+
|
|
7489
|
+
// src/packages/tags/normalizer/TagAggregateNormalizerRule.ts
|
|
7490
|
+
function wordOf3(token) {
|
|
7491
|
+
if (token === void 0) return "";
|
|
7492
|
+
return (token.text ?? token.value ?? "").toLowerCase();
|
|
7493
|
+
}
|
|
7494
|
+
var AGGREGATE_TOKEN = {
|
|
7495
|
+
TOTAL_OF: "TAG_SUM",
|
|
7496
|
+
COUNT_OF: "TAG_COUNT",
|
|
7497
|
+
AVERAGE_OF: "TAG_AVERAGE"
|
|
7498
|
+
};
|
|
7499
|
+
var AGGREGATE_WORDS = /* @__PURE__ */ new Set(["total", "sum", "count", "average"]);
|
|
7500
|
+
function tagAggregateNormalizerRule(priority = 80) {
|
|
7501
|
+
return {
|
|
7502
|
+
name: "tags:aggregate",
|
|
7503
|
+
priority,
|
|
7504
|
+
match(tokens, pos) {
|
|
7505
|
+
const head = tokens[pos];
|
|
7506
|
+
if (head === void 0) return null;
|
|
7507
|
+
const fused = AGGREGATE_TOKEN[head.type];
|
|
7508
|
+
if (fused !== void 0) {
|
|
7509
|
+
const tag = tokens[pos + 1];
|
|
7510
|
+
if (tag?.type !== "TAG") return null;
|
|
7511
|
+
return {
|
|
7512
|
+
consumed: 2,
|
|
7513
|
+
replacement: [createFusedToken(fused, tag.value ?? "", [head, tag])],
|
|
7514
|
+
ruleName: "tags:aggregate"
|
|
7515
|
+
};
|
|
7516
|
+
}
|
|
7517
|
+
if (head.type === "IDENT" && wordOf3(head) === "sum") {
|
|
7518
|
+
const of = tokens[pos + 1];
|
|
7519
|
+
const tag = tokens[pos + 2];
|
|
7520
|
+
if (wordOf3(of) !== "of") return null;
|
|
7521
|
+
if (tag?.type !== "TAG") return null;
|
|
7522
|
+
return {
|
|
7523
|
+
consumed: 3,
|
|
7524
|
+
replacement: [createFusedToken("TAG_SUM", tag.value ?? "", [head, of, tag])],
|
|
7525
|
+
ruleName: "tags:aggregate"
|
|
7526
|
+
};
|
|
7527
|
+
}
|
|
7528
|
+
return null;
|
|
7529
|
+
}
|
|
7530
|
+
};
|
|
7531
|
+
}
|
|
7532
|
+
function tagStripNormalizerRule(priority = 40) {
|
|
7533
|
+
return {
|
|
7534
|
+
name: "tags:strip",
|
|
7535
|
+
priority,
|
|
7536
|
+
match(tokens, pos) {
|
|
7537
|
+
if (tokens[pos]?.type !== "TAG") return null;
|
|
7538
|
+
const before = tokens[pos - 1];
|
|
7539
|
+
if (before !== void 0) {
|
|
7540
|
+
if (AGGREGATE_TOKEN[before.type] !== void 0) return null;
|
|
7541
|
+
if (wordOf3(before) === "of" && AGGREGATE_WORDS.has(wordOf3(tokens[pos - 2]))) return null;
|
|
7542
|
+
}
|
|
7543
|
+
return { consumed: 1, replacement: [], ruleName: "tags:strip" };
|
|
7544
|
+
}
|
|
7545
|
+
};
|
|
7546
|
+
}
|
|
7547
|
+
|
|
7548
|
+
// src/packages/tags/TagScanner.ts
|
|
7549
|
+
function escapeTag(name) {
|
|
7550
|
+
return name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7551
|
+
}
|
|
7552
|
+
function lineCarriesTag(rawText, tag) {
|
|
7553
|
+
if (tag === "") return false;
|
|
7554
|
+
const re = new RegExp(`(?:^|[^0-9A-Za-z_])#${escapeTag(tag)}(?![0-9A-Za-z_-])`, "i");
|
|
7555
|
+
const m = re.exec(rawText);
|
|
7556
|
+
if (m === null) return false;
|
|
7557
|
+
const hashIndex = m.index + m[0].indexOf("#");
|
|
7558
|
+
return rawText.slice(0, hashIndex).trim().length > 0;
|
|
7559
|
+
}
|
|
7560
|
+
|
|
7561
|
+
// src/packages/tags/TagsPluginFunctions.ts
|
|
7562
|
+
function checkLineValue2(v, lineNumber) {
|
|
7563
|
+
if (v === void 0) {
|
|
7564
|
+
return errorValue("LINE_NOT_YET_EVALUATED", `Line ${lineNumber} has not been evaluated yet`);
|
|
7565
|
+
}
|
|
7566
|
+
if (v.type === 12 /* Pending */) {
|
|
7567
|
+
return errorValue("LINE_RESULT_PENDING", `Line ${lineNumber}'s result is still resolving`);
|
|
7568
|
+
}
|
|
7569
|
+
if (v.type === 13 /* Error */) {
|
|
7570
|
+
return errorValue("LINE_RESULT_ERROR", `Line ${lineNumber} has an error`);
|
|
7571
|
+
}
|
|
7572
|
+
return null;
|
|
7573
|
+
}
|
|
7574
|
+
function requireContext2(context) {
|
|
7575
|
+
if (!context?.getLineResult || !context.getLineText) {
|
|
7576
|
+
return errorValue("TAG_NO_DOCUMENT", "Category tag sums require a real document, not available outside one (e.g. evaluateExpression()'s single-expression path)");
|
|
7577
|
+
}
|
|
7578
|
+
return null;
|
|
7579
|
+
}
|
|
7580
|
+
function aggregateTagged(context, tag, mode) {
|
|
7581
|
+
const getText = context.getLineText;
|
|
7582
|
+
const getResult = context.getLineResult;
|
|
7583
|
+
const isBoundary = context.isLineBoundary;
|
|
7584
|
+
const needle = tag.toLowerCase();
|
|
7585
|
+
let total = 0;
|
|
7586
|
+
let count = 0;
|
|
7587
|
+
let commonUnit;
|
|
7588
|
+
let sawUom = false;
|
|
7589
|
+
for (let n = 1; ; n++) {
|
|
7590
|
+
const text = getText(n);
|
|
7591
|
+
if (text === void 0) break;
|
|
7592
|
+
if (n === context.lineIndex) continue;
|
|
7593
|
+
if (isBoundary && isBoundary(n)) continue;
|
|
7594
|
+
if (!lineCarriesTag(text, needle)) continue;
|
|
7595
|
+
const v = getResult(n);
|
|
7596
|
+
const err = checkLineValue2(v, n);
|
|
7597
|
+
if (err) return err;
|
|
7598
|
+
if (mode !== "count") {
|
|
7599
|
+
if (v.type !== 0 /* Number */ && v.type !== 6 /* Uom */) {
|
|
7600
|
+
return errorValue("TAG_NON_NUMERIC", `Line ${n}, tagged #${tag}, is not a plain number or unit value.`);
|
|
7601
|
+
}
|
|
7602
|
+
if (v.type === 6 /* Uom */) {
|
|
7603
|
+
sawUom = true;
|
|
7604
|
+
if (commonUnit === void 0) commonUnit = v.unit;
|
|
7605
|
+
else if (v.unit !== commonUnit) {
|
|
7606
|
+
return errorValue("TAG_MIXED_UNITS", `Line ${n}'s unit (${v.unit}) doesn't match #${tag}'s first unit (${commonUnit}), aggregating mixed units would misrepresent the result.`);
|
|
7607
|
+
}
|
|
7608
|
+
}
|
|
7609
|
+
total += v.toNumber();
|
|
7610
|
+
}
|
|
7611
|
+
count++;
|
|
7612
|
+
}
|
|
7613
|
+
if (mode === "count") return numberValue(count);
|
|
7614
|
+
if (count === 0) return errorValue("TAG_EMPTY", `No lines are tagged #${tag}.`);
|
|
7615
|
+
const result = mode === "average" ? total / count : total;
|
|
7616
|
+
return sawUom ? uomValue(result, commonUnit) : numberValue(result);
|
|
7617
|
+
}
|
|
7618
|
+
var TAG_SUM_FN_IDX = allocatePluginFunctionIndex();
|
|
7619
|
+
function tagSumHandler(args, context) {
|
|
7620
|
+
const ctxError = requireContext2(context);
|
|
7621
|
+
if (ctxError) return ctxError;
|
|
7622
|
+
return aggregateTagged(context, String(args[0].value), "sum");
|
|
7623
|
+
}
|
|
7624
|
+
var TAG_AVERAGE_FN_IDX = allocatePluginFunctionIndex();
|
|
7625
|
+
function tagAverageHandler(args, context) {
|
|
7626
|
+
const ctxError = requireContext2(context);
|
|
7627
|
+
if (ctxError) return ctxError;
|
|
7628
|
+
return aggregateTagged(context, String(args[0].value), "average");
|
|
7629
|
+
}
|
|
7630
|
+
var TAG_COUNT_FN_IDX = allocatePluginFunctionIndex();
|
|
7631
|
+
function tagCountHandler(args, context) {
|
|
7632
|
+
const ctxError = requireContext2(context);
|
|
7633
|
+
if (ctxError) return ctxError;
|
|
7634
|
+
return aggregateTagged(context, String(args[0].value), "count");
|
|
7635
|
+
}
|
|
7636
|
+
|
|
7637
|
+
// src/packages/tags/TagsPackage.ts
|
|
7638
|
+
var TAGS_PACKAGE = {
|
|
7639
|
+
name: "solve-tags",
|
|
7640
|
+
normalizerRules: [tagAggregateNormalizerRule(), tagStripNormalizerRule()],
|
|
7641
|
+
prefixParselets: [
|
|
7642
|
+
{ tokenType: "TAG_SUM", parselet: new TagAggregateParselet(TAG_SUM_FN_IDX) },
|
|
7643
|
+
{ tokenType: "TAG_AVERAGE", parselet: new TagAggregateParselet(TAG_AVERAGE_FN_IDX) },
|
|
7644
|
+
{ tokenType: "TAG_COUNT", parselet: new TagAggregateParselet(TAG_COUNT_FN_IDX) }
|
|
7645
|
+
],
|
|
7646
|
+
pluginFunctions: [
|
|
7647
|
+
{ index: TAG_SUM_FN_IDX, handler: tagSumHandler },
|
|
7648
|
+
{ index: TAG_AVERAGE_FN_IDX, handler: tagAverageHandler },
|
|
7649
|
+
{ index: TAG_COUNT_FN_IDX, handler: tagCountHandler }
|
|
7650
|
+
]
|
|
7651
|
+
};
|
|
7652
|
+
|
|
7287
7653
|
// src/packages/uncertainty/parselets/UncertaintyParselet.ts
|
|
7288
7654
|
var UncertaintyParselet = class {
|
|
7289
7655
|
constructor() {
|
|
@@ -7977,9 +8343,13 @@ var BUILTIN_PACKAGES = [
|
|
|
7977
8343
|
// rule mints, and its parselet targets a line reference.
|
|
7978
8344
|
GOALSEEK_PACKAGE,
|
|
7979
8345
|
TABLES_PACKAGE,
|
|
7980
|
-
COLOUR_PACKAGE
|
|
8346
|
+
COLOUR_PACKAGE,
|
|
8347
|
+
// After MATHPHRASES_PACKAGE and LINES_PACKAGE: tag aggregates reuse the
|
|
8348
|
+
// `total of`/`count of`/`average of` fusions and walk the document the same
|
|
8349
|
+
// way the lines cross-line reads do.
|
|
8350
|
+
TAGS_PACKAGE
|
|
7981
8351
|
];
|
|
7982
8352
|
|
|
7983
|
-
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, TABLES_PACKAGE, TIME_PACKAGE, UOM_PACKAGE, VARIABLES_PACKAGE, VECTOR_PACKAGE, WEATHER_PACKAGE, containsSymbolicCall, createCurrencyPackage, createKnowledgePackage, createStocksPackage };
|
|
7984
|
-
//# sourceMappingURL=chunk-
|
|
7985
|
-
//# sourceMappingURL=chunk-
|
|
8353
|
+
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, TABLES_PACKAGE, TAGS_PACKAGE, TIME_PACKAGE, UOM_PACKAGE, VARIABLES_PACKAGE, VECTOR_PACKAGE, WEATHER_PACKAGE, containsSymbolicCall, createCurrencyPackage, createKnowledgePackage, createStocksPackage };
|
|
8354
|
+
//# sourceMappingURL=chunk-TPOK3UNI.js.map
|
|
8355
|
+
//# sourceMappingURL=chunk-TPOK3UNI.js.map
|