@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,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mermaidRenderer = exports.MermaidRenderer = void 0;
|
|
4
|
+
exports.renderMermaidDiagram = renderMermaidDiagram;
|
|
5
|
+
const mermaid_ascii_1 = require("../utils/mermaid-ascii");
|
|
6
|
+
/**
|
|
7
|
+
* Mermaid diagram renderer for TTY
|
|
8
|
+
* Converts Mermaid diagrams to ASCII art using mermaid-ascii when available
|
|
9
|
+
*/
|
|
10
|
+
class MermaidRenderer {
|
|
11
|
+
config;
|
|
12
|
+
useExternalTool = true;
|
|
13
|
+
constructor(config = {}) {
|
|
14
|
+
this.config = {
|
|
15
|
+
theme: config.theme || 'default',
|
|
16
|
+
flowchart: config.flowchart || {},
|
|
17
|
+
sequence: config.sequence || {},
|
|
18
|
+
gantt: config.gantt || {},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Render mermaid diagram to ASCII (async to support external tool)
|
|
23
|
+
*/
|
|
24
|
+
async render(mermaidCode) {
|
|
25
|
+
const trimmed = mermaidCode.trim();
|
|
26
|
+
// Try external mermaid-ascii tool first if enabled
|
|
27
|
+
if (this.useExternalTool) {
|
|
28
|
+
try {
|
|
29
|
+
const result = await mermaid_ascii_1.mermaidASCII.convertToASCII(trimmed, {
|
|
30
|
+
paddingX: 2,
|
|
31
|
+
paddingY: 1,
|
|
32
|
+
borderPadding: 1,
|
|
33
|
+
ascii: true
|
|
34
|
+
});
|
|
35
|
+
// If external tool succeeded, return result
|
|
36
|
+
if (result && !result.includes('mermaid-ascii not found')) {
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
// Fall back to internal renderer
|
|
42
|
+
this.useExternalTool = false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Fallback to internal renderer
|
|
46
|
+
return this.renderInternal(trimmed);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Internal mermaid rendering (existing logic)
|
|
50
|
+
*/
|
|
51
|
+
renderInternal(mermaidCode) {
|
|
52
|
+
const trimmed = mermaidCode.trim();
|
|
53
|
+
// Detect diagram type
|
|
54
|
+
if (trimmed.startsWith('graph') || trimmed.startsWith('flowchart')) {
|
|
55
|
+
return this.renderFlowchart(trimmed);
|
|
56
|
+
}
|
|
57
|
+
else if (trimmed.startsWith('sequenceDiagram')) {
|
|
58
|
+
return this.renderSequence(trimmed);
|
|
59
|
+
}
|
|
60
|
+
else if (trimmed.startsWith('gantt')) {
|
|
61
|
+
return this.renderGantt(trimmed);
|
|
62
|
+
}
|
|
63
|
+
else if (trimmed.startsWith('classDiagram')) {
|
|
64
|
+
return this.renderClassDiagram(trimmed);
|
|
65
|
+
}
|
|
66
|
+
else if (trimmed.startsWith('stateDiagram')) {
|
|
67
|
+
return this.renderStateDiagram(trimmed);
|
|
68
|
+
}
|
|
69
|
+
else if (trimmed.startsWith('pie')) {
|
|
70
|
+
return this.renderPie(trimmed);
|
|
71
|
+
}
|
|
72
|
+
return this.renderFallback(trimmed);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render flowchart to ASCII
|
|
76
|
+
*/
|
|
77
|
+
renderFlowchart(code) {
|
|
78
|
+
const lines = code.split('\n').slice(1); // Skip graph/flowchart line
|
|
79
|
+
const nodes = new Map();
|
|
80
|
+
const edges = [];
|
|
81
|
+
// Parse nodes and edges
|
|
82
|
+
for (const line of lines) {
|
|
83
|
+
const trimmed = line.trim();
|
|
84
|
+
if (!trimmed || trimmed.startsWith('%%'))
|
|
85
|
+
continue;
|
|
86
|
+
// Match node definition: A[Label] or A(Label) or A{Label}
|
|
87
|
+
const nodeMatch = trimmed.match(/(\w+)([\[({])(.*?)([\])}])/);
|
|
88
|
+
if (nodeMatch) {
|
|
89
|
+
const [, id, open, label, close] = nodeMatch;
|
|
90
|
+
const shape = this.getNodeShape(open, close);
|
|
91
|
+
nodes.set(id, { id, label, shape });
|
|
92
|
+
}
|
|
93
|
+
// Match edge: A --> B or A -- text --> B
|
|
94
|
+
const edgeMatch = trimmed.match(/(\w+)\s*(-+>?|-+)\s*(?:\|([^|]+)\|)?\s*(\w+)/);
|
|
95
|
+
if (edgeMatch) {
|
|
96
|
+
const [, from, arrow, label, to] = edgeMatch;
|
|
97
|
+
edges.push({ from, to, label: label?.trim(), arrow });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Render ASCII
|
|
101
|
+
return this.buildFlowchartASCII(nodes, edges);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get node shape from brackets
|
|
105
|
+
*/
|
|
106
|
+
getNodeShape(open, close) {
|
|
107
|
+
if (open === '[' && close === ']')
|
|
108
|
+
return 'box';
|
|
109
|
+
if (open === '(' && close === ')')
|
|
110
|
+
return 'rounded';
|
|
111
|
+
if (open === '{' && close === '}')
|
|
112
|
+
return 'diamond';
|
|
113
|
+
return 'box';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Build flowchart ASCII representation
|
|
117
|
+
*/
|
|
118
|
+
buildFlowchartASCII(nodes, edges) {
|
|
119
|
+
const lines = [];
|
|
120
|
+
const rendered = new Set();
|
|
121
|
+
// Simple vertical layout
|
|
122
|
+
for (const [id, node] of nodes) {
|
|
123
|
+
if (rendered.has(id))
|
|
124
|
+
continue;
|
|
125
|
+
// Render node
|
|
126
|
+
lines.push(this.renderNode(node));
|
|
127
|
+
rendered.add(id);
|
|
128
|
+
// Find outgoing edges
|
|
129
|
+
const outgoing = edges.filter(e => e.from === id);
|
|
130
|
+
for (const edge of outgoing) {
|
|
131
|
+
// Render edge
|
|
132
|
+
lines.push(this.renderEdge(edge));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return lines.join('\n');
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Render a single node
|
|
139
|
+
*/
|
|
140
|
+
renderNode(node) {
|
|
141
|
+
const label = node.label || node.id;
|
|
142
|
+
const width = Math.max(label.length + 4, 12);
|
|
143
|
+
switch (node.shape) {
|
|
144
|
+
case 'box':
|
|
145
|
+
return [
|
|
146
|
+
'┌' + '─'.repeat(width) + '┐',
|
|
147
|
+
'│ ' + label.padEnd(width - 2) + ' │',
|
|
148
|
+
'└' + '─'.repeat(width) + '┘',
|
|
149
|
+
].join('\n');
|
|
150
|
+
case 'rounded':
|
|
151
|
+
return [
|
|
152
|
+
'╭' + '─'.repeat(width) + '╮',
|
|
153
|
+
'│ ' + label.padEnd(width - 2) + ' │',
|
|
154
|
+
'╰' + '─'.repeat(width) + '╯',
|
|
155
|
+
].join('\n');
|
|
156
|
+
case 'diamond':
|
|
157
|
+
const padding = Math.floor((width - label.length) / 2);
|
|
158
|
+
return [
|
|
159
|
+
' '.repeat(padding) + '╱' + '─'.repeat(label.length) + '╲',
|
|
160
|
+
'│ ' + label + ' │',
|
|
161
|
+
' '.repeat(padding) + '╲' + '─'.repeat(label.length) + '╱',
|
|
162
|
+
].join('\n');
|
|
163
|
+
default:
|
|
164
|
+
return label;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Render an edge
|
|
169
|
+
*/
|
|
170
|
+
renderEdge(edge) {
|
|
171
|
+
const connector = edge.arrow.includes('>') ? '▼' : '│';
|
|
172
|
+
const label = edge.label ? ` ${edge.label} ` : '';
|
|
173
|
+
return [
|
|
174
|
+
' │',
|
|
175
|
+
` ${connector}${label}`,
|
|
176
|
+
].join('\n');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Render sequence diagram
|
|
180
|
+
*/
|
|
181
|
+
renderSequence(code) {
|
|
182
|
+
const lines = code.split('\n').slice(1);
|
|
183
|
+
const participants = [];
|
|
184
|
+
const messages = [];
|
|
185
|
+
// Parse participants and messages
|
|
186
|
+
for (const line of lines) {
|
|
187
|
+
const trimmed = line.trim();
|
|
188
|
+
if (!trimmed || trimmed.startsWith('%%'))
|
|
189
|
+
continue;
|
|
190
|
+
// Participant
|
|
191
|
+
const partMatch = trimmed.match(/participant\s+(\w+)(?:\s+as\s+(.+))?/);
|
|
192
|
+
if (partMatch) {
|
|
193
|
+
participants.push(partMatch[2] || partMatch[1]);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Message
|
|
197
|
+
const msgMatch = trimmed.match(/(\w+)\s*(-+>>?|-+x)\s*(\w+)\s*:\s*(.+)/);
|
|
198
|
+
if (msgMatch) {
|
|
199
|
+
const [, from, arrow, to, text] = msgMatch;
|
|
200
|
+
messages.push({ from, to, text, arrow });
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Render ASCII timeline
|
|
204
|
+
return this.buildSequenceASCII(participants, messages);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Build sequence diagram ASCII
|
|
208
|
+
*/
|
|
209
|
+
buildSequenceASCII(participants, messages) {
|
|
210
|
+
const lines = [];
|
|
211
|
+
const width = 20;
|
|
212
|
+
// Header with participants
|
|
213
|
+
const header = participants.map(p => p.padEnd(width)).join(' ');
|
|
214
|
+
lines.push(header);
|
|
215
|
+
lines.push(participants.map(() => '│'.padEnd(width)).join(' '));
|
|
216
|
+
// Messages
|
|
217
|
+
for (const msg of messages) {
|
|
218
|
+
const arrow = msg.arrow.includes('x') ? '──X' : '──▶';
|
|
219
|
+
lines.push(` ${arrow} ${msg.text}`);
|
|
220
|
+
lines.push(participants.map(() => '│'.padEnd(width)).join(' '));
|
|
221
|
+
}
|
|
222
|
+
return lines.join('\n');
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Render Gantt chart (simplified)
|
|
226
|
+
*/
|
|
227
|
+
renderGantt(code) {
|
|
228
|
+
const lines = ['[Gantt Chart]'];
|
|
229
|
+
const tasks = code.split('\n').filter(line => {
|
|
230
|
+
const trimmed = line.trim();
|
|
231
|
+
return trimmed && !trimmed.startsWith('%%') && !trimmed.startsWith('gantt');
|
|
232
|
+
});
|
|
233
|
+
for (const task of tasks) {
|
|
234
|
+
const taskMatch = task.match(/(.+?)\s*:\s*(.+)/);
|
|
235
|
+
if (taskMatch) {
|
|
236
|
+
const [, name, duration] = taskMatch;
|
|
237
|
+
const barLength = Math.min(Math.max(10, Math.floor(Math.random() * 30)), 40);
|
|
238
|
+
const bar = '█'.repeat(barLength);
|
|
239
|
+
lines.push(`${name.trim().padEnd(20)} ${bar}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return lines.join('\n');
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Render class diagram (simplified)
|
|
246
|
+
*/
|
|
247
|
+
renderClassDiagram(code) {
|
|
248
|
+
return '[Class Diagram]\n' + this.renderFallback(code);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Render state diagram (simplified)
|
|
252
|
+
*/
|
|
253
|
+
renderStateDiagram(code) {
|
|
254
|
+
return '[State Diagram]\n' + this.renderFallback(code);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Render pie chart (simplified)
|
|
258
|
+
*/
|
|
259
|
+
renderPie(code) {
|
|
260
|
+
return '[Pie Chart]\n' + this.renderFallback(code);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Fallback renderer for unsupported diagrams
|
|
264
|
+
*/
|
|
265
|
+
renderFallback(code) {
|
|
266
|
+
const lines = code.split('\n');
|
|
267
|
+
const boxWidth = Math.max(...lines.map(l => l.length)) + 4;
|
|
268
|
+
return [
|
|
269
|
+
'┌' + '─'.repeat(boxWidth) + '┐',
|
|
270
|
+
'│ [Mermaid Diagram]' + ' '.repeat(boxWidth - 20) + ' │',
|
|
271
|
+
'│' + ' '.repeat(boxWidth) + '│',
|
|
272
|
+
...lines.slice(0, 10).map(line => '│ ' + line.padEnd(boxWidth - 2) + '│'),
|
|
273
|
+
'└' + '─'.repeat(boxWidth) + '┘',
|
|
274
|
+
].join('\n');
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Update configuration
|
|
278
|
+
*/
|
|
279
|
+
updateConfig(config) {
|
|
280
|
+
this.config = { ...this.config, ...config };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
exports.MermaidRenderer = MermaidRenderer;
|
|
284
|
+
/**
|
|
285
|
+
* Singleton instance
|
|
286
|
+
*/
|
|
287
|
+
exports.mermaidRenderer = new MermaidRenderer();
|
|
288
|
+
/**
|
|
289
|
+
* Convenience function for rendering mermaid diagrams
|
|
290
|
+
*/
|
|
291
|
+
async function renderMermaidDiagram(mermaidCode, config) {
|
|
292
|
+
if (config) {
|
|
293
|
+
const renderer = new MermaidRenderer(config);
|
|
294
|
+
return renderer.render(mermaidCode);
|
|
295
|
+
}
|
|
296
|
+
return exports.mermaidRenderer.render(mermaidCode);
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=mermaid-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-renderer.js","sourceRoot":"","sources":["../../src/renderers/mermaid-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type BundledLanguage } from 'shiki';
|
|
2
|
+
/**
|
|
3
|
+
* Shiki to ANSI color converter
|
|
4
|
+
* Converts Shiki syntax highlighting to ANSI terminal codes
|
|
5
|
+
*/
|
|
6
|
+
export declare class ShikiANSIRenderer {
|
|
7
|
+
private highlighter;
|
|
8
|
+
private initialized;
|
|
9
|
+
private theme;
|
|
10
|
+
private static readonly ANSI_COLORS;
|
|
11
|
+
/**
|
|
12
|
+
* Initialize Shiki highlighter
|
|
13
|
+
*/
|
|
14
|
+
initialize(languages?: BundledLanguage[], theme?: 'light' | 'dark'): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Highlight code with Shiki and convert to ANSI
|
|
17
|
+
*/
|
|
18
|
+
highlight(code: string, language: string): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Convert hex color to closest ANSI color code
|
|
21
|
+
*/
|
|
22
|
+
private colorToANSI;
|
|
23
|
+
/**
|
|
24
|
+
* Check if highlighter supports a language
|
|
25
|
+
*/
|
|
26
|
+
supportsLanguage(language: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Switch theme
|
|
29
|
+
*/
|
|
30
|
+
setTheme(theme: 'light' | 'dark'): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Load additional language
|
|
33
|
+
*/
|
|
34
|
+
loadLanguage(language: BundledLanguage): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get loaded languages
|
|
37
|
+
*/
|
|
38
|
+
getLoadedLanguages(): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Check if initialized
|
|
41
|
+
*/
|
|
42
|
+
isInitialized(): boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Singleton instance
|
|
46
|
+
*/
|
|
47
|
+
export declare const shikiRenderer: ShikiANSIRenderer;
|
|
48
|
+
//# sourceMappingURL=shiki-ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shiki-ansi.d.ts","sourceRoot":"","sources":["../../src/renderers/shiki-ansi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,eAAe,EAAqB,MAAM,OAAO,CAAC;AAErG;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,KAAK,CAA4B;IAGzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CA2BjC;IAEF;;OAEG;IACG,UAAU,CACZ,SAAS,GAAE,eAAe,EAAuE,EACjG,KAAK,GAAE,OAAO,GAAG,MAAe,GACjC,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkChE;;OAEG;IACH,OAAO,CAAC,WAAW;IA4DnB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,aAAa,IAAI,OAAO;CAG3B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shikiRenderer = exports.ShikiANSIRenderer = void 0;
|
|
4
|
+
const shiki_1 = require("shiki");
|
|
5
|
+
/**
|
|
6
|
+
* Shiki to ANSI color converter
|
|
7
|
+
* Converts Shiki syntax highlighting to ANSI terminal codes
|
|
8
|
+
*/
|
|
9
|
+
class ShikiANSIRenderer {
|
|
10
|
+
highlighter = null;
|
|
11
|
+
initialized = false;
|
|
12
|
+
theme = 'dark';
|
|
13
|
+
// Map Shiki colors to ANSI codes
|
|
14
|
+
static ANSI_COLORS = {
|
|
15
|
+
// Foreground colors
|
|
16
|
+
black: '\x1b[30m',
|
|
17
|
+
red: '\x1b[31m',
|
|
18
|
+
green: '\x1b[32m',
|
|
19
|
+
yellow: '\x1b[33m',
|
|
20
|
+
blue: '\x1b[34m',
|
|
21
|
+
magenta: '\x1b[35m',
|
|
22
|
+
cyan: '\x1b[36m',
|
|
23
|
+
white: '\x1b[37m',
|
|
24
|
+
gray: '\x1b[90m',
|
|
25
|
+
// Bright colors
|
|
26
|
+
brightRed: '\x1b[91m',
|
|
27
|
+
brightGreen: '\x1b[92m',
|
|
28
|
+
brightYellow: '\x1b[93m',
|
|
29
|
+
brightBlue: '\x1b[94m',
|
|
30
|
+
brightMagenta: '\x1b[95m',
|
|
31
|
+
brightCyan: '\x1b[96m',
|
|
32
|
+
brightWhite: '\x1b[97m',
|
|
33
|
+
// Styles
|
|
34
|
+
reset: '\x1b[0m',
|
|
35
|
+
bold: '\x1b[1m',
|
|
36
|
+
dim: '\x1b[2m',
|
|
37
|
+
italic: '\x1b[3m',
|
|
38
|
+
underline: '\x1b[4m',
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Initialize Shiki highlighter
|
|
42
|
+
*/
|
|
43
|
+
async initialize(languages = ['typescript', 'javascript', 'python', 'bash', 'json', 'markdown'], theme = 'dark') {
|
|
44
|
+
if (this.initialized)
|
|
45
|
+
return;
|
|
46
|
+
try {
|
|
47
|
+
const themeMap = {
|
|
48
|
+
light: 'github-light',
|
|
49
|
+
dark: 'github-dark',
|
|
50
|
+
};
|
|
51
|
+
this.theme = theme;
|
|
52
|
+
this.highlighter = await (0, shiki_1.createHighlighter)({
|
|
53
|
+
themes: [themeMap[theme]],
|
|
54
|
+
langs: languages,
|
|
55
|
+
});
|
|
56
|
+
this.initialized = true;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.warn('Failed to initialize Shiki highlighter:', error);
|
|
60
|
+
this.initialized = false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Highlight code with Shiki and convert to ANSI
|
|
65
|
+
*/
|
|
66
|
+
async highlight(code, language) {
|
|
67
|
+
if (!this.initialized || !this.highlighter) {
|
|
68
|
+
return code; // Fallback to unhighlighted
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const themeMap = {
|
|
72
|
+
light: 'github-light',
|
|
73
|
+
dark: 'github-dark',
|
|
74
|
+
};
|
|
75
|
+
// Get themed tokens from Shiki
|
|
76
|
+
const tokens = this.highlighter.codeToTokensBase(code, {
|
|
77
|
+
lang: language,
|
|
78
|
+
theme: themeMap[this.theme],
|
|
79
|
+
});
|
|
80
|
+
// Convert tokens to ANSI codes
|
|
81
|
+
let result = '';
|
|
82
|
+
for (const line of tokens) {
|
|
83
|
+
for (const token of line) {
|
|
84
|
+
const ansiCode = this.colorToANSI(token.color || '#ffffff');
|
|
85
|
+
result += ansiCode + token.content + ShikiANSIRenderer.ANSI_COLORS.reset;
|
|
86
|
+
}
|
|
87
|
+
result += '\n';
|
|
88
|
+
}
|
|
89
|
+
return result.trimEnd();
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.warn(`Failed to highlight code for language '${language}':`, error);
|
|
93
|
+
return code; // Fallback
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Convert hex color to closest ANSI color code
|
|
98
|
+
*/
|
|
99
|
+
colorToANSI(hexColor) {
|
|
100
|
+
// Parse hex color
|
|
101
|
+
const hex = hexColor.replace('#', '');
|
|
102
|
+
const r = parseInt(hex.substring(0, 2), 16);
|
|
103
|
+
const g = parseInt(hex.substring(2, 4), 16);
|
|
104
|
+
const b = parseInt(hex.substring(4, 6), 16);
|
|
105
|
+
// Calculate luminance
|
|
106
|
+
const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
107
|
+
// Map to closest ANSI color based on hue and luminance
|
|
108
|
+
if (luminance < 50) {
|
|
109
|
+
return ShikiANSIRenderer.ANSI_COLORS.gray;
|
|
110
|
+
}
|
|
111
|
+
else if (luminance > 200) {
|
|
112
|
+
return ShikiANSIRenderer.ANSI_COLORS.brightWhite;
|
|
113
|
+
}
|
|
114
|
+
// Determine dominant color
|
|
115
|
+
const max = Math.max(r, g, b);
|
|
116
|
+
const min = Math.min(r, g, b);
|
|
117
|
+
const delta = max - min;
|
|
118
|
+
if (delta < 30) {
|
|
119
|
+
// Grayish
|
|
120
|
+
return luminance > 128
|
|
121
|
+
? ShikiANSIRenderer.ANSI_COLORS.white
|
|
122
|
+
: ShikiANSIRenderer.ANSI_COLORS.gray;
|
|
123
|
+
}
|
|
124
|
+
// Color-specific mapping
|
|
125
|
+
if (r > g && r > b) {
|
|
126
|
+
// Red-ish
|
|
127
|
+
return luminance > 128
|
|
128
|
+
? ShikiANSIRenderer.ANSI_COLORS.brightRed
|
|
129
|
+
: ShikiANSIRenderer.ANSI_COLORS.red;
|
|
130
|
+
}
|
|
131
|
+
else if (g > r && g > b) {
|
|
132
|
+
// Green-ish
|
|
133
|
+
return luminance > 128
|
|
134
|
+
? ShikiANSIRenderer.ANSI_COLORS.brightGreen
|
|
135
|
+
: ShikiANSIRenderer.ANSI_COLORS.green;
|
|
136
|
+
}
|
|
137
|
+
else if (b > r && b > g) {
|
|
138
|
+
// Blue-ish
|
|
139
|
+
return luminance > 128
|
|
140
|
+
? ShikiANSIRenderer.ANSI_COLORS.brightBlue
|
|
141
|
+
: ShikiANSIRenderer.ANSI_COLORS.blue;
|
|
142
|
+
}
|
|
143
|
+
else if (r > 150 && g > 150 && b < 100) {
|
|
144
|
+
// Yellow-ish
|
|
145
|
+
return ShikiANSIRenderer.ANSI_COLORS.yellow;
|
|
146
|
+
}
|
|
147
|
+
else if (r > 150 && b > 150) {
|
|
148
|
+
// Magenta-ish
|
|
149
|
+
return ShikiANSIRenderer.ANSI_COLORS.magenta;
|
|
150
|
+
}
|
|
151
|
+
else if (g > 150 && b > 150) {
|
|
152
|
+
// Cyan-ish
|
|
153
|
+
return ShikiANSIRenderer.ANSI_COLORS.cyan;
|
|
154
|
+
}
|
|
155
|
+
// Default
|
|
156
|
+
return ShikiANSIRenderer.ANSI_COLORS.white;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if highlighter supports a language
|
|
160
|
+
*/
|
|
161
|
+
supportsLanguage(language) {
|
|
162
|
+
if (!this.highlighter)
|
|
163
|
+
return false;
|
|
164
|
+
return this.highlighter.getLoadedLanguages().includes(language);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Switch theme
|
|
168
|
+
*/
|
|
169
|
+
async setTheme(theme) {
|
|
170
|
+
this.theme = theme;
|
|
171
|
+
// Re-initialize with new theme
|
|
172
|
+
this.initialized = false;
|
|
173
|
+
await this.initialize(this.highlighter?.getLoadedLanguages() || [], theme);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Load additional language
|
|
177
|
+
*/
|
|
178
|
+
async loadLanguage(language) {
|
|
179
|
+
if (!this.highlighter)
|
|
180
|
+
return;
|
|
181
|
+
try {
|
|
182
|
+
await this.highlighter.loadLanguage(language);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.warn(`Failed to load language '${language}':`, error);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get loaded languages
|
|
190
|
+
*/
|
|
191
|
+
getLoadedLanguages() {
|
|
192
|
+
return this.highlighter?.getLoadedLanguages() || [];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if initialized
|
|
196
|
+
*/
|
|
197
|
+
isInitialized() {
|
|
198
|
+
return this.initialized;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.ShikiANSIRenderer = ShikiANSIRenderer;
|
|
202
|
+
/**
|
|
203
|
+
* Singleton instance
|
|
204
|
+
*/
|
|
205
|
+
exports.shikiRenderer = new ShikiANSIRenderer();
|
|
206
|
+
//# sourceMappingURL=shiki-ansi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shiki-ansi.js","sourceRoot":"","sources":["../../src/renderers/shiki-ansi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table rendering to ASCII art
|
|
3
|
+
* Handles markdown table parsing and ASCII box generation
|
|
4
|
+
* Inline rendering, no dependencies
|
|
5
|
+
*/
|
|
6
|
+
export interface TableRenderOptions {
|
|
7
|
+
maxWidth?: number;
|
|
8
|
+
colWidths?: number[];
|
|
9
|
+
align?: Array<'left' | 'center' | 'right'>;
|
|
10
|
+
borderStyle?: 'simple' | 'rounded' | 'double';
|
|
11
|
+
stripMarkdown?: boolean;
|
|
12
|
+
colors?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Render table to ASCII art
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderTableToASCII(headers: string[], rows: string[][], options?: TableRenderOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Parse and render markdown table in one go
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderMarkdownTableToASCII(content: string, options?: TableRenderOptions): string;
|
|
22
|
+
/**
|
|
23
|
+
* Check if content looks like a markdown table
|
|
24
|
+
*/
|
|
25
|
+
export declare function isMarkdownTable(content: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Extract table from markdown content
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractTable(content: string): string | null;
|
|
30
|
+
//# sourceMappingURL=table-ascii.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-ascii.d.ts","sourceRoot":"","sources":["../../src/renderers/table-ascii.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA6JD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAyDR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAexD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B3D"}
|