{"version":3,"file":"format.mjs","names":[],"sources":["../../src/utils/format.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SUI_DECIMALS } from './constants.js';\n\nconst ELLIPSIS = '\\u{2026}';\n\nexport function formatAddress(address: string) {\n\tif (address.length <= 6) {\n\t\treturn address;\n\t}\n\n\tconst offset = address.startsWith('0x') ? 2 : 0;\n\n\treturn `0x${address.slice(offset, offset + 4)}${ELLIPSIS}${address.slice(-4)}`;\n}\n\nexport function formatDigest(digest: string) {\n\t// Use 10 first characters\n\treturn `${digest.slice(0, 10)}${ELLIPSIS}`;\n}\n\nconst AMOUNT_REGEX = /^-?(?:[0-9]+(?:\\.[0-9]+)?|\\.[0-9]+)$/;\n\n/** Parse a decimal string into its smallest-unit bigint representation. No floating point. */\nexport function parseToUnits(amount: string, decimals: number): bigint {\n\tif (decimals < 0 || !Number.isInteger(decimals)) {\n\t\tthrow new Error(`Invalid decimals: ${decimals}`);\n\t}\n\n\tif (!AMOUNT_REGEX.test(amount)) {\n\t\tthrow new Error(`Invalid amount: \"${amount}\"`);\n\t}\n\n\tconst negative = amount.startsWith('-');\n\tconst stripped = negative ? amount.slice(1) : amount;\n\n\tconst [whole, fraction = ''] = stripped.split('.');\n\n\tif (fraction.length > decimals) {\n\t\tthrow new Error(\n\t\t\t`Too many decimal places: \"${amount}\" has ${fraction.length} but max is ${decimals}`,\n\t\t);\n\t}\n\n\tconst paddedFraction = fraction.padEnd(decimals, '0') || '0';\n\tconst result = BigInt(whole || '0') * 10n ** BigInt(decimals) + BigInt(paddedFraction);\n\n\treturn negative ? -result : result;\n}\n\n/** Parse a SUI decimal string into MIST. */\nexport function parseToMist(amount: string): bigint {\n\treturn parseToUnits(amount, SUI_DECIMALS);\n}\n"],"mappings":";;;AAKA,MAAM,WAAW;AAEjB,SAAgB,cAAc,SAAiB;AAC9C,KAAI,QAAQ,UAAU,EACrB,QAAO;CAGR,MAAM,SAAS,QAAQ,WAAW,KAAK,GAAG,IAAI;AAE9C,QAAO,KAAK,QAAQ,MAAM,QAAQ,SAAS,EAAE,GAAG,WAAW,QAAQ,MAAM,GAAG;;AAG7E,SAAgB,aAAa,QAAgB;AAE5C,QAAO,GAAG,OAAO,MAAM,GAAG,GAAG,GAAG;;AAGjC,MAAM,eAAe;;AAGrB,SAAgB,aAAa,QAAgB,UAA0B;AACtE,KAAI,WAAW,KAAK,CAAC,OAAO,UAAU,SAAS,CAC9C,OAAM,IAAI,MAAM,qBAAqB,WAAW;AAGjD,KAAI,CAAC,aAAa,KAAK,OAAO,CAC7B,OAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG;CAG/C,MAAM,WAAW,OAAO,WAAW,IAAI;CAGvC,MAAM,CAAC,OAAO,WAAW,OAFR,WAAW,OAAO,MAAM,EAAE,GAAG,QAEN,MAAM,IAAI;AAElD,KAAI,SAAS,SAAS,SACrB,OAAM,IAAI,MACT,6BAA6B,OAAO,QAAQ,SAAS,OAAO,cAAc,WAC1E;CAGF,MAAM,iBAAiB,SAAS,OAAO,UAAU,IAAI,IAAI;CACzD,MAAM,SAAS,OAAO,SAAS,IAAI,GAAG,OAAO,OAAO,SAAS,GAAG,OAAO,eAAe;AAEtF,QAAO,WAAW,CAAC,SAAS;;;AAI7B,SAAgB,YAAY,QAAwB;AACnD,QAAO,aAAa,QAAQ,aAAa"}