mathjs 13.0.0 → 13.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -606,7 +606,7 @@ function createComplexEigs(_ref) {
606
606
  b = randomOrthogonalVector(N, orthog, type);
607
607
  try {
608
608
  b = usolve(A, b);
609
- } catch {
609
+ } catch (_unused) {
610
610
  // That direction didn't work, likely because the original matrix
611
611
  // was defective. But still make the full number of tries...
612
612
  continue;
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 13.0.0
10
- * @date 2024-05-31
9
+ * @version 13.0.2
10
+ * @date 2024-07-04
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
@@ -345,7 +345,7 @@ const createDenseMatrixClass = exports.createDenseMatrixClass = /* #__PURE__ */(
345
345
  submatrix = (0, _array.broadcastTo)(submatrix, iSize);
346
346
  }
347
347
  sSize = (0, _array.arraySize)(submatrix);
348
- } catch {}
348
+ } catch (_unused) {}
349
349
  }
350
350
 
351
351
  // validate dimensions
@@ -3,73 +3,43 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createBroadcast = void 0;
6
+ exports.broadcast = broadcast;
7
7
  var _array = require("../../../utils/array.js");
8
- var _factory = require("../../../utils/factory.js");
9
- const name = 'broadcast';
10
- const dependancies = ['concat'];
11
- const createBroadcast = exports.createBroadcast = /* #__PURE__ */(0, _factory.factory)(name, dependancies, _ref => {
12
- let {
13
- concat
14
- } = _ref;
15
- /**
16
- * Broadcasts two matrices, and return both in an array
17
- * It checks if it's possible with broadcasting rules
18
- *
19
- * @param {Matrix} A First Matrix
20
- * @param {Matrix} B Second Matrix
21
- *
22
- * @return {Matrix[]} [ broadcastedA, broadcastedB ]
23
- */
24
- return function (A, B) {
25
- const N = Math.max(A._size.length, B._size.length); // max number of dims
26
- if (A._size.length === B._size.length) {
27
- if (A._size.every((dim, i) => dim === B._size[i])) {
28
- // If matrices have the same size return them
29
- return [A, B];
30
- }
31
- }
32
- const sizeA = _padLeft(A._size, N, 0); // pad to the left to align dimensions to the right
33
- const sizeB = _padLeft(B._size, N, 0); // pad to the left to align dimensions to the right
8
+ var _object = require("../../../utils/object.js");
9
+ /**
10
+ * Broadcasts two matrices, and return both in an array
11
+ * It checks if it's possible with broadcasting rules
12
+ *
13
+ * @param {Matrix} A First Matrix
14
+ * @param {Matrix} B Second Matrix
15
+ *
16
+ * @return {Matrix[]} [ broadcastedA, broadcastedB ]
17
+ */
34
18
 
35
- // calculate the max dimensions
36
- const sizeMax = [];
37
- for (let dim = 0; dim < N; dim++) {
38
- sizeMax[dim] = Math.max(sizeA[dim], sizeB[dim]);
39
- }
40
-
41
- // check if the broadcasting rules applyes for both matrices
42
- (0, _array.checkBroadcastingRules)(sizeA, sizeMax);
43
- (0, _array.checkBroadcastingRules)(sizeB, sizeMax);
19
+ function broadcast(A, B) {
20
+ if ((0, _object.deepStrictEqual)(A.size(), B.size())) {
21
+ // If matrices have the same size return them
22
+ return [A, B];
23
+ }
44
24
 
45
- // reshape A or B if needed to make them ready for concat
46
- let AA = A.clone();
47
- let BB = B.clone();
48
- if (AA._size.length < N) {
49
- AA.reshape(_padLeft(AA._size, N, 1));
50
- } else if (BB._size.length < N) {
51
- BB.reshape(_padLeft(BB._size, N, 1));
52
- }
25
+ // calculate the broadcasted sizes
26
+ const newSize = (0, _array.broadcastSizes)(A.size(), B.size());
53
27
 
54
- // stretches the matrices on each dimension to make them the same size
55
- for (let dim = 0; dim < N; dim++) {
56
- if (AA._size[dim] < sizeMax[dim]) {
57
- AA = _stretch(AA, sizeMax[dim], dim);
58
- }
59
- if (BB._size[dim] < sizeMax[dim]) {
60
- BB = _stretch(BB, sizeMax[dim], dim);
61
- }
62
- }
28
+ // return the array with the two broadcasted matrices
29
+ return [A, B].map(M => _broadcastTo(M, newSize));
30
+ }
63
31
 
64
- // return the array with the two broadcasted matrices
65
- return [AA, BB];
66
- };
67
- function _padLeft(shape, N, filler) {
68
- // pads an array of dimensions with numbers to the left, unitl the number of dimensions is N
69
- return [...Array(N - shape.length).fill(filler), ...shape];
70
- }
71
- function _stretch(arrayToStretch, sizeToStretch, dimToStretch) {
72
- // stretches a matrix up to a certain size in a certain dimension
73
- return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);
32
+ /**
33
+ * Broadcasts a matrix to the given size.
34
+ *
35
+ * @param {Matrix} M - The matrix to be broadcasted.
36
+ * @param {number[]} size - The desired size of the broadcasted matrix.
37
+ * @returns {Matrix} The broadcasted matrix.
38
+ * @throws {Error} If the size parameter is not an array of numbers.
39
+ */
40
+ function _broadcastTo(M, size) {
41
+ if ((0, _object.deepStrictEqual)(M.size(), size)) {
42
+ return M;
74
43
  }
75
- });
44
+ return M.create((0, _array.broadcastTo)(M.valueOf(), size), M.datatype());
45
+ }
@@ -10,12 +10,11 @@ var _matAlgo13xDD = require("./matAlgo13xDD.js");
10
10
  var _matAlgo14xDs = require("./matAlgo14xDs.js");
