import type yoctocolors from 'yoctocolors'; import type { InfoFunc } from '../../types'; type ColorName = keyof typeof yoctocolors; export interface ThemeColor { /** 类型标签颜色 */ type: ColorName; /** 子标题颜色 */ label: ColorName; /** 日期颜色 */ date: ColorName; /** 消息颜色 */ message: ColorName; } export interface CustomColorizerOptions { /** 要着色的文本 */ text: string; /** 颜色名称 */ colorName: string; /** yoctocolors实例 */ colors: any; /** 是否启用颜色 */ enableColors: boolean; /** 当前处理的文本部分类型 */ part: 'type' | 'label' | 'date' | 'message' | 'othermessages'; } /** * Node.js控制台适配器配置选项接口 * @template T 数据类型 */ export interface NodeConsoleAdapterOptions { /** * 是否启用颜色输出,默认为true * 当yoctocolors不可用时会自动禁用 */ enableColors?: boolean; /** * 输出级别,默认为'log' * - log: 使用console.log输出 * - info: 使用console.info输出 * - warn: 使用console.warn输出 * - error: 使用console.error输出 */ outputLevel?: 'log' | 'info' | 'warn' | 'error'; /** * 获取子标题的函数,用于自定义日志的子标题显示 * @param info 输出信息对象 * @returns 子标题字符串 */ getLabel?: InfoFunc; /** * 获取消息内容的函数,用于自定义消息的处理和格式化 * @param info 输出信息对象 * @returns 处理后的消息数组,返回null则使用原始消息 */ getMessages?: InfoFunc; /** * 自定义颜色配置对象 * @param info 包含日志类型的信息 * @returns 自定义颜色配置 */ customColors?: (info: { type: string; }) => Partial; /** * 自定义着色器函数,用于为文本应用颜色 * @param options 着色器选项对象 * @returns 着色后的文本 * @default 使用内置的applyColor函数 */ customColorizer?: (options: CustomColorizerOptions) => string; /** * 允许的日志类型配置,支持三种模式: * - string[]: 扩展模式,在默认类型基础上添加指定类型 * - Set: 替换模式,完全替换默认类型 * - function: 函数模式,通过函数判断是否允许某个类型 */ allowTypes?: string[] | Set | ((type: string) => boolean); /** * 环境验证函数,用于判断当前环境是否支持Node控制台输出 * @returns true表示支持,false表示不支持 * @default () => typeof process !== 'undefined' && typeof console !== 'undefined' */ isEnvironmentValid?: () => boolean; /** * 日期格式化函数 * @param date 日期对象 * @returns 格式化后的日期字符串 * @default (date) => date.toISOString() */ formatDate?: (date: Date) => string; /** * 输出格式字符串,支持占位符: * - %type: 日志类型 * - %label: 子标题 * - %date: 日期时间 * - %message: 主要消息内容 * - %othermessages: 其他消息内容 * * @default '[%type][%label][%date] %message %othermessages' * @example '[%type]-%date %message' // 输出: [info]-2025-12-24T08:42:18.000Z 用户登录成功 */ format?: string; /** * 自定义文本清理函数,用于处理格式化后的最终文本 * @param text 格式化后的原始文本 * @returns 清理后的文本 * @default 默认清理逻辑:移除空的方括号、合并多个空格、移除首尾空格 * @example * ```typescript * // 自定义清理逻辑 * textCleaner: (text) => { * return text * .replace(/\[\s*\]/g, '') // 移除空的方括号 * .replace(/\s+/g, ' ') // 合并多个空格 * .replace(/\(\s*\)/g, '') // 移除空的圆括号 * .trim(); // 移除首尾空格 * } * ``` */ textCleaner?: (text: string) => string; } /** * Node.js控制台适配器上下文接口,内部使用 */ export interface NodeConsoleAdapterCtx { /** 规范化后的配置选项 */ options: Required; /** yoctocolors实例,可能为null */ colors: any; } export {};