UNPKG

blockchain-api

Version:

API utilities for interacting with the Exatechl2 blockchain

85 lines (74 loc) 1.61 kB
const isBrowser = typeof window !== 'undefined'; let config = { enabled: !isBrowser, level: 'info', logToConsole: true }; const LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 }; /** * * @param options */ export function configureLogger(options: Partial<typeof config>) { config = { ...config, ...options }; } /** * * @param level * @returns */ function isLevelEnabled(level: keyof typeof LOG_LEVELS): boolean { if (!config.enabled) return false; return LOG_LEVELS[level] >= LOG_LEVELS[config.level as keyof typeof LOG_LEVELS]; } /** * * @param level * @param args */ function log(level: keyof typeof LOG_LEVELS, ...args: any[]) { if (!isLevelEnabled(level)) return; if (config.logToConsole) { switch (level) { case 'debug': console.debug(...args); break; case 'info': console.info(...args); break; case 'warn': console.warn(...args); break; case 'error': console.error(...args); break; } } } export const logger = { debug: (...args: any[]) => log('debug', ...args), info: (...args: any[]) => log('info', ...args), warn: (...args: any[]) => log('warn', ...args), error: (...args: any[]) => log('error', ...args), /** * * @param enabled */ setEnabled: (enabled: boolean) => { config.enabled = enabled; }, /** * */ disableBrowserLogs: () => { if (isBrowser) { config.enabled = false; } } }; export default logger;