UNPKG

emmet.sdk

Version:
59 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bigIntToHuman = void 0; const formatFractionalPart_1 = require("./formatFractionalPart"); const verifiers_1 = require("../verifiers"); const zerroPadding_1 = require("./zerroPadding"); const hexToDecimalString_1 = require("./hexToDecimalString"); function bigIntToHuman(n, decimals = 18n) { if (n && decimals) { let cleaned; let whole, fraction; let divider = typeof decimals === 'string' ? 10n ** BigInt(parseInt(decimals)) : 10n ** BigInt(decimals); switch (typeof n) { case 'string': if ((0, verifiers_1.isHexString)(n)) { cleaned = (0, hexToDecimalString_1.hexToDecimalString)(n); } else { cleaned = n.replace(/[^0-9.]/g, ''); } [whole, fraction] = cleaned.split('.'); if (!fraction) { fraction = ''; const intger = BigInt(whole + fraction) / divider; fraction = BigInt(whole + fraction) % divider; whole = intger; } break; case 'number': whole = parseInt(n.toString()); fraction = (parseFloat(n.toString()) - whole) .toString() .split('.')[1]; fraction = parseInt(fraction) > 0 ? parseInt(fraction) : 0; break; case 'bigint': whole = BigInt(n) / divider; fraction = BigInt(n) % divider; break; } if (fraction) { let formattedFractionalPart = (0, formatFractionalPart_1.formatFractionalPart)((0, zerroPadding_1.zerroPadding)(fraction, decimals, 8)); if (formattedFractionalPart.length > 8) { formattedFractionalPart = formattedFractionalPart.slice(0, 8); } return `${whole.toLocaleString()}.${formattedFractionalPart}`; } else { return whole ? whole.toLocaleString() : '0.00'; } } else { return '0.00'; } } exports.bigIntToHuman = bigIntToHuman; //# sourceMappingURL=bigIntToHuman.js.map