UNPKG

@ledgerhq/live-common

Version:
74 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractProviderCurrencies = exports.filterProvidersByIds = exports.buildProviderCoverageMap = exports.getProviderCurrency = exports.isProviderToken = exports.safeCurrencyLookup = void 0; const helper_1 = require("../../deposit/helper"); const currencies_1 = require("../../currencies"); const safeCurrencyLookup = (id) => { try { return (0, helper_1.getTokenOrCryptoCurrencyById)(id); } catch { return null; } }; exports.safeCurrencyLookup = safeCurrencyLookup; const isProviderToken = (currency, providerId) => { return (0, currencies_1.isTokenCurrency)(currency) && currency.id.toLowerCase().includes(providerId.toLowerCase()); }; exports.isProviderToken = isProviderToken; const getProviderCurrency = (provider) => { const providerToken = provider.currenciesByNetwork.find(currency => { return (0, exports.isProviderToken)(currency, provider.providerId); }); if (providerToken) { return providerToken; } return (0, exports.safeCurrencyLookup)(provider.providerId) ?? provider.currenciesByNetwork[0]; }; exports.getProviderCurrency = getProviderCurrency; const buildProviderCoverageMap = (providers) => { const providerIdToCoveringProviders = new Map(); for (const { providerId, currenciesByNetwork } of providers) { for (const { id } of currenciesByNetwork) { if (!providerIdToCoveringProviders.has(id)) { providerIdToCoveringProviders.set(id, new Set()); } providerIdToCoveringProviders.get(id).add(providerId); } } return providerIdToCoveringProviders; }; exports.buildProviderCoverageMap = buildProviderCoverageMap; const filterProvidersByIds = (providers, currencyIdsSet, providerCoverageMap) => { const filtered = []; for (const provider of providers) { const filteredCurrencies = provider.currenciesByNetwork.filter(currency => currencyIdsSet.has(currency.id)); if (filteredCurrencies.length === 0) continue; const providerHasOwnCurrency = provider.currenciesByNetwork.some(currency => currency.id === provider.providerId); if (!providerHasOwnCurrency) { const coveringProviders = providerCoverageMap.get(provider.providerId); const isProviderIdCoveredElsewhere = coveringProviders && coveringProviders.size > 1; if (isProviderIdCoveredElsewhere) continue; } if (filteredCurrencies.length === provider.currenciesByNetwork.length) { filtered.push(provider); } else { filtered.push({ ...provider, currenciesByNetwork: filteredCurrencies, }); } } return filtered; }; exports.filterProvidersByIds = filterProvidersByIds; const extractProviderCurrencies = (providers) => { return providers .map(provider => (0, exports.getProviderCurrency)(provider)) .filter((currency) => currency !== null); }; exports.extractProviderCurrencies = extractProviderCurrencies; //# sourceMappingURL=currencyUtils.js.map