@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,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mermaid to ASCII Art Renderer
|
|
4
|
+
* Converts Mermaid diagram syntax to beautiful ASCII art
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.renderMermaidToASCII = renderMermaidToASCII;
|
|
8
|
+
exports.isMermaidCode = isMermaidCode;
|
|
9
|
+
exports.formatMermaidCode = formatMermaidCode;
|
|
10
|
+
/**
|
|
11
|
+
* Parse Mermaid flowchart syntax
|
|
12
|
+
*/
|
|
13
|
+
function parseFlowchart(code) {
|
|
14
|
+
const lines = code.split('\n');
|
|
15
|
+
const nodes = [];
|
|
16
|
+
const connections = [];
|
|
17
|
+
for (const line of lines) {
|
|
18
|
+
const trimmed = line.trim();
|
|
19
|
+
if (!trimmed || trimmed.startsWith('%%'))
|
|
20
|
+
continue;
|
|
21
|
+
// Skip graph definition line
|
|
22
|
+
if (/^(graph|flowchart)/.test(trimmed))
|
|
23
|
+
continue;
|
|
24
|
+
// Parse node definitions: ID[Label]
|
|
25
|
+
const nodeMatch = trimmed.match(/(\w+)\[([^\]]+)\]/);
|
|
26
|
+
if (nodeMatch) {
|
|
27
|
+
const [, id, label] = nodeMatch;
|
|
28
|
+
nodes.push({
|
|
29
|
+
id,
|
|
30
|
+
label: label.trim(),
|
|
31
|
+
shape: 'box',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// Parse node with shapes: ID{Label} (diamond)
|
|
35
|
+
const diamondMatch = trimmed.match(/(\w+)\{([^\}]+)\}/);
|
|
36
|
+
if (diamondMatch) {
|
|
37
|
+
const [, id, label] = diamondMatch;
|
|
38
|
+
nodes.push({
|
|
39
|
+
id,
|
|
40
|
+
label: label.trim(),
|
|
41
|
+
shape: 'diamond',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// Parse connections: A --> B
|
|
45
|
+
const connMatch = trimmed.match(/(\w+)\s*--[>|-]*\s*(\w+)/);
|
|
46
|
+
if (connMatch) {
|
|
47
|
+
const [, from, to] = connMatch;
|
|
48
|
+
// Extract label if present: A -->|label| B
|
|
49
|
+
const labelMatch = trimmed.match(/--\|([^|]+)\|/);
|
|
50
|
+
connections.push({
|
|
51
|
+
from,
|
|
52
|
+
to,
|
|
53
|
+
label: labelMatch ? labelMatch[1].trim() : undefined,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { nodes, connections };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Draw a single node in ASCII
|
|
61
|
+
*/
|
|
62
|
+
function drawNode(node, width = 15) {
|
|
63
|
+
const padding = 2;
|
|
64
|
+
const maxLabelWidth = width - padding * 2;
|
|
65
|
+
// Wrap label if too long
|
|
66
|
+
const lines = [];
|
|
67
|
+
let currentLine = '';
|
|
68
|
+
for (const word of node.label.split(' ')) {
|
|
69
|
+
if ((currentLine + ' ' + word).length <= maxLabelWidth) {
|
|
70
|
+
currentLine += (currentLine ? ' ' : '') + word;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (currentLine)
|
|
74
|
+
lines.push(currentLine);
|
|
75
|
+
currentLine = word;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (currentLine)
|
|
79
|
+
lines.push(currentLine);
|
|
80
|
+
const boxLines = [];
|
|
81
|
+
const boxWidth = Math.max(width, Math.max(...lines.map(l => l.length)) + padding * 2);
|
|
82
|
+
if (node.shape === 'diamond') {
|
|
83
|
+
// Diamond shape
|
|
84
|
+
boxLines.push(' ' + '◇'.repeat(boxWidth / 2));
|
|
85
|
+
for (const line of lines) {
|
|
86
|
+
boxLines.push(line.padStart(line.length + padding).padEnd(boxWidth));
|
|
87
|
+
}
|
|
88
|
+
boxLines.push(' ' + '◇'.repeat(boxWidth / 2));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Box shape (default)
|
|
92
|
+
boxLines.push('┌' + '─'.repeat(boxWidth - 2) + '┐');
|
|
93
|
+
for (const line of lines) {
|
|
94
|
+
boxLines.push('│ ' + line.padEnd(boxWidth - 4) + ' │');
|
|
95
|
+
}
|
|
96
|
+
boxLines.push('└' + '─'.repeat(boxWidth - 2) + '┘');
|
|
97
|
+
}
|
|
98
|
+
return boxLines;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Simple flowchart layout
|
|
102
|
+
*/
|
|
103
|
+
function layoutFlowchart(nodes, connections) {
|
|
104
|
+
const layout = new Map();
|
|
105
|
+
if (nodes.length === 0)
|
|
106
|
+
return layout;
|
|
107
|
+
// Calculate node positions
|
|
108
|
+
const nodeWidth = 15;
|
|
109
|
+
const nodeHeight = 5;
|
|
110
|
+
const spacing = 5;
|
|
111
|
+
let currentY = 2;
|
|
112
|
+
// Simple linear layout (could be improved with graph layout algorithms)
|
|
113
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
114
|
+
const node = nodes[i];
|
|
115
|
+
const lines = drawNode(node, nodeWidth);
|
|
116
|
+
layout.set(node.id, {
|
|
117
|
+
x: 5,
|
|
118
|
+
y: currentY,
|
|
119
|
+
lines,
|
|
120
|
+
});
|
|
121
|
+
currentY += lines.length + spacing + 2;
|
|
122
|
+
}
|
|
123
|
+
return layout;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Render flowchart to ASCII
|
|
127
|
+
*/
|
|
128
|
+
function renderFlowchartASCII(code) {
|
|
129
|
+
const { nodes, connections } = parseFlowchart(code);
|
|
130
|
+
if (nodes.length === 0) {
|
|
131
|
+
return '[Mermaid Diagram - No nodes found]';
|
|
132
|
+
}
|
|
133
|
+
const layout = layoutFlowchart(nodes, connections);
|
|
134
|
+
// Calculate canvas size
|
|
135
|
+
let maxX = 0;
|
|
136
|
+
let maxY = 0;
|
|
137
|
+
for (const [, pos] of layout) {
|
|
138
|
+
maxX = Math.max(maxX, pos.x + 20);
|
|
139
|
+
maxY = Math.max(maxY, pos.y + pos.lines.length + 2);
|
|
140
|
+
}
|
|
141
|
+
// Initialize canvas
|
|
142
|
+
const canvas = Array(maxY)
|
|
143
|
+
.fill(null)
|
|
144
|
+
.map(() => Array(maxX).fill(' '));
|
|
145
|
+
// Draw nodes
|
|
146
|
+
for (const [nodeId, pos] of layout) {
|
|
147
|
+
for (let i = 0; i < pos.lines.length; i++) {
|
|
148
|
+
const line = pos.lines[i];
|
|
149
|
+
for (let j = 0; j < line.length && j < maxX - pos.x; j++) {
|
|
150
|
+
canvas[pos.y + i][pos.x + j] = line[j];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Draw connections
|
|
155
|
+
for (const conn of connections) {
|
|
156
|
+
const from = layout.get(conn.from);
|
|
157
|
+
const to = layout.get(conn.to);
|
|
158
|
+
if (from && to) {
|
|
159
|
+
drawConnection(canvas, from, to, conn.label);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Convert canvas to string
|
|
163
|
+
return canvas.map(row => row.join('')).join('\n');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Draw connection between two nodes
|
|
167
|
+
*/
|
|
168
|
+
function drawConnection(canvas, from, to, label) {
|
|
169
|
+
const fromY = from.y + from.lines.length;
|
|
170
|
+
const toY = to.y;
|
|
171
|
+
// Draw vertical line
|
|
172
|
+
for (let y = fromY; y < toY; y++) {
|
|
173
|
+
if (y >= 0 && y < canvas.length) {
|
|
174
|
+
canvas[y][from.x + 7] = '│';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Draw arrow
|
|
178
|
+
if (toY > fromY && from.x + 7 < canvas[toY - 1].length) {
|
|
179
|
+
canvas[toY - 1][from.x + 7] = '▼';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Simple sequence diagram to ASCII
|
|
184
|
+
*/
|
|
185
|
+
function renderSequenceASCII(code) {
|
|
186
|
+
const lines = code.split('\n');
|
|
187
|
+
const actors = [];
|
|
188
|
+
const messages = [];
|
|
189
|
+
for (const line of lines) {
|
|
190
|
+
const trimmed = line.trim();
|
|
191
|
+
// Parse actor lines
|
|
192
|
+
if (trimmed.startsWith('participant ')) {
|
|
193
|
+
const actor = trimmed.replace('participant', '').trim();
|
|
194
|
+
if (actor && !actors.includes(actor)) {
|
|
195
|
+
actors.push(actor);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Parse messages: A->>B: message
|
|
199
|
+
const msgMatch = trimmed.match(/(\w+)\s*-*>+\s*(\w+)\s*:\s*(.+)/);
|
|
200
|
+
if (msgMatch) {
|
|
201
|
+
const [, from, to, msg] = msgMatch;
|
|
202
|
+
messages.push({ from, to, msg });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (actors.length === 0) {
|
|
206
|
+
return '[Sequence Diagram - No participants]';
|
|
207
|
+
}
|
|
208
|
+
// Render sequence diagram
|
|
209
|
+
const result = [];
|
|
210
|
+
const colWidth = 15;
|
|
211
|
+
// Header with actors
|
|
212
|
+
let header = '';
|
|
213
|
+
for (const actor of actors) {
|
|
214
|
+
header += actor.padEnd(colWidth);
|
|
215
|
+
}
|
|
216
|
+
result.push(header);
|
|
217
|
+
// Separator
|
|
218
|
+
result.push('─'.repeat(header.length));
|
|
219
|
+
// Messages
|
|
220
|
+
for (const msg of messages) {
|
|
221
|
+
const fromIdx = actors.indexOf(msg.from);
|
|
222
|
+
const toIdx = actors.indexOf(msg.to);
|
|
223
|
+
if (fromIdx >= 0 && toIdx >= 0) {
|
|
224
|
+
let line = ' '.repeat(fromIdx * colWidth);
|
|
225
|
+
const arrow = fromIdx < toIdx ? '─>' : '<─';
|
|
226
|
+
const arrowCount = Math.abs(toIdx - fromIdx);
|
|
227
|
+
line += arrow + '─'.repeat(arrowCount * colWidth - 3);
|
|
228
|
+
line += ` ${msg.msg}`;
|
|
229
|
+
result.push(line);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result.join('\n');
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Simple Gantt chart to ASCII
|
|
236
|
+
*/
|
|
237
|
+
function renderGanttASCII(code) {
|
|
238
|
+
const lines = code.split('\n');
|
|
239
|
+
const tasks = [];
|
|
240
|
+
for (const line of lines) {
|
|
241
|
+
const trimmed = line.trim();
|
|
242
|
+
// Parse tasks
|
|
243
|
+
const taskMatch = trimmed.match(/(\w+)\s*:\s*(\d{4}-\d{2}-\d{2})\s*,\s*(\d{4}-\d{2}-\d{2})/);
|
|
244
|
+
if (taskMatch) {
|
|
245
|
+
const [, name, start, end] = taskMatch;
|
|
246
|
+
tasks.push({ name, start, end });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (tasks.length === 0) {
|
|
250
|
+
return '[Gantt Chart - No tasks]';
|
|
251
|
+
}
|
|
252
|
+
// Render Gantt
|
|
253
|
+
const result = [];
|
|
254
|
+
result.push('Gantt Chart');
|
|
255
|
+
result.push('─'.repeat(50));
|
|
256
|
+
for (const task of tasks) {
|
|
257
|
+
const nameCol = task.name.padEnd(15);
|
|
258
|
+
const bar = '█'.repeat(20);
|
|
259
|
+
result.push(`${nameCol} │${bar}│`);
|
|
260
|
+
}
|
|
261
|
+
return result.join('\n');
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Main rendering function
|
|
265
|
+
*/
|
|
266
|
+
function renderMermaidToASCII(mermaidCode, options) {
|
|
267
|
+
if (!mermaidCode || mermaidCode.trim().length === 0) {
|
|
268
|
+
return '[Empty Mermaid Diagram]';
|
|
269
|
+
}
|
|
270
|
+
const code = mermaidCode.trim();
|
|
271
|
+
try {
|
|
272
|
+
// Detect diagram type
|
|
273
|
+
if (code.match(/^(graph|flowchart)/m)) {
|
|
274
|
+
return renderFlowchartASCII(code);
|
|
275
|
+
}
|
|
276
|
+
else if (code.match(/sequenceDiagram/m)) {
|
|
277
|
+
return renderSequenceASCII(code);
|
|
278
|
+
}
|
|
279
|
+
else if (code.match(/^gantt/m)) {
|
|
280
|
+
return renderGanttASCII(code);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
// Fallback: try as flowchart
|
|
284
|
+
return renderFlowchartASCII(code);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
console.warn('Mermaid rendering error:', error);
|
|
289
|
+
return `[Mermaid Diagram - Parse Error]\n\n${code}`;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Detect if code is Mermaid syntax
|
|
294
|
+
*/
|
|
295
|
+
function isMermaidCode(code) {
|
|
296
|
+
if (!code)
|
|
297
|
+
return false;
|
|
298
|
+
const mermaidKeywords = [
|
|
299
|
+
'graph',
|
|
300
|
+
'flowchart',
|
|
301
|
+
'sequenceDiagram',
|
|
302
|
+
'classDiagram',
|
|
303
|
+
'stateDiagram',
|
|
304
|
+
'erDiagram',
|
|
305
|
+
'journey',
|
|
306
|
+
'gantt',
|
|
307
|
+
'pie',
|
|
308
|
+
'gitGraph',
|
|
309
|
+
];
|
|
310
|
+
const trimmed = code.trim().toLowerCase();
|
|
311
|
+
return mermaidKeywords.some(keyword => trimmed.startsWith(keyword.toLowerCase()));
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Format mermaid code for better readability
|
|
315
|
+
*/
|
|
316
|
+
function formatMermaidCode(code) {
|
|
317
|
+
// Normalize whitespace
|
|
318
|
+
let formatted = code
|
|
319
|
+
.split('\n')
|
|
320
|
+
.map(line => line.trim())
|
|
321
|
+
.filter(line => line && !line.startsWith('%%'))
|
|
322
|
+
.join('\n');
|
|
323
|
+
return formatted;
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=mermaid-ascii-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-ascii-renderer.js","sourceRoot":"","sources":["../../src/utils/mermaid-ascii-renderer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsUH,oDA0BC;AAKD,sCAoBC;AAKD,8CASC;AAzXD;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY;IAIlC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAEnD,6BAA6B;QAC7B,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAEjD,oCAAoC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE;gBACF,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE;gBACF,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC;YAC/B,2CAA2C;YAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI;gBACJ,EAAE;gBACF,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAiB,EAAE,QAAgB,EAAE;IACrD,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;IAE1C,yBAAyB;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YACvD,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IAEtF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,gBAAgB;QAChB,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,KAAoB,EACpB,WAAgC;IAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqD,CAAC;IAE5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,2BAA2B;IAC3B,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,CAAC,CAAC;IAElB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,wEAAwE;IACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAExC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;YAClB,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,QAAQ;YACX,KAAK;SACN,CAAC,CAAC;QAEH,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEnD,wBAAwB;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAe,KAAK,CAAC,IAAI,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpC,aAAa;IACb,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE/B,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACf,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,MAAkB,EAClB,IAA+C,EAC/C,EAA6C,EAC7C,KAAc;IAEd,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEjB,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAqD,EAAE,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,oBAAoB;QACpB,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,sCAAsC,CAAC;IAChD,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,qBAAqB;IACrB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpB,YAAY;IACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvC,WAAW;IACX,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAwD,EAAE,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,cAAc;QACd,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC7F,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,GAAG,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,WAAmB,EACnB,OAAgE;IAEhE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,sBAAsB;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACtC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,sCAAsC,IAAI,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,eAAe,GAAG;QACtB,OAAO;QACP,WAAW;QACX,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,WAAW;QACX,SAAS;QACT,OAAO;QACP,KAAK;QACL,UAAU;KACX,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACpC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,uBAAuB;IACvB,IAAI,SAAS,GAAG,IAAI;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface MermaidASCIIOptions {
|
|
2
|
+
paddingX?: number;
|
|
3
|
+
paddingY?: number;
|
|
4
|
+
borderPadding?: number;
|
|
5
|
+
ascii?: boolean;
|
|
6
|
+
coords?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Wrapper for mermaid-ascii binary integration
|
|
10
|
+
* Converts Mermaid diagrams to ASCII art using the external mermaid-ascii tool
|
|
11
|
+
*/
|
|
12
|
+
export declare class MermaidASCIIWrapper {
|
|
13
|
+
private binaryPath;
|
|
14
|
+
private tempDir;
|
|
15
|
+
constructor(binaryPath?: string);
|
|
16
|
+
/**
|
|
17
|
+
* Convert mermaid code to ASCII diagram
|
|
18
|
+
*/
|
|
19
|
+
convertToASCII(mermaidCode: string, options?: MermaidASCIIOptions): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Build command line arguments for mermaid-ascii
|
|
22
|
+
*/
|
|
23
|
+
private buildCommandArgs;
|
|
24
|
+
/**
|
|
25
|
+
* Check if mermaid-ascii binary is available
|
|
26
|
+
*/
|
|
27
|
+
isBinaryAvailable(): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Generate fallback ASCII diagram when mermaid-ascii is not available
|
|
30
|
+
*/
|
|
31
|
+
private getFallbackDiagram;
|
|
32
|
+
/**
|
|
33
|
+
* Check if content looks like a mermaid diagram
|
|
34
|
+
*/
|
|
35
|
+
static isMermaidCode(content: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Extract mermaid code from markdown code block
|
|
38
|
+
*/
|
|
39
|
+
static extractMermaidFromMarkdown(markdown: string): string | null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Singleton instance with default settings
|
|
43
|
+
*/
|
|
44
|
+
export declare const mermaidASCII: MermaidASCIIWrapper;
|
|
45
|
+
/**
|
|
46
|
+
* Quick conversion function for mermaid code
|
|
47
|
+
*/
|
|
48
|
+
export declare function convertMermaidToASCII(mermaidCode: string, options?: MermaidASCIIOptions): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if mermaid-ascii binary is available on the system
|
|
51
|
+
*/
|
|
52
|
+
export declare function isMermaidASCIIAvailable(): Promise<boolean>;
|
|
53
|
+
//# sourceMappingURL=mermaid-ascii.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-ascii.d.ts","sourceRoot":"","sources":["../../src/utils/mermaid-ascii.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,CAAC,EAAE,MAAM;IAY/B;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6C7F;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAS3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAuB9C;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAWnE;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,qBAA4B,CAAC;AAEtD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEhE"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mermaidASCII = exports.MermaidASCIIWrapper = void 0;
|
|
4
|
+
exports.convertMermaidToASCII = convertMermaidToASCII;
|
|
5
|
+
exports.isMermaidASCIIAvailable = isMermaidASCIIAvailable;
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const os_1 = require("os");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
12
|
+
/**
|
|
13
|
+
* Wrapper for mermaid-ascii binary integration
|
|
14
|
+
* Converts Mermaid diagrams to ASCII art using the external mermaid-ascii tool
|
|
15
|
+
*/
|
|
16
|
+
class MermaidASCIIWrapper {
|
|
17
|
+
binaryPath;
|
|
18
|
+
tempDir;
|
|
19
|
+
constructor(binaryPath) {
|
|
20
|
+
this.binaryPath = binaryPath || 'npx mermaid-ascii';
|
|
21
|
+
this.tempDir = (0, path_1.join)((0, os_1.tmpdir)(), 'streamtty-mermaid');
|
|
22
|
+
// Ensure temp directory exists
|
|
23
|
+
try {
|
|
24
|
+
(0, fs_1.mkdirSync)(this.tempDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
// Directory might already exist
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Convert mermaid code to ASCII diagram
|
|
32
|
+
*/
|
|
33
|
+
async convertToASCII(mermaidCode, options = {}) {
|
|
34
|
+
// Validate mermaid code
|
|
35
|
+
if (!mermaidCode.trim()) {
|
|
36
|
+
return '[Empty Mermaid diagram]';
|
|
37
|
+
}
|
|
38
|
+
// Check if mermaid-ascii is available
|
|
39
|
+
if (!(await this.isBinaryAvailable())) {
|
|
40
|
+
return this.getFallbackDiagram(mermaidCode);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
// Create temporary file for mermaid code
|
|
44
|
+
const tempFile = (0, path_1.join)(this.tempDir, `diagram-${Date.now()}.mermaid`);
|
|
45
|
+
(0, fs_1.writeFileSync)(tempFile, mermaidCode.trim());
|
|
46
|
+
// Build command arguments
|
|
47
|
+
const args = this.buildCommandArgs(tempFile, options);
|
|
48
|
+
const command = `${this.binaryPath} ${args}`;
|
|
49
|
+
// Execute mermaid-ascii command
|
|
50
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
51
|
+
timeout: 10000, // 10 second timeout
|
|
52
|
+
encoding: 'utf8'
|
|
53
|
+
});
|
|
54
|
+
// Clean up temp file
|
|
55
|
+
try {
|
|
56
|
+
(0, fs_1.unlinkSync)(tempFile);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
// Ignore cleanup errors
|
|
60
|
+
}
|
|
61
|
+
if (stderr && stderr.trim()) {
|
|
62
|
+
console.warn('Mermaid-ASCII warning:', stderr);
|
|
63
|
+
}
|
|
64
|
+
return stdout.trim() || this.getFallbackDiagram(mermaidCode);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn('Mermaid-ASCII conversion failed:', error instanceof Error ? error.message : error);
|
|
68
|
+
return this.getFallbackDiagram(mermaidCode);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Build command line arguments for mermaid-ascii
|
|
73
|
+
*/
|
|
74
|
+
buildCommandArgs(filePath, options) {
|
|
75
|
+
const args = [`--file`, filePath];
|
|
76
|
+
if (options.paddingX !== undefined) {
|
|
77
|
+
args.push(`--paddingX`, options.paddingX.toString());
|
|
78
|
+
}
|
|
79
|
+
if (options.paddingY !== undefined) {
|
|
80
|
+
args.push(`--paddingY`, options.paddingY.toString());
|
|
81
|
+
}
|
|
82
|
+
if (options.borderPadding !== undefined) {
|
|
83
|
+
args.push(`--borderPadding`, options.borderPadding.toString());
|
|
84
|
+
}
|
|
85
|
+
if (options.ascii) {
|
|
86
|
+
args.push('--ascii');
|
|
87
|
+
}
|
|
88
|
+
if (options.coords) {
|
|
89
|
+
args.push('--coords');
|
|
90
|
+
}
|
|
91
|
+
return args.join(' ');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Check if mermaid-ascii binary is available
|
|
95
|
+
*/
|
|
96
|
+
async isBinaryAvailable() {
|
|
97
|
+
try {
|
|
98
|
+
await execAsync(`${this.binaryPath} --help`, { timeout: 5000 });
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate fallback ASCII diagram when mermaid-ascii is not available
|
|
107
|
+
*/
|
|
108
|
+
getFallbackDiagram(mermaidCode) {
|
|
109
|
+
const lines = mermaidCode.split('\n');
|
|
110
|
+
const maxWidth = Math.max(...lines.map(l => l.length), 40);
|
|
111
|
+
const width = Math.min(maxWidth + 4, 80);
|
|
112
|
+
const topBorder = '┌' + '─'.repeat(width - 2) + '┐';
|
|
113
|
+
const bottomBorder = '└' + '─'.repeat(width - 2) + '┘';
|
|
114
|
+
const title = '│ 📊 Mermaid Diagram (mermaid-ascii not found) │'.padEnd(width - 1) + '│';
|
|
115
|
+
const contentLines = lines.slice(0, 8).map(line => {
|
|
116
|
+
const truncated = line.length > width - 4 ? line.slice(0, width - 7) + '...' : line;
|
|
117
|
+
return '│ ' + truncated.padEnd(width - 4) + ' │';
|
|
118
|
+
});
|
|
119
|
+
const suggestion = '│ Install: https://github.com/AlexanderGrooff/mermaid-ascii │'.padEnd(width - 1) + '│';
|
|
120
|
+
return [
|
|
121
|
+
topBorder,
|
|
122
|
+
title,
|
|
123
|
+
'│' + ' '.repeat(width - 2) + '│',
|
|
124
|
+
...contentLines,
|
|
125
|
+
'│' + ' '.repeat(width - 2) + '│',
|
|
126
|
+
suggestion,
|
|
127
|
+
bottomBorder
|
|
128
|
+
].join('\n');
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if content looks like a mermaid diagram
|
|
132
|
+
*/
|
|
133
|
+
static isMermaidCode(content) {
|
|
134
|
+
const trimmed = content.trim().toLowerCase();
|
|
135
|
+
const mermaidKeywords = [
|
|
136
|
+
'graph',
|
|
137
|
+
'flowchart',
|
|
138
|
+
'sequencediagram',
|
|
139
|
+
'classDiagram',
|
|
140
|
+
'stateDiagram',
|
|
141
|
+
'journey',
|
|
142
|
+
'gantt',
|
|
143
|
+
'pie',
|
|
144
|
+
'gitgraph',
|
|
145
|
+
'requirement',
|
|
146
|
+
'erdiagram',
|
|
147
|
+
'mindmap'
|
|
148
|
+
];
|
|
149
|
+
return mermaidKeywords.some(keyword => trimmed.startsWith(keyword.toLowerCase()));
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Extract mermaid code from markdown code block
|
|
153
|
+
*/
|
|
154
|
+
static extractMermaidFromMarkdown(markdown) {
|
|
155
|
+
// Match ```mermaid code blocks
|
|
156
|
+
const mermaidRegex = /```mermaid\s*\n([\s\S]*?)\n```/gi;
|
|
157
|
+
const match = mermaidRegex.exec(markdown);
|
|
158
|
+
if (match && match[1]) {
|
|
159
|
+
return match[1].trim();
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.MermaidASCIIWrapper = MermaidASCIIWrapper;
|
|
165
|
+
/**
|
|
166
|
+
* Singleton instance with default settings
|
|
167
|
+
*/
|
|
168
|
+
exports.mermaidASCII = new MermaidASCIIWrapper();
|
|
169
|
+
/**
|
|
170
|
+
* Quick conversion function for mermaid code
|
|
171
|
+
*/
|
|
172
|
+
async function convertMermaidToASCII(mermaidCode, options) {
|
|
173
|
+
return exports.mermaidASCII.convertToASCII(mermaidCode, options);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Check if mermaid-ascii binary is available on the system
|
|
177
|
+
*/
|
|
178
|
+
async function isMermaidASCIIAvailable() {
|
|
179
|
+
return exports.mermaidASCII.isBinaryAvailable();
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=mermaid-ascii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-ascii.js","sourceRoot":"","sources":["../../src/utils/mermaid-ascii.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Highlight code using Shiki with ANSI output
|
|
3
|
+
*/
|
|
4
|
+
export declare function highlightCodeWithShiki(code: string, lang?: string, theme?: string): Promise<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Get ANSI theme from Shiki theme name
|
|
7
|
+
*/
|
|
8
|
+
export declare function getAnsiThemeColors(theme: string): Record<string, string>;
|
|
9
|
+
/**
|
|
10
|
+
* Format code with syntax highlighting for terminal output
|
|
11
|
+
* Returns ready-to-display ANSI string
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatCodeForTerminal(code: string, lang?: string, options?: {
|
|
14
|
+
theme?: 'nord' | 'github-light' | 'github-dark' | 'one-dark-pro' | 'dracula';
|
|
15
|
+
lineNumbers?: boolean;
|
|
16
|
+
maxWidth?: number;
|
|
17
|
+
}): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Clear Shiki cache (for testing or memory pressure)
|
|
20
|
+
*/
|
|
21
|
+
export declare function clearShikiCache(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get cache stats
|
|
24
|
+
*/
|
|
25
|
+
export declare function getShikiCacheStats(): {
|
|
26
|
+
size: number;
|
|
27
|
+
keys: string[];
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=shiki-ansi-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shiki-ansi-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/shiki-ansi-renderer.ts"],"names":[],"mappings":"AA2HA;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAe,EACrB,KAAK,GAAE,MAAe,GACrB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AA0FD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmDxE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAe,EACrB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,MAAM,CAAC,CAejB;AA8ED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;EAKjC"}
|