| "use strict"; | 
|   | 
| const LEVELS = ['debug', 'info', 'warn', 'error', 'silent']; | 
| const LEVEL_TO_CONSOLE_METHOD = new Map([['debug', 'log'], ['info', 'log'], ['warn', 'log']]); | 
|   | 
| class Logger { | 
|   constructor(level = Logger.defaultLevel) { | 
|     this.activeLevels = new Set(); | 
|     this.setLogLevel(level); | 
|   } | 
|   | 
|   setLogLevel(level) { | 
|     const levelIndex = LEVELS.indexOf(level); | 
|     if (levelIndex === -1) throw new Error(`Invalid log level "${level}". Use one of these: ${LEVELS.join(', ')}`); | 
|     this.activeLevels.clear(); | 
|   | 
|     for (const [i, level] of LEVELS.entries()) { | 
|       if (i >= levelIndex) this.activeLevels.add(level); | 
|     } | 
|   } | 
|   | 
|   _log(level, ...args) { | 
|     console[LEVEL_TO_CONSOLE_METHOD.get(level) || level](...args); | 
|   } | 
|   | 
| } | 
|   | 
| Logger.levels = LEVELS; | 
| Logger.defaultLevel = 'info'; | 
| ; | 
| LEVELS.forEach(level => { | 
|   if (level === 'silent') return; | 
|   | 
|   Logger.prototype[level] = function (...args) { | 
|     if (this.activeLevels.has(level)) this._log(level, ...args); | 
|   }; | 
| }); | 
| module.exports = Logger; |