UNPKG

@evmexplorer/utility

Version:
259 lines (252 loc) 7.68 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { camelToFlat: () => camelToFlat, delay: () => delay, deserializeWeiToEther: () => deserializeWeiToEther, deserializeWeiToGwei: () => deserializeWeiToGwei, getNativeCurrency: () => getNativeCurrency, getNetworkId: () => getNetworkId, getNetworkName: () => getNetworkName, getNetworkNameTitle: () => getNetworkNameTitle, getNetworkNameUniswap: () => getNetworkNameUniswap, parseCamelCase: () => parseCamelCase, parseHash: () => parseHash, parseNumber: () => parseNumber, parseNumberFixed: () => parseNumberFixed, parseStringToWords: () => parseStringToWords, parseTimestampToMinutesAgo: () => parseTimestampToMinutesAgo, parseToken: () => parseToken, parseTokenPrice: () => parseTokenPrice, parseTokenWithER: () => parseTokenWithER, parseWei: () => parseWei, parseWithER: () => parseWithER }); module.exports = __toCommonJS(src_exports); // src/hashes.ts function parseHash(address) { if (address) { const begin = address.substring(0, 7); const end = address.substring(address.length - 3, address.length); const formatted = `${begin}...${end}`; return formatted; } return "0x00000...000"; } // src/networks.ts var networkNameTitles = { 1: "Ethereum", 10: "Optimism", 137: "Polygon MATIC", 690: "Redstone", 8453: "Base", 34443: "Mode Network", 42161: "Arbitrum One Nitro", 7777777: "Zora" }; var networkNames = { 1: "mainnet", 10: "optimism", 137: "polygon", 314: "filecoin", 690: "redstone", 8453: "base", 34443: "mode", 42161: "arbitrum", 7777777: "zora" }; var networkNameUniswap = { 1: "ethereum", 10: "optimism", 137: "polygon", 42161: "arbitrum" }; var networkIds = { mainnet: 1, optimism: 10, polygon: 137, filecoin: 314, redstone: 690, base: 8453, mode: 34443, arbitrum: 42161, zora: 7777777 }; function getNetworkNameTitle(chainId) { return networkNameTitles[chainId]; } function getNetworkName(chainId) { return networkNames[chainId]; } function getNetworkNameUniswap(chainId) { return networkNameUniswap[chainId]; } function getNetworkId(chainId) { return networkIds[chainId]; } function getNativeCurrency(chainId) { if (chainId === 137) return "MATIC"; if (chainId === 314) return "FIL"; return "ETH"; } // src/parseNames.ts function camelToFlat(c) { const result = c.replace(/(_)+/g, " ").replace(/([a-z])([A-Z][a-z])/g, "$1 $2").replace(/([A-Z][a-z])([A-Z])/g, "$1 $2").replace(/([a-z])([A-Z]+[a-z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z][a-z])/g, "$1 $2").replace(/([a-z]+)([A-Z0-9]+)/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-rt-z][a-z]*)/g, "$1 $2").replace(/([0-9])([A-Z][a-z]+)/g, "$1 $2").replace(/([A-Z]{2,})([0-9]{2,})/g, "$1 $2").replace(/([0-9]{2,})([A-Z]{2,})/g, "$1 $2").trim(); return result; } function parseCamelCase(name) { if (name) return camelToFlat(name); } function parseStringToWords(types) { const result = types.replaceAll(",", ", "); return result; } // src/parseNumbers.ts var import_viem = require("viem"); function parseNumber(variable) { if (variable) return Number(variable).toLocaleString("en-GB"); return "0"; } function parseNumberFixed(variable) { const fixedNumber = Number(variable).toFixed(2); return parseNumber(fixedNumber); } function deserializeWeiToGwei(serializedWei) { const gweiNumber = Number((0, import_viem.formatEther)(BigInt(serializedWei), "gwei")); return gweiNumber; } function parseWei(serializedWei) { const gweiNumber = deserializeWeiToGwei(serializedWei); const parsedGweiNumber = gweiNumber.toFixed(2); return parsedGweiNumber; } function deserializeWeiToEther(serializedWei) { if (!serializedWei) return 0; const etherNumber = Number((0, import_viem.formatEther)(BigInt(serializedWei))); return etherNumber; } function parseWithER(serializedWei, exchangeRate) { const etherNumber = deserializeWeiToEther(serializedWei); const formattedString = parseNumberFixed(etherNumber * Number(exchangeRate)); return formattedString; } function parseToken(tokenValue, tokenDecimals) { if (tokenValue && tokenDecimals) { const tokenDecimalsformattedTokenValue = (0, import_viem.formatUnits)( BigInt(tokenValue), Number(tokenDecimals) ); const formattedTokenValue = parseNumberFixed( tokenDecimalsformattedTokenValue ); return formattedTokenValue; } if (tokenValue) { return tokenValue; } return "NaN"; } function parseTokenWithER(tokenValue, tokenDecimals, exchangeRate) { const formattedTokenValue = (0, import_viem.formatUnits)( BigInt(tokenValue), Number(tokenDecimals) ); const formattedString = parseNumberFixed( Number(formattedTokenValue) * Number(exchangeRate) ); return formattedString; } function parseTokenPrice(token) { const numberTokenPrice = Number(token); if (numberTokenPrice >= 1e3) return parseNumberFixed(numberTokenPrice); if (numberTokenPrice >= 0.98 && numberTokenPrice <= 1.02) return numberTokenPrice.toLocaleString("en-GB", { maximumSignificantDigits: 6 }); if (numberTokenPrice >= 1e-4) return numberTokenPrice.toLocaleString("en-GB", { maximumSignificantDigits: 4 }); return numberTokenPrice.toLocaleString("en-GB", { maximumSignificantDigits: 5 }); } // src/time.ts var delay = (ms) => new Promise((res) => setTimeout(res, ms)); function parseTimestampToMinutesAgo(timestamp) { const currentDate = /* @__PURE__ */ new Date(); const currentTimestamp = Math.floor(currentDate.getTime() / 1e3); const seconds = currentTimestamp - timestamp; if (seconds > 360 * 24 * 3600) { return "more than a year ago"; } if (seconds > 60 * 24 * 3600) { return Math.floor(seconds / (60 * 12 * 3600)) + " months ago"; } if (seconds > 30 * 24 * 3600) { return "a month ago"; } if (seconds > 14 * 24 * 3600) { return Math.floor(seconds / (24 * 3600) / 7) + " weeks ago"; } if (seconds > 7 * 24 * 3600) { return "a week ago"; } if (seconds > 2 * 24 * 3600) { return Math.floor(seconds / (60 * 3600)) + " days ago"; } if (seconds > 24 * 3600) { return "yesterday"; } if (seconds > 3600) { return Math.floor(seconds / 3600) + " hours ago"; } if (seconds > 60) { return Math.floor(seconds / 60) + " minutes ago"; } if (seconds < 60) { return "a few seconds ago"; } throw new Error("date not converted"); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { camelToFlat, delay, deserializeWeiToEther, deserializeWeiToGwei, getNativeCurrency, getNetworkId, getNetworkName, getNetworkNameTitle, getNetworkNameUniswap, parseCamelCase, parseHash, parseNumber, parseNumberFixed, parseStringToWords, parseTimestampToMinutesAgo, parseToken, parseTokenPrice, parseTokenWithER, parseWei, parseWithER });