@chorus-one/utils
Version:
Utilities for Chorus One SDK
38 lines (37 loc) • 1.33 kB
JavaScript
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';