diff --git a/package.json b/package.json index 957262c4..f803f7a7 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dependencies": { "@types/lodash": "^4.14.136", "@types/ws": "^3.2.0", - "bignumber.js": "^4.1.0", + "bignumber.js": "^9.0.0", "https-proxy-agent": "^3.0.0", "jsonschema": "1.2.2", "lodash": "^4.17.4", diff --git a/src/common/hashes/index.ts b/src/common/hashes/index.ts index 79117cd2..8ad11fba 100644 --- a/src/common/hashes/index.ts +++ b/src/common/hashes/index.ts @@ -93,7 +93,7 @@ export const computeTrustlineHash = (address1: string, address2: string, currenc const address1Hex = addressToHex(address1) const address2Hex = addressToHex(address2) - const swap = (new BigNumber(address1Hex, 16)).greaterThan( + const swap = (new BigNumber(address1Hex, 16)).isGreaterThan( new BigNumber(address2Hex, 16)) const lowAddressHex = swap ? address2Hex : address1Hex const highAddressHex = swap ? address1Hex : address2Hex diff --git a/src/common/utils.ts b/src/common/utils.ts index 470262f9..e30ba650 100644 --- a/src/common/utils.ts +++ b/src/common/utils.ts @@ -83,7 +83,7 @@ function xrpToDrops(xrp: string | BigNumber): string { ` too many decimal places.`) } - return (new BigNumber(xrp)).times(1000000.0).floor().toString(10) + return (new BigNumber(xrp)).times(1000000.0).integerValue(BigNumber.ROUND_FLOOR).toString(10) } function toRippledAmount(amount: Amount): RippledAmount { diff --git a/src/ledger/parse/account-order.ts b/src/ledger/parse/account-order.ts index 997a7c5f..3b4e8d1f 100644 --- a/src/ledger/parse/account-order.ts +++ b/src/ledger/parse/account-order.ts @@ -17,7 +17,7 @@ export type FormattedAccountOrder = { // TODO: remove this function once rippled provides quality directly function computeQuality(takerGets, takerPays) { const quotient = new BigNumber(takerPays.value).dividedBy(takerGets.value) - return quotient.toDigits(16, BigNumber.ROUND_HALF_UP).toString() + return quotient.precision(16, BigNumber.ROUND_HALF_UP).toString() } // rippled 'account_offers' returns a different format for orders than 'tx' diff --git a/src/ledger/parse/fields.ts b/src/ledger/parse/fields.ts index 6d4d3bef..307d6fc2 100644 --- a/src/ledger/parse/fields.ts +++ b/src/ledger/parse/fields.ts @@ -8,7 +8,7 @@ function parseField(info, value) { return Buffer.from(value, 'hex').toString('ascii') } if (info.shift) { - return (new BigNumber(value)).shift(-info.shift).toNumber() + return (new BigNumber(value)).shiftedBy(-info.shift).toNumber() } return value } diff --git a/src/ledger/parse/utils.ts b/src/ledger/parse/utils.ts index 1f53504c..fe1cf83e 100644 --- a/src/ledger/parse/utils.ts +++ b/src/ledger/parse/utils.ts @@ -15,14 +15,14 @@ function adjustQualityForXRP( const denominatorShift = (takerGetsCurrency === 'XRP' ? -6 : 0) const shift = numeratorShift - denominatorShift return shift === 0 ? quality : - (new BigNumber(quality)).shift(shift).toString() + (new BigNumber(quality)).shiftedBy(shift).toString() } function parseQuality(quality?: number|null): number|undefined { if (typeof quality !== 'number') { return undefined } - return (new BigNumber(quality)).shift(-9).toNumber() + return (new BigNumber(quality)).shiftedBy(-9).toNumber() } function parseTimestamp(rippleTime?: number|null): string|undefined { diff --git a/src/ledger/pathfind.ts b/src/ledger/pathfind.ts index d4143569..652d76d3 100644 --- a/src/ledger/pathfind.ts +++ b/src/ledger/pathfind.ts @@ -73,7 +73,7 @@ function addDirectXrpPath(paths: RippledPathsResponse, xrpBalance: string // Add XRP "path" only if the source acct has enough XRP to make the payment const destinationAmount = paths.destination_amount // @ts-ignore: destinationAmount can be a currency amount object! Fix! - if ((new BigNumber(xrpBalance)).greaterThanOrEqualTo(destinationAmount)) { + if ((new BigNumber(xrpBalance)).isGreaterThanOrEqualTo(destinationAmount)) { paths.alternatives.unshift({ paths_computed: [], source_amount: paths.destination_amount diff --git a/src/transaction/settings.ts b/src/transaction/settings.ts index c7d169cf..bc3a5787 100644 --- a/src/transaction/settings.ts +++ b/src/transaction/settings.ts @@ -62,7 +62,7 @@ function setTransactionFields(txJSON: utils.TransactionJSON, input: FormattedSet */ function convertTransferRate(transferRate: number): number { - return (new BigNumber(transferRate)).shift(9).toNumber() + return (new BigNumber(transferRate)).shiftedBy(9).toNumber() } function formatSignerEntry(signer: WeightedSigner): object { diff --git a/src/transaction/sign.ts b/src/transaction/sign.ts index e3a6a112..af4dc5f7 100644 --- a/src/transaction/sign.ts +++ b/src/transaction/sign.ts @@ -183,7 +183,7 @@ function checkTxSerialization(serialized: string, tx: utils.TransactionJSON): vo function checkFee(api: RippleAPI, txFee: string): void { const fee = new BigNumber(txFee) const maxFeeDrops = xrpToDrops(api._maxFeeXRP) - if (fee.greaterThan(maxFeeDrops)) { + if (fee.isGreaterThan(maxFeeDrops)) { throw new utils.common.errors.ValidationError( `"Fee" should not exceed "${maxFeeDrops}". ` + 'To use a higher fee, set `maxFeeXRP` in the RippleAPI constructor.' diff --git a/src/transaction/trustline.ts b/src/transaction/trustline.ts index 68153ba7..114d111c 100644 --- a/src/transaction/trustline.ts +++ b/src/transaction/trustline.ts @@ -9,7 +9,7 @@ import { import {RippleAPI} from '..' function convertQuality(quality) { - return (new BigNumber(quality)).shift(9).truncated().toNumber() + return (new BigNumber(quality)).shiftedBy(9).integerValue(BigNumber.ROUND_DOWN).toNumber() } function createTrustlineTransaction(account: string, diff --git a/src/transaction/utils.ts b/src/transaction/utils.ts index 6cc7a02d..f859ff3c 100644 --- a/src/transaction/utils.ts +++ b/src/transaction/utils.ts @@ -218,7 +218,7 @@ function prepareTransaction(txJSON: TransactionJSON, api: RippleAPI, instructions.signersCount + 1 if (instructions.fee !== undefined) { const fee = new BigNumber(instructions.fee) - if (fee.greaterThan(api._maxFeeXRP)) { + if (fee.isGreaterThan(api._maxFeeXRP)) { return Promise.reject(new ValidationError(`Fee of ${fee.toString(10)} XRP exceeds ` + `max of ${api._maxFeeXRP} XRP. To use this fee, increase ` + '`maxFeeXRP` in the RippleAPI constructor.')) diff --git a/test/api-test.ts b/test/api-test.ts index c91585ab..ddf272c6 100644 --- a/test/api-test.ts +++ b/test/api-test.ts @@ -3636,7 +3636,7 @@ describe('RippleAPI', function () { .dividedBy(order.specification.quantity.value) .toString(); } - assert((new BigNumber(rate)).greaterThanOrEqualTo(previousRate), + assert((new BigNumber(rate)).isGreaterThanOrEqualTo(previousRate), 'Rates must be sorted from least to greatest: ' + rate + ' should be >= ' + previousRate); previousRate = rate; @@ -3894,7 +3894,7 @@ describe('RippleAPI', function () { .dividedBy(order.specification.quantity.value) .toString(); } - assert((new BigNumber(rate)).greaterThanOrEqualTo(previousRate), + assert((new BigNumber(rate)).isGreaterThanOrEqualTo(previousRate), 'Rates must be sorted from least to greatest: ' + rate + ' should be >= ' + previousRate); previousRate = rate; diff --git a/test/x-address-api-test.js b/test/x-address-api-test.js index 20aba19f..157b3576 100644 --- a/test/x-address-api-test.js +++ b/test/x-address-api-test.js @@ -3437,7 +3437,7 @@ describe('X-address Usage', function () { .dividedBy(order.specification.quantity.value) .toString(); } - assert((new BigNumber(rate)).greaterThanOrEqualTo(previousRate), + assert((new BigNumber(rate)).isGreaterThanOrEqualTo(previousRate), 'Rates must be sorted from least to greatest: ' + rate + ' should be >= ' + previousRate); previousRate = rate; @@ -3695,7 +3695,7 @@ describe('X-address Usage', function () { .dividedBy(order.specification.quantity.value) .toString(); } - assert((new BigNumber(rate)).greaterThanOrEqualTo(previousRate), + assert((new BigNumber(rate)).isGreaterThanOrEqualTo(previousRate), 'Rates must be sorted from least to greatest: ' + rate + ' should be >= ' + previousRate); previousRate = rate; diff --git a/yarn.lock b/yarn.lock index ad36ecec..779ec70f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -568,10 +568,10 @@ bignumber.js@8.1.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== -bignumber.js@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" - integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA== +bignumber.js@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== binary-extensions@^1.0.0: version "1.13.1"