UNPKG

code-craft-studio

Version:

A comprehensive QR code and barcode scanning/generation library for React. Works with or without Capacitor. Supports 22+ QR data types and 14+ barcode formats (EAN, UPC, Code 128, etc.), with customizable designs, analytics, and React components. Provider

82 lines 2.55 kB
/** * Logger utility for Code Craft Studio * Provides consistent logging with configurable levels */ class Logger { constructor() { this.config = { level: 'warn', prefix: '[CodeCraftStudio]', enabled: true, }; this.levels = { debug: 0, info: 1, warn: 2, error: 3, none: 4, }; } configure(config) { this.config = Object.assign(Object.assign({}, this.config), config); } shouldLog(level) { if (!this.config.enabled || this.config.level === 'none') { return false; } return this.levels[level] >= this.levels[this.config.level]; } formatMessage(level, message) { const timestamp = new Date().toISOString(); const prefix = this.config.prefix || ''; return `${timestamp} ${prefix} [${level.toUpperCase()}] ${message}`; } debug(message, ...args) { if (this.shouldLog('debug')) { console.debug(this.formatMessage('debug', message), ...args); } } info(message, ...args) { if (this.shouldLog('info')) { console.info(this.formatMessage('info', message), ...args); } } warn(message, ...args) { if (this.shouldLog('warn')) { console.warn(this.formatMessage('warn', message), ...args); } } error(message, error, ...args) { if (this.shouldLog('error')) { if (error instanceof Error) { console.error(this.formatMessage('error', message), error.message, error.stack, ...args); } else if (error) { console.error(this.formatMessage('error', message), error, ...args); } else { console.error(this.formatMessage('error', message), ...args); } } } /** * Sets the log level based on environment * In production, defaults to 'error' only * In development, defaults to 'warn' */ setEnvironmentLevel() { const isProduction = process.env.NODE_ENV === 'production'; this.configure({ level: isProduction ? 'error' : 'warn', }); } } // Create singleton instance export const logger = new Logger(); // Configure based on environment on import if (typeof process !== 'undefined' && process.env) { logger.setEnvironmentLevel(); } // Export for advanced configuration export default logger; //# sourceMappingURL=logger.js.map