UNPKG

wuchale

Version:

Protobuf-like i18n from plain code

43 lines (42 loc) 1.13 kB
const colors = { red: 31, green: 32, yellow: 33, magenta: 35, cyan: 36, grey: 90, reset: 0, }; const encode = (code) => `\x1b[${code}m`; const colorFuncsEntries = Object.entries(colors).map(([col, code]) => [ col, (msg) => `${encode(code)}${msg}${encode(colors.reset)}`, ]); export const color = Object.fromEntries(colorFuncsEntries); const logSeverity = { verbose: 0, info: 1, warn: 2, error: 3, }; export class Logger { #logSeverity; constructor(logLevel) { this.#logSeverity = logSeverity[logLevel]; } checkLevel = (level) => logSeverity[level] >= this.#logSeverity; #show = (message, level) => { if (!this.checkLevel(level)) { return; } let func = console.log; if (level !== 'verbose') { func = console[level]; } func(message); }; info = (msg) => this.#show(color.cyan(msg), 'info'); warn = (msg) => this.#show(color.yellow(msg), 'warn'); error = (msg) => this.#show(color.red(msg), 'error'); verbose = (msg) => this.#show(color.grey(msg), 'verbose'); }