@bitpay-labs/bitcore-wallet-service 11.10.1 → 11.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bws.example.config.js +4 -3
- package/package.json +5 -5
- package/src/config.ts +4 -3
- package/src/externalservices/moonpay.ts +10 -0
- package/src/externalservices/transak.ts +20 -28
- package/src/lib/blockchainexplorers/v8.ts +19 -0
- package/src/lib/chain/xrp/index.ts +13 -8
- package/src/lib/common/defaults.ts +3 -0
- package/src/lib/common/utils.ts +3 -3
- package/src/lib/emailservice.ts +2 -1
- package/src/lib/model/txproposal.ts +4 -0
- package/src/lib/pushnotificationsservice.ts +2 -1
- package/src/lib/routes/services.ts +22 -6
- package/src/lib/routes/tss.ts +1 -1
- package/src/lib/routes/wallets.ts +16 -1
- package/src/lib/server.ts +47 -2
- package/test/chain/xrp.test.ts +21 -0
- package/test/integration/externalservices/moonpay.test.ts +14 -2
- package/test/integration/server.test.ts +138 -0
- package/ts_build/package.json +1 -1
- package/ts_build/src/config.d.ts.map +1 -1
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/externalservices/moonpay.d.ts.map +1 -1
- package/ts_build/src/externalservices/moonpay.js +6 -0
- package/ts_build/src/externalservices/moonpay.js.map +1 -1
- package/ts_build/src/externalservices/transak.d.ts.map +1 -1
- package/ts_build/src/externalservices/transak.js +20 -30
- package/ts_build/src/externalservices/transak.js.map +1 -1
- package/ts_build/src/lib/blockchainexplorers/v8.d.ts +3 -0
- package/ts_build/src/lib/blockchainexplorers/v8.d.ts.map +1 -1
- package/ts_build/src/lib/blockchainexplorers/v8.js +18 -0
- package/ts_build/src/lib/blockchainexplorers/v8.js.map +1 -1
- package/ts_build/src/lib/chain/xrp/index.d.ts.map +1 -1
- package/ts_build/src/lib/chain/xrp/index.js +12 -8
- package/ts_build/src/lib/chain/xrp/index.js.map +1 -1
- package/ts_build/src/lib/common/defaults.d.ts +1 -0
- package/ts_build/src/lib/common/defaults.d.ts.map +1 -1
- package/ts_build/src/lib/common/defaults.js +1 -0
- package/ts_build/src/lib/common/defaults.js.map +1 -1
- package/ts_build/src/lib/common/index.d.ts +2 -1
- package/ts_build/src/lib/common/index.d.ts.map +1 -1
- package/ts_build/src/lib/common/utils.d.ts +1 -1
- package/ts_build/src/lib/common/utils.d.ts.map +1 -1
- package/ts_build/src/lib/common/utils.js.map +1 -1
- package/ts_build/src/lib/emailservice.d.ts.map +1 -1
- package/ts_build/src/lib/emailservice.js +1 -1
- package/ts_build/src/lib/emailservice.js.map +1 -1
- package/ts_build/src/lib/model/txproposal.d.ts +2 -0
- package/ts_build/src/lib/model/txproposal.d.ts.map +1 -1
- package/ts_build/src/lib/model/txproposal.js +3 -0
- package/ts_build/src/lib/model/txproposal.js.map +1 -1
- package/ts_build/src/lib/pushnotificationsservice.d.ts.map +1 -1
- package/ts_build/src/lib/pushnotificationsservice.js +1 -1
- package/ts_build/src/lib/pushnotificationsservice.js.map +1 -1
- package/ts_build/src/lib/routes/services.d.ts.map +1 -1
- package/ts_build/src/lib/routes/services.js +22 -6
- package/ts_build/src/lib/routes/services.js.map +1 -1
- package/ts_build/src/lib/routes/tss.js +0 -1
- package/ts_build/src/lib/routes/tss.js.map +1 -1
- package/ts_build/src/lib/routes/wallets.d.ts.map +1 -1
- package/ts_build/src/lib/routes/wallets.js +15 -0
- package/ts_build/src/lib/routes/wallets.js.map +1 -1
- package/ts_build/src/lib/server.d.ts +3 -0
- package/ts_build/src/lib/server.d.ts.map +1 -1
- package/ts_build/src/lib/server.js +41 -2
- package/ts_build/src/lib/server.js.map +1 -1
- package/ts_build/test/chain/xrp.test.js +19 -0
- package/ts_build/test/chain/xrp.test.js.map +1 -1
- package/ts_build/test/integration/externalservices/moonpay.test.js +14 -2
- package/ts_build/test/integration/externalservices/moonpay.test.js.map +1 -1
- package/ts_build/test/integration/server.test.js +115 -0
- package/ts_build/test/integration/server.test.js.map +1 -1
|
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.UPGRADES = exports.WalletService = void 0;
|
|
40
40
|
exports.checkRequired = checkRequired;
|
|
41
|
+
const util_1 = __importDefault(require("util"));
|
|
41
42
|
const crypto_wallet_core_1 = require("@bitpay-labs/crypto-wallet-core");
|
|
42
43
|
const async = __importStar(require("async"));
|
|
43
44
|
const email_validator_1 = __importDefault(require("email-validator"));
|
|
@@ -2260,7 +2261,8 @@ class WalletService {
|
|
|
2260
2261
|
fromAta: opts.fromAta,
|
|
2261
2262
|
decimals: opts.decimals,
|
|
2262
2263
|
refreshOnPublish: opts.refreshOnPublish,
|
|
2263
|
-
deferNonce: opts.deferNonce
|
|
2264
|
+
deferNonce: opts.deferNonce,
|
|
2265
|
+
flags: opts.flags
|
|
2264
2266
|
};
|
|
2265
2267
|
txp = model_1.TxProposal.create(txOpts);
|
|
2266
2268
|
next();
|
|
@@ -2615,6 +2617,16 @@ class WalletService {
|
|
|
2615
2617
|
return cb(errordefinitions_1.Errors.TX_NONCE_CONFLICT);
|
|
2616
2618
|
}
|
|
2617
2619
|
}
|
|
2620
|
+
if (txp.nonce != null && txp.deferNonce) {
|
|
2621
|
+
const broadcastedTxps = await util_1.default.promisify(this.storage.fetchBroadcastedTxs).call(this.storage, this.walletId, {
|
|
2622
|
+
minTs: Math.floor(Date.now() / 1000) - Defaults.BROADCASTED_NONCE_SCAN_WINDOW
|
|
2623
|
+
});
|
|
2624
|
+
for (const t of broadcastedTxps || []) {
|
|
2625
|
+
if (t.id !== txp.id && t.nonce != null && Number(t.nonce) === Number(txp.nonce)) {
|
|
2626
|
+
return cb(errordefinitions_1.Errors.TX_NONCE_CONFLICT);
|
|
2627
|
+
}
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2618
2630
|
}
|
|
2619
2631
|
catch (err) {
|
|
2620
2632
|
return cb(err);
|
|
@@ -2715,8 +2727,14 @@ class WalletService {
|
|
|
2715
2727
|
const pendingNonces = pendingTxps
|
|
2716
2728
|
.filter(t => t.id !== txp.id && t.nonce != null && t.status !== 'rejected')
|
|
2717
2729
|
.map(t => Number(t.nonce));
|
|
2730
|
+
const broadcastedTxps = await util_1.default.promisify(this.storage.fetchBroadcastedTxs).call(this.storage, this.walletId, {
|
|
2731
|
+
minTs: Math.floor(Date.now() / 1000) - Defaults.BROADCASTED_NONCE_SCAN_WINDOW
|
|
2732
|
+
});
|
|
2733
|
+
const inFlightNonces = (broadcastedTxps || [])
|
|
2734
|
+
.filter(t => t.nonce != null && Number(t.nonce) >= Number(confirmedNonce))
|
|
2735
|
+
.map(t => Number(t.nonce));
|
|
2718
2736
|
let suggestedNonce = Number(confirmedNonce);
|
|
2719
|
-
const allNonces = pendingNonces.sort((a, b) => a - b);
|
|
2737
|
+
const allNonces = [...pendingNonces, ...inFlightNonces].sort((a, b) => a - b);
|
|
2720
2738
|
for (const n of allNonces) {
|
|
2721
2739
|
if (n === suggestedNonce) {
|
|
2722
2740
|
suggestedNonce++;
|
|
@@ -4046,6 +4064,27 @@ class WalletService {
|
|
|
4046
4064
|
});
|
|
4047
4065
|
});
|
|
4048
4066
|
}
|
|
4067
|
+
async getFlags(opts) {
|
|
4068
|
+
try {
|
|
4069
|
+
const wallet = await util_1.default.promisify(this.getWallet).call(this, {});
|
|
4070
|
+
if (wallet.chain !== 'xrp')
|
|
4071
|
+
throw new Error('Flags are only supported for XRP wallets');
|
|
4072
|
+
const addresses = await util_1.default.promisify(this.storage.fetchAddresses).call(this.storage, this.walletId);
|
|
4073
|
+
const addressObj = addresses.find(a => a.path === `m/0/${opts.account || 0}`);
|
|
4074
|
+
if (!addressObj)
|
|
4075
|
+
throw new Error('Could not find address for account ' + opts.account);
|
|
4076
|
+
const bc = this._getBlockchainExplorer(wallet.chain, wallet.network);
|
|
4077
|
+
if (!bc)
|
|
4078
|
+
throw new Error('Could not get blockchain explorer instance');
|
|
4079
|
+
const address = addressObj.address.split(':')[0];
|
|
4080
|
+
const flags = await bc.getFlags({ address });
|
|
4081
|
+
return flags;
|
|
4082
|
+
}
|
|
4083
|
+
catch (err) {
|
|
4084
|
+
this.logw('Error getting flags: %o', err);
|
|
4085
|
+
throw err;
|
|
4086
|
+
}
|
|
4087
|
+
}
|
|
4049
4088
|
static upgradeNeeded(paths, opts) {
|
|
4050
4089
|
paths = Array.isArray(paths) ? paths : [paths];
|
|
4051
4090
|
const chain = opts.chain?.toLowerCase();
|