@toreda/log
Version:
Lightweight TypeScript logger with flexible custom transports.
81 lines (80 loc) • 2.08 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogLevel = void 0;
const defaults_1 = require("../defaults");
const level_1 = require("../check/level");
/**
* @category Log Level
*/
class LogLevel {
constructor(initial) {
if ((0, level_1.checkLevel)(initial)) {
this.currentLevel = initial;
}
else {
this.currentLevel = 0x0;
}
}
set(level) {
if (!(0, level_1.checkLevel)(level)) {
return false;
}
this.currentLevel = level;
return true;
}
get() {
if (!(0, level_1.checkLevel)(this.currentLevel)) {
return defaults_1.Defaults.GlobalLogLevel;
}
return this.currentLevel;
}
enableLevel(level) {
if (!(0, level_1.checkLevel)(level)) {
return false;
}
const result = this.currentLevel | level;
if (!(0, level_1.checkLevel)(result)) {
return false;
}
this.currentLevel = result;
return true;
}
enableLevels(levels) {
let success = true;
if (!Array.isArray(levels)) {
return false;
}
for (const level of levels) {
const result = this.enableLevel(level);
if (!result) {
success = false;
}
}
return success;
}
disableLevel(level) {
if (!(0, level_1.checkLevel)(level)) {
return false;
}
const result = this.currentLevel & ~level;
if (!(0, level_1.checkLevel)(result)) {
return false;
}
this.currentLevel = result;
return true;
}
disableLevels(levels) {
let success = true;
if (!Array.isArray(levels)) {
return false;
}
for (const level of levels) {
const result = this.disableLevel(level);
if (!result) {
success = false;
}
}
return success;
}
}
exports.LogLevel = LogLevel;