{"version":3,"sources":["../src/utils/logger.ts"],"names":[],"mappings":"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","file":"chunk-F3LSAVQG.cjs","sourcesContent":["/**\n * 可配置的日志工具\n *\n */\n\n/** 日志级别 */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/** 日志级别优先级 */\nconst LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\n  debug: 0,\n  info: 1,\n  warn: 2,\n  error: 3,\n};\n\n/**\n * 消息展示接口 (适配 antd message API)\n */\nexport interface MessageApi {\n  info: (content: string) => void;\n  warning: (content: string) => void;\n  error: (content: string) => void;\n  success: (content: string) => void;\n}\n\n/** Logger 配置 */\nexport interface LoggerOptions {\n  /** 日志前缀 */\n  prefix?: string;\n  /** 最低日志级别，低于此级别的日志不会输出 */\n  level?: LogLevel;\n  /**\n   * 是否为生产环境（用于决定是否抑制日志）\n   *\n   * 默认 false。消费方应根据自身构建工具传入：\n   * - UmiJS: `process.env.NODE_ENV === 'production'`\n   * - Vite: `import.meta.env.PROD`\n   */\n  isProduction?: boolean;\n  /** 生产环境下是否仍输出所有级别日志，默认 false (仅输出 warn/error) */\n  enableAllInProduction?: boolean;\n  /** 是否显示时间戳，默认 true */\n  showTimestamp?: boolean;\n  /**\n   * 消息展示 API 实例 (可选，适配 antd message 等)\n   *\n   * 传入后，info/warn/error/success 方法会同时调用 UI 提示。\n   *\n   * @example\n   * ```ts\n   * import { message } from 'antd';\n   * const logger = createLogger({ prefix: 'App', messageApi: message });\n   * logger.error('操作失败'); // 同时输出到 console 和 antd message\n   * ```\n   */\n  messageApi?: MessageApi;\n}\n\n/** Logger 实例 */\nexport interface Logger {\n  debug(message: string, ...args: unknown[]): void;\n  info(message: string, ...args: unknown[]): void;\n  warn(message: string, ...args: unknown[]): void;\n  error(message: string, ...args: unknown[]): void;\n  /** 成功日志 (info 级别) */\n  success(message: string, ...args: unknown[]): void;\n}\n\n/**\n * 创建 Logger 实例\n *\n * @param options - Logger 配置\n * @returns Logger 实例\n *\n * @example\n * ```ts\n * // 基础用法 (纯 console)\n * const logger = createLogger({ prefix: 'Auth' });\n * logger.info('User logged in', { userId: 123 });\n *\n * // 集成 antd message\n * import { message } from 'antd';\n * const logger = createLogger({ prefix: 'App', messageApi: message });\n * logger.error('操作失败'); // console.error + antd message.error\n * logger.success('保存成功'); // console.info + antd message.success\n * ```\n */\nexport function createLogger(options?: LoggerOptions): Logger {\n  const prefix = options?.prefix ?? '';\n  const minLevel = options?.level ?? 'debug';\n  const isProduction = options?.isProduction ?? false;\n  const enableAllInProduction = options?.enableAllInProduction ?? false;\n  const showTimestamp = options?.showTimestamp ?? true;\n  const messageApi = options?.messageApi;\n\n  function shouldLog(level: LogLevel): boolean {\n    if (isProduction && !enableAllInProduction) {\n      // 生产环境: 仅 warn 和 error 输出 (安全审计)\n      if (level !== 'warn' && level !== 'error') return false;\n    }\n    return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[minLevel];\n  }\n\n  function formatMessage(level: string, message: string): string {\n    const parts: string[] = [];\n    if (showTimestamp) {\n      parts.push(`[${new Date().toLocaleTimeString()}]`);\n    }\n    if (prefix) {\n      parts.push(`[${prefix}]`);\n    }\n    parts.push(`[${level.toUpperCase()}]`);\n    parts.push(message);\n    return parts.join(' ');\n  }\n\n  return {\n    debug(message: string, ...args: unknown[]) {\n      if (!shouldLog('debug')) return;\n      console.debug(formatMessage('debug', message), ...args);\n    },\n\n    info(message: string, ...args: unknown[]) {\n      if (!shouldLog('info')) return;\n      console.info(formatMessage('info', message), ...args);\n      messageApi?.info(message);\n    },\n\n    warn(message: string, ...args: unknown[]) {\n      if (!shouldLog('warn')) return;\n      console.warn(formatMessage('warn', message), ...args);\n      messageApi?.warning(message);\n    },\n\n    error(message: string, ...args: unknown[]) {\n      if (!shouldLog('error')) return;\n      console.error(formatMessage('error', message), ...args);\n      messageApi?.error(message);\n    },\n\n    success(message: string, ...args: unknown[]) {\n      if (!shouldLog('info')) return;\n      console.info(formatMessage('✓', message), ...args);\n      messageApi?.success(message);\n    },\n  };\n}\n"]}