@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 @@
|
|
|
1
|
+
{"version":3,"file":"table-formatter-inline.js","sourceRoot":"","sources":["../../src/utils/table-formatter-inline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface TableColumn {
|
|
2
|
+
header: string;
|
|
3
|
+
width?: number;
|
|
4
|
+
align?: 'left' | 'center' | 'right';
|
|
5
|
+
}
|
|
6
|
+
export interface TableRow {
|
|
7
|
+
[key: string]: string | number | boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface TableOptions {
|
|
10
|
+
maxWidth?: number;
|
|
11
|
+
borderStyle?: 'single' | 'double' | 'rounded' | 'none';
|
|
12
|
+
headerColor?: string;
|
|
13
|
+
borderColor?: string;
|
|
14
|
+
padding?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse markdown table to structured data
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseMarkdownTable(markdown: string): {
|
|
20
|
+
columns: TableColumn[];
|
|
21
|
+
rows: TableRow[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Calculate column widths based on content
|
|
25
|
+
*/
|
|
26
|
+
export declare function calculateColumnWidths(columns: TableColumn[], rows: TableRow[], maxWidth?: number): number[];
|
|
27
|
+
/**
|
|
28
|
+
* Render table with blessed-style borders
|
|
29
|
+
*/
|
|
30
|
+
export declare function renderTable(columns: TableColumn[], rows: TableRow[], options?: TableOptions): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format table from markdown string
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatMarkdownTable(markdown: string, options?: TableOptions): string;
|
|
35
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/utils/table.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACpD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB,CAkDA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,EAAE,QAAQ,EAAE,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CA4BV;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,EAAE,QAAQ,EAAE,EAChB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAgDR;AAoFD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAGR"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseMarkdownTable = parseMarkdownTable;
|
|
4
|
+
exports.calculateColumnWidths = calculateColumnWidths;
|
|
5
|
+
exports.renderTable = renderTable;
|
|
6
|
+
exports.formatMarkdownTable = formatMarkdownTable;
|
|
7
|
+
const formatting_1 = require("./formatting");
|
|
8
|
+
/**
|
|
9
|
+
* Parse markdown table to structured data
|
|
10
|
+
*/
|
|
11
|
+
function parseMarkdownTable(markdown) {
|
|
12
|
+
const lines = markdown.trim().split('\n').filter(l => l.trim());
|
|
13
|
+
if (lines.length < 2) {
|
|
14
|
+
return { columns: [], rows: [] };
|
|
15
|
+
}
|
|
16
|
+
// Parse header
|
|
17
|
+
const headerLine = lines[0];
|
|
18
|
+
const headers = headerLine
|
|
19
|
+
.split('|')
|
|
20
|
+
.map(h => h.trim())
|
|
21
|
+
.filter(h => h.length > 0);
|
|
22
|
+
// Parse alignment from separator line
|
|
23
|
+
const separatorLine = lines[1];
|
|
24
|
+
const alignments = separatorLine
|
|
25
|
+
.split('|')
|
|
26
|
+
.map(s => s.trim())
|
|
27
|
+
.filter(s => s.length > 0)
|
|
28
|
+
.map(s => {
|
|
29
|
+
if (s.startsWith(':') && s.endsWith(':'))
|
|
30
|
+
return 'center';
|
|
31
|
+
if (s.endsWith(':'))
|
|
32
|
+
return 'right';
|
|
33
|
+
return 'left';
|
|
34
|
+
});
|
|
35
|
+
const columns = headers.map((header, i) => ({
|
|
36
|
+
header,
|
|
37
|
+
align: alignments[i] || 'left',
|
|
38
|
+
}));
|
|
39
|
+
// Parse rows
|
|
40
|
+
const rows = [];
|
|
41
|
+
for (let i = 2; i < lines.length; i++) {
|
|
42
|
+
const cells = lines[i]
|
|
43
|
+
.split('|')
|
|
44
|
+
.map(c => c.trim())
|
|
45
|
+
.filter(c => c.length > 0);
|
|
46
|
+
if (cells.length === 0)
|
|
47
|
+
continue;
|
|
48
|
+
const row = {};
|
|
49
|
+
headers.forEach((header, j) => {
|
|
50
|
+
row[header] = cells[j] || '';
|
|
51
|
+
});
|
|
52
|
+
rows.push(row);
|
|
53
|
+
}
|
|
54
|
+
return { columns, rows };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Calculate column widths based on content
|
|
58
|
+
*/
|
|
59
|
+
function calculateColumnWidths(columns, rows, maxWidth) {
|
|
60
|
+
const widths = columns.map(col => {
|
|
61
|
+
// Start with header width
|
|
62
|
+
let width = (0, formatting_1.visualLength)(col.header);
|
|
63
|
+
// Check all row values
|
|
64
|
+
for (const row of rows) {
|
|
65
|
+
const value = String(row[col.header] || '');
|
|
66
|
+
width = Math.max(width, (0, formatting_1.visualLength)(value));
|
|
67
|
+
}
|
|
68
|
+
return width;
|
|
69
|
+
});
|
|
70
|
+
// Adjust if maxWidth is specified
|
|
71
|
+
if (maxWidth) {
|
|
72
|
+
const totalWidth = widths.reduce((sum, w) => sum + w, 0);
|
|
73
|
+
const borderWidth = (columns.length + 1) * 3; // For borders and padding
|
|
74
|
+
const availableWidth = maxWidth - borderWidth;
|
|
75
|
+
if (totalWidth > availableWidth) {
|
|
76
|
+
// Scale down proportionally
|
|
77
|
+
const scale = availableWidth / totalWidth;
|
|
78
|
+
return widths.map(w => Math.max(5, Math.floor(w * scale)));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return widths;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Render table with blessed-style borders
|
|
85
|
+
*/
|
|
86
|
+
function renderTable(columns, rows, options = {}) {
|
|
87
|
+
const { maxWidth, borderStyle = 'single', padding = 1, } = options;
|
|
88
|
+
if (columns.length === 0) {
|
|
89
|
+
return '';
|
|
90
|
+
}
|
|
91
|
+
const borders = getBorderChars(borderStyle);
|
|
92
|
+
const widths = calculateColumnWidths(columns, rows, maxWidth);
|
|
93
|
+
const lines = [];
|
|
94
|
+
// Top border
|
|
95
|
+
lines.push(createBorderLine(widths, borders.topLeft, borders.topMid, borders.topRight, borders.horizontal));
|
|
96
|
+
// Header row
|
|
97
|
+
const headerCells = columns.map((col, i) => {
|
|
98
|
+
return (0, formatting_1.pad)(col.header, widths[i], col.align);
|
|
99
|
+
});
|
|
100
|
+
lines.push(borders.vertical +
|
|
101
|
+
headerCells.map(cell => ' '.repeat(padding) + cell + ' '.repeat(padding)).join(borders.vertical) +
|
|
102
|
+
borders.vertical);
|
|
103
|
+
// Header separator
|
|
104
|
+
lines.push(createBorderLine(widths, borders.leftMid, borders.midMid, borders.rightMid, borders.horizontal));
|
|
105
|
+
// Data rows
|
|
106
|
+
for (const row of rows) {
|
|
107
|
+
const rowCells = columns.map((col, i) => {
|
|
108
|
+
const value = String(row[col.header] || '');
|
|
109
|
+
return (0, formatting_1.pad)(value, widths[i], col.align);
|
|
110
|
+
});
|
|
111
|
+
lines.push(borders.vertical +
|
|
112
|
+
rowCells.map(cell => ' '.repeat(padding) + cell + ' '.repeat(padding)).join(borders.vertical) +
|
|
113
|
+
borders.vertical);
|
|
114
|
+
}
|
|
115
|
+
// Bottom border
|
|
116
|
+
lines.push(createBorderLine(widths, borders.bottomLeft, borders.bottomMid, borders.bottomRight, borders.horizontal));
|
|
117
|
+
return lines.join('\n');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a border line
|
|
121
|
+
*/
|
|
122
|
+
function createBorderLine(widths, left, mid, right, horizontal) {
|
|
123
|
+
const segments = widths.map(width => horizontal.repeat(width + 2)); // +2 for padding
|
|
124
|
+
return left + segments.join(mid) + right;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get border characters for different styles
|
|
128
|
+
*/
|
|
129
|
+
function getBorderChars(style) {
|
|
130
|
+
switch (style) {
|
|
131
|
+
case 'double':
|
|
132
|
+
return {
|
|
133
|
+
topLeft: '╔',
|
|
134
|
+
topMid: '╦',
|
|
135
|
+
topRight: '╗',
|
|
136
|
+
bottomLeft: '╚',
|
|
137
|
+
bottomMid: '╩',
|
|
138
|
+
bottomRight: '╝',
|
|
139
|
+
leftMid: '╠',
|
|
140
|
+
midMid: '╬',
|
|
141
|
+
rightMid: '╣',
|
|
142
|
+
horizontal: '═',
|
|
143
|
+
vertical: '║',
|
|
144
|
+
};
|
|
145
|
+
case 'rounded':
|
|
146
|
+
return {
|
|
147
|
+
topLeft: '╭',
|
|
148
|
+
topMid: '┬',
|
|
149
|
+
topRight: '╮',
|
|
150
|
+
bottomLeft: '╰',
|
|
151
|
+
bottomMid: '┴',
|
|
152
|
+
bottomRight: '╯',
|
|
153
|
+
leftMid: '├',
|
|
154
|
+
midMid: '┼',
|
|
155
|
+
rightMid: '┤',
|
|
156
|
+
horizontal: '─',
|
|
157
|
+
vertical: '│',
|
|
158
|
+
};
|
|
159
|
+
case 'none':
|
|
160
|
+
return {
|
|
161
|
+
topLeft: ' ',
|
|
162
|
+
topMid: ' ',
|
|
163
|
+
topRight: ' ',
|
|
164
|
+
bottomLeft: ' ',
|
|
165
|
+
bottomMid: ' ',
|
|
166
|
+
bottomRight: ' ',
|
|
167
|
+
leftMid: ' ',
|
|
168
|
+
midMid: ' ',
|
|
169
|
+
rightMid: ' ',
|
|
170
|
+
horizontal: ' ',
|
|
171
|
+
vertical: ' ',
|
|
172
|
+
};
|
|
173
|
+
case 'single':
|
|
174
|
+
default:
|
|
175
|
+
return {
|
|
176
|
+
topLeft: '┌',
|
|
177
|
+
topMid: '┬',
|
|
178
|
+
topRight: '┐',
|
|
179
|
+
bottomLeft: '└',
|
|
180
|
+
bottomMid: '┴',
|
|
181
|
+
bottomRight: '┘',
|
|
182
|
+
leftMid: '├',
|
|
183
|
+
midMid: '┼',
|
|
184
|
+
rightMid: '┤',
|
|
185
|
+
horizontal: '─',
|
|
186
|
+
vertical: '│',
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Format table from markdown string
|
|
192
|
+
*/
|
|
193
|
+
function formatMarkdownTable(markdown, options = {}) {
|
|
194
|
+
const { columns, rows } = parseMarkdownTable(markdown);
|
|
195
|
+
return renderTable(columns, rows, options);
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/utils/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream Progress Indicator
|
|
3
|
+
* Lightweight visual feedback for streaming
|
|
4
|
+
*/
|
|
5
|
+
export interface IndicatorOptions {
|
|
6
|
+
prefix?: string;
|
|
7
|
+
showBar?: boolean;
|
|
8
|
+
barWidth?: number;
|
|
9
|
+
showStats?: boolean;
|
|
10
|
+
hideOnComplete?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Animated progress indicator for terminal
|
|
14
|
+
*/
|
|
15
|
+
export declare class StreamIndicator {
|
|
16
|
+
private spinnerFrames;
|
|
17
|
+
private currentFrame;
|
|
18
|
+
private visible;
|
|
19
|
+
private options;
|
|
20
|
+
private lastOutput;
|
|
21
|
+
constructor(options?: IndicatorOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Show indicator with initial status
|
|
24
|
+
*/
|
|
25
|
+
show(status?: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Update indicator
|
|
28
|
+
*/
|
|
29
|
+
update(status: string, options?: {
|
|
30
|
+
progress?: number;
|
|
31
|
+
total?: number;
|
|
32
|
+
stats?: string;
|
|
33
|
+
}): void;
|
|
34
|
+
/**
|
|
35
|
+
* Show completion state
|
|
36
|
+
*/
|
|
37
|
+
complete(message?: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Show error state
|
|
40
|
+
*/
|
|
41
|
+
error(message: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Hide indicator
|
|
44
|
+
*/
|
|
45
|
+
hide(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Build output string
|
|
48
|
+
*/
|
|
49
|
+
private buildOutput;
|
|
50
|
+
/**
|
|
51
|
+
* Render output to stdout
|
|
52
|
+
*/
|
|
53
|
+
private render;
|
|
54
|
+
/**
|
|
55
|
+
* Clear line
|
|
56
|
+
*/
|
|
57
|
+
private clear;
|
|
58
|
+
/**
|
|
59
|
+
* Log message without clearing indicator
|
|
60
|
+
*/
|
|
61
|
+
log(message: string): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Multi-line indicator for complex progress
|
|
65
|
+
*/
|
|
66
|
+
export declare class DetailedIndicator {
|
|
67
|
+
private spinner;
|
|
68
|
+
private currentFrame;
|
|
69
|
+
private visible;
|
|
70
|
+
private lines;
|
|
71
|
+
private cursorRow;
|
|
72
|
+
show(title: string, initialLines?: string[]): void;
|
|
73
|
+
updateLine(index: number, content: string): void;
|
|
74
|
+
addLine(content: string): number;
|
|
75
|
+
private render;
|
|
76
|
+
complete(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Simple progress bar
|
|
80
|
+
*/
|
|
81
|
+
export declare class ProgressBar {
|
|
82
|
+
private width;
|
|
83
|
+
private lastPct;
|
|
84
|
+
constructor(width?: number);
|
|
85
|
+
/**
|
|
86
|
+
* Update and display progress bar
|
|
87
|
+
*/
|
|
88
|
+
show(current: number, total: number, label?: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* Complete
|
|
91
|
+
*/
|
|
92
|
+
complete(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Clear
|
|
95
|
+
*/
|
|
96
|
+
clear(): void;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Convenience functions
|
|
100
|
+
*/
|
|
101
|
+
export declare function createQuickIndicator(): StreamIndicator;
|
|
102
|
+
export declare function createQuickProgressBar(): ProgressBar;
|
|
103
|
+
/**
|
|
104
|
+
* Status line updater for multiple concurrent operations
|
|
105
|
+
*/
|
|
106
|
+
export declare class StatusLine {
|
|
107
|
+
private status;
|
|
108
|
+
private interval;
|
|
109
|
+
/**
|
|
110
|
+
* Set and display status
|
|
111
|
+
*/
|
|
112
|
+
set(status: string): void;
|
|
113
|
+
/**
|
|
114
|
+
* Start auto-update (useful for animations)
|
|
115
|
+
*/
|
|
116
|
+
startAnimation(frames: string[], intervalMs?: number): void;
|
|
117
|
+
/**
|
|
118
|
+
* Stop auto-update
|
|
119
|
+
*/
|
|
120
|
+
stopAnimation(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Update display
|
|
123
|
+
*/
|
|
124
|
+
private update;
|
|
125
|
+
/**
|
|
126
|
+
* Clear status
|
|
127
|
+
*/
|
|
128
|
+
private clear;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=stream-indicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-indicator.d.ts","sourceRoot":"","sources":["../../src/widgets/stream-indicator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAM;gBAEZ,OAAO,CAAC,EAAE,gBAAgB;IAUtC;;OAEG;IACH,IAAI,CAAC,MAAM,GAAE,MAAwB,GAAG,IAAI;IAM5C;;OAEG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9D,IAAI;IASP;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAUhC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,OAAO,CAAC,WAAW;IA8BnB;;OAEG;IACH,OAAO,CAAC,MAAM;IAQd;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAS3B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAsD;IACrE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAK;IAEtB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAQlD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUhD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMhC,OAAO,CAAC,MAAM;IAed,QAAQ,IAAI,IAAI;CAIjB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAc;gBAEjB,KAAK,GAAE,MAAW;IAI9B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAkB1D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AAEH,wBAAgB,oBAAoB,IAAI,eAAe,CAMtD;AAED,wBAAgB,sBAAsB,IAAI,WAAW,CAEpD;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAA+B;IAE/C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,GAAE,MAAY,GAAG,IAAI;IAShE;;OAEG;IACH,aAAa,IAAI,IAAI;IAQrB;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Stream Progress Indicator
|
|
4
|
+
* Lightweight visual feedback for streaming
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StatusLine = exports.ProgressBar = exports.DetailedIndicator = exports.StreamIndicator = void 0;
|
|
8
|
+
exports.createQuickIndicator = createQuickIndicator;
|
|
9
|
+
exports.createQuickProgressBar = createQuickProgressBar;
|
|
10
|
+
/**
|
|
11
|
+
* Animated progress indicator for terminal
|
|
12
|
+
*/
|
|
13
|
+
class StreamIndicator {
|
|
14
|
+
spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
15
|
+
currentFrame = 0;
|
|
16
|
+
visible = false;
|
|
17
|
+
options;
|
|
18
|
+
lastOutput = '';
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.options = {
|
|
21
|
+
prefix: options?.prefix || '▸',
|
|
22
|
+
showBar: options?.showBar ?? true,
|
|
23
|
+
barWidth: options?.barWidth ?? 20,
|
|
24
|
+
showStats: options?.showStats ?? true,
|
|
25
|
+
hideOnComplete: options?.hideOnComplete ?? true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Show indicator with initial status
|
|
30
|
+
*/
|
|
31
|
+
show(status = 'Processing...') {
|
|
32
|
+
this.visible = true;
|
|
33
|
+
this.currentFrame = 0;
|
|
34
|
+
this.render(status);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Update indicator
|
|
38
|
+
*/
|
|
39
|
+
update(status, options) {
|
|
40
|
+
if (!this.visible)
|
|
41
|
+
return;
|
|
42
|
+
this.currentFrame = (this.currentFrame + 1) % this.spinnerFrames.length;
|
|
43
|
+
const output = this.buildOutput(status, options);
|
|
44
|
+
this.render(output);
|
|
45
|
+
this.lastOutput = output;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Show completion state
|
|
49
|
+
*/
|
|
50
|
+
complete(message) {
|
|
51
|
+
this.visible = false;
|
|
52
|
+
if (this.options.hideOnComplete) {
|
|
53
|
+
this.clear();
|
|
54
|
+
}
|
|
55
|
+
else if (message) {
|
|
56
|
+
console.log(`\n✓ ${message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Show error state
|
|
61
|
+
*/
|
|
62
|
+
error(message) {
|
|
63
|
+
this.visible = false;
|
|
64
|
+
this.clear();
|
|
65
|
+
console.error(`\n✗ Error: ${message}`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hide indicator
|
|
69
|
+
*/
|
|
70
|
+
hide() {
|
|
71
|
+
this.visible = false;
|
|
72
|
+
this.clear();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build output string
|
|
76
|
+
*/
|
|
77
|
+
buildOutput(status, options) {
|
|
78
|
+
const spinner = this.spinnerFrames[this.currentFrame];
|
|
79
|
+
const parts = [];
|
|
80
|
+
// Spinner and status
|
|
81
|
+
parts.push(`${spinner} ${status}`);
|
|
82
|
+
// Progress bar
|
|
83
|
+
if (this.options.showBar && options?.progress !== undefined && options?.total !== undefined) {
|
|
84
|
+
const pct = Math.min(1, options.progress / options.total);
|
|
85
|
+
const filled = Math.round(pct * this.options.barWidth);
|
|
86
|
+
const empty = this.options.barWidth - filled;
|
|
87
|
+
const bar = '█'.repeat(filled) + '░'.repeat(empty);
|
|
88
|
+
const pctStr = `${Math.round(pct * 100)}%`;
|
|
89
|
+
parts.push(`[${bar}] ${pctStr}`);
|
|
90
|
+
}
|
|
91
|
+
// Stats
|
|
92
|
+
if (this.options.showStats && options?.stats) {
|
|
93
|
+
parts.push(options.stats);
|
|
94
|
+
}
|
|
95
|
+
return parts.join(' • ');
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Render output to stdout
|
|
99
|
+
*/
|
|
100
|
+
render(output) {
|
|
101
|
+
// Calculate the length of the last output to clear it properly
|
|
102
|
+
const clearLength = Math.max(this.lastOutput.length, output.length);
|
|
103
|
+
// Carriage return + clear to end of line + new output
|
|
104
|
+
process.stdout.write(`\r\x1b[K${output}`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clear line
|
|
108
|
+
*/
|
|
109
|
+
clear() {
|
|
110
|
+
process.stdout.write('\r\x1b[K');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Log message without clearing indicator
|
|
114
|
+
*/
|
|
115
|
+
log(message) {
|
|
116
|
+
if (this.visible) {
|
|
117
|
+
// Re-render indicator after logging
|
|
118
|
+
process.stdout.write('\n' + message + '\n');
|
|
119
|
+
this.render(this.lastOutput);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(message);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.StreamIndicator = StreamIndicator;
|
|
127
|
+
/**
|
|
128
|
+
* Multi-line indicator for complex progress
|
|
129
|
+
*/
|
|
130
|
+
class DetailedIndicator {
|
|
131
|
+
spinner = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
132
|
+
currentFrame = 0;
|
|
133
|
+
visible = false;
|
|
134
|
+
lines = [];
|
|
135
|
+
cursorRow = 0;
|
|
136
|
+
show(title, initialLines) {
|
|
137
|
+
this.visible = true;
|
|
138
|
+
this.currentFrame = 0;
|
|
139
|
+
this.lines = [title, ...(initialLines || [])];
|
|
140
|
+
this.cursorRow = this.lines.length - 1;
|
|
141
|
+
this.render();
|
|
142
|
+
}
|
|
143
|
+
updateLine(index, content) {
|
|
144
|
+
if (index >= this.lines.length) {
|
|
145
|
+
this.lines.push(content);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.lines[index] = content;
|
|
149
|
+
}
|
|
150
|
+
this.currentFrame = (this.currentFrame + 1) % this.spinner.length;
|
|
151
|
+
this.render();
|
|
152
|
+
}
|
|
153
|
+
addLine(content) {
|
|
154
|
+
this.lines.push(content);
|
|
155
|
+
this.render();
|
|
156
|
+
return this.lines.length - 1;
|
|
157
|
+
}
|
|
158
|
+
render() {
|
|
159
|
+
console.clear();
|
|
160
|
+
for (let i = 0; i < this.lines.length; i++) {
|
|
161
|
+
let line = this.lines[i];
|
|
162
|
+
// Add spinner to first line
|
|
163
|
+
if (i === 0) {
|
|
164
|
+
line = `${this.spinner[this.currentFrame]} ${line}`;
|
|
165
|
+
}
|
|
166
|
+
console.log(line);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
complete() {
|
|
170
|
+
this.visible = false;
|
|
171
|
+
console.log('\n✓ Complete');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.DetailedIndicator = DetailedIndicator;
|
|
175
|
+
/**
|
|
176
|
+
* Simple progress bar
|
|
177
|
+
*/
|
|
178
|
+
class ProgressBar {
|
|
179
|
+
width;
|
|
180
|
+
lastPct = -1;
|
|
181
|
+
constructor(width = 30) {
|
|
182
|
+
this.width = width;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Update and display progress bar
|
|
186
|
+
*/
|
|
187
|
+
show(current, total, label) {
|
|
188
|
+
const pct = Math.min(1, current / total);
|
|
189
|
+
const pctInt = Math.round(pct * 100);
|
|
190
|
+
// Only update if percentage changed (reduce flicker)
|
|
191
|
+
if (pctInt === this.lastPct)
|
|
192
|
+
return;
|
|
193
|
+
this.lastPct = pctInt;
|
|
194
|
+
const filled = Math.round(pct * this.width);
|
|
195
|
+
const empty = this.width - filled;
|
|
196
|
+
const bar = '█'.repeat(filled) + '░'.repeat(empty);
|
|
197
|
+
const display = label ? `${label} ` : '';
|
|
198
|
+
process.stdout.write(`\r${display}[${bar}] ${pctInt}%`);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Complete
|
|
202
|
+
*/
|
|
203
|
+
complete() {
|
|
204
|
+
process.stdout.write('\n');
|
|
205
|
+
this.lastPct = -1;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Clear
|
|
209
|
+
*/
|
|
210
|
+
clear() {
|
|
211
|
+
process.stdout.write('\r\x1b[K');
|
|
212
|
+
this.lastPct = -1;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.ProgressBar = ProgressBar;
|
|
216
|
+
/**
|
|
217
|
+
* Convenience functions
|
|
218
|
+
*/
|
|
219
|
+
function createQuickIndicator() {
|
|
220
|
+
return new StreamIndicator({
|
|
221
|
+
prefix: '▸',
|
|
222
|
+
showBar: true,
|
|
223
|
+
showStats: true,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
function createQuickProgressBar() {
|
|
227
|
+
return new ProgressBar(25);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Status line updater for multiple concurrent operations
|
|
231
|
+
*/
|
|
232
|
+
class StatusLine {
|
|
233
|
+
status = '';
|
|
234
|
+
interval = null;
|
|
235
|
+
/**
|
|
236
|
+
* Set and display status
|
|
237
|
+
*/
|
|
238
|
+
set(status) {
|
|
239
|
+
this.status = status;
|
|
240
|
+
this.update();
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Start auto-update (useful for animations)
|
|
244
|
+
*/
|
|
245
|
+
startAnimation(frames, intervalMs = 100) {
|
|
246
|
+
let currentFrame = 0;
|
|
247
|
+
this.interval = setInterval(() => {
|
|
248
|
+
this.set(frames[currentFrame % frames.length]);
|
|
249
|
+
currentFrame++;
|
|
250
|
+
}, intervalMs);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Stop auto-update
|
|
254
|
+
*/
|
|
255
|
+
stopAnimation() {
|
|
256
|
+
if (this.interval) {
|
|
257
|
+
clearInterval(this.interval);
|
|
258
|
+
this.interval = null;
|
|
259
|
+
}
|
|
260
|
+
this.clear();
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Update display
|
|
264
|
+
*/
|
|
265
|
+
update() {
|
|
266
|
+
process.stdout.write(`\r\x1b[K${this.status}`);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Clear status
|
|
270
|
+
*/
|
|
271
|
+
clear() {
|
|
272
|
+
process.stdout.write('\r\x1b[K');
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
exports.StatusLine = StatusLine;
|
|
276
|
+
//# sourceMappingURL=stream-indicator.js.map
|