@ledgerhq/live-common 21.14.1 → 21.15.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.
Files changed (106) hide show
  1. package/lib/account/groupOperations.js +1 -1
  2. package/lib/account/groupOperations.js.map +1 -1
  3. package/lib/account/pending.d.ts +1 -0
  4. package/lib/account/pending.d.ts.map +1 -1
  5. package/lib/account/serialization.d.ts +6 -4
  6. package/lib/account/serialization.d.ts.map +1 -1
  7. package/lib/account/serialization.js +47 -9
  8. package/lib/account/serialization.js.map +1 -1
  9. package/lib/api/Ethereum.d.ts +22 -1
  10. package/lib/api/Ethereum.d.ts.map +1 -1
  11. package/lib/api/Ethereum.js +21 -1
  12. package/lib/api/Ethereum.js.map +1 -1
  13. package/lib/bridge/jsHelpers.d.ts +2 -1
  14. package/lib/bridge/jsHelpers.d.ts.map +1 -1
  15. package/lib/bridge/jsHelpers.js +27 -1
  16. package/lib/bridge/jsHelpers.js.map +1 -1
  17. package/lib/csvExport.d.ts.map +1 -1
  18. package/lib/csvExport.js +3 -1
  19. package/lib/csvExport.js.map +1 -1
  20. package/lib/env.d.ts +15 -5
  21. package/lib/env.d.ts.map +1 -1
  22. package/lib/env.js +11 -0
  23. package/lib/env.js.map +1 -1
  24. package/lib/env.react.d.ts +1 -1
  25. package/lib/env.react.d.ts.map +1 -1
  26. package/lib/families/bitcoin/test-dataset.js +2 -2
  27. package/lib/families/bitcoin/test-dataset.js.map +1 -1
  28. package/lib/families/ethereum/signOperation.d.ts.map +1 -1
  29. package/lib/families/ethereum/signOperation.js +7 -0
  30. package/lib/families/ethereum/signOperation.js.map +1 -1
  31. package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
  32. package/lib/families/ethereum/synchronisation.js +175 -15
  33. package/lib/families/ethereum/synchronisation.js.map +1 -1
  34. package/lib/families/ethereum/versions.d.ts +2 -0
  35. package/lib/families/ethereum/versions.d.ts.map +1 -0
  36. package/lib/families/ethereum/versions.js +5 -0
  37. package/lib/families/ethereum/versions.js.map +1 -0
  38. package/lib/nft/NftMetadataProvider/index.d.ts +10 -0
  39. package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -0
  40. package/lib/nft/NftMetadataProvider/index.js +244 -0
  41. package/lib/nft/NftMetadataProvider/index.js.map +1 -0
  42. package/lib/nft/NftMetadataProvider/logic.d.ts +3 -0
  43. package/lib/nft/NftMetadataProvider/logic.d.ts.map +1 -0
  44. package/lib/nft/NftMetadataProvider/logic.js +22 -0
  45. package/lib/nft/NftMetadataProvider/logic.js.map +1 -0
  46. package/lib/nft/NftMetadataProvider/types.d.ts +44 -0
  47. package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -0
  48. package/lib/nft/NftMetadataProvider/types.js +3 -0
  49. package/lib/nft/NftMetadataProvider/types.js.map +1 -0
  50. package/lib/nft/helpers.d.ts +10 -0
  51. package/lib/nft/helpers.d.ts.map +1 -0
  52. package/lib/nft/helpers.js +85 -0
  53. package/lib/nft/helpers.js.map +1 -0
  54. package/lib/nft/index.d.ts +4 -0
  55. package/lib/nft/index.d.ts.map +1 -0
  56. package/lib/nft/index.js +16 -0
  57. package/lib/nft/index.js.map +1 -0
  58. package/lib/nft/nftId.d.ts +3 -0
  59. package/lib/nft/nftId.d.ts.map +1 -0
  60. package/lib/nft/nftId.js +33 -0
  61. package/lib/nft/nftId.js.map +1 -0
  62. package/lib/operation.d.ts +1 -1
  63. package/lib/operation.d.ts.map +1 -1
  64. package/lib/operation.js +19 -5
  65. package/lib/operation.js.map +1 -1
  66. package/lib/reconciliation.d.ts.map +1 -1
  67. package/lib/reconciliation.js +6 -0
  68. package/lib/reconciliation.js.map +1 -1
  69. package/lib/types/account.d.ts +3 -0
  70. package/lib/types/account.d.ts.map +1 -1
  71. package/lib/types/index.d.ts +1 -0
  72. package/lib/types/index.d.ts.map +1 -1
  73. package/lib/types/index.js +1 -0
  74. package/lib/types/index.js.map +1 -1
  75. package/lib/types/nft.d.ts +29 -0
  76. package/lib/types/nft.d.ts.map +1 -0
  77. package/lib/types/nft.js +3 -0
  78. package/lib/types/nft.js.map +1 -0
  79. package/lib/types/operation.d.ts +12 -1
  80. package/lib/types/operation.d.ts.map +1 -1
  81. package/package.json +5 -5
  82. package/src/__tests__/__snapshots__/all.libcore.ts.snap +59615 -52100
  83. package/src/account/groupOperations.ts +2 -2
  84. package/src/account/serialization.ts +52 -0
  85. package/src/api/Ethereum.ts +40 -2
  86. package/src/bridge/jsHelpers.ts +35 -0
  87. package/src/csvExport.ts +3 -2
  88. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +1351 -0
  89. package/src/env.ts +11 -0
  90. package/src/families/bitcoin/test-dataset.ts +2 -2
  91. package/src/families/ethereum/modules/__snapshots__/compound.resilience.test.ts.snap +2876 -0
  92. package/src/families/ethereum/signOperation.ts +8 -0
  93. package/src/families/ethereum/synchronisation.ts +185 -6
  94. package/src/families/ethereum/versions.ts +1 -0
  95. package/src/nft/NftMetadataProvider/index.tsx +205 -0
  96. package/src/nft/NftMetadataProvider/logic.ts +20 -0
  97. package/src/nft/NftMetadataProvider/types.ts +60 -0
  98. package/src/nft/helpers.ts +78 -0
  99. package/src/nft/index.ts +3 -0
  100. package/src/nft/nftId.ts +17 -0
  101. package/src/operation.ts +22 -3
  102. package/src/reconciliation.ts +7 -0
  103. package/src/types/account.ts +4 -0
  104. package/src/types/index.ts +1 -0
  105. package/src/types/nft.ts +38 -0
  106. package/src/types/operation.ts +23 -1
@@ -80,13 +80,16 @@ var account_2 = require("../../account");
80
80
  var Ethereum_1 = require("../../api/Ethereum");
81
81
  var modules_1 = require("./modules");
82
82
  var cryptoassets_1 = require("@ledgerhq/cryptoassets");
83
+ var nft_1 = require("../../nft");
84
+ var versions_1 = require("./versions");
85
+ var env_1 = require("../../env");
83
86
  var getAccountShape = function (infoInput, _a) {
84
87
  var blacklistedTokenIds = _a.blacklistedTokenIds;
85
88
  return __awaiter(void 0, void 0, void 0, function () {
86
- var currency, initialAccount, derivationMode, address, accountId, api, initialStableOperations, mostRecentStableOperation, syncHash, outdatedBlacklist, pullFromBlockHash, txsP, currentBlockP, balanceP, _b, txs, currentBlock, blockHeight, balance, newOps, perTokenAccountIdOperations, subAccountsExisting, subAccountsExistingIds, perTokenAccountChangedIds, tokenAccounts, subAccounts, operations, accountShape;
87
- var _c;
88
- return __generator(this, function (_d) {
89
- switch (_d.label) {
89
+ var currency, initialAccount, derivationMode, address, accountId, api, initialStableOperations, mostRecentStableOperation, syncHash, outdatedBlacklist, firstNftSync, pullFromBlockHash, txsP, currentBlockP, balanceP, _b, txs, currentBlock, blockHeight, balance, newOps, perTokenAccountIdOperations, flatNftOps, subAccountsExisting, subAccountsExistingIds, perTokenAccountChangedIds, tokenAccounts, subAccounts, operations, nfts, _c, _d, _e, accountShape;
90
+ var _f;
91
+ return __generator(this, function (_g) {
92
+ switch (_g.label) {
90
93
  case 0:
91
94
  currency = infoInput.currency, initialAccount = infoInput.initialAccount, derivationMode = infoInput.derivationMode;
92
95
  address = infoInput.address;
@@ -109,10 +112,13 @@ var getAccountShape = function (infoInput, _a) {
109
112
  withDelisted: true
110
113
  }).length;
111
114
  outdatedBlacklist = (initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.syncHash) !== syncHash;
115
+ firstNftSync = (0, env_1.getEnv)("NFT") && typeof (initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.nfts) === "undefined";
112
116
  pullFromBlockHash = initialAccount &&
113
117
  (0, account_1.areAllOperationsLoaded)(initialAccount) &&
114
118
  mostRecentStableOperation &&
115
- !outdatedBlacklist
119
+ !outdatedBlacklist &&
120
+ !firstNftSync &&
121
+ versions_1.NFT_VERSION
116
122
  ? mostRecentStableOperation.blockHash
117
123
  : undefined;
118
124
  txsP = fetchAllTransactions(api, address, pullFromBlockHash);
@@ -120,7 +126,7 @@ var getAccountShape = function (infoInput, _a) {
120
126
  balanceP = api.getAccountBalance(address);
121
127
  return [4 /*yield*/, Promise.all([txsP, currentBlockP])];
122
128
  case 1:
123
- _b = __read.apply(void 0, [_d.sent(), 2]), txs = _b[0], currentBlock = _b[1];
129
+ _b = __read.apply(void 0, [_g.sent(), 2]), txs = _b[0], currentBlock = _b[1];
124
130
  blockHeight = currentBlock.height.toNumber();
125
131
  if (!pullFromBlockHash && txs.length === 0) {
126
132
  (0, logs_1.log)("ethereum", "no ops on " + address);
@@ -133,11 +139,12 @@ var getAccountShape = function (infoInput, _a) {
133
139
  }
134
140
  return [4 /*yield*/, balanceP];
135
141
  case 2:
136
- balance = _d.sent();
142
+ balance = _g.sent();
137
143
  newOps = (0, flatMap_1["default"])(txs, txToOps({ address: address, id: accountId, currency: currency }));
138
144
  perTokenAccountIdOperations = {};
145
+ flatNftOps = [];
139
146
  newOps.forEach(function (op) {
140
- var subOperations = op.subOperations;
147
+ var subOperations = op.subOperations, nftOperations = op.nftOperations;
141
148
  if (subOperations === null || subOperations === void 0 ? void 0 : subOperations.length) {
142
149
  subOperations.forEach(function (sop) {
143
150
  if (!perTokenAccountIdOperations[sop.accountId]) {
@@ -146,9 +153,12 @@ var getAccountShape = function (infoInput, _a) {
146
153
  perTokenAccountIdOperations[sop.accountId].push(sop);
147
154
  });
148
155
  }
156
+ if (nftOperations === null || nftOperations === void 0 ? void 0 : nftOperations.length) {
157
+ nftOperations.forEach(function (nop) { return flatNftOps.push(nop); });
158
+ }
149
159
  });
150
160
  subAccountsExisting = {};
151
- (_c = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.subAccounts) === null || _c === void 0 ? void 0 : _c.forEach(function (a) {
161
+ (_f = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.subAccounts) === null || _f === void 0 ? void 0 : _f.forEach(function (a) {
152
162
  // in case of coming from libcore, we need to converge to new ids
153
163
  var token = (0, account_1.decodeTokenAccountId)(a.id).token;
154
164
  if (!token)
@@ -199,17 +209,29 @@ var getAccountShape = function (infoInput, _a) {
199
209
  .filter(Boolean);
200
210
  return [4 /*yield*/, (0, modules_1.prepareTokenAccounts)(currency, tokenAccounts, address)];
201
211
  case 3:
202
- tokenAccounts = _d.sent();
212
+ tokenAccounts = _g.sent();
203
213
  return [4 /*yield*/, loadERC20Balances(tokenAccounts, address, api)];
204
214
  case 4:
205
- tokenAccounts = _d.sent();
215
+ tokenAccounts = _g.sent();
206
216
  return [4 /*yield*/, (0, modules_1.digestTokenAccounts)(currency, tokenAccounts, address)];
207
217
  case 5:
208
- tokenAccounts = _d.sent();
218
+ tokenAccounts = _g.sent();
209
219
  subAccounts = reconciliateSubAccounts(tokenAccounts, initialAccount);
210
220
  // has sub accounts have changed, we need to relink the subOperations
211
221
  newOps = newOps.map(function (o) { return (__assign(__assign({}, o), { subOperations: (0, account_1.inferSubOperations)(o.hash, subAccounts) })); });
212
222
  operations = (0, jsHelpers_1.mergeOps)(initialStableOperations, newOps);
223
+ if (!(0, env_1.getEnv)("NFT")) return [3 /*break*/, 7];
224
+ _d = jsHelpers_1.mergeNfts;
225
+ _e = [initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.nfts];
226
+ return [4 /*yield*/, getNfts(flatNftOps)];
227
+ case 6:
228
+ _c = _d.apply(void 0, _e.concat([_g.sent()]));
229
+ return [3 /*break*/, 8];
230
+ case 7:
231
+ _c = undefined;
232
+ _g.label = 8;
233
+ case 8:
234
+ nfts = _c;
213
235
  accountShape = {
214
236
  id: accountId,
215
237
  operations: operations,
@@ -219,7 +241,8 @@ var getAccountShape = function (infoInput, _a) {
219
241
  blockHeight: blockHeight,
220
242
  lastSyncDate: new Date(),
221
243
  balanceHistory: undefined,
222
- syncHash: syncHash
244
+ syncHash: syncHash,
245
+ nfts: nfts
223
246
  };
224
247
  return [2 /*return*/, accountShape];
225
248
  }
@@ -244,7 +267,7 @@ var txToOps = function (_a) {
244
267
  // workaround bugs in our explorer that don't treat partial/optimistic operation really well
245
268
  if (!tx.gas_used)
246
269
  return [];
247
- var hash = tx.hash, block = tx.block, actions = tx.actions, transfer_events = tx.transfer_events;
270
+ var hash = tx.hash, block = tx.block, actions = tx.actions, transfer_events = tx.transfer_events, erc721_transfer_events = tx.erc721_transfer_events, erc1155_transfer_events = tx.erc1155_transfer_events;
248
271
  var addr = address;
249
272
  var from = safeEncodeEIP55(tx.from);
250
273
  var to = safeEncodeEIP55(tx.to);
@@ -349,6 +372,134 @@ var txToOps = function (_a) {
349
372
  }
350
373
  return all;
351
374
  });
375
+ // Creating NFTOps from transfer events related to ERC721 only
376
+ var erc721Operations = !erc721_transfer_events
377
+ ? []
378
+ : (0, flatMap_1["default"])(erc721_transfer_events, function (event) {
379
+ var sender = safeEncodeEIP55(event.sender);
380
+ var receiver = safeEncodeEIP55(event.receiver);
381
+ var contract = safeEncodeEIP55(event.contract);
382
+ var tokenId = event.token_id;
383
+ var nftId = (0, nft_1.encodeNftId)(id, event.contract, tokenId);
384
+ var sending = addr === sender;
385
+ var receiving = addr === receiver;
386
+ if (!sending && !receiving) {
387
+ return [];
388
+ }
389
+ var all = [];
390
+ if (sending) {
391
+ var type = "NFT_OUT";
392
+ all.push({
393
+ id: nftId + "-" + hash + "-" + type,
394
+ senders: [sender],
395
+ recipients: [receiver],
396
+ contract: contract,
397
+ fee: fee,
398
+ standard: "ERC721",
399
+ tokenId: tokenId,
400
+ value: new bignumber_js_1.BigNumber(1),
401
+ hash: hash,
402
+ type: type,
403
+ blockHeight: blockHeight,
404
+ blockHash: blockHash,
405
+ date: date,
406
+ transactionSequenceNumber: transactionSequenceNumber,
407
+ accountId: id,
408
+ extra: {}
409
+ });
410
+ }
411
+ if (receiving) {
412
+ var type = "NFT_IN";
413
+ all.push({
414
+ id: nftId + "-" + hash + "-" + type,
415
+ senders: [sender],
416
+ recipients: [receiver],
417
+ contract: contract,
418
+ fee: fee,
419
+ standard: "ERC721",
420
+ tokenId: tokenId,
421
+ value: new bignumber_js_1.BigNumber(1),
422
+ hash: hash,
423
+ type: type,
424
+ blockHeight: blockHeight,
425
+ blockHash: blockHash,
426
+ date: date,
427
+ transactionSequenceNumber: transactionSequenceNumber,
428
+ accountId: id,
429
+ extra: {}
430
+ });
431
+ }
432
+ return all;
433
+ });
434
+ // Creating NFTOps from transfer events related to ERC1155 only
435
+ var erc1155Operations = !erc1155_transfer_events
436
+ ? []
437
+ : (0, flatMap_1["default"])(erc1155_transfer_events, function (event) {
438
+ var sender = safeEncodeEIP55(event.sender);
439
+ var receiver = safeEncodeEIP55(event.receiver);
440
+ var contract = safeEncodeEIP55(event.contract);
441
+ var operator = safeEncodeEIP55(event.operator);
442
+ var sending = addr === sender;
443
+ var receiving = addr === receiver;
444
+ if (!sending && !receiving) {
445
+ return [];
446
+ }
447
+ var all = [];
448
+ event.transfers.forEach(function (transfer) {
449
+ var tokenId = transfer.id;
450
+ var value = new bignumber_js_1.BigNumber(transfer.value);
451
+ var nftId = (0, nft_1.encodeNftId)(id, event.contract, tokenId);
452
+ if (sending) {
453
+ var type = "NFT_OUT";
454
+ all.push({
455
+ id: nftId + "-" + hash + "-" + type,
456
+ senders: [sender],
457
+ recipients: [receiver],
458
+ contract: contract,
459
+ fee: fee,
460
+ operator: operator,
461
+ standard: "ERC1155",
462
+ tokenId: tokenId,
463
+ value: value,
464
+ hash: hash,
465
+ type: type,
466
+ blockHeight: blockHeight,
467
+ blockHash: blockHash,
468
+ date: date,
469
+ transactionSequenceNumber: transactionSequenceNumber,
470
+ accountId: id,
471
+ extra: {}
472
+ });
473
+ }
474
+ if (receiving) {
475
+ var type = "NFT_IN";
476
+ all.push({
477
+ id: nftId + "-" + hash + "-" + type,
478
+ senders: [sender],
479
+ recipients: [receiver],
480
+ contract: contract,
481
+ fee: fee,
482
+ operator: operator,
483
+ standard: "ERC1155",
484
+ tokenId: tokenId,
485
+ value: value,
486
+ hash: hash,
487
+ type: type,
488
+ blockHeight: blockHeight,
489
+ blockHash: blockHash,
490
+ date: date,
491
+ transactionSequenceNumber: transactionSequenceNumber,
492
+ accountId: id,
493
+ extra: {}
494
+ });
495
+ }
496
+ });
497
+ return all;
498
+ });
499
+ var nftOperations = erc721Operations
500
+ .concat(erc1155Operations)
501
+ /** @warning is this necessary ? Do we need the operations to be chronologically organised for LLD/LLM ? */
502
+ .sort(function (a, b) { return b.date.getTime() - a.date.getTime(); });
352
503
  var ops = [];
353
504
  if (sending) {
354
505
  var type = value.eq(0) ? "FEES" : "OUT";
@@ -368,6 +519,7 @@ var txToOps = function (_a) {
368
519
  hasFailed: hasFailed,
369
520
  internalOperations: internalOperations,
370
521
  subOperations: subOperations,
522
+ nftOperations: nftOperations,
371
523
  transactionSequenceNumber: transactionSequenceNumber
372
524
  });
373
525
  }
@@ -389,12 +541,15 @@ var txToOps = function (_a) {
389
541
  internalOperations: sending ? [] : internalOperations,
390
542
  // if it was already in sending, we don't add twice
391
543
  subOperations: sending ? [] : subOperations,
544
+ nftOperations: nftOperations,
392
545
  transactionSequenceNumber: transactionSequenceNumber
393
546
  });
394
547
  }
395
548
  if (!sending &&
396
549
  !receiving &&
397
- (internalOperations.length || subOperations.length)) {
550
+ (internalOperations.length ||
551
+ subOperations.length ||
552
+ nftOperations.length)) {
398
553
  ops.push({
399
554
  id: id + "-" + hash + "-NONE",
400
555
  hash: hash,
@@ -410,6 +565,7 @@ var txToOps = function (_a) {
410
565
  extra: {},
411
566
  internalOperations: internalOperations,
412
567
  subOperations: subOperations,
568
+ nftOperations: nftOperations,
413
569
  transactionSequenceNumber: transactionSequenceNumber
414
570
  });
415
571
  }
@@ -494,6 +650,10 @@ function loadERC20Balances(tokenAccounts, address, api) {
494
650
  });
495
651
  });
496
652
  }
653
+ function getNfts(nftOperations) {
654
+ var nfts = (0, nft_1.nftsFromOperations)(nftOperations);
655
+ return nfts.filter(function (nft) { return nft.amount.gt(0); });
656
+ }
497
657
  var SAFE_REORG_THRESHOLD = 80;
498
658
  function stableOperations(a) {
499
659
  return a.operations.filter(function (op) {
@@ -1 +1 @@
1
- {"version":3,"file":"synchronisation.js","sourceRoot":"","sources":["../../../src/families/ethereum/synchronisation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synchronisation.js","sourceRoot":"","sources":["../../../src/families/ethereum/synchronisation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const NFT_VERSION = 1;
2
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/families/ethereum/versions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.NFT_VERSION = void 0;
4
+ exports.NFT_VERSION = 1;
5
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/families/ethereum/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { NFTMetadataContextAPI, NFTResource } from "./types";
3
+ export declare function useNftMetadata(contract: string, tokenId: string): NFTResource;
4
+ export declare function useNftAPI(): NFTMetadataContextAPI;
5
+ declare type NFTMetadataProviderProps = {
6
+ children: React.ReactNode;
7
+ };
8
+ export declare function NftMetadataProvider({ children, }: NFTMetadataProviderProps): React.ReactElement;
9
+ export {};
10
+ //# 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;AAKf,OAAO,EAGL,qBAAqB,EAGrB,WAAW,EACZ,MAAM,SAAS,CAAC;AA6DjB,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 = 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
+ var 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*/, 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