@spindox/superenalotto-bridge
Version:
70 lines (58 loc) • 1.47 kB
JavaScript
/* eslint-disable no-console */
const LOG_STYLE = 'font-weight: bold';
const loggers = {};
const get = (name) => {
if (!loggers[name]) {
loggers[name] = {
name,
enabled: true,
get: (child) => get(`${name}:${child}`),
log: (...args) => log(name, ...args),
info: (...args) => info(name, ...args),
warn: (...args) => warn(name, ...args),
error: (...args) => error(name, ...args),
enable: enable.bind(null, name),
disable: disable.bind(null, name),
};
}
return loggers[name];
};
const log = (name, ...args) => {
if (!loggers[name].enabled) return;
console.log(`%c[${name}]`, LOG_STYLE, ...args);
};
const info = (name, ...args) => {
if (!loggers[name].enabled) return;
console.info(`%c[${name}]`, `${LOG_STYLE}; color: #2962FF`, ...args);
};
const warn = (name, ...args) => {
if (!loggers[name].enabled) return;
console.warn(`%c[${name}]`, LOG_STYLE, ...args);
};
const error = (name, ...args) => {
if (!loggers[name].enabled) return;
console.error(`%c[${name}]`, LOG_STYLE, ...args);
};
const enable = (name) => {
loggers[name].enabled = true;
};
const disable = (name) => {
loggers[name].enabled = false;
};
const enableAll = () => {
Object.keys(loggers).forEach((name) => {
enable(name);
});
};
const disableAll = () => {
Object.keys(loggers).forEach((name) => {
disable(name);
});
};
export default {
get,
enable,
disable,
enableAll,
disableAll,
};