{"version":3,"sources":["../../src/logging/console.ts"],"names":[],"mappings":"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","file":"console.mjs","sourcesContent":["import { ANSI } from './ansi';\nimport { ILogger, ILoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements ILogger {\n  protected readonly name: string;\n  protected readonly level: LogLevel;\n\n  private readonly _enabled: boolean;\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?: ILoggerOptions) {\n    this.name = name;\n\n    const env = typeof process === 'undefined' ? undefined : process.env;\n    const logNamePattern = env?.LOG || options?.pattern || '*';\n    this._enabled = parseMagicExpr(logNamePattern).test(name);\n    this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || 'info';\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._enabled) {\n      return;\n    }\n\n    if (this._levels[level] > this._levels[this.level]) {\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\nfunction parseLogLevel(level?: string): LogLevel | undefined {\n  const value = level?.toLowerCase();\n  switch (value) {\n    case 'error':\n    case 'warn':\n    case 'info':\n    case 'debug':\n      return value;\n    default:\n      return undefined;\n  }\n}\n"]}