edge-core-js
Version:
Edge account & wallet management library
60 lines (52 loc) • 1.38 kB
JavaScript
function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
function flipTokenMap(tokens)
{
const out = {}
for (const tokenId of Object.keys(tokens)) {
const token = tokens[tokenId]
out[token.currencyCode] = tokenId
}
return out
}
export function currencyCodesToTokenIds(
builtinTokens = {},
customTokens = {},
currencyInfo,
currencyCodes
) {
const builtinIds = flipTokenMap(builtinTokens)
const customIds = flipTokenMap(customTokens)
const out = []
for (const currencyCode of currencyCodes) {
const tokenId = _nullishCoalesce(customIds[currencyCode], () => ( builtinIds[currencyCode]))
if (tokenId != null) out.push(tokenId)
}
return out
}
export function tokenIdsToCurrencyCodes(
builtinTokens = {},
customTokens = {},
currencyInfo,
tokenIds
) {
const out = []
for (const tokenId of tokenIds) {
const token = _nullishCoalesce(customTokens[tokenId], () => ( builtinTokens[tokenId]))
if (token != null) out.push(token.currencyCode)
}
return out
}
/**
* Returns the unique items of an array,
* optionally removing the items in `omit`.
*/
export function uniqueStrings(array, omit = []) {
const table = new Set(omit)
const out = []
for (const item of array) {
if (table.has(item)) continue
table.add(item)
out.push(item)
}
return out
}