@arks-labs/utils
v0.1.0
Published
Shared utility functions for Cygnus protocol development — formatting, validation, retry logic, and common helpers
Maintainers
Readme
@arks-labs/utils
Shared utility functions for Cygnus protocol development. Zero external dependencies.
Installation
npm install @arks-labs/utilsFormatting
import { formatToken, formatUsd, formatCompact, parseToken } from '@arks-labs/utils'
formatToken(76202633805950n, 6) // "76202633.80595"
formatUsd(76202633805950n, 6) // "$76,202,633.81"
formatCompact(76202633805950n, 6) // "76.20M"
parseToken("100.5", 6) // 100500000nAddress
import { isAddress, shortenAddress, isTxHash } from '@arks-labs/utils'
isAddress("0xCa72827a3D211CfD8F6b00Ac98824872b72CAb49") // true
shortenAddress("0xCa72827a3D211CfD8F6b00Ac98824872b72CAb49") // "0xCa72...Ab49"
isTxHash("0x123...64chars") // trueAsync
import { retry, sleep, withTimeout } from '@arks-labs/utils'
const result = await retry(() => fetchData(), { retries: 3, delay: 1000, backoff: 2 })
await sleep(500)
const data = await withTimeout(() => slowFn(), 5000)Array
import { chunk, uniqueBy, groupBy, keyBy } from '@arks-labs/utils'
chunk([1,2,3,4,5], 2) // [[1,2],[3,4],[5]]
uniqueBy(items, i => i.id) // deduplicated
groupBy(items, i => i.chain) // { base: [...], ethereum: [...] }
keyBy(items, i => i.address) // { "0x...": item }Math (BigInt)
import { BN, min, max, mulDiv } from '@arks-labs/utils'
BN.USD // 10n ** 6n (USDC/cgUSD decimals)
BN.WAD // 10n ** 18n
min(a, b)
mulDiv(amount, rate, BN.WAD) // (a * b) / denominatorLicense
MIT
