mirror of
https://github.com/MikeMcl/decimal.js.git
synced 2024-10-27 20:34:12 +00:00
Remove crypto require. Add set as config alias.
This commit is contained in:
parent
fb37ca6bde
commit
46b1aad320
61
decimal.js
61
decimal.js
@ -1,14 +1,14 @@
|
||||
/*! decimal.js v6.0.0 https://github.com/MikeMcl/decimal.js/LICENCE */
|
||||
/*! decimal.js v7.0.0 https://github.com/MikeMcl/decimal.js/LICENCE */
|
||||
;(function (globalScope) {
|
||||
'use strict';
|
||||
|
||||
|
||||
/*
|
||||
* decimal.js v6.0.0
|
||||
* decimal.js v7.0.0
|
||||
* An arbitrary-precision Decimal type for JavaScript.
|
||||
* https://github.com/MikeMcl/decimal.js
|
||||
* Copyright (c) 2016 Michael Mclaughlin <M8ch88l@gmail.com>
|
||||
* MIT Expat Licence
|
||||
* MIT Licence
|
||||
*/
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
Decimal = {
|
||||
|
||||
// These values must be integers within the stated ranges (inclusive).
|
||||
// Most of these values can be changed at run-time using `Decimal.config`.
|
||||
// Most of these values can be changed at run-time using the `Decimal.config` method.
|
||||
|
||||
// The maximum number of significant digits of the result of a calculation or base conversion.
|
||||
// E.g. `Decimal.config({ precision: 20 });`
|
||||
@ -92,7 +92,7 @@
|
||||
maxE: EXP_LIMIT, // 1 to EXP_LIMIT
|
||||
|
||||
// Whether to use cryptographically-secure random number generation, if available.
|
||||
crypto: void 0 // true/false/undefined
|
||||
crypto: false // true/false
|
||||
},
|
||||
|
||||
|
||||
@ -100,12 +100,12 @@
|
||||
|
||||
|
||||
inexact, noConflict, quadrant,
|
||||
cryptoObject = typeof crypto != 'undefined' ? crypto : null,
|
||||
external = true,
|
||||
|
||||
decimalError = '[DecimalError] ',
|
||||
invalidArgument = decimalError + 'Invalid argument: ',
|
||||
precisionLimitExceeded = decimalError + 'Precision limit exceeded',
|
||||
cryptoUnavailable = decimalError + 'crypto unavailable',
|
||||
|
||||
mathfloor = Math.floor,
|
||||
mathpow = Math.pow,
|
||||
@ -3936,6 +3936,7 @@
|
||||
* pow
|
||||
* random
|
||||
* round
|
||||
* set
|
||||
* sign
|
||||
* sin
|
||||
* sinh
|
||||
@ -4146,7 +4147,7 @@
|
||||
* maxE {number}
|
||||
* minE {number}
|
||||
* modulo {number}
|
||||
* crypto {boolean|number|undefined}
|
||||
* crypto {boolean|number}
|
||||
*
|
||||
* E.g. Decimal.config({ precision: 20, rounding: 4 })
|
||||
*
|
||||
@ -4171,12 +4172,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (obj.hasOwnProperty(p = 'crypto')) {
|
||||
if ((v = obj[p]) === void 0) {
|
||||
this[p] = v;
|
||||
} else if (v === true || v === false || v === 0 || v === 1) {
|
||||
this[p] = !!(v && cryptoObject &&
|
||||
(cryptoObject.getRandomValues || cryptoObject.randomBytes));
|
||||
if ((v = obj[p = 'crypto']) !== void 0) {
|
||||
if (v === true || v === false || v === 0 || v === 1) {
|
||||
if (v) {
|
||||
if (typeof crypto != 'undefined' && crypto &&
|
||||
(crypto.getRandomValues || crypto.randomBytes)) {
|
||||
this[p] = true;
|
||||
} else {
|
||||
throw Error(cryptoUnavailable);
|
||||
}
|
||||
} else {
|
||||
this[p] = false;
|
||||
}
|
||||
} else {
|
||||
throw Error(invalidArgument + p + ': ' + v);
|
||||
}
|
||||
@ -4306,7 +4313,7 @@
|
||||
Decimal.ROUND_HALF_FLOOR = 8;
|
||||
Decimal.EUCLID = 9;
|
||||
|
||||
Decimal.config = config;
|
||||
Decimal.config = Decimal.set = config;
|
||||
Decimal.clone = clone;
|
||||
|
||||
Decimal.abs = abs;
|
||||
@ -4557,12 +4564,12 @@
|
||||
|
||||
k = Math.ceil(sd / LOG_BASE);
|
||||
|
||||
if (this.crypto === false) {
|
||||
if (!this.crypto) {
|
||||
for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;
|
||||
|
||||
// Browsers supporting crypto.getRandomValues.
|
||||
} else if (cryptoObject && cryptoObject.getRandomValues) {
|
||||
d = cryptoObject.getRandomValues(new Uint32Array(k));
|
||||
} else if (crypto.getRandomValues) {
|
||||
d = crypto.getRandomValues(new Uint32Array(k));
|
||||
|
||||
for (; i < k;) {
|
||||
n = d[i];
|
||||
@ -4570,7 +4577,7 @@
|
||||
// 0 <= n < 4294967296
|
||||
// Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).
|
||||
if (n >= 4.29e9) {
|
||||
d[i] = cryptoObject.getRandomValues(new Uint32Array(1))[0];
|
||||
d[i] = crypto.getRandomValues(new Uint32Array(1))[0];
|
||||
} else {
|
||||
|
||||
// 0 <= n <= 4289999999
|
||||
@ -4580,10 +4587,10 @@
|
||||
}
|
||||
|
||||
// Node.js supporting crypto.randomBytes.
|
||||
} else if (cryptoObject && cryptoObject.randomBytes) {
|
||||
} else if (crypto.randomBytes) {
|
||||
|
||||
// buffer
|
||||
d = cryptoObject.randomBytes(k *= 4);
|
||||
d = crypto.randomBytes(k *= 4);
|
||||
|
||||
for (; i < k;) {
|
||||
|
||||
@ -4592,7 +4599,7 @@
|
||||
|
||||
// Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).
|
||||
if (n >= 2.14e9) {
|
||||
cryptoObject.randomBytes(4).copy(d, i);
|
||||
crypto.randomBytes(4).copy(d, i);
|
||||
} else {
|
||||
|
||||
// 0 <= n <= 2139999999
|
||||
@ -4603,10 +4610,8 @@
|
||||
}
|
||||
|
||||
i = k / 4;
|
||||
} else if (this.crypto) {
|
||||
throw Error(decimalError + 'crypto unavailable');
|
||||
} else {
|
||||
for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;
|
||||
throw Error(cryptoUnavailable);
|
||||
}
|
||||
|
||||
k = rd[--i];
|
||||
@ -4778,14 +4783,6 @@
|
||||
} else if (typeof module != 'undefined' && module.exports) {
|
||||
module.exports = Decimal;
|
||||
|
||||
if (!cryptoObject) {
|
||||
try {
|
||||
cryptoObject = require('cry' + 'pto');
|
||||
} catch (e) {
|
||||
// Ignore.
|
||||
}
|
||||
}
|
||||
|
||||
// Browser.
|
||||
} else {
|
||||
if (!globalScope) {
|
||||
|
Loading…
Reference in New Issue
Block a user