@yoroi/api
Version:
The API package of Yoroi SDK
58 lines (57 loc) • 1.89 kB
JavaScript
;
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