@httpc/kit
Version:
httpc toolbox for building function-based API with minimal code and end-to-end type safety
69 lines (68 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsoleLogger = void 0;
class ConsoleLogger {
constructor(label, level = "info") {
this.label = label;
this.level = level;
}
error(message, ...args) {
if (typeof message === "string") {
this.log("error", message, ...args);
}
else {
console.error(message);
}
}
info(message, ...args) {
this.log("info", message, ...args);
}
warn(message, ...args) {
this.log("warn", message, ...args);
}
debug(message, ...args) {
this.log("debug", message, ...args);
}
verbose(message, ...args) {
this.log("verbose", message, ...args);
}
log(level, message, ...args) {
if (!this.isLevelEnabled(level))
return;
let call;
switch (level) {
case "warn":
call = console.warn;
break;
case "error":
call = console.error;
break;
case "debug":
call = console.debug;
break;
case "info":
case "verbose":
default:
call = console.info;
break;
}
call.call(console, this.formatMessage(level, message), ...args);
}
isLevelEnabled(level) {
return isLevelEnabled(this.level, level);
}
formatMessage(level, message) {
return `${level} [${this.label}] ${message}`;
}
}
exports.ConsoleLogger = ConsoleLogger;
const LOG_LEVELS = [
"debug",
"verbose",
"info",
"warn",
"error"
];
function isLevelEnabled(currentLevel, asked) {
return LOG_LEVELS.indexOf(asked) >= LOG_LEVELS.indexOf(currentLevel);
}