[TASK] Update bignumber.js and use new feature to simplify our code

This commit is contained in:
Chris Clark
2015-02-19 19:51:05 -08:00
parent 77d5db168b
commit b7ccf424f4
5 changed files with 51 additions and 75 deletions

72
npm-shrinkwrap.json generated
View File

@@ -4,99 +4,99 @@
"dependencies": { "dependencies": {
"async": { "async": {
"version": "0.9.0", "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" "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
}, },
"bignumber.js": { "bignumber.js": {
"version": "2.0.0", "version": "2.0.3",
"from": "bignumber.js@>=2.0.0 <3.0.0", "from": "bignumber.js@2.0.3",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.0.tgz" "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.3.tgz"
}, },
"extend": { "extend": {
"version": "1.2.1", "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" "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz"
}, },
"lodash": { "lodash": {
"version": "3.1.0", "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" "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.1.0.tgz"
}, },
"lru-cache": { "lru-cache": {
"version": "2.5.0", "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" "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz"
}, },
"ripple-wallet-generator": { "ripple-wallet-generator": {
"version": "1.0.1", "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" "resolved": "https://registry.npmjs.org/ripple-wallet-generator/-/ripple-wallet-generator-1.0.1.tgz"
}, },
"superagent": { "superagent": {
"version": "0.18.2", "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", "resolved": "https://registry.npmjs.org/superagent/-/superagent-0.18.2.tgz",
"dependencies": { "dependencies": {
"qs": { "qs": {
"version": "0.6.6", "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" "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz"
}, },
"formidable": { "formidable": {
"version": "1.0.14", "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" "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz"
}, },
"mime": { "mime": {
"version": "1.2.11", "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" "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
}, },
"component-emitter": { "component-emitter": {
"version": "1.1.2", "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" "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz"
}, },
"methods": { "methods": {
"version": "1.0.1", "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" "resolved": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz"
}, },
"cookiejar": { "cookiejar": {
"version": "2.0.1", "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" "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz"
}, },
"debug": { "debug": {
"version": "1.0.4", "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", "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
"dependencies": { "dependencies": {
"ms": { "ms": {
"version": "0.6.2", "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" "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz"
} }
} }
}, },
"reduce-component": { "reduce-component": {
"version": "1.0.1", "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" "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz"
}, },
"form-data": { "form-data": {
"version": "0.1.3", "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", "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz",
"dependencies": { "dependencies": {
"combined-stream": { "combined-stream": {
"version": "0.0.7", "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", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
"dependencies": { "dependencies": {
"delayed-stream": { "delayed-stream": {
"version": "0.0.5", "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" "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
} }
} }
@@ -105,27 +105,27 @@
}, },
"readable-stream": { "readable-stream": {
"version": "1.0.27-1", "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", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz",
"dependencies": { "dependencies": {
"core-util-is": { "core-util-is": {
"version": "1.0.1", "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" "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
}, },
"isarray": { "isarray": {
"version": "0.0.1", "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" "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
}, },
"string_decoder": { "string_decoder": {
"version": "0.10.31", "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" "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}, },
"inherits": { "inherits": {
"version": "2.0.1", "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" "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
} }
} }
@@ -134,47 +134,49 @@
}, },
"ws": { "ws": {
"version": "0.7.1", "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", "resolved": "https://registry.npmjs.org/ws/-/ws-0.7.1.tgz",
"dependencies": { "dependencies": {
"options": { "options": {
"version": "0.0.6", "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" "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz"
}, },
"ultron": { "ultron": {
"version": "1.0.1", "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" "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.1.tgz"
}, },
"bufferutil": { "bufferutil": {
"version": "1.0.1", "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", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.0.1.tgz",
"dependencies": { "dependencies": {
"bindings": { "bindings": {
"version": "1.2.1", "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": { "nan": {
"version": "1.6.1", "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" "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz"
} }
} }
}, },
"utf-8-validate": { "utf-8-validate": {
"version": "1.0.1", "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", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.0.1.tgz",
"dependencies": { "dependencies": {
"bindings": { "bindings": {
"version": "1.2.1", "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": { "nan": {
"version": "1.6.1", "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" "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz"
} }
} }

View File

@@ -16,7 +16,7 @@
}, },
"dependencies": { "dependencies": {
"async": "~0.9.0", "async": "~0.9.0",
"bignumber.js": "^2.0.0", "bignumber.js": "^2.0.3",
"extend": "~1.2.1", "extend": "~1.2.1",
"lodash": "^3.1.0", "lodash": "^3.1.0",
"lru-cache": "~2.5.0", "lru-cache": "~2.5.0",

View File

@@ -7,7 +7,12 @@ var utils = require('./utils');
var UInt160 = require('./uint160').UInt160; var UInt160 = require('./uint160').UInt160;
var Seed = require('./seed').Seed; var Seed = require('./seed').Seed;
var Currency = require('./currency').Currency; 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) { function inverse(number) {
@@ -325,10 +330,7 @@ Amount.prototype.canonicalize = function(roundingMode) {
this._value = this._value.round(6, BigNumber.ROUND_DOWN); this._value = this._value.round(6, BigNumber.ROUND_DOWN);
} else { } else {
if (roundingMode) { if (roundingMode) {
var value = this._value; this._value = new BigNumber(this._value.toPrecision(16, roundingMode));
this._value = BigNumber.withRoundingMode(roundingMode, function() {
return new BigNumber(value.toPrecision(16));
});
} else { } else {
this._value = new BigNumber(this._value.toPrecision(16)); this._value = new BigNumber(this._value.toPrecision(16));
} }

View File

@@ -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;

View File

@@ -11,7 +11,7 @@ var extend = require('extend');
var binformat = require('./binformat'); var binformat = require('./binformat');
var utils = require('./utils'); var utils = require('./utils');
var sjcl = utils.sjcl; var sjcl = utils.sjcl;
var BigNumber = require('./bignumber'); var GlobalBigNumber = require('bignumber.js');
var UInt128 = require('./uint128').UInt128; var UInt128 = require('./uint128').UInt128;
var UInt160 = require('./uint160').UInt160; var UInt160 = require('./uint160').UInt160;
@@ -22,6 +22,11 @@ var amount = require('./amount');
var Amount = amount.Amount; var Amount = amount.Amount;
var Currency = amount.Currency; var Currency = amount.Currency;
var BigNumber = GlobalBigNumber.another({
ROUNDING_MODE: GlobalBigNumber.ROUND_HALF_UP,
DECIMAL_PLACES: 40
});
var SerializedType = function (methods) { var SerializedType = function (methods) {
extend(this, methods); extend(this, methods);
}; };