Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | import { Prettify } from '@https-enable/types';
// ================= 类型定义层 =================
interface StyleEntry { open: string, close: string }
// 基础颜色类型(支持是否包含亮色)
type ColorDefinition<HasBright extends boolean = true> = {
normal: { fg: number, bg: number }
} & (HasBright extends true ? { bright: { fg: number, bg: number } } : unknown)
// 颜色配置模板
interface ColorScheme {
black: ColorDefinition<false> // 示例:黑色没有亮色
red: Prettify<ColorDefinition>
green: Prettify<ColorDefinition>
yellow: Prettify<ColorDefinition>
blue: Prettify<ColorDefinition>
magenta: Prettify<ColorDefinition>
cyan: Prettify<ColorDefinition>
white: Prettify<ColorDefinition>
gray: ColorDefinition<false>
grey: ColorDefinition<false>
}
// ================= 生成工具类型 =================
type ColorName = Prettify<keyof ColorScheme>
// 判断颜色是否包含亮色版本
type HasBright<T extends ColorName> = 'bright' extends keyof ColorScheme[T] ? true : false
// 生成颜色键名(自动处理亮色)
type ColorKeys<T extends ColorName> =
T | (HasBright<T> extends true ? `bright${Capitalize<T>}` : never)
// 生成背景色键名(自动处理亮色)
type BackgroundKeys<T extends ColorName> =
`bg${Capitalize<T>}` | (HasBright<T> extends true ? `bgBright${Capitalize<T>}` : never)
// 联合所有可能的键名
type AllColorKeys = Prettify<{
[K in ColorName]: ColorKeys<K> | BackgroundKeys<K>;
}[ColorName]>
interface StyleType {
reset: StyleEntry
// 基础样式
bold: StyleEntry
dim: StyleEntry
italic: StyleEntry
underline: StyleEntry
blink: StyleEntry
inverse: StyleEntry
hidden: StyleEntry
strikethrough: StyleEntry
doubleunderline: StyleEntry
framed: StyleEntry
overlined: StyleEntry
}
type ColorType = {
// 动态颜色类型
[K in AllColorKeys]: StyleEntry;
}
type FormatKeys = Prettify<keyof StyleType | AllColorKeys>
declare function ansiRegex({ onlyFirst }?: {
onlyFirst?: boolean | undefined;
}): RegExp;
declare function stripAnsi(string: string): string;
declare const ansiRegStr: string;
declare const styles: Prettify<StyleType & ColorType>;
/**
* 给文本添加 ANSI 转义序列样式(递归版本)
* @param format - 单个样式或样式数组
* @param text - 需要格式化的文本
* @returns 带有 ANSI 转义序列的格式化文本
*/
declare function styleText(format: FormatKeys | FormatKeys[], text: string): string;
export { type AllColorKeys, type ColorName, type ColorScheme, type ColorType, type FormatKeys, type StyleEntry, type StyleType, ansiRegStr, ansiRegex, stripAnsi, styleText, styles };
|