@ledgerhq/live-common 21.13.2 → 21.16.0
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/lib/__tests__/derivation.js +1 -1
- package/lib/__tests__/derivation.js.map +1 -1
- package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +2 -2
- package/lib/account/groupOperations.js +1 -1
- package/lib/account/groupOperations.js.map +1 -1
- package/lib/account/pending.d.ts +1 -0
- package/lib/account/pending.d.ts.map +1 -1
- package/lib/account/serialization.d.ts +6 -4
- package/lib/account/serialization.d.ts.map +1 -1
- package/lib/account/serialization.js +47 -9
- package/lib/account/serialization.js.map +1 -1
- package/lib/api/Ethereum.d.ts +22 -1
- package/lib/api/Ethereum.d.ts.map +1 -1
- package/lib/api/Ethereum.js +21 -1
- package/lib/api/Ethereum.js.map +1 -1
- package/lib/apps/polyfill.d.ts.map +1 -1
- package/lib/apps/polyfill.js +1 -0
- package/lib/apps/polyfill.js.map +1 -1
- package/lib/bridge/jsHelpers.d.ts +2 -1
- package/lib/bridge/jsHelpers.d.ts.map +1 -1
- package/lib/bridge/jsHelpers.js +27 -1
- package/lib/bridge/jsHelpers.js.map +1 -1
- package/lib/csvExport.d.ts.map +1 -1
- package/lib/csvExport.js +3 -1
- package/lib/csvExport.js.map +1 -1
- package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
- package/lib/currencies/sortByMarketcap.js +8 -1
- package/lib/currencies/sortByMarketcap.js.map +1 -1
- package/lib/derivation.js +1 -1
- package/lib/derivation.js.map +1 -1
- package/lib/env.d.ts +15 -5
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +12 -1
- package/lib/env.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/families/bitcoin/cache.d.ts +1 -0
- package/lib/families/bitcoin/cache.d.ts.map +1 -1
- package/lib/families/bitcoin/cache.js +7 -1
- package/lib/families/bitcoin/cache.js.map +1 -1
- package/lib/families/bitcoin/errors.d.ts +4 -0
- package/lib/families/bitcoin/errors.d.ts.map +1 -0
- package/lib/families/bitcoin/errors.js +6 -0
- package/lib/families/bitcoin/errors.js.map +1 -0
- package/lib/families/bitcoin/js-getTransactionStatus.d.ts.map +1 -1
- package/lib/families/bitcoin/js-getTransactionStatus.js +24 -11
- package/lib/families/bitcoin/js-getTransactionStatus.js.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.js +8 -19
- package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
- package/lib/families/bitcoin/logic.d.ts +1 -1
- package/lib/families/bitcoin/logic.d.ts.map +1 -1
- package/lib/families/bitcoin/logic.js +6 -0
- package/lib/families/bitcoin/logic.js.map +1 -1
- package/lib/families/bitcoin/specs.d.ts.map +1 -1
- package/lib/families/bitcoin/specs.js +2 -1
- package/lib/families/bitcoin/specs.js.map +1 -1
- package/lib/families/bitcoin/test-dataset.js +2 -2
- package/lib/families/bitcoin/test-dataset.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.js +36 -5
- package/lib/families/bitcoin/wallet-btc/crypto/base.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js +19 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.js +0 -3
- package/lib/families/bitcoin/wallet-btc/explorer/index.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/index.d.ts +2 -2
- package/lib/families/bitcoin/wallet-btc/index.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/index.js +4 -5
- package/lib/families/bitcoin/wallet-btc/index.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js +3 -3
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js +5 -5
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js +5 -5
- package/lib/families/bitcoin/wallet-btc/utils.d.ts +3 -1
- package/lib/families/bitcoin/wallet-btc/utils.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/utils.js +30 -10
- package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/wallet.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/wallet.js +5 -3
- package/lib/families/bitcoin/wallet-btc/wallet.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/xpub.d.ts +2 -6
- package/lib/families/bitcoin/wallet-btc/xpub.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/xpub.js +62 -52
- package/lib/families/bitcoin/wallet-btc/xpub.js.map +1 -1
- package/lib/families/elrond/js-getTransactionStatus.d.ts.map +1 -1
- package/lib/families/elrond/js-getTransactionStatus.js +3 -0
- package/lib/families/elrond/js-getTransactionStatus.js.map +1 -1
- package/lib/families/elrond/js-signOperation.d.ts.map +1 -1
- package/lib/families/elrond/js-signOperation.js +3 -1
- package/lib/families/elrond/js-signOperation.js.map +1 -1
- package/lib/families/ethereum/signOperation.d.ts.map +1 -1
- package/lib/families/ethereum/signOperation.js +7 -0
- package/lib/families/ethereum/signOperation.js.map +1 -1
- package/lib/families/ethereum/specs.d.ts +1 -0
- package/lib/families/ethereum/specs.d.ts.map +1 -1
- package/lib/families/ethereum/specs.js +41 -0
- package/lib/families/ethereum/specs.js.map +1 -1
- package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
- package/lib/families/ethereum/synchronisation.js +175 -15
- package/lib/families/ethereum/synchronisation.js.map +1 -1
- package/lib/families/ethereum/versions.d.ts +2 -0
- package/lib/families/ethereum/versions.d.ts.map +1 -0
- package/lib/families/ethereum/versions.js +5 -0
- package/lib/families/ethereum/versions.js.map +1 -0
- package/lib/generated/specs.d.ts +1 -0
- package/lib/generated/specs.d.ts.map +1 -1
- package/lib/nft/NftMetadataProvider/index.d.ts +10 -0
- package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/index.js +244 -0
- package/lib/nft/NftMetadataProvider/index.js.map +1 -0
- package/lib/nft/NftMetadataProvider/logic.d.ts +3 -0
- package/lib/nft/NftMetadataProvider/logic.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/logic.js +22 -0
- package/lib/nft/NftMetadataProvider/logic.js.map +1 -0
- package/lib/nft/NftMetadataProvider/types.d.ts +44 -0
- package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/types.js +3 -0
- package/lib/nft/NftMetadataProvider/types.js.map +1 -0
- package/lib/nft/helpers.d.ts +10 -0
- package/lib/nft/helpers.d.ts.map +1 -0
- package/lib/nft/helpers.js +85 -0
- package/lib/nft/helpers.js.map +1 -0
- package/lib/nft/index.d.ts +4 -0
- package/lib/nft/index.d.ts.map +1 -0
- package/lib/nft/index.js +16 -0
- package/lib/nft/index.js.map +1 -0
- package/lib/nft/nftId.d.ts +3 -0
- package/lib/nft/nftId.d.ts.map +1 -0
- package/lib/nft/nftId.js +33 -0
- package/lib/nft/nftId.js.map +1 -0
- package/lib/operation.d.ts +1 -1
- package/lib/operation.d.ts.map +1 -1
- package/lib/operation.js +19 -5
- package/lib/operation.js.map +1 -1
- package/lib/reconciliation.d.ts.map +1 -1
- package/lib/reconciliation.js +6 -0
- package/lib/reconciliation.js.map +1 -1
- package/lib/types/account.d.ts +3 -0
- package/lib/types/account.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1 -0
- package/lib/types/index.js.map +1 -1
- package/lib/types/nft.d.ts +29 -0
- package/lib/types/nft.d.ts.map +1 -0
- package/lib/types/nft.js +3 -0
- package/lib/types/nft.js.map +1 -0
- package/lib/types/operation.d.ts +12 -1
- package/lib/types/operation.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/__tests__/__snapshots__/all.libcore.ts.snap +64428 -57815
- package/src/__tests__/derivation.ts +1 -1
- package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +2 -2
- package/src/account/groupOperations.ts +2 -2
- package/src/account/serialization.ts +52 -0
- package/src/api/Ethereum.ts +40 -2
- package/src/apps/polyfill.ts +1 -0
- package/src/bridge/jsHelpers.ts +35 -0
- package/src/csvExport.ts +3 -2
- package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +1361 -1
- package/src/currencies/sortByMarketcap.ts +9 -1
- package/src/derivation.ts +1 -1
- package/src/env.ts +12 -1
- package/src/families/bitcoin/cache.ts +12 -0
- package/src/families/bitcoin/errors.ts +5 -0
- package/src/families/bitcoin/js-getTransactionStatus.ts +15 -1
- package/src/families/bitcoin/js-synchronisation.ts +11 -25
- package/src/families/bitcoin/logic.ts +7 -2
- package/src/families/bitcoin/specs.ts +6 -1
- package/src/families/bitcoin/test-dataset.ts +2 -2
- package/src/families/bitcoin/wallet-btc/crypto/base.ts +40 -5
- package/src/families/bitcoin/wallet-btc/crypto/bitcoin.ts +21 -1
- package/src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts +5 -0
- package/src/families/bitcoin/wallet-btc/crypto/types.ts +1 -0
- package/src/families/bitcoin/wallet-btc/crypto/zec.ts +5 -0
- package/src/families/bitcoin/wallet-btc/crypto/zen.ts +5 -0
- package/src/families/bitcoin/wallet-btc/explorer/index.ts +0 -5
- package/src/families/bitcoin/wallet-btc/index.ts +4 -4
- package/src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts +3 -3
- package/src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts +5 -5
- package/src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts +5 -5
- package/src/families/bitcoin/wallet-btc/utils.ts +34 -9
- package/src/families/bitcoin/wallet-btc/wallet.ts +4 -2
- package/src/families/bitcoin/wallet-btc/xpub.ts +37 -53
- package/src/families/elrond/js-getTransactionStatus.ts +4 -0
- package/src/families/elrond/js-signOperation.ts +3 -1
- package/src/families/ethereum/modules/__snapshots__/compound.resilience.test.ts.snap +2876 -0
- package/src/families/ethereum/signOperation.ts +8 -0
- package/src/families/ethereum/specs.ts +47 -0
- package/src/families/ethereum/synchronisation.ts +185 -6
- package/src/families/ethereum/versions.ts +1 -0
- package/src/nft/NftMetadataProvider/index.tsx +205 -0
- package/src/nft/NftMetadataProvider/logic.ts +20 -0
- package/src/nft/NftMetadataProvider/types.ts +60 -0
- package/src/nft/helpers.ts +78 -0
- package/src/nft/index.ts +3 -0
- package/src/nft/nftId.ts +17 -0
- package/src/operation.ts +22 -3
- package/src/reconciliation.ts +7 -0
- package/src/types/account.ts +4 -0
- package/src/types/index.ts +1 -0
- package/src/types/nft.ts +38 -0
- package/src/types/operation.ts +23 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { maxBy, range, some } from "lodash";
|
|
2
2
|
import BigNumber from "bignumber.js";
|
|
3
|
-
import { Address, IStorage } from "./storage/types";
|
|
3
|
+
import { TX, Address, IStorage } from "./storage/types";
|
|
4
4
|
import EventEmitter from "./utils/eventemitter";
|
|
5
5
|
import { IExplorer } from "./explorer/types";
|
|
6
6
|
import { ICrypto } from "./crypto/types";
|
|
@@ -20,9 +20,9 @@ class Xpub extends EventEmitter {
|
|
|
20
20
|
|
|
21
21
|
derivationMode: string;
|
|
22
22
|
|
|
23
|
-
freshAddress:
|
|
23
|
+
freshAddress: string;
|
|
24
24
|
|
|
25
|
-
freshAddressIndex:
|
|
25
|
+
freshAddressIndex: number;
|
|
26
26
|
|
|
27
27
|
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/27a840aac4a12338f1e40c54f3759bbd7a559944/src/bufferutils.js#L24
|
|
28
28
|
// only works with number so we need to be sure to pass correct numbers
|
|
@@ -54,6 +54,8 @@ class Xpub extends EventEmitter {
|
|
|
54
54
|
this.crypto = crypto;
|
|
55
55
|
this.xpub = xpub;
|
|
56
56
|
this.derivationMode = derivationMode;
|
|
57
|
+
this.freshAddress = "";
|
|
58
|
+
this.freshAddressIndex = 0;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
async syncAddress(account: number, index: number) {
|
|
@@ -78,9 +80,7 @@ class Xpub extends EventEmitter {
|
|
|
78
80
|
|
|
79
81
|
// TODO handle eventual reorg case using lastBlock
|
|
80
82
|
|
|
81
|
-
let added = 0;
|
|
82
83
|
let total = 0;
|
|
83
|
-
|
|
84
84
|
try {
|
|
85
85
|
// TODO perf: bad : looping in the tx array
|
|
86
86
|
await this.checkAddressReorg(account, index);
|
|
@@ -95,20 +95,7 @@ class Xpub extends EventEmitter {
|
|
|
95
95
|
if (hasPendings) {
|
|
96
96
|
await this.storage.removePendingTxs({ account, index });
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
// eslint-disable-next-line no-cond-assign,no-await-in-loop
|
|
100
|
-
while (
|
|
101
|
-
(added = await this.fetchHydrateAndStoreNewTxs(address, account, index))
|
|
102
|
-
) {
|
|
103
|
-
total += added;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const pendingTxs = await this.explorer.getPendings({
|
|
107
|
-
address,
|
|
108
|
-
account,
|
|
109
|
-
index,
|
|
110
|
-
});
|
|
111
|
-
await this.storage.appendTxs(pendingTxs);
|
|
98
|
+
total = await this.fetchHydrateAndStoreNewTxs(address, account, index);
|
|
112
99
|
} catch (e) {
|
|
113
100
|
this.emitSyncedFailed(data);
|
|
114
101
|
throw e;
|
|
@@ -120,11 +107,8 @@ class Xpub extends EventEmitter {
|
|
|
120
107
|
account,
|
|
121
108
|
index,
|
|
122
109
|
});
|
|
123
|
-
if (lastTx) {
|
|
124
|
-
this.freshAddressIndex
|
|
125
|
-
this.freshAddressIndex[account],
|
|
126
|
-
index + 1
|
|
127
|
-
);
|
|
110
|
+
if (account === 0 && lastTx) {
|
|
111
|
+
this.freshAddressIndex = Math.max(this.freshAddressIndex, index + 1);
|
|
128
112
|
}
|
|
129
113
|
return !!lastTx;
|
|
130
114
|
}
|
|
@@ -137,13 +121,6 @@ class Xpub extends EventEmitter {
|
|
|
137
121
|
}
|
|
138
122
|
|
|
139
123
|
async syncAccount(account: number) {
|
|
140
|
-
this.freshAddressIndex[account] = 0;
|
|
141
|
-
this.freshAddress[account] = this.crypto.getAddress(
|
|
142
|
-
this.derivationMode,
|
|
143
|
-
this.xpub,
|
|
144
|
-
account,
|
|
145
|
-
0
|
|
146
|
-
);
|
|
147
124
|
await this.whenSynced("account", account.toString());
|
|
148
125
|
|
|
149
126
|
this.emitSyncing({
|
|
@@ -174,26 +151,19 @@ class Xpub extends EventEmitter {
|
|
|
174
151
|
account,
|
|
175
152
|
index,
|
|
176
153
|
});
|
|
177
|
-
this.freshAddress[account] = this.crypto.getAddress(
|
|
178
|
-
this.derivationMode,
|
|
179
|
-
this.xpub,
|
|
180
|
-
account,
|
|
181
|
-
this.freshAddressIndex[account]
|
|
182
|
-
);
|
|
183
154
|
return index;
|
|
184
155
|
}
|
|
185
156
|
|
|
186
157
|
// TODO : test fail case + incremental
|
|
187
158
|
async sync() {
|
|
188
159
|
await this.whenSynced("all");
|
|
189
|
-
|
|
190
160
|
this.emitSyncing({ type: "all" });
|
|
191
|
-
|
|
161
|
+
this.freshAddressIndex = 0;
|
|
192
162
|
let account = 0;
|
|
193
|
-
|
|
194
163
|
try {
|
|
195
164
|
// eslint-disable-next-line no-await-in-loop
|
|
196
|
-
while (await this.syncAccount(account)) {
|
|
165
|
+
while (account < 2 && (await this.syncAccount(account))) {
|
|
166
|
+
// account=0 for receive address; account=1 for change address. No need to handle account>1
|
|
197
167
|
account += 1;
|
|
198
168
|
}
|
|
199
169
|
} catch (e) {
|
|
@@ -202,7 +172,12 @@ class Xpub extends EventEmitter {
|
|
|
202
172
|
}
|
|
203
173
|
|
|
204
174
|
this.emitSynced({ type: "all", account });
|
|
205
|
-
|
|
175
|
+
this.freshAddress = this.crypto.getAddress(
|
|
176
|
+
this.derivationMode,
|
|
177
|
+
this.xpub,
|
|
178
|
+
0,
|
|
179
|
+
this.freshAddressIndex
|
|
180
|
+
);
|
|
206
181
|
return account;
|
|
207
182
|
}
|
|
208
183
|
|
|
@@ -440,18 +415,27 @@ class Xpub extends EventEmitter {
|
|
|
440
415
|
account: number,
|
|
441
416
|
index: number
|
|
442
417
|
) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
418
|
+
let pendingTxs: TX[] = [];
|
|
419
|
+
let txs: TX[] = [];
|
|
420
|
+
let inserted = 0;
|
|
421
|
+
do {
|
|
422
|
+
const lastTx = await this.storage.getLastTx({
|
|
423
|
+
account,
|
|
424
|
+
index,
|
|
425
|
+
confirmed: true,
|
|
426
|
+
});
|
|
448
427
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
428
|
+
txs = await this.explorer.getAddressTxsSinceLastTxBlock(
|
|
429
|
+
this.txsSyncArraySize,
|
|
430
|
+
{ address, account, index },
|
|
431
|
+
lastTx
|
|
432
|
+
);
|
|
433
|
+
if (pendingTxs.length === 0) {
|
|
434
|
+
pendingTxs = txs.filter((tx) => !tx.block);
|
|
435
|
+
}
|
|
436
|
+
inserted += await this.storage.appendTxs(txs.filter((tx) => tx.block)); // only insert not pending tx
|
|
437
|
+
} while (txs.length - pendingTxs.length >= this.txsSyncArraySize); // check whether page is full, if not, it is the last page
|
|
438
|
+
inserted += await this.storage.appendTxs(pendingTxs);
|
|
455
439
|
return inserted;
|
|
456
440
|
}
|
|
457
441
|
|
|
@@ -32,6 +32,10 @@ const getTransactionStatus = async (
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const estimatedFees = t.fees || new BigNumber(0);
|
|
35
|
+
if (estimatedFees.gt(a.balance)) {
|
|
36
|
+
errors.amount = new NotEnoughBalance();
|
|
37
|
+
}
|
|
38
|
+
|
|
35
39
|
const totalSpent = useAllAmount
|
|
36
40
|
? a.balance
|
|
37
41
|
: new BigNumber(t.amount).plus(estimatedFees);
|
|
@@ -15,7 +15,9 @@ const buildOptimisticOperation = (
|
|
|
15
15
|
fee: BigNumber
|
|
16
16
|
): Operation => {
|
|
17
17
|
const type = "OUT";
|
|
18
|
-
const value =
|
|
18
|
+
const value = transaction.useAllAmount
|
|
19
|
+
? account.balance.minus(fee)
|
|
20
|
+
: new BigNumber(transaction.amount);
|
|
19
21
|
const operation: Operation = {
|
|
20
22
|
id: encodeOperationId(account.id, "", type),
|
|
21
23
|
hash: "",
|