UNPKG

agsola-react-ens-address

Version:
59 lines (58 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ETH_ADDRESS_TYPE = void 0; exports.getEthAddressType = getEthAddressType; exports.isAddress = isAddress; var _viem = require("viem"); var _ethEnsNamehash = require("@ensdomains/eth-ens-namehash"); var ETH_ADDRESS_TYPE = exports.ETH_ADDRESS_TYPE = { name: 'name', address: 'address', error: 'error' }; function isAddress(address) { try { (0, _viem.getAddress)(address); } catch (e) { return false; } return true; } function isEncodedLabelhash(hash) { return hash.startsWith('[') && hash.endsWith(']') && hash.length === 66; } function validateName(name) { var nameArray = name.split('.'); var hasEmptyLabels = nameArray.some(function (label) { return label.length == 0; }); if (hasEmptyLabels) throw new Error('Domain cannot have empty labels'); var normalizedArray = nameArray.map(function (label) { if (label === '[root]') { return label; } else { return isEncodedLabelhash(label) ? label : (0, _ethEnsNamehash.normalize)(label); } }); try { return normalizedArray.join('.'); } catch (e) { throw e; } } function getEthAddressType(address) { if (!address) return ETH_ADDRESS_TYPE.error; if (isAddress(address)) { return ETH_ADDRESS_TYPE.address; } try { var validated = validateName(address); //console.log("validaname", validated) return ETH_ADDRESS_TYPE.name; } catch (e) { //console.error("no valida el name", address) return ETH_ADDRESS_TYPE.error; } }