UNPKG

@crypto-dex-sdk/format

Version:

Zenlink Format

152 lines (145 loc) 5.2 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { addressToZenlinkAssetId: () => addressToZenlinkAssetId, formatFullNumber: () => formatFullNumber, formatNumber: () => formatNumber, formatPercent: () => formatPercent, formatTransactionAmount: () => formatTransactionAmount, formatUSD: () => formatUSD, getAddress: () => getAddress, isAddress: () => isAddress, isZenlinkAddress: () => isZenlinkAddress, shortenAddress: () => shortenAddress, shortenName: () => shortenName, zenlinkAssetIdToAddress: () => zenlinkAssetIdToAddress }); module.exports = __toCommonJS(index_exports); // src/address.ts var import_address = require("@ethersproject/address"); function shortenAddress(address, characters = 4) { try { const parsed = getAddress(address); return `${parsed.substring(0, characters + 2)}...${parsed.substring(address.length - characters)}`; } catch { return `${address.substring(0, characters + 2)}...${address.substring(address.length - characters)}`; } } function isAddress(address) { return isZenlinkAddress(address) || (0, import_address.isAddress)(address); } function getAddress(address) { if (!isAddress(address)) return address; if ((0, import_address.isAddress)(address)) return (0, import_address.getAddress)(address); return address; } function isZenlinkAddress(address) { return /^\d+(-\d+)(-\d+)$/.test(address); } function addressToZenlinkAssetId(address) { if (!isZenlinkAddress(address)) throw new Error("invalid address"); const [chainId, assetType, assetIndex] = address.split("-"); return { chainId: Number(chainId), assetType: Number(assetType), assetIndex: Number(assetIndex) }; } function zenlinkAssetIdToAddress({ chainId, assetType, assetIndex }) { return `${chainId}-${assetType}-${assetIndex}`; } // src/name.ts function shortenName(name, characters = 10) { if (!name) return ""; return name.length <= characters ? name : `${name.substring(0, characters)}...`; } // src/number.ts var import_numeral = __toESM(require("numeral")); function formatNumber(value) { return (0, import_numeral.default)(value).format("(0.00a)"); } function formatFullNumber(value) { return (0, import_numeral.default)(value).format("0,0"); } function formatTransactionAmount(num, maxDigits = 9) { if (num === 0) return "0.00"; if (!num) return ""; if (num < 1e-5) return "<0.00001"; if (num >= 1e-5 && num < 1) { return `${Number(num.toFixed(5)).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 5 })}`; } if (num >= 1 && num < 1e4) { return `${Number(num.toPrecision(6)).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 6 })}`; } if (num >= 1e4 && num < 1e6) return `${Number(num.toFixed(2)).toLocaleString("en-US", { minimumFractionDigits: 2 })}`; if (num >= 10 ** (maxDigits - 1)) return `${num.toExponential(maxDigits - 3)}`; return `${Number(num.toFixed(2)).toLocaleString("en-US", { minimumFractionDigits: 2 })}`; } // src/percent.ts var import_numeral2 = __toESM(require("numeral")); var formatPercent = (value) => (0, import_numeral2.default)(value).format("0.00%"); // src/price.ts var import_numeral3 = __toESM(require("numeral")); function formatUSD(value, inputString = "$0.00a", full = false) { if (!full && Number(value) < 0.01) return "$0.00"; return (0, import_numeral3.default)(value).format(inputString); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { addressToZenlinkAssetId, formatFullNumber, formatNumber, formatPercent, formatTransactionAmount, formatUSD, getAddress, isAddress, isZenlinkAddress, shortenAddress, shortenName, zenlinkAssetIdToAddress });