mathjs 14.7.0 → 14.8.0
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 +5 -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/entry/dependenciesAny/dependenciesNullish.generated.js +25 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesNullishTransform.generated.js +25 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +14 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +8 -0
- package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/cjs/expression/embeddedDocs/function/logical/nullish.js +14 -0
- package/lib/cjs/expression/operators.js +7 -0
- package/lib/cjs/expression/parse.js +17 -1
- package/lib/cjs/expression/transform/nullish.transform.js +43 -0
- package/lib/cjs/factoriesAny.js +14 -0
- package/lib/cjs/function/logical/nullish.js +87 -0
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesNullish.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny/dependenciesNullishTransform.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +10 -2
- package/lib/esm/entry/pureFunctionsAny.generated.js +8 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/logical/nullish.js +8 -0
- package/lib/esm/expression/operators.js +7 -0
- package/lib/esm/expression/parse.js +17 -1
- package/lib/esm/expression/transform/nullish.transform.js +37 -0
- package/lib/esm/factoriesAny.js +2 -0
- package/lib/esm/function/logical/nullish.js +81 -0
- package/lib/esm/version.js +1 -1
- package/package.json +5 -5
@@ -0,0 +1,37 @@
|
|
1
|
+
import { createNullish } from '../../function/logical/nullish.js';
|
2
|
+
import { factory } from '../../utils/factory.js';
|
3
|
+
import { isCollection } from '../../utils/is.js';
|
4
|
+
var name = 'nullish';
|
5
|
+
var dependencies = ['typed', 'matrix', 'size', 'flatten', 'deepEqual'];
|
6
|
+
export var createNullishTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
|
7
|
+
var {
|
8
|
+
typed,
|
9
|
+
matrix,
|
10
|
+
size,
|
11
|
+
flatten,
|
12
|
+
deepEqual
|
13
|
+
} = _ref;
|
14
|
+
var nullish = createNullish({
|
15
|
+
typed,
|
16
|
+
matrix,
|
17
|
+
size,
|
18
|
+
flatten,
|
19
|
+
deepEqual
|
20
|
+
});
|
21
|
+
function nullishTransform(args, math, scope) {
|
22
|
+
var left = args[0].compile().evaluate(scope);
|
23
|
+
|
24
|
+
// If left is not a collection and not nullish, short-circuit and return it
|
25
|
+
if (!isCollection(left) && left != null && left !== undefined) {
|
26
|
+
return left;
|
27
|
+
}
|
28
|
+
|
29
|
+
// Otherwise evaluate right and apply full nullish semantics (incl. element-wise)
|
30
|
+
var right = args[1].compile().evaluate(scope);
|
31
|
+
return nullish(left, right);
|
32
|
+
}
|
33
|
+
nullishTransform.rawArgs = true;
|
34
|
+
return nullishTransform;
|
35
|
+
}, {
|
36
|
+
isTransformFunction: true
|
37
|
+
});
|
package/lib/esm/factoriesAny.js
CHANGED
@@ -66,6 +66,7 @@ export { createConj } from './function/complex/conj.js';
|
|
66
66
|
export { createIm } from './function/complex/im.js';
|
67
67
|
export { createRe } from './function/complex/re.js';
|
68
68
|
export { createNot } from './function/logical/not.js';
|
69
|
+
export { createNullish } from './function/logical/nullish.js';
|
69
70
|
export { createOr } from './function/logical/or.js';
|
70
71
|
export { createXor } from './function/logical/xor.js';
|
71
72
|
export { createConcat } from './function/matrix/concat.js';
|
@@ -294,5 +295,6 @@ export { createVarianceTransform } from './expression/transform/variance.transfo
|
|
294
295
|
export { createPrintTransform } from './expression/transform/print.transform.js';
|
295
296
|
export { createAndTransform } from './expression/transform/and.transform.js';
|
296
297
|
export { createOrTransform } from './expression/transform/or.transform.js';
|
298
|
+
export { createNullishTransform } from './expression/transform/nullish.transform.js';
|
297
299
|
export { createBitAndTransform } from './expression/transform/bitAnd.transform.js';
|
298
300
|
export { createBitOrTransform } from './expression/transform/bitOr.transform.js';
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { factory } from '../../utils/factory.js';
|
2
|
+
import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
|
3
|
+
import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
|
4
|
+
import { createMatAlgo13xDD } from '../../type/matrix/utils/matAlgo13xDD.js';
|
5
|
+
import { DimensionError } from '../../error/DimensionError.js';
|
6
|
+
var name = 'nullish';
|
7
|
+
var dependencies = ['typed', 'matrix', 'size', 'flatten', 'deepEqual'];
|
8
|
+
export var createNullish = /* #__PURE__ */factory(name, dependencies, _ref => {
|
9
|
+
var {
|
10
|
+
typed,
|
11
|
+
matrix,
|
12
|
+
size,
|
13
|
+
flatten,
|
14
|
+
deepEqual
|
15
|
+
} = _ref;
|
16
|
+
var matAlgo03xDSf = createMatAlgo03xDSf({
|
17
|
+
typed
|
18
|
+
});
|
19
|
+
var matAlgo14xDs = createMatAlgo14xDs({
|
20
|
+
typed
|
21
|
+
});
|
22
|
+
var matAlgo13xDD = createMatAlgo13xDD({
|
23
|
+
typed
|
24
|
+
});
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Nullish coalescing operator (??). Returns the right-hand side operand
|
28
|
+
* when the left-hand side operand is null or undefined, and otherwise
|
29
|
+
* returns the left-hand side operand.
|
30
|
+
*
|
31
|
+
* For matrices, the function is evaluated element wise.
|
32
|
+
*
|
33
|
+
* Syntax:
|
34
|
+
*
|
35
|
+
* math.nullish(x, y)
|
36
|
+
*
|
37
|
+
* Examples:
|
38
|
+
*
|
39
|
+
* math.nullish(null, 42) // returns 42
|
40
|
+
* math.nullish(undefined, 42) // returns 42
|
41
|
+
* math.nullish(0, 42) // returns 0
|
42
|
+
* math.nullish(false, 42) // returns false
|
43
|
+
* math.nullish('', 42) // returns ''
|
44
|
+
*
|
45
|
+
* // Object property access with fallback
|
46
|
+
* const obj = {foo: 7, bar: 3}
|
47
|
+
* math.nullish(obj.baz, 0) // returns 0
|
48
|
+
*
|
49
|
+
* See also:
|
50
|
+
*
|
51
|
+
* and, or, not
|
52
|
+
*
|
53
|
+
* @param {*} x First value to check
|
54
|
+
* @param {*} y Fallback value
|
55
|
+
* @return {*} Returns y when x is null or undefined, otherwise returns x
|
56
|
+
*/
|
57
|
+
|
58
|
+
return typed(name, {
|
59
|
+
// Scalar and SparseMatrix-first short-circuit handlers
|
60
|
+
'number|bigint|Complex|BigNumber|Fraction|Unit|string|boolean|SparseMatrix, any': (x, _y) => x,
|
61
|
+
'null, any': (_x, y) => y,
|
62
|
+
'undefined, any': (_x, y) => y,
|
63
|
+
// SparseMatrix-first with collection RHS: enforce exact shape match
|
64
|
+
'SparseMatrix, Array | Matrix': (x, y) => {
|
65
|
+
var sx = flatten(size(x).valueOf()); // work around #3529/#3530
|
66
|
+
var sy = flatten(size(y).valueOf());
|
67
|
+
if (deepEqual(sx, sy)) return x;
|
68
|
+
throw new DimensionError(sx, sy);
|
69
|
+
},
|
70
|
+
// DenseMatrix-first handlers (no broadcasting between collections)
|
71
|
+
'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => matAlgo13xDD(x, y, self)),
|
72
|
+
'DenseMatrix, SparseMatrix': typed.referToSelf(self => (x, y) => matAlgo03xDSf(x, y, self, false)),
|
73
|
+
'DenseMatrix, Array': typed.referToSelf(self => (x, y) => matAlgo13xDD(x, matrix(y), self)),
|
74
|
+
'DenseMatrix, any': typed.referToSelf(self => (x, y) => matAlgo14xDs(x, y, self, false)),
|
75
|
+
// Array-first handlers (bridge via matrix() where needed)
|
76
|
+
'Array, Array': typed.referToSelf(self => (x, y) => matAlgo13xDD(matrix(x), matrix(y), self).valueOf()),
|
77
|
+
'Array, DenseMatrix': typed.referToSelf(self => (x, y) => matAlgo13xDD(matrix(x), y, self)),
|
78
|
+
'Array, SparseMatrix': typed.referToSelf(self => (x, y) => matAlgo03xDSf(matrix(x), y, self, false)),
|
79
|
+
'Array, any': typed.referToSelf(self => (x, y) => matAlgo14xDs(matrix(x), y, self, false).valueOf())
|
80
|
+
});
|
81
|
+
});
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "14.
|
3
|
+
"version": "14.8.0",
|
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",
|
@@ -36,7 +36,7 @@
|
|
36
36
|
"typed-function": "^4.2.1"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
|
-
"@babel/core": "7.28.
|
39
|
+
"@babel/core": "7.28.4",
|
40
40
|
"@babel/plugin-transform-object-assign": "7.27.1",
|
41
41
|
"@babel/plugin-transform-optional-catch-binding": "7.27.1",
|
42
42
|
"@babel/plugin-transform-runtime": "7.28.3",
|
@@ -44,13 +44,13 @@
|
|
44
44
|
"@babel/register": "7.28.3",
|
45
45
|
"@types/assert": "1.5.11",
|
46
46
|
"@types/mocha": "10.0.10",
|
47
|
-
"@typescript-eslint/eslint-plugin": "8.
|
48
|
-
"@typescript-eslint/parser": "8.
|
47
|
+
"@typescript-eslint/eslint-plugin": "8.44.1",
|
48
|
+
"@typescript-eslint/parser": "8.44.1",
|
49
49
|
"assert": "2.1.0",
|
50
50
|
"babel-loader": "10.0.0",
|
51
51
|
"c8": "10.1.3",
|
52
52
|
"codecov": "3.8.3",
|
53
|
-
"del": "8.0.
|
53
|
+
"del": "8.0.1",
|
54
54
|
"eigen": "0.2.2",
|
55
55
|
"es-check": "9.3.1",
|
56
56
|
"eslint": "8.57.1",
|