/** * Checks if current environment is 'development' */ export function isDevEnv() { return process.env.NODE_ENV === 'development'; } /** * Calls console[type] with provided args * Useful to distinguish logs that should be in production * @param type - type of console (e.g. log, error) * @param args */ export function log(type: T, ...args: Parameters) { const fn = console[type]; return fn(...args); } /** * Function that calls console[type] only in dev environment * @param type - type of console (e.g. log, error) * @param args */ export function devLog( type: T, ...args: Parameters ) { if (isDevEnv()) { log(type, ...args); } } /** * Makes promise cancelable * @author istarkov */ export function makeCancelable(promise: Promise) { let hasCanceled = false; const wrappedPromise = new Promise((resolve, reject) => { promise.then( val => (hasCanceled ? reject({ isCanceled: true }) : resolve(val)), error => (hasCanceled ? reject({ isCanceled: true }) : reject(error)), ); }); return { promise: wrappedPromise, cancel() { hasCanceled = true; }, }; }