@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
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { NFTMetadataResponse } from "../../types";
3
+ import { NFTMetadataContextAPI, NFTResource } from "./types";
4
+ export declare const metadataCallBatcher: {
5
+ load({ contract, tokenId }: {
6
+ contract: any;
7
+ tokenId: any;
8
+ }): Promise<NFTMetadataResponse>;
9
+ };
10
+ export declare function useNftMetadata(contract: string, tokenId: string): NFTResource;
11
+ export declare function useNftAPI(): NFTMetadataContextAPI;
12
+ declare type NFTMetadataProviderProps = {
13
+ children: React.ReactNode;
14
+ };
15
+ export declare function NftMetadataProvider({ children, }: NFTMetadataProviderProps): React.ReactElement;
16
+ export {};
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAGL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,SAAS,CAAC;AAYjB,eAAO,MAAM,mBAAmB;;;;QAwCC,QAAQ,mBAAmB,CAAC;CAOzD,CAAC;AAEL,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAoB7E;AAED,wBAAgB,SAAS,IAAI,qBAAqB,CAOjD;AAED,aAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,GACT,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAwF/C"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
+ return new (P || (P = Promise))(function (resolve, reject) {
35
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
39
+ });
40
+ };
41
+ var __generator = (this && this.__generator) || function (thisArg, body) {
42
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
+ function verb(n) { return function (v) { return step([n, v]); }; }
45
+ function step(op) {
46
+ if (f) throw new TypeError("Generator is already executing.");
47
+ while (_) try {
48
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
+ if (y = 0, t) op = [op[0] & 2, t.value];
50
+ switch (op[0]) {
51
+ case 0: case 1: t = op; break;
52
+ case 4: _.label++; return { value: op[1], done: false };
53
+ case 5: _.label++; y = op[1]; op = [0]; continue;
54
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
+ default:
56
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
+ if (t[2]) _.ops.pop();
61
+ _.trys.pop(); continue;
62
+ }
63
+ op = body.call(thisArg, _);
64
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
+ }
67
+ };
68
+ var __read = (this && this.__read) || function (o, n) {
69
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
70
+ if (!m) return o;
71
+ var i = m.call(o), r, ar = [], e;
72
+ try {
73
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
74
+ }
75
+ catch (error) { e = { error: error }; }
76
+ finally {
77
+ try {
78
+ if (r && !r.done && (m = i["return"])) m.call(i);
79
+ }
80
+ finally { if (e) throw e.error; }
81
+ }
82
+ return ar;
83
+ };
84
+ exports.__esModule = true;
85
+ exports.NftMetadataProvider = exports.useNftAPI = exports.useNftMetadata = exports.metadataCallBatcher = void 0;
86
+ var react_1 = __importStar(require("react"));
87
+ var cryptoassets_1 = require("@ledgerhq/cryptoassets");
88
+ var Ethereum_1 = require("../../api/Ethereum");
89
+ var helpers_1 = require("../helpers");
90
+ var logic_1 = require("./logic");
91
+ var currency = (0, cryptoassets_1.findCryptoCurrencyById)("ethereum");
92
+ var ethApi = (0, Ethereum_1.apiForCurrency)(currency);
93
+ var NftMetadataContext = (0, react_1.createContext)({
94
+ cache: {},
95
+ loadNFTMetadata: function () { return Promise.resolve(); },
96
+ clearCache: function () { }
97
+ });
98
+ exports.metadataCallBatcher = (function () {
99
+ var batch = [];
100
+ var debounce;
101
+ var timeoutBatchCall = function () {
102
+ // Clear the previous scheduled call if it was existing
103
+ clearTimeout(debounce);
104
+ // Schedule a new call with the whole batch
105
+ debounce = setTimeout(function () {
106
+ // Seperate each batch element properties into arrays by type and index
107
+ var _a = batch.reduce(function (acc, _a) {
108
+ var couple = _a.couple, resolve = _a.resolve, reject = _a.reject;
109
+ acc.couples.push(couple);
110
+ acc.resolvers.push(resolve);
111
+ acc.rejecters.push(reject);
112
+ return acc;
113
+ }, { couples: [], resolvers: [], rejecters: [] }), couples = _a.couples, resolvers = _a.resolvers, rejecters = _a.rejecters;
114
+ // Empty the batch
115
+ batch.length = 0;
116
+ // Make the call with all the couples of contract and tokenId at once
117
+ ethApi
118
+ .getNFTMetadata(couples)
119
+ .then(function (res) {
120
+ // Resolve each batch element with its own resolver and only its response
121
+ res.forEach(function (metadata, index) { return resolvers[index](metadata); });
122
+ })["catch"](function (err) {
123
+ // Reject all batch element with the error
124
+ rejecters.forEach(function (reject) { return reject(err); });
125
+ });
126
+ });
127
+ };
128
+ return {
129
+ // Load the metadata for a given couple contract + tokenId
130
+ load: function (_a) {
131
+ var contract = _a.contract, tokenId = _a.tokenId;
132
+ return new Promise(function (resolve, reject) {
133
+ batch.push({ couple: { contract: contract, tokenId: tokenId }, resolve: resolve, reject: reject });
134
+ timeoutBatchCall();
135
+ });
136
+ }
137
+ };
138
+ })();
139
+ function useNftMetadata(contract, tokenId) {
140
+ var _a = (0, react_1.useContext)(NftMetadataContext), cache = _a.cache, loadNFTMetadata = _a.loadNFTMetadata;
141
+ var key = (0, helpers_1.getNftKey)(contract, tokenId);
142
+ var cachedData = cache[key];
143
+ (0, react_1.useEffect)(function () {
144
+ if (!cachedData || (0, logic_1.isOutdated)(cachedData)) {
145
+ loadNFTMetadata(contract, tokenId);
146
+ }
147
+ }, [contract, tokenId, cachedData, loadNFTMetadata]);
148
+ if (cachedData) {
149
+ return cachedData;
150
+ }
151
+ else {
152
+ return {
153
+ status: "queued"
154
+ };
155
+ }
156
+ }
157
+ exports.useNftMetadata = useNftMetadata;
158
+ function useNftAPI() {
159
+ var _a = (0, react_1.useContext)(NftMetadataContext), clearCache = _a.clearCache, loadNFTMetadata = _a.loadNFTMetadata;
160
+ return {
161
+ clearCache: clearCache,
162
+ loadNFTMetadata: loadNFTMetadata
163
+ };
164
+ }
165
+ exports.useNftAPI = useNftAPI;
166
+ function NftMetadataProvider(_a) {
167
+ var _this = this;
168
+ var children = _a.children;
169
+ var _b = __read((0, react_1.useState)({
170
+ cache: {}
171
+ }), 2), state = _b[0], setState = _b[1];
172
+ var api = (0, react_1.useMemo)(function () { return ({
173
+ loadNFTMetadata: function (contract, tokenId) { return __awaiter(_this, void 0, void 0, function () {
174
+ var key, _a, status_1, result_1, error_1;
175
+ return __generator(this, function (_b) {
176
+ switch (_b.label) {
177
+ case 0:
178
+ key = (0, helpers_1.getNftKey)(contract, tokenId);
179
+ setState(function (oldState) {
180
+ var _a;
181
+ return (__assign(__assign({}, oldState), { cache: __assign(__assign({}, oldState.cache), (_a = {}, _a[key] = {
182
+ status: "loading"
183
+ }, _a)) }));
184
+ });
185
+ _b.label = 1;
186
+ case 1:
187
+ _b.trys.push([1, 3, , 4]);
188
+ return [4 /*yield*/, exports.metadataCallBatcher.load({
189
+ contract: contract,
190
+ tokenId: tokenId
191
+ })];
192
+ case 2:
193
+ _a = _b.sent(), status_1 = _a.status, result_1 = _a.result;
194
+ switch (status_1) {
195
+ case 500:
196
+ throw new Error("NFT Metadata Provider failed");
197
+ case 404:
198
+ setState(function (oldState) {
199
+ var _a;
200
+ return (__assign(__assign({}, oldState), { cache: __assign(__assign({}, oldState.cache), (_a = {}, _a[key] = {
201
+ status: "nodata",
202
+ metadata: null,
203
+ updatedAt: Date.now()
204
+ }, _a)) }));
205
+ });
206
+ break;
207
+ case 200:
208
+ setState(function (oldState) {
209
+ var _a;
210
+ return (__assign(__assign({}, oldState), { cache: __assign(__assign({}, oldState.cache), (_a = {}, _a[key] = {
211
+ status: "loaded",
212
+ metadata: result_1 || {},
213
+ updatedAt: Date.now()
214
+ }, _a)) }));
215
+ });
216
+ break;
217
+ default:
218
+ break;
219
+ }
220
+ return [3 /*break*/, 4];
221
+ case 3:
222
+ error_1 = _b.sent();
223
+ setState(function (oldState) {
224
+ var _a;
225
+ return (__assign(__assign({}, oldState), { cache: __assign(__assign({}, oldState.cache), (_a = {}, _a[key] = {
226
+ status: "error",
227
+ error: error_1,
228
+ updatedAt: Date.now()
229
+ }, _a)) }));
230
+ });
231
+ return [3 /*break*/, 4];
232
+ case 4: return [2 /*return*/];
233
+ }
234
+ });
235
+ }); },
236
+ clearCache: function () {
237
+ setState(function (oldState) { return (__assign(__assign({}, oldState), { cache: {} })); });
238
+ }
239
+ }); }, []);
240
+ var value = __assign(__assign({}, state), api);
241
+ return (react_1["default"].createElement(NftMetadataContext.Provider, { value: value }, children));
242
+ }
243
+ exports.NftMetadataProvider = NftMetadataProvider;
244
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAMe;AACf,uDAA0E;AAC1E,+CAAyD;AAEzD,sCAAuC;AASvC,iCAAqC;AAErC,IAAM,QAAQ,GAAa,IAAA,qCAAsB,EAAC,UAAU,CAAE,CAAC;AAC/D,IAAM,MAAM,GAAQ,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAC;AAE7C,IAAM,kBAAkB,GAAG,IAAA,qBAAa,EAAyB;IAC/D,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,EAAjB,CAAiB;IACxC,UAAU,EAAE,cAAO,CAAC;CACrB,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,CAAC;IAClC,IAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,IAAI,QAAQ,CAAC;IACb,IAAM,gBAAgB,GAAG;QACvB,uDAAuD;QACvD,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvB,2CAA2C;QAC3C,QAAQ,GAAG,UAAU,CAAC;YACpB,uEAAuE;YACjE,IAAA,KAAoC,KAAK,CAAC,MAAM,CACpD,UAAC,GAAG,EAAE,EAA2B;oBAAzB,MAAM,YAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YAAA;gBAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE3B,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAW,CACvD,EATO,OAAO,aAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eASpC,CAAC;YACF,kBAAkB;YAClB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAEjB,qEAAqE;YACrE,MAAM;iBACH,cAAc,CAAC,OAAO,CAAC;iBACvB,IAAI,CAAC,UAAC,GAAG;gBACR,yEAAyE;gBACzE,GAAG,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAE,KAAK,IAAK,OAAA,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAA1B,CAA0B,CAAC,CAAC;YAC/D,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAC,GAAG;gBACT,0CAA0C;gBAC1C,SAAS,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,GAAG,CAAC,EAAX,CAAW,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,0DAA0D;QAC1D,IAAI,EAAJ,UAAK,EAAqB;gBAAnB,QAAQ,cAAA,EAAE,OAAO,aAAA;YACtB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACjC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;gBAC/D,gBAAgB,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC;AAEL,SAAgB,cAAc,CAAC,QAAgB,EAAE,OAAe;IACxD,IAAA,KAA6B,IAAA,kBAAU,EAAC,kBAAkB,CAAC,EAAzD,KAAK,WAAA,EAAE,eAAe,qBAAmC,CAAC;IAElE,IAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEzC,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,UAAU,IAAI,IAAA,kBAAU,EAAC,UAAU,CAAC,EAAE;YACzC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACpC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAErD,IAAI,UAAU,EAAE;QACd,OAAO,UAAU,CAAC;KACnB;SAAM;QACL,OAAO;YACL,MAAM,EAAE,QAAQ;SACjB,CAAC;KACH;AACH,CAAC;AApBD,wCAoBC;AAED,SAAgB,SAAS;IACjB,IAAA,KAAkC,IAAA,kBAAU,EAAC,kBAAkB,CAAC,EAA9D,UAAU,gBAAA,EAAE,eAAe,qBAAmC,CAAC;IAEvE,OAAO;QACL,UAAU,YAAA;QACV,eAAe,iBAAA;KAChB,CAAC;AACJ,CAAC;AAPD,8BAOC;AAMD,SAAgB,mBAAmB,CAAC,EAET;IAF3B,iBA0FC;QAzFC,QAAQ,cAAA;IAEF,IAAA,KAAA,OAAoB,IAAA,gBAAQ,EAA0B;QAC1D,KAAK,EAAE,EAAE;KACV,CAAC,IAAA,EAFK,KAAK,QAAA,EAAE,QAAQ,QAEpB,CAAC;IAEH,IAAM,GAAG,GAAG,IAAA,eAAO,EACjB,cAAM,OAAA,CAAC;QACL,eAAe,EAAE,UAAO,QAAgB,EAAE,OAAe;;;;;wBACjD,GAAG,GAAG,IAAA,mBAAS,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAEzC,QAAQ,CAAC,UAAC,QAAQ;;4BAAK,OAAA,uBAClB,QAAQ,KACX,KAAK,wBACA,QAAQ,CAAC,KAAK,gBAChB,GAAG,IAAG;oCACL,MAAM,EAAE,SAAS;iCAClB,UAEH;wBARqB,CAQrB,CAAC,CAAC;;;;wBAGyB,qBAAM,2BAAmB,CAAC,IAAI,CAAC;gCACxD,QAAQ,UAAA;gCACR,OAAO,SAAA;6BACR,CAAC,EAAA;;wBAHI,KAAqB,SAGzB,EAHM,oBAAM,EAAE,oBAAM;wBAKtB,QAAQ,QAAM,EAAE;4BACd,KAAK,GAAG;gCACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;4BAClD,KAAK,GAAG;gCACN,QAAQ,CAAC,UAAC,QAAQ;;oCAAK,OAAA,uBAClB,QAAQ,KACX,KAAK,wBACA,QAAQ,CAAC,KAAK,gBAChB,GAAG,IAAG;4CACL,MAAM,EAAE,QAAQ;4CAChB,QAAQ,EAAE,IAAI;4CACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yCACtB,UAEH;gCAVqB,CAUrB,CAAC,CAAC;gCACJ,MAAM;4BACR,KAAK,GAAG;gCACN,QAAQ,CAAC,UAAC,QAAQ;;oCAAK,OAAA,uBAClB,QAAQ,KACX,KAAK,wBACA,QAAQ,CAAC,KAAK,gBAChB,GAAG,IAAG;4CACL,MAAM,EAAE,QAAQ;4CAChB,QAAQ,EAAE,QAAM,IAAI,EAAE;4CACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yCACtB,UAEH;gCAVqB,CAUrB,CAAC,CAAC;gCACJ,MAAM;4BACR;gCACE,MAAM;yBACT;;;;wBAED,QAAQ,CAAC,UAAC,QAAQ;;4BAAK,OAAA,uBAClB,QAAQ,KACX,KAAK,wBACA,QAAQ,CAAC,KAAK,gBAChB,GAAG,IAAG;oCACL,MAAM,EAAE,OAAO;oCACf,KAAK,SAAA;oCACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iCACtB,UAEH;wBAVqB,CAUrB,CAAC,CAAC;;;;;aAEP;QACD,UAAU,EAAE;YACV,QAAQ,CAAC,UAAC,QAAQ,IAAK,OAAA,uBAClB,QAAQ,KACX,KAAK,EAAE,EAAE,IACT,EAHqB,CAGrB,CAAC,CAAC;QACN,CAAC;KACF,CAAC,EAxEI,CAwEJ,EACF,EAAE,CACH,CAAC;IAEF,IAAM,KAAK,yBAAQ,KAAK,GAAK,GAAG,CAAE,CAAC;IACnC,OAAO,CACL,iCAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACtC,QAAQ,CACmB,CAC/B,CAAC;AACJ,CAAC;AA1FD,kDA0FC"}
@@ -0,0 +1,3 @@
1
+ import { NFTResource } from "./types";
2
+ export declare function isOutdated(resource: NFTResource): boolean;
3
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAezD"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.isOutdated = void 0;
4
+ // Handle lifecycle of cached data.
5
+ // Expiration date depend on the resource's status.
6
+ function isOutdated(resource) {
7
+ var now = Date.now();
8
+ switch (resource.status) {
9
+ case "loaded": {
10
+ return now - resource.updatedAt > 14 * 24 * 60 * 60 * 1 * 1000; // 14 days
11
+ }
12
+ case "error": {
13
+ return now - resource.updatedAt > 1 * 1000; // 1 second
14
+ }
15
+ case "nodata": {
16
+ return now - resource.updatedAt > 24 * 60 * 60 * 1 * 1000; // 1 day
17
+ }
18
+ }
19
+ return false;
20
+ }
21
+ exports.isOutdated = isOutdated;
22
+ //# sourceMappingURL=logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.js","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/logic.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;AACnC,mDAAmD;AACnD,SAAgB,UAAU,CAAC,QAAqB;IAC9C,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,QAAQ,QAAQ,CAAC,MAAM,EAAE;QACvB,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,GAAG,GAAG,QAAQ,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU;SAC3E;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,GAAG,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW;SACxD;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,GAAG,GAAG,QAAQ,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ;SACpE;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,gCAeC"}
@@ -0,0 +1,44 @@
1
+ import { NFTMetadataResponse } from "../../types";
2
+ export declare type NFTResourceQueued = {
3
+ status: "queued";
4
+ };
5
+ export declare type NFTResourceLoading = {
6
+ status: "loading";
7
+ };
8
+ export declare type NFTResourceLoaded = {
9
+ status: "loaded";
10
+ metadata: Pick<NFTMetadataResponse, "result">;
11
+ updatedAt: number;
12
+ };
13
+ export declare type NFTResourceError = {
14
+ status: "error";
15
+ error: any;
16
+ updatedAt: number;
17
+ };
18
+ export declare type NFTResourceNoData = {
19
+ status: "nodata";
20
+ updatedAt: number;
21
+ };
22
+ export declare type NFTResource = NFTResourceQueued | NFTResourceLoading | NFTResourceLoaded | NFTResourceError | NFTResourceNoData;
23
+ export declare type NFTMetadataContextState = {
24
+ cache: Record<string, NFTResource>;
25
+ };
26
+ export declare type NFTMetadataContextAPI = {
27
+ loadNFTMetadata: (contract: string, tokenId: string) => Promise<void>;
28
+ clearCache: () => void;
29
+ };
30
+ export declare type NFTMetadataContextType = NFTMetadataContextState & NFTMetadataContextAPI;
31
+ export declare type BatchElement = {
32
+ couple: {
33
+ contract: string;
34
+ tokenId: string;
35
+ };
36
+ resolve: (value: NFTMetadataResponse) => void;
37
+ reject: (reason?: Error) => void;
38
+ };
39
+ export declare type Batch = {
40
+ couples: Array<BatchElement["couple"]>;
41
+ resolvers: Array<BatchElement["resolve"]>;
42
+ rejecters: Array<BatchElement["reject"]>;
43
+ };
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC/B,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,WAAW,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,oBAAY,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,oBAAY,sBAAsB,GAAG,uBAAuB,GAC1D,qBAAqB,CAAC;AAExB,oBAAY,YAAY,GAAG;IACzB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,oBAAY,KAAK,GAAG;IAClB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC1C,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { NFT, Operation } from "../types";
2
+ declare type Collection = NFT["collection"];
3
+ export declare type CollectionWithNFT = Collection & {
4
+ nfts: Array<Omit<NFT, "collection">>;
5
+ };
6
+ export declare const nftsFromOperations: (ops: Operation[]) => NFT[];
7
+ export declare const nftsByCollections: (nfts?: NFT[], collectionAddress?: string | undefined) => CollectionWithNFT[];
8
+ export declare const getNftKey: (contract: string, tokenId: string) => string;
9
+ export {};
10
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/nft/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,aAAK,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;AAIpC,oBAAY,iBAAiB,GAAG,UAAU,GAAG;IAC3C,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,SAAS,EAAE,KAAG,GAAG,EAoCxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACtB,GAAG,EAAE,6CAEV,iBAAiB,EAoBnB,CAAC;AAEF,eAAO,MAAM,SAAS,aAAc,MAAM,WAAW,MAAM,KAAG,MAE7D,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ exports.__esModule = true;
28
+ exports.getNftKey = exports.nftsByCollections = exports.nftsFromOperations = void 0;
29
+ var eip55_1 = __importDefault(require("eip55"));
30
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
31
+ var nftsFromOperations = function (ops) {
32
+ var nftsMap = ops
33
+ // if ops are Operations get the prop nftOperations, else ops are considered nftOperations already
34
+ .flatMap(function (op) { var _a; return (((_a = op === null || op === void 0 ? void 0 : op.nftOperations) === null || _a === void 0 ? void 0 : _a.length) ? op.nftOperations : op); })
35
+ .reduce(function (acc, nftOp) {
36
+ var _a;
37
+ if (!(nftOp === null || nftOp === void 0 ? void 0 : nftOp.contract)) {
38
+ return acc;
39
+ }
40
+ // Creating a "token for a contract" unique key
41
+ var contract = eip55_1["default"].encode(nftOp.contract);
42
+ var nftKey = contract + nftOp.tokenId;
43
+ var tokenId = nftOp.tokenId, standard = nftOp.standard, id = nftOp.id;
44
+ var nft = ((_a = acc[nftKey]) !== null && _a !== void 0 ? _a : {
45
+ id: id,
46
+ tokenId: tokenId,
47
+ amount: new bignumber_js_1["default"](0),
48
+ collection: {
49
+ contract: contract,
50
+ standard: standard
51
+ }
52
+ });
53
+ if (nftOp.type === "NFT_IN") {
54
+ nft.amount = nft.amount.plus(nftOp.value);
55
+ }
56
+ else if (nftOp.type === "NFT_OUT") {
57
+ nft.amount = nft.amount.minus(nftOp.value);
58
+ }
59
+ acc[nftKey] = nft;
60
+ return acc;
61
+ }, {});
62
+ return Object.values(nftsMap);
63
+ };
64
+ exports.nftsFromOperations = nftsFromOperations;
65
+ var nftsByCollections = function (nfts, collectionAddress) {
66
+ if (nfts === void 0) { nfts = []; }
67
+ var filteredNfts = collectionAddress
68
+ ? nfts.filter(function (n) { return n.collection.contract === collectionAddress; })
69
+ : nfts;
70
+ var collectionMap = filteredNfts.reduce(function (acc, nft) {
71
+ var collection = nft.collection, nftWithoutCollection = __rest(nft, ["collection"]);
72
+ if (!acc[collection.contract]) {
73
+ acc[collection.contract] = __assign(__assign({}, collection), { nfts: [] });
74
+ }
75
+ acc[collection.contract].nfts.push(nftWithoutCollection);
76
+ return acc;
77
+ }, {});
78
+ return Object.values(collectionMap);
79
+ };
80
+ exports.nftsByCollections = nftsByCollections;
81
+ var getNftKey = function (contract, tokenId) {
82
+ return contract + "-" + tokenId;
83
+ };
84
+ exports.getNftKey = getNftKey;
85
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/nft/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./nftId";
2
+ export * from "./helpers";
3
+ export * from "./NftMetadataProvider";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ exports.__esModule = true;
13
+ __exportStar(require("./nftId"), exports);
14
+ __exportStar(require("./helpers"), exports);
15
+ __exportStar(require("./NftMetadataProvider"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,wDAAsC"}
@@ -0,0 +1,3 @@
1
+ export declare const encodeNftId: (accountId: string, contract: string, tokenId: string) => string;
2
+ export declare const decodeNftId: (id: string) => unknown;
3
+ //# sourceMappingURL=nftId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftId.d.ts","sourceRoot":"","sources":["../../src/nft/nftId.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cACX,MAAM,YACP,MAAM,WACP,MAAM,KACd,MAEF,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,MAAM,KAAG,OAQxC,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ exports.__esModule = true;
19
+ exports.decodeNftId = exports.encodeNftId = void 0;
20
+ var encodeNftId = function (accountId, contract, tokenId) {
21
+ return accountId + "+" + contract + "+" + tokenId.toString();
22
+ };
23
+ exports.encodeNftId = encodeNftId;
24
+ var decodeNftId = function (id) {
25
+ var _a = __read(id.split("+"), 3), accountId = _a[0], contract = _a[1], tokenId = _a[2];
26
+ return {
27
+ accountId: accountId,
28
+ contract: contract,
29
+ tokenId: tokenId
30
+ };
31
+ };
32
+ exports.decodeNftId = decodeNftId;
33
+ //# sourceMappingURL=nftId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftId.js","sourceRoot":"","sources":["../../src/nft/nftId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAO,IAAM,WAAW,GAAG,UACzB,SAAiB,EACjB,QAAgB,EAChB,OAAe;IAEf,OAAU,SAAS,SAAI,QAAQ,SAAI,OAAO,CAAC,QAAQ,EAAI,CAAC;AAC1D,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEK,IAAM,WAAW,GAAG,UAAC,EAAU;IAC9B,IAAA,KAAA,OAAiC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAA7C,SAAS,QAAA,EAAE,QAAQ,QAAA,EAAE,OAAO,QAAiB,CAAC;IAErD,OAAO;QACL,SAAS,WAAA;QACT,QAAQ,UAAA;QACR,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB"}
@@ -8,7 +8,7 @@ export declare function decodeOperationId(id: string): {
8
8
  type: string;
9
9
  };
10
10
  export declare function patchOperationWithHash(operation: Operation, hash: string): Operation;
11
- export declare function flattenOperationWithInternals(op: Operation): Operation[];
11
+ export declare function flattenOperationWithInternalsAndNfts(op: Operation): Operation[];
12
12
  export declare function getOperationAmountNumber(op: Operation): BigNumber;
13
13
  export declare function getOperationAmountNumberWithInternals(op: Operation): BigNumber;
14
14
  export declare const getOperationConfirmationNumber: (operation: Operation, account: Account) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAqB9B;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,GACX,SAAS,CAaX;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAcxE;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAmCjE;AAED,wBAAgB,qCAAqC,CACnD,EAAE,EAAE,SAAS,GACZ,SAAS,CAKX;AAED,eAAO,MAAM,8BAA8B,cAC9B,SAAS,WACX,OAAO,KACf,MAC0E,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CA+B9B;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,GACX,SAAS,CAaX;AAED,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,SAAS,GACZ,SAAS,EAAE,CAmBb;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAqCjE;AAED,wBAAgB,qCAAqC,CACnD,EAAE,EAAE,SAAS,GACZ,SAAS,CAKX;AAED,eAAO,MAAM,8BAA8B,cAC9B,SAAS,WACX,OAAO,KACf,MAC0E,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC"}