{"version":3,"sources":["../../src/logging/console.ts"],"names":[],"mappings":"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","file":"console.mjs","sourcesContent":["import { ANSI } from './ansi';\nimport { Logger, LoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements Logger {\n  protected readonly name: string;\n  protected readonly level: LogLevel;\n\n  private readonly _pattern: RegExp;\n  private readonly _levels = {\n    error: 100,\n    warn: 200,\n    info: 300,\n    debug: 400,\n  };\n\n  private readonly _colors = {\n    error: ANSI.ForegroundRed,\n    warn: ANSI.ForegroundYellow,\n    info: ANSI.ForegroundCyan,\n    debug: ANSI.ForegroundMagenta,\n  };\n\n  constructor(name: string, options?: LoggerOptions) {\n    this.name = name;\n    this.level = options?.level || 'info';\n    this._pattern = parseMagicExpr(process.env.LOG || '*');\n  }\n\n  error(...msg: any[]) {\n    this.log('error', ...msg);\n  }\n\n  warn(...msg: any[]) {\n    this.log('warn', ...msg);\n  }\n\n  info(...msg: any[]) {\n    this.log('info', ...msg);\n  }\n\n  debug(...msg: any[]) {\n    this.log('debug', ...msg);\n  }\n\n  log(level: LogLevel, ...msg: any[]) {\n    if (this._levels[level] > this._levels[this.level]) {\n      return;\n    }\n\n    if (!this._pattern.test(this.name)) {\n      return;\n    }\n\n    const prefix = [this._colors[level], ANSI.Bold, `[${level.toUpperCase()}]`];\n    const name = [this.name, ANSI.ForegroundReset, ANSI.BoldReset];\n\n    for (const m of msg) {\n      let text = new String(m);\n\n      if (typeof m === 'object') {\n        text = JSON.stringify(m, null, 2);\n      }\n\n      for (const line of text.split('\\n')) {\n        console[level](prefix.join(''), name.join(''), line);\n      }\n    }\n  }\n\n  child(name: string) {\n    return new ConsoleLogger(`${this.name}/${name}`, {\n      level: this.level,\n    });\n  }\n}\n\nfunction parseMagicExpr(pattern: string) {\n  let res = '';\n  const parts = pattern.split('*');\n\n  for (let i = 0; i < parts.length; i++) {\n    if (i > 0) {\n      res += '.*';\n    }\n\n    res += parts[i];\n  }\n\n  return new RegExp(res);\n}\n"]}