{"version":3,"file":"console-handler.mjs","sources":["../../../../src/logger/handler/console-handler.ts"],"sourcesContent":["import type { Handler, HandlerOptions, LogRecord } from '../../types/logger'\nimport { LogLevel } from '../../types/logger'\nimport { AbstractHandler } from './abstract-handler'\nimport { LineFormatter } from '../formatter'\n\nexport interface ConsoleHandlerOptions extends HandlerOptions {\n  useStyles?: boolean\n}\n\n/**\n * Console Handler\n */\nexport class ConsoleHandler extends AbstractHandler implements Handler {\n  protected _styles: Map<LogLevel, string[]> = new Map()\n  protected readonly _useStyles: boolean\n\n  constructor(\n    level: LogLevel = LogLevel.DEBUG,\n    options?: ConsoleHandlerOptions\n  ) {\n    const opts = {\n      useStyles: true,\n      ...options\n    }\n\n    super(level, opts.bubble)\n    this._useStyles = opts.useStyles\n    this._initStyles()\n    this.setFormatter(new LineFormatter())\n  }\n\n  protected _initStyles(): void {\n    const style: string = 'color: _color_; background: _bg_; padding: 2px 6px; border-radius: 3px; font-size: 11px;'\n\n    this._styles.set(LogLevel.DEBUG, [\n      '%cDEBUG',\n      style.replace('_color_', '#666666').replace('_bg_', '#F0F0F0')\n    ])\n    this._styles.set(LogLevel.INFO, [\n      '%cINFO',\n      style.replace('_color_', 'white').replace('_bg_', '#2196F3')\n    ])\n    this._styles.set(LogLevel.NOTICE, [\n      '%cNOTICE',\n      style.replace('_color_', 'white').replace('_bg_', '#213BF3')\n    ])\n    this._styles.set(LogLevel.WARNING, [\n      '%cWARN',\n      style.replace('_color_', 'white').replace('_bg_', '#FF9800')\n    ])\n    this._styles.set(LogLevel.ERROR, [\n      '%cERROR',\n      style.replace('_color_', 'white').replace('_bg_', '#F44336')\n    ])\n    this._styles.set(LogLevel.CRITICAL, [\n      '%cCRITICAL',\n      style.replace('_color_', 'white').replace('_bg_', '#9C27B0')\n    ])\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public override async handle(record: LogRecord): Promise<boolean> {\n    const formatter = this.getFormatter()!\n    const message = formatter.format(record)\n\n    let method = this._getConsoleMethod(record.level)\n    if (record.context['needTrace'] === true) {\n      method = 'trace'\n    }\n\n    const params = []\n    if (this._useStyles && this._styles.has(record.level)) {\n      const style = this._styles.get(record.level)!\n      params.push(style[0], style[1])\n    }\n    params.push(message)\n    console[method](\n      ...params.filter(Boolean)\n    )\n\n    return true\n  }\n\n  protected _getConsoleMethod(level: LogLevel): 'log' | 'info' | 'warn' | 'error' | 'trace' {\n    switch (level) {\n      case LogLevel.INFO:\n      case LogLevel.NOTICE:\n        return 'info'\n      case LogLevel.WARNING:\n        return 'warn'\n      case LogLevel.ERROR:\n      case LogLevel.CRITICAL:\n      case LogLevel.ALERT:\n      case LogLevel.EMERGENCY:\n        return 'error'\n      default:\n        return 'log'\n    }\n  }\n}\n"],"names":[],"mappings":"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"}