mathjs 11.3.0 → 11.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +17 -1
- package/README.md +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/expression/node/FunctionAssignmentNode.js +21 -0
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/unit/Unit.js +9 -14
- package/lib/cjs/utils/map.js +8 -6
- package/lib/cjs/version.js +1 -1
- package/lib/esm/expression/node/FunctionAssignmentNode.js +9 -0
- package/lib/esm/type/unit/Unit.js +9 -14
- package/lib/esm/version.js +1 -1
- package/package.json +12 -12
- package/types/index.d.ts +108 -49
- package/types/index.ts +0 -2330
- package/types/tsconfig.json +0 -23
@@ -18,6 +18,9 @@ var _array = require("../../utils/array.js");
|
|
18
18
|
var _latex = require("../../utils/latex.js");
|
19
19
|
var _operators = require("../operators.js");
|
20
20
|
var _factory = require("../../utils/factory.js");
|
21
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
23
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
21
24
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
22
25
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
23
26
|
var name = 'FunctionAssignmentNode';
|
@@ -69,6 +72,24 @@ var createFunctionAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, de
|
|
69
72
|
if (_keywords.keywords.has(name)) {
|
70
73
|
throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
|
71
74
|
}
|
75
|
+
var paramNames = new Set();
|
76
|
+
var _iterator = _createForOfIteratorHelper(params),
|
77
|
+
_step;
|
78
|
+
try {
|
79
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
80
|
+
var param = _step.value;
|
81
|
+
var _name = typeof param === 'string' ? param : param.name;
|
82
|
+
if (paramNames.has(_name)) {
|
83
|
+
throw new Error("Duplicate parameter name \"".concat(_name, "\""));
|
84
|
+
} else {
|
85
|
+
paramNames.add(_name);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
} catch (err) {
|
89
|
+
_iterator.e(err);
|
90
|
+
} finally {
|
91
|
+
_iterator.f();
|
92
|
+
}
|
72
93
|
_this.name = name;
|
73
94
|
_this.params = params.map(function (param) {
|
74
95
|
return param && param.name || param;
|
package/lib/cjs/header.js
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
* It features real and complex numbers, units, matrices, a large set of
|
7
7
|
* mathematical functions, and a flexible expression parser.
|
8
8
|
*
|
9
|
-
* @version 11.3.
|
10
|
-
* @date 2022-10-
|
9
|
+
* @version 11.3.2
|
10
|
+
* @date 2022-10-25
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
|
@@ -2753,56 +2753,56 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
2753
2753
|
K: {
|
2754
2754
|
name: 'K',
|
2755
2755
|
base: BASE_UNITS.TEMPERATURE,
|
2756
|
-
prefixes: PREFIXES.
|
2756
|
+
prefixes: PREFIXES.SHORT,
|
2757
2757
|
value: 1,
|
2758
2758
|
offset: 0
|
2759
2759
|
},
|
2760
2760
|
degC: {
|
2761
2761
|
name: 'degC',
|
2762
2762
|
base: BASE_UNITS.TEMPERATURE,
|
2763
|
-
prefixes: PREFIXES.
|
2763
|
+
prefixes: PREFIXES.SHORT,
|
2764
2764
|
value: 1,
|
2765
2765
|
offset: 273.15
|
2766
2766
|
},
|
2767
2767
|
degF: {
|
2768
2768
|
name: 'degF',
|
2769
2769
|
base: BASE_UNITS.TEMPERATURE,
|
2770
|
-
prefixes: PREFIXES.
|
2770
|
+
prefixes: PREFIXES.SHORT,
|
2771
2771
|
value: 1 / 1.8,
|
2772
2772
|
offset: 459.67
|
2773
2773
|
},
|
2774
2774
|
degR: {
|
2775
2775
|
name: 'degR',
|
2776
2776
|
base: BASE_UNITS.TEMPERATURE,
|
2777
|
-
prefixes: PREFIXES.
|
2777
|
+
prefixes: PREFIXES.SHORT,
|
2778
2778
|
value: 1 / 1.8,
|
2779
2779
|
offset: 0
|
2780
2780
|
},
|
2781
2781
|
kelvin: {
|
2782
2782
|
name: 'kelvin',
|
2783
2783
|
base: BASE_UNITS.TEMPERATURE,
|
2784
|
-
prefixes: PREFIXES.
|
2784
|
+
prefixes: PREFIXES.LONG,
|
2785
2785
|
value: 1,
|
2786
2786
|
offset: 0
|
2787
2787
|
},
|
2788
2788
|
celsius: {
|
2789
2789
|
name: 'celsius',
|
2790
2790
|
base: BASE_UNITS.TEMPERATURE,
|
2791
|
-
prefixes: PREFIXES.
|
2791
|
+
prefixes: PREFIXES.LONG,
|
2792
2792
|
value: 1,
|
2793
2793
|
offset: 273.15
|
2794
2794
|
},
|
2795
2795
|
fahrenheit: {
|
2796
2796
|
name: 'fahrenheit',
|
2797
2797
|
base: BASE_UNITS.TEMPERATURE,
|
2798
|
-
prefixes: PREFIXES.
|
2798
|
+
prefixes: PREFIXES.LONG,
|
2799
2799
|
value: 1 / 1.8,
|
2800
2800
|
offset: 459.67
|
2801
2801
|
},
|
2802
2802
|
rankine: {
|
2803
2803
|
name: 'rankine',
|
2804
2804
|
base: BASE_UNITS.TEMPERATURE,
|
2805
|
-
prefixes: PREFIXES.
|
2805
|
+
prefixes: PREFIXES.LONG,
|
2806
2806
|
value: 1 / 1.8,
|
2807
2807
|
offset: 0
|
2808
2808
|
},
|
@@ -3677,14 +3677,9 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
3677
3677
|
* base unit, the name of the newly create base unit. Otherwise, this property
|
3678
3678
|
* has no effect.
|
3679
3679
|
*
|
3680
|
-
* @param {Object} options (optional) An object containing any of the following
|
3681
|
-
* properties:
|
3682
|
-
* - override {boolean} Whether this unit should be allowed to override existing
|
3683
|
-
* units.
|
3684
|
-
*
|
3685
3680
|
* @return {Unit}
|
3686
3681
|
*/
|
3687
|
-
Unit.createUnitSingle = function (name, obj
|
3682
|
+
Unit.createUnitSingle = function (name, obj) {
|
3688
3683
|
if (typeof obj === 'undefined' || obj === null) {
|
3689
3684
|
obj = {};
|
3690
3685
|
}
|
package/lib/cjs/utils/map.js
CHANGED
@@ -24,7 +24,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
24
24
|
* forwarding on to the SafeProperty functions. Over time, the codebase
|
25
25
|
* will stop using this method, as all objects will be Maps, rather than
|
26
26
|
* more security prone objects.
|
27
|
-
*/
|
27
|
+
*/
|
28
|
+
var ObjectWrappingMap = /*#__PURE__*/function () {
|
28
29
|
function ObjectWrappingMap(object) {
|
29
30
|
(0, _classCallCheck2["default"])(this, ObjectWrappingMap);
|
30
31
|
this.wrappedObject = object;
|
@@ -52,11 +53,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
52
53
|
}
|
53
54
|
}]);
|
54
55
|
return ObjectWrappingMap;
|
55
|
-
}();
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
}();
|
57
|
+
/**
|
58
|
+
* Creates an empty map, or whatever your platform's polyfill is.
|
59
|
+
*
|
60
|
+
* @returns an empty Map or Map like object.
|
61
|
+
*/
|
60
62
|
exports.ObjectWrappingMap = ObjectWrappingMap;
|
61
63
|
function createEmptyMap() {
|
62
64
|
return new Map();
|
package/lib/cjs/version.js
CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = '11.3.
|
7
|
+
var version = '11.3.2';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
10
10
|
exports.version = version;
|
@@ -53,6 +53,15 @@ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependenc
|
|
53
53
|
if (keywords.has(name)) {
|
54
54
|
throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
|
55
55
|
}
|
56
|
+
var paramNames = new Set();
|
57
|
+
for (var param of params) {
|
58
|
+
var _name = typeof param === 'string' ? param : param.name;
|
59
|
+
if (paramNames.has(_name)) {
|
60
|
+
throw new Error("Duplicate parameter name \"".concat(_name, "\""));
|
61
|
+
} else {
|
62
|
+
paramNames.add(_name);
|
63
|
+
}
|
64
|
+
}
|
56
65
|
this.name = name;
|
57
66
|
this.params = params.map(function (param) {
|
58
67
|
return param && param.name || param;
|
@@ -2739,56 +2739,56 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
2739
2739
|
K: {
|
2740
2740
|
name: 'K',
|
2741
2741
|
base: BASE_UNITS.TEMPERATURE,
|
2742
|
-
prefixes: PREFIXES.
|
2742
|
+
prefixes: PREFIXES.SHORT,
|
2743
2743
|
value: 1,
|
2744
2744
|
offset: 0
|
2745
2745
|
},
|
2746
2746
|
degC: {
|
2747
2747
|
name: 'degC',
|
2748
2748
|
base: BASE_UNITS.TEMPERATURE,
|
2749
|
-
prefixes: PREFIXES.
|
2749
|
+
prefixes: PREFIXES.SHORT,
|
2750
2750
|
value: 1,
|
2751
2751
|
offset: 273.15
|
2752
2752
|
},
|
2753
2753
|
degF: {
|
2754
2754
|
name: 'degF',
|
2755
2755
|
base: BASE_UNITS.TEMPERATURE,
|
2756
|
-
prefixes: PREFIXES.
|
2756
|
+
prefixes: PREFIXES.SHORT,
|
2757
2757
|
value: 1 / 1.8,
|
2758
2758
|
offset: 459.67
|
2759
2759
|
},
|
2760
2760
|
degR: {
|
2761
2761
|
name: 'degR',
|
2762
2762
|
base: BASE_UNITS.TEMPERATURE,
|
2763
|
-
prefixes: PREFIXES.
|
2763
|
+
prefixes: PREFIXES.SHORT,
|
2764
2764
|
value: 1 / 1.8,
|
2765
2765
|
offset: 0
|
2766
2766
|
},
|
2767
2767
|
kelvin: {
|
2768
2768
|
name: 'kelvin',
|
2769
2769
|
base: BASE_UNITS.TEMPERATURE,
|
2770
|
-
prefixes: PREFIXES.
|
2770
|
+
prefixes: PREFIXES.LONG,
|
2771
2771
|
value: 1,
|
2772
2772
|
offset: 0
|
2773
2773
|
},
|
2774
2774
|
celsius: {
|
2775
2775
|
name: 'celsius',
|
2776
2776
|
base: BASE_UNITS.TEMPERATURE,
|
2777
|
-
prefixes: PREFIXES.
|
2777
|
+
prefixes: PREFIXES.LONG,
|
2778
2778
|
value: 1,
|
2779
2779
|
offset: 273.15
|
2780
2780
|
},
|
2781
2781
|
fahrenheit: {
|
2782
2782
|
name: 'fahrenheit',
|
2783
2783
|
base: BASE_UNITS.TEMPERATURE,
|
2784
|
-
prefixes: PREFIXES.
|
2784
|
+
prefixes: PREFIXES.LONG,
|
2785
2785
|
value: 1 / 1.8,
|
2786
2786
|
offset: 459.67
|
2787
2787
|
},
|
2788
2788
|
rankine: {
|
2789
2789
|
name: 'rankine',
|
2790
2790
|
base: BASE_UNITS.TEMPERATURE,
|
2791
|
-
prefixes: PREFIXES.
|
2791
|
+
prefixes: PREFIXES.LONG,
|
2792
2792
|
value: 1 / 1.8,
|
2793
2793
|
offset: 0
|
2794
2794
|
},
|
@@ -3663,14 +3663,9 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
3663
3663
|
* base unit, the name of the newly create base unit. Otherwise, this property
|
3664
3664
|
* has no effect.
|
3665
3665
|
*
|
3666
|
-
* @param {Object} options (optional) An object containing any of the following
|
3667
|
-
* properties:
|
3668
|
-
* - override {boolean} Whether this unit should be allowed to override existing
|
3669
|
-
* units.
|
3670
|
-
*
|
3671
3666
|
* @return {Unit}
|
3672
3667
|
*/
|
3673
|
-
Unit.createUnitSingle = function (name, obj
|
3668
|
+
Unit.createUnitSingle = function (name, obj) {
|
3674
3669
|
if (typeof obj === 'undefined' || obj === null) {
|
3675
3670
|
obj = {};
|
3676
3671
|
}
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "11.3.
|
3
|
+
"version": "11.3.2",
|
4
4
|
"description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
|
5
5
|
"author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
|
6
6
|
"homepage": "https://mathjs.org",
|
@@ -27,7 +27,7 @@
|
|
27
27
|
"dependencies": {
|
28
28
|
"@babel/runtime": "^7.19.4",
|
29
29
|
"complex.js": "^2.1.1",
|
30
|
-
"decimal.js": "^10.4.
|
30
|
+
"decimal.js": "^10.4.2",
|
31
31
|
"escape-latex": "^1.2.0",
|
32
32
|
"fraction.js": "^4.2.0",
|
33
33
|
"javascript-natural-sort": "^0.7.1",
|
@@ -36,31 +36,31 @@
|
|
36
36
|
"typed-function": "^4.1.0"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
|
-
"@babel/core": "7.19.
|
39
|
+
"@babel/core": "7.19.6",
|
40
40
|
"@babel/plugin-transform-object-assign": "7.18.6",
|
41
|
-
"@babel/plugin-transform-runtime": "7.19.
|
41
|
+
"@babel/plugin-transform-runtime": "7.19.6",
|
42
42
|
"@babel/preset-env": "7.19.4",
|
43
43
|
"@babel/register": "7.18.9",
|
44
44
|
"@types/assert": "1.5.6",
|
45
45
|
"@types/mocha": "10.0.0",
|
46
|
-
"@typescript-eslint/eslint-plugin": "5.
|
47
|
-
"@typescript-eslint/parser": "5.
|
46
|
+
"@typescript-eslint/eslint-plugin": "5.41.0",
|
47
|
+
"@typescript-eslint/parser": "5.41.0",
|
48
48
|
"assert": "2.0.0",
|
49
49
|
"babel-loader": "8.2.5",
|
50
50
|
"benchmark": "2.1.4",
|
51
51
|
"codecov": "3.8.3",
|
52
|
-
"core-js": "3.
|
52
|
+
"core-js": "3.26.0",
|
53
53
|
"del": "6.1.1",
|
54
54
|
"dtslint": "4.2.1",
|
55
|
-
"eslint": "8.
|
55
|
+
"eslint": "8.26.0",
|
56
56
|
"eslint-config-prettier": "8.5.0",
|
57
57
|
"eslint-config-standard": "17.0.0",
|
58
58
|
"eslint-plugin-import": "2.26.0",
|
59
59
|
"eslint-plugin-mocha": "10.1.0",
|
60
60
|
"eslint-plugin-n": "15.3.0",
|
61
61
|
"eslint-plugin-prettier": "4.2.1",
|
62
|
-
"eslint-plugin-promise": "6.
|
63
|
-
"expect-type": "0.
|
62
|
+
"eslint-plugin-promise": "6.1.1",
|
63
|
+
"expect-type": "0.15.0",
|
64
64
|
"expr-eval": "2.0.2",
|
65
65
|
"fancy-log": "2.0.0",
|
66
66
|
"glob": "8.0.3",
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"karma-webpack": "5.0.0",
|
78
78
|
"math-expression-evaluator": "1.4.0",
|
79
79
|
"mkdirp": "1.0.4",
|
80
|
-
"mocha": "10.
|
80
|
+
"mocha": "10.1.0",
|
81
81
|
"mocha-junit-reporter": "2.1.0",
|
82
82
|
"ndarray": "1.0.19",
|
83
83
|
"ndarray-determinant": "1.0.0",
|
@@ -162,7 +162,7 @@
|
|
162
162
|
"test:all": "npm run test:src && npm run test:generated && npm run test:node && npm run test:types",
|
163
163
|
"test:browser": "karma start test/browser-test-config/local-karma.js",
|
164
164
|
"test:browserstack": "karma start test/browser-test-config/browserstack-karma.js",
|
165
|
-
"test:types": "
|
165
|
+
"test:types": " tsc -p ./tsconfig.json && node --loader ts-node/esm ./test/typescript-tests/testTypes.ts",
|
166
166
|
"coverage": "nyc --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
|
167
167
|
"prepublishOnly": "npm run test:all && npm run lint",
|
168
168
|
"update-authors": "node ./tools/update-authors.js"
|
package/types/index.d.ts
CHANGED
@@ -165,119 +165,159 @@ declare namespace math {
|
|
165
165
|
new (): MathNode
|
166
166
|
}
|
167
167
|
|
168
|
-
interface AccessorNode extends MathNode {
|
168
|
+
interface AccessorNode<TObject extends MathNode = MathNode> extends MathNode {
|
169
169
|
type: 'AccessorNode'
|
170
170
|
isAccessorNode: true
|
171
|
-
object:
|
171
|
+
object: TObject
|
172
172
|
index: IndexNode
|
173
173
|
name: string
|
174
174
|
}
|
175
175
|
interface AccessorNodeCtor {
|
176
|
-
new
|
176
|
+
new <TObject extends MathNode = MathNode>(
|
177
|
+
object: TObject,
|
178
|
+
index: IndexNode
|
179
|
+
): AccessorNode<TObject>
|
177
180
|
}
|
178
181
|
|
179
|
-
interface ArrayNode extends MathNode {
|
182
|
+
interface ArrayNode<TItems extends MathNode[] = MathNode[]> extends MathNode {
|
180
183
|
type: 'ArrayNode'
|
181
184
|
isArrayNode: true
|
182
|
-
items:
|
185
|
+
items: TItems
|
183
186
|
}
|
184
187
|
interface ArrayNodeCtor {
|
185
|
-
new
|
188
|
+
new <TItems extends MathNode[] = MathNode[]>(
|
189
|
+
items: MathNode[]
|
190
|
+
): ArrayNode<TItems>
|
186
191
|
}
|
187
192
|
|
188
|
-
interface AssignmentNode extends MathNode
|
193
|
+
interface AssignmentNode<TValue extends MathNode = MathNode>
|
194
|
+
extends MathNode {
|
189
195
|
type: 'AssignmentNode'
|
190
196
|
isAssignmentNode: true
|
191
197
|
object: SymbolNode | AccessorNode
|
192
198
|
index: IndexNode | null
|
193
|
-
value:
|
199
|
+
value: TValue
|
194
200
|
name: string
|
195
201
|
}
|
196
202
|
interface AssignmentNodeCtor {
|
197
|
-
new
|
198
|
-
|
203
|
+
new <TValue extends MathNode = MathNode>(
|
204
|
+
object: SymbolNode,
|
205
|
+
value: TValue
|
206
|
+
): AssignmentNode<TValue>
|
207
|
+
new <TValue extends MathNode = MathNode>(
|
199
208
|
object: SymbolNode | AccessorNode,
|
200
209
|
index: IndexNode,
|
201
|
-
value:
|
202
|
-
): AssignmentNode
|
210
|
+
value: TValue
|
211
|
+
): AssignmentNode<TValue>
|
203
212
|
}
|
204
213
|
|
205
|
-
interface BlockNode extends MathNode {
|
214
|
+
interface BlockNode<TNode extends MathNode = MathNode> extends MathNode {
|
206
215
|
type: 'BlockNode'
|
207
216
|
isBlockNode: true
|
208
|
-
blocks: Array<{ node:
|
217
|
+
blocks: Array<{ node: TNode; visible: boolean }>
|
209
218
|
}
|
210
219
|
interface BlockNodeCtor {
|
211
|
-
new (
|
212
|
-
arr: Array<{ node:
|
220
|
+
new <TNode extends MathNode = MathNode>(
|
221
|
+
arr: Array<{ node: TNode } | { node: TNode; visible: boolean }>
|
213
222
|
): BlockNode
|
214
223
|
}
|
215
224
|
|
216
|
-
interface ConditionalNode
|
225
|
+
interface ConditionalNode<
|
226
|
+
TCond extends MathNode = MathNode,
|
227
|
+
TTrueNode extends MathNode = MathNode,
|
228
|
+
TFalseNode extends MathNode = MathNode
|
229
|
+
> extends MathNode {
|
217
230
|
type: 'ConditionalNode'
|
218
231
|
isConditionalNode: boolean
|
219
|
-
condition:
|
220
|
-
trueExpr:
|
221
|
-
falseExpr:
|
232
|
+
condition: TCond
|
233
|
+
trueExpr: TTrueNode
|
234
|
+
falseExpr: TFalseNode
|
222
235
|
}
|
223
236
|
interface ConditionalNodeCtor {
|
224
|
-
new
|
225
|
-
|
226
|
-
|
227
|
-
|
237
|
+
new <
|
238
|
+
TCond extends MathNode = MathNode,
|
239
|
+
TTrueNode extends MathNode = MathNode,
|
240
|
+
TFalseNode extends MathNode = MathNode
|
241
|
+
>(
|
242
|
+
condition: TCond,
|
243
|
+
trueExpr: TTrueNode,
|
244
|
+
falseExpr: TFalseNode
|
228
245
|
): ConditionalNode
|
229
246
|
}
|
230
247
|
|
231
|
-
interface ConstantNode extends
|
248
|
+
interface ConstantNode<TValue extends string | number = number>
|
249
|
+
extends MathNode {
|
232
250
|
type: 'ConstantNode'
|
233
251
|
isConstantNode: true
|
234
252
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
235
|
-
value:
|
253
|
+
value: TValue
|
236
254
|
}
|
237
255
|
|
238
256
|
interface ConstantNodeCtor {
|
239
|
-
new
|
257
|
+
new <TValue extends string | number = string>(
|
258
|
+
value: TValue
|
259
|
+
): ConstantNode<TValue>
|
240
260
|
}
|
241
261
|
|
242
|
-
interface FunctionAssignmentNode extends MathNode
|
262
|
+
interface FunctionAssignmentNode<TExpr extends MathNode = MathNode>
|
263
|
+
extends MathNode {
|
243
264
|
type: 'FunctionAssignmentNode'
|
244
265
|
isFunctionAssignmentNode: true
|
245
266
|
name: string
|
246
267
|
params: string[]
|
247
|
-
expr:
|
268
|
+
expr: TExpr
|
248
269
|
}
|
249
270
|
interface FunctionAssignmentNodeCtor {
|
250
|
-
new
|
271
|
+
new <TExpr extends MathNode = MathNode>(
|
272
|
+
name: string,
|
273
|
+
params: string[],
|
274
|
+
expr: TExpr
|
275
|
+
): FunctionAssignmentNode<TExpr>
|
251
276
|
}
|
252
277
|
|
253
|
-
interface FunctionNode
|
278
|
+
interface FunctionNode<
|
279
|
+
TFn = SymbolNode,
|
280
|
+
TArgs extends MathNode[] = MathNode[]
|
281
|
+
> extends MathNode {
|
254
282
|
type: 'FunctionNode'
|
255
283
|
isFunctionNode: true
|
256
|
-
fn:
|
257
|
-
args:
|
284
|
+
fn: TFn
|
285
|
+
args: TArgs
|
258
286
|
}
|
259
287
|
interface FunctionNodeCtor {
|
260
|
-
new
|
288
|
+
new <TFn = SymbolNode, TArgs extends MathNode[] = MathNode[]>(
|
289
|
+
fn: TFn,
|
290
|
+
args: SymbolNode
|
291
|
+
): FunctionNode<TransferFunction, TArgs>
|
292
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
293
|
+
onUndefinedFunction: (name: string) => any
|
261
294
|
}
|
262
295
|
|
263
|
-
interface IndexNode extends MathNode {
|
296
|
+
interface IndexNode<TDims extends MathNode[] = MathNode[]> extends MathNode {
|
264
297
|
type: 'IndexNode'
|
265
298
|
isIndexNode: true
|
266
|
-
dimensions:
|
299
|
+
dimensions: TDims
|
267
300
|
dotNotation: boolean
|
268
301
|
}
|
269
302
|
interface IndexNodeCtor {
|
270
|
-
new (dimensions:
|
271
|
-
new
|
303
|
+
new <TDims extends MathNode[] = MathNode[]>(dimensions: TDims): IndexNode
|
304
|
+
new <TDims extends MathNode[] = MathNode[]>(
|
305
|
+
dimensions: TDims,
|
306
|
+
dotNotation: boolean
|
307
|
+
): IndexNode<TDims>
|
272
308
|
}
|
273
309
|
|
274
|
-
interface ObjectNode
|
310
|
+
interface ObjectNode<
|
311
|
+
TProps extends Record<string, MathNode> = Record<string, MathNode>
|
312
|
+
> extends MathNode {
|
275
313
|
type: 'ObjectNode'
|
276
314
|
isObjectNode: true
|
277
|
-
properties:
|
315
|
+
properties: TProps
|
278
316
|
}
|
279
317
|
interface ObjectNodeCtor {
|
280
|
-
new
|
318
|
+
new <TProps extends Record<string, MathNode> = Record<string, MathNode>>(
|
319
|
+
properties: TProps
|
320
|
+
): ObjectNode<TProps>
|
281
321
|
}
|
282
322
|
|
283
323
|
type OperatorNodeMap = {
|
@@ -355,25 +395,41 @@ declare namespace math {
|
|
355
395
|
): ParenthesisNode<TContent>
|
356
396
|
}
|
357
397
|
|
358
|
-
interface RangeNode
|
398
|
+
interface RangeNode<
|
399
|
+
TStart extends MathNode = MathNode,
|
400
|
+
TEnd extends MathNode = MathNode,
|
401
|
+
TStep extends MathNode = MathNode
|
402
|
+
> extends MathNode {
|
359
403
|
type: 'RangeNode'
|
360
404
|
isRangeNode: true
|
361
|
-
start:
|
362
|
-
end:
|
363
|
-
step:
|
405
|
+
start: TStart
|
406
|
+
end: TEnd
|
407
|
+
step: TStep | null
|
364
408
|
}
|
365
409
|
interface RangeNodeCtor {
|
366
|
-
new
|
410
|
+
new <
|
411
|
+
TStart extends MathNode = MathNode,
|
412
|
+
TEnd extends MathNode = MathNode,
|
413
|
+
TStep extends MathNode = MathNode
|
414
|
+
>(
|
415
|
+
start: TStart,
|
416
|
+
end: TEnd,
|
417
|
+
step?: TStep
|
418
|
+
): RangeNode<TStart, TEnd, TStep>
|
367
419
|
}
|
368
420
|
|
369
|
-
interface RelationalNode extends MathNode
|
421
|
+
interface RelationalNode<TParams extends MathNode[] = MathNode[]>
|
422
|
+
extends MathNode {
|
370
423
|
type: 'RelationalNode'
|
371
424
|
isRelationalNode: true
|
372
425
|
conditionals: string[]
|
373
|
-
params:
|
426
|
+
params: TParams
|
374
427
|
}
|
375
428
|
interface RelationalNodeCtor {
|
376
|
-
new
|
429
|
+
new <TParams extends MathNode[] = MathNode[]>(
|
430
|
+
conditionals: string[],
|
431
|
+
params: TParams
|
432
|
+
): RelationalNode<TParams>
|
377
433
|
}
|
378
434
|
|
379
435
|
interface SymbolNode extends MathNode {
|
@@ -383,6 +439,8 @@ declare namespace math {
|
|
383
439
|
}
|
384
440
|
interface SymbolNodeCtor {
|
385
441
|
new (name: string): SymbolNode
|
442
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
443
|
+
onUndefinedSymbol: (name: string) => any
|
386
444
|
}
|
387
445
|
|
388
446
|
/**
|
@@ -3840,6 +3898,7 @@ declare namespace math {
|
|
3840
3898
|
prefixes?: string
|
3841
3899
|
offset?: number
|
3842
3900
|
aliases?: string[]
|
3901
|
+
baseName?: string
|
3843
3902
|
}
|
3844
3903
|
|
3845
3904
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|