UNPKG

embedia

Version:

Zero-configuration AI chatbot integration CLI - direct file copy with embedded API keys

148 lines (132 loc) 2.92 kB
const chalk = require('chalk'); /** * Logger utility for consistent colored output */ class Logger { constructor() { this.silent = false; } /** * Set silent mode * @param {boolean} silent - Whether to suppress output */ setSilent(silent = true) { this.silent = silent; } /** * Log info message * @param {string} message - Message to log */ info(message) { if (!this.silent) { console.log(chalk.blue('ℹ'), message); } } /** * Log success message * @param {string} message - Message to log */ success(message) { if (!this.silent) { console.log(chalk.green('✅'), message); } } /** * Log warning message * @param {string} message - Message to log */ warn(message) { if (!this.silent) { console.log(chalk.yellow('⚠️'), message); } } /** * Log error message * @param {string} message - Message to log */ error(message) { console.error(chalk.red('❌'), message); } /** * Log debug message (only in verbose mode) * @param {string} message - Message to log */ debug(message) { if (process.env.DEBUG && !this.silent) { console.log(chalk.gray('🐛'), chalk.gray(message)); } } /** * Log a step in the process * @param {string} message - Step message */ step(message) { if (!this.silent) { console.log(chalk.cyan('→'), message); } } /** * Log a header/title * @param {string} title - Title to log */ title(title) { if (!this.silent) { console.log('\n' + chalk.bold.cyan(title)); } } /** * Log with custom color * @param {string} color - Chalk color name * @param {string} icon - Icon to show * @param {string} message - Message to log */ custom(color, icon, message) { if (!this.silent) { console.log(chalk[color](icon), message); } } /** * Log a list of items * @param {Array} items - Items to log * @param {string} color - Color for the bullets (default: gray) */ list(items, color = 'gray') { if (!this.silent && Array.isArray(items)) { items.forEach(item => { console.log(chalk[color](' •'), item); }); } } /** * Log instructions with numbered steps * @param {Array} steps - Steps to log */ instructions(steps) { if (!this.silent && Array.isArray(steps)) { console.log(chalk.yellow('\nNext steps:')); steps.forEach((step, index) => { console.log(chalk.yellow(` ${index + 1}.`), step); }); console.log(''); } } /** * Log a separator line */ separator() { if (!this.silent) { console.log(chalk.gray('─'.repeat(50))); } } /** * Clear the console */ clear() { if (!this.silent) { console.clear(); } } } // Create a singleton instance const logger = new Logger(); module.exports = logger;