11
11
  var _broadcast = require("./broadcast.js");
12
12
  const name = 'matrixAlgorithmSuite';
13
- const dependencies = ['typed', 'matrix', 'concat'];
13
+ const dependencies = ['typed', 'matrix'];
14
14
  const createMatrixAlgorithmSuite = exports.createMatrixAlgorithmSuite = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
15
15
  let {
16
16
  typed,
17
- matrix,
18
- concat
17
+ matrix
19
18
  } = _ref;
20
19
  const matAlgo13xDD = (0, _matAlgo13xDD.createMatAlgo13xDD)({
21
20
  typed
@@ -23,9 +22,6 @@ const createMatrixAlgorithmSuite = exports.createMatrixAlgorithmSuite = /* #__PU
23
22
  const matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
24
23
  typed
25
24
  });
26
- const broadcast = (0, _broadcast.createBroadcast)({
27
- concat
28
- });
29
25
 
30
26
  /**
31
27
  * Return a signatures object with the usual boilerplate of
@@ -51,60 +47,60 @@ const createMatrixAlgorithmSuite = exports.createMatrixAlgorithmSuite = /* #__PU
51
47
  if (elop) {
52
48
  // First the dense ones
53
49
  matrixSignatures = {
54
- 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(x, y), elop),
55
- 'Array, Array': (x, y) => matAlgo13xDD(...broadcast(matrix(x), matrix(y)), elop).valueOf(),
56
- 'Array, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(matrix(x), y), elop),
57
- 'DenseMatrix, Array': (x, y) => matAlgo13xDD(...broadcast(x, matrix(y)), elop)
50
+ 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(...(0, _broadcast.broadcast)(x, y), elop),
51
+ 'Array, Array': (x, y) => matAlgo13xDD(...(0, _broadcast.broadcast)(matrix(x), matrix(y)), elop).valueOf(),
52
+ 'Array, DenseMatrix': (x, y) => matAlgo13xDD(...(0, _broadcast.broadcast)(matrix(x), y), elop),
53
+ 'DenseMatrix, Array': (x, y) => matAlgo13xDD(...(0, _broadcast.broadcast)(x, matrix(y)), elop)
58
54
  };
59
55
  // Now incorporate sparse matrices
60
56
  if (options.SS) {
61
- matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(...broadcast(x, y), elop, false);
57
+ matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(...(0, _broadcast.broadcast)(x, y), elop, false);
62
58
  }
63
59
  if (options.DS) {
64
- matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(...broadcast(x, y), elop, false);
65
- matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(...broadcast(matrix(x), y), elop, false);
60
+ matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(...(0, _broadcast.broadcast)(x, y), elop, false);
61
+ matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(...(0, _broadcast.broadcast)(matrix(x), y), elop, false);
66
62
  }
67
63
  if (SD) {
68
- matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(...broadcast(y, x), elop, true);
69
- matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(...broadcast(matrix(y), x), elop, true);
64
+ matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(...(0, _broadcast.broadcast)(y, x), elop, true);
65
+ matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(...(0, _broadcast.broadcast)(matrix(y), x), elop, true);
70
66
  }
71
67
  } else {
72
68
  // No elop, use this
73
69
  // First the dense ones
74
70
  matrixSignatures = {
75
71
  'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => {
76
- return matAlgo13xDD(...broadcast(x, y), self);
72
+ return matAlgo13xDD(...(0, _broadcast.broadcast)(x, y), self);
77
73
  }),
78
74
  'Array, Array': typed.referToSelf(self => (x, y) => {
79
- return matAlgo13xDD(...broadcast(matrix(x), matrix(y)), self).valueOf();
75
+ return matAlgo13xDD(...(0, _broadcast.broadcast)(matrix(x), matrix(y)), self).valueOf();
80
76
  }),
81
77
  'Array, DenseMatrix': typed.referToSelf(self => (x, y) => {
82
- return matAlgo13xDD(...broadcast(matrix(x), y), self);
78
+ return matAlgo13xDD(...(0, _broadcast.broadcast)(matrix(x), y), self);
83
79
  }),
84
80
  'DenseMatrix, Array': typed.referToSelf(self => (x, y) => {
85
- return matAlgo13xDD(...broadcast(x, matrix(y)), self);
81
+ return matAlgo13xDD(...(0, _broadcast.broadcast)(x, matrix(y)), self);
86
82
  })
87
83
  };
88
84
  // Now incorporate sparse matrices
89
85
  if (options.SS) {
90
86
  matrixSignatures['SparseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
91
- return options.SS(...broadcast(x, y), self, false);
87
+ return options.SS(...(0, _broadcast.broadcast)(x, y), self, false);
92
88
  });
93
89
  }
94
90
  if (options.DS) {
95
91
  matrixSignatures['DenseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
96
- return options.DS(...broadcast(x, y), self, false);
92
+ return options.DS(...(0, _broadcast.broadcast)(x, y), self, false);
97
93
  });
98
94
  matrixSignatures['Array, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
99
- return options.DS(...broadcast(matrix(x), y), self, false);
95
+ return options.DS(...(0, _broadcast.broadcast)(matrix(x), y), self, false);
100
96
  });
101
97
  }
102
98
  if (SD) {
103
99
  matrixSignatures['SparseMatrix, DenseMatrix'] = typed.referToSelf(self => (x, y) => {
104
- return SD(...broadcast(y, x), self, true);
100
+ return SD(...(0, _broadcast.broadcast)(y, x), self, true);
105
101
  });
106
102
  matrixSignatures['SparseMatrix, Array'] = typed.referToSelf(self => (x, y) => {
107
- return SD(...broadcast(matrix(y), x), self, true);
103
+ return SD(...(0, _broadcast.broadcast)(matrix(y), x), self, true);
108
104
  });
109
105
  }
110
106
  }
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = exports.version = '13.0.0';
7
+ const version = exports.version = '13.0.2';
8
8
  // Note: This file is automatically generated when building math.js.
9
9
  // Changes made in this file will be overwritten.
@@ -1,69 +1,40 @@
1
- import { checkBroadcastingRules } from '../../../utils/array.js';
2
- import { factory } from '../../../utils/factory.js';
3
- var name = 'broadcast';
4
- var dependancies = ['concat'];
5
- export var createBroadcast = /* #__PURE__ */factory(name, dependancies, _ref => {
6
- var {
7
- concat
8
- } = _ref;
9
- /**
10
- * Broadcasts two matrices, and return both in an array
11
- * It checks if it's possible with broadcasting rules
12
- *
13
- * @param {Matrix} A First Matrix
14
- * @param {Matrix} B Second Matrix
15
- *
16
- * @return {Matrix[]} [ broadcastedA, broadcastedB ]
17
- */
18
- return function (A, B) {
19
- var N = Math.max(A._size.length, B._size.length); // max number of dims
20
- if (A._size.length === B._size.length) {
21
- if (A._size.every((dim, i) => dim === B._size[i])) {
22
- // If matrices have the same size return them
23
- return [A, B];
24
- }
25
- }
26
- var sizeA = _padLeft(A._size, N, 0); // pad to the left to align dimensions to the right
27
- var sizeB = _padLeft(B._size, N, 0); // pad to the left to align dimensions to the right
1
+ import { broadcastSizes, broadcastTo } from '../../../utils/array.js';
2
+ import { deepStrictEqual } from '../../../utils/object.js';
28
3
 
29
- // calculate the max dimensions
30
- var sizeMax = [];
31
- for (var dim = 0; dim < N; dim++) {
32
- sizeMax[dim] = Math.max(sizeA[dim], sizeB[dim]);
33
- }
4
+ /**
5
+ * Broadcasts two matrices, and return both in an array
6
+ * It checks if it's possible with broadcasting rules
7
+ *
8
+ * @param {Matrix} A First Matrix
9
+ * @param {Matrix} B Second Matrix
10
+ *
11
+ * @return {Matrix[]} [ broadcastedA, broadcastedB ]
12
+ */
34
13
 
35
- // check if the broadcasting rules applyes for both matrices
36
- checkBroadcastingRules(sizeA, sizeMax);
37
- checkBroadcastingRules(sizeB, sizeMax);
14
+ export function broadcast(A, B) {
15
+ if (deepStrictEqual(A.size(), B.size())) {
16
+ // If matrices have the same size return them
17
+ return [A, B];
18
+ }
38
19
 
39
- // reshape A or B if needed to make them ready for concat
40
- var AA = A.clone();
41
- var BB = B.clone();
42
- if (AA._size.length < N) {
43
- AA.reshape(_padLeft(AA._size, N, 1));
44
- } else if (BB._size.length < N) {
45
- BB.reshape(_padLeft(BB._size, N, 1));
46
- }
20
+ // calculate the broadcasted sizes
21
+ var newSize = broadcastSizes(A.size(), B.size());
47
22
 
48
- // stretches the matrices on each dimension to make them the same size
49
- for (var _dim = 0; _dim < N; _dim++) {
50
- if (AA._size[_dim] < sizeMax[_dim]) {
51
- AA = _stretch(AA, sizeMax[_dim], _dim);
52
- }
53
- if (BB._size[_dim] < sizeMax[_dim]) {
54
- BB = _stretch(BB, sizeMax[_dim], _dim);
55
- }
56
- }
23
+ // return the array with the two broadcasted matrices
24
+ return [A, B].map(M => _broadcastTo(M, newSize));
25
+ }
57
26
 
58
- // return the array with the two broadcasted matrices
59
- return [AA, BB];
60
- };
61
- function _padLeft(shape, N, filler) {
62
- // pads an array of dimensions with numbers to the left, unitl the number of dimensions is N
63
- return [...Array(N - shape.length).fill(filler), ...shape];
64
- }
65
- function _stretch(arrayToStretch, sizeToStretch, dimToStretch) {
66
- // stretches a matrix up to a certain size in a certain dimension
67
- return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);
27
+ /**
28
+ * Broadcasts a matrix to the given size.
29
+ *
30
+ * @param {Matrix} M - The matrix to be broadcasted.
31
+ * @param {number[]} size - The desired size of the broadcasted matrix.
32
+ * @returns {Matrix} The broadcasted matrix.
33
+ * @throws {Error} If the size parameter is not an array of numbers.
34
+ */
35
+ function _broadcastTo(M, size) {
36
+ if (deepStrictEqual(M.size(), size)) {
37
+ return M;
68
38
  }
69
- });
39
+ return M.create(broadcastTo(M.valueOf(), size), M.datatype());
40
+ }
@@ -2,14 +2,13 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { extend } from '../../../utils/object.js';
3
3
  import { createMatAlgo13xDD } from './matAlgo13xDD.js';
4
4
  import { createMatAlgo14xDs } from './matAlgo14xDs.js';
5
- import { createBroadcast } from './broadcast.js';
5
+ import { broadcast } from './broadcast.js';
6
6
  var name = 'matrixAlgorithmSuite';
7
- var dependencies = ['typed', 'matrix', 'concat'];
7
+ var dependencies = ['typed', 'matrix'];
8
8
  export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencies, _ref => {
9
9
  var {
10
10
  typed,
11
- matrix,
12
- concat
11
+ matrix
13
12
  } = _ref;
14
13
  var matAlgo13xDD = createMatAlgo13xDD({
15
14
  typed
@@ -17,9 +16,6 @@ export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencie
17
16
  var matAlgo14xDs = createMatAlgo14xDs({
18
17
  typed
19
18
  });
20
- var broadcast = createBroadcast({
21
- concat
22
- });
23
19
 
24
20
  /**
25
21
  * Return a signatures object with the usual boilerplate of
@@ -1,3 +1,3 @@
1
- export var version = '13.0.0';
1
+ export var version = '13.0.2';
2
2
  // Note: This file is automatically generated when building math.js.
3
3
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "13.0.0",
3
+ "version": "13.0.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",
@@ -25,7 +25,7 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.24.6",
28
+ "@babel/runtime": "^7.24.7",
29
29
  "complex.js": "^2.1.1",
30
30
  "decimal.js": "^10.4.3",
31
31
  "escape-latex": "^1.2.0",
@@ -33,22 +33,23 @@
33
33
  "javascript-natural-sort": "^0.7.1",
34
34
  "seedrandom": "^3.0.5",
35
35
  "tiny-emitter": "^2.1.0",
36
- "typed-function": "^4.1.1"
36
+ "typed-function": "^4.2.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.24.6",
40
- "@babel/plugin-transform-object-assign": "7.24.6",
41
- "@babel/plugin-transform-runtime": "7.24.6",
42
- "@babel/preset-env": "7.24.6",
39
+ "@babel/core": "7.24.7",
40
+ "@babel/plugin-transform-object-assign": "7.24.7",
41
+ "@babel/plugin-transform-optional-catch-binding": "7.24.7",
42
+ "@babel/plugin-transform-runtime": "7.24.7",
43
+ "@babel/preset-env": "7.24.7",
43
44
  "@babel/register": "7.24.6",
44
45
  "@types/assert": "1.5.10",
45
- "@types/mocha": "10.0.6",
46
- "@typescript-eslint/eslint-plugin": "7.11.0",
47
- "@typescript-eslint/parser": "7.11.0",
46
+ "@types/mocha": "10.0.7",
47
+ "@typescript-eslint/eslint-plugin": "7.15.0",
48
+ "@typescript-eslint/parser": "7.15.0",
48
49
  "assert": "2.1.0",
49
50
  "babel-loader": "9.1.3",
50
51
  "benchmark": "2.1.4",
51
- "c8": "9.1.0",
52
+ "c8": "10.1.2",
52
53
  "codecov": "3.8.3",
53
54
  "core-js": "3.37.1",
54
55
  "del": "7.1.0",
@@ -60,11 +61,11 @@
60
61
  "eslint-plugin-mocha": "10.4.3",
61
62
  "eslint-plugin-n": "16.6.2",
62
63
  "eslint-plugin-prettier": "5.1.3",
63
- "eslint-plugin-promise": "6.2.0",
64
+ "eslint-plugin-promise": "6.4.0",
64
65
  "expect-type": "0.19.0",
65
66
  "expr-eval": "2.0.2",
66
67
  "fancy-log": "2.0.0",
67
- "glob": "10.4.1",
68
+ "glob": "10.4.2",
68
69
  "gulp": "5.0.0",
69
70
  "gulp-babel": "8.0.0",
70
71
  "handlebars": "4.7.8",
@@ -76,7 +77,7 @@
76
77
  "karma-mocha-reporter": "2.2.5",
77
78
  "karma-webpack": "5.0.1",
78
79
  "mkdirp": "3.0.1",
79
- "mocha": "10.4.0",
80
+ "mocha": "10.6.0",
80
81
  "mocha-junit-reporter": "2.2.1",
81
82
  "ndarray": "1.0.19",
82
83
  "ndarray-determinant": "1.0.0",
@@ -85,13 +86,13 @@
85
86
  "ndarray-pack": "1.2.1",
86
87
  "numericjs": "1.2.6",
87
88
  "pad-right": "0.2.2",
88
- "prettier": "3.2.5",
89
+ "prettier": "3.3.2",
89
90
  "process": "0.11.10",
90
91
  "sinon": "18.0.0",
91
92
  "sylvester": "0.0.21",
92
93
  "ts-node": "10.9.2",
93
- "typescript": "5.4.5",
94
- "webpack": "5.91.0",
94
+ "typescript": "5.5.3",
95
+ "webpack": "5.92.1",
95
96
  "zeros": "1.0.0"
96
97
  },
97
98
  "type": "module",
package/types/index.d.ts CHANGED
@@ -2866,7 +2866,7 @@ export interface MathJsInstance extends MathJsFactory {
2866
2866
  */
2867
2867
  quantileSeq<T extends MathScalarType>(
2868
2868
  A: T[] | T[][],
2869
- prob: number | BigNumber | MathArray,
2869
+ prob: number | BigNumber,
2870
2870
  sorted?: boolean
2871
2871
  ): T
2872
2872
  /**
@@ -4292,14 +4292,44 @@ export interface MathNode {
4292
4292
  }
4293
4293
 
4294
4294
  export interface Parser {
4295
+ /**
4296
+ * Evaluate an expression. Returns the result of the expression.
4297
+ * @param expr The expression to evaluate
4298
+ */
4295
4299
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4296
4300
  evaluate(expr: string | string[]): any
4301
+ /**
4302
+ * Retrieve a variable or function from the parser’s scope.
4303
+ * @param name The name of the variable or function to be retrieved
4304
+ */
4297
4305
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4298
- get(variable: string): any
4306
+ get(name: string): any
4307
+ /**
4308
+ * Retrieve an object with all defined variables in the parser’s scope.
4309
+ * @returns An object with all defined variables
4310
+ */
4299
4311
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4300
4312
  getAll(): { [key: string]: any }
4313
+ /**
4314
+ * Retrieve a map with all defined variables in the parser’s scope.
4315
+ */
4316
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4317
+ getAllAsMap(): Map<string, any>
4318
+ /**
4319
+ * Set a variable or function in the parser’s scope.
4320
+ * @param name The name of the variable or function to be set
4321
+ * @param value The value of the variable or function to be set
4322
+ */
4301
4323
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4302
- set: (variable: string, value: any) => void
4324
+ set: (name: string, value: any) => void
4325
+ /**
4326
+ * Remove a variable or function from the parser’s scope.
4327
+ * @param name The name of the variable or function to be removed
4328
+ */
4329
+ remove: (name: string) => void
4330
+ /**
4331
+ * Completely clear the parser’s scope.
4332
+ */
4303
4333
  clear: () => void
4304
4334
  }
4305
4335