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.
Files changed (32) hide show
  1. package/HISTORY.md +5 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/entry/dependenciesAny/dependenciesNullish.generated.js +25 -0
  6. package/lib/cjs/entry/dependenciesAny/dependenciesNullishTransform.generated.js +25 -0
  7. package/lib/cjs/entry/dependenciesAny.generated.js +14 -0
  8. package/lib/cjs/entry/impureFunctionsAny.generated.js +8 -0
  9. package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
  10. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
  11. package/lib/cjs/expression/embeddedDocs/function/logical/nullish.js +14 -0
  12. package/lib/cjs/expression/operators.js +7 -0
  13. package/lib/cjs/expression/parse.js +17 -1
  14. package/lib/cjs/expression/transform/nullish.transform.js +43 -0
  15. package/lib/cjs/factoriesAny.js +14 -0
  16. package/lib/cjs/function/logical/nullish.js +87 -0
  17. package/lib/cjs/header.js +2 -2
  18. package/lib/cjs/version.js +1 -1
  19. package/lib/esm/entry/dependenciesAny/dependenciesNullish.generated.js +18 -0
  20. package/lib/esm/entry/dependenciesAny/dependenciesNullishTransform.generated.js +18 -0
  21. package/lib/esm/entry/dependenciesAny.generated.js +2 -0
  22. package/lib/esm/entry/impureFunctionsAny.generated.js +10 -2
  23. package/lib/esm/entry/pureFunctionsAny.generated.js +8 -1
  24. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  25. package/lib/esm/expression/embeddedDocs/function/logical/nullish.js +8 -0
  26. package/lib/esm/expression/operators.js +7 -0
  27. package/lib/esm/expression/parse.js +17 -1
  28. package/lib/esm/expression/transform/nullish.transform.js +37 -0
  29. package/lib/esm/factoriesAny.js +2 -0
  30. package/lib/esm/function/logical/nullish.js +81 -0
  31. package/lib/esm/version.js +1 -1
  32. 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
+ });
@@ -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
+ });
@@ -1,3 +1,3 @@
1
- export var version = '14.7.0';
1
+ export var version = '14.8.0';
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": "14.7.0",
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.3",
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.42.0",
48
- "@typescript-eslint/parser": "8.42.0",
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.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",