diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index de86dd6a..fb8bd990 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -4,99 +4,99 @@ "dependencies": { "async": { "version": "0.9.0", - "from": "async@>=0.9.0 <0.10.0", + "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" }, "bignumber.js": { - "version": "2.0.0", - "from": "bignumber.js@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.0.tgz" + "version": "2.0.3", + "from": "bignumber.js@2.0.3", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.3.tgz" }, "extend": { "version": "1.2.1", - "from": "extend@>=1.2.1 <1.3.0", + "from": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz" }, "lodash": { "version": "3.1.0", - "from": "lodash@>=3.1.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.1.0.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.1.0.tgz" }, "lru-cache": { "version": "2.5.0", - "from": "lru-cache@>=2.5.0 <2.6.0", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz" }, "ripple-wallet-generator": { "version": "1.0.1", - "from": "ripple-wallet-generator@1.0.1", + "from": "https://registry.npmjs.org/ripple-wallet-generator/-/ripple-wallet-generator-1.0.1.tgz", "resolved": "https://registry.npmjs.org/ripple-wallet-generator/-/ripple-wallet-generator-1.0.1.tgz" }, "superagent": { "version": "0.18.2", - "from": "superagent@>=0.18.0 <0.19.0", + "from": "https://registry.npmjs.org/superagent/-/superagent-0.18.2.tgz", "resolved": "https://registry.npmjs.org/superagent/-/superagent-0.18.2.tgz", "dependencies": { "qs": { "version": "0.6.6", - "from": "qs@0.6.6", + "from": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" }, "formidable": { "version": "1.0.14", - "from": "formidable@1.0.14", + "from": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz" }, "mime": { "version": "1.2.11", - "from": "mime@1.2.11", + "from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" }, "component-emitter": { "version": "1.1.2", - "from": "component-emitter@1.1.2", + "from": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" }, "methods": { "version": "1.0.1", - "from": "methods@1.0.1", + "from": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz", "resolved": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz" }, "cookiejar": { "version": "2.0.1", - "from": "cookiejar@2.0.1", + "from": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz" }, "debug": { "version": "1.0.4", - "from": "debug@>=1.0.1 <1.1.0", + "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", "dependencies": { "ms": { "version": "0.6.2", - "from": "ms@0.6.2", + "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" } } }, "reduce-component": { "version": "1.0.1", - "from": "reduce-component@1.0.1", + "from": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz", "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz" }, "form-data": { "version": "0.1.3", - "from": "form-data@0.1.3", + "from": "https://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz", "dependencies": { "combined-stream": { "version": "0.0.7", - "from": "combined-stream@>=0.0.4 <0.1.0", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", "dependencies": { "delayed-stream": { "version": "0.0.5", - "from": "delayed-stream@0.0.5", + "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" } } @@ -105,27 +105,27 @@ }, "readable-stream": { "version": "1.0.27-1", - "from": "readable-stream@1.0.27-1", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" }, "isarray": { "version": "0.0.1", - "from": "isarray@0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "string_decoder": { "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } @@ -134,47 +134,49 @@ }, "ws": { "version": "0.7.1", - "from": "ws@>=0.7.1 <0.8.0", + "from": "https://registry.npmjs.org/ws/-/ws-0.7.1.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-0.7.1.tgz", "dependencies": { "options": { "version": "0.0.6", - "from": "options@>=0.0.5", + "from": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" }, "ultron": { "version": "1.0.1", - "from": "ultron@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/ultron/-/ultron-1.0.1.tgz", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.1.tgz" }, "bufferutil": { "version": "1.0.1", - "from": "bufferutil@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.0.1.tgz", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.0.1.tgz", "dependencies": { "bindings": { "version": "1.2.1", - "from": "bindings@>=1.2.0 <1.3.0" + "from": "bindings@1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" }, "nan": { "version": "1.6.1", - "from": "nan@>=1.6.0 <1.7.0", + "from": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz" } } }, "utf-8-validate": { "version": "1.0.1", - "from": "utf-8-validate@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.0.1.tgz", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.0.1.tgz", "dependencies": { "bindings": { "version": "1.2.1", - "from": "bindings@>=1.2.0 <1.3.0" + "from": "bindings@1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" }, "nan": { "version": "1.6.1", - "from": "nan@>=1.6.0 <1.7.0", + "from": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz" } } diff --git a/package.json b/package.json index c21ad017..218e26ad 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ }, "dependencies": { "async": "~0.9.0", - "bignumber.js": "^2.0.0", + "bignumber.js": "^2.0.3", "extend": "~1.2.1", "lodash": "^3.1.0", "lru-cache": "~2.5.0", diff --git a/src/js/ripple/amount.js b/src/js/ripple/amount.js index 2a3add34..74edc964 100644 --- a/src/js/ripple/amount.js +++ b/src/js/ripple/amount.js @@ -7,7 +7,12 @@ var utils = require('./utils'); var UInt160 = require('./uint160').UInt160; var Seed = require('./seed').Seed; var Currency = require('./currency').Currency; -var BigNumber = require('./bignumber'); +var GlobalBigNumber = require('bignumber.js'); + +var BigNumber = GlobalBigNumber.another({ + ROUNDING_MODE: GlobalBigNumber.ROUND_HALF_UP, + DECIMAL_PLACES: 40 +}); function inverse(number) { @@ -325,10 +330,7 @@ Amount.prototype.canonicalize = function(roundingMode) { this._value = this._value.round(6, BigNumber.ROUND_DOWN); } else { if (roundingMode) { - var value = this._value; - this._value = BigNumber.withRoundingMode(roundingMode, function() { - return new BigNumber(value.toPrecision(16)); - }); + this._value = new BigNumber(this._value.toPrecision(16, roundingMode)); } else { this._value = new BigNumber(this._value.toPrecision(16)); } diff --git a/src/js/ripple/bignumber.js b/src/js/ripple/bignumber.js deleted file mode 100644 index 86cbbb20..00000000 --- a/src/js/ripple/bignumber.js +++ /dev/null @@ -1,33 +0,0 @@ -var BigNumber = require('bignumber.js'); -var extend = require('extend'); - -function BigNumberWrapper(value, base) { - // reset config every time a BigNumber is instantiated so that - // these global settings won't be overridden if another file tries - // to set them at require-time. - BigNumber.config({ ROUNDING_MODE: BigNumber.ROUND_HALF_UP, - DECIMAL_PLACES: 40 }); - BigNumber.call(this, value, base); -} - -extend(BigNumberWrapper, BigNumber); // copy class static properties -BigNumberWrapper.prototype = BigNumber.prototype; - -BigNumberWrapper.config = function() { - throw new Error('BigNumber.config may only be called from bignumber.js'); -}; - -BigNumberWrapper.withRoundingMode = function(roundingMode, func) { - var config = BigNumber.config(); - var oldRoundingMode = config.ROUNDING_MODE; - config.ROUNDING_MODE = roundingMode; - BigNumber.config(config); - try { - return func(); - } finally { - config.ROUNDING_MODE = oldRoundingMode; - BigNumber.config(config); - } -}; - -module.exports = BigNumberWrapper; diff --git a/src/js/ripple/serializedtypes.js b/src/js/ripple/serializedtypes.js index 051abcea..f8fd73ec 100644 --- a/src/js/ripple/serializedtypes.js +++ b/src/js/ripple/serializedtypes.js @@ -11,7 +11,7 @@ var extend = require('extend'); var binformat = require('./binformat'); var utils = require('./utils'); var sjcl = utils.sjcl; -var BigNumber = require('./bignumber'); +var GlobalBigNumber = require('bignumber.js'); var UInt128 = require('./uint128').UInt128; var UInt160 = require('./uint160').UInt160; @@ -22,6 +22,11 @@ var amount = require('./amount'); var Amount = amount.Amount; var Currency = amount.Currency; +var BigNumber = GlobalBigNumber.another({ + ROUNDING_MODE: GlobalBigNumber.ROUND_HALF_UP, + DECIMAL_PLACES: 40 +}); + var SerializedType = function (methods) { extend(this, methods); };