@ledgerhq/live-common 21.13.2 → 21.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__tests__/derivation.js +1 -1
- package/lib/__tests__/derivation.js.map +1 -1
- package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +2 -2
- package/lib/account/groupOperations.js +1 -1
- package/lib/account/groupOperations.js.map +1 -1
- package/lib/account/pending.d.ts +1 -0
- package/lib/account/pending.d.ts.map +1 -1
- package/lib/account/serialization.d.ts +6 -4
- package/lib/account/serialization.d.ts.map +1 -1
- package/lib/account/serialization.js +47 -9
- package/lib/account/serialization.js.map +1 -1
- package/lib/api/Ethereum.d.ts +22 -1
- package/lib/api/Ethereum.d.ts.map +1 -1
- package/lib/api/Ethereum.js +21 -1
- package/lib/api/Ethereum.js.map +1 -1
- package/lib/apps/polyfill.d.ts.map +1 -1
- package/lib/apps/polyfill.js +1 -0
- package/lib/apps/polyfill.js.map +1 -1
- package/lib/bridge/jsHelpers.d.ts +2 -1
- package/lib/bridge/jsHelpers.d.ts.map +1 -1
- package/lib/bridge/jsHelpers.js +27 -1
- package/lib/bridge/jsHelpers.js.map +1 -1
- package/lib/csvExport.d.ts.map +1 -1
- package/lib/csvExport.js +3 -1
- package/lib/csvExport.js.map +1 -1
- package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
- package/lib/currencies/sortByMarketcap.js +8 -1
- package/lib/currencies/sortByMarketcap.js.map +1 -1
- package/lib/derivation.js +1 -1
- package/lib/derivation.js.map +1 -1
- package/lib/env.d.ts +15 -5
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +12 -1
- package/lib/env.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/families/bitcoin/cache.d.ts +1 -0
- package/lib/families/bitcoin/cache.d.ts.map +1 -1
- package/lib/families/bitcoin/cache.js +7 -1
- package/lib/families/bitcoin/cache.js.map +1 -1
- package/lib/families/bitcoin/errors.d.ts +4 -0
- package/lib/families/bitcoin/errors.d.ts.map +1 -0
- package/lib/families/bitcoin/errors.js +6 -0
- package/lib/families/bitcoin/errors.js.map +1 -0
- package/lib/families/bitcoin/js-getTransactionStatus.d.ts.map +1 -1
- package/lib/families/bitcoin/js-getTransactionStatus.js +24 -11
- package/lib/families/bitcoin/js-getTransactionStatus.js.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.js +8 -19
- package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
- package/lib/families/bitcoin/logic.d.ts +1 -1
- package/lib/families/bitcoin/logic.d.ts.map +1 -1
- package/lib/families/bitcoin/logic.js +6 -0
- package/lib/families/bitcoin/logic.js.map +1 -1
- package/lib/families/bitcoin/specs.d.ts.map +1 -1
- package/lib/families/bitcoin/specs.js +2 -1
- package/lib/families/bitcoin/specs.js.map +1 -1
- package/lib/families/bitcoin/test-dataset.js +2 -2
- package/lib/families/bitcoin/test-dataset.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/base.js +36 -5
- package/lib/families/bitcoin/wallet-btc/crypto/base.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js +19 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zec.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts +1 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js +4 -0
- package/lib/families/bitcoin/wallet-btc/crypto/zen.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/explorer/index.js +0 -3
- package/lib/families/bitcoin/wallet-btc/explorer/index.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/index.d.ts +2 -2
- package/lib/families/bitcoin/wallet-btc/index.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/index.js +4 -5
- package/lib/families/bitcoin/wallet-btc/index.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js +3 -3
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js +5 -5
- package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js +5 -5
- package/lib/families/bitcoin/wallet-btc/utils.d.ts +3 -1
- package/lib/families/bitcoin/wallet-btc/utils.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/utils.js +30 -10
- package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/wallet.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/wallet.js +5 -3
- package/lib/families/bitcoin/wallet-btc/wallet.js.map +1 -1
- package/lib/families/bitcoin/wallet-btc/xpub.d.ts +2 -6
- package/lib/families/bitcoin/wallet-btc/xpub.d.ts.map +1 -1
- package/lib/families/bitcoin/wallet-btc/xpub.js +62 -52
- package/lib/families/bitcoin/wallet-btc/xpub.js.map +1 -1
- package/lib/families/elrond/js-getTransactionStatus.d.ts.map +1 -1
- package/lib/families/elrond/js-getTransactionStatus.js +3 -0
- package/lib/families/elrond/js-getTransactionStatus.js.map +1 -1
- package/lib/families/elrond/js-signOperation.d.ts.map +1 -1
- package/lib/families/elrond/js-signOperation.js +3 -1
- package/lib/families/elrond/js-signOperation.js.map +1 -1
- package/lib/families/ethereum/signOperation.d.ts.map +1 -1
- package/lib/families/ethereum/signOperation.js +7 -0
- package/lib/families/ethereum/signOperation.js.map +1 -1
- package/lib/families/ethereum/specs.d.ts +1 -0
- package/lib/families/ethereum/specs.d.ts.map +1 -1
- package/lib/families/ethereum/specs.js +41 -0
- package/lib/families/ethereum/specs.js.map +1 -1
- package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
- package/lib/families/ethereum/synchronisation.js +175 -15
- package/lib/families/ethereum/synchronisation.js.map +1 -1
- package/lib/families/ethereum/versions.d.ts +2 -0
- package/lib/families/ethereum/versions.d.ts.map +1 -0
- package/lib/families/ethereum/versions.js +5 -0
- package/lib/families/ethereum/versions.js.map +1 -0
- package/lib/generated/specs.d.ts +1 -0
- package/lib/generated/specs.d.ts.map +1 -1
- package/lib/nft/NftMetadataProvider/index.d.ts +10 -0
- package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/index.js +244 -0
- package/lib/nft/NftMetadataProvider/index.js.map +1 -0
- package/lib/nft/NftMetadataProvider/logic.d.ts +3 -0
- package/lib/nft/NftMetadataProvider/logic.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/logic.js +22 -0
- package/lib/nft/NftMetadataProvider/logic.js.map +1 -0
- package/lib/nft/NftMetadataProvider/types.d.ts +44 -0
- package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -0
- package/lib/nft/NftMetadataProvider/types.js +3 -0
- package/lib/nft/NftMetadataProvider/types.js.map +1 -0
- package/lib/nft/helpers.d.ts +10 -0
- package/lib/nft/helpers.d.ts.map +1 -0
- package/lib/nft/helpers.js +85 -0
- package/lib/nft/helpers.js.map +1 -0
- package/lib/nft/index.d.ts +4 -0
- package/lib/nft/index.d.ts.map +1 -0
- package/lib/nft/index.js +16 -0
- package/lib/nft/index.js.map +1 -0
- package/lib/nft/nftId.d.ts +3 -0
- package/lib/nft/nftId.d.ts.map +1 -0
- package/lib/nft/nftId.js +33 -0
- package/lib/nft/nftId.js.map +1 -0
- package/lib/operation.d.ts +1 -1
- package/lib/operation.d.ts.map +1 -1
- package/lib/operation.js +19 -5
- package/lib/operation.js.map +1 -1
- package/lib/reconciliation.d.ts.map +1 -1
- package/lib/reconciliation.js +6 -0
- package/lib/reconciliation.js.map +1 -1
- package/lib/types/account.d.ts +3 -0
- package/lib/types/account.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1 -0
- package/lib/types/index.js.map +1 -1
- package/lib/types/nft.d.ts +29 -0
- package/lib/types/nft.d.ts.map +1 -0
- package/lib/types/nft.js +3 -0
- package/lib/types/nft.js.map +1 -0
- package/lib/types/operation.d.ts +12 -1
- package/lib/types/operation.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/__tests__/__snapshots__/all.libcore.ts.snap +64428 -57815
- package/src/__tests__/derivation.ts +1 -1
- package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +2 -2
- package/src/account/groupOperations.ts +2 -2
- package/src/account/serialization.ts +52 -0
- package/src/api/Ethereum.ts +40 -2
- package/src/apps/polyfill.ts +1 -0
- package/src/bridge/jsHelpers.ts +35 -0
- package/src/csvExport.ts +3 -2
- package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +1361 -1
- package/src/currencies/sortByMarketcap.ts +9 -1
- package/src/derivation.ts +1 -1
- package/src/env.ts +12 -1
- package/src/families/bitcoin/cache.ts +12 -0
- package/src/families/bitcoin/errors.ts +5 -0
- package/src/families/bitcoin/js-getTransactionStatus.ts +15 -1
- package/src/families/bitcoin/js-synchronisation.ts +11 -25
- package/src/families/bitcoin/logic.ts +7 -2
- package/src/families/bitcoin/specs.ts +6 -1
- package/src/families/bitcoin/test-dataset.ts +2 -2
- package/src/families/bitcoin/wallet-btc/crypto/base.ts +40 -5
- package/src/families/bitcoin/wallet-btc/crypto/bitcoin.ts +21 -1
- package/src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts +5 -0
- package/src/families/bitcoin/wallet-btc/crypto/types.ts +1 -0
- package/src/families/bitcoin/wallet-btc/crypto/zec.ts +5 -0
- package/src/families/bitcoin/wallet-btc/crypto/zen.ts +5 -0
- package/src/families/bitcoin/wallet-btc/explorer/index.ts +0 -5
- package/src/families/bitcoin/wallet-btc/index.ts +4 -4
- package/src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts +3 -3
- package/src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts +5 -5
- package/src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts +5 -5
- package/src/families/bitcoin/wallet-btc/utils.ts +34 -9
- package/src/families/bitcoin/wallet-btc/wallet.ts +4 -2
- package/src/families/bitcoin/wallet-btc/xpub.ts +37 -53
- package/src/families/elrond/js-getTransactionStatus.ts +4 -0
- package/src/families/elrond/js-signOperation.ts +3 -1
- package/src/families/ethereum/modules/__snapshots__/compound.resilience.test.ts.snap +2876 -0
- package/src/families/ethereum/signOperation.ts +8 -0
- package/src/families/ethereum/specs.ts +47 -0
- package/src/families/ethereum/synchronisation.ts +185 -6
- package/src/families/ethereum/versions.ts +1 -0
- package/src/nft/NftMetadataProvider/index.tsx +205 -0
- package/src/nft/NftMetadataProvider/logic.ts +20 -0
- package/src/nft/NftMetadataProvider/types.ts +60 -0
- package/src/nft/helpers.ts +78 -0
- package/src/nft/index.ts +3 -0
- package/src/nft/nftId.ts +17 -0
- package/src/operation.ts +22 -3
- package/src/reconciliation.ts +7 -0
- package/src/types/account.ts +4 -0
- package/src/types/index.ts +1 -0
- package/src/types/nft.ts +38 -0
- package/src/types/operation.ts +23 -1
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nft/NftMetadataProvider/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/lib/nft/index.js
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/lib/nft/nftId.js
ADDED
|
@@ -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"}
|
package/lib/operation.d.ts
CHANGED
|
@@ -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
|
|
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;
|
package/lib/operation.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/operation.js
CHANGED
|
@@ -27,7 +27,7 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
29
|
exports.__esModule = true;
|
|
30
|
-
exports.isConfirmedOperation = exports.getOperationConfirmationDisplayableNumber = exports.getOperationConfirmationNumber = exports.getOperationAmountNumberWithInternals = exports.getOperationAmountNumber = exports.
|
|
30
|
+
exports.isConfirmedOperation = exports.getOperationConfirmationDisplayableNumber = exports.getOperationConfirmationNumber = exports.getOperationAmountNumberWithInternals = exports.getOperationAmountNumber = exports.flattenOperationWithInternalsAndNfts = exports.patchOperationWithHash = exports.decodeOperationId = exports.encodeOperationId = exports.findOperationInAccount = void 0;
|
|
31
31
|
var bignumber_js_1 = require("bignumber.js");
|
|
32
32
|
function findOperationInAccount(_a, operationId) {
|
|
33
33
|
var operations = _a.operations, pendingOperations = _a.pendingOperations;
|
|
@@ -43,6 +43,14 @@ function findOperationInAccount(_a, operationId) {
|
|
|
43
43
|
return internalOp;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
if (op.nftOperations) {
|
|
47
|
+
var nftOps = op.nftOperations;
|
|
48
|
+
for (var j = 0; j < nftOps.length; j++) {
|
|
49
|
+
var nftOp = nftOps[j];
|
|
50
|
+
if (nftOp.id === operationId)
|
|
51
|
+
return nftOp;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
46
54
|
}
|
|
47
55
|
for (var i = 0; i < pendingOperations.length; i++) {
|
|
48
56
|
var op = pendingOperations[i];
|
|
@@ -70,7 +78,7 @@ function patchOperationWithHash(operation, hash) {
|
|
|
70
78
|
operation.subOperations.map(function (op) { return (__assign(__assign({}, op), { hash: hash, id: encodeOperationId(op.accountId, hash, op.type) })); }) });
|
|
71
79
|
}
|
|
72
80
|
exports.patchOperationWithHash = patchOperationWithHash;
|
|
73
|
-
function
|
|
81
|
+
function flattenOperationWithInternalsAndNfts(op) {
|
|
74
82
|
var ops = [];
|
|
75
83
|
// ops of type NONE does not appear in lists
|
|
76
84
|
if (op.type !== "NONE") {
|
|
@@ -80,15 +88,20 @@ function flattenOperationWithInternals(op) {
|
|
|
80
88
|
if (op.internalOperations) {
|
|
81
89
|
ops = ops.concat(op.internalOperations);
|
|
82
90
|
}
|
|
91
|
+
// all nfts operations are expanded after the main op
|
|
92
|
+
if (op.nftOperations) {
|
|
93
|
+
ops = ops.concat(op.nftOperations);
|
|
94
|
+
}
|
|
83
95
|
return ops;
|
|
84
96
|
}
|
|
85
|
-
exports.
|
|
97
|
+
exports.flattenOperationWithInternalsAndNfts = flattenOperationWithInternalsAndNfts;
|
|
86
98
|
function getOperationAmountNumber(op) {
|
|
87
99
|
switch (op.type) {
|
|
88
100
|
case "IN":
|
|
89
101
|
case "REWARD":
|
|
90
102
|
case "REWARD_PAYOUT":
|
|
91
103
|
case "SUPPLY":
|
|
104
|
+
case "NFT_IN":
|
|
92
105
|
return op.value;
|
|
93
106
|
case "OUT":
|
|
94
107
|
case "REVEAL":
|
|
@@ -101,6 +114,7 @@ function getOperationAmountNumber(op) {
|
|
|
101
114
|
case "OPT_OUT":
|
|
102
115
|
case "REDEEM":
|
|
103
116
|
case "SLASH":
|
|
117
|
+
case "NFT_OUT":
|
|
104
118
|
return op.value.negated();
|
|
105
119
|
case "FREEZE":
|
|
106
120
|
case "UNFREEZE":
|
|
@@ -118,7 +132,7 @@ function getOperationAmountNumber(op) {
|
|
|
118
132
|
}
|
|
119
133
|
exports.getOperationAmountNumber = getOperationAmountNumber;
|
|
120
134
|
function getOperationAmountNumberWithInternals(op) {
|
|
121
|
-
return
|
|
135
|
+
return flattenOperationWithInternalsAndNfts(op).reduce(function (amount, op) { return amount.plus(getOperationAmountNumber(op)); }, new bignumber_js_1.BigNumber(0));
|
|
122
136
|
}
|
|
123
137
|
exports.getOperationAmountNumberWithInternals = getOperationAmountNumberWithInternals;
|
|
124
138
|
var getOperationConfirmationNumber = function (operation, account) {
|
|
@@ -133,7 +147,7 @@ var getOperationConfirmationDisplayableNumber = function (operation, account) {
|
|
|
133
147
|
exports.getOperationConfirmationDisplayableNumber = getOperationConfirmationDisplayableNumber;
|
|
134
148
|
var isConfirmedOperation = function (operation, account, confirmationsNb) {
|
|
135
149
|
return operation.blockHeight
|
|
136
|
-
? account.blockHeight - operation.blockHeight > confirmationsNb
|
|
150
|
+
? account.blockHeight - operation.blockHeight + 1 > confirmationsNb
|
|
137
151
|
: false;
|
|
138
152
|
};
|
|
139
153
|
exports.isConfirmedOperation = isConfirmedOperation;
|