UNPKG

@yoroi/portfolio

Version:

The Portfolio package of Yoroi SDK

85 lines (84 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.traitValueExpander = traitValueExpander; var _common = require("@yoroi/common"); var _immer = require("immer"); function traitValueExpander(value) { const type = detectType(value); switch (type) { case 'link': case 'string': { const transformedValue = type === 'link' ? transformIfIpfs(value) : value; return (0, _immer.freeze)({ originalValue: value, transformedValue, type }); } case 'number': { return (0, _immer.freeze)({ originalValue: value, transformedValue: value, type }); } case 'array': { return (0, _immer.freeze)({ originalValue: value, transformedValue: value, type }); } case 'record': { return (0, _immer.freeze)({ originalValue: value, transformedValue: value, type }); } default: { return (0, _immer.freeze)({ originalValue: value, transformedValue: value, type: 'unknown' }); } } } function isValidUrl(string) { try { // eslint-disable-next-line no-new new URL(string); return true; } catch (e) { return false; } } function transformIfIpfs(value) { if (value.startsWith('ipfs://')) return value.replace('ipfs://', 'https://ipfs.io/ipfs/'); return value; } function detectType(value) { if ((0, _common.isString)(value)) { if (isValidUrl(value)) { return 'link'; } return 'string'; } else if ((0, _common.isNumber)(value)) { return 'number'; } else if (Array.isArray(value)) { return 'array'; } else if ((0, _common.isRecord)(value)) { return 'record'; } else { return 'unknown'; } } //# sourceMappingURL=trait-value-expander.js.map