@ledgerhq/live-common 21.14.1 → 21.16.2

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.
Files changed (265) hide show
  1. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js +85 -0
  2. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js.map +1 -1
  3. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js +1 -1
  4. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js.map +1 -1
  5. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +2 -2
  6. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js.map +1 -1
  7. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js +20 -10
  8. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js.map +1 -1
  9. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js +1 -1
  10. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js.map +1 -1
  11. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js +1 -1
  12. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js.map +1 -1
  13. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js +2 -2
  14. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js.map +1 -1
  15. package/lib/account/formatters.d.ts.map +1 -1
  16. package/lib/account/formatters.js +33 -1
  17. package/lib/account/formatters.js.map +1 -1
  18. package/lib/account/groupOperations.js +1 -1
  19. package/lib/account/groupOperations.js.map +1 -1
  20. package/lib/account/pending.d.ts +1 -0
  21. package/lib/account/pending.d.ts.map +1 -1
  22. package/lib/account/serialization.d.ts +6 -4
  23. package/lib/account/serialization.d.ts.map +1 -1
  24. package/lib/account/serialization.js +47 -9
  25. package/lib/account/serialization.js.map +1 -1
  26. package/lib/api/Ethereum.d.ts +22 -1
  27. package/lib/api/Ethereum.d.ts.map +1 -1
  28. package/lib/api/Ethereum.js +21 -1
  29. package/lib/api/Ethereum.js.map +1 -1
  30. package/lib/apps/polyfill.d.ts.map +1 -1
  31. package/lib/apps/polyfill.js +3 -0
  32. package/lib/apps/polyfill.js.map +1 -1
  33. package/lib/bridge/jsHelpers.d.ts +2 -1
  34. package/lib/bridge/jsHelpers.d.ts.map +1 -1
  35. package/lib/bridge/jsHelpers.js +27 -1
  36. package/lib/bridge/jsHelpers.js.map +1 -1
  37. package/lib/csvExport.d.ts.map +1 -1
  38. package/lib/csvExport.js +3 -1
  39. package/lib/csvExport.js.map +1 -1
  40. package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
  41. package/lib/currencies/sortByMarketcap.js +8 -1
  42. package/lib/currencies/sortByMarketcap.js.map +1 -1
  43. package/lib/currencies/support.d.ts.map +1 -1
  44. package/lib/currencies/support.js.map +1 -1
  45. package/lib/env.d.ts +15 -5
  46. package/lib/env.d.ts.map +1 -1
  47. package/lib/env.js +11 -0
  48. package/lib/env.js.map +1 -1
  49. package/lib/env.react.d.ts +1 -1
  50. package/lib/env.react.d.ts.map +1 -1
  51. package/lib/families/bitcoin/datasets/bitcoin.d.ts.map +1 -1
  52. package/lib/families/bitcoin/datasets/bitcoin.js +4 -0
  53. package/lib/families/bitcoin/datasets/bitcoin.js.map +1 -1
  54. package/lib/families/bitcoin/datasets/bitcoin_cash.d.ts.map +1 -1
  55. package/lib/families/bitcoin/datasets/bitcoin_cash.js +4 -0
  56. package/lib/families/bitcoin/datasets/bitcoin_cash.js.map +1 -1
  57. package/lib/families/bitcoin/datasets/bitcoin_gold.d.ts.map +1 -1
  58. package/lib/families/bitcoin/datasets/bitcoin_gold.js +4 -0
  59. package/lib/families/bitcoin/datasets/bitcoin_gold.js.map +1 -1
  60. package/lib/families/bitcoin/datasets/dash.d.ts.map +1 -1
  61. package/lib/families/bitcoin/datasets/dash.js +4 -0
  62. package/lib/families/bitcoin/datasets/dash.js.map +1 -1
  63. package/lib/families/bitcoin/datasets/decred.d.ts.map +1 -1
  64. package/lib/families/bitcoin/datasets/decred.js +4 -0
  65. package/lib/families/bitcoin/datasets/decred.js.map +1 -1
  66. package/lib/families/bitcoin/datasets/digibyte.d.ts.map +1 -1
  67. package/lib/families/bitcoin/datasets/digibyte.js +4 -0
  68. package/lib/families/bitcoin/datasets/digibyte.js.map +1 -1
  69. package/lib/families/bitcoin/datasets/dogecoin.d.ts.map +1 -1
  70. package/lib/families/bitcoin/datasets/dogecoin.js +4 -0
  71. package/lib/families/bitcoin/datasets/dogecoin.js.map +1 -1
  72. package/lib/families/bitcoin/datasets/komodo.d.ts.map +1 -1
  73. package/lib/families/bitcoin/datasets/komodo.js +4 -0
  74. package/lib/families/bitcoin/datasets/komodo.js.map +1 -1
  75. package/lib/families/bitcoin/datasets/litecoin.d.ts.map +1 -1
  76. package/lib/families/bitcoin/datasets/litecoin.js +4 -0
  77. package/lib/families/bitcoin/datasets/litecoin.js.map +1 -1
  78. package/lib/families/bitcoin/datasets/peercoin.d.ts.map +1 -1
  79. package/lib/families/bitcoin/datasets/peercoin.js +4 -0
  80. package/lib/families/bitcoin/datasets/peercoin.js.map +1 -1
  81. package/lib/families/bitcoin/datasets/pivx.d.ts.map +1 -1
  82. package/lib/families/bitcoin/datasets/pivx.js +4 -0
  83. package/lib/families/bitcoin/datasets/pivx.js.map +1 -1
  84. package/lib/families/bitcoin/datasets/qtum.d.ts.map +1 -1
  85. package/lib/families/bitcoin/datasets/qtum.js +4 -0
  86. package/lib/families/bitcoin/datasets/qtum.js.map +1 -1
  87. package/lib/families/bitcoin/datasets/stakenet.d.ts.map +1 -1
  88. package/lib/families/bitcoin/datasets/stakenet.js +4 -0
  89. package/lib/families/bitcoin/datasets/stakenet.js.map +1 -1
  90. package/lib/families/bitcoin/datasets/vertcoin.d.ts.map +1 -1
  91. package/lib/families/bitcoin/datasets/vertcoin.js +4 -0
  92. package/lib/families/bitcoin/datasets/vertcoin.js.map +1 -1
  93. package/lib/families/bitcoin/datasets/viacoin.d.ts.map +1 -1
  94. package/lib/families/bitcoin/datasets/viacoin.js +4 -0
  95. package/lib/families/bitcoin/datasets/viacoin.js.map +1 -1
  96. package/lib/families/bitcoin/datasets/zcash.d.ts.map +1 -1
  97. package/lib/families/bitcoin/datasets/zcash.js +4 -0
  98. package/lib/families/bitcoin/datasets/zcash.js.map +1 -1
  99. package/lib/families/bitcoin/datasets/zencash.d.ts.map +1 -1
  100. package/lib/families/bitcoin/datasets/zencash.js +4 -0
  101. package/lib/families/bitcoin/datasets/zencash.js.map +1 -1
  102. package/lib/families/bitcoin/js-buildTransaction.d.ts.map +1 -1
  103. package/lib/families/bitcoin/js-buildTransaction.js +1 -1
  104. package/lib/families/bitcoin/js-buildTransaction.js.map +1 -1
  105. package/lib/families/bitcoin/js-estimateMaxSpendable.d.ts.map +1 -1
  106. package/lib/families/bitcoin/js-estimateMaxSpendable.js +1 -1
  107. package/lib/families/bitcoin/js-estimateMaxSpendable.js.map +1 -1
  108. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  109. package/lib/families/bitcoin/js-synchronisation.js +26 -14
  110. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  111. package/lib/families/bitcoin/logic.d.ts +1 -1
  112. package/lib/families/bitcoin/logic.d.ts.map +1 -1
  113. package/lib/families/bitcoin/logic.js +6 -0
  114. package/lib/families/bitcoin/logic.js.map +1 -1
  115. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  116. package/lib/families/bitcoin/specs.js +2 -1
  117. package/lib/families/bitcoin/specs.js.map +1 -1
  118. package/lib/families/bitcoin/test-dataset.js +2 -2
  119. package/lib/families/bitcoin/test-dataset.js.map +1 -1
  120. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts +2 -1
  121. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts.map +1 -1
  122. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js +16 -12
  123. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js.map +1 -1
  124. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts +2 -1
  125. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts.map +1 -1
  126. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js +12 -7
  127. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js.map +1 -1
  128. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts +2 -1
  129. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts.map +1 -1
  130. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js +12 -7
  131. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js.map +1 -1
  132. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts +2 -1
  133. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts.map +1 -1
  134. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.js.map +1 -1
  135. package/lib/families/bitcoin/wallet-btc/utils.d.ts +38 -1
  136. package/lib/families/bitcoin/wallet-btc/utils.d.ts.map +1 -1
  137. package/lib/families/bitcoin/wallet-btc/utils.js +104 -32
  138. package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
  139. package/lib/families/bitcoin/wallet-btc/wallet.d.ts +1 -1
  140. package/lib/families/bitcoin/wallet-btc/wallet.d.ts.map +1 -1
  141. package/lib/families/bitcoin/wallet-btc/wallet.js +6 -3
  142. package/lib/families/bitcoin/wallet-btc/wallet.js.map +1 -1
  143. package/lib/families/bitcoin/wallet-btc/xpub.js +2 -2
  144. package/lib/families/bitcoin/wallet-btc/xpub.js.map +1 -1
  145. package/lib/families/ethereum/signOperation.d.ts.map +1 -1
  146. package/lib/families/ethereum/signOperation.js +7 -0
  147. package/lib/families/ethereum/signOperation.js.map +1 -1
  148. package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
  149. package/lib/families/ethereum/synchronisation.js +175 -15
  150. package/lib/families/ethereum/synchronisation.js.map +1 -1
  151. package/lib/families/ethereum/versions.d.ts +2 -0
  152. package/lib/families/ethereum/versions.d.ts.map +1 -0
  153. package/lib/families/ethereum/versions.js +5 -0
  154. package/lib/families/ethereum/versions.js.map +1 -0
  155. package/lib/nft/NftMetadataProvider/index.d.ts +17 -0
  156. package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -0
  157. package/lib/nft/NftMetadataProvider/index.js +244 -0
  158. package/lib/nft/NftMetadataProvider/index.js.map +1 -0
  159. package/lib/nft/NftMetadataProvider/logic.d.ts +3 -0
  160. package/lib/nft/NftMetadataProvider/logic.d.ts.map +1 -0
  161. package/lib/nft/NftMetadataProvider/logic.js +22 -0
  162. package/lib/nft/NftMetadataProvider/logic.js.map +1 -0
  163. package/lib/nft/NftMetadataProvider/types.d.ts +44 -0
  164. package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -0
  165. package/lib/nft/NftMetadataProvider/types.js +3 -0
  166. package/lib/nft/NftMetadataProvider/types.js.map +1 -0
  167. package/lib/nft/helpers.d.ts +10 -0
  168. package/lib/nft/helpers.d.ts.map +1 -0
  169. package/lib/nft/helpers.js +85 -0
  170. package/lib/nft/helpers.js.map +1 -0
  171. package/lib/nft/index.d.ts +4 -0
  172. package/lib/nft/index.d.ts.map +1 -0
  173. package/lib/nft/index.js +16 -0
  174. package/lib/nft/index.js.map +1 -0
  175. package/lib/nft/nftId.d.ts +3 -0
  176. package/lib/nft/nftId.d.ts.map +1 -0
  177. package/lib/nft/nftId.js +33 -0
  178. package/lib/nft/nftId.js.map +1 -0
  179. package/lib/operation.d.ts +1 -1
  180. package/lib/operation.d.ts.map +1 -1
  181. package/lib/operation.js +19 -5
  182. package/lib/operation.js.map +1 -1
  183. package/lib/reconciliation.d.ts.map +1 -1
  184. package/lib/reconciliation.js +6 -0
  185. package/lib/reconciliation.js.map +1 -1
  186. package/lib/types/account.d.ts +3 -0
  187. package/lib/types/account.d.ts.map +1 -1
  188. package/lib/types/index.d.ts +1 -0
  189. package/lib/types/index.d.ts.map +1 -1
  190. package/lib/types/index.js +1 -0
  191. package/lib/types/index.js.map +1 -1
  192. package/lib/types/nft.d.ts +29 -0
  193. package/lib/types/nft.d.ts.map +1 -0
  194. package/lib/types/nft.js +3 -0
  195. package/lib/types/nft.js.map +1 -0
  196. package/lib/types/operation.d.ts +12 -1
  197. package/lib/types/operation.d.ts.map +1 -1
  198. package/package.json +13 -13
  199. package/src/.DS_Store +0 -0
  200. package/src/__tests__/__snapshots__/all.libcore.ts.snap +11643 -127265
  201. package/src/__tests__/families/bitcoin/wallet-btc/utils.test.ts +105 -0
  202. package/src/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.ts +3 -2
  203. package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +2 -2
  204. package/src/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.ts +35 -31
  205. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.ts +3 -2
  206. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.ts +3 -2
  207. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.ts +6 -4
  208. package/src/account/formatters.ts +43 -0
  209. package/src/account/groupOperations.ts +2 -2
  210. package/src/account/serialization.ts +52 -0
  211. package/src/api/Ethereum.ts +40 -2
  212. package/src/apps/polyfill.ts +3 -0
  213. package/src/bridge/jsHelpers.ts +35 -0
  214. package/src/csvExport.ts +3 -2
  215. package/src/currencies/.DS_Store +0 -0
  216. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +1354 -1
  217. package/src/currencies/sortByMarketcap.ts +9 -1
  218. package/src/currencies/support.ts +1 -0
  219. package/src/env.ts +11 -0
  220. package/src/families/bitcoin/datasets/bitcoin.ts +4 -0
  221. package/src/families/bitcoin/datasets/bitcoin_cash.ts +4 -0
  222. package/src/families/bitcoin/datasets/bitcoin_gold.ts +4 -0
  223. package/src/families/bitcoin/datasets/dash.ts +4 -0
  224. package/src/families/bitcoin/datasets/decred.ts +4 -0
  225. package/src/families/bitcoin/datasets/digibyte.ts +4 -0
  226. package/src/families/bitcoin/datasets/dogecoin.ts +4 -0
  227. package/src/families/bitcoin/datasets/komodo.ts +4 -0
  228. package/src/families/bitcoin/datasets/litecoin.ts +4 -0
  229. package/src/families/bitcoin/datasets/peercoin.ts +4 -0
  230. package/src/families/bitcoin/datasets/pivx.ts +4 -0
  231. package/src/families/bitcoin/datasets/qtum.ts +4 -0
  232. package/src/families/bitcoin/datasets/stakenet.ts +4 -0
  233. package/src/families/bitcoin/datasets/vertcoin.ts +4 -0
  234. package/src/families/bitcoin/datasets/viacoin.ts +4 -0
  235. package/src/families/bitcoin/datasets/zcash.ts +4 -0
  236. package/src/families/bitcoin/datasets/zencash.ts +4 -0
  237. package/src/families/bitcoin/js-buildTransaction.ts +2 -1
  238. package/src/families/bitcoin/js-estimateMaxSpendable.ts +2 -1
  239. package/src/families/bitcoin/js-synchronisation.ts +30 -16
  240. package/src/families/bitcoin/logic.ts +7 -2
  241. package/src/families/bitcoin/specs.ts +6 -1
  242. package/src/families/bitcoin/test-dataset.ts +2 -2
  243. package/src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts +34 -22
  244. package/src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts +30 -9
  245. package/src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts +30 -9
  246. package/src/families/bitcoin/wallet-btc/pickingstrategies/types.ts +3 -3
  247. package/src/families/bitcoin/wallet-btc/utils.ts +118 -35
  248. package/src/families/bitcoin/wallet-btc/wallet.ts +9 -4
  249. package/src/families/bitcoin/wallet-btc/xpub.ts +5 -5
  250. package/src/families/ethereum/modules/__snapshots__/compound.resilience.test.ts.snap +2876 -0
  251. package/src/families/ethereum/signOperation.ts +8 -0
  252. package/src/families/ethereum/synchronisation.ts +185 -6
  253. package/src/families/ethereum/versions.ts +1 -0
  254. package/src/nft/NftMetadataProvider/index.tsx +205 -0
  255. package/src/nft/NftMetadataProvider/logic.ts +20 -0
  256. package/src/nft/NftMetadataProvider/types.ts +60 -0
  257. package/src/nft/helpers.ts +78 -0
  258. package/src/nft/index.ts +3 -0
  259. package/src/nft/nftId.ts +17 -0
  260. package/src/operation.ts +22 -3
  261. package/src/reconciliation.ts +7 -0
  262. package/src/types/account.ts +4 -0
  263. package/src/types/index.ts +1 -0
  264. package/src/types/nft.ts +38 -0
  265. package/src/types/operation.ts +23 -1
