General-purpose utilities for the Dango ecosystem.
npm install @left-curve/utils
import { Decimal, formatUnits, parseUnits, truncateAddress } from "@left-curve/utils";
const amount = Decimal("1000.50");
const formatted = formatUnits("1000000", 6); // "1.000000"
const parsed = parseUnits("1.5", 6); // "1500000"
const short = truncateAddress("0x1234...abcd");
Arbitrary-precision decimal arithmetic (wraps big.js). Use for all financial math — never use Number.
import { Decimal } from "@left-curve/utils";
const a = Decimal("100.5");
const b = a.mul(Decimal("2"));
formatNumber(value, options) - locale-aware number formattingformatUnits(value, decimals) / parseUnits(value, decimals) - unit conversiontruncateAddress(address) - shorten addresses for displaytruncateDec(value, digits) - truncate decimal placescamelToSnake(str) / snakeToCamel(str) - case conversioncapitalize(str) - capitalize first letterassertString(value), assertNumber(value), assertBoolean(value), etc.assertDeepEqual(a, b) - deep equality checkassertNotEmpty(value) - non-empty checkwithRetry(fn, options) - retry with backoffwithTimeout(fn, timeout) - timeout wrapperwait(ms) - promise-based delaywithResolvers() - deferred promiserecursiveTransform(obj, fn) - deep transform object valuessortObject(obj) - sort object keysinvertObject(obj) - swap keys and valuescalculateTradeSize(params), calculateFees(params), calculatePrice(params)adjustPrice(price, tickSize) - snap price to tickformatOrderId(id) - format order ID for displaysharesToUsd(shares, params) / usdToShares(usd, params) - vault conversionscomputeVaultApy(snapshots) - compute vault APY from snapshotsuid() - generate unique IDdebounce(fn, delay) - debounce function callstryCatch(fn) - Result type wrappercreateSubscription(options) - subscription helperbatchPoller(fn, interval) - batch pollinggetNavigatorOS(), isMobileOrTable() - browser detectionTBD