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
JavaScript
/**
* 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