{"version":3,"file":"index.mjs","sources":["webpack://@agent-infra/logger/./src/types.ts","webpack://@agent-infra/logger/./src/colorize.ts","webpack://@agent-infra/logger/./src/console-logger.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ColorName } from './colorize';\n\n/**\n * Log levels in order of increasing severity\n */\nexport enum LogLevel {\n  /** Most verbose level, includes all logs */\n  DEBUG = 0,\n  /** Standard information messages */\n  INFO = 1,\n  /** Success messages and operations */\n  SUCCESS = 2,\n  /** Warning messages */\n  WARN = 3,\n  /** Error messages */\n  ERROR = 4,\n  /** No logs will be displayed */\n  SILENT = 5,\n}\n\n/**\n * Core logger interface defining the required methods for all logger implementations\n */\nexport interface Logger {\n  /**\n   * Basic logging method (equivalent to console.log)\n   * @param args - Arguments to log\n   */\n  log(...args: any[]): void;\n\n  /**\n   * Log informational messages\n   * @param args - Arguments to log\n   */\n  info(...args: any[]): void;\n\n  /**\n   * Log warning messages\n   * @param args - Arguments to log\n   */\n  warn(...args: any[]): void;\n\n  /**\n   * Log error messages\n   * @param args - Arguments to log\n   */\n  error(...args: any[]): void;\n\n  /**\n   * Log debug messages\n   * @param message - Debug message to display\n   */\n  debug(...args: any[]): void;\n\n  /**\n   * Log success messages with green color\n   * @param message - Success message to display\n   */\n  success(message: string): void;\n\n  /**\n   * Log a message with associated structured data\n   * @param message - The message to log\n   * @param data - Optional structured data to log\n   * @param transformer - Optional function to transform data before logging\n   */\n  infoWithData<T = any>(\n    message: string,\n    data?: T,\n    transformer?: (value: T) => any,\n  ): void;\n\n  /**\n   * Create a new logger with additional prefix\n   * @param subPrefix - Prefix to add to the new logger\n   * @returns A new logger instance with the combined prefix\n   */\n  spawn(subPrefix: string): Logger;\n\n  /**\n   * Set the current log level\n   * @param level - New log level to set\n   */\n  setLevel(level: LogLevel): void;\n\n  /**\n   * Get the current log level\n   * @returns Current log level\n   */\n  getLevel(): LogLevel;\n}\n\n/**\n * Base implementation of Logger interface with no-op methods.\n * Useful as a fallback or for extending to create custom loggers.\n */\nexport class BaseLogger implements Logger {\n  log(...args: any[]): void {}\n\n  info(...args: any[]): void {}\n\n  warn(...args: any[]): void {}\n\n  error(...args: any[]): void {}\n\n  debug(...args: any[]): void {}\n\n  success(message: string): void {}\n\n  infoWithData<T = any>(\n    message: string,\n    data?: T,\n    transformer?: (value: T) => any,\n  ): void {}\n\n  spawn(subPrefix: string): Logger {\n    return new BaseLogger();\n  }\n\n  setLevel(level: LogLevel): void {}\n\n  getLevel(): LogLevel {\n    return LogLevel.INFO;\n  }\n}\n\n/**\n * Default no-op logger instance\n */\nexport const defaultLogger = new BaseLogger();\n","/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Check if running in browser environment\nconst isBrowser =\n  typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// Check if color output is supported (Node.js environment)\nconst supportsColor =\n  !isBrowser &&\n  !('NO_COLOR' in process.env || process.env.FORCE_COLOR === '0') &&\n  (process.env.FORCE_COLOR !== undefined || process.stdout?.isTTY);\n\n/**\n * ANSI color codes for terminal output\n */\nconst ANSI_COLORS = {\n  black: '\\x1b[30m',\n  red: '\\x1b[31m',\n  green: '\\x1b[32m',\n  yellow: '\\x1b[33m',\n  blue: '\\x1b[34m',\n  magenta: '\\x1b[35m',\n  cyan: '\\x1b[36m',\n  white: '\\x1b[37m',\n  gray: '\\x1b[90m',\n  reset: '\\x1b[0m',\n};\n\n/**\n * CSS color values for browser console\n */\nexport const CSS_COLOR_VALUES = {\n  black: '#000000',\n  red: '#ff0000',\n  green: '#00cc00',\n  yellow: '#cc7700', // 更改为更深的橙黄色，提高在白色背景上的可读性\n  blue: '#0066ff', // 稍微调整为更鲜明的蓝色\n  magenta: '#cc00cc',\n  cyan: '#00aaaa',\n  white: '#ffffff',\n  gray: '#808080',\n  reset: 'inherit',\n};\n\n// CSS color styles for browser console\nconst CSS_COLORS: Record<string, string> = {};\nObject.entries(CSS_COLOR_VALUES).forEach(([key, value]) => {\n  CSS_COLORS[key] = `color: ${value}`;\n});\n\nexport type ColorName = keyof typeof ANSI_COLORS;\n\n/**\n * Adds color to text in both Node.js and browser environments\n * Returns formatted text for Node.js or special format for browser console\n *\n * @param text - The text to colorize\n * @param color - The color to apply\n * @returns Colorized text string\n */\nexport function colorize(text: string, color: ColorName): string {\n  if (!text) return text;\n\n  if (isBrowser) {\n    // For browser, we still return the original text\n    // The actual coloring happens in the log function\n    return text;\n  }\n\n  // In Node.js environment, add ANSI color codes if supported\n  if (supportsColor && ANSI_COLORS[color]) {\n    return `${ANSI_COLORS[color]}${text}${ANSI_COLORS.reset}`;\n  }\n\n  // Return original text in environments without color support\n  return text;\n}\n\n/**\n * Logs colored text in both browser and Node.js environments\n * Ensures consistent behavior across platforms\n *\n * @param text - The text to log with color\n * @param color - The color to apply\n */\nexport function colorLog(text: string, color: ColorName): void {\n  if (isBrowser && CSS_COLORS[color]) {\n    console.log(`%c${text}`, CSS_COLORS[color]);\n  } else if (supportsColor) {\n    console.log(colorize(text, color));\n  } else {\n    console.log(text);\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseLogger, ColorName, LogLevel } from './types';\nimport { colorize, CSS_COLOR_VALUES } from './colorize';\n\nexport class ConsoleLogger extends BaseLogger {\n  private prefix: string;\n  private lastPrefixColor: ColorName | null = null;\n  private level: LogLevel = LogLevel.INFO;\n\n  /**\n   * Creates a new console logger instance\n   *\n   * @param prefix - Optional prefix to prepend to all log messages\n   * @param level - Initial log level (defaults to INFO)\n   */\n  constructor(prefix = '', level: LogLevel = LogLevel.INFO) {\n    super();\n    this.prefix = prefix;\n    this.level = level;\n  }\n\n  /**\n   * Applies color to the prefix based on log type\n   *\n   * @param prefix - The prefix string to colorize\n   * @param type - Optional log type to determine color\n   * @returns Colorized prefix string\n   * @private\n   */\n  private colorPrefix(\n    prefix: string,\n    type?: 'info' | 'warn' | 'error' | 'success' | 'debug',\n  ): string {\n    if (!prefix) return '';\n\n    let color: ColorName = 'gray';\n    switch (type) {\n      case 'info':\n        color = 'blue';\n        break;\n      case 'warn':\n        color = 'yellow';\n        break;\n      case 'error':\n        color = 'red';\n        break;\n      case 'debug':\n        color = 'gray';\n        break;\n      case 'success':\n        color = 'green';\n        break;\n    }\n\n    const isBrowser =\n      typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n    if (isBrowser) {\n      this.lastPrefixColor = color;\n      return prefix;\n    }\n\n    return colorize(prefix, color);\n  }\n\n  /**\n   * Basic log method (equivalent to console.log)\n   * Only outputs if log level is DEBUG or lower\n   *\n   * @param args - Arguments to log\n   */\n  log(...args: any[]): void {\n    if (this.level <= LogLevel.DEBUG) {\n      console.log(this.colorPrefix(this.prefix), ...args);\n    }\n  }\n\n  /**\n   * Logs informational messages\n   * Only outputs if log level is INFO or lower\n   *\n   * @param args - Arguments to log\n   */\n  info(...args: any[]): void {\n    if (this.level <= LogLevel.INFO) {\n      const prefix = this.colorPrefix(this.prefix, 'info');\n\n      if (typeof window !== 'undefined' && this.lastPrefixColor) {\n        console.log(\n          `%c${prefix}%c`,\n          `color: ${CSS_COLOR_VALUES[this.lastPrefixColor]}`,\n          'color: inherit',\n          ...args,\n        );\n        this.lastPrefixColor = null;\n      } else {\n        console.log(`${prefix}`, ...args);\n      }\n    }\n  }\n\n  /**\n   * Logs warning messages\n   * Only outputs if log level is WARN or lower\n   *\n   * @param args - Arguments to log\n   */\n  warn(...args: any[]): void {\n    if (this.level <= LogLevel.WARN) {\n      const prefix = this.colorPrefix(this.prefix, 'warn');\n\n      if (typeof window !== 'undefined' && this.lastPrefixColor) {\n        console.warn(\n          `%c${prefix}%c`,\n          `color: ${CSS_COLOR_VALUES[this.lastPrefixColor]}`,\n          'color: inherit',\n          ...args,\n        );\n        this.lastPrefixColor = null;\n      } else {\n        console.warn(`${prefix}`, ...args);\n      }\n    }\n  }\n\n  /**\n   * Logs error messages\n   * Only outputs if log level is ERROR or lower\n   *\n   * @param args - Arguments to log\n   */\n  error(...args: any[]): void {\n    if (this.level <= LogLevel.ERROR) {\n      const prefix = this.colorPrefix(this.prefix, 'error');\n\n      if (typeof window !== 'undefined' && this.lastPrefixColor) {\n        console.error(\n          `%c${prefix}%c`,\n          `color: ${CSS_COLOR_VALUES[this.lastPrefixColor]}`,\n          'color: inherit',\n          ...args,\n        );\n        this.lastPrefixColor = null;\n      } else {\n        console.error(`${prefix}`, ...args);\n      }\n    }\n  }\n\n  /**\n   * Logs success messages\n   * Only outputs if log level is SUCCESS or lower\n   *\n   * @param message - Success message to display\n   */\n  success(message: string): void {\n    if (this.level <= LogLevel.SUCCESS) {\n      const prefix = this.colorPrefix(this.prefix, 'success');\n\n      if (typeof window !== 'undefined' && this.lastPrefixColor) {\n        console.log(\n          `%c${prefix}%c ${message}`,\n          `color: ${CSS_COLOR_VALUES[this.lastPrefixColor]}`,\n          'color: inherit',\n        );\n        this.lastPrefixColor = null;\n      } else {\n        console.log(`${prefix} ${message}`);\n      }\n    }\n  }\n\n  /**\n   * Logs a message with associated structured data\n   * Optionally transforms the data before logging\n   * Only outputs if log level is INFO or lower\n   *\n   * @param message - The message to log\n   * @param data - Optional structured data to log\n   * @param transformer - Optional function to transform data before logging\n   */\n  infoWithData<T = any>(\n    message: string,\n    data?: T,\n    transformer?: (value: T) => any,\n  ): void {\n    if (this.level <= LogLevel.INFO) {\n      this.info(message);\n      if (data) {\n        console.log(transformer ? transformer(data) : data);\n      }\n    }\n  }\n\n  /**\n   * Creates a child logger with a nested prefix\n   *\n   * @param prefix - Prefix for the child logger\n   * @returns A new ConsoleLogger instance with combined prefix\n   */\n  spawn(prefix: string): ConsoleLogger {\n    const newPrefix = this.prefix ? `${this.prefix}:${prefix}` : prefix;\n    // Pass the current log level to the child logger\n    return new ConsoleLogger(newPrefix, this.level);\n  }\n\n  /**\n   * Sets the current log level\n   *\n   * @param level - New log level to set\n   */\n  setLevel(level: LogLevel): void {\n    this.level = level;\n  }\n\n  /**\n   * Gets the current log level\n   *\n   * @returns Current log level\n   */\n  getLevel(): LogLevel {\n    return this.level;\n  }\n}\n"],"names":["LogLevel","BaseLogger","args","message","data","transformer","subPrefix","level","defaultLogger","_process_stdout","isBrowser","window","supportsColor","process","undefined","ANSI_COLORS","CSS_COLOR_VALUES","CSS_COLORS","Object","key","value","colorize","text","color","colorLog","console","ConsoleLogger","prefix","type","newPrefix"],"mappings":"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"}