@nicomatt69/streamtty 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +471 -0
- package/dist/ai-sdk-adapter.d.ts +113 -0
- package/dist/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/ai-sdk-adapter.js +304 -0
- package/dist/ai-sdk-adapter.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +188 -0
- package/dist/cli.js.map +1 -0
- package/dist/errors.d.ts +131 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +346 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +185 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +350 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +117 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +323 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/streaming-parser.d.ts +81 -0
- package/dist/parser/streaming-parser.d.ts.map +1 -0
- package/dist/parser/streaming-parser.js +522 -0
- package/dist/parser/streaming-parser.js.map +1 -0
- package/dist/performance.d.ts +139 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +401 -0
- package/dist/performance.js.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +22 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-system-inline.d.ts +116 -0
- package/dist/plugins/plugin-system-inline.d.ts.map +1 -0
- package/dist/plugins/plugin-system-inline.js +289 -0
- package/dist/plugins/plugin-system-inline.js.map +1 -0
- package/dist/plugins/plugin-system.d.ts +65 -0
- package/dist/plugins/plugin-system.d.ts.map +1 -0
- package/dist/plugins/plugin-system.js +202 -0
- package/dist/plugins/plugin-system.js.map +1 -0
- package/dist/plugins/rehype/harden.d.ts +15 -0
- package/dist/plugins/rehype/harden.d.ts.map +1 -0
- package/dist/plugins/rehype/harden.js +71 -0
- package/dist/plugins/rehype/harden.js.map +1 -0
- package/dist/plugins/rehype/index.d.ts +5 -0
- package/dist/plugins/rehype/index.d.ts.map +1 -0
- package/dist/plugins/rehype/index.js +21 -0
- package/dist/plugins/rehype/index.js.map +1 -0
- package/dist/plugins/remark/index.d.ts +6 -0
- package/dist/plugins/remark/index.d.ts.map +1 -0
- package/dist/plugins/remark/index.js +22 -0
- package/dist/plugins/remark/index.js.map +1 -0
- package/dist/plugins/remark/math.d.ts +7 -0
- package/dist/plugins/remark/math.d.ts.map +1 -0
- package/dist/plugins/remark/math.js +22 -0
- package/dist/plugins/remark/math.js.map +1 -0
- package/dist/plugins/remark/mermaid.d.ts +7 -0
- package/dist/plugins/remark/mermaid.d.ts.map +1 -0
- package/dist/plugins/remark/mermaid.js +19 -0
- package/dist/plugins/remark/mermaid.js.map +1 -0
- package/dist/plugins/types.d.ts +72 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +3 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/renderer/blessed-renderer.d.ts +92 -0
- package/dist/renderer/blessed-renderer.d.ts.map +1 -0
- package/dist/renderer/blessed-renderer.js +610 -0
- package/dist/renderer/blessed-renderer.js.map +1 -0
- package/dist/renderers/index.d.ts +7 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +21 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/math-renderer.d.ts +49 -0
- package/dist/renderers/math-renderer.d.ts.map +1 -0
- package/dist/renderers/math-renderer.js +193 -0
- package/dist/renderers/math-renderer.js.map +1 -0
- package/dist/renderers/mermaid-ascii.d.ts +14 -0
- package/dist/renderers/mermaid-ascii.d.ts.map +1 -0
- package/dist/renderers/mermaid-ascii.js +260 -0
- package/dist/renderers/mermaid-ascii.js.map +1 -0
- package/dist/renderers/mermaid-renderer.d.ts +79 -0
- package/dist/renderers/mermaid-renderer.d.ts.map +1 -0
- package/dist/renderers/mermaid-renderer.js +298 -0
- package/dist/renderers/mermaid-renderer.js.map +1 -0
- package/dist/renderers/shiki-ansi.d.ts +48 -0
- package/dist/renderers/shiki-ansi.d.ts.map +1 -0
- package/dist/renderers/shiki-ansi.js +206 -0
- package/dist/renderers/shiki-ansi.js.map +1 -0
- package/dist/renderers/table-ascii.d.ts +30 -0
- package/dist/renderers/table-ascii.d.ts.map +1 -0
- package/dist/renderers/table-ascii.js +243 -0
- package/dist/renderers/table-ascii.js.map +1 -0
- package/dist/renderers/table-renderer.d.ts +49 -0
- package/dist/renderers/table-renderer.d.ts.map +1 -0
- package/dist/renderers/table-renderer.js +224 -0
- package/dist/renderers/table-renderer.js.map +1 -0
- package/dist/renderers/unicode-math.d.ts +29 -0
- package/dist/renderers/unicode-math.d.ts.map +1 -0
- package/dist/renderers/unicode-math.js +181 -0
- package/dist/renderers/unicode-math.js.map +1 -0
- package/dist/security/ansi-sanitizer.d.ts +71 -0
- package/dist/security/ansi-sanitizer.d.ts.map +1 -0
- package/dist/security/ansi-sanitizer.js +275 -0
- package/dist/security/ansi-sanitizer.js.map +1 -0
- package/dist/security/chunk-processor.d.ts +81 -0
- package/dist/security/chunk-processor.d.ts.map +1 -0
- package/dist/security/chunk-processor.js +297 -0
- package/dist/security/chunk-processor.js.map +1 -0
- package/dist/security/index.d.ts +6 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +22 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-validator.d.ts +55 -0
- package/dist/security/input-validator.d.ts.map +1 -0
- package/dist/security/input-validator.js +201 -0
- package/dist/security/input-validator.js.map +1 -0
- package/dist/stream-protocol.d.ts +61 -0
- package/dist/stream-protocol.d.ts.map +1 -0
- package/dist/stream-protocol.js +214 -0
- package/dist/stream-protocol.js.map +1 -0
- package/dist/streamdown-compat.d.ts +74 -0
- package/dist/streamdown-compat.d.ts.map +1 -0
- package/dist/streamdown-compat.js +241 -0
- package/dist/streamdown-compat.js.map +1 -0
- package/dist/streaming/stream-stats.d.ts +97 -0
- package/dist/streaming/stream-stats.d.ts.map +1 -0
- package/dist/streaming/stream-stats.js +217 -0
- package/dist/streaming/stream-stats.js.map +1 -0
- package/dist/streaming-integration.d.ts +71 -0
- package/dist/streaming-integration.d.ts.map +1 -0
- package/dist/streaming-integration.js +194 -0
- package/dist/streaming-integration.js.map +1 -0
- package/dist/themes/index.d.ts +59 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +122 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/types/index.d.ts +222 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin-types.d.ts +5 -0
- package/dist/types/plugin-types.d.ts.map +1 -0
- package/dist/types/plugin-types.js +6 -0
- package/dist/types/plugin-types.js.map +1 -0
- package/dist/types/stream-events.d.ts +71 -0
- package/dist/types/stream-events.d.ts.map +1 -0
- package/dist/types/stream-events.js +10 -0
- package/dist/types/stream-events.js.map +1 -0
- package/dist/utils/blessed-syntax-highlighter.d.ts +124 -0
- package/dist/utils/blessed-syntax-highlighter.d.ts.map +1 -0
- package/dist/utils/blessed-syntax-highlighter.js +440 -0
- package/dist/utils/blessed-syntax-highlighter.js.map +1 -0
- package/dist/utils/enhanced-table-renderer.d.ts +77 -0
- package/dist/utils/enhanced-table-renderer.d.ts.map +1 -0
- package/dist/utils/enhanced-table-renderer.js +376 -0
- package/dist/utils/enhanced-table-renderer.js.map +1 -0
- package/dist/utils/formatting.d.ts +100 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +220 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/math-unicode-renderer.d.ts +38 -0
- package/dist/utils/math-unicode-renderer.d.ts.map +1 -0
- package/dist/utils/math-unicode-renderer.js +380 -0
- package/dist/utils/math-unicode-renderer.js.map +1 -0
- package/dist/utils/mermaid-ascii-renderer.d.ts +20 -0
- package/dist/utils/mermaid-ascii-renderer.d.ts.map +1 -0
- package/dist/utils/mermaid-ascii-renderer.js +325 -0
- package/dist/utils/mermaid-ascii-renderer.js.map +1 -0
- package/dist/utils/mermaid-ascii.d.ts +53 -0
- package/dist/utils/mermaid-ascii.d.ts.map +1 -0
- package/dist/utils/mermaid-ascii.js +181 -0
- package/dist/utils/mermaid-ascii.js.map +1 -0
- package/dist/utils/shiki-ansi-renderer.d.ts +29 -0
- package/dist/utils/shiki-ansi-renderer.d.ts.map +1 -0
- package/dist/utils/shiki-ansi-renderer.js +354 -0
- package/dist/utils/shiki-ansi-renderer.js.map +1 -0
- package/dist/utils/syntax-highlighter.d.ts +87 -0
- package/dist/utils/syntax-highlighter.d.ts.map +1 -0
- package/dist/utils/syntax-highlighter.js +265 -0
- package/dist/utils/syntax-highlighter.js.map +1 -0
- package/dist/utils/table-formatter-inline.d.ts +37 -0
- package/dist/utils/table-formatter-inline.d.ts.map +1 -0
- package/dist/utils/table-formatter-inline.js +337 -0
- package/dist/utils/table-formatter-inline.js.map +1 -0
- package/dist/utils/table.d.ts +35 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/utils/table.js +197 -0
- package/dist/utils/table.js.map +1 -0
- package/dist/widgets/stream-indicator.d.ts +130 -0
- package/dist/widgets/stream-indicator.d.ts.map +1 -0
- package/dist/widgets/stream-indicator.js +276 -0
- package/dist/widgets/stream-indicator.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.highlightCodeWithShiki = highlightCodeWithShiki;
|
|
4
|
+
exports.getAnsiThemeColors = getAnsiThemeColors;
|
|
5
|
+
exports.formatCodeForTerminal = formatCodeForTerminal;
|
|
6
|
+
exports.clearShikiCache = clearShikiCache;
|
|
7
|
+
exports.getShikiCacheStats = getShikiCacheStats;
|
|
8
|
+
const shiki_1 = require("shiki");
|
|
9
|
+
/**
|
|
10
|
+
* ANSI color code generator from RGB values
|
|
11
|
+
*/
|
|
12
|
+
function rgbToAnsi24bit(rgb) {
|
|
13
|
+
if (!rgb || rgb === 'transparent')
|
|
14
|
+
return '';
|
|
15
|
+
// Parse hex color
|
|
16
|
+
if (rgb.startsWith('#')) {
|
|
17
|
+
const hex = rgb.slice(1);
|
|
18
|
+
if (hex.length === 6) {
|
|
19
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
20
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
21
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
22
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Background ANSI color from RGB
|
|
29
|
+
*/
|
|
30
|
+
function rgbToAnsiBg24bit(rgb) {
|
|
31
|
+
if (!rgb || rgb === 'transparent')
|
|
32
|
+
return '';
|
|
33
|
+
if (rgb.startsWith('#')) {
|
|
34
|
+
const hex = rgb.slice(1);
|
|
35
|
+
if (hex.length === 6) {
|
|
36
|
+
const r = parseInt(hex.slice(0, 2), 16);
|
|
37
|
+
const g = parseInt(hex.slice(2, 4), 16);
|
|
38
|
+
const b = parseInt(hex.slice(4, 6), 16);
|
|
39
|
+
return `\x1b[48;2;${r};${g};${b}m`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* ANSI style codes
|
|
46
|
+
*/
|
|
47
|
+
const ANSI_STYLES = {
|
|
48
|
+
reset: '\x1b[0m',
|
|
49
|
+
bold: '\x1b[1m',
|
|
50
|
+
dim: '\x1b[2m',
|
|
51
|
+
italic: '\x1b[3m',
|
|
52
|
+
underline: '\x1b[4m',
|
|
53
|
+
inverse: '\x1b[7m',
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Shiki highlighter cache
|
|
57
|
+
*/
|
|
58
|
+
let highlighterCache = new Map();
|
|
59
|
+
/**
|
|
60
|
+
* Get or create Shiki highlighter
|
|
61
|
+
*/
|
|
62
|
+
async function getShikiHighlighter(theme) {
|
|
63
|
+
const cacheKey = `shiki-${theme}`;
|
|
64
|
+
if (highlighterCache.has(cacheKey)) {
|
|
65
|
+
return highlighterCache.get(cacheKey);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const highlighter = await (0, shiki_1.getHighlighter)({
|
|
69
|
+
themes: [theme],
|
|
70
|
+
langs: [
|
|
71
|
+
'typescript',
|
|
72
|
+
'javascript',
|
|
73
|
+
'python',
|
|
74
|
+
'bash',
|
|
75
|
+
'sql',
|
|
76
|
+
'json',
|
|
77
|
+
'yaml',
|
|
78
|
+
'markdown',
|
|
79
|
+
'html',
|
|
80
|
+
'css',
|
|
81
|
+
'rust',
|
|
82
|
+
'go',
|
|
83
|
+
'java',
|
|
84
|
+
'c',
|
|
85
|
+
'cpp',
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
highlighterCache.set(cacheKey, highlighter);
|
|
89
|
+
return highlighter;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.warn('Shiki initialization failed, using fallback highlighting');
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Convert Shiki tokens to ANSI-colored string
|
|
98
|
+
*/
|
|
99
|
+
async function tokensToAnsi(tokens, theme) {
|
|
100
|
+
let result = '';
|
|
101
|
+
for (const line of tokens) {
|
|
102
|
+
for (const token of line) {
|
|
103
|
+
const ansiColor = rgbToAnsi24bit(token.color);
|
|
104
|
+
if (ansiColor) {
|
|
105
|
+
result += `${ansiColor}${token.content}${ANSI_STYLES.reset}`;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
result += token.content;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
result += '\n';
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Highlight code using Shiki with ANSI output
|
|
117
|
+
*/
|
|
118
|
+
async function highlightCodeWithShiki(code, lang = 'text', theme = 'nord') {
|
|
119
|
+
if (!code || code.length === 0) {
|
|
120
|
+
return code;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const highlighter = await getShikiHighlighter(theme);
|
|
124
|
+
if (!highlighter) {
|
|
125
|
+
// Fallback: return code as-is with basic coloring
|
|
126
|
+
return applyBasicHighlighting(code, lang);
|
|
127
|
+
}
|
|
128
|
+
// Validate language
|
|
129
|
+
const validLang = highlighter.getLoadedLanguages().includes(lang)
|
|
130
|
+
? lang
|
|
131
|
+
: 'text';
|
|
132
|
+
const html = await highlighter.codeToHtml(code, {
|
|
133
|
+
lang: validLang,
|
|
134
|
+
theme: theme,
|
|
135
|
+
});
|
|
136
|
+
// Parse HTML and convert to ANSI
|
|
137
|
+
return htmlToAnsi(html);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
console.warn('Shiki highlighting failed, using fallback');
|
|
141
|
+
return applyBasicHighlighting(code, lang);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Convert HTML from Shiki to ANSI codes
|
|
146
|
+
* Extracts color spans and converts to ANSI
|
|
147
|
+
*/
|
|
148
|
+
function htmlToAnsi(html) {
|
|
149
|
+
// Extract content from <pre> tag
|
|
150
|
+
const preMatch = html.match(/<pre[^>]*>([\s\S]*?)<\/pre>/);
|
|
151
|
+
if (!preMatch)
|
|
152
|
+
return '';
|
|
153
|
+
let content = preMatch[1];
|
|
154
|
+
// Replace spans with color codes
|
|
155
|
+
// Pattern: <span style="color: #RRGGBB">text</span>
|
|
156
|
+
content = content.replace(/<span style="color: (#[0-9a-fA-F]{6})">([\s\S]*?)<\/span>/g, (_, color, text) => {
|
|
157
|
+
const ansiCode = rgbToAnsi24bit(color);
|
|
158
|
+
return `${ansiCode}${text}${ANSI_STYLES.reset}`;
|
|
159
|
+
});
|
|
160
|
+
// Remove remaining HTML tags
|
|
161
|
+
content = content.replace(/<[^>]+>/g, '');
|
|
162
|
+
// Decode HTML entities
|
|
163
|
+
content = content
|
|
164
|
+
.replace(/</g, '<')
|
|
165
|
+
.replace(/>/g, '>')
|
|
166
|
+
.replace(/&/g, '&')
|
|
167
|
+
.replace(/"/g, '"')
|
|
168
|
+
.replace(/'/g, "'");
|
|
169
|
+
return content;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Basic syntax highlighting fallback
|
|
173
|
+
* Simple keyword and string coloring
|
|
174
|
+
*/
|
|
175
|
+
function applyBasicHighlighting(code, lang) {
|
|
176
|
+
let highlighted = code;
|
|
177
|
+
// Keywords
|
|
178
|
+
const keywords = [
|
|
179
|
+
'function', 'const', 'let', 'var', 'if', 'else', 'return',
|
|
180
|
+
'for', 'while', 'class', 'import', 'export', 'from', 'as',
|
|
181
|
+
'async', 'await', 'try', 'catch', 'finally', 'throw',
|
|
182
|
+
'new', 'this', 'super', 'extends', 'implements',
|
|
183
|
+
'public', 'private', 'protected', 'static', 'readonly',
|
|
184
|
+
'interface', 'type', 'enum', 'namespace', 'module',
|
|
185
|
+
'true', 'false', 'null', 'undefined', 'default',
|
|
186
|
+
];
|
|
187
|
+
// Color keywords (magenta)
|
|
188
|
+
for (const keyword of keywords) {
|
|
189
|
+
const regex = new RegExp(`\\b(${keyword})\\b`, 'g');
|
|
190
|
+
highlighted = highlighted.replace(regex, `\x1b[35m$1\x1b[0m`);
|
|
191
|
+
}
|
|
192
|
+
// Color strings (green)
|
|
193
|
+
highlighted = highlighted.replace(/(["'`])(?:(?=(\\?))\2.)*?\1/g, '\x1b[32m$&\x1b[0m');
|
|
194
|
+
// Color comments (gray)
|
|
195
|
+
highlighted = highlighted.replace(/\/\/.*$/gm, '\x1b[90m$&\x1b[0m');
|
|
196
|
+
highlighted = highlighted.replace(/\/\*[\s\S]*?\*\//g, '\x1b[90m$&\x1b[0m');
|
|
197
|
+
// Color numbers (cyan)
|
|
198
|
+
highlighted = highlighted.replace(/\b(\d+\.?\d*)\b/g, '\x1b[36m$1\x1b[0m');
|
|
199
|
+
return highlighted;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get ANSI theme from Shiki theme name
|
|
203
|
+
*/
|
|
204
|
+
function getAnsiThemeColors(theme) {
|
|
205
|
+
// Common color mappings for popular themes
|
|
206
|
+
const themes = {
|
|
207
|
+
nord: {
|
|
208
|
+
foreground: '#D8DEE9',
|
|
209
|
+
background: '#2E3440',
|
|
210
|
+
keyword: '#81A1C1',
|
|
211
|
+
string: '#A3BE8C',
|
|
212
|
+
comment: '#616E88',
|
|
213
|
+
number: '#B48EAD',
|
|
214
|
+
function: '#88C0D0',
|
|
215
|
+
},
|
|
216
|
+
'github-light': {
|
|
217
|
+
foreground: '#24292E',
|
|
218
|
+
background: '#FFFFFF',
|
|
219
|
+
keyword: '#D73A49',
|
|
220
|
+
string: '#032F62',
|
|
221
|
+
comment: '#6A737D',
|
|
222
|
+
number: '#005CC5',
|
|
223
|
+
function: '#6F42C1',
|
|
224
|
+
},
|
|
225
|
+
'github-dark': {
|
|
226
|
+
foreground: '#C9D1D9',
|
|
227
|
+
background: '#0D1117',
|
|
228
|
+
keyword: '#FF7B72',
|
|
229
|
+
string: '#A5D6FF',
|
|
230
|
+
comment: '#8B949E',
|
|
231
|
+
number: '#79C0FF',
|
|
232
|
+
function: '#D2A8FF',
|
|
233
|
+
},
|
|
234
|
+
'one-dark-pro': {
|
|
235
|
+
foreground: '#ABB2BF',
|
|
236
|
+
background: '#282C34',
|
|
237
|
+
keyword: '#C678DD',
|
|
238
|
+
string: '#98C379',
|
|
239
|
+
comment: '#5C6370',
|
|
240
|
+
number: '#D19A66',
|
|
241
|
+
function: '#61AFEF',
|
|
242
|
+
},
|
|
243
|
+
dracula: {
|
|
244
|
+
foreground: '#F8F8F2',
|
|
245
|
+
background: '#282A36',
|
|
246
|
+
keyword: '#FF79C6',
|
|
247
|
+
string: '#F1FA8C',
|
|
248
|
+
comment: '#6272A4',
|
|
249
|
+
number: '#BD93F9',
|
|
250
|
+
function: '#50FA7B',
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
return themes[theme] || themes.nord;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Format code with syntax highlighting for terminal output
|
|
257
|
+
* Returns ready-to-display ANSI string
|
|
258
|
+
*/
|
|
259
|
+
async function formatCodeForTerminal(code, lang = 'text', options) {
|
|
260
|
+
const theme = options?.theme || 'nord';
|
|
261
|
+
let highlighted = await highlightCodeWithShiki(code, lang, theme);
|
|
262
|
+
// Add line numbers if requested
|
|
263
|
+
if (options?.lineNumbers) {
|
|
264
|
+
highlighted = addLineNumbers(highlighted);
|
|
265
|
+
}
|
|
266
|
+
// Word wrap if max width specified
|
|
267
|
+
if (options?.maxWidth) {
|
|
268
|
+
highlighted = wrapLines(highlighted, options.maxWidth);
|
|
269
|
+
}
|
|
270
|
+
return highlighted;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Add line numbers to code
|
|
274
|
+
*/
|
|
275
|
+
function addLineNumbers(code) {
|
|
276
|
+
const lines = code.split('\n');
|
|
277
|
+
const maxLineNum = lines.length;
|
|
278
|
+
const maxDigits = String(maxLineNum).length;
|
|
279
|
+
return lines
|
|
280
|
+
.map((line, index) => {
|
|
281
|
+
const lineNum = String(index + 1).padStart(maxDigits, ' ');
|
|
282
|
+
return `\x1b[90m${lineNum}\x1b[0m │ ${line}`;
|
|
283
|
+
})
|
|
284
|
+
.join('\n');
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Word wrap lines while preserving ANSI codes
|
|
288
|
+
*/
|
|
289
|
+
function wrapLines(code, maxWidth) {
|
|
290
|
+
return code
|
|
291
|
+
.split('\n')
|
|
292
|
+
.map(line => wrapLine(line, maxWidth))
|
|
293
|
+
.join('\n');
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Wrap single line while preserving ANSI codes
|
|
297
|
+
*/
|
|
298
|
+
function wrapLine(line, maxWidth) {
|
|
299
|
+
// Remove ANSI codes to calculate visible length
|
|
300
|
+
const visible = line.replace(/\x1b\[[0-9;]*m/g, '');
|
|
301
|
+
if (visible.length <= maxWidth) {
|
|
302
|
+
return line;
|
|
303
|
+
}
|
|
304
|
+
// Split and re-add codes per segment
|
|
305
|
+
const wrapped = [];
|
|
306
|
+
let current = '';
|
|
307
|
+
let visibleCurrent = '';
|
|
308
|
+
let inCode = false;
|
|
309
|
+
let currentCode = '';
|
|
310
|
+
for (let i = 0; i < line.length; i++) {
|
|
311
|
+
const char = line[i];
|
|
312
|
+
if (char === '\x1b' && line[i + 1] === '[') {
|
|
313
|
+
// Start of ANSI code
|
|
314
|
+
inCode = true;
|
|
315
|
+
currentCode = char;
|
|
316
|
+
}
|
|
317
|
+
else if (inCode) {
|
|
318
|
+
currentCode += char;
|
|
319
|
+
if (char === 'm') {
|
|
320
|
+
inCode = false;
|
|
321
|
+
current += currentCode;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
current += char;
|
|
326
|
+
visibleCurrent += char;
|
|
327
|
+
if (visibleCurrent.length >= maxWidth) {
|
|
328
|
+
wrapped.push(current);
|
|
329
|
+
current = '';
|
|
330
|
+
visibleCurrent = '';
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (current) {
|
|
335
|
+
wrapped.push(current);
|
|
336
|
+
}
|
|
337
|
+
return wrapped.join('\n');
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Clear Shiki cache (for testing or memory pressure)
|
|
341
|
+
*/
|
|
342
|
+
function clearShikiCache() {
|
|
343
|
+
highlighterCache.clear();
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Get cache stats
|
|
347
|
+
*/
|
|
348
|
+
function getShikiCacheStats() {
|
|
349
|
+
return {
|
|
350
|
+
size: highlighterCache.size,
|
|
351
|
+
keys: Array.from(highlighterCache.keys()),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=shiki-ansi-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shiki-ansi-renderer.js","sourceRoot":"","sources":["../../src/utils/shiki-ansi-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI-based syntax highlighting for terminal output
|
|
3
|
+
* Uses standard ANSI color codes for highlighting paths, keywords, and other elements
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* ANSI color codes for syntax highlighting
|
|
7
|
+
*/
|
|
8
|
+
export declare const syntaxColors: {
|
|
9
|
+
path: string;
|
|
10
|
+
lineNumber: string;
|
|
11
|
+
keyword: string;
|
|
12
|
+
string: string;
|
|
13
|
+
number: string;
|
|
14
|
+
comment: string;
|
|
15
|
+
title: string;
|
|
16
|
+
error: string;
|
|
17
|
+
success: string;
|
|
18
|
+
warning: string;
|
|
19
|
+
codeBlock: string;
|
|
20
|
+
package: string;
|
|
21
|
+
reset: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Highlight file paths in text
|
|
25
|
+
* Matches: /path/to/file.ts, ./relative/path.js, ~/home/path
|
|
26
|
+
* NOTE: Disabled to avoid ANSI code injection issues
|
|
27
|
+
*/
|
|
28
|
+
export declare function highlightPaths(text: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Highlight file references with line numbers
|
|
31
|
+
* Matches: file.ts:123, /path/to/file.js:45:10
|
|
32
|
+
* NOTE: Disabled to avoid ANSI code injection issues
|
|
33
|
+
*/
|
|
34
|
+
export declare function highlightFileRefs(text: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Highlight programming keywords
|
|
37
|
+
*/
|
|
38
|
+
export declare function highlightKeywords(text: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Highlight markdown-style titles
|
|
41
|
+
* Matches: # Title, ## Subtitle, etc.
|
|
42
|
+
*/
|
|
43
|
+
export declare function highlightTitles(text: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Highlight string literals in quotes
|
|
46
|
+
*/
|
|
47
|
+
export declare function highlightStrings(text: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Highlight numbers
|
|
50
|
+
*/
|
|
51
|
+
export declare function highlightNumbers(text: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Highlight code comments
|
|
54
|
+
* Matches single-line and multi-line comments, bash comments
|
|
55
|
+
*/
|
|
56
|
+
export declare function highlightComments(text: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Highlight shell/bash commands
|
|
59
|
+
*/
|
|
60
|
+
export declare function highlightShellCommands(text: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Highlight package names like @scope/package or package-name
|
|
63
|
+
*/
|
|
64
|
+
export declare function highlightPackages(text: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Highlight markdown code blocks with syntax highlighting
|
|
67
|
+
*/
|
|
68
|
+
export declare function highlightCodeBlocks(text: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Apply comprehensive syntax highlighting to text
|
|
71
|
+
* Applies all highlighting rules in the correct order
|
|
72
|
+
*/
|
|
73
|
+
export declare function applySyntaxHighlight(text: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Apply syntax highlighting only to specific elements (more conservative)
|
|
76
|
+
*/
|
|
77
|
+
export declare function applyLightSyntaxHighlight(text: string): string;
|
|
78
|
+
/**
|
|
79
|
+
* Strip all ANSI color codes from text
|
|
80
|
+
* Handles multiple ANSI escape sequence formats
|
|
81
|
+
*/
|
|
82
|
+
export declare function stripAnsiColors(text: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Colorize entire text block with a specific color
|
|
85
|
+
*/
|
|
86
|
+
export declare function colorizeBlock(text: string, color: string): string;
|
|
87
|
+
//# sourceMappingURL=syntax-highlighter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax-highlighter.d.ts","sourceRoot":"","sources":["../../src/utils/syntax-highlighter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcxB,CAAA;AAqBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBxD;AAkCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsCzD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|