mathjs 12.3.1 → 12.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +8 -0
- 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/OperatorNode.js +2 -1
- package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/utils/map.js +174 -14
- package/lib/cjs/utils/scope.js +4 -10
- package/lib/cjs/version.js +1 -1
- package/lib/esm/expression/node/OperatorNode.js +2 -1
- package/lib/esm/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/esm/utils/map.js +97 -1
- package/lib/esm/utils/scope.js +5 -11
- package/lib/esm/version.js +1 -1
- package/package.json +6 -6
@@ -13,6 +13,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
14
14
|
var _is = require("../../utils/is.js");
|
15
15
|
var _array = require("../../utils/array.js");
|
16
|
+
var _scope = require("../../utils/scope.js");
|
16
17
|
var _string = require("../../utils/string.js");
|
17
18
|
var _customs = require("../../utils/customs.js");
|
18
19
|
var _operators = require("../operators.js");
|
@@ -311,7 +312,7 @@ var createOperatorNode = exports.createOperatorNode = /* #__PURE__ */(0, _factor
|
|
311
312
|
// "raw" evaluation
|
312
313
|
var rawArgs = this.args;
|
313
314
|
return function evalOperatorNode(scope, args, context) {
|
314
|
-
return fn(rawArgs, math, scope);
|
315
|
+
return fn(rawArgs, math, (0, _scope.createSubScope)(scope, args));
|
315
316
|
};
|
316
317
|
} else if (evalArgs.length === 1) {
|
317
318
|
var evalArg0 = evalArgs[0];
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.compileInlineExpression = compileInlineExpression;
|
7
7
|
var _is = require("../../../utils/is.js");
|
8
|
-
var
|
8
|
+
var _map = require("../../../utils/map.js");
|
9
9
|
/**
|
10
10
|
* Compile an inline expression like "x > 0"
|
11
11
|
* @param {Node} expression
|
12
12
|
* @param {Object} math
|
13
|
-
* @param {
|
13
|
+
* @param {Map} scope
|
14
14
|
* @return {function} Returns a function with one argument which fills in the
|
15
15
|
* undefined variable (like "x") and evaluates the expression
|
16
16
|
*/
|
@@ -25,10 +25,11 @@ function compileInlineExpression(expression, math, scope) {
|
|
25
25
|
|
26
26
|
// create a test function for this equation
|
27
27
|
var name = symbol.name; // variable name
|
28
|
-
var
|
28
|
+
var argsScope = new Map();
|
29
|
+
var subScope = new _map.PartitionedMap(scope, argsScope, new Set([name]));
|
29
30
|
var eq = expression.compile();
|
30
31
|
return function inlineExpression(x) {
|
31
|
-
|
32
|
+
argsScope.set(name, x);
|
32
33
|
return eq.evaluate(subScope);
|
33
34
|
};
|
34
35
|
}
|
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 12.3.
|
10
|
-
* @date 2024-02-
|
9
|
+
* @version 12.3.2
|
10
|
+
* @date 2024-02-08
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
|
package/lib/cjs/utils/map.js
CHANGED
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
5
5
|
value: true
|
6
6
|
});
|
7
|
-
exports.ObjectWrappingMap = void 0;
|
7
|
+
exports.PartitionedMap = exports.ObjectWrappingMap = void 0;
|
8
8
|
exports.assign = assign;
|
9
9
|
exports.createEmptyMap = createEmptyMap;
|
10
10
|
exports.createMap = createMap;
|
11
11
|
exports.isMap = isMap;
|
12
12
|
exports.toObject = toObject;
|
13
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
14
15
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
15
16
|
var _customs = require("./customs.js");
|
@@ -33,7 +34,7 @@ var ObjectWrappingMap = exports.ObjectWrappingMap = /*#__PURE__*/function () {
|
|
33
34
|
(0, _createClass2["default"])(ObjectWrappingMap, [{
|
34
35
|
key: "keys",
|
35
36
|
value: function keys() {
|
36
|
-
return Object.keys(this.wrappedObject);
|
37
|
+
return Object.keys(this.wrappedObject).values();
|
37
38
|
}
|
38
39
|
}, {
|
39
40
|
key: "get",
|
@@ -51,9 +52,168 @@ var ObjectWrappingMap = exports.ObjectWrappingMap = /*#__PURE__*/function () {
|
|
51
52
|
value: function has(key) {
|
52
53
|
return (0, _customs.hasSafeProperty)(this.wrappedObject, key);
|
53
54
|
}
|
55
|
+
}, {
|
56
|
+
key: "entries",
|
57
|
+
value: function entries() {
|
58
|
+
var _this = this;
|
59
|
+
return mapIterator(this.keys(), function (key) {
|
60
|
+
return [key, _this.get(key)];
|
61
|
+
});
|
62
|
+
}
|
63
|
+
}, {
|
64
|
+
key: "forEach",
|
65
|
+
value: function forEach(callback) {
|
66
|
+
var _iterator = _createForOfIteratorHelper(this.keys()),
|
67
|
+
_step;
|
68
|
+
try {
|
69
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
70
|
+
var key = _step.value;
|
71
|
+
callback(this.get(key), key, this);
|
72
|
+
}
|
73
|
+
} catch (err) {
|
74
|
+
_iterator.e(err);
|
75
|
+
} finally {
|
76
|
+
_iterator.f();
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}, {
|
80
|
+
key: "delete",
|
81
|
+
value: function _delete(key) {
|
82
|
+
delete this.wrappedObject[key];
|
83
|
+
}
|
84
|
+
}, {
|
85
|
+
key: "clear",
|
86
|
+
value: function clear() {
|
87
|
+
var _iterator2 = _createForOfIteratorHelper(this.keys()),
|
88
|
+
_step2;
|
89
|
+
try {
|
90
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
91
|
+
var key = _step2.value;
|
92
|
+
this["delete"](key);
|
93
|
+
}
|
94
|
+
} catch (err) {
|
95
|
+
_iterator2.e(err);
|
96
|
+
} finally {
|
97
|
+
_iterator2.f();
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}, {
|
101
|
+
key: "size",
|
102
|
+
get: function get() {
|
103
|
+
return Object.keys(this.wrappedObject).length;
|
104
|
+
}
|
54
105
|
}]);
|
55
106
|
return ObjectWrappingMap;
|
56
107
|
}();
|
108
|
+
/**
|
109
|
+
* Create a map with two partitions: a and b.
|
110
|
+
* The set with bKeys determines which keys/values are read/written to map b,
|
111
|
+
* all other values are read/written to map a
|
112
|
+
*
|
113
|
+
* For example:
|
114
|
+
*
|
115
|
+
* const a = new Map()
|
116
|
+
* const b = new Map()
|
117
|
+
* const p = new PartitionedMap(a, b, new Set(['x', 'y']))
|
118
|
+
*
|
119
|
+
* In this case, values `x` and `y` are read/written to map `b`,
|
120
|
+
* all other values are read/written to map `a`.
|
121
|
+
*/
|
122
|
+
var PartitionedMap = exports.PartitionedMap = /*#__PURE__*/function () {
|
123
|
+
/**
|
124
|
+
* @param {Map} a
|
125
|
+
* @param {Map} b
|
126
|
+
* @param {Set} bKeys
|
127
|
+
*/
|
128
|
+
function PartitionedMap(a, b, bKeys) {
|
129
|
+
(0, _classCallCheck2["default"])(this, PartitionedMap);
|
130
|
+
this.a = a;
|
131
|
+
this.b = b;
|
132
|
+
this.bKeys = bKeys;
|
133
|
+
}
|
134
|
+
(0, _createClass2["default"])(PartitionedMap, [{
|
135
|
+
key: "get",
|
136
|
+
value: function get(key) {
|
137
|
+
return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);
|
138
|
+
}
|
139
|
+
}, {
|
140
|
+
key: "set",
|
141
|
+
value: function set(key, value) {
|
142
|
+
if (this.bKeys.has(key)) {
|
143
|
+
this.b.set(key, value);
|
144
|
+
} else {
|
145
|
+
this.a.set(key, value);
|
146
|
+
}
|
147
|
+
return this;
|
148
|
+
}
|
149
|
+
}, {
|
150
|
+
key: "has",
|
151
|
+
value: function has(key) {
|
152
|
+
return this.b.has(key) || this.a.has(key);
|
153
|
+
}
|
154
|
+
}, {
|
155
|
+
key: "keys",
|
156
|
+
value: function keys() {
|
157
|
+
return new Set([].concat((0, _toConsumableArray2["default"])(this.a.keys()), (0, _toConsumableArray2["default"])(this.b.keys())))[Symbol.iterator]();
|
158
|
+
}
|
159
|
+
}, {
|
160
|
+
key: "entries",
|
161
|
+
value: function entries() {
|
162
|
+
var _this2 = this;
|
163
|
+
return mapIterator(this.keys(), function (key) {
|
164
|
+
return [key, _this2.get(key)];
|
165
|
+
});
|
166
|
+
}
|
167
|
+
}, {
|
168
|
+
key: "forEach",
|
169
|
+
value: function forEach(callback) {
|
170
|
+
var _iterator3 = _createForOfIteratorHelper(this.keys()),
|
171
|
+
_step3;
|
172
|
+
try {
|
173
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
174
|
+
var key = _step3.value;
|
175
|
+
callback(this.get(key), key, this);
|
176
|
+
}
|
177
|
+
} catch (err) {
|
178
|
+
_iterator3.e(err);
|
179
|
+
} finally {
|
180
|
+
_iterator3.f();
|
181
|
+
}
|
182
|
+
}
|
183
|
+
}, {
|
184
|
+
key: "delete",
|
185
|
+
value: function _delete(key) {
|
186
|
+
return this.bKeys.has(key) ? this.b["delete"](key) : this.a["delete"](key);
|
187
|
+
}
|
188
|
+
}, {
|
189
|
+
key: "clear",
|
190
|
+
value: function clear() {
|
191
|
+
this.a.clear();
|
192
|
+
this.b.clear();
|
193
|
+
}
|
194
|
+
}, {
|
195
|
+
key: "size",
|
196
|
+
get: function get() {
|
197
|
+
return (0, _toConsumableArray2["default"])(this.keys()).length;
|
198
|
+
}
|
199
|
+
}]);
|
200
|
+
return PartitionedMap;
|
201
|
+
}();
|
202
|
+
/**
|
203
|
+
* Create a new iterator that maps over the provided iterator, applying a mapping function to each item
|
204
|
+
*/
|
205
|
+
function mapIterator(it, callback) {
|
206
|
+
return {
|
207
|
+
next: function next() {
|
208
|
+
var n = it.next();
|
209
|
+
return n.done ? n : {
|
210
|
+
value: callback(n.value),
|
211
|
+
done: false
|
212
|
+
};
|
213
|
+
}
|
214
|
+
};
|
215
|
+
}
|
216
|
+
|
57
217
|
/**
|
58
218
|
* Creates an empty map, or whatever your platform's polyfill is.
|
59
219
|
*
|
@@ -93,18 +253,18 @@ function toObject(map) {
|
|
93
253
|
return map.wrappedObject;
|
94
254
|
}
|
95
255
|
var object = {};
|
96
|
-
var
|
97
|
-
|
256
|
+
var _iterator4 = _createForOfIteratorHelper(map.keys()),
|
257
|
+
_step4;
|
98
258
|
try {
|
99
|
-
for (
|
100
|
-
var key =
|
259
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
260
|
+
var key = _step4.value;
|
101
261
|
var value = map.get(key);
|
102
262
|
(0, _customs.setSafeProperty)(object, key, value);
|
103
263
|
}
|
104
264
|
} catch (err) {
|
105
|
-
|
265
|
+
_iterator4.e(err);
|
106
266
|
} finally {
|
107
|
-
|
267
|
+
_iterator4.f();
|
108
268
|
}
|
109
269
|
return object;
|
110
270
|
}
|
@@ -143,17 +303,17 @@ function assign(map) {
|
|
143
303
|
continue;
|
144
304
|
}
|
145
305
|
if (isMap(args)) {
|
146
|
-
var
|
147
|
-
|
306
|
+
var _iterator5 = _createForOfIteratorHelper(args.keys()),
|
307
|
+
_step5;
|
148
308
|
try {
|
149
|
-
for (
|
150
|
-
var key =
|
309
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
310
|
+
var key = _step5.value;
|
151
311
|
map.set(key, args.get(key));
|
152
312
|
}
|
153
313
|
} catch (err) {
|
154
|
-
|
314
|
+
_iterator5.e(err);
|
155
315
|
} finally {
|
156
|
-
|
316
|
+
_iterator5.f();
|
157
317
|
}
|
158
318
|
} else if ((0, _is.isObject)(args)) {
|
159
319
|
for (var _i2 = 0, _Object$keys = Object.keys(args); _i2 < _Object$keys.length; _i2++) {
|
package/lib/cjs/utils/scope.js
CHANGED
@@ -15,15 +15,9 @@ var _map = require("./map.js");
|
|
15
15
|
* the remaining `args`.
|
16
16
|
*
|
17
17
|
* @param {Map} parentScope
|
18
|
-
* @param {
|
19
|
-
* @returns {
|
18
|
+
* @param {Object} args
|
19
|
+
* @returns {PartitionedMap}
|
20
20
|
*/
|
21
|
-
function createSubScope(parentScope) {
|
22
|
-
|
23
|
-
args[_key - 1] = arguments[_key];
|
24
|
-
}
|
25
|
-
if (typeof parentScope.createSubScope === 'function') {
|
26
|
-
return _map.assign.apply(void 0, [parentScope.createSubScope()].concat(args));
|
27
|
-
}
|
28
|
-
return _map.assign.apply(void 0, [(0, _map.createEmptyMap)(), parentScope].concat(args));
|
21
|
+
function createSubScope(parentScope, args) {
|
22
|
+
return new _map.PartitionedMap(parentScope, new _map.ObjectWrappingMap(args), new Set(Object.keys(args)));
|
29
23
|
}
|
package/lib/cjs/version.js
CHANGED
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = exports.version = '12.3.
|
7
|
+
var version = exports.version = '12.3.2';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
2
|
import { isNode, isConstantNode, isOperatorNode, isParenthesisNode } from '../../utils/is.js';
|
3
3
|
import { map } from '../../utils/array.js';
|
4
|
+
import { createSubScope } from '../../utils/scope.js';
|
4
5
|
import { escape } from '../../utils/string.js';
|
5
6
|
import { getSafeProperty, isSafeMethod } from '../../utils/customs.js';
|
6
7
|
import { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators.js';
|
@@ -289,7 +290,7 @@ export var createOperatorNode = /* #__PURE__ */factory(name, dependencies, _ref
|
|
289
290
|
// "raw" evaluation
|
290
291
|
var rawArgs = this.args;
|
291
292
|
return function evalOperatorNode(scope, args, context) {
|
292
|
-
return fn(rawArgs, math, scope);
|
293
|
+
return fn(rawArgs, math, createSubScope(scope, args));
|
293
294
|
};
|
294
295
|
} else if (evalArgs.length === 1) {
|
295
296
|
var evalArg0 = evalArgs[0];
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import { isSymbolNode } from '../../../utils/is.js';
|
2
|
-
import {
|
2
|
+
import { PartitionedMap } from '../../../utils/map.js';
|
3
3
|
|
4
4
|
/**
|
5
5
|
* Compile an inline expression like "x > 0"
|
6
6
|
* @param {Node} expression
|
7
7
|
* @param {Object} math
|
8
|
-
* @param {
|
8
|
+
* @param {Map} scope
|
9
9
|
* @return {function} Returns a function with one argument which fills in the
|
10
10
|
* undefined variable (like "x") and evaluates the expression
|
11
11
|
*/
|
@@ -20,10 +20,11 @@ export function compileInlineExpression(expression, math, scope) {
|
|
20
20
|
|
21
21
|
// create a test function for this equation
|
22
22
|
var name = symbol.name; // variable name
|
23
|
-
var
|
23
|
+
var argsScope = new Map();
|
24
|
+
var subScope = new PartitionedMap(scope, argsScope, new Set([name]));
|
24
25
|
var eq = expression.compile();
|
25
26
|
return function inlineExpression(x) {
|
26
|
-
|
27
|
+
argsScope.set(name, x);
|
27
28
|
return eq.evaluate(subScope);
|
28
29
|
};
|
29
30
|
}
|
package/lib/esm/utils/map.js
CHANGED
@@ -14,7 +14,7 @@ export class ObjectWrappingMap {
|
|
14
14
|
this.wrappedObject = object;
|
15
15
|
}
|
16
16
|
keys() {
|
17
|
-
return Object.keys(this.wrappedObject);
|
17
|
+
return Object.keys(this.wrappedObject).values();
|
18
18
|
}
|
19
19
|
get(key) {
|
20
20
|
return getSafeProperty(this.wrappedObject, key);
|
@@ -26,6 +26,102 @@ export class ObjectWrappingMap {
|
|
26
26
|
has(key) {
|
27
27
|
return hasSafeProperty(this.wrappedObject, key);
|
28
28
|
}
|
29
|
+
entries() {
|
30
|
+
return mapIterator(this.keys(), key => [key, this.get(key)]);
|
31
|
+
}
|
32
|
+
forEach(callback) {
|
33
|
+
for (var key of this.keys()) {
|
34
|
+
callback(this.get(key), key, this);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
delete(key) {
|
38
|
+
delete this.wrappedObject[key];
|
39
|
+
}
|
40
|
+
clear() {
|
41
|
+
for (var key of this.keys()) {
|
42
|
+
this.delete(key);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
get size() {
|
46
|
+
return Object.keys(this.wrappedObject).length;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Create a map with two partitions: a and b.
|
52
|
+
* The set with bKeys determines which keys/values are read/written to map b,
|
53
|
+
* all other values are read/written to map a
|
54
|
+
*
|
55
|
+
* For example:
|
56
|
+
*
|
57
|
+
* const a = new Map()
|
58
|
+
* const b = new Map()
|
59
|
+
* const p = new PartitionedMap(a, b, new Set(['x', 'y']))
|
60
|
+
*
|
61
|
+
* In this case, values `x` and `y` are read/written to map `b`,
|
62
|
+
* all other values are read/written to map `a`.
|
63
|
+
*/
|
64
|
+
export class PartitionedMap {
|
65
|
+
/**
|
66
|
+
* @param {Map} a
|
67
|
+
* @param {Map} b
|
68
|
+
* @param {Set} bKeys
|
69
|
+
*/
|
70
|
+
constructor(a, b, bKeys) {
|
71
|
+
this.a = a;
|
72
|
+
this.b = b;
|
73
|
+
this.bKeys = bKeys;
|
74
|
+
}
|
75
|
+
get(key) {
|
76
|
+
return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);
|
77
|
+
}
|
78
|
+
set(key, value) {
|
79
|
+
if (this.bKeys.has(key)) {
|
80
|
+
this.b.set(key, value);
|
81
|
+
} else {
|
82
|
+
this.a.set(key, value);
|
83
|
+
}
|
84
|
+
return this;
|
85
|
+
}
|
86
|
+
has(key) {
|
87
|
+
return this.b.has(key) || this.a.has(key);
|
88
|
+
}
|
89
|
+
keys() {
|
90
|
+
return new Set([...this.a.keys(), ...this.b.keys()])[Symbol.iterator]();
|
91
|
+
}
|
92
|
+
entries() {
|
93
|
+
return mapIterator(this.keys(), key => [key, this.get(key)]);
|
94
|
+
}
|
95
|
+
forEach(callback) {
|
96
|
+
for (var key of this.keys()) {
|
97
|
+
callback(this.get(key), key, this);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
delete(key) {
|
101
|
+
return this.bKeys.has(key) ? this.b.delete(key) : this.a.delete(key);
|
102
|
+
}
|
103
|
+
clear() {
|
104
|
+
this.a.clear();
|
105
|
+
this.b.clear();
|
106
|
+
}
|
107
|
+
get size() {
|
108
|
+
return [...this.keys()].length;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
/**
|
113
|
+
* Create a new iterator that maps over the provided iterator, applying a mapping function to each item
|
114
|
+
*/
|
115
|
+
function mapIterator(it, callback) {
|
116
|
+
return {
|
117
|
+
next: () => {
|
118
|
+
var n = it.next();
|
119
|
+
return n.done ? n : {
|
120
|
+
value: callback(n.value),
|
121
|
+
done: false
|
122
|
+
};
|
123
|
+
}
|
124
|
+
};
|
29
125
|
}
|
30
126
|
|
31
127
|
/**
|
package/lib/esm/utils/scope.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ObjectWrappingMap, PartitionedMap } from './map.js';
|
2
2
|
|
3
3
|
/**
|
4
4
|
* Create a new scope which can access the parent scope,
|
@@ -10,15 +10,9 @@ import { createEmptyMap, assign } from './map.js';
|
|
10
10
|
* the remaining `args`.
|
11
11
|
*
|
12
12
|
* @param {Map} parentScope
|
13
|
-
* @param {
|
14
|
-
* @returns {
|
13
|
+
* @param {Object} args
|
14
|
+
* @returns {PartitionedMap}
|
15
15
|
*/
|
16
|
-
export function createSubScope(parentScope) {
|
17
|
-
|
18
|
-
args[_key - 1] = arguments[_key];
|
19
|
-
}
|
20
|
-
if (typeof parentScope.createSubScope === 'function') {
|
21
|
-
return assign(parentScope.createSubScope(), ...args);
|
22
|
-
}
|
23
|
-
return assign(createEmptyMap(), parentScope, ...args);
|
16
|
+
export function createSubScope(parentScope, args) {
|
17
|
+
return new PartitionedMap(parentScope, new ObjectWrappingMap(args), new Set(Object.keys(args)));
|
24
18
|
}
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "12.3.
|
3
|
+
"version": "12.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",
|
@@ -43,8 +43,8 @@
|
|
43
43
|
"@babel/register": "7.23.7",
|
44
44
|
"@types/assert": "1.5.10",
|
45
45
|
"@types/mocha": "10.0.6",
|
46
|
-
"@typescript-eslint/eslint-plugin": "6.
|
47
|
-
"@typescript-eslint/parser": "6.
|
46
|
+
"@typescript-eslint/eslint-plugin": "6.21.0",
|
47
|
+
"@typescript-eslint/parser": "6.21.0",
|
48
48
|
"assert": "2.1.0",
|
49
49
|
"babel-loader": "9.1.3",
|
50
50
|
"benchmark": "2.1.4",
|
@@ -74,7 +74,7 @@
|
|
74
74
|
"karma-firefox-launcher": "2.1.2",
|
75
75
|
"karma-mocha": "2.0.1",
|
76
76
|
"karma-mocha-reporter": "2.2.5",
|
77
|
-
"karma-webpack": "5.0.
|
77
|
+
"karma-webpack": "5.0.1",
|
78
78
|
"mkdirp": "3.0.1",
|
79
79
|
"mocha": "10.2.0",
|
80
80
|
"mocha-junit-reporter": "2.2.1",
|
@@ -85,12 +85,12 @@
|
|
85
85
|
"ndarray-pack": "1.2.1",
|
86
86
|
"numericjs": "1.2.6",
|
87
87
|
"pad-right": "0.2.2",
|
88
|
-
"prettier": "3.2.
|
88
|
+
"prettier": "3.2.5",
|
89
89
|
"process": "0.11.10",
|
90
90
|
"sylvester": "0.0.21",
|
91
91
|
"ts-node": "10.9.2",
|
92
92
|
"typescript": "5.3.3",
|
93
|
-
"webpack": "5.90.
|
93
|
+
"webpack": "5.90.1",
|
94
94
|
"zeros": "1.0.0"
|
95
95
|
},
|
96
96
|
"type": "module",
|