@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,376 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.EnhancedTableRenderer = void 0;
|
|
40
|
+
exports.renderTable = renderTable;
|
|
41
|
+
exports.renderChart = renderChart;
|
|
42
|
+
exports.parseMarkdownTable = parseMarkdownTable;
|
|
43
|
+
exports.parseCSVToChart = parseCSVToChart;
|
|
44
|
+
const tty_table_1 = __importDefault(require("tty-table"));
|
|
45
|
+
const asciichart = __importStar(require("asciichart"));
|
|
46
|
+
/**
|
|
47
|
+
* Enhanced table and chart renderer using tty-table and asciichart
|
|
48
|
+
*/
|
|
49
|
+
class EnhancedTableRenderer {
|
|
50
|
+
/**
|
|
51
|
+
* Render a table using tty-table
|
|
52
|
+
*/
|
|
53
|
+
static renderTable(data, options = {}) {
|
|
54
|
+
try {
|
|
55
|
+
// Calculate optimal column widths
|
|
56
|
+
const colWidths = data.headers.map((title, index) => {
|
|
57
|
+
const maxDataWidth = Math.max(...data.rows.map(row => (row[index] || '').length));
|
|
58
|
+
return Math.max(title.length, maxDataWidth, 12); // Better minimum width
|
|
59
|
+
});
|
|
60
|
+
// Prepare header configuration
|
|
61
|
+
const header = data.headers.map((title, index) => ({
|
|
62
|
+
value: title,
|
|
63
|
+
headerAlign: options.headerAlign || 'left',
|
|
64
|
+
align: data.align?.[index] || 'left',
|
|
65
|
+
width: colWidths[index],
|
|
66
|
+
}));
|
|
67
|
+
// Prepare rows
|
|
68
|
+
const rows = data.rows.map(row => row.map((cell, index) => ({
|
|
69
|
+
value: cell,
|
|
70
|
+
align: data.align?.[index] || 'left'
|
|
71
|
+
})));
|
|
72
|
+
// Table options
|
|
73
|
+
const tableOptions = {
|
|
74
|
+
borderStyle: options.borderStyle || 'solid',
|
|
75
|
+
headerAlign: options.headerAlign || 'left',
|
|
76
|
+
align: 'left',
|
|
77
|
+
color: 'white',
|
|
78
|
+
compact: false, // Disable compact mode for better readability
|
|
79
|
+
width: options.width || process.stdout.columns || 100
|
|
80
|
+
};
|
|
81
|
+
// Create and render table
|
|
82
|
+
const table = (0, tty_table_1.default)(header, rows, tableOptions);
|
|
83
|
+
const rendered = table.render();
|
|
84
|
+
// Convert to rounded corners
|
|
85
|
+
return this.convertToRoundedCorners(rendered);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.warn('tty-table rendering failed:', error);
|
|
89
|
+
return this.renderFallbackTable(data);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Render a line chart using asciichart
|
|
94
|
+
*/
|
|
95
|
+
static renderChart(data) {
|
|
96
|
+
try {
|
|
97
|
+
const config = {
|
|
98
|
+
height: data.config?.height || 10,
|
|
99
|
+
width: data.config?.width || 80,
|
|
100
|
+
colors: data.config?.colors || ['blue'],
|
|
101
|
+
format: data.config?.format || ((x) => x.toFixed(2))
|
|
102
|
+
};
|
|
103
|
+
let chart = asciichart.plot(data.values, config);
|
|
104
|
+
// Add labels if provided
|
|
105
|
+
if (data.labels && data.labels.length > 0) {
|
|
106
|
+
const labelLine = data.labels.join(' | ');
|
|
107
|
+
chart += '\n' + labelLine;
|
|
108
|
+
}
|
|
109
|
+
return chart;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.warn('asciichart rendering failed:', error);
|
|
113
|
+
return this.renderFallbackChart(data);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Render multiple data series as a chart
|
|
118
|
+
*/
|
|
119
|
+
static renderMultiChart(datasets) {
|
|
120
|
+
try {
|
|
121
|
+
const colors = [
|
|
122
|
+
'blue',
|
|
123
|
+
'green',
|
|
124
|
+
'red',
|
|
125
|
+
'yellow',
|
|
126
|
+
'magenta',
|
|
127
|
+
'cyan'
|
|
128
|
+
];
|
|
129
|
+
const series = datasets.map(dataset => dataset.values);
|
|
130
|
+
const seriesColors = datasets.map((dataset, index) => dataset.color || colors[index % colors.length]);
|
|
131
|
+
const config = {
|
|
132
|
+
height: 12,
|
|
133
|
+
colors: seriesColors,
|
|
134
|
+
format: (x) => x.toFixed(1)
|
|
135
|
+
};
|
|
136
|
+
let chart = asciichart.plot(series, config);
|
|
137
|
+
// Add legend
|
|
138
|
+
const legend = datasets.map((dataset, index) => `${index + 1}: ${dataset.label}`).join(' | ');
|
|
139
|
+
chart += '\nLegend: ' + legend;
|
|
140
|
+
return chart;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
console.warn('Multi-chart rendering failed:', error);
|
|
144
|
+
return '[Chart rendering failed]';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Auto-detect if data looks like chart data
|
|
149
|
+
*/
|
|
150
|
+
static isChartData(content) {
|
|
151
|
+
// Simple heuristics to detect chart data
|
|
152
|
+
const lines = content.trim().split('\n');
|
|
153
|
+
// Check if it looks like CSV with numbers
|
|
154
|
+
if (lines.length > 1) {
|
|
155
|
+
const firstDataLine = lines[1]?.split(/[,\t\|]/);
|
|
156
|
+
const hasNumbers = firstDataLine?.some(cell => !isNaN(parseFloat(cell.trim())) && isFinite(parseFloat(cell.trim())));
|
|
157
|
+
return !!hasNumbers;
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Auto-detect if content is table data
|
|
163
|
+
*/
|
|
164
|
+
static isTableData(content) {
|
|
165
|
+
const lines = content.trim().split('\n');
|
|
166
|
+
// Check for markdown table syntax
|
|
167
|
+
if (lines.some(line => line.includes('|'))) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
// Check for CSV-like structure
|
|
171
|
+
if (lines.length > 1) {
|
|
172
|
+
const separators = [',', '\t', ';'];
|
|
173
|
+
return separators.some(sep => {
|
|
174
|
+
const firstLineCols = lines[0]?.split(sep).length || 0;
|
|
175
|
+
const secondLineCols = lines[1]?.split(sep).length || 0;
|
|
176
|
+
return firstLineCols > 1 && firstLineCols === secondLineCols;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Parse markdown table to TableData
|
|
183
|
+
*/
|
|
184
|
+
static parseMarkdownTable(markdown) {
|
|
185
|
+
const lines = markdown.trim().split('\n').filter(line => line.trim());
|
|
186
|
+
if (lines.length < 3)
|
|
187
|
+
return null; // Need header, separator, and at least one data row
|
|
188
|
+
// Parse header - handle both | table | and table | formats
|
|
189
|
+
const headerLine = lines[0];
|
|
190
|
+
let headers = headerLine.split('|').map(cell => cell.trim());
|
|
191
|
+
// Remove empty first/last cells if they exist (from | table | format)
|
|
192
|
+
if (headers.length > 0 && headers[0] === '') {
|
|
193
|
+
headers = headers.slice(1);
|
|
194
|
+
}
|
|
195
|
+
if (headers.length > 0 && headers[headers.length - 1] === '') {
|
|
196
|
+
headers = headers.slice(0, -1);
|
|
197
|
+
}
|
|
198
|
+
// Clean header text from markdown formatting
|
|
199
|
+
headers = headers.map(header => {
|
|
200
|
+
return header
|
|
201
|
+
.replace(/\*\*(.*?)\*\*/g, '$1') // Remove bold
|
|
202
|
+
.replace(/\*(.*?)\*/g, '$1') // Remove italic
|
|
203
|
+
.replace(/`(.*?)`/g, '$1') // Remove code
|
|
204
|
+
.trim();
|
|
205
|
+
});
|
|
206
|
+
if (headers.length === 0)
|
|
207
|
+
return null;
|
|
208
|
+
// Skip separator line (line 1 contains --- | --- | ---)
|
|
209
|
+
const dataLines = lines.slice(2);
|
|
210
|
+
// Parse data rows
|
|
211
|
+
const rows = [];
|
|
212
|
+
for (const line of dataLines) {
|
|
213
|
+
let cells = line.split('|').map(cell => cell.trim());
|
|
214
|
+
// Remove empty first/last cells if they exist
|
|
215
|
+
if (cells.length > 0 && cells[0] === '') {
|
|
216
|
+
cells = cells.slice(1);
|
|
217
|
+
}
|
|
218
|
+
if (cells.length > 0 && cells[cells.length - 1] === '') {
|
|
219
|
+
cells = cells.slice(0, -1);
|
|
220
|
+
}
|
|
221
|
+
// Clean cell content from markdown formatting
|
|
222
|
+
cells = cells.map(cell => {
|
|
223
|
+
return cell
|
|
224
|
+
.replace(/\*\*(.*?)\*\*/g, '$1') // Remove bold
|
|
225
|
+
.replace(/\*(.*?)\*/g, '$1') // Remove italic
|
|
226
|
+
.replace(/`(.*?)`/g, '$1') // Remove code
|
|
227
|
+
.replace(/~~(.*?)~~/g, '$1') // Remove strikethrough
|
|
228
|
+
.trim();
|
|
229
|
+
});
|
|
230
|
+
// Only add rows that match the header count
|
|
231
|
+
if (cells.length === headers.length) {
|
|
232
|
+
rows.push(cells);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (rows.length === 0)
|
|
236
|
+
return null;
|
|
237
|
+
return { headers, rows };
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Parse CSV data to chart data
|
|
241
|
+
*/
|
|
242
|
+
static parseCSVToChart(csv) {
|
|
243
|
+
const lines = csv.trim().split('\n');
|
|
244
|
+
if (lines.length < 2)
|
|
245
|
+
return null;
|
|
246
|
+
try {
|
|
247
|
+
const dataLines = lines.slice(1);
|
|
248
|
+
// Find first numeric column
|
|
249
|
+
let valueColumnIndex = -1;
|
|
250
|
+
let labelColumnIndex = -1;
|
|
251
|
+
const firstDataRow = dataLines[0]?.split(/[,\t]/).map(c => c.trim());
|
|
252
|
+
if (!firstDataRow)
|
|
253
|
+
return null;
|
|
254
|
+
// Find label column (first non-numeric) and value column (first numeric)
|
|
255
|
+
for (let i = 0; i < firstDataRow.length; i++) {
|
|
256
|
+
const cell = firstDataRow[i];
|
|
257
|
+
const isNumeric = !isNaN(parseFloat(cell)) && isFinite(parseFloat(cell));
|
|
258
|
+
if (!isNumeric && labelColumnIndex === -1) {
|
|
259
|
+
labelColumnIndex = i;
|
|
260
|
+
}
|
|
261
|
+
if (isNumeric && valueColumnIndex === -1) {
|
|
262
|
+
valueColumnIndex = i;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (valueColumnIndex === -1)
|
|
266
|
+
return null;
|
|
267
|
+
const values = [];
|
|
268
|
+
const labels = [];
|
|
269
|
+
for (const line of dataLines) {
|
|
270
|
+
const cells = line.split(/[,\t]/).map(c => c.trim());
|
|
271
|
+
if (cells.length > valueColumnIndex) {
|
|
272
|
+
const value = parseFloat(cells[valueColumnIndex]);
|
|
273
|
+
if (!isNaN(value) && isFinite(value)) {
|
|
274
|
+
values.push(value);
|
|
275
|
+
if (labelColumnIndex >= 0 && cells[labelColumnIndex]) {
|
|
276
|
+
labels.push(cells[labelColumnIndex]);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return values.length > 0 ? { values, labels: labels.length > 0 ? labels : undefined } : null;
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Convert table corners to rounded Unicode characters
|
|
289
|
+
*/
|
|
290
|
+
static convertToRoundedCorners(table) {
|
|
291
|
+
return table
|
|
292
|
+
.replace(/┌/g, '╭') // Top-left corner
|
|
293
|
+
.replace(/┐/g, '╮') // Top-right corner
|
|
294
|
+
.replace(/└/g, '╰') // Bottom-left corner
|
|
295
|
+
.replace(/┘/g, '╯') // Bottom-right corner
|
|
296
|
+
.replace(/├/g, '├') // Left T-junction (keep)
|
|
297
|
+
.replace(/┤/g, '┤') // Right T-junction (keep)
|
|
298
|
+
.replace(/┬/g, '┬') // Top T-junction (keep)
|
|
299
|
+
.replace(/┴/g, '┴') // Bottom T-junction (keep)
|
|
300
|
+
.replace(/┼/g, '┼'); // Cross junction (keep)
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Fallback table renderer
|
|
304
|
+
*/
|
|
305
|
+
static renderFallbackTable(data) {
|
|
306
|
+
const lines = [];
|
|
307
|
+
// Calculate column widths
|
|
308
|
+
const colWidths = data.headers.map((header, index) => {
|
|
309
|
+
const maxDataWidth = Math.max(...data.rows.map(row => (row[index] || '').length));
|
|
310
|
+
return Math.max(header.length, maxDataWidth, 5);
|
|
311
|
+
});
|
|
312
|
+
const totalWidth = colWidths.reduce((sum, width) => sum + width, 0) + (colWidths.length - 1) * 3 + 4;
|
|
313
|
+
// Top border with rounded corners
|
|
314
|
+
const topBorder = '╭' + '─'.repeat(totalWidth - 2) + '╮';
|
|
315
|
+
lines.push(topBorder);
|
|
316
|
+
// Header row
|
|
317
|
+
const headerCells = data.headers.map((header, index) => header.padEnd(colWidths[index]));
|
|
318
|
+
const headerLine = '│ ' + headerCells.join(' │ ') + ' │';
|
|
319
|
+
lines.push(headerLine);
|
|
320
|
+
// Header separator
|
|
321
|
+
const separatorCells = colWidths.map(width => '─'.repeat(width));
|
|
322
|
+
const separatorLine = '├─' + separatorCells.join('─┼─') + '─┤';
|
|
323
|
+
lines.push(separatorLine);
|
|
324
|
+
// Data rows
|
|
325
|
+
for (const row of data.rows) {
|
|
326
|
+
const rowCells = row.map((cell, index) => (cell || '').padEnd(colWidths[index]));
|
|
327
|
+
const rowLine = '│ ' + rowCells.join(' │ ') + ' │';
|
|
328
|
+
lines.push(rowLine);
|
|
329
|
+
}
|
|
330
|
+
// Bottom border with rounded corners
|
|
331
|
+
const bottomBorder = '╰' + '─'.repeat(totalWidth - 2) + '╯';
|
|
332
|
+
lines.push(bottomBorder);
|
|
333
|
+
return lines.join('\n');
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Fallback chart renderer
|
|
337
|
+
*/
|
|
338
|
+
static renderFallbackChart(data) {
|
|
339
|
+
const maxValue = Math.max(...data.values);
|
|
340
|
+
const minValue = Math.min(...data.values);
|
|
341
|
+
const range = maxValue - minValue;
|
|
342
|
+
const height = 8;
|
|
343
|
+
const lines = [];
|
|
344
|
+
for (let i = height - 1; i >= 0; i--) {
|
|
345
|
+
const threshold = minValue + (range * i / (height - 1));
|
|
346
|
+
let line = '';
|
|
347
|
+
for (const value of data.values) {
|
|
348
|
+
line += value >= threshold ? '█' : ' ';
|
|
349
|
+
}
|
|
350
|
+
lines.push(`${threshold.toFixed(1).padStart(6)} │${line}`);
|
|
351
|
+
}
|
|
352
|
+
// Add labels if available
|
|
353
|
+
if (data.labels) {
|
|
354
|
+
const labelLine = ' │' + data.labels.map(label => label.slice(0, 1)).join('');
|
|
355
|
+
lines.push(labelLine);
|
|
356
|
+
}
|
|
357
|
+
return lines.join('\n');
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
exports.EnhancedTableRenderer = EnhancedTableRenderer;
|
|
361
|
+
/**
|
|
362
|
+
* Convenience functions
|
|
363
|
+
*/
|
|
364
|
+
function renderTable(data, options) {
|
|
365
|
+
return EnhancedTableRenderer.renderTable(data, options);
|
|
366
|
+
}
|
|
367
|
+
function renderChart(data) {
|
|
368
|
+
return EnhancedTableRenderer.renderChart(data);
|
|
369
|
+
}
|
|
370
|
+
function parseMarkdownTable(markdown) {
|
|
371
|
+
return EnhancedTableRenderer.parseMarkdownTable(markdown);
|
|
372
|
+
}
|
|
373
|
+
function parseCSVToChart(csv) {
|
|
374
|
+
return EnhancedTableRenderer.parseCSVToChart(csv);
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=enhanced-table-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-table-renderer.js","sourceRoot":"","sources":["../../src/utils/enhanced-table-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI color codes for terminal output
|
|
3
|
+
*/
|
|
4
|
+
export declare const colors: {
|
|
5
|
+
black: string;
|
|
6
|
+
red: string;
|
|
7
|
+
green: string;
|
|
8
|
+
yellow: string;
|
|
9
|
+
blue: string;
|
|
10
|
+
magenta: string;
|
|
11
|
+
cyan: string;
|
|
12
|
+
white: string;
|
|
13
|
+
gray: string;
|
|
14
|
+
brightRed: string;
|
|
15
|
+
brightGreen: string;
|
|
16
|
+
brightYellow: string;
|
|
17
|
+
brightBlue: string;
|
|
18
|
+
brightMagenta: string;
|
|
19
|
+
brightCyan: string;
|
|
20
|
+
brightWhite: string;
|
|
21
|
+
bgBlack: string;
|
|
22
|
+
bgRed: string;
|
|
23
|
+
bgGreen: string;
|
|
24
|
+
bgYellow: string;
|
|
25
|
+
bgBlue: string;
|
|
26
|
+
bgMagenta: string;
|
|
27
|
+
bgCyan: string;
|
|
28
|
+
bgWhite: string;
|
|
29
|
+
reset: string;
|
|
30
|
+
bold: string;
|
|
31
|
+
dim: string;
|
|
32
|
+
italic: string;
|
|
33
|
+
underline: string;
|
|
34
|
+
inverse: string;
|
|
35
|
+
hidden: string;
|
|
36
|
+
strikethrough: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Colorize text with ANSI codes
|
|
40
|
+
*/
|
|
41
|
+
export declare function colorize(text: string, color: keyof typeof colors): string;
|
|
42
|
+
/**
|
|
43
|
+
* Apply multiple styles to text
|
|
44
|
+
*/
|
|
45
|
+
export declare function style(text: string, styles: Array<keyof typeof colors>): string;
|
|
46
|
+
/**
|
|
47
|
+
* Strip ANSI codes from text
|
|
48
|
+
*/
|
|
49
|
+
export declare function stripAnsi(text: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Get visual length of text (accounting for ANSI codes)
|
|
52
|
+
*/
|
|
53
|
+
export declare function visualLength(text: string): number;
|
|
54
|
+
/**
|
|
55
|
+
* Pad text to specified width
|
|
56
|
+
*/
|
|
57
|
+
export declare function pad(text: string, width: number, align?: 'left' | 'center' | 'right'): string;
|
|
58
|
+
/**
|
|
59
|
+
* Truncate text to specified width with ellipsis
|
|
60
|
+
*/
|
|
61
|
+
export declare function truncate(text: string, width: number, ellipsis?: string): string;
|
|
62
|
+
/**
|
|
63
|
+
* Wrap text to specified width
|
|
64
|
+
*/
|
|
65
|
+
export declare function wordWrap(text: string, width: number): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Create a horizontal line
|
|
68
|
+
*/
|
|
69
|
+
export declare function horizontalLine(width: number, char?: string, color?: keyof typeof colors): string;
|
|
70
|
+
/**
|
|
71
|
+
* Create a box around text
|
|
72
|
+
*/
|
|
73
|
+
export declare function box(text: string, options?: {
|
|
74
|
+
width?: number;
|
|
75
|
+
padding?: number;
|
|
76
|
+
title?: string;
|
|
77
|
+
borderColor?: keyof typeof colors;
|
|
78
|
+
}): string;
|
|
79
|
+
/**
|
|
80
|
+
* Indent text
|
|
81
|
+
*/
|
|
82
|
+
export declare function indent(text: string, spaces: number): string;
|
|
83
|
+
/**
|
|
84
|
+
* Create a progress bar
|
|
85
|
+
*/
|
|
86
|
+
export declare function progressBar(current: number, total: number, width?: number, options?: {
|
|
87
|
+
showPercent?: boolean;
|
|
88
|
+
completeChar?: string;
|
|
89
|
+
incompleteChar?: string;
|
|
90
|
+
color?: keyof typeof colors;
|
|
91
|
+
}): string;
|
|
92
|
+
/**
|
|
93
|
+
* Format bytes to human readable
|
|
94
|
+
*/
|
|
95
|
+
export declare function formatBytes(bytes: number, decimals?: number): string;
|
|
96
|
+
/**
|
|
97
|
+
* Format duration to human readable
|
|
98
|
+
*/
|
|
99
|
+
export declare function formatDuration(ms: number): string;
|
|
100
|
+
//# sourceMappingURL=formatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwClB,CAAC;AAEF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,GACjC,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAgB,GAC1C,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAc,GACvB,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwB9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAY,EAClB,KAAK,CAAC,EAAE,MAAM,OAAO,MAAM,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;CAC9B,GACL,MAAM,CA+BR;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,EAClB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;CACxB,GACL,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAQvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD"}
|