@@ -1,4 +1,5 @@
1
1
  import isEqual from "lodash/isEqual";
2
+ import setWith from "lodash/setWith";
2
3
  import { BigNumber } from "bignumber.js";
3
4
  import { Observable, from } from "rxjs";
4
5
  import { log } from "@ledgerhq/logs";
@@ -34,6 +35,7 @@ import type {
34
35
  SyncConfig,
35
36
  CryptoCurrency,
36
37
  DerivationMode,
38
+ NFT,
37
39
  } from "../types";
38
40
  import type { CurrencyBridge, AccountBridge } from "../types/bridge";
39
41
  import getAddress from "../hw/getAddress";
@@ -116,6 +118,39 @@ Operation[] {
116
118
  return all;
117
119
  }
118
120
 
121
+ export const mergeNfts = (
122
+ oldNfts: NFT[] | undefined,
123
+ newNfts: NFT[] | undefined
124
+ ): NFT[] => {
125
+ if (!newNfts?.length) return oldNfts ?? [];
126
+
127
+ // Getting a map of id => NFT
128
+ const newNftsPerId: Record<string, NFT> = (newNfts as NFT[]).reduce(
129
+ (acc, curr) => setWith(acc, curr.id, curr, Object),
130
+ {}
131
+ );
132
+
133
+ // copying the argument to avoid mutating it
134
+ const nfts = oldNfts?.slice() ?? [];
135
+ for (let i = 0; i < nfts.length; i++) {
136
+ const nft = nfts[i];
137
+ // The NFTs are the same, do don't anything
138
+ if (!newNftsPerId[nft.id] || isEqual(nft, newNftsPerId[nft.id])) {
139
+ // NFT already in, deleting it from the newNfts to keep only the un-added ones at the end
140
+ delete newNftsPerId[nft.id];
141
+ continue;
142
+ }
143
+
144
+ // Use the new NFT instead (as a copy cause we're deleting the reference just after)
145
+ nfts[i] = Object.assign({}, newNftsPerId[nft.id]);
146
+ // Delete it from the newNfts to keep only the un-added ones at the end
147
+ delete newNftsPerId[nft.id];
148
+ }
149
+
150
+ // Adding the rest of newNfts that was not already in oldNfts
151
+ return nfts.concat(Object.values(newNftsPerId));
152
+ };
153
+
119
154
  export const makeSync =
120
155
  (
121
156
  getAccountShape: GetAccountShape,
package/src/csvExport.ts CHANGED
@@ -2,7 +2,7 @@ import { BigNumber } from "bignumber.js";
2
2
  import type { Currency, Account, AccountLike, Operation } from "./types";
3
3
  import { formatCurrencyUnit } from "./currencies";
4
4
  import { getAccountCurrency, getMainAccount, flattenAccounts } from "./account";
5
- import { flattenOperationWithInternals } from "./operation";
5
+ import { flattenOperationWithInternalsAndNfts } from "./operation";
6
6
  import { calculate } from "./countervalues/logic";
7
7
  import type { CounterValuesState } from "./countervalues/types";
8
8
 
@@ -143,7 +143,8 @@ const accountRows = (
143
143
  ): Array<string[]> =>
144
144
  account.operations
145
145
  .reduce(
146
- (ops: Operation[], op) => ops.concat(flattenOperationWithInternals(op)),
146
+ (ops: Operation[], op) =>
147
+ ops.concat(flattenOperationWithInternalsAndNfts(op)),
147
148
  []
148
149
  )
149
150
  .map((operation) =>
Binary file