UNPKG

@yoroi/api

Version:
58 lines (57 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseTokenSupplyResponse = exports.isTokenSupplyResponse = exports.getTokenSupply = void 0; var _common = require("@yoroi/common"); var _zod = require("zod"); var _getTokenIdentity = require("../translators/helpers/getTokenIdentity"); const getTokenSupply = (baseUrl, request = _common.fetcher) => async tokenIds => { if (tokenIds.length === 0) { return Promise.resolve({}); } const assetsMap = new Map(tokenIds.map(id => { const { policyId: policy, assetName: nameHex } = (0, _getTokenIdentity.getTokenIdentity)(id); return [id, { policy, nameHex }]; })); const payload = { assets: Array.from(assetsMap.values()) }; return request({ url: `${baseUrl}/multiAsset/supply?numberFormat=string`, data: payload, method: 'POST', headers: { 'Content-Type': 'application/json' } }).then(response => { const parsedResponse = parseTokenSupplyResponse(response); if (!parsedResponse) return Promise.reject(new Error('Invalid asset supplies')); const result = {}; const supplies = parsedResponse.supplies; Array.from(assetsMap.entries()).forEach(([id, { policy, nameHex }]) => { const tokenId = `${policy}.${nameHex}`; result[id] = supplies[tokenId] ?? null; }); return Promise.resolve(result); }); }; exports.getTokenSupply = getTokenSupply; const TokenSupplySchema = _zod.z.object({ supplies: _zod.z.record(_zod.z.string().nullable()) }); const isTokenSupplyResponse = exports.isTokenSupplyResponse = (0, _common.createTypeGuardFromSchema)(TokenSupplySchema); const parseTokenSupplyResponse = data => { return isTokenSupplyResponse(data) ? data : undefined; }; exports.parseTokenSupplyResponse = parseTokenSupplyResponse; //# sourceMappingURL=token-supply.js.map