UNPKG

@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
"use strict"; 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;