blockchain-api
Version:
API utilities for interacting with the Exatechl2 blockchain
81 lines (80 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logger = void 0;
exports.configureLogger = configureLogger;
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
*/
function configureLogger(options) {
config = { ...config, ...options };
}
/**
*
* @param level
* @returns
*/
function isLevelEnabled(level) {
if (!config.enabled)
return false;
return LOG_LEVELS[level] >= LOG_LEVELS[config.level];
}
/**
*
* @param level
* @param args
*/
function log(level, ...args) {
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;
}
}
}
exports.logger = {
debug: (...args) => log('debug', ...args),
info: (...args) => log('info', ...args),
warn: (...args) => log('warn', ...args),
error: (...args) => log('error', ...args),
/**
*
* @param enabled
*/
setEnabled: (enabled) => {
config.enabled = enabled;
},
/**
*
*/
disableBrowserLogs: () => {
if (isBrowser) {
config.enabled = false;
}
}
};
exports.default = exports.logger;