UNPKG

@notjustcoders/ioc-arise

Version:

Arise type-safe IoC containers from your code. Zero overhead, zero coupling.

162 lines 4.59 kB
"use strict"; /** * Logger utility for CLI output * Provides consistent, production-ready logging with support for verbose mode and colors */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.LogLevel = void 0; // ANSI color codes for beautiful console output const colors = { reset: '\x1b[0m', bright: '\x1b[1m', dim: '\x1b[2m', red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m', blue: '\x1b[34m', magenta: '\x1b[35m', cyan: '\x1b[36m', white: '\x1b[37m', gray: '\x1b[90m', }; var LogLevel; (function (LogLevel) { LogLevel[LogLevel["ERROR"] = 0] = "ERROR"; LogLevel[LogLevel["WARN"] = 1] = "WARN"; LogLevel[LogLevel["INFO"] = 2] = "INFO"; LogLevel[LogLevel["SUCCESS"] = 3] = "SUCCESS"; LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { /** * Initialize logger with options */ static initialize(options = {}) { Logger.verbose = options.verbose ?? false; Logger.silent = options.silent ?? false; Logger.colorsEnabled = options.colors ?? true; } /** * Apply color to text */ static colorize(text, color) { if (!Logger.colorsEnabled) return text; return `${color}${text}${colors.reset}`; } /** * Log an error message */ static error(message, ...args) { if (Logger.silent) return; const coloredMessage = Logger.colorize(`❌ ${message}`, colors.red + colors.bright); console.error(coloredMessage, ...args); } /** * Log a warning message */ static warn(message, ...args) { if (Logger.silent) return; const coloredMessage = Logger.colorize(`⚠️ ${message}`, colors.yellow + colors.bright); console.warn(coloredMessage, ...args); } /** * Log an info message */ static info(message, ...args) { if (Logger.silent) return; const coloredMessage = Logger.colorize(`ℹ️ ${message}`, colors.blue); console.log(coloredMessage, ...args); } /** * Log a success message */ static success(message, ...args) { if (Logger.silent) return; const coloredMessage = Logger.colorize(`✅ ${message}`, colors.green + colors.bright); console.log(coloredMessage, ...args); } /** * Log a debug message (only shown in verbose mode) */ static debug(message, ...args) { if (Logger.silent || !Logger.verbose) return; const coloredMessage = Logger.colorize(`🔍 ${message}`, colors.gray); console.log(coloredMessage, ...args); } /** * Log a plain message without prefix (for structured output) */ static log(message, ...args) { if (Logger.silent) return; console.log(message, ...args); } /** * Log a message with custom emoji/prefix and optional color */ static custom(prefix, message, color, ...args) { if (Logger.silent) return; const coloredPrefix = color ? Logger.colorize(prefix, color) : prefix; const output = `${coloredPrefix} ${message}`; console.log(output, ...args); } /** * Log a section header */ static section(title) { if (Logger.silent) return; const separator = Logger.colorize('─'.repeat(50), colors.cyan); const coloredTitle = Logger.colorize(title, colors.cyan + colors.bright); console.log(`\n${separator}`); console.log(` ${coloredTitle}`); console.log(`${separator}\n`); } /** * Log a newline */ static newline() { if (Logger.silent) return; console.log(''); } /** * Format error for display */ static formatError(error) { if (error instanceof Error) { return error.message; } return String(error); } /** * Check if verbose mode is enabled */ static isVerbose() { return Logger.verbose; } /** * Colorize text (public method for advanced usage) */ static colorizeText(text, color) { return Logger.colorize(text, color); } /** * Get color codes (for advanced usage) */ static getColors() { return colors; } } exports.Logger = Logger; Logger.verbose = false; Logger.silent = false; Logger.colorsEnabled = true; //# sourceMappingURL=logger.js.map