UNPKG

@cobuildlab/8base-chat

Version:

Chat component that uses 8base

55 lines (48 loc) 1.23 kB
/** * 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<T extends keyof Console>(type: T, ...args: Parameters<Console[T]>) { 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<T extends keyof Console>( type: T, ...args: Parameters<Console[T]> ) { if (isDevEnv()) { log(type, ...args); } } /** * Makes promise cancelable * @author istarkov */ export function makeCancelable<T = any>(promise: Promise<T>) { let hasCanceled = false; const wrappedPromise = new Promise<T>((resolve, reject) => { promise.then( val => (hasCanceled ? reject({ isCanceled: true }) : resolve(val)), error => (hasCanceled ? reject({ isCanceled: true }) : reject(error)), ); }); return { promise: wrappedPromise, cancel() { hasCanceled = true; }, }; }