@evmexplorer/utility
Version:
EVM Explorer utility sdk
259 lines (252 loc) • 7.68 kB
JavaScript
;
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
});