@danielsimonjr/mathts-expression 0.2.1 → 0.2.2
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/index.d.ts +6 -1
- package/dist/index.js +285 -269
- package/package.json +59 -59
package/dist/index.js
CHANGED
|
@@ -670,28 +670,28 @@ var MathjsError = class _MathjsError extends Error {
|
|
|
670
670
|
};
|
|
671
671
|
|
|
672
672
|
// src/utils/factory.ts
|
|
673
|
-
function factory(
|
|
673
|
+
function factory(name21, dependencies21, create, meta) {
|
|
674
674
|
function assertAndCreate(scope) {
|
|
675
|
-
const deps = pickShallow(scope,
|
|
676
|
-
assertDependencies(
|
|
675
|
+
const deps = pickShallow(scope, dependencies21.map(stripOptionalNotation));
|
|
676
|
+
assertDependencies(name21, dependencies21, scope);
|
|
677
677
|
return create(deps);
|
|
678
678
|
}
|
|
679
679
|
assertAndCreate.isFactory = true;
|
|
680
|
-
assertAndCreate.fn =
|
|
681
|
-
assertAndCreate.dependencies =
|
|
680
|
+
assertAndCreate.fn = name21;
|
|
681
|
+
assertAndCreate.dependencies = dependencies21.slice().sort();
|
|
682
682
|
if (meta) {
|
|
683
683
|
assertAndCreate.meta = meta;
|
|
684
684
|
}
|
|
685
685
|
return assertAndCreate;
|
|
686
686
|
}
|
|
687
|
-
function assertDependencies(
|
|
688
|
-
const allDefined =
|
|
687
|
+
function assertDependencies(name21, dependencies21, scope) {
|
|
688
|
+
const allDefined = dependencies21.filter((dependency) => !isOptionalDependency(dependency)).every((dependency) => scope[dependency] !== void 0);
|
|
689
689
|
if (!allDefined) {
|
|
690
|
-
const missingDependencies =
|
|
690
|
+
const missingDependencies = dependencies21.filter(
|
|
691
691
|
(dependency) => scope[dependency] === void 0
|
|
692
692
|
);
|
|
693
693
|
throw new MathjsError(
|
|
694
|
-
`Cannot create function "${
|
|
694
|
+
`Cannot create function "${name21}", some dependencies are missing: ${missingDependencies.map((d) => `"${d}"`).join(", ")}.`
|
|
695
695
|
);
|
|
696
696
|
}
|
|
697
697
|
}
|
|
@@ -1710,17 +1710,17 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1710
1710
|
}
|
|
1711
1711
|
}
|
|
1712
1712
|
function parseAssignment(state) {
|
|
1713
|
-
let
|
|
1713
|
+
let name21;
|
|
1714
1714
|
let args;
|
|
1715
1715
|
let value;
|
|
1716
1716
|
let valid;
|
|
1717
1717
|
const node = parseConditional(state);
|
|
1718
1718
|
if (state.token === "=") {
|
|
1719
1719
|
if (isSymbolNode(node)) {
|
|
1720
|
-
|
|
1720
|
+
name21 = node.name;
|
|
1721
1721
|
getTokenSkipNewline(state);
|
|
1722
1722
|
value = parseAssignment(state);
|
|
1723
|
-
return new AssignmentNode(new SymbolNode(
|
|
1723
|
+
return new AssignmentNode(new SymbolNode(name21), value);
|
|
1724
1724
|
} else if (isAccessorNode(node)) {
|
|
1725
1725
|
if (node.optionalChaining) {
|
|
1726
1726
|
throw createSyntaxError(state, "Cannot assign to optional chain");
|
|
@@ -1731,7 +1731,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1731
1731
|
} else if (isFunctionNode(node) && isSymbolNode(node.fn)) {
|
|
1732
1732
|
valid = true;
|
|
1733
1733
|
args = [];
|
|
1734
|
-
|
|
1734
|
+
name21 = node.name;
|
|
1735
1735
|
node.args.forEach(function(arg, index) {
|
|
1736
1736
|
if (isSymbolNode(arg)) {
|
|
1737
1737
|
args[index] = arg.name;
|
|
@@ -1742,7 +1742,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1742
1742
|
if (valid) {
|
|
1743
1743
|
getTokenSkipNewline(state);
|
|
1744
1744
|
value = parseAssignment(state);
|
|
1745
|
-
return new FunctionAssignmentNode(
|
|
1745
|
+
return new FunctionAssignmentNode(name21, args, value);
|
|
1746
1746
|
}
|
|
1747
1747
|
}
|
|
1748
1748
|
throw createSyntaxError(state, "Invalid left hand side of assignment operator =");
|
|
@@ -1845,7 +1845,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1845
1845
|
}
|
|
1846
1846
|
function parseShift(state) {
|
|
1847
1847
|
let node;
|
|
1848
|
-
let
|
|
1848
|
+
let name21;
|
|
1849
1849
|
let fn;
|
|
1850
1850
|
let params;
|
|
1851
1851
|
node = parseConversion(state);
|
|
@@ -1855,17 +1855,17 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1855
1855
|
">>>": "rightLogShift"
|
|
1856
1856
|
};
|
|
1857
1857
|
while (hasOwnProperty(operators, state.token)) {
|
|
1858
|
-
|
|
1859
|
-
fn = operators[
|
|
1858
|
+
name21 = state.token;
|
|
1859
|
+
fn = operators[name21];
|
|
1860
1860
|
getTokenSkipNewline(state);
|
|
1861
1861
|
params = [node, parseConversion(state)];
|
|
1862
|
-
node = new OperatorNode(
|
|
1862
|
+
node = new OperatorNode(name21, fn, params);
|
|
1863
1863
|
}
|
|
1864
1864
|
return node;
|
|
1865
1865
|
}
|
|
1866
1866
|
function parseConversion(state) {
|
|
1867
1867
|
let node;
|
|
1868
|
-
let
|
|
1868
|
+
let name21;
|
|
1869
1869
|
let fn;
|
|
1870
1870
|
let params;
|
|
1871
1871
|
node = parseRange(state);
|
|
@@ -1875,14 +1875,14 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1875
1875
|
// alias of 'to'
|
|
1876
1876
|
};
|
|
1877
1877
|
while (hasOwnProperty(operators, state.token)) {
|
|
1878
|
-
|
|
1879
|
-
fn = operators[
|
|
1878
|
+
name21 = state.token;
|
|
1879
|
+
fn = operators[name21];
|
|
1880
1880
|
getTokenSkipNewline(state);
|
|
1881
|
-
if (
|
|
1881
|
+
if (name21 === "in" && "])},;".includes(state.token)) {
|
|
1882
1882
|
node = new OperatorNode("*", "multiply", [node, new SymbolNode("in")], true);
|
|
1883
1883
|
} else {
|
|
1884
1884
|
params = [node, parseRange(state)];
|
|
1885
|
-
node = new OperatorNode(
|
|
1885
|
+
node = new OperatorNode(name21, fn, params);
|
|
1886
1886
|
}
|
|
1887
1887
|
}
|
|
1888
1888
|
return node;
|
|
@@ -1922,7 +1922,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1922
1922
|
}
|
|
1923
1923
|
function parseAddSubtract(state) {
|
|
1924
1924
|
let node;
|
|
1925
|
-
let
|
|
1925
|
+
let name21;
|
|
1926
1926
|
let fn;
|
|
1927
1927
|
let params;
|
|
1928
1928
|
node = parseMultiplyDivideModulus(state);
|
|
@@ -1931,8 +1931,8 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1931
1931
|
"-": "subtract"
|
|
1932
1932
|
};
|
|
1933
1933
|
while (hasOwnProperty(operators, state.token)) {
|
|
1934
|
-
|
|
1935
|
-
fn = operators[
|
|
1934
|
+
name21 = state.token;
|
|
1935
|
+
fn = operators[name21];
|
|
1936
1936
|
getTokenSkipNewline(state);
|
|
1937
1937
|
const rightNode = parseMultiplyDivideModulus(state);
|
|
1938
1938
|
if (rightNode.isPercentage) {
|
|
@@ -1940,14 +1940,14 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1940
1940
|
} else {
|
|
1941
1941
|
params = [node, rightNode];
|
|
1942
1942
|
}
|
|
1943
|
-
node = new OperatorNode(
|
|
1943
|
+
node = new OperatorNode(name21, fn, params);
|
|
1944
1944
|
}
|
|
1945
1945
|
return node;
|
|
1946
1946
|
}
|
|
1947
1947
|
function parseMultiplyDivideModulus(state) {
|
|
1948
1948
|
let node;
|
|
1949
1949
|
let last;
|
|
1950
|
-
let
|
|
1950
|
+
let name21;
|
|
1951
1951
|
let fn;
|
|
1952
1952
|
node = parseImplicitMultiplication(state);
|
|
1953
1953
|
last = node;
|
|
@@ -1961,11 +1961,11 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
1961
1961
|
};
|
|
1962
1962
|
while (true) {
|
|
1963
1963
|
if (hasOwnProperty(operators, state.token)) {
|
|
1964
|
-
|
|
1965
|
-
fn = operators[
|
|
1964
|
+
name21 = state.token;
|
|
1965
|
+
fn = operators[name21];
|
|
1966
1966
|
getTokenSkipNewline(state);
|
|
1967
1967
|
last = parseImplicitMultiplication(state);
|
|
1968
|
-
node = new OperatorNode(
|
|
1968
|
+
node = new OperatorNode(name21, fn, [node, last]);
|
|
1969
1969
|
} else {
|
|
1970
1970
|
break;
|
|
1971
1971
|
}
|
|
@@ -2039,7 +2039,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
2039
2039
|
return node;
|
|
2040
2040
|
}
|
|
2041
2041
|
function parseUnary(state) {
|
|
2042
|
-
let
|
|
2042
|
+
let name21;
|
|
2043
2043
|
let params;
|
|
2044
2044
|
let fn;
|
|
2045
2045
|
const operators = {
|
|
@@ -2050,25 +2050,25 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
2050
2050
|
};
|
|
2051
2051
|
if (hasOwnProperty(operators, state.token)) {
|
|
2052
2052
|
fn = operators[state.token];
|
|
2053
|
-
|
|
2053
|
+
name21 = state.token;
|
|
2054
2054
|
getTokenSkipNewline(state);
|
|
2055
2055
|
params = [parseUnary(state)];
|
|
2056
|
-
return new OperatorNode(
|
|
2056
|
+
return new OperatorNode(name21, fn, params);
|
|
2057
2057
|
}
|
|
2058
2058
|
return parsePow(state);
|
|
2059
2059
|
}
|
|
2060
2060
|
function parsePow(state) {
|
|
2061
2061
|
let node;
|
|
2062
|
-
let
|
|
2062
|
+
let name21;
|
|
2063
2063
|
let fn;
|
|
2064
2064
|
let params;
|
|
2065
2065
|
node = parseNullishCoalescing(state);
|
|
2066
2066
|
if (state.token === "^" || state.token === ".^") {
|
|
2067
|
-
|
|
2068
|
-
fn =
|
|
2067
|
+
name21 = state.token;
|
|
2068
|
+
fn = name21 === "^" ? "pow" : "dotPow";
|
|
2069
2069
|
getTokenSkipNewline(state);
|
|
2070
2070
|
params = [node, parseUnary(state)];
|
|
2071
|
-
node = new OperatorNode(
|
|
2071
|
+
node = new OperatorNode(name21, fn, params);
|
|
2072
2072
|
}
|
|
2073
2073
|
return node;
|
|
2074
2074
|
}
|
|
@@ -2082,7 +2082,7 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
2082
2082
|
}
|
|
2083
2083
|
function parseLeftHandOperators(state) {
|
|
2084
2084
|
let node;
|
|
2085
|
-
let
|
|
2085
|
+
let name21;
|
|
2086
2086
|
let fn;
|
|
2087
2087
|
let params;
|
|
2088
2088
|
node = parseCustomNodes(state);
|
|
@@ -2091,11 +2091,11 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
2091
2091
|
"'": "ctranspose"
|
|
2092
2092
|
};
|
|
2093
2093
|
while (hasOwnProperty(operators, state.token)) {
|
|
2094
|
-
|
|
2095
|
-
fn = operators[
|
|
2094
|
+
name21 = state.token;
|
|
2095
|
+
fn = operators[name21];
|
|
2096
2096
|
getToken(state);
|
|
2097
2097
|
params = [node];
|
|
2098
|
-
node = new OperatorNode(
|
|
2098
|
+
node = new OperatorNode(name21, fn, params);
|
|
2099
2099
|
node = parseAccessors(state, node);
|
|
2100
2100
|
}
|
|
2101
2101
|
return node;
|
|
@@ -2128,16 +2128,16 @@ var createParse = /* @__PURE__ */ factory(
|
|
|
2128
2128
|
}
|
|
2129
2129
|
function parseSymbol(state) {
|
|
2130
2130
|
let node;
|
|
2131
|
-
let
|
|
2131
|
+
let name21;
|
|
2132
2132
|
if (state.tokenType === 3 /* SYMBOL */ || state.tokenType === 1 /* DELIMITER */ && state.token in NAMED_DELIMITERS) {
|
|
2133
|
-
|
|
2133
|
+
name21 = state.token;
|
|
2134
2134
|
getToken(state);
|
|
2135
|
-
if (hasOwnProperty(CONSTANTS,
|
|
2136
|
-
node = new ConstantNode(CONSTANTS[
|
|
2137
|
-
} else if (NUMERIC_CONSTANTS.includes(
|
|
2138
|
-
node = new ConstantNode(numeric(
|
|
2135
|
+
if (hasOwnProperty(CONSTANTS, name21)) {
|
|
2136
|
+
node = new ConstantNode(CONSTANTS[name21]);
|
|
2137
|
+
} else if (NUMERIC_CONSTANTS.includes(name21)) {
|
|
2138
|
+
node = new ConstantNode(numeric(name21, "number"));
|
|
2139
2139
|
} else {
|
|
2140
|
-
node = new SymbolNode(
|
|
2140
|
+
node = new SymbolNode(name21);
|
|
2141
2141
|
}
|
|
2142
2142
|
node = parseAccessors(state, node);
|
|
2143
2143
|
return node;
|
|
@@ -2647,9 +2647,9 @@ var createParserClass = /* @__PURE__ */ factory(
|
|
|
2647
2647
|
Parser.prototype.evaluate = function(expr) {
|
|
2648
2648
|
return evaluate(expr, this.scope);
|
|
2649
2649
|
};
|
|
2650
|
-
Parser.prototype.get = function(
|
|
2651
|
-
if (this.scope.has(
|
|
2652
|
-
return this.scope.get(
|
|
2650
|
+
Parser.prototype.get = function(name21) {
|
|
2651
|
+
if (this.scope.has(name21)) {
|
|
2652
|
+
return this.scope.get(name21);
|
|
2653
2653
|
}
|
|
2654
2654
|
};
|
|
2655
2655
|
Parser.prototype.getAll = function() {
|
|
@@ -2658,14 +2658,14 @@ var createParserClass = /* @__PURE__ */ factory(
|
|
|
2658
2658
|
Parser.prototype.getAllAsMap = function() {
|
|
2659
2659
|
return this.scope;
|
|
2660
2660
|
};
|
|
2661
|
-
function isValidVariableName(
|
|
2662
|
-
if (
|
|
2661
|
+
function isValidVariableName(name21) {
|
|
2662
|
+
if (name21.length === 0) {
|
|
2663
2663
|
return false;
|
|
2664
2664
|
}
|
|
2665
|
-
for (let i = 0; i <
|
|
2666
|
-
const cPrev =
|
|
2667
|
-
const c =
|
|
2668
|
-
const cNext =
|
|
2665
|
+
for (let i = 0; i < name21.length; i++) {
|
|
2666
|
+
const cPrev = name21.charAt(i - 1);
|
|
2667
|
+
const c = name21.charAt(i);
|
|
2668
|
+
const cNext = name21.charAt(i + 1);
|
|
2669
2669
|
const valid = parse.isAlpha(c, cPrev, cNext) || i > 0 && parse.isDigit(c);
|
|
2670
2670
|
if (!valid) {
|
|
2671
2671
|
return false;
|
|
@@ -2673,17 +2673,17 @@ var createParserClass = /* @__PURE__ */ factory(
|
|
|
2673
2673
|
}
|
|
2674
2674
|
return true;
|
|
2675
2675
|
}
|
|
2676
|
-
Parser.prototype.set = function(
|
|
2677
|
-
if (!isValidVariableName(
|
|
2676
|
+
Parser.prototype.set = function(name21, value) {
|
|
2677
|
+
if (!isValidVariableName(name21)) {
|
|
2678
2678
|
throw new Error(
|
|
2679
|
-
`Invalid variable name: '${
|
|
2679
|
+
`Invalid variable name: '${name21}'. Variable names must follow the specified rules.`
|
|
2680
2680
|
);
|
|
2681
2681
|
}
|
|
2682
|
-
this.scope.set(
|
|
2682
|
+
this.scope.set(name21, value);
|
|
2683
2683
|
return value;
|
|
2684
2684
|
};
|
|
2685
|
-
Parser.prototype.remove = function(
|
|
2686
|
-
this.scope.delete(
|
|
2685
|
+
Parser.prototype.remove = function(name21) {
|
|
2686
|
+
this.scope.delete(name21);
|
|
2687
2687
|
};
|
|
2688
2688
|
Parser.prototype.clear = function() {
|
|
2689
2689
|
this.scope.clear();
|
|
@@ -2694,21 +2694,21 @@ var createParserClass = /* @__PURE__ */ factory(
|
|
|
2694
2694
|
variables: {},
|
|
2695
2695
|
functions: {}
|
|
2696
2696
|
};
|
|
2697
|
-
for (const [
|
|
2697
|
+
for (const [name21, value] of this.scope) {
|
|
2698
2698
|
if (isFunction(value)) {
|
|
2699
2699
|
if (!isExpressionFunction(value)) {
|
|
2700
|
-
throw new Error(`Cannot serialize external function ${
|
|
2700
|
+
throw new Error(`Cannot serialize external function ${name21}`);
|
|
2701
2701
|
}
|
|
2702
|
-
json.functions[
|
|
2702
|
+
json.functions[name21] = `${value.syntax} = ${value.expr}`;
|
|
2703
2703
|
} else {
|
|
2704
|
-
json.variables[
|
|
2704
|
+
json.variables[name21] = value;
|
|
2705
2705
|
}
|
|
2706
2706
|
}
|
|
2707
2707
|
return json;
|
|
2708
2708
|
};
|
|
2709
2709
|
Parser.fromJSON = function(json) {
|
|
2710
2710
|
const parser = new Parser();
|
|
2711
|
-
Object.entries(json.variables || {}).forEach(([
|
|
2711
|
+
Object.entries(json.variables || {}).forEach(([name21, value]) => parser.set(name21, value));
|
|
2712
2712
|
Object.entries(json.functions || {}).forEach(([_name, fn]) => parser.evaluate(fn));
|
|
2713
2713
|
return parser;
|
|
2714
2714
|
};
|
|
@@ -2720,12 +2720,27 @@ function isExpressionFunction(value) {
|
|
|
2720
2720
|
return typeof value === "function" && typeof value.syntax === "string" && typeof value.expr === "string";
|
|
2721
2721
|
}
|
|
2722
2722
|
|
|
2723
|
-
// src/
|
|
2724
|
-
var name3 = "
|
|
2725
|
-
var dependencies3 = ["
|
|
2726
|
-
var
|
|
2723
|
+
// src/function/parser.ts
|
|
2724
|
+
var name3 = "parser";
|
|
2725
|
+
var dependencies3 = ["typed", "Parser"];
|
|
2726
|
+
var createParser = /* @__PURE__ */ factory(
|
|
2727
2727
|
name3,
|
|
2728
2728
|
dependencies3,
|
|
2729
|
+
({ typed, Parser }) => {
|
|
2730
|
+
return typed(name3, {
|
|
2731
|
+
"": function() {
|
|
2732
|
+
return new Parser();
|
|
2733
|
+
}
|
|
2734
|
+
});
|
|
2735
|
+
}
|
|
2736
|
+
);
|
|
2737
|
+
|
|
2738
|
+
// src/Help.ts
|
|
2739
|
+
var name4 = "Help";
|
|
2740
|
+
var dependencies4 = ["evaluate"];
|
|
2741
|
+
var createHelpClass = /* @__PURE__ */ factory(
|
|
2742
|
+
name4,
|
|
2743
|
+
dependencies4,
|
|
2729
2744
|
({ evaluate }) => {
|
|
2730
2745
|
function Help(doc) {
|
|
2731
2746
|
if (!(this instanceof Help)) {
|
|
@@ -2877,25 +2892,25 @@ function compileConstantNode(node) {
|
|
|
2877
2892
|
};
|
|
2878
2893
|
}
|
|
2879
2894
|
function compileSymbolNode(node, math, argNames) {
|
|
2880
|
-
const
|
|
2881
|
-
if (argNames[
|
|
2895
|
+
const name21 = node.name;
|
|
2896
|
+
if (argNames[name21] === true) {
|
|
2882
2897
|
return function evalSymbolArg(_scope, args) {
|
|
2883
|
-
return args[
|
|
2898
|
+
return args[name21];
|
|
2884
2899
|
};
|
|
2885
2900
|
}
|
|
2886
|
-
if (Object.prototype.hasOwnProperty.call(math,
|
|
2901
|
+
if (Object.prototype.hasOwnProperty.call(math, name21)) {
|
|
2887
2902
|
return function evalSymbolNode(scope) {
|
|
2888
|
-
if (scope.has(
|
|
2889
|
-
return scope.get(
|
|
2903
|
+
if (scope.has(name21)) {
|
|
2904
|
+
return scope.get(name21);
|
|
2890
2905
|
}
|
|
2891
|
-
return math[
|
|
2906
|
+
return math[name21];
|
|
2892
2907
|
};
|
|
2893
2908
|
}
|
|
2894
2909
|
return function evalSymbolNode(scope) {
|
|
2895
|
-
if (scope.has(
|
|
2896
|
-
return scope.get(
|
|
2910
|
+
if (scope.has(name21)) {
|
|
2911
|
+
return scope.get(name21);
|
|
2897
2912
|
}
|
|
2898
|
-
throw new Error(`Undefined symbol "${
|
|
2913
|
+
throw new Error(`Undefined symbol "${name21}"`);
|
|
2899
2914
|
};
|
|
2900
2915
|
}
|
|
2901
2916
|
function compileOperatorNode(node, math, argNames) {
|
|
@@ -2927,21 +2942,21 @@ function compileFunctionNode(node, math, argNames) {
|
|
|
2927
2942
|
const evalArgs = node.args.map((arg) => compileNode(arg, math, argNames));
|
|
2928
2943
|
const fnNode = node.fn;
|
|
2929
2944
|
if (fnNode && fnNode.isSymbolNode) {
|
|
2930
|
-
const
|
|
2945
|
+
const name21 = fnNode.name;
|
|
2931
2946
|
const resolveFn = (scope) => {
|
|
2932
|
-
if (scope.has(
|
|
2933
|
-
const value = scope.get(
|
|
2947
|
+
if (scope.has(name21)) {
|
|
2948
|
+
const value = scope.get(name21);
|
|
2934
2949
|
if (typeof value === "function") return value;
|
|
2935
|
-
throw new TypeError(`'${
|
|
2950
|
+
throw new TypeError(`'${name21}' is not a function; its value is:
|
|
2936
2951
|
${value}`);
|
|
2937
2952
|
}
|
|
2938
|
-
if (Object.prototype.hasOwnProperty.call(math,
|
|
2939
|
-
const value = math[
|
|
2953
|
+
if (Object.prototype.hasOwnProperty.call(math, name21)) {
|
|
2954
|
+
const value = math[name21];
|
|
2940
2955
|
if (typeof value === "function") return value;
|
|
2941
|
-
throw new TypeError(`'${
|
|
2956
|
+
throw new TypeError(`'${name21}' is not a function; its value is:
|
|
2942
2957
|
${value}`);
|
|
2943
2958
|
}
|
|
2944
|
-
throw new Error(`Undefined function "${
|
|
2959
|
+
throw new Error(`Undefined function "${name21}"`);
|
|
2945
2960
|
};
|
|
2946
2961
|
switch (evalArgs.length) {
|
|
2947
2962
|
case 0:
|
|
@@ -3002,10 +3017,10 @@ function compileArrayNode(node, math, argNames) {
|
|
|
3002
3017
|
function compileAssignmentNode(node, math, argNames) {
|
|
3003
3018
|
const evalValue = compileNode(node.value, math, argNames);
|
|
3004
3019
|
if (node.object && node.object.isSymbolNode && !node.index) {
|
|
3005
|
-
const
|
|
3020
|
+
const name22 = node.object.name;
|
|
3006
3021
|
return function evalAssignmentNode(scope, args, context) {
|
|
3007
3022
|
const value = evalValue(scope, args, context);
|
|
3008
|
-
scope.set(
|
|
3023
|
+
scope.set(name22, value);
|
|
3009
3024
|
return value;
|
|
3010
3025
|
};
|
|
3011
3026
|
}
|
|
@@ -3020,11 +3035,11 @@ function compileAssignmentNode(node, math, argNames) {
|
|
|
3020
3035
|
};
|
|
3021
3036
|
}
|
|
3022
3037
|
}
|
|
3023
|
-
const
|
|
3024
|
-
if (
|
|
3038
|
+
const name21 = node.name || node.object && node.object.name;
|
|
3039
|
+
if (name21) {
|
|
3025
3040
|
return function evalAssignmentNode(scope, args, context) {
|
|
3026
3041
|
const value = evalValue(scope, args, context);
|
|
3027
|
-
scope.set(
|
|
3042
|
+
scope.set(name21, value);
|
|
3028
3043
|
return value;
|
|
3029
3044
|
};
|
|
3030
3045
|
}
|
|
@@ -3118,7 +3133,7 @@ function compileFunctionAssignmentNode(node, math, argNames) {
|
|
|
3118
3133
|
childArgNames[param] = true;
|
|
3119
3134
|
}
|
|
3120
3135
|
const evalExpr = compileNode(node.expr, math, childArgNames);
|
|
3121
|
-
const
|
|
3136
|
+
const name21 = node.name;
|
|
3122
3137
|
const params = node.params;
|
|
3123
3138
|
return function evalFunctionAssignmentNode(scope, args, _context) {
|
|
3124
3139
|
const fn = function(...fnArgs) {
|
|
@@ -3128,8 +3143,8 @@ function compileFunctionAssignmentNode(node, math, argNames) {
|
|
|
3128
3143
|
}
|
|
3129
3144
|
return evalExpr(scope, childArgs, void 0);
|
|
3130
3145
|
};
|
|
3131
|
-
fn.syntax =
|
|
3132
|
-
scope.set(
|
|
3146
|
+
fn.syntax = name21 + "(" + params.join(", ") + ")";
|
|
3147
|
+
scope.set(name21, fn);
|
|
3133
3148
|
return fn;
|
|
3134
3149
|
};
|
|
3135
3150
|
}
|
|
@@ -3281,11 +3296,11 @@ function compileExpression(parseFn, mathScope, expr, options) {
|
|
|
3281
3296
|
}
|
|
3282
3297
|
|
|
3283
3298
|
// src/node/Node.ts
|
|
3284
|
-
var
|
|
3285
|
-
var
|
|
3299
|
+
var name5 = "Node";
|
|
3300
|
+
var dependencies5 = ["mathWithTransform"];
|
|
3286
3301
|
var createNode = /* @__PURE__ */ factory(
|
|
3287
|
-
|
|
3288
|
-
|
|
3302
|
+
name5,
|
|
3303
|
+
dependencies5,
|
|
3289
3304
|
({ mathWithTransform }) => {
|
|
3290
3305
|
function _validateScope(scope) {
|
|
3291
3306
|
for (const symbol of [...keywords]) {
|
|
@@ -3649,11 +3664,11 @@ function accessFactory({ subset }) {
|
|
|
3649
3664
|
}
|
|
3650
3665
|
|
|
3651
3666
|
// src/node/AccessorNode.ts
|
|
3652
|
-
var
|
|
3653
|
-
var
|
|
3667
|
+
var name6 = "AccessorNode";
|
|
3668
|
+
var dependencies6 = ["subset", "Node"];
|
|
3654
3669
|
var createAccessorNode = /* @__PURE__ */ factory(
|
|
3655
|
-
|
|
3656
|
-
|
|
3670
|
+
name6,
|
|
3671
|
+
dependencies6,
|
|
3657
3672
|
({ subset, Node }) => {
|
|
3658
3673
|
const access = accessFactory({ subset });
|
|
3659
3674
|
function needParenthesis(node) {
|
|
@@ -3697,9 +3712,9 @@ var createAccessorNode = /* @__PURE__ */ factory(
|
|
|
3697
3712
|
return this.object.name || "";
|
|
3698
3713
|
}
|
|
3699
3714
|
}
|
|
3700
|
-
static name =
|
|
3715
|
+
static name = name6;
|
|
3701
3716
|
get type() {
|
|
3702
|
-
return
|
|
3717
|
+
return name6;
|
|
3703
3718
|
}
|
|
3704
3719
|
get isAccessorNode() {
|
|
3705
3720
|
return true;
|
|
@@ -3823,7 +3838,7 @@ var createAccessorNode = /* @__PURE__ */ factory(
|
|
|
3823
3838
|
*/
|
|
3824
3839
|
toJSON() {
|
|
3825
3840
|
return {
|
|
3826
|
-
mathjs:
|
|
3841
|
+
mathjs: name6,
|
|
3827
3842
|
object: this.object,
|
|
3828
3843
|
index: this.index,
|
|
3829
3844
|
optionalChaining: this.optionalChaining
|
|
@@ -3847,11 +3862,11 @@ var createAccessorNode = /* @__PURE__ */ factory(
|
|
|
3847
3862
|
);
|
|
3848
3863
|
|
|
3849
3864
|
// src/node/ArrayNode.ts
|
|
3850
|
-
var
|
|
3851
|
-
var
|
|
3865
|
+
var name7 = "ArrayNode";
|
|
3866
|
+
var dependencies7 = ["Node"];
|
|
3852
3867
|
var createArrayNode = /* @__PURE__ */ factory(
|
|
3853
|
-
|
|
3854
|
-
|
|
3868
|
+
name7,
|
|
3869
|
+
dependencies7,
|
|
3855
3870
|
({ Node }) => {
|
|
3856
3871
|
class ArrayNode extends Node {
|
|
3857
3872
|
items;
|
|
@@ -3868,9 +3883,9 @@ var createArrayNode = /* @__PURE__ */ factory(
|
|
|
3868
3883
|
throw new TypeError("Array containing Nodes expected");
|
|
3869
3884
|
}
|
|
3870
3885
|
}
|
|
3871
|
-
static name =
|
|
3886
|
+
static name = name7;
|
|
3872
3887
|
get type() {
|
|
3873
|
-
return
|
|
3888
|
+
return name7;
|
|
3874
3889
|
}
|
|
3875
3890
|
get isArrayNode() {
|
|
3876
3891
|
return true;
|
|
@@ -3958,7 +3973,7 @@ var createArrayNode = /* @__PURE__ */ factory(
|
|
|
3958
3973
|
*/
|
|
3959
3974
|
toJSON() {
|
|
3960
3975
|
return {
|
|
3961
|
-
mathjs:
|
|
3976
|
+
mathjs: name7,
|
|
3962
3977
|
items: this.items
|
|
3963
3978
|
};
|
|
3964
3979
|
}
|
|
@@ -4041,11 +4056,11 @@ function assignFactory({ subset }) {
|
|
|
4041
4056
|
}
|
|
4042
4057
|
|
|
4043
4058
|
// src/node/AssignmentNode.ts
|
|
4044
|
-
var
|
|
4045
|
-
var
|
|
4059
|
+
var name8 = "AssignmentNode";
|
|
4060
|
+
var dependencies8 = ["subset", "Node"];
|
|
4046
4061
|
var createAssignmentNode = /* @__PURE__ */ factory(
|
|
4047
|
-
|
|
4048
|
-
|
|
4062
|
+
name8,
|
|
4063
|
+
dependencies8,
|
|
4049
4064
|
({ subset, Node }) => {
|
|
4050
4065
|
const access = accessFactory({ subset });
|
|
4051
4066
|
const assign = assignFactory({ subset });
|
|
@@ -4112,7 +4127,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4112
4127
|
}
|
|
4113
4128
|
}
|
|
4114
4129
|
// class name for typing purposes:
|
|
4115
|
-
static name =
|
|
4130
|
+
static name = name8;
|
|
4116
4131
|
// readonly property name
|
|
4117
4132
|
get name() {
|
|
4118
4133
|
if (this.index) {
|
|
@@ -4122,7 +4137,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4122
4137
|
}
|
|
4123
4138
|
}
|
|
4124
4139
|
get type() {
|
|
4125
|
-
return
|
|
4140
|
+
return name8;
|
|
4126
4141
|
}
|
|
4127
4142
|
get isAssignmentNode() {
|
|
4128
4143
|
return true;
|
|
@@ -4144,14 +4159,14 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4144
4159
|
const evalObject = this.object._compile(math, argNames);
|
|
4145
4160
|
const evalIndex = this.index ? this.index._compile(math, argNames) : null;
|
|
4146
4161
|
const evalValue = this.value._compile(math, argNames);
|
|
4147
|
-
const
|
|
4162
|
+
const name21 = this.object.name;
|
|
4148
4163
|
if (!this.index) {
|
|
4149
4164
|
if (!isSymbolNode(this.object)) {
|
|
4150
4165
|
throw new TypeError("SymbolNode expected as object");
|
|
4151
4166
|
}
|
|
4152
4167
|
return function evalAssignmentNode(scope, args, context) {
|
|
4153
4168
|
const value = evalValue(scope, args, context);
|
|
4154
|
-
scope.set(
|
|
4169
|
+
scope.set(name21, value);
|
|
4155
4170
|
return value;
|
|
4156
4171
|
};
|
|
4157
4172
|
} else if (this.index.isObjectProperty()) {
|
|
@@ -4167,7 +4182,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4167
4182
|
const childObject = evalObject(scope, args, context);
|
|
4168
4183
|
const value = evalValue(scope, args, context);
|
|
4169
4184
|
const index = evalIndex(scope, args, childObject);
|
|
4170
|
-
scope.set(
|
|
4185
|
+
scope.set(name21, assign(childObject, index, value));
|
|
4171
4186
|
return value;
|
|
4172
4187
|
};
|
|
4173
4188
|
} else {
|
|
@@ -4246,7 +4261,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4246
4261
|
*/
|
|
4247
4262
|
toJSON() {
|
|
4248
4263
|
return {
|
|
4249
|
-
mathjs:
|
|
4264
|
+
mathjs: name8,
|
|
4250
4265
|
object: this.object,
|
|
4251
4266
|
index: this.index,
|
|
4252
4267
|
value: this.value
|
|
@@ -4298,11 +4313,11 @@ var createAssignmentNode = /* @__PURE__ */ factory(
|
|
|
4298
4313
|
);
|
|
4299
4314
|
|
|
4300
4315
|
// src/node/BlockNode.ts
|
|
4301
|
-
var
|
|
4302
|
-
var
|
|
4316
|
+
var name9 = "BlockNode";
|
|
4317
|
+
var dependencies9 = ["ResultSet", "Node"];
|
|
4303
4318
|
var createBlockNode = /* @__PURE__ */ factory(
|
|
4304
|
-
|
|
4305
|
-
|
|
4319
|
+
name9,
|
|
4320
|
+
dependencies9,
|
|
4306
4321
|
({ ResultSet, Node }) => {
|
|
4307
4322
|
class BlockNode extends Node {
|
|
4308
4323
|
blocks;
|
|
@@ -4329,9 +4344,9 @@ var createBlockNode = /* @__PURE__ */ factory(
|
|
|
4329
4344
|
return { node, visible };
|
|
4330
4345
|
});
|
|
4331
4346
|
}
|
|
4332
|
-
static name =
|
|
4347
|
+
static name = name9;
|
|
4333
4348
|
get type() {
|
|
4334
|
-
return
|
|
4349
|
+
return name9;
|
|
4335
4350
|
}
|
|
4336
4351
|
get isBlockNode() {
|
|
4337
4352
|
return true;
|
|
@@ -4424,7 +4439,7 @@ var createBlockNode = /* @__PURE__ */ factory(
|
|
|
4424
4439
|
*/
|
|
4425
4440
|
toJSON() {
|
|
4426
4441
|
return {
|
|
4427
|
-
mathjs:
|
|
4442
|
+
mathjs: name9,
|
|
4428
4443
|
blocks: this.blocks
|
|
4429
4444
|
};
|
|
4430
4445
|
}
|
|
@@ -4467,11 +4482,11 @@ var createBlockNode = /* @__PURE__ */ factory(
|
|
|
4467
4482
|
);
|
|
4468
4483
|
|
|
4469
4484
|
// src/node/ConditionalNode.ts
|
|
4470
|
-
var
|
|
4471
|
-
var
|
|
4485
|
+
var name10 = "ConditionalNode";
|
|
4486
|
+
var dependencies10 = ["Node"];
|
|
4472
4487
|
var createConditionalNode = /* @__PURE__ */ factory(
|
|
4473
|
-
|
|
4474
|
-
|
|
4488
|
+
name10,
|
|
4489
|
+
dependencies10,
|
|
4475
4490
|
({ Node }) => {
|
|
4476
4491
|
function testCondition2(condition) {
|
|
4477
4492
|
if (typeof condition === "number" || typeof condition === "boolean" || typeof condition === "string") {
|
|
@@ -4522,9 +4537,9 @@ var createConditionalNode = /* @__PURE__ */ factory(
|
|
|
4522
4537
|
this.trueExpr = trueExpr;
|
|
4523
4538
|
this.falseExpr = falseExpr;
|
|
4524
4539
|
}
|
|
4525
|
-
static name =
|
|
4540
|
+
static name = name10;
|
|
4526
4541
|
get type() {
|
|
4527
|
-
return
|
|
4542
|
+
return name10;
|
|
4528
4543
|
}
|
|
4529
4544
|
get isConditionalNode() {
|
|
4530
4545
|
return true;
|
|
@@ -4625,7 +4640,7 @@ var createConditionalNode = /* @__PURE__ */ factory(
|
|
|
4625
4640
|
*/
|
|
4626
4641
|
toJSON() {
|
|
4627
4642
|
return {
|
|
4628
|
-
mathjs:
|
|
4643
|
+
mathjs: name10,
|
|
4629
4644
|
condition: this.condition,
|
|
4630
4645
|
trueExpr: this.trueExpr,
|
|
4631
4646
|
falseExpr: this.falseExpr
|
|
@@ -5022,26 +5037,26 @@ var latexUnits = {
|
|
|
5022
5037
|
function escapeLatex(string) {
|
|
5023
5038
|
return (0, import_escape_latex.default)(string, { preserveFormatting: true });
|
|
5024
5039
|
}
|
|
5025
|
-
function toSymbol(
|
|
5040
|
+
function toSymbol(name21, isUnit2) {
|
|
5026
5041
|
isUnit2 = typeof isUnit2 === "undefined" ? false : isUnit2;
|
|
5027
5042
|
if (isUnit2) {
|
|
5028
|
-
if (hasOwnProperty(latexUnits,
|
|
5029
|
-
return latexUnits[
|
|
5043
|
+
if (hasOwnProperty(latexUnits, name21)) {
|
|
5044
|
+
return latexUnits[name21];
|
|
5030
5045
|
}
|
|
5031
|
-
return "\\mathrm{" + escapeLatex(
|
|
5046
|
+
return "\\mathrm{" + escapeLatex(name21) + "}";
|
|
5032
5047
|
}
|
|
5033
|
-
if (hasOwnProperty(latexSymbols,
|
|
5034
|
-
return latexSymbols[
|
|
5048
|
+
if (hasOwnProperty(latexSymbols, name21)) {
|
|
5049
|
+
return latexSymbols[name21];
|
|
5035
5050
|
}
|
|
5036
|
-
return escapeLatex(
|
|
5051
|
+
return escapeLatex(name21);
|
|
5037
5052
|
}
|
|
5038
5053
|
|
|
5039
5054
|
// src/node/ConstantNode.ts
|
|
5040
|
-
var
|
|
5041
|
-
var
|
|
5055
|
+
var name11 = "ConstantNode";
|
|
5056
|
+
var dependencies11 = ["Node", "isBounded"];
|
|
5042
5057
|
var createConstantNode = /* @__PURE__ */ factory(
|
|
5043
|
-
|
|
5044
|
-
|
|
5058
|
+
name11,
|
|
5059
|
+
dependencies11,
|
|
5045
5060
|
({
|
|
5046
5061
|
Node,
|
|
5047
5062
|
isBounded
|
|
@@ -5064,9 +5079,9 @@ var createConstantNode = /* @__PURE__ */ factory(
|
|
|
5064
5079
|
super();
|
|
5065
5080
|
this.value = value;
|
|
5066
5081
|
}
|
|
5067
|
-
static name =
|
|
5082
|
+
static name = name11;
|
|
5068
5083
|
get type() {
|
|
5069
|
-
return
|
|
5084
|
+
return name11;
|
|
5070
5085
|
}
|
|
5071
5086
|
get isConstantNode() {
|
|
5072
5087
|
return true;
|
|
@@ -5150,7 +5165,7 @@ var createConstantNode = /* @__PURE__ */ factory(
|
|
|
5150
5165
|
* @returns {Object}
|
|
5151
5166
|
*/
|
|
5152
5167
|
toJSON() {
|
|
5153
|
-
return { mathjs:
|
|
5168
|
+
return { mathjs: name11, value: this.value };
|
|
5154
5169
|
}
|
|
5155
5170
|
/**
|
|
5156
5171
|
* Instantiate a ConstantNode from its JSON representation
|
|
@@ -5200,11 +5215,11 @@ var createConstantNode = /* @__PURE__ */ factory(
|
|
|
5200
5215
|
);
|
|
5201
5216
|
|
|
5202
5217
|
// src/node/FunctionAssignmentNode.ts
|
|
5203
|
-
var
|
|
5204
|
-
var
|
|
5218
|
+
var name12 = "FunctionAssignmentNode";
|
|
5219
|
+
var dependencies12 = ["typed", "Node"];
|
|
5205
5220
|
var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
5206
|
-
|
|
5207
|
-
|
|
5221
|
+
name12,
|
|
5222
|
+
dependencies12,
|
|
5208
5223
|
({ typed, Node }) => {
|
|
5209
5224
|
function needParenthesis(node, parenthesis, implicit) {
|
|
5210
5225
|
const precedence = getPrecedence(node, parenthesis, implicit, void 0);
|
|
@@ -5228,9 +5243,9 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5228
5243
|
* and type of the parameter
|
|
5229
5244
|
* @param {Node} expr The function expression
|
|
5230
5245
|
*/
|
|
5231
|
-
constructor(
|
|
5246
|
+
constructor(name21, params, expr) {
|
|
5232
5247
|
super();
|
|
5233
|
-
if (typeof
|
|
5248
|
+
if (typeof name21 !== "string") {
|
|
5234
5249
|
throw new TypeError('String expected for parameter "name"');
|
|
5235
5250
|
}
|
|
5236
5251
|
if (!Array.isArray(params)) {
|
|
@@ -5241,8 +5256,8 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5241
5256
|
if (!isNode(expr)) {
|
|
5242
5257
|
throw new TypeError('Node expected for parameter "expr"');
|
|
5243
5258
|
}
|
|
5244
|
-
if (keywords.has(
|
|
5245
|
-
throw new Error('Illegal function name, "' +
|
|
5259
|
+
if (keywords.has(name21)) {
|
|
5260
|
+
throw new Error('Illegal function name, "' + name21 + '" is a reserved keyword');
|
|
5246
5261
|
}
|
|
5247
5262
|
const paramNames = /* @__PURE__ */ new Set();
|
|
5248
5263
|
for (const param of params) {
|
|
@@ -5253,7 +5268,7 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5253
5268
|
paramNames.add(paramName);
|
|
5254
5269
|
}
|
|
5255
5270
|
}
|
|
5256
|
-
this.name =
|
|
5271
|
+
this.name = name21;
|
|
5257
5272
|
this.params = params.map(function(param) {
|
|
5258
5273
|
return param && param.name || param;
|
|
5259
5274
|
});
|
|
@@ -5262,9 +5277,9 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5262
5277
|
});
|
|
5263
5278
|
this.expr = expr;
|
|
5264
5279
|
}
|
|
5265
|
-
static name =
|
|
5280
|
+
static name = name12;
|
|
5266
5281
|
get type() {
|
|
5267
|
-
return
|
|
5282
|
+
return name12;
|
|
5268
5283
|
}
|
|
5269
5284
|
get isFunctionAssignmentNode() {
|
|
5270
5285
|
return true;
|
|
@@ -5289,10 +5304,10 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5289
5304
|
});
|
|
5290
5305
|
const expr = this.expr;
|
|
5291
5306
|
const evalExpr = expr._compile(math, childArgNames);
|
|
5292
|
-
const
|
|
5307
|
+
const name21 = this.name;
|
|
5293
5308
|
const params = this.params;
|
|
5294
5309
|
const signature = join(this.types, ",");
|
|
5295
|
-
const syntax =
|
|
5310
|
+
const syntax = name21 + "(" + join(this.params, ", ") + ")";
|
|
5296
5311
|
return function evalFunctionAssignmentNode(scope, args, context) {
|
|
5297
5312
|
const signatures = {};
|
|
5298
5313
|
signatures[signature] = function(...fnArgs) {
|
|
@@ -5302,10 +5317,10 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5302
5317
|
}
|
|
5303
5318
|
return evalExpr(scope, childArgs, context);
|
|
5304
5319
|
};
|
|
5305
|
-
const fn = typed(
|
|
5320
|
+
const fn = typed(name21, signatures);
|
|
5306
5321
|
fn.syntax = syntax;
|
|
5307
5322
|
fn.expr = expr.toString();
|
|
5308
|
-
scope.set(
|
|
5323
|
+
scope.set(name21, fn);
|
|
5309
5324
|
return fn;
|
|
5310
5325
|
};
|
|
5311
5326
|
}
|
|
@@ -5354,7 +5369,7 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
|
|
|
5354
5369
|
toJSON() {
|
|
5355
5370
|
const types = this.types;
|
|
5356
5371
|
return {
|
|
5357
|
-
mathjs:
|
|
5372
|
+
mathjs: name12,
|
|
5358
5373
|
name: this.name,
|
|
5359
5374
|
params: this.params.map(function(param, index) {
|
|
5360
5375
|
return {
|
|
@@ -5427,11 +5442,11 @@ function createSubScope(parentScope, args) {
|
|
|
5427
5442
|
}
|
|
5428
5443
|
|
|
5429
5444
|
// src/node/FunctionNode.ts
|
|
5430
|
-
var
|
|
5431
|
-
var
|
|
5445
|
+
var name13 = "FunctionNode";
|
|
5446
|
+
var dependencies13 = ["math", "Node", "SymbolNode"];
|
|
5432
5447
|
var createFunctionNode = /* @__PURE__ */ factory(
|
|
5433
|
-
|
|
5434
|
-
|
|
5448
|
+
name13,
|
|
5449
|
+
dependencies13,
|
|
5435
5450
|
({
|
|
5436
5451
|
math,
|
|
5437
5452
|
Node,
|
|
@@ -5529,9 +5544,9 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5529
5544
|
get name() {
|
|
5530
5545
|
return this.fn.name || "";
|
|
5531
5546
|
}
|
|
5532
|
-
static name =
|
|
5547
|
+
static name = name13;
|
|
5533
5548
|
get type() {
|
|
5534
|
-
return
|
|
5549
|
+
return name13;
|
|
5535
5550
|
}
|
|
5536
5551
|
get isFunctionNode() {
|
|
5537
5552
|
return true;
|
|
@@ -5553,22 +5568,22 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5553
5568
|
const evalArgs = this.args.map((arg) => arg._compile(math2, argNames));
|
|
5554
5569
|
const fromOptionalChaining = this.optional || isAccessorNode(this.fn) && this.fn.optionalChaining;
|
|
5555
5570
|
if (isSymbolNode(this.fn)) {
|
|
5556
|
-
const
|
|
5557
|
-
if (!argNames[
|
|
5558
|
-
const fn =
|
|
5571
|
+
const name21 = this.fn.name;
|
|
5572
|
+
if (!argNames[name21]) {
|
|
5573
|
+
const fn = name21 in math2 ? getSafeProperty(math2, name21) : void 0;
|
|
5559
5574
|
const isRaw = typeof fn === "function" && fn.rawArgs === true;
|
|
5560
5575
|
const resolveFn = (scope) => {
|
|
5561
5576
|
let value;
|
|
5562
|
-
if (scope.has(
|
|
5563
|
-
value = scope.get(
|
|
5564
|
-
} else if (
|
|
5565
|
-
value = getSafeProperty(math2,
|
|
5577
|
+
if (scope.has(name21)) {
|
|
5578
|
+
value = scope.get(name21);
|
|
5579
|
+
} else if (name21 in math2) {
|
|
5580
|
+
value = getSafeProperty(math2, name21);
|
|
5566
5581
|
} else if (fromOptionalChaining) value = void 0;
|
|
5567
|
-
else return FunctionNode.onUndefinedFunction(
|
|
5582
|
+
else return FunctionNode.onUndefinedFunction(name21);
|
|
5568
5583
|
if (typeof value === "function" || fromOptionalChaining && value === void 0) {
|
|
5569
5584
|
return value;
|
|
5570
5585
|
}
|
|
5571
|
-
throw new TypeError(`'${
|
|
5586
|
+
throw new TypeError(`'${name21}' is not a function; its value is:
|
|
5572
5587
|
${strin(value)}`);
|
|
5573
5588
|
};
|
|
5574
5589
|
if (isRaw) {
|
|
@@ -5617,11 +5632,11 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5617
5632
|
} else {
|
|
5618
5633
|
const rawArgs = this.args;
|
|
5619
5634
|
return function evalFunctionNode(scope, args, context) {
|
|
5620
|
-
const fn = getSafeProperty(args,
|
|
5635
|
+
const fn = getSafeProperty(args, name21);
|
|
5621
5636
|
if (fromOptionalChaining && fn === void 0) return void 0;
|
|
5622
5637
|
if (typeof fn !== "function") {
|
|
5623
5638
|
throw new TypeError(
|
|
5624
|
-
`Argument '${
|
|
5639
|
+
`Argument '${name21}' was not a function; received: ${strin(fn)}`
|
|
5625
5640
|
);
|
|
5626
5641
|
}
|
|
5627
5642
|
if (fn.rawArgs) {
|
|
@@ -5706,8 +5721,8 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5706
5721
|
* Throws an error 'Undefined function {name}'
|
|
5707
5722
|
* @param {string} name
|
|
5708
5723
|
*/
|
|
5709
|
-
static onUndefinedFunction = function(
|
|
5710
|
-
throw new Error("Undefined function " +
|
|
5724
|
+
static onUndefinedFunction = function(name21) {
|
|
5725
|
+
throw new Error("Undefined function " + name21);
|
|
5711
5726
|
};
|
|
5712
5727
|
/**
|
|
5713
5728
|
* Get string representation. (wrapper function)
|
|
@@ -5723,9 +5738,9 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5723
5738
|
*/
|
|
5724
5739
|
toString(options) {
|
|
5725
5740
|
let customString;
|
|
5726
|
-
const
|
|
5727
|
-
if (options && typeof options.handler === "object" && hasOwnProperty(options.handler,
|
|
5728
|
-
customString = options.handler[
|
|
5741
|
+
const name21 = this.fn.toString(options);
|
|
5742
|
+
if (options && typeof options.handler === "object" && hasOwnProperty(options.handler, name21)) {
|
|
5743
|
+
customString = options.handler[name21](this, options);
|
|
5729
5744
|
}
|
|
5730
5745
|
if (typeof customString !== "undefined") {
|
|
5731
5746
|
return customString;
|
|
@@ -5750,7 +5765,7 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5750
5765
|
*/
|
|
5751
5766
|
toJSON() {
|
|
5752
5767
|
return {
|
|
5753
|
-
mathjs:
|
|
5768
|
+
mathjs: name13,
|
|
5754
5769
|
fn: this.fn,
|
|
5755
5770
|
args: this.args
|
|
5756
5771
|
};
|
|
@@ -5850,11 +5865,11 @@ var createFunctionNode = /* @__PURE__ */ factory(
|
|
|
5850
5865
|
);
|
|
5851
5866
|
|
|
5852
5867
|
// src/node/IndexNode.ts
|
|
5853
|
-
var
|
|
5854
|
-
var
|
|
5868
|
+
var name14 = "IndexNode";
|
|
5869
|
+
var dependencies14 = ["Node", "size"];
|
|
5855
5870
|
var createIndexNode = /* @__PURE__ */ factory(
|
|
5856
|
-
|
|
5857
|
-
|
|
5871
|
+
name14,
|
|
5872
|
+
dependencies14,
|
|
5858
5873
|
({ Node, size }) => {
|
|
5859
5874
|
class IndexNode extends Node {
|
|
5860
5875
|
dimensions;
|
|
@@ -5884,9 +5899,9 @@ var createIndexNode = /* @__PURE__ */ factory(
|
|
|
5884
5899
|
throw new Error("dotNotation only applicable for object properties");
|
|
5885
5900
|
}
|
|
5886
5901
|
}
|
|
5887
|
-
static name =
|
|
5902
|
+
static name = name14;
|
|
5888
5903
|
get type() {
|
|
5889
|
-
return
|
|
5904
|
+
return name14;
|
|
5890
5905
|
}
|
|
5891
5906
|
get isIndexNode() {
|
|
5892
5907
|
return true;
|
|
@@ -5996,7 +6011,7 @@ var createIndexNode = /* @__PURE__ */ factory(
|
|
|
5996
6011
|
*/
|
|
5997
6012
|
toJSON() {
|
|
5998
6013
|
return {
|
|
5999
|
-
mathjs:
|
|
6014
|
+
mathjs: name14,
|
|
6000
6015
|
dimensions: this.dimensions,
|
|
6001
6016
|
dotNotation: this.dotNotation
|
|
6002
6017
|
};
|
|
@@ -6046,11 +6061,11 @@ var createIndexNode = /* @__PURE__ */ factory(
|
|
|
6046
6061
|
);
|
|
6047
6062
|
|
|
6048
6063
|
// src/node/ObjectNode.ts
|
|
6049
|
-
var
|
|
6050
|
-
var
|
|
6064
|
+
var name15 = "ObjectNode";
|
|
6065
|
+
var dependencies15 = ["Node"];
|
|
6051
6066
|
var createObjectNode = /* @__PURE__ */ factory(
|
|
6052
|
-
|
|
6053
|
-
|
|
6067
|
+
name15,
|
|
6068
|
+
dependencies15,
|
|
6054
6069
|
({ Node }) => {
|
|
6055
6070
|
class ObjectNode extends Node {
|
|
6056
6071
|
properties;
|
|
@@ -6071,9 +6086,9 @@ var createObjectNode = /* @__PURE__ */ factory(
|
|
|
6071
6086
|
}
|
|
6072
6087
|
}
|
|
6073
6088
|
}
|
|
6074
|
-
static name =
|
|
6089
|
+
static name = name15;
|
|
6075
6090
|
get type() {
|
|
6076
|
-
return
|
|
6091
|
+
return name15;
|
|
6077
6092
|
}
|
|
6078
6093
|
get isObjectNode() {
|
|
6079
6094
|
return true;
|
|
@@ -6174,7 +6189,7 @@ var createObjectNode = /* @__PURE__ */ factory(
|
|
|
6174
6189
|
*/
|
|
6175
6190
|
toJSON() {
|
|
6176
6191
|
return {
|
|
6177
|
-
mathjs:
|
|
6192
|
+
mathjs: name15,
|
|
6178
6193
|
properties: this.properties
|
|
6179
6194
|
};
|
|
6180
6195
|
}
|
|
@@ -6229,11 +6244,11 @@ var createObjectNode = /* @__PURE__ */ factory(
|
|
|
6229
6244
|
);
|
|
6230
6245
|
|
|
6231
6246
|
// src/node/OperatorNode.ts
|
|
6232
|
-
var
|
|
6233
|
-
var
|
|
6247
|
+
var name16 = "OperatorNode";
|
|
6248
|
+
var dependencies16 = ["Node"];
|
|
6234
6249
|
var createOperatorNode = /* @__PURE__ */ factory(
|
|
6235
|
-
|
|
6236
|
-
|
|
6250
|
+
name16,
|
|
6251
|
+
dependencies16,
|
|
6237
6252
|
({ Node }) => {
|
|
6238
6253
|
function startsWithConstant(expr, parenthesis) {
|
|
6239
6254
|
let curNode = expr;
|
|
@@ -6425,9 +6440,9 @@ var createOperatorNode = /* @__PURE__ */ factory(
|
|
|
6425
6440
|
this.fn = fn;
|
|
6426
6441
|
this.args = args || [];
|
|
6427
6442
|
}
|
|
6428
|
-
static name =
|
|
6443
|
+
static name = name16;
|
|
6429
6444
|
get type() {
|
|
6430
|
-
return
|
|
6445
|
+
return name16;
|
|
6431
6446
|
}
|
|
6432
6447
|
get isOperatorNode() {
|
|
6433
6448
|
return true;
|
|
@@ -6595,7 +6610,7 @@ var createOperatorNode = /* @__PURE__ */ factory(
|
|
|
6595
6610
|
*/
|
|
6596
6611
|
toJSON() {
|
|
6597
6612
|
return {
|
|
6598
|
-
mathjs:
|
|
6613
|
+
mathjs: name16,
|
|
6599
6614
|
op: this.op,
|
|
6600
6615
|
fn: this.fn,
|
|
6601
6616
|
args: this.args,
|
|
@@ -6768,11 +6783,11 @@ var createOperatorNode = /* @__PURE__ */ factory(
|
|
|
6768
6783
|
);
|
|
6769
6784
|
|
|
6770
6785
|
// src/node/ParenthesisNode.ts
|
|
6771
|
-
var
|
|
6772
|
-
var
|
|
6786
|
+
var name17 = "ParenthesisNode";
|
|
6787
|
+
var dependencies17 = ["Node"];
|
|
6773
6788
|
var createParenthesisNode = /* @__PURE__ */ factory(
|
|
6774
|
-
|
|
6775
|
-
|
|
6789
|
+
name17,
|
|
6790
|
+
dependencies17,
|
|
6776
6791
|
({ Node }) => {
|
|
6777
6792
|
class ParenthesisNode extends Node {
|
|
6778
6793
|
content;
|
|
@@ -6790,9 +6805,9 @@ var createParenthesisNode = /* @__PURE__ */ factory(
|
|
|
6790
6805
|
}
|
|
6791
6806
|
this.content = content;
|
|
6792
6807
|
}
|
|
6793
|
-
static name =
|
|
6808
|
+
static name = name17;
|
|
6794
6809
|
get type() {
|
|
6795
|
-
return
|
|
6810
|
+
return name17;
|
|
6796
6811
|
}
|
|
6797
6812
|
get isParenthesisNode() {
|
|
6798
6813
|
return true;
|
|
@@ -6864,7 +6879,7 @@ var createParenthesisNode = /* @__PURE__ */ factory(
|
|
|
6864
6879
|
* @returns {Object}
|
|
6865
6880
|
*/
|
|
6866
6881
|
toJSON() {
|
|
6867
|
-
return { mathjs:
|
|
6882
|
+
return { mathjs: name17, content: this.content };
|
|
6868
6883
|
}
|
|
6869
6884
|
/**
|
|
6870
6885
|
* Instantiate an ParenthesisNode from its JSON representation
|
|
@@ -6907,11 +6922,11 @@ var createParenthesisNode = /* @__PURE__ */ factory(
|
|
|
6907
6922
|
);
|
|
6908
6923
|
|
|
6909
6924
|
// src/node/RangeNode.ts
|
|
6910
|
-
var
|
|
6911
|
-
var
|
|
6925
|
+
var name18 = "RangeNode";
|
|
6926
|
+
var dependencies18 = ["Node"];
|
|
6912
6927
|
var createRangeNode = /* @__PURE__ */ factory(
|
|
6913
|
-
|
|
6914
|
-
|
|
6928
|
+
name18,
|
|
6929
|
+
dependencies18,
|
|
6915
6930
|
({ Node }) => {
|
|
6916
6931
|
function calculateNecessaryParentheses(node, parenthesis, implicit) {
|
|
6917
6932
|
const precedence = getPrecedence(node, parenthesis, implicit, void 0);
|
|
@@ -6948,9 +6963,9 @@ var createRangeNode = /* @__PURE__ */ factory(
|
|
|
6948
6963
|
this.end = end;
|
|
6949
6964
|
this.step = step || null;
|
|
6950
6965
|
}
|
|
6951
|
-
static name =
|
|
6966
|
+
static name = name18;
|
|
6952
6967
|
get type() {
|
|
6953
|
-
return
|
|
6968
|
+
return name18;
|
|
6954
6969
|
}
|
|
6955
6970
|
get isRangeNode() {
|
|
6956
6971
|
return true;
|
|
@@ -7068,7 +7083,7 @@ var createRangeNode = /* @__PURE__ */ factory(
|
|
|
7068
7083
|
*/
|
|
7069
7084
|
toJSON() {
|
|
7070
7085
|
return {
|
|
7071
|
-
mathjs:
|
|
7086
|
+
mathjs: name18,
|
|
7072
7087
|
start: this.start,
|
|
7073
7088
|
end: this.end,
|
|
7074
7089
|
step: this.step
|
|
@@ -7154,11 +7169,11 @@ var createRangeNode = /* @__PURE__ */ factory(
|
|
|
7154
7169
|
);
|
|
7155
7170
|
|
|
7156
7171
|
// src/node/RelationalNode.ts
|
|
7157
|
-
var
|
|
7158
|
-
var
|
|
7172
|
+
var name19 = "RelationalNode";
|
|
7173
|
+
var dependencies19 = ["Node"];
|
|
7159
7174
|
var createRelationalNode = /* @__PURE__ */ factory(
|
|
7160
|
-
|
|
7161
|
-
|
|
7175
|
+
name19,
|
|
7176
|
+
dependencies19,
|
|
7162
7177
|
({ Node }) => {
|
|
7163
7178
|
const operatorMap = {
|
|
7164
7179
|
equal: "==",
|
|
@@ -7198,9 +7213,9 @@ var createRelationalNode = /* @__PURE__ */ factory(
|
|
|
7198
7213
|
this.conditionals = conditionals;
|
|
7199
7214
|
this.params = params;
|
|
7200
7215
|
}
|
|
7201
|
-
static name =
|
|
7216
|
+
static name = name19;
|
|
7202
7217
|
get type() {
|
|
7203
|
-
return
|
|
7218
|
+
return name19;
|
|
7204
7219
|
}
|
|
7205
7220
|
get isRelationalNode() {
|
|
7206
7221
|
return true;
|
|
@@ -7300,7 +7315,7 @@ var createRelationalNode = /* @__PURE__ */ factory(
|
|
|
7300
7315
|
*/
|
|
7301
7316
|
toJSON() {
|
|
7302
7317
|
return {
|
|
7303
|
-
mathjs:
|
|
7318
|
+
mathjs: name19,
|
|
7304
7319
|
conditionals: this.conditionals,
|
|
7305
7320
|
params: this.params
|
|
7306
7321
|
};
|
|
@@ -7379,14 +7394,14 @@ var createRelationalNode = /* @__PURE__ */ factory(
|
|
|
7379
7394
|
);
|
|
7380
7395
|
|
|
7381
7396
|
// src/node/SymbolNode.ts
|
|
7382
|
-
var
|
|
7383
|
-
var
|
|
7397
|
+
var name20 = "SymbolNode";
|
|
7398
|
+
var dependencies20 = ["math", "?Unit", "Node"];
|
|
7384
7399
|
var createSymbolNode = /* @__PURE__ */ factory(
|
|
7385
|
-
|
|
7386
|
-
|
|
7400
|
+
name20,
|
|
7401
|
+
dependencies20,
|
|
7387
7402
|
({ math, Unit, Node }) => {
|
|
7388
|
-
function isValuelessUnit(
|
|
7389
|
-
return Unit ? Unit.isValuelessUnit(
|
|
7403
|
+
function isValuelessUnit(name21) {
|
|
7404
|
+
return Unit ? Unit.isValuelessUnit(name21) : false;
|
|
7390
7405
|
}
|
|
7391
7406
|
class SymbolNode extends Node {
|
|
7392
7407
|
name;
|
|
@@ -7397,12 +7412,12 @@ var createSymbolNode = /* @__PURE__ */ factory(
|
|
|
7397
7412
|
* @param {string} name
|
|
7398
7413
|
* @extends {Node}
|
|
7399
7414
|
*/
|
|
7400
|
-
constructor(
|
|
7415
|
+
constructor(name21) {
|
|
7401
7416
|
super();
|
|
7402
|
-
if (typeof
|
|
7417
|
+
if (typeof name21 !== "string") {
|
|
7403
7418
|
throw new TypeError('String expected for parameter "name"');
|
|
7404
7419
|
}
|
|
7405
|
-
this.name =
|
|
7420
|
+
this.name = name21;
|
|
7406
7421
|
}
|
|
7407
7422
|
get type() {
|
|
7408
7423
|
return "SymbolNode";
|
|
@@ -7424,19 +7439,19 @@ var createSymbolNode = /* @__PURE__ */ factory(
|
|
|
7424
7439
|
* evalNode(scope: Object, args: Object, context: *)
|
|
7425
7440
|
*/
|
|
7426
7441
|
_compile(math2, argNames) {
|
|
7427
|
-
const
|
|
7428
|
-
if (argNames[
|
|
7442
|
+
const name21 = this.name;
|
|
7443
|
+
if (argNames[name21] === true) {
|
|
7429
7444
|
return function(scope, args, _context) {
|
|
7430
|
-
return getSafeProperty(args,
|
|
7445
|
+
return getSafeProperty(args, name21);
|
|
7431
7446
|
};
|
|
7432
|
-
} else if (
|
|
7447
|
+
} else if (name21 in math2) {
|
|
7433
7448
|
return function(scope, _args, _context) {
|
|
7434
|
-
return scope.has(
|
|
7449
|
+
return scope.has(name21) ? scope.get(name21) : getSafeProperty(math2, name21);
|
|
7435
7450
|
};
|
|
7436
7451
|
} else {
|
|
7437
|
-
const isUnit2 = isValuelessUnit(
|
|
7452
|
+
const isUnit2 = isValuelessUnit(name21);
|
|
7438
7453
|
return function(scope, _args, _context) {
|
|
7439
|
-
return scope.has(
|
|
7454
|
+
return scope.has(name21) ? scope.get(name21) : isUnit2 ? new Unit(null, name21) : SymbolNode.onUndefinedSymbol(name21);
|
|
7440
7455
|
};
|
|
7441
7456
|
}
|
|
7442
7457
|
}
|
|
@@ -7459,8 +7474,8 @@ var createSymbolNode = /* @__PURE__ */ factory(
|
|
|
7459
7474
|
* Throws an error 'Undefined symbol {name}'
|
|
7460
7475
|
* @param {string} name
|
|
7461
7476
|
*/
|
|
7462
|
-
static onUndefinedSymbol(
|
|
7463
|
-
throw new Error("Undefined symbol " +
|
|
7477
|
+
static onUndefinedSymbol(name21) {
|
|
7478
|
+
throw new Error("Undefined symbol " + name21);
|
|
7464
7479
|
}
|
|
7465
7480
|
/**
|
|
7466
7481
|
* Create a clone of this node, a shallow copy
|
|
@@ -7486,21 +7501,21 @@ var createSymbolNode = /* @__PURE__ */ factory(
|
|
|
7486
7501
|
* @override
|
|
7487
7502
|
*/
|
|
7488
7503
|
_toHTML(_options) {
|
|
7489
|
-
const
|
|
7490
|
-
if (
|
|
7491
|
-
return '<span class="math-symbol math-boolean">' +
|
|
7492
|
-
} else if (
|
|
7493
|
-
return '<span class="math-symbol math-imaginary-symbol">' +
|
|
7494
|
-
} else if (
|
|
7495
|
-
return '<span class="math-symbol math-infinity-symbol">' +
|
|
7496
|
-
} else if (
|
|
7497
|
-
return '<span class="math-symbol math-nan-symbol">' +
|
|
7498
|
-
} else if (
|
|
7499
|
-
return '<span class="math-symbol math-null-symbol">' +
|
|
7500
|
-
} else if (
|
|
7501
|
-
return '<span class="math-symbol math-undefined-symbol">' +
|
|
7502
|
-
}
|
|
7503
|
-
return '<span class="math-symbol">' +
|
|
7504
|
+
const name21 = escape(this.name);
|
|
7505
|
+
if (name21 === "true" || name21 === "false") {
|
|
7506
|
+
return '<span class="math-symbol math-boolean">' + name21 + "</span>";
|
|
7507
|
+
} else if (name21 === "i") {
|
|
7508
|
+
return '<span class="math-symbol math-imaginary-symbol">' + name21 + "</span>";
|
|
7509
|
+
} else if (name21 === "Infinity") {
|
|
7510
|
+
return '<span class="math-symbol math-infinity-symbol">' + name21 + "</span>";
|
|
7511
|
+
} else if (name21 === "NaN") {
|
|
7512
|
+
return '<span class="math-symbol math-nan-symbol">' + name21 + "</span>";
|
|
7513
|
+
} else if (name21 === "null") {
|
|
7514
|
+
return '<span class="math-symbol math-null-symbol">' + name21 + "</span>";
|
|
7515
|
+
} else if (name21 === "undefined") {
|
|
7516
|
+
return '<span class="math-symbol math-undefined-symbol">' + name21 + "</span>";
|
|
7517
|
+
}
|
|
7518
|
+
return '<span class="math-symbol">' + name21 + "</span>";
|
|
7504
7519
|
}
|
|
7505
7520
|
/**
|
|
7506
7521
|
* Get a JSON representation of the node
|
|
@@ -7563,6 +7578,7 @@ export {
|
|
|
7563
7578
|
createOperatorNode,
|
|
7564
7579
|
createParenthesisNode,
|
|
7565
7580
|
createParse,
|
|
7581
|
+
createParser,
|
|
7566
7582
|
createParserClass,
|
|
7567
7583
|
createRangeNode,
|
|
7568
7584
|
createRelationalNode,
|