mathjs 11.0.1 → 11.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,7 @@ var indexDocs = {
9
9
  category: 'Construction',
10
10
  syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],
11
11
  description: 'Create an index to get or replace a subset of a matrix',
12
- examples: ['[]', '[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[0:2, 0:2] = ones(2, 2)'],
12
+ examples: ['[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[1:2, 1:2] = ones(2, 2)'],
13
13
  seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']
14
14
  };
15
15
  exports.indexDocs = indexDocs;
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.0.1
10
- * @date 2022-07-25
9
+ * @version 11.1.0
10
+ * @date 2022-08-23
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
@@ -9,10 +9,10 @@ exports.createUnitClass = void 0;
9
9
 
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
 
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
13
 
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
16
  var _is = require("../../utils/is.js");
17
17
 
18
18
  var _factory = require("../../utils/factory.js");
@@ -53,8 +53,8 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
53
53
  /**
54
54
  * A unit can be constructed in the following ways:
55
55
  *
56
- * const a = new Unit(value, name)
57
- * const b = new Unit(null, name)
56
+ * const a = new Unit(value, valuelessUnit)
57
+ * const b = new Unit(null, valuelessUnit)
58
58
  * const c = Unit.parse(str)
59
59
  *
60
60
  * Example usage:
@@ -67,10 +67,10 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
67
67
  * @class Unit
68
68
  * @constructor Unit
69
69
  * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2
70
- * @param {string} [name] A unit name like "cm" or "inch", or a derived unit of the form: "u1[^ex1] [u2[^ex2] ...] [/ u3[^ex3] [u4[^ex4]]]", such as "kg m^2/s^2", where each unit appearing after the forward slash is taken to be in the denominator. "kg m^2 s^-2" is a synonym and is also acceptable. Any of the units can include a prefix.
70
+ * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like "cm"
71
71
  */
72
72
 
73
- function Unit(value, name) {
73
+ function Unit(value, valuelessUnit) {
74
74
  if (!(this instanceof Unit)) {
75
75
  throw new Error('Constructor must be called with the new operator');
76
76
  }
@@ -79,31 +79,36 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
79
79
  throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined');
80
80
  }
81
81
 
82
- if (name !== undefined && (typeof name !== 'string' || name === '')) {
83
- throw new TypeError('Second parameter in Unit constructor must be a string');
84
- }
85
-
86
- if (name !== undefined) {
87
- var u = Unit.parse(name);
88
- this.units = u.units;
89
- this.dimensions = u.dimensions;
90
- } else {
91
- this.units = [];
92
- this.dimensions = [];
93
-
94
- for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
95
- this.dimensions[i] = 0;
96
- }
97
- }
98
-
99
- this.value = value !== undefined && value !== null ? this._normalize(value) : null;
100
82
  this.fixPrefix = false; // if true, function format will not search for the
101
83
  // best prefix but leave it as initially provided.
102
84
  // fixPrefix is set true by the method Unit.to
103
85
  // The justification behind this is that if the constructor is explicitly called,
104
- // the caller wishes the units to be returned exactly as he supplied.
86
+ // the caller wishes the units to be returned exactly as supplied.
105
87
 
106
88
  this.skipAutomaticSimplification = true;
89
+
90
+ if (valuelessUnit === undefined) {
91
+ this.units = [];
92
+ this.dimensions = BASE_DIMENSIONS.map(function (x) {
93
+ return 0;
94
+ });
95
+ } else if (typeof valuelessUnit === 'string') {
96
+ var u = Unit.parse(valuelessUnit);
97
+ this.units = u.units;
98
+ this.dimensions = u.dimensions;
99
+ } else if ((0, _is.isUnit)(valuelessUnit) && valuelessUnit.value === null) {
100
+ // clone from valuelessUnit
101
+ this.fixPrefix = valuelessUnit.fixPrefix;
102
+ this.skipAutomaticSimplification = valuelessUnit.skipAutomaticSimplification;
103
+ this.dimensions = valuelessUnit.dimensions.slice(0);
104
+ this.units = valuelessUnit.units.map(function (u) {
105
+ return (0, _extends2["default"])({}, u);
106
+ });
107
+ } else {
108
+ throw new TypeError('Second parameter in Unit constructor must be a string or valueless Unit');
109
+ }
110
+
111
+ this.value = this._normalize(value);
107
112
  }
108
113
  /**
109
114
  * Attach type information
@@ -24,10 +24,13 @@ var createUnitFunction = /* #__PURE__ */(0, _factory.factory)(name, dependencies
24
24
  * Syntax:
25
25
  *
26
26
  * math.unit(unit : string)
27
- * math.unit(value : number, unit : string)
27
+ * math.unit(value : number, valuelessUnit : Unit)
28
+ * math.unit(value : number, valuelessUnit : string)
28
29
  *
29
30
  * Examples:
30
31
  *
32
+ * const kph = math.unit('km/h') // returns Unit km/h (valueless)
33
+ * const v = math.unit(25, kph) // returns Unit 25 km/h
31
34
  * const a = math.unit(5, 'cm') // returns Unit 50 mm
32
35
  * const b = math.unit('23 kg') // returns Unit 23 kg
33
36
  * a.to('m') // returns Unit 0.05 m
@@ -52,7 +55,7 @@ var createUnitFunction = /* #__PURE__ */(0, _factory.factory)(name, dependencies
52
55
  allowNoUnits: true
53
56
  }); // a unit with value, like '5cm'
54
57
  },
55
- 'number | BigNumber | Fraction | Complex, string': function numberBigNumberFractionComplexString(value, unit) {
58
+ 'number | BigNumber | Fraction | Complex, string | Unit': function numberBigNumberFractionComplexStringUnit(value, unit) {
56
59
  return new Unit(value, unit);
57
60
  },
58
61
  'number | BigNumber | Fraction': function numberBigNumberFraction(value) {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- var version = '11.0.1'; // Note: This file is automatically generated when building math.js.
7
+ var version = '11.1.0'; // Note: This file is automatically generated when building math.js.
8
8
  // Changes made in this file will be overwritten.
9
9
 
10
10
  exports.version = version;
@@ -3,6 +3,6 @@ export var indexDocs = {
3
3
  category: 'Construction',
4
4
  syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],
5
5
  description: 'Create an index to get or replace a subset of a matrix',
6
- examples: ['[]', '[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[0:2, 0:2] = ones(2, 2)'],
6
+ examples: ['[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[1:2, 1:2] = ones(2, 2)'],
7
7
  seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']
8
8
  };
@@ -1,5 +1,5 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _extends from "@babel/runtime/helpers/extends";
3
3
 
4
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
5
 
@@ -37,8 +37,8 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
37
37
  /**
38
38
  * A unit can be constructed in the following ways:
39
39
  *
40
- * const a = new Unit(value, name)
41
- * const b = new Unit(null, name)
40
+ * const a = new Unit(value, valuelessUnit)
41
+ * const b = new Unit(null, valuelessUnit)
42
42
  * const c = Unit.parse(str)
43
43
  *
44
44
  * Example usage:
@@ -51,10 +51,10 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
51
51
  * @class Unit
52
52
  * @constructor Unit
53
53
  * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2
54
- * @param {string} [name] A unit name like "cm" or "inch", or a derived unit of the form: "u1[^ex1] [u2[^ex2] ...] [/ u3[^ex3] [u4[^ex4]]]", such as "kg m^2/s^2", where each unit appearing after the forward slash is taken to be in the denominator. "kg m^2 s^-2" is a synonym and is also acceptable. Any of the units can include a prefix.
54
+ * @param {string | Unit} valuelessUnit A unit without value. Can have prefix, like "cm"
55
55
  */
56
56
 
57
- function Unit(value, name) {
57
+ function Unit(value, valuelessUnit) {
58
58
  if (!(this instanceof Unit)) {
59
59
  throw new Error('Constructor must be called with the new operator');
60
60
  }
@@ -63,31 +63,32 @@ export var createUnitClass = /* #__PURE__ */factory(name, dependencies, _ref =>
63
63
  throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined');
64
64
  }
65
65
 
66
- if (name !== undefined && (typeof name !== 'string' || name === '')) {
67
- throw new TypeError('Second parameter in Unit constructor must be a string');
68
- }
69
-
70
- if (name !== undefined) {
71
- var u = Unit.parse(name);
72
- this.units = u.units;
73
- this.dimensions = u.dimensions;
74
- } else {
75
- this.units = [];
76
- this.dimensions = [];
77
-
78
- for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
79
- this.dimensions[i] = 0;
80
- }
81
- }
82
-
83
- this.value = value !== undefined && value !== null ? this._normalize(value) : null;
84
66
  this.fixPrefix = false; // if true, function format will not search for the
85
67
  // best prefix but leave it as initially provided.
86
68
  // fixPrefix is set true by the method Unit.to
87
69
  // The justification behind this is that if the constructor is explicitly called,
88
- // the caller wishes the units to be returned exactly as he supplied.
70
+ // the caller wishes the units to be returned exactly as supplied.
89
71
 
90
72
  this.skipAutomaticSimplification = true;
73
+
74
+ if (valuelessUnit === undefined) {
75
+ this.units = [];
76
+ this.dimensions = BASE_DIMENSIONS.map(x => 0);
77
+ } else if (typeof valuelessUnit === 'string') {
78
+ var u = Unit.parse(valuelessUnit);
79
+ this.units = u.units;
80
+ this.dimensions = u.dimensions;
81
+ } else if (isUnit(valuelessUnit) && valuelessUnit.value === null) {
82
+ // clone from valuelessUnit
83
+ this.fixPrefix = valuelessUnit.fixPrefix;
84
+ this.skipAutomaticSimplification = valuelessUnit.skipAutomaticSimplification;
85
+ this.dimensions = valuelessUnit.dimensions.slice(0);
86
+ this.units = valuelessUnit.units.map(u => _extends({}, u));
87
+ } else {
88
+ throw new TypeError('Second parameter in Unit constructor must be a string or valueless Unit');
89
+ }
90
+
91
+ this.value = this._normalize(value);
91
92
  }
92
93
  /**
93
94
  * Attach type information
@@ -17,10 +17,13 @@ export var createUnitFunction = /* #__PURE__ */factory(name, dependencies, _ref
17
17
  * Syntax:
18
18
  *
19
19
  * math.unit(unit : string)
20
- * math.unit(value : number, unit : string)
20
+ * math.unit(value : number, valuelessUnit : Unit)
21
+ * math.unit(value : number, valuelessUnit : string)
21
22
  *
22
23
  * Examples:
23
24
  *
25
+ * const kph = math.unit('km/h') // returns Unit km/h (valueless)
26
+ * const v = math.unit(25, kph) // returns Unit 25 km/h
24
27
  * const a = math.unit(5, 'cm') // returns Unit 50 mm
25
28
  * const b = math.unit('23 kg') // returns Unit 23 kg
26
29
  * a.to('m') // returns Unit 0.05 m
@@ -45,7 +48,7 @@ export var createUnitFunction = /* #__PURE__ */factory(name, dependencies, _ref
45
48
  allowNoUnits: true
46
49
  }); // a unit with value, like '5cm'
47
50
  },
48
- 'number | BigNumber | Fraction | Complex, string': function numberBigNumberFractionComplexString(value, unit) {
51
+ 'number | BigNumber | Fraction | Complex, string | Unit': function numberBigNumberFractionComplexStringUnit(value, unit) {
49
52
  return new Unit(value, unit);
50
53
  },
51
54
  'number | BigNumber | Fraction': function numberBigNumberFraction(value) {
@@ -1,2 +1,2 @@
1
- export var version = '11.0.1'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '11.1.0'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "11.0.1",
3
+ "version": "11.1.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",
@@ -27,37 +27,37 @@
27
27
  "dependencies": {
28
28
  "@babel/runtime": "^7.18.9",
29
29
  "complex.js": "^2.1.1",
30
- "decimal.js": "^10.3.1",
30
+ "decimal.js": "^10.4.0",
31
31
  "escape-latex": "^1.2.0",
32
32
  "fraction.js": "^4.2.0",
33
33
  "javascript-natural-sort": "^0.7.1",
34
34
  "seedrandom": "^3.0.5",
35
35
  "tiny-emitter": "^2.1.0",
36
- "typed-function": "^3.0.0"
36
+ "typed-function": "^4.1.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.18.9",
39
+ "@babel/core": "7.18.13",
40
40
  "@babel/plugin-transform-object-assign": "7.18.6",
41
- "@babel/plugin-transform-runtime": "7.18.9",
42
- "@babel/preset-env": "7.18.9",
41
+ "@babel/plugin-transform-runtime": "7.18.10",
42
+ "@babel/preset-env": "7.18.10",
43
43
  "@babel/register": "7.18.9",
44
44
  "@types/assert": "1.5.6",
45
45
  "@types/mocha": "9.1.1",
46
- "@typescript-eslint/eslint-plugin": "5.30.7",
47
- "@typescript-eslint/parser": "5.30.7",
46
+ "@typescript-eslint/eslint-plugin": "5.33.0",
47
+ "@typescript-eslint/parser": "5.34.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.23.5",
52
+ "core-js": "3.24.1",
53
53
  "del": "6.1.1",
54
54
  "dtslint": "4.2.1",
55
- "eslint": "8.20.0",
55
+ "eslint": "8.22.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
- "eslint-plugin-n": "15.2.4",
60
+ "eslint-plugin-n": "15.2.5",
61
61
  "eslint-plugin-prettier": "4.2.1",
62
62
  "eslint-plugin-promise": "6.0.0",
63
63
  "expect-type": "0.13.0",
@@ -91,7 +91,7 @@
91
91
  "sylvester": "0.0.21",
92
92
  "ts-node": "10.9.1",
93
93
  "typescript": "4.7.4",
94
- "webpack": "5.73.0",
94
+ "webpack": "5.74.0",
95
95
  "zeros": "1.0.0"
96
96
  },
97
97
  "type": "module",
@@ -161,7 +161,7 @@
161
161
  "test:all": "npm run test:src && npm run test:generated && npm run test:node && npm run test:types",
162
162
  "test:browser": "karma start test/browser-test-config/local-karma.js",
163
163
  "test:browserstack": "karma start test/browser-test-config/browserstack-karma.js",
164
- "test:types": "cd types && node --loader ts-node/esm ./index.ts",
164
+ "test:types": "cd types && tsc -p ./tsconfig.json && node --loader ts-node/esm ./index.ts",
165
165
  "coverage": "nyc --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
166
166
  "prepublishOnly": "npm run test:all && npm run lint",
167
167
  "prepare": "npm run build",
package/types/index.d.ts CHANGED
@@ -478,6 +478,12 @@ declare namespace math {
478
478
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
479
479
  reviver(): (key: any, value: any) => any
480
480
 
481
+ /**
482
+ * Returns replacer function that can be used as replacer in JSON.stringify function.
483
+ */
484
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
485
+ replacer(): (key: any, value: any) => any
486
+
481
487
  /*************************************************************************
482
488
  * Core functions
483
489
  ************************************************************************/
@@ -15,5 +15,8 @@
15
15
  "strictNullChecks": false,
16
16
  "strictFunctionTypes": true,
17
17
  "forceConsistentCasingInFileNames": true
18
- }
18
+ },
19
+ "files": [
20
+ "./index.ts"
21
+ ],
19
22
  }