@averox/cryptosphare
Version:
Real-time SDK for end-to-end encrypted messaging, key monitoring, and secure A/V streaming
69 lines (68 loc) • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = exports.LogLevel = void 0;
var LogLevel;
(function (LogLevel) {
LogLevel["DEBUG"] = "DEBUG";
LogLevel["INFO"] = "INFO";
LogLevel["WARN"] = "WARN";
LogLevel["ERROR"] = "ERROR";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
class Logger {
constructor(config) {
this.config = {
timestamps: true,
showLevel: true,
...config,
};
}
debug(message, ...args) {
this.log(LogLevel.DEBUG, message, ...args);
}
info(message, ...args) {
this.log(LogLevel.INFO, message, ...args);
}
warn(message, ...args) {
this.log(LogLevel.WARN, message, ...args);
}
error(message, ...args) {
this.log(LogLevel.ERROR, message, ...args);
}
log(level, message, ...args) {
if (this.shouldLog(level)) {
const formattedMessage = this.formatMessage(level, message);
if (this.config.logHandler) {
this.config.logHandler(level, formattedMessage, ...args);
return;
}
switch (level) {
case LogLevel.ERROR:
console.error(formattedMessage, ...args);
break;
case LogLevel.WARN:
console.warn(formattedMessage, ...args);
break;
default:
console.log(formattedMessage, ...args);
}
}
}
shouldLog(level) {
const levels = Object.values(LogLevel);
const minLevelIndex = levels.indexOf(this.config.minLevel);
const currentLevelIndex = levels.indexOf(level);
return currentLevelIndex >= minLevelIndex;
}
formatMessage(level, message) {
const parts = [];
if (this.config.timestamps) {
parts.push(`[${new Date().toISOString()}]`);
}
if (this.config.showLevel) {
parts.push(`[${level}]`);
}
parts.push(message);
return parts.join(' ');
}
}
exports.Logger = Logger;