@danielsimonjr/mathts-expression 0.2.0 → 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.
Files changed (3) hide show
  1. package/dist/index.d.ts +6 -2
  2. package/dist/index.js +313 -286
  3. package/package.json +59 -59
package/dist/index.js CHANGED
@@ -5,7 +5,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
8
+ try {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ } catch (e) {
11
+ throw mod = 0, e;
12
+ }
9
13
  };
10
14
  var __copyProps = (to, from, except, desc) => {
11
15
  if (from && typeof from === "object" || typeof from === "function") {
@@ -649,29 +653,45 @@ function getOperator(fn) {
649
653
  return null;
650
654
  }
651
655
 
656
+ // src/error/MathjsError.ts
657
+ var MathjsError = class _MathjsError extends Error {
658
+ isMathjsError = true;
659
+ /**
660
+ * Create a MathjsError
661
+ * @param message Error message
662
+ */
663
+ constructor(message) {
664
+ super(message);
665
+ this.name = "MathjsError";
666
+ if (Error.captureStackTrace) {
667
+ Error.captureStackTrace(this, _MathjsError);
668
+ }
669
+ }
670
+ };
671
+
652
672
  // src/utils/factory.ts
653
- function factory(name20, dependencies20, create, meta) {
673
+ function factory(name21, dependencies21, create, meta) {
654
674
  function assertAndCreate(scope) {
655
- const deps = pickShallow(scope, dependencies20.map(stripOptionalNotation));
656
- assertDependencies(name20, dependencies20, scope);
675
+ const deps = pickShallow(scope, dependencies21.map(stripOptionalNotation));
676
+ assertDependencies(name21, dependencies21, scope);
657
677
  return create(deps);
658
678
  }
659
679
  assertAndCreate.isFactory = true;
660
- assertAndCreate.fn = name20;
661
- assertAndCreate.dependencies = dependencies20.slice().sort();
680
+ assertAndCreate.fn = name21;
681
+ assertAndCreate.dependencies = dependencies21.slice().sort();
662
682
  if (meta) {
663
683
  assertAndCreate.meta = meta;
664
684
  }
665
685
  return assertAndCreate;
666
686
  }
667
- function assertDependencies(name20, dependencies20, scope) {
668
- const allDefined = dependencies20.filter((dependency) => !isOptionalDependency(dependency)).every((dependency) => scope[dependency] !== void 0);
687
+ function assertDependencies(name21, dependencies21, scope) {
688
+ const allDefined = dependencies21.filter((dependency) => !isOptionalDependency(dependency)).every((dependency) => scope[dependency] !== void 0);
669
689
  if (!allDefined) {
670
- const missingDependencies = dependencies20.filter(
690
+ const missingDependencies = dependencies21.filter(
671
691
  (dependency) => scope[dependency] === void 0
672
692
  );
673
- throw new Error(
674
- `Cannot create function "${name20}", some dependencies are missing: ${missingDependencies.map((d) => `"${d}"`).join(", ")}.`
693
+ throw new MathjsError(
694
+ `Cannot create function "${name21}", some dependencies are missing: ${missingDependencies.map((d) => `"${d}"`).join(", ")}.`
675
695
  );
676
696
  }
677
697
  }
@@ -1690,17 +1710,17 @@ var createParse = /* @__PURE__ */ factory(
1690
1710
  }
1691
1711
  }
1692
1712
  function parseAssignment(state) {
1693
- let name20;
1713
+ let name21;
1694
1714
  let args;
1695
1715
  let value;
1696
1716
  let valid;
1697
1717
  const node = parseConditional(state);
1698
1718
  if (state.token === "=") {
1699
1719
  if (isSymbolNode(node)) {
1700
- name20 = node.name;
1720
+ name21 = node.name;
1701
1721
  getTokenSkipNewline(state);
1702
1722
  value = parseAssignment(state);
1703
- return new AssignmentNode(new SymbolNode(name20), value);
1723
+ return new AssignmentNode(new SymbolNode(name21), value);
1704
1724
  } else if (isAccessorNode(node)) {
1705
1725
  if (node.optionalChaining) {
1706
1726
  throw createSyntaxError(state, "Cannot assign to optional chain");
@@ -1711,7 +1731,7 @@ var createParse = /* @__PURE__ */ factory(
1711
1731
  } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {
1712
1732
  valid = true;
1713
1733
  args = [];
1714
- name20 = node.name;
1734
+ name21 = node.name;
1715
1735
  node.args.forEach(function(arg, index) {
1716
1736
  if (isSymbolNode(arg)) {
1717
1737
  args[index] = arg.name;
@@ -1722,7 +1742,7 @@ var createParse = /* @__PURE__ */ factory(
1722
1742
  if (valid) {
1723
1743
  getTokenSkipNewline(state);
1724
1744
  value = parseAssignment(state);
1725
- return new FunctionAssignmentNode(name20, args, value);
1745
+ return new FunctionAssignmentNode(name21, args, value);
1726
1746
  }
1727
1747
  }
1728
1748
  throw createSyntaxError(state, "Invalid left hand side of assignment operator =");
@@ -1825,7 +1845,7 @@ var createParse = /* @__PURE__ */ factory(
1825
1845
  }
1826
1846
  function parseShift(state) {
1827
1847
  let node;
1828
- let name20;
1848
+ let name21;
1829
1849
  let fn;
1830
1850
  let params;
1831
1851
  node = parseConversion(state);
@@ -1835,17 +1855,17 @@ var createParse = /* @__PURE__ */ factory(
1835
1855
  ">>>": "rightLogShift"
1836
1856
  };
1837
1857
  while (hasOwnProperty(operators, state.token)) {
1838
- name20 = state.token;
1839
- fn = operators[name20];
1858
+ name21 = state.token;
1859
+ fn = operators[name21];
1840
1860
  getTokenSkipNewline(state);
1841
1861
  params = [node, parseConversion(state)];
1842
- node = new OperatorNode(name20, fn, params);
1862
+ node = new OperatorNode(name21, fn, params);
1843
1863
  }
1844
1864
  return node;
1845
1865
  }
1846
1866
  function parseConversion(state) {
1847
1867
  let node;
1848
- let name20;
1868
+ let name21;
1849
1869
  let fn;
1850
1870
  let params;
1851
1871
  node = parseRange(state);
@@ -1855,14 +1875,14 @@ var createParse = /* @__PURE__ */ factory(
1855
1875
  // alias of 'to'
1856
1876
  };
1857
1877
  while (hasOwnProperty(operators, state.token)) {
1858
- name20 = state.token;
1859
- fn = operators[name20];
1878
+ name21 = state.token;
1879
+ fn = operators[name21];
1860
1880
  getTokenSkipNewline(state);
1861
- if (name20 === "in" && "])},;".includes(state.token)) {
1881
+ if (name21 === "in" && "])},;".includes(state.token)) {
1862
1882
  node = new OperatorNode("*", "multiply", [node, new SymbolNode("in")], true);
1863
1883
  } else {
1864
1884
  params = [node, parseRange(state)];
1865
- node = new OperatorNode(name20, fn, params);
1885
+ node = new OperatorNode(name21, fn, params);
1866
1886
  }
1867
1887
  }
1868
1888
  return node;
@@ -1902,7 +1922,7 @@ var createParse = /* @__PURE__ */ factory(
1902
1922
  }
1903
1923
  function parseAddSubtract(state) {
1904
1924
  let node;
1905
- let name20;
1925
+ let name21;
1906
1926
  let fn;
1907
1927
  let params;
1908
1928
  node = parseMultiplyDivideModulus(state);
@@ -1911,8 +1931,8 @@ var createParse = /* @__PURE__ */ factory(
1911
1931
  "-": "subtract"
1912
1932
  };
1913
1933
  while (hasOwnProperty(operators, state.token)) {
1914
- name20 = state.token;
1915
- fn = operators[name20];
1934
+ name21 = state.token;
1935
+ fn = operators[name21];
1916
1936
  getTokenSkipNewline(state);
1917
1937
  const rightNode = parseMultiplyDivideModulus(state);
1918
1938
  if (rightNode.isPercentage) {
@@ -1920,14 +1940,14 @@ var createParse = /* @__PURE__ */ factory(
1920
1940
  } else {
1921
1941
  params = [node, rightNode];
1922
1942
  }
1923
- node = new OperatorNode(name20, fn, params);
1943
+ node = new OperatorNode(name21, fn, params);
1924
1944
  }
1925
1945
  return node;
1926
1946
  }
1927
1947
  function parseMultiplyDivideModulus(state) {
1928
1948
  let node;
1929
1949
  let last;
1930
- let name20;
1950
+ let name21;
1931
1951
  let fn;
1932
1952
  node = parseImplicitMultiplication(state);
1933
1953
  last = node;
@@ -1941,11 +1961,11 @@ var createParse = /* @__PURE__ */ factory(
1941
1961
  };
1942
1962
  while (true) {
1943
1963
  if (hasOwnProperty(operators, state.token)) {
1944
- name20 = state.token;
1945
- fn = operators[name20];
1964
+ name21 = state.token;
1965
+ fn = operators[name21];
1946
1966
  getTokenSkipNewline(state);
1947
1967
  last = parseImplicitMultiplication(state);
1948
- node = new OperatorNode(name20, fn, [node, last]);
1968
+ node = new OperatorNode(name21, fn, [node, last]);
1949
1969
  } else {
1950
1970
  break;
1951
1971
  }
@@ -2019,7 +2039,7 @@ var createParse = /* @__PURE__ */ factory(
2019
2039
  return node;
2020
2040
  }
2021
2041
  function parseUnary(state) {
2022
- let name20;
2042
+ let name21;
2023
2043
  let params;
2024
2044
  let fn;
2025
2045
  const operators = {
@@ -2030,25 +2050,25 @@ var createParse = /* @__PURE__ */ factory(
2030
2050
  };
2031
2051
  if (hasOwnProperty(operators, state.token)) {
2032
2052
  fn = operators[state.token];
2033
- name20 = state.token;
2053
+ name21 = state.token;
2034
2054
  getTokenSkipNewline(state);
2035
2055
  params = [parseUnary(state)];
2036
- return new OperatorNode(name20, fn, params);
2056
+ return new OperatorNode(name21, fn, params);
2037
2057
  }
2038
2058
  return parsePow(state);
2039
2059
  }
2040
2060
  function parsePow(state) {
2041
2061
  let node;
2042
- let name20;
2062
+ let name21;
2043
2063
  let fn;
2044
2064
  let params;
2045
2065
  node = parseNullishCoalescing(state);
2046
2066
  if (state.token === "^" || state.token === ".^") {
2047
- name20 = state.token;
2048
- fn = name20 === "^" ? "pow" : "dotPow";
2067
+ name21 = state.token;
2068
+ fn = name21 === "^" ? "pow" : "dotPow";
2049
2069
  getTokenSkipNewline(state);
2050
2070
  params = [node, parseUnary(state)];
2051
- node = new OperatorNode(name20, fn, params);
2071
+ node = new OperatorNode(name21, fn, params);
2052
2072
  }
2053
2073
  return node;
2054
2074
  }
@@ -2062,7 +2082,7 @@ var createParse = /* @__PURE__ */ factory(
2062
2082
  }
2063
2083
  function parseLeftHandOperators(state) {
2064
2084
  let node;
2065
- let name20;
2085
+ let name21;
2066
2086
  let fn;
2067
2087
  let params;
2068
2088
  node = parseCustomNodes(state);
@@ -2071,11 +2091,11 @@ var createParse = /* @__PURE__ */ factory(
2071
2091
  "'": "ctranspose"
2072
2092
  };
2073
2093
  while (hasOwnProperty(operators, state.token)) {
2074
- name20 = state.token;
2075
- fn = operators[name20];
2094
+ name21 = state.token;
2095
+ fn = operators[name21];
2076
2096
  getToken(state);
2077
2097
  params = [node];
2078
- node = new OperatorNode(name20, fn, params);
2098
+ node = new OperatorNode(name21, fn, params);
2079
2099
  node = parseAccessors(state, node);
2080
2100
  }
2081
2101
  return node;
@@ -2108,16 +2128,16 @@ var createParse = /* @__PURE__ */ factory(
2108
2128
  }
2109
2129
  function parseSymbol(state) {
2110
2130
  let node;
2111
- let name20;
2131
+ let name21;
2112
2132
  if (state.tokenType === 3 /* SYMBOL */ || state.tokenType === 1 /* DELIMITER */ && state.token in NAMED_DELIMITERS) {
2113
- name20 = state.token;
2133
+ name21 = state.token;
2114
2134
  getToken(state);
2115
- if (hasOwnProperty(CONSTANTS, name20)) {
2116
- node = new ConstantNode(CONSTANTS[name20]);
2117
- } else if (NUMERIC_CONSTANTS.includes(name20)) {
2118
- node = new ConstantNode(numeric(name20, "number"));
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"));
2119
2139
  } else {
2120
- node = new SymbolNode(name20);
2140
+ node = new SymbolNode(name21);
2121
2141
  }
2122
2142
  node = parseAccessors(state, node);
2123
2143
  return node;
@@ -2627,9 +2647,9 @@ var createParserClass = /* @__PURE__ */ factory(
2627
2647
  Parser.prototype.evaluate = function(expr) {
2628
2648
  return evaluate(expr, this.scope);
2629
2649
  };
2630
- Parser.prototype.get = function(name20) {
2631
- if (this.scope.has(name20)) {
2632
- return this.scope.get(name20);
2650
+ Parser.prototype.get = function(name21) {
2651
+ if (this.scope.has(name21)) {
2652
+ return this.scope.get(name21);
2633
2653
  }
2634
2654
  };
2635
2655
  Parser.prototype.getAll = function() {
@@ -2638,14 +2658,14 @@ var createParserClass = /* @__PURE__ */ factory(
2638
2658
  Parser.prototype.getAllAsMap = function() {
2639
2659
  return this.scope;
2640
2660
  };
2641
- function isValidVariableName(name20) {
2642
- if (name20.length === 0) {
2661
+ function isValidVariableName(name21) {
2662
+ if (name21.length === 0) {
2643
2663
  return false;
2644
2664
  }
2645
- for (let i = 0; i < name20.length; i++) {
2646
- const cPrev = name20.charAt(i - 1);
2647
- const c = name20.charAt(i);
2648
- const cNext = name20.charAt(i + 1);
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);
2649
2669
  const valid = parse.isAlpha(c, cPrev, cNext) || i > 0 && parse.isDigit(c);
2650
2670
  if (!valid) {
2651
2671
  return false;
@@ -2653,17 +2673,17 @@ var createParserClass = /* @__PURE__ */ factory(
2653
2673
  }
2654
2674
  return true;
2655
2675
  }
2656
- Parser.prototype.set = function(name20, value) {
2657
- if (!isValidVariableName(name20)) {
2676
+ Parser.prototype.set = function(name21, value) {
2677
+ if (!isValidVariableName(name21)) {
2658
2678
  throw new Error(
2659
- `Invalid variable name: '${name20}'. Variable names must follow the specified rules.`
2679
+ `Invalid variable name: '${name21}'. Variable names must follow the specified rules.`
2660
2680
  );
2661
2681
  }
2662
- this.scope.set(name20, value);
2682
+ this.scope.set(name21, value);
2663
2683
  return value;
2664
2684
  };
2665
- Parser.prototype.remove = function(name20) {
2666
- this.scope.delete(name20);
2685
+ Parser.prototype.remove = function(name21) {
2686
+ this.scope.delete(name21);
2667
2687
  };
2668
2688
  Parser.prototype.clear = function() {
2669
2689
  this.scope.clear();
@@ -2674,21 +2694,21 @@ var createParserClass = /* @__PURE__ */ factory(
2674
2694
  variables: {},
2675
2695
  functions: {}
2676
2696
  };
2677
- for (const [name20, value] of this.scope) {
2697
+ for (const [name21, value] of this.scope) {
2678
2698
  if (isFunction(value)) {
2679
2699
  if (!isExpressionFunction(value)) {
2680
- throw new Error(`Cannot serialize external function ${name20}`);
2700
+ throw new Error(`Cannot serialize external function ${name21}`);
2681
2701
  }
2682
- json.functions[name20] = `${value.syntax} = ${value.expr}`;
2702
+ json.functions[name21] = `${value.syntax} = ${value.expr}`;
2683
2703
  } else {
2684
- json.variables[name20] = value;
2704
+ json.variables[name21] = value;
2685
2705
  }
2686
2706
  }
2687
2707
  return json;
2688
2708
  };
2689
2709
  Parser.fromJSON = function(json) {
2690
2710
  const parser = new Parser();
2691
- Object.entries(json.variables || {}).forEach(([name20, value]) => parser.set(name20, value));
2711
+ Object.entries(json.variables || {}).forEach(([name21, value]) => parser.set(name21, value));
2692
2712
  Object.entries(json.functions || {}).forEach(([_name, fn]) => parser.evaluate(fn));
2693
2713
  return parser;
2694
2714
  };
@@ -2700,12 +2720,27 @@ function isExpressionFunction(value) {
2700
2720
  return typeof value === "function" && typeof value.syntax === "string" && typeof value.expr === "string";
2701
2721
  }
2702
2722
 
2703
- // src/Help.ts
2704
- var name3 = "Help";
2705
- var dependencies3 = ["evaluate"];
2706
- var createHelpClass = /* @__PURE__ */ factory(
2723
+ // src/function/parser.ts
2724
+ var name3 = "parser";
2725
+ var dependencies3 = ["typed", "Parser"];
2726
+ var createParser = /* @__PURE__ */ factory(
2707
2727
  name3,
2708
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,
2709
2744
  ({ evaluate }) => {
2710
2745
  function Help(doc) {
2711
2746
  if (!(this instanceof Help)) {
@@ -2857,25 +2892,25 @@ function compileConstantNode(node) {
2857
2892
  };
2858
2893
  }
2859
2894
  function compileSymbolNode(node, math, argNames) {
2860
- const name20 = node.name;
2861
- if (argNames[name20] === true) {
2895
+ const name21 = node.name;
2896
+ if (argNames[name21] === true) {
2862
2897
  return function evalSymbolArg(_scope, args) {
2863
- return args[name20];
2898
+ return args[name21];
2864
2899
  };
2865
2900
  }
2866
- if (Object.prototype.hasOwnProperty.call(math, name20)) {
2901
+ if (Object.prototype.hasOwnProperty.call(math, name21)) {
2867
2902
  return function evalSymbolNode(scope) {
2868
- if (scope.has(name20)) {
2869
- return scope.get(name20);
2903
+ if (scope.has(name21)) {
2904
+ return scope.get(name21);
2870
2905
  }
2871
- return math[name20];
2906
+ return math[name21];
2872
2907
  };
2873
2908
  }
2874
2909
  return function evalSymbolNode(scope) {
2875
- if (scope.has(name20)) {
2876
- return scope.get(name20);
2910
+ if (scope.has(name21)) {
2911
+ return scope.get(name21);
2877
2912
  }
2878
- throw new Error(`Undefined symbol "${name20}"`);
2913
+ throw new Error(`Undefined symbol "${name21}"`);
2879
2914
  };
2880
2915
  }
2881
2916
  function compileOperatorNode(node, math, argNames) {
@@ -2907,21 +2942,21 @@ function compileFunctionNode(node, math, argNames) {
2907
2942
  const evalArgs = node.args.map((arg) => compileNode(arg, math, argNames));
2908
2943
  const fnNode = node.fn;
2909
2944
  if (fnNode && fnNode.isSymbolNode) {
2910
- const name20 = fnNode.name;
2945
+ const name21 = fnNode.name;
2911
2946
  const resolveFn = (scope) => {
2912
- if (scope.has(name20)) {
2913
- const value = scope.get(name20);
2947
+ if (scope.has(name21)) {
2948
+ const value = scope.get(name21);
2914
2949
  if (typeof value === "function") return value;
2915
- throw new TypeError(`'${name20}' is not a function; its value is:
2950
+ throw new TypeError(`'${name21}' is not a function; its value is:
2916
2951
  ${value}`);
2917
2952
  }
2918
- if (Object.prototype.hasOwnProperty.call(math, name20)) {
2919
- const value = math[name20];
2953
+ if (Object.prototype.hasOwnProperty.call(math, name21)) {
2954
+ const value = math[name21];
2920
2955
  if (typeof value === "function") return value;
2921
- throw new TypeError(`'${name20}' is not a function; its value is:
2956
+ throw new TypeError(`'${name21}' is not a function; its value is:
2922
2957
  ${value}`);
2923
2958
  }
2924
- throw new Error(`Undefined function "${name20}"`);
2959
+ throw new Error(`Undefined function "${name21}"`);
2925
2960
  };
2926
2961
  switch (evalArgs.length) {
2927
2962
  case 0:
@@ -2982,10 +3017,10 @@ function compileArrayNode(node, math, argNames) {
2982
3017
  function compileAssignmentNode(node, math, argNames) {
2983
3018
  const evalValue = compileNode(node.value, math, argNames);
2984
3019
  if (node.object && node.object.isSymbolNode && !node.index) {
2985
- const name21 = node.object.name;
3020
+ const name22 = node.object.name;
2986
3021
  return function evalAssignmentNode(scope, args, context) {
2987
3022
  const value = evalValue(scope, args, context);
2988
- scope.set(name21, value);
3023
+ scope.set(name22, value);
2989
3024
  return value;
2990
3025
  };
2991
3026
  }
@@ -3000,11 +3035,11 @@ function compileAssignmentNode(node, math, argNames) {
3000
3035
  };
3001
3036
  }
3002
3037
  }
3003
- const name20 = node.name || node.object && node.object.name;
3004
- if (name20) {
3038
+ const name21 = node.name || node.object && node.object.name;
3039
+ if (name21) {
3005
3040
  return function evalAssignmentNode(scope, args, context) {
3006
3041
  const value = evalValue(scope, args, context);
3007
- scope.set(name20, value);
3042
+ scope.set(name21, value);
3008
3043
  return value;
3009
3044
  };
3010
3045
  }
@@ -3098,7 +3133,7 @@ function compileFunctionAssignmentNode(node, math, argNames) {
3098
3133
  childArgNames[param] = true;
3099
3134
  }
3100
3135
  const evalExpr = compileNode(node.expr, math, childArgNames);
3101
- const name20 = node.name;
3136
+ const name21 = node.name;
3102
3137
  const params = node.params;
3103
3138
  return function evalFunctionAssignmentNode(scope, args, _context) {
3104
3139
  const fn = function(...fnArgs) {
@@ -3108,8 +3143,8 @@ function compileFunctionAssignmentNode(node, math, argNames) {
3108
3143
  }
3109
3144
  return evalExpr(scope, childArgs, void 0);
3110
3145
  };
3111
- fn.syntax = name20 + "(" + params.join(", ") + ")";
3112
- scope.set(name20, fn);
3146
+ fn.syntax = name21 + "(" + params.join(", ") + ")";
3147
+ scope.set(name21, fn);
3113
3148
  return fn;
3114
3149
  };
3115
3150
  }
@@ -3261,11 +3296,11 @@ function compileExpression(parseFn, mathScope, expr, options) {
3261
3296
  }
3262
3297
 
3263
3298
  // src/node/Node.ts
3264
- var name4 = "Node";
3265
- var dependencies4 = ["mathWithTransform"];
3299
+ var name5 = "Node";
3300
+ var dependencies5 = ["mathWithTransform"];
3266
3301
  var createNode = /* @__PURE__ */ factory(
3267
- name4,
3268
- dependencies4,
3302
+ name5,
3303
+ dependencies5,
3269
3304
  ({ mathWithTransform }) => {
3270
3305
  function _validateScope(scope) {
3271
3306
  for (const symbol of [...keywords]) {
@@ -3629,11 +3664,11 @@ function accessFactory({ subset }) {
3629
3664
  }
3630
3665
 
3631
3666
  // src/node/AccessorNode.ts
3632
- var name5 = "AccessorNode";
3633
- var dependencies5 = ["subset", "Node"];
3667
+ var name6 = "AccessorNode";
3668
+ var dependencies6 = ["subset", "Node"];
3634
3669
  var createAccessorNode = /* @__PURE__ */ factory(
3635
- name5,
3636
- dependencies5,
3670
+ name6,
3671
+ dependencies6,
3637
3672
  ({ subset, Node }) => {
3638
3673
  const access = accessFactory({ subset });
3639
3674
  function needParenthesis(node) {
@@ -3677,9 +3712,9 @@ var createAccessorNode = /* @__PURE__ */ factory(
3677
3712
  return this.object.name || "";
3678
3713
  }
3679
3714
  }
3680
- static name = name5;
3715
+ static name = name6;
3681
3716
  get type() {
3682
- return name5;
3717
+ return name6;
3683
3718
  }
3684
3719
  get isAccessorNode() {
3685
3720
  return true;
@@ -3803,7 +3838,7 @@ var createAccessorNode = /* @__PURE__ */ factory(
3803
3838
  */
3804
3839
  toJSON() {
3805
3840
  return {
3806
- mathjs: name5,
3841
+ mathjs: name6,
3807
3842
  object: this.object,
3808
3843
  index: this.index,
3809
3844
  optionalChaining: this.optionalChaining
@@ -3827,11 +3862,11 @@ var createAccessorNode = /* @__PURE__ */ factory(
3827
3862
  );
3828
3863
 
3829
3864
  // src/node/ArrayNode.ts
3830
- var name6 = "ArrayNode";
3831
- var dependencies6 = ["Node"];
3865
+ var name7 = "ArrayNode";
3866
+ var dependencies7 = ["Node"];
3832
3867
  var createArrayNode = /* @__PURE__ */ factory(
3833
- name6,
3834
- dependencies6,
3868
+ name7,
3869
+ dependencies7,
3835
3870
  ({ Node }) => {
3836
3871
  class ArrayNode extends Node {
3837
3872
  items;
@@ -3848,9 +3883,9 @@ var createArrayNode = /* @__PURE__ */ factory(
3848
3883
  throw new TypeError("Array containing Nodes expected");
3849
3884
  }
3850
3885
  }
3851
- static name = name6;
3886
+ static name = name7;
3852
3887
  get type() {
3853
- return name6;
3888
+ return name7;
3854
3889
  }
3855
3890
  get isArrayNode() {
3856
3891
  return true;
@@ -3938,7 +3973,7 @@ var createArrayNode = /* @__PURE__ */ factory(
3938
3973
  */
3939
3974
  toJSON() {
3940
3975
  return {
3941
- mathjs: name6,
3976
+ mathjs: name7,
3942
3977
  items: this.items
3943
3978
  };
3944
3979
  }
@@ -3992,13 +4027,13 @@ var createArrayNode = /* @__PURE__ */ factory(
3992
4027
  );
3993
4028
 
3994
4029
  // src/node/utils/assign.ts
3995
- function assignFactory({ subset, matrix }) {
4030
+ function assignFactory({ subset }) {
3996
4031
  return function assign(object, index, value) {
3997
4032
  try {
3998
4033
  if (Array.isArray(object)) {
3999
- const result = matrix(object).subset(index, value).valueOf();
4000
- result.forEach((item, index2) => {
4001
- object[index2] = item;
4034
+ const result = subset(object, index, value);
4035
+ result.forEach((item, i) => {
4036
+ object[i] = item;
4002
4037
  });
4003
4038
  return object;
4004
4039
  } else if (object && typeof object.subset === "function") {
@@ -4021,23 +4056,14 @@ function assignFactory({ subset, matrix }) {
4021
4056
  }
4022
4057
 
4023
4058
  // src/node/AssignmentNode.ts
4024
- var name7 = "AssignmentNode";
4025
- var dependencies7 = [
4026
- "subset",
4027
- "?matrix",
4028
- // FIXME: should not be needed at all, should be handled by subset
4029
- "Node"
4030
- ];
4059
+ var name8 = "AssignmentNode";
4060
+ var dependencies8 = ["subset", "Node"];
4031
4061
  var createAssignmentNode = /* @__PURE__ */ factory(
4032
- name7,
4033
- dependencies7,
4034
- ({
4035
- subset,
4036
- matrix,
4037
- Node
4038
- }) => {
4062
+ name8,
4063
+ dependencies8,
4064
+ ({ subset, Node }) => {
4039
4065
  const access = accessFactory({ subset });
4040
- const assign = assignFactory({ subset, matrix });
4066
+ const assign = assignFactory({ subset });
4041
4067
  function needParenthesis(node, parenthesis, implicit) {
4042
4068
  if (!parenthesis) {
4043
4069
  parenthesis = "keep";
@@ -4101,7 +4127,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4101
4127
  }
4102
4128
  }
4103
4129
  // class name for typing purposes:
4104
- static name = name7;
4130
+ static name = name8;
4105
4131
  // readonly property name
4106
4132
  get name() {
4107
4133
  if (this.index) {
@@ -4111,7 +4137,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4111
4137
  }
4112
4138
  }
4113
4139
  get type() {
4114
- return name7;
4140
+ return name8;
4115
4141
  }
4116
4142
  get isAssignmentNode() {
4117
4143
  return true;
@@ -4133,14 +4159,14 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4133
4159
  const evalObject = this.object._compile(math, argNames);
4134
4160
  const evalIndex = this.index ? this.index._compile(math, argNames) : null;
4135
4161
  const evalValue = this.value._compile(math, argNames);
4136
- const name20 = this.object.name;
4162
+ const name21 = this.object.name;
4137
4163
  if (!this.index) {
4138
4164
  if (!isSymbolNode(this.object)) {
4139
4165
  throw new TypeError("SymbolNode expected as object");
4140
4166
  }
4141
4167
  return function evalAssignmentNode(scope, args, context) {
4142
4168
  const value = evalValue(scope, args, context);
4143
- scope.set(name20, value);
4169
+ scope.set(name21, value);
4144
4170
  return value;
4145
4171
  };
4146
4172
  } else if (this.index.isObjectProperty()) {
@@ -4156,7 +4182,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4156
4182
  const childObject = evalObject(scope, args, context);
4157
4183
  const value = evalValue(scope, args, context);
4158
4184
  const index = evalIndex(scope, args, childObject);
4159
- scope.set(name20, assign(childObject, index, value));
4185
+ scope.set(name21, assign(childObject, index, value));
4160
4186
  return value;
4161
4187
  };
4162
4188
  } else {
@@ -4235,7 +4261,7 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4235
4261
  */
4236
4262
  toJSON() {
4237
4263
  return {
4238
- mathjs: name7,
4264
+ mathjs: name8,
4239
4265
  object: this.object,
4240
4266
  index: this.index,
4241
4267
  value: this.value
@@ -4287,11 +4313,11 @@ var createAssignmentNode = /* @__PURE__ */ factory(
4287
4313
  );
4288
4314
 
4289
4315
  // src/node/BlockNode.ts
4290
- var name8 = "BlockNode";
4291
- var dependencies8 = ["ResultSet", "Node"];
4316
+ var name9 = "BlockNode";
4317
+ var dependencies9 = ["ResultSet", "Node"];
4292
4318
  var createBlockNode = /* @__PURE__ */ factory(
4293
- name8,
4294
- dependencies8,
4319
+ name9,
4320
+ dependencies9,
4295
4321
  ({ ResultSet, Node }) => {
4296
4322
  class BlockNode extends Node {
4297
4323
  blocks;
@@ -4318,9 +4344,9 @@ var createBlockNode = /* @__PURE__ */ factory(
4318
4344
  return { node, visible };
4319
4345
  });
4320
4346
  }
4321
- static name = name8;
4347
+ static name = name9;
4322
4348
  get type() {
4323
- return name8;
4349
+ return name9;
4324
4350
  }
4325
4351
  get isBlockNode() {
4326
4352
  return true;
@@ -4413,7 +4439,7 @@ var createBlockNode = /* @__PURE__ */ factory(
4413
4439
  */
4414
4440
  toJSON() {
4415
4441
  return {
4416
- mathjs: name8,
4442
+ mathjs: name9,
4417
4443
  blocks: this.blocks
4418
4444
  };
4419
4445
  }
@@ -4456,11 +4482,11 @@ var createBlockNode = /* @__PURE__ */ factory(
4456
4482
  );
4457
4483
 
4458
4484
  // src/node/ConditionalNode.ts
4459
- var name9 = "ConditionalNode";
4460
- var dependencies9 = ["Node"];
4485
+ var name10 = "ConditionalNode";
4486
+ var dependencies10 = ["Node"];
4461
4487
  var createConditionalNode = /* @__PURE__ */ factory(
4462
- name9,
4463
- dependencies9,
4488
+ name10,
4489
+ dependencies10,
4464
4490
  ({ Node }) => {
4465
4491
  function testCondition2(condition) {
4466
4492
  if (typeof condition === "number" || typeof condition === "boolean" || typeof condition === "string") {
@@ -4511,9 +4537,9 @@ var createConditionalNode = /* @__PURE__ */ factory(
4511
4537
  this.trueExpr = trueExpr;
4512
4538
  this.falseExpr = falseExpr;
4513
4539
  }
4514
- static name = name9;
4540
+ static name = name10;
4515
4541
  get type() {
4516
- return name9;
4542
+ return name10;
4517
4543
  }
4518
4544
  get isConditionalNode() {
4519
4545
  return true;
@@ -4614,7 +4640,7 @@ var createConditionalNode = /* @__PURE__ */ factory(
4614
4640
  */
4615
4641
  toJSON() {
4616
4642
  return {
4617
- mathjs: name9,
4643
+ mathjs: name10,
4618
4644
  condition: this.condition,
4619
4645
  trueExpr: this.trueExpr,
4620
4646
  falseExpr: this.falseExpr
@@ -5011,26 +5037,26 @@ var latexUnits = {
5011
5037
  function escapeLatex(string) {
5012
5038
  return (0, import_escape_latex.default)(string, { preserveFormatting: true });
5013
5039
  }
5014
- function toSymbol(name20, isUnit2) {
5040
+ function toSymbol(name21, isUnit2) {
5015
5041
  isUnit2 = typeof isUnit2 === "undefined" ? false : isUnit2;
5016
5042
  if (isUnit2) {
5017
- if (hasOwnProperty(latexUnits, name20)) {
5018
- return latexUnits[name20];
5043
+ if (hasOwnProperty(latexUnits, name21)) {
5044
+ return latexUnits[name21];
5019
5045
  }
5020
- return "\\mathrm{" + escapeLatex(name20) + "}";
5046
+ return "\\mathrm{" + escapeLatex(name21) + "}";
5021
5047
  }
5022
- if (hasOwnProperty(latexSymbols, name20)) {
5023
- return latexSymbols[name20];
5048
+ if (hasOwnProperty(latexSymbols, name21)) {
5049
+ return latexSymbols[name21];
5024
5050
  }
5025
- return escapeLatex(name20);
5051
+ return escapeLatex(name21);
5026
5052
  }
5027
5053
 
5028
5054
  // src/node/ConstantNode.ts
5029
- var name10 = "ConstantNode";
5030
- var dependencies10 = ["Node", "isBounded"];
5055
+ var name11 = "ConstantNode";
5056
+ var dependencies11 = ["Node", "isBounded"];
5031
5057
  var createConstantNode = /* @__PURE__ */ factory(
5032
- name10,
5033
- dependencies10,
5058
+ name11,
5059
+ dependencies11,
5034
5060
  ({
5035
5061
  Node,
5036
5062
  isBounded
@@ -5053,9 +5079,9 @@ var createConstantNode = /* @__PURE__ */ factory(
5053
5079
  super();
5054
5080
  this.value = value;
5055
5081
  }
5056
- static name = name10;
5082
+ static name = name11;
5057
5083
  get type() {
5058
- return name10;
5084
+ return name11;
5059
5085
  }
5060
5086
  get isConstantNode() {
5061
5087
  return true;
@@ -5139,7 +5165,7 @@ var createConstantNode = /* @__PURE__ */ factory(
5139
5165
  * @returns {Object}
5140
5166
  */
5141
5167
  toJSON() {
5142
- return { mathjs: name10, value: this.value };
5168
+ return { mathjs: name11, value: this.value };
5143
5169
  }
5144
5170
  /**
5145
5171
  * Instantiate a ConstantNode from its JSON representation
@@ -5189,11 +5215,11 @@ var createConstantNode = /* @__PURE__ */ factory(
5189
5215
  );
5190
5216
 
5191
5217
  // src/node/FunctionAssignmentNode.ts
5192
- var name11 = "FunctionAssignmentNode";
5193
- var dependencies11 = ["typed", "Node"];
5218
+ var name12 = "FunctionAssignmentNode";
5219
+ var dependencies12 = ["typed", "Node"];
5194
5220
  var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5195
- name11,
5196
- dependencies11,
5221
+ name12,
5222
+ dependencies12,
5197
5223
  ({ typed, Node }) => {
5198
5224
  function needParenthesis(node, parenthesis, implicit) {
5199
5225
  const precedence = getPrecedence(node, parenthesis, implicit, void 0);
@@ -5217,9 +5243,9 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5217
5243
  * and type of the parameter
5218
5244
  * @param {Node} expr The function expression
5219
5245
  */
5220
- constructor(name20, params, expr) {
5246
+ constructor(name21, params, expr) {
5221
5247
  super();
5222
- if (typeof name20 !== "string") {
5248
+ if (typeof name21 !== "string") {
5223
5249
  throw new TypeError('String expected for parameter "name"');
5224
5250
  }
5225
5251
  if (!Array.isArray(params)) {
@@ -5230,8 +5256,8 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5230
5256
  if (!isNode(expr)) {
5231
5257
  throw new TypeError('Node expected for parameter "expr"');
5232
5258
  }
5233
- if (keywords.has(name20)) {
5234
- throw new Error('Illegal function name, "' + name20 + '" is a reserved keyword');
5259
+ if (keywords.has(name21)) {
5260
+ throw new Error('Illegal function name, "' + name21 + '" is a reserved keyword');
5235
5261
  }
5236
5262
  const paramNames = /* @__PURE__ */ new Set();
5237
5263
  for (const param of params) {
@@ -5242,7 +5268,7 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5242
5268
  paramNames.add(paramName);
5243
5269
  }
5244
5270
  }
5245
- this.name = name20;
5271
+ this.name = name21;
5246
5272
  this.params = params.map(function(param) {
5247
5273
  return param && param.name || param;
5248
5274
  });
@@ -5251,9 +5277,9 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5251
5277
  });
5252
5278
  this.expr = expr;
5253
5279
  }
5254
- static name = name11;
5280
+ static name = name12;
5255
5281
  get type() {
5256
- return name11;
5282
+ return name12;
5257
5283
  }
5258
5284
  get isFunctionAssignmentNode() {
5259
5285
  return true;
@@ -5278,10 +5304,10 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5278
5304
  });
5279
5305
  const expr = this.expr;
5280
5306
  const evalExpr = expr._compile(math, childArgNames);
5281
- const name20 = this.name;
5307
+ const name21 = this.name;
5282
5308
  const params = this.params;
5283
5309
  const signature = join(this.types, ",");
5284
- const syntax = name20 + "(" + join(this.params, ", ") + ")";
5310
+ const syntax = name21 + "(" + join(this.params, ", ") + ")";
5285
5311
  return function evalFunctionAssignmentNode(scope, args, context) {
5286
5312
  const signatures = {};
5287
5313
  signatures[signature] = function(...fnArgs) {
@@ -5291,10 +5317,10 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5291
5317
  }
5292
5318
  return evalExpr(scope, childArgs, context);
5293
5319
  };
5294
- const fn = typed(name20, signatures);
5320
+ const fn = typed(name21, signatures);
5295
5321
  fn.syntax = syntax;
5296
5322
  fn.expr = expr.toString();
5297
- scope.set(name20, fn);
5323
+ scope.set(name21, fn);
5298
5324
  return fn;
5299
5325
  };
5300
5326
  }
@@ -5343,7 +5369,7 @@ var createFunctionAssignmentNode = /* @__PURE__ */ factory(
5343
5369
  toJSON() {
5344
5370
  const types = this.types;
5345
5371
  return {
5346
- mathjs: name11,
5372
+ mathjs: name12,
5347
5373
  name: this.name,
5348
5374
  params: this.params.map(function(param, index) {
5349
5375
  return {
@@ -5416,11 +5442,11 @@ function createSubScope(parentScope, args) {
5416
5442
  }
5417
5443
 
5418
5444
  // src/node/FunctionNode.ts
5419
- var name12 = "FunctionNode";
5420
- var dependencies12 = ["math", "Node", "SymbolNode"];
5445
+ var name13 = "FunctionNode";
5446
+ var dependencies13 = ["math", "Node", "SymbolNode"];
5421
5447
  var createFunctionNode = /* @__PURE__ */ factory(
5422
- name12,
5423
- dependencies12,
5448
+ name13,
5449
+ dependencies13,
5424
5450
  ({
5425
5451
  math,
5426
5452
  Node,
@@ -5518,9 +5544,9 @@ var createFunctionNode = /* @__PURE__ */ factory(
5518
5544
  get name() {
5519
5545
  return this.fn.name || "";
5520
5546
  }
5521
- static name = name12;
5547
+ static name = name13;
5522
5548
  get type() {
5523
- return name12;
5549
+ return name13;
5524
5550
  }
5525
5551
  get isFunctionNode() {
5526
5552
  return true;
@@ -5542,22 +5568,22 @@ var createFunctionNode = /* @__PURE__ */ factory(
5542
5568
  const evalArgs = this.args.map((arg) => arg._compile(math2, argNames));
5543
5569
  const fromOptionalChaining = this.optional || isAccessorNode(this.fn) && this.fn.optionalChaining;
5544
5570
  if (isSymbolNode(this.fn)) {
5545
- const name20 = this.fn.name;
5546
- if (!argNames[name20]) {
5547
- const fn = name20 in math2 ? getSafeProperty(math2, name20) : void 0;
5571
+ const name21 = this.fn.name;
5572
+ if (!argNames[name21]) {
5573
+ const fn = name21 in math2 ? getSafeProperty(math2, name21) : void 0;
5548
5574
  const isRaw = typeof fn === "function" && fn.rawArgs === true;
5549
5575
  const resolveFn = (scope) => {
5550
5576
  let value;
5551
- if (scope.has(name20)) {
5552
- value = scope.get(name20);
5553
- } else if (name20 in math2) {
5554
- value = getSafeProperty(math2, name20);
5577
+ if (scope.has(name21)) {
5578
+ value = scope.get(name21);
5579
+ } else if (name21 in math2) {
5580
+ value = getSafeProperty(math2, name21);
5555
5581
  } else if (fromOptionalChaining) value = void 0;
5556
- else return FunctionNode.onUndefinedFunction(name20);
5582
+ else return FunctionNode.onUndefinedFunction(name21);
5557
5583
  if (typeof value === "function" || fromOptionalChaining && value === void 0) {
5558
5584
  return value;
5559
5585
  }
5560
- throw new TypeError(`'${name20}' is not a function; its value is:
5586
+ throw new TypeError(`'${name21}' is not a function; its value is:
5561
5587
  ${strin(value)}`);
5562
5588
  };
5563
5589
  if (isRaw) {
@@ -5606,11 +5632,11 @@ var createFunctionNode = /* @__PURE__ */ factory(
5606
5632
  } else {
5607
5633
  const rawArgs = this.args;
5608
5634
  return function evalFunctionNode(scope, args, context) {
5609
- const fn = getSafeProperty(args, name20);
5635
+ const fn = getSafeProperty(args, name21);
5610
5636
  if (fromOptionalChaining && fn === void 0) return void 0;
5611
5637
  if (typeof fn !== "function") {
5612
5638
  throw new TypeError(
5613
- `Argument '${name20}' was not a function; received: ${strin(fn)}`
5639
+ `Argument '${name21}' was not a function; received: ${strin(fn)}`
5614
5640
  );
5615
5641
  }
5616
5642
  if (fn.rawArgs) {
@@ -5695,8 +5721,8 @@ var createFunctionNode = /* @__PURE__ */ factory(
5695
5721
  * Throws an error 'Undefined function {name}'
5696
5722
  * @param {string} name
5697
5723
  */
5698
- static onUndefinedFunction = function(name20) {
5699
- throw new Error("Undefined function " + name20);
5724
+ static onUndefinedFunction = function(name21) {
5725
+ throw new Error("Undefined function " + name21);
5700
5726
  };
5701
5727
  /**
5702
5728
  * Get string representation. (wrapper function)
@@ -5712,9 +5738,9 @@ var createFunctionNode = /* @__PURE__ */ factory(
5712
5738
  */
5713
5739
  toString(options) {
5714
5740
  let customString;
5715
- const name20 = this.fn.toString(options);
5716
- if (options && typeof options.handler === "object" && hasOwnProperty(options.handler, name20)) {
5717
- customString = options.handler[name20](this, options);
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);
5718
5744
  }
5719
5745
  if (typeof customString !== "undefined") {
5720
5746
  return customString;
@@ -5739,7 +5765,7 @@ var createFunctionNode = /* @__PURE__ */ factory(
5739
5765
  */
5740
5766
  toJSON() {
5741
5767
  return {
5742
- mathjs: name12,
5768
+ mathjs: name13,
5743
5769
  fn: this.fn,
5744
5770
  args: this.args
5745
5771
  };
@@ -5839,11 +5865,11 @@ var createFunctionNode = /* @__PURE__ */ factory(
5839
5865
  );
5840
5866
 
5841
5867
  // src/node/IndexNode.ts
5842
- var name13 = "IndexNode";
5843
- var dependencies13 = ["Node", "size"];
5868
+ var name14 = "IndexNode";
5869
+ var dependencies14 = ["Node", "size"];
5844
5870
  var createIndexNode = /* @__PURE__ */ factory(
5845
- name13,
5846
- dependencies13,
5871
+ name14,
5872
+ dependencies14,
5847
5873
  ({ Node, size }) => {
5848
5874
  class IndexNode extends Node {
5849
5875
  dimensions;
@@ -5873,9 +5899,9 @@ var createIndexNode = /* @__PURE__ */ factory(
5873
5899
  throw new Error("dotNotation only applicable for object properties");
5874
5900
  }
5875
5901
  }
5876
- static name = name13;
5902
+ static name = name14;
5877
5903
  get type() {
5878
- return name13;
5904
+ return name14;
5879
5905
  }
5880
5906
  get isIndexNode() {
5881
5907
  return true;
@@ -5985,7 +6011,7 @@ var createIndexNode = /* @__PURE__ */ factory(
5985
6011
  */
5986
6012
  toJSON() {
5987
6013
  return {
5988
- mathjs: name13,
6014
+ mathjs: name14,
5989
6015
  dimensions: this.dimensions,
5990
6016
  dotNotation: this.dotNotation
5991
6017
  };
@@ -6035,11 +6061,11 @@ var createIndexNode = /* @__PURE__ */ factory(
6035
6061
  );
6036
6062
 
6037
6063
  // src/node/ObjectNode.ts
6038
- var name14 = "ObjectNode";
6039
- var dependencies14 = ["Node"];
6064
+ var name15 = "ObjectNode";
6065
+ var dependencies15 = ["Node"];
6040
6066
  var createObjectNode = /* @__PURE__ */ factory(
6041
- name14,
6042
- dependencies14,
6067
+ name15,
6068
+ dependencies15,
6043
6069
  ({ Node }) => {
6044
6070
  class ObjectNode extends Node {
6045
6071
  properties;
@@ -6060,9 +6086,9 @@ var createObjectNode = /* @__PURE__ */ factory(
6060
6086
  }
6061
6087
  }
6062
6088
  }
6063
- static name = name14;
6089
+ static name = name15;
6064
6090
  get type() {
6065
- return name14;
6091
+ return name15;
6066
6092
  }
6067
6093
  get isObjectNode() {
6068
6094
  return true;
@@ -6163,7 +6189,7 @@ var createObjectNode = /* @__PURE__ */ factory(
6163
6189
  */
6164
6190
  toJSON() {
6165
6191
  return {
6166
- mathjs: name14,
6192
+ mathjs: name15,
6167
6193
  properties: this.properties
6168
6194
  };
6169
6195
  }
@@ -6218,11 +6244,11 @@ var createObjectNode = /* @__PURE__ */ factory(
6218
6244
  );
6219
6245
 
6220
6246
  // src/node/OperatorNode.ts
6221
- var name15 = "OperatorNode";
6222
- var dependencies15 = ["Node"];
6247
+ var name16 = "OperatorNode";
6248
+ var dependencies16 = ["Node"];
6223
6249
  var createOperatorNode = /* @__PURE__ */ factory(
6224
- name15,
6225
- dependencies15,
6250
+ name16,
6251
+ dependencies16,
6226
6252
  ({ Node }) => {
6227
6253
  function startsWithConstant(expr, parenthesis) {
6228
6254
  let curNode = expr;
@@ -6414,9 +6440,9 @@ var createOperatorNode = /* @__PURE__ */ factory(
6414
6440
  this.fn = fn;
6415
6441
  this.args = args || [];
6416
6442
  }
6417
- static name = name15;
6443
+ static name = name16;
6418
6444
  get type() {
6419
- return name15;
6445
+ return name16;
6420
6446
  }
6421
6447
  get isOperatorNode() {
6422
6448
  return true;
@@ -6584,7 +6610,7 @@ var createOperatorNode = /* @__PURE__ */ factory(
6584
6610
  */
6585
6611
  toJSON() {
6586
6612
  return {
6587
- mathjs: name15,
6613
+ mathjs: name16,
6588
6614
  op: this.op,
6589
6615
  fn: this.fn,
6590
6616
  args: this.args,
@@ -6757,11 +6783,11 @@ var createOperatorNode = /* @__PURE__ */ factory(
6757
6783
  );
6758
6784
 
6759
6785
  // src/node/ParenthesisNode.ts
6760
- var name16 = "ParenthesisNode";
6761
- var dependencies16 = ["Node"];
6786
+ var name17 = "ParenthesisNode";
6787
+ var dependencies17 = ["Node"];
6762
6788
  var createParenthesisNode = /* @__PURE__ */ factory(
6763
- name16,
6764
- dependencies16,
6789
+ name17,
6790
+ dependencies17,
6765
6791
  ({ Node }) => {
6766
6792
  class ParenthesisNode extends Node {
6767
6793
  content;
@@ -6779,9 +6805,9 @@ var createParenthesisNode = /* @__PURE__ */ factory(
6779
6805
  }
6780
6806
  this.content = content;
6781
6807
  }
6782
- static name = name16;
6808
+ static name = name17;
6783
6809
  get type() {
6784
- return name16;
6810
+ return name17;
6785
6811
  }
6786
6812
  get isParenthesisNode() {
6787
6813
  return true;
@@ -6853,7 +6879,7 @@ var createParenthesisNode = /* @__PURE__ */ factory(
6853
6879
  * @returns {Object}
6854
6880
  */
6855
6881
  toJSON() {
6856
- return { mathjs: name16, content: this.content };
6882
+ return { mathjs: name17, content: this.content };
6857
6883
  }
6858
6884
  /**
6859
6885
  * Instantiate an ParenthesisNode from its JSON representation
@@ -6896,11 +6922,11 @@ var createParenthesisNode = /* @__PURE__ */ factory(
6896
6922
  );
6897
6923
 
6898
6924
  // src/node/RangeNode.ts
6899
- var name17 = "RangeNode";
6900
- var dependencies17 = ["Node"];
6925
+ var name18 = "RangeNode";
6926
+ var dependencies18 = ["Node"];
6901
6927
  var createRangeNode = /* @__PURE__ */ factory(
6902
- name17,
6903
- dependencies17,
6928
+ name18,
6929
+ dependencies18,
6904
6930
  ({ Node }) => {
6905
6931
  function calculateNecessaryParentheses(node, parenthesis, implicit) {
6906
6932
  const precedence = getPrecedence(node, parenthesis, implicit, void 0);
@@ -6937,9 +6963,9 @@ var createRangeNode = /* @__PURE__ */ factory(
6937
6963
  this.end = end;
6938
6964
  this.step = step || null;
6939
6965
  }
6940
- static name = name17;
6966
+ static name = name18;
6941
6967
  get type() {
6942
- return name17;
6968
+ return name18;
6943
6969
  }
6944
6970
  get isRangeNode() {
6945
6971
  return true;
@@ -7057,7 +7083,7 @@ var createRangeNode = /* @__PURE__ */ factory(
7057
7083
  */
7058
7084
  toJSON() {
7059
7085
  return {
7060
- mathjs: name17,
7086
+ mathjs: name18,
7061
7087
  start: this.start,
7062
7088
  end: this.end,
7063
7089
  step: this.step
@@ -7143,11 +7169,11 @@ var createRangeNode = /* @__PURE__ */ factory(
7143
7169
  );
7144
7170
 
7145
7171
  // src/node/RelationalNode.ts
7146
- var name18 = "RelationalNode";
7147
- var dependencies18 = ["Node"];
7172
+ var name19 = "RelationalNode";
7173
+ var dependencies19 = ["Node"];
7148
7174
  var createRelationalNode = /* @__PURE__ */ factory(
7149
- name18,
7150
- dependencies18,
7175
+ name19,
7176
+ dependencies19,
7151
7177
  ({ Node }) => {
7152
7178
  const operatorMap = {
7153
7179
  equal: "==",
@@ -7187,9 +7213,9 @@ var createRelationalNode = /* @__PURE__ */ factory(
7187
7213
  this.conditionals = conditionals;
7188
7214
  this.params = params;
7189
7215
  }
7190
- static name = name18;
7216
+ static name = name19;
7191
7217
  get type() {
7192
- return name18;
7218
+ return name19;
7193
7219
  }
7194
7220
  get isRelationalNode() {
7195
7221
  return true;
@@ -7289,7 +7315,7 @@ var createRelationalNode = /* @__PURE__ */ factory(
7289
7315
  */
7290
7316
  toJSON() {
7291
7317
  return {
7292
- mathjs: name18,
7318
+ mathjs: name19,
7293
7319
  conditionals: this.conditionals,
7294
7320
  params: this.params
7295
7321
  };
@@ -7368,14 +7394,14 @@ var createRelationalNode = /* @__PURE__ */ factory(
7368
7394
  );
7369
7395
 
7370
7396
  // src/node/SymbolNode.ts
7371
- var name19 = "SymbolNode";
7372
- var dependencies19 = ["math", "?Unit", "Node"];
7397
+ var name20 = "SymbolNode";
7398
+ var dependencies20 = ["math", "?Unit", "Node"];
7373
7399
  var createSymbolNode = /* @__PURE__ */ factory(
7374
- name19,
7375
- dependencies19,
7400
+ name20,
7401
+ dependencies20,
7376
7402
  ({ math, Unit, Node }) => {
7377
- function isValuelessUnit(name20) {
7378
- return Unit ? Unit.isValuelessUnit(name20) : false;
7403
+ function isValuelessUnit(name21) {
7404
+ return Unit ? Unit.isValuelessUnit(name21) : false;
7379
7405
  }
7380
7406
  class SymbolNode extends Node {
7381
7407
  name;
@@ -7386,12 +7412,12 @@ var createSymbolNode = /* @__PURE__ */ factory(
7386
7412
  * @param {string} name
7387
7413
  * @extends {Node}
7388
7414
  */
7389
- constructor(name20) {
7415
+ constructor(name21) {
7390
7416
  super();
7391
- if (typeof name20 !== "string") {
7417
+ if (typeof name21 !== "string") {
7392
7418
  throw new TypeError('String expected for parameter "name"');
7393
7419
  }
7394
- this.name = name20;
7420
+ this.name = name21;
7395
7421
  }
7396
7422
  get type() {
7397
7423
  return "SymbolNode";
@@ -7413,19 +7439,19 @@ var createSymbolNode = /* @__PURE__ */ factory(
7413
7439
  * evalNode(scope: Object, args: Object, context: *)
7414
7440
  */
7415
7441
  _compile(math2, argNames) {
7416
- const name20 = this.name;
7417
- if (argNames[name20] === true) {
7442
+ const name21 = this.name;
7443
+ if (argNames[name21] === true) {
7418
7444
  return function(scope, args, _context) {
7419
- return getSafeProperty(args, name20);
7445
+ return getSafeProperty(args, name21);
7420
7446
  };
7421
- } else if (name20 in math2) {
7447
+ } else if (name21 in math2) {
7422
7448
  return function(scope, _args, _context) {
7423
- return scope.has(name20) ? scope.get(name20) : getSafeProperty(math2, name20);
7449
+ return scope.has(name21) ? scope.get(name21) : getSafeProperty(math2, name21);
7424
7450
  };
7425
7451
  } else {
7426
- const isUnit2 = isValuelessUnit(name20);
7452
+ const isUnit2 = isValuelessUnit(name21);
7427
7453
  return function(scope, _args, _context) {
7428
- return scope.has(name20) ? scope.get(name20) : isUnit2 ? new Unit(null, name20) : SymbolNode.onUndefinedSymbol(name20);
7454
+ return scope.has(name21) ? scope.get(name21) : isUnit2 ? new Unit(null, name21) : SymbolNode.onUndefinedSymbol(name21);
7429
7455
  };
7430
7456
  }
7431
7457
  }
@@ -7448,8 +7474,8 @@ var createSymbolNode = /* @__PURE__ */ factory(
7448
7474
  * Throws an error 'Undefined symbol {name}'
7449
7475
  * @param {string} name
7450
7476
  */
7451
- static onUndefinedSymbol(name20) {
7452
- throw new Error("Undefined symbol " + name20);
7477
+ static onUndefinedSymbol(name21) {
7478
+ throw new Error("Undefined symbol " + name21);
7453
7479
  }
7454
7480
  /**
7455
7481
  * Create a clone of this node, a shallow copy
@@ -7475,21 +7501,21 @@ var createSymbolNode = /* @__PURE__ */ factory(
7475
7501
  * @override
7476
7502
  */
7477
7503
  _toHTML(_options) {
7478
- const name20 = escape(this.name);
7479
- if (name20 === "true" || name20 === "false") {
7480
- return '<span class="math-symbol math-boolean">' + name20 + "</span>";
7481
- } else if (name20 === "i") {
7482
- return '<span class="math-symbol math-imaginary-symbol">' + name20 + "</span>";
7483
- } else if (name20 === "Infinity") {
7484
- return '<span class="math-symbol math-infinity-symbol">' + name20 + "</span>";
7485
- } else if (name20 === "NaN") {
7486
- return '<span class="math-symbol math-nan-symbol">' + name20 + "</span>";
7487
- } else if (name20 === "null") {
7488
- return '<span class="math-symbol math-null-symbol">' + name20 + "</span>";
7489
- } else if (name20 === "undefined") {
7490
- return '<span class="math-symbol math-undefined-symbol">' + name20 + "</span>";
7491
- }
7492
- return '<span class="math-symbol">' + name20 + "</span>";
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>";
7493
7519
  }
7494
7520
  /**
7495
7521
  * Get a JSON representation of the node
@@ -7552,6 +7578,7 @@ export {
7552
7578
  createOperatorNode,
7553
7579
  createParenthesisNode,
7554
7580
  createParse,
7581
+ createParser,
7555
7582
  createParserClass,
7556
7583
  createRangeNode,
7557
7584
  createRelationalNode,