UNPKG

@chorus-one/utils

Version:
38 lines (37 loc) 1.33 kB
import BigNumber from 'bignumber.js'; // By far NEAR uses the highest decimal places (yocto) export const MAX_DECIMAL_PLACES = 24; // Set max decimal places BigNumber.set({ DECIMAL_PLACES: MAX_DECIMAL_PLACES }); export const nopLogger = { info: (..._args) => { }, error: (..._args) => { } }; // fixes the BigInt serialization (see: https://github.com/GoogleChromeLabs/jsbi/issues/30) export function SafeJSONStringify(obj, space) { return JSON.stringify(obj, (key, value) => (typeof value === 'bigint' ? value.toString() : value), // return everything else unchanged space); } export function checkMaxDecimalPlaces(denomMultiplier) { if (BigNumber(denomMultiplier) .dividedBy(10 ** MAX_DECIMAL_PLACES) .gt(1)) { throw new Error(`denomMultiplier ${denomMultiplier} exceeds maximum decimal precision: ${MAX_DECIMAL_PLACES}`); } } export function sortObjectByKeys(obj) { if (Array.isArray(obj)) { return obj.map(sortObjectByKeys); } else if (obj !== null && typeof obj === 'object') { return Object.keys(obj) .sort() .reduce((acc, key) => { ; acc[key] = sortObjectByKeys(obj[key]); return acc; }, {}); } return obj; } export const DEFAULT_TRACKING_REF_CODE = 'sdk-chorusone-staking';