UNPKG

@wagmi/cli

Version:

Manage and generate code from Ethereum ABIs

46 lines 1.65 kB
import { capitalCase } from 'change-case'; import dedent from 'dedent'; import * as allChains from 'viem/chains'; const chainMap = {}; for (const chain of Object.values(allChains)) { if (typeof chain !== 'object') continue; if (!('id' in chain)) continue; chainMap[chain.id] = chain; } export function getAddressDocString(parameters) { const { address } = parameters; if (!address || typeof address === 'string') return ''; if (Object.keys(address).length === 1) return `* ${getLink({ address: address[Number.parseInt(Object.keys(address)[0])], chainId: Number.parseInt(Object.keys(address)[0]), })}`; const addresses = Object.entries(address).filter((x) => chainMap[Number.parseInt(x[0])]); if (addresses.length === 0) return ''; if (addresses.length === 1 && addresses[0]) return `* ${getLink({ address: addresses[0][1], chainId: Number.parseInt(addresses[0][0]), })}`; return dedent ` ${addresses.reduce((prev, curr) => { const chainId = Number.parseInt(curr[0]); const address = curr[1]; return `${prev}\n* - ${getLink({ address, chainId })}`; }, '')} `; } function getLink({ address, chainId }) { const chain = chainMap[chainId]; if (!chain) return ''; const blockExplorer = chain.blockExplorers?.default; if (!blockExplorer) return ''; return `[__View Contract on ${capitalCase(chain.name)} ${capitalCase(blockExplorer.name)}__](${blockExplorer.url}/address/${address})`; } //# sourceMappingURL=getAddressDocString.js.map