UNPKG

openai-cli-unofficial

Version:

A powerful OpenAI CLI Coding Agent built with TypeScript

104 lines 5.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StringUtils = void 0; class StringUtils { /** * 掩码化 API Key,只显示前4位和后4位字符 */ static maskApiKey(apiKey) { if (apiKey.length <= 10) { return '*'.repeat(apiKey.length); } const start = apiKey.substring(0, 4); const end = apiKey.substring(apiKey.length - 4); const middle = '*'.repeat(apiKey.length - 8); return start + middle + end; } /** * 计算字符串在终端中的显示宽度 * 考虑中文字符、emoji等宽字符,正确处理ANSI颜色代码 */ static getDisplayWidth(str) { // 先移除所有ANSI转义序列(包括颜色代码) const cleanStr = str.replace(/\x1b\[[0-9;]*m/g, ''); let width = 0; for (const char of cleanStr) { const code = char.codePointAt(0) || 0; // 控制字符不占用显示宽度 if (code < 32 || (code >= 127 && code < 160)) { continue; } // 中文字符、全角字符等占用2个字符宽度 if ((code >= 0x1100 && code <= 0x115F) || // Hangul Jamo (code >= 0x2329 && code <= 0x232A) || // Left/Right-Pointing Angle Bracket (code >= 0x2E80 && code <= 0x2E99) || // CJK Radicals Supplement (code >= 0x2E9B && code <= 0x2EF3) || // CJK Radicals Supplement (code >= 0x2F00 && code <= 0x2FD5) || // Kangxi Radicals (code >= 0x2FF0 && code <= 0x2FFB) || // Ideographic Description Characters (code >= 0x3000 && code <= 0x303E) || // CJK Symbols and Punctuation (code >= 0x3041 && code <= 0x3096) || // Hiragana (code >= 0x3099 && code <= 0x30FF) || // Katakana (code >= 0x3105 && code <= 0x312D) || // Bopomofo (code >= 0x3131 && code <= 0x318E) || // Hangul Compatibility Jamo (code >= 0x3190 && code <= 0x31BA) || // Kanbun (code >= 0x31C0 && code <= 0x31E3) || // CJK Strokes (code >= 0x31F0 && code <= 0x31FF) || // Katakana Phonetic Extensions (code >= 0x3200 && code <= 0x32FF) || // Enclosed CJK Letters and Months (code >= 0x3300 && code <= 0x33FF) || // CJK Compatibility (code >= 0x3400 && code <= 0x4DBF) || // CJK Unified Ideographs Extension A (code >= 0x4E00 && code <= 0x9FFF) || // CJK Unified Ideographs (code >= 0xA000 && code <= 0xA48C) || // Yi Syllables (code >= 0xA490 && code <= 0xA4C6) || // Yi Radicals (code >= 0xAC00 && code <= 0xD7A3) || // Hangul Syllables (code >= 0xF900 && code <= 0xFAFF) || // CJK Compatibility Ideographs (code >= 0xFE10 && code <= 0xFE19) || // Vertical Forms (code >= 0xFE30 && code <= 0xFE6F) || // CJK Compatibility Forms (code >= 0xFF00 && code <= 0xFF60) || // Fullwidth Forms (code >= 0xFFE0 && code <= 0xFFE6) || // Fullwidth Forms (code >= 0x1F000 && code <= 0x1F644) || // Emoji (code >= 0x1F680 && code <= 0x1F6FF) || // Transport and Map Symbols (code >= 0x1F700 && code <= 0x1F77F) || // Alchemical Symbols (code >= 0x1F780 && code <= 0x1F7FF) || // Geometric Shapes Extended (code >= 0x1F800 && code <= 0x1F8FF) || // Supplemental Arrows-C (code >= 0x1F900 && code <= 0x1F9FF) || // Supplemental Symbols and Pictographs (code >= 0x20000 && code <= 0x2A6DF) || // CJK Unified Ideographs Extension B (code >= 0x2A700 && code <= 0x2B73F) || // CJK Unified Ideographs Extension C (code >= 0x2B740 && code <= 0x2B81F) || // CJK Unified Ideographs Extension D (code >= 0x2B820 && code <= 0x2CEAF) || // CJK Unified Ideographs Extension E (code >= 0x2F800 && code <= 0x2FA1F) // CJK Compatibility Ideographs Supplement ) { width += 2; } else { width += 1; } } return width; } /** * 处理粘贴的文本,移除换行符并清理内容 * 用于一般的输入场景 */ static processPastedText(text) { return text .replace(/\r\n/g, ' ') // Windows 换行符 .replace(/\n/g, ' ') // Unix 换行符 .replace(/\r/g, ' ') // Mac 换行符 .replace(/\t/g, ' ') // 制表符 .replace(/\s+/g, ' ') // 多个连续空格合并为一个 .trim(); } /** * 处理文件内容粘贴,保留换行符但清理其他格式 * 用于文件输入场景,如@文件引用时的内容粘贴 */ static processFileContentPaste(text) { return text .replace(/\r\n/g, '\n') // 统一换行符为Unix格式 .replace(/\r/g, '\n') // Mac换行符转换为Unix格式 .replace(/\t/g, ' ') // 制表符转换为两个空格 .trim(); } } exports.StringUtils = StringUtils; //# sourceMappingURL=string.js.map