@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,440 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Blessed tags syntax highlighting for terminal output
|
|
4
|
+
* Uses blessed tag syntax for highlighting paths, keywords, and other elements
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.blessedSyntaxColors = void 0;
|
|
8
|
+
exports.highlightPathsBlessed = highlightPathsBlessed;
|
|
9
|
+
exports.highlightFileRefsBlessed = highlightFileRefsBlessed;
|
|
10
|
+
exports.highlightLinksBlessed = highlightLinksBlessed;
|
|
11
|
+
exports.highlightKeywordsBlessed = highlightKeywordsBlessed;
|
|
12
|
+
exports.highlightCliFlagsBlessed = highlightCliFlagsBlessed;
|
|
13
|
+
exports.highlightTitlesBlessed = highlightTitlesBlessed;
|
|
14
|
+
exports.highlightJsonBlessed = highlightJsonBlessed;
|
|
15
|
+
exports.highlightStringsBlessed = highlightStringsBlessed;
|
|
16
|
+
exports.highlightNumbersBlessed = highlightNumbersBlessed;
|
|
17
|
+
exports.highlightCommentsBlessed = highlightCommentsBlessed;
|
|
18
|
+
exports.highlightShellCommandsBlessed = highlightShellCommandsBlessed;
|
|
19
|
+
exports.highlightLogLevelsBlessed = highlightLogLevelsBlessed;
|
|
20
|
+
exports.highlightHttpBlessed = highlightHttpBlessed;
|
|
21
|
+
exports.highlightEnvVarsBlessed = highlightEnvVarsBlessed;
|
|
22
|
+
exports.highlightIPsBlessed = highlightIPsBlessed;
|
|
23
|
+
exports.highlightGitShasBlessed = highlightGitShasBlessed;
|
|
24
|
+
exports.highlightCodeFramesBlessed = highlightCodeFramesBlessed;
|
|
25
|
+
exports.highlightDiffsBlessed = highlightDiffsBlessed;
|
|
26
|
+
exports.highlightPackagesBlessed = highlightPackagesBlessed;
|
|
27
|
+
exports.highlightCodeBlocksBlessed = highlightCodeBlocksBlessed;
|
|
28
|
+
exports.applySyntaxHighlightBlessed = applySyntaxHighlightBlessed;
|
|
29
|
+
exports.applyLightSyntaxHighlightBlessed = applyLightSyntaxHighlightBlessed;
|
|
30
|
+
exports.colorizeBlockBlessed = colorizeBlockBlessed;
|
|
31
|
+
/**
|
|
32
|
+
* Blessed color tags for syntax highlighting
|
|
33
|
+
*/
|
|
34
|
+
exports.blessedSyntaxColors = {
|
|
35
|
+
path: 'cyan-fg',
|
|
36
|
+
lineNumber: 'yellow-fg',
|
|
37
|
+
keyword: 'magenta-fg',
|
|
38
|
+
string: 'green-fg',
|
|
39
|
+
number: 'yellow-fg',
|
|
40
|
+
comment: 'gray-fg',
|
|
41
|
+
title: 'bright-cyan-fg',
|
|
42
|
+
error: 'red-fg',
|
|
43
|
+
success: 'green-fg',
|
|
44
|
+
warning: 'yellow-fg',
|
|
45
|
+
darkGray: 'gray-fg',
|
|
46
|
+
// Extended palette
|
|
47
|
+
link: 'blue-fg',
|
|
48
|
+
info: 'bright-blue-fg',
|
|
49
|
+
debug: 'gray-fg',
|
|
50
|
+
httpMethod: 'bright-magenta-fg',
|
|
51
|
+
diffAdd: 'green-fg',
|
|
52
|
+
diffRemove: 'red-fg',
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Common programming keywords to highlight
|
|
56
|
+
*/
|
|
57
|
+
const KEYWORDS = [
|
|
58
|
+
'async', 'await', 'function', 'const', 'let', 'var', 'class', 'interface',
|
|
59
|
+
'type', 'import', 'export', 'from', 'return', 'if', 'else', 'for', 'while',
|
|
60
|
+
'try', 'catch', 'throw', 'new', 'this', 'super', 'extends', 'implements',
|
|
61
|
+
'public', 'private', 'protected', 'static', 'readonly', 'enum', 'namespace',
|
|
62
|
+
];
|
|
63
|
+
/**
|
|
64
|
+
* Shell/bash commands to highlight
|
|
65
|
+
*/
|
|
66
|
+
const SHELL_COMMANDS = [
|
|
67
|
+
'git', 'npm', 'yarn', 'pnpm', 'docker', 'cd', 'ls', 'mkdir', 'rm', 'cp', 'mv',
|
|
68
|
+
'cat', 'grep', 'find', 'sed', 'awk', 'chmod', 'chown', 'sudo', 'apt', 'brew',
|
|
69
|
+
'curl', 'wget', 'tar', 'zip', 'unzip', 'ssh', 'scp', 'rsync', 'ps', 'kill',
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* Highlight file paths in text using blessed tags
|
|
73
|
+
* Matches: /path/to/file.ts, ./relative/path.js, ~/home/path
|
|
74
|
+
*/
|
|
75
|
+
function highlightPathsBlessed(text) {
|
|
76
|
+
// Avoid matching inside blessed tags
|
|
77
|
+
const pathRegex = /(?:^|[^{])((?:\/|\.\/|\.\.\/|~\/)[^\s:{]+)/g;
|
|
78
|
+
return text.replace(pathRegex, (match, path) => {
|
|
79
|
+
// Don't highlight if we're inside a blessed tag
|
|
80
|
+
if (match.startsWith('{'))
|
|
81
|
+
return match;
|
|
82
|
+
return match.replace(path, `{${exports.blessedSyntaxColors.path}}${path}{/${exports.blessedSyntaxColors.path}}`);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Highlight file references with line numbers using blessed tags
|
|
87
|
+
* Matches: file.ts:123, /path/to/file.js:45:10
|
|
88
|
+
*/
|
|
89
|
+
function highlightFileRefsBlessed(text) {
|
|
90
|
+
// Avoid matching inside blessed tags
|
|
91
|
+
const fileRefRegex = /(?<!{[\w-]+})((?:\/|\.\/|\.\.\/)?[^\s:{]+\.\w+)(:\d+(?::\d+)?)/g;
|
|
92
|
+
return text.replace(fileRefRegex, (match, file, location) => {
|
|
93
|
+
return `{${exports.blessedSyntaxColors.path}}${file}{/${exports.blessedSyntaxColors.path}}{${exports.blessedSyntaxColors.lineNumber}}${location}{/${exports.blessedSyntaxColors.lineNumber}}`;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Highlight URLs and email addresses using blessed tags
|
|
98
|
+
*/
|
|
99
|
+
function highlightLinksBlessed(text) {
|
|
100
|
+
let highlighted = text;
|
|
101
|
+
// URLs (http, https, ftp, and www.)
|
|
102
|
+
const urlRegex = /(https?:\/\/[^\s)]+|ftp:\/\/[^\s)]+|www\.[^\s)]+)/g;
|
|
103
|
+
highlighted = highlighted.replace(urlRegex, (m) => {
|
|
104
|
+
return `{${exports.blessedSyntaxColors.link}}{underline}${m}{/underline}{/${exports.blessedSyntaxColors.link}}`;
|
|
105
|
+
});
|
|
106
|
+
// Email addresses
|
|
107
|
+
const emailRegex = /\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b/g;
|
|
108
|
+
highlighted = highlighted.replace(emailRegex, (m) => {
|
|
109
|
+
return `{${exports.blessedSyntaxColors.link}}{underline}${m}{/underline}{/${exports.blessedSyntaxColors.link}}`;
|
|
110
|
+
});
|
|
111
|
+
return highlighted;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Highlight programming keywords using blessed tags
|
|
115
|
+
*/
|
|
116
|
+
function highlightKeywordsBlessed(text) {
|
|
117
|
+
let highlighted = text;
|
|
118
|
+
for (const keyword of KEYWORDS) {
|
|
119
|
+
const regex = new RegExp(`\\b(${keyword})\\b`, 'g');
|
|
120
|
+
highlighted = highlighted.replace(regex, `{${exports.blessedSyntaxColors.keyword}}$1{/${exports.blessedSyntaxColors.keyword}}`);
|
|
121
|
+
}
|
|
122
|
+
return highlighted;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Highlight CLI flags like --option and -o
|
|
126
|
+
*/
|
|
127
|
+
function highlightCliFlagsBlessed(text) {
|
|
128
|
+
let highlighted = text;
|
|
129
|
+
// Long flags --flag, --flag=value
|
|
130
|
+
highlighted = highlighted.replace(/\B--[A-Za-z0-9][\w-]*(?:=[^\s]+)?/g, (m) => {
|
|
131
|
+
return `{${exports.blessedSyntaxColors.lineNumber}}${m}{/${exports.blessedSyntaxColors.lineNumber}}`;
|
|
132
|
+
});
|
|
133
|
+
// Short flags -f or combined -abc
|
|
134
|
+
highlighted = highlighted.replace(/\B-[A-Za-z]+\b/g, (m) => {
|
|
135
|
+
return `{${exports.blessedSyntaxColors.lineNumber}}${m}{/${exports.blessedSyntaxColors.lineNumber}}`;
|
|
136
|
+
});
|
|
137
|
+
return highlighted;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Highlight markdown-style titles using blessed tags
|
|
141
|
+
* Matches: # Title, ## Subtitle, etc.
|
|
142
|
+
*/
|
|
143
|
+
function highlightTitlesBlessed(text) {
|
|
144
|
+
const titleRegex = /^(#{1,6})\s+(.+)$/gm;
|
|
145
|
+
return text.replace(titleRegex, (match, hashes, title) => {
|
|
146
|
+
return `{${exports.blessedSyntaxColors.title}}${hashes} ${title}{/${exports.blessedSyntaxColors.title}}`;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Highlight JSON keys and literals (true/false/null)
|
|
151
|
+
*/
|
|
152
|
+
function highlightJsonBlessed(text) {
|
|
153
|
+
let highlighted = text;
|
|
154
|
+
// JSON keys: "key": value
|
|
155
|
+
highlighted = highlighted.replace(/("[A-Za-z_][\w-]*")\s*:/g, (_m, key) => {
|
|
156
|
+
return `{${exports.blessedSyntaxColors.keyword}}${key}{/${exports.blessedSyntaxColors.keyword}}:`;
|
|
157
|
+
});
|
|
158
|
+
// true / false / null (naive, may catch outside JSON)
|
|
159
|
+
highlighted = highlighted.replace(/\b(true|false|null)\b/g, (_m, v) => {
|
|
160
|
+
return `{${exports.blessedSyntaxColors.keyword}}${v}{/${exports.blessedSyntaxColors.keyword}}`;
|
|
161
|
+
});
|
|
162
|
+
return highlighted;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Highlight string literals in quotes using blessed tags
|
|
166
|
+
*/
|
|
167
|
+
function highlightStringsBlessed(text) {
|
|
168
|
+
// Use more reliable regex without nested lookahead
|
|
169
|
+
const stringRegex = /(["'])((?:\\.|(?!\1)[^\\])*)\1/g;
|
|
170
|
+
return text.replace(stringRegex, (match) => {
|
|
171
|
+
return `{${exports.blessedSyntaxColors.string}}${match}{/${exports.blessedSyntaxColors.string}}`;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Highlight numbers using blessed tags
|
|
176
|
+
*/
|
|
177
|
+
function highlightNumbersBlessed(text) {
|
|
178
|
+
const numberRegex = /\b(\d+\.?\d*)\b/g;
|
|
179
|
+
return text.replace(numberRegex, `{${exports.blessedSyntaxColors.number}}$1{/${exports.blessedSyntaxColors.number}}`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Highlight code comments using blessed tags
|
|
183
|
+
* Matches single-line and multi-line comments, bash comments
|
|
184
|
+
*/
|
|
185
|
+
function highlightCommentsBlessed(text) {
|
|
186
|
+
let highlighted = text;
|
|
187
|
+
// Multi-line comments first (to avoid conflicts with // in comments)
|
|
188
|
+
highlighted = highlighted.replace(/(\/\*[\s\S]*?\*\/)/g, `{${exports.blessedSyntaxColors.comment}}$1{/${exports.blessedSyntaxColors.comment}}`);
|
|
189
|
+
// Single-line comments
|
|
190
|
+
highlighted = highlighted.replace(/(\/\/.*)$/gm, `{${exports.blessedSyntaxColors.comment}}$1{/${exports.blessedSyntaxColors.comment}}`);
|
|
191
|
+
// Bash comments (# comment) - process last to avoid markdown headers
|
|
192
|
+
highlighted = highlighted.replace(/(?:^|\s)(#(?!#{0,5}\s)[^\n]*)$/gm, (match, comment) => {
|
|
193
|
+
return match.replace(comment, `{${exports.blessedSyntaxColors.comment}}${comment}{/${exports.blessedSyntaxColors.comment}}`);
|
|
194
|
+
});
|
|
195
|
+
return highlighted;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Highlight shell/bash commands using blessed tags
|
|
199
|
+
*/
|
|
200
|
+
function highlightShellCommandsBlessed(text) {
|
|
201
|
+
let highlighted = text;
|
|
202
|
+
for (const cmd of SHELL_COMMANDS) {
|
|
203
|
+
const regex = new RegExp(`\\b(${cmd})\\b`, 'g');
|
|
204
|
+
highlighted = highlighted.replace(regex, `{${exports.blessedSyntaxColors.keyword}}$1{/${exports.blessedSyntaxColors.keyword}}`);
|
|
205
|
+
}
|
|
206
|
+
return highlighted;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Highlight common log levels and status tags
|
|
210
|
+
*/
|
|
211
|
+
function highlightLogLevelsBlessed(text) {
|
|
212
|
+
let highlighted = text;
|
|
213
|
+
// Bracketed levels like [INFO], [ERROR], [OK]
|
|
214
|
+
highlighted = highlighted.replace(/\[(INFO|DEBUG|TRACE|WARN|WARNING|ERROR|FATAL|SUCCESS|OK)\]/g, (_m, lvl) => {
|
|
215
|
+
const level = lvl.toUpperCase();
|
|
216
|
+
const color = level === 'ERROR' || level === 'FATAL' ? exports.blessedSyntaxColors.error :
|
|
217
|
+
level === 'WARN' || level === 'WARNING' ? exports.blessedSyntaxColors.warning :
|
|
218
|
+
level === 'SUCCESS' || level === 'OK' ? exports.blessedSyntaxColors.success :
|
|
219
|
+
level === 'DEBUG' || level === 'TRACE' ? exports.blessedSyntaxColors.debug :
|
|
220
|
+
exports.blessedSyntaxColors.info;
|
|
221
|
+
return `{${color}}[${level}]{/${color}}`;
|
|
222
|
+
});
|
|
223
|
+
// Bare levels as whole words
|
|
224
|
+
highlighted = highlighted.replace(/\b(INFO|DEBUG|TRACE|WARN|WARNING|ERROR|FATAL|SUCCESS|OK)\b/g, (_m, lvl) => {
|
|
225
|
+
const level = lvl.toUpperCase();
|
|
226
|
+
const color = level === 'ERROR' || level === 'FATAL' ? exports.blessedSyntaxColors.error :
|
|
227
|
+
level === 'WARN' || level === 'WARNING' ? exports.blessedSyntaxColors.warning :
|
|
228
|
+
level === 'SUCCESS' || level === 'OK' ? exports.blessedSyntaxColors.success :
|
|
229
|
+
level === 'DEBUG' || level === 'TRACE' ? exports.blessedSyntaxColors.debug :
|
|
230
|
+
exports.blessedSyntaxColors.info;
|
|
231
|
+
return `{${color}}${level}{/${color}}`;
|
|
232
|
+
});
|
|
233
|
+
return highlighted;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Highlight HTTP methods and status codes
|
|
237
|
+
*/
|
|
238
|
+
function highlightHttpBlessed(text) {
|
|
239
|
+
let highlighted = text;
|
|
240
|
+
// Methods (prefer start-of-line or before space + /)
|
|
241
|
+
highlighted = highlighted.replace(/\b(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b(?![\w-])/g, (_m, method) => {
|
|
242
|
+
return `{${exports.blessedSyntaxColors.httpMethod}}{bold}${method}{/bold}{/${exports.blessedSyntaxColors.httpMethod}}`;
|
|
243
|
+
});
|
|
244
|
+
// HTTP/x.y 200 or 404 following HTTP marker
|
|
245
|
+
highlighted = highlighted.replace(/HTTP\/((?:1\.[01]|2))\s(\d{3})/g, (_m, ver, code) => {
|
|
246
|
+
const n = parseInt(code, 10);
|
|
247
|
+
const color = n >= 500 ? exports.blessedSyntaxColors.error : n >= 400 ? exports.blessedSyntaxColors.error : n >= 300 ? exports.blessedSyntaxColors.warning : exports.blessedSyntaxColors.success;
|
|
248
|
+
return `HTTP/${ver} ${`{${color}}${code}{/${color}}`}`;
|
|
249
|
+
});
|
|
250
|
+
// Trailing status like "200 OK" or "404 Not Found"
|
|
251
|
+
highlighted = highlighted.replace(/\b(\d{3})\b\s+(OK|Created|Accepted|No\s+Content|Moved\s+Permanently|Found|See\s+Other|Not\s+Modified|Temporary\s+Redirect|Permanent\s+Redirect|Bad\s+Request|Unauthorized|Forbidden|Not\s+Found|Method\s+Not\s+Allowed|Conflict|Gone|Too\s+Many\s+Requests|Internal\s+Server\s+Error|Not\s+Implemented|Bad\s+Gateway|Service\s+Unavailable)/gi, (_m, code, msg) => {
|
|
252
|
+
const n = parseInt(code, 10);
|
|
253
|
+
const color = n >= 500 ? exports.blessedSyntaxColors.error : n >= 400 ? exports.blessedSyntaxColors.error : n >= 300 ? exports.blessedSyntaxColors.warning : exports.blessedSyntaxColors.success;
|
|
254
|
+
return `{${color}}${code} ${msg}{/${color}}`;
|
|
255
|
+
});
|
|
256
|
+
return highlighted;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Highlight environment variables like $VAR and ${VAR}
|
|
260
|
+
*/
|
|
261
|
+
function highlightEnvVarsBlessed(text) {
|
|
262
|
+
return text
|
|
263
|
+
.replace(/\$[A-Z_][A-Z0-9_]*/g, (m) => `{${exports.blessedSyntaxColors.path}}${m}{/${exports.blessedSyntaxColors.path}}`)
|
|
264
|
+
.replace(/\$\{[A-Z_][A-Z0-9_]*\}/g, (m) => `{${exports.blessedSyntaxColors.path}}${m}{/${exports.blessedSyntaxColors.path}}`);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Highlight IP addresses and ports
|
|
268
|
+
*/
|
|
269
|
+
function highlightIPsBlessed(text) {
|
|
270
|
+
let highlighted = text;
|
|
271
|
+
highlighted = highlighted.replace(/\b(?:\d{1,3}\.){3}\d{1,3}\b(?::\d+)?/g, (m) => {
|
|
272
|
+
return `{${exports.blessedSyntaxColors.path}}${m}{/${exports.blessedSyntaxColors.path}}`;
|
|
273
|
+
});
|
|
274
|
+
return highlighted;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Highlight Git commit SHAs (7-40 hex chars)
|
|
278
|
+
*/
|
|
279
|
+
function highlightGitShasBlessed(text) {
|
|
280
|
+
return text.replace(/\b[a-f0-9]{7,40}\b/g, (m) => {
|
|
281
|
+
return `{${exports.blessedSyntaxColors.keyword}}${m}{/${exports.blessedSyntaxColors.keyword}}`;
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Highlight code-frame style lines: 12 | code
|
|
286
|
+
*/
|
|
287
|
+
function highlightCodeFramesBlessed(text) {
|
|
288
|
+
return text.replace(/^(\s*)(>\s*)?(\d+)\s*\|/gm, (_m, lead, arrow, ln) => {
|
|
289
|
+
const arrowPart = arrow ? `{${exports.blessedSyntaxColors.comment}}${arrow}{/${exports.blessedSyntaxColors.comment}}` : '';
|
|
290
|
+
const num = `{${exports.blessedSyntaxColors.lineNumber}}${ln}{/${exports.blessedSyntaxColors.lineNumber}}`;
|
|
291
|
+
const pipe = `{${exports.blessedSyntaxColors.comment}}|{/${exports.blessedSyntaxColors.comment}}`;
|
|
292
|
+
return `${lead}${arrowPart}${num} ${pipe}`;
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Highlight diff lines starting with + or -
|
|
297
|
+
*/
|
|
298
|
+
function highlightDiffsBlessed(text) {
|
|
299
|
+
return text
|
|
300
|
+
.replace(/^(\+.*)$/gm, (_m, line) => `{${exports.blessedSyntaxColors.diffAdd}}${line}{/${exports.blessedSyntaxColors.diffAdd}}`)
|
|
301
|
+
.replace(/^(\-.*)$/gm, (_m, line) => `{${exports.blessedSyntaxColors.diffRemove}}${line}{/${exports.blessedSyntaxColors.diffRemove}}`);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Highlight package names like @scope/package using blessed tags
|
|
305
|
+
*/
|
|
306
|
+
function highlightPackagesBlessed(text) {
|
|
307
|
+
// Match npm package names: @scope/package or package-name
|
|
308
|
+
const packageRegex = /(@[\w-]+\/[\w-]+|[\w-]+\/[\w-]+|\b[\w-]+@[\d.]+)/g;
|
|
309
|
+
return text.replace(packageRegex, (match) => {
|
|
310
|
+
return `{${exports.blessedSyntaxColors.path}}${match}{/${exports.blessedSyntaxColors.path}}`;
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Highlight markdown code blocks with syntax highlighting (blessed tags)
|
|
315
|
+
*/
|
|
316
|
+
function highlightCodeBlocksBlessed(text) {
|
|
317
|
+
// Match ```lang\ncode\n``` blocks (non-greedy, handles incomplete blocks)
|
|
318
|
+
const codeBlockRegex = /```(\w+)?\n([\s\S]*?)(?:```|$)/g;
|
|
319
|
+
return text.replace(codeBlockRegex, (match, lang, code) => {
|
|
320
|
+
// Highlight the opening fence
|
|
321
|
+
let result = `{${exports.blessedSyntaxColors.path}}\`\`\`${lang || ''}{/${exports.blessedSyntaxColors.path}}\n`;
|
|
322
|
+
// Apply language-specific highlighting
|
|
323
|
+
const highlightedCode = highlightCodeBlockContentBlessed(code, lang);
|
|
324
|
+
result += highlightedCode;
|
|
325
|
+
// Highlight the closing fence if present
|
|
326
|
+
if (match.endsWith('```')) {
|
|
327
|
+
result += `{${exports.blessedSyntaxColors.path}}\`\`\`{/${exports.blessedSyntaxColors.path}}`;
|
|
328
|
+
}
|
|
329
|
+
return result;
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Highlight code block content based on language (blessed tags)
|
|
334
|
+
*/
|
|
335
|
+
function highlightCodeBlockContentBlessed(code, lang) {
|
|
336
|
+
let highlighted = code;
|
|
337
|
+
// Bash/shell highlighting
|
|
338
|
+
if (lang === 'bash' || lang === 'sh' || lang === 'shell') {
|
|
339
|
+
highlighted = highlightShellCommandsBlessed(highlighted);
|
|
340
|
+
highlighted = highlightCommentsBlessed(highlighted);
|
|
341
|
+
highlighted = highlightStringsBlessed(highlighted);
|
|
342
|
+
return highlighted;
|
|
343
|
+
}
|
|
344
|
+
// JavaScript/TypeScript highlighting
|
|
345
|
+
if (lang === 'javascript' || lang === 'js' || lang === 'typescript' || lang === 'ts') {
|
|
346
|
+
highlighted = highlightCommentsBlessed(highlighted);
|
|
347
|
+
highlighted = highlightStringsBlessed(highlighted);
|
|
348
|
+
highlighted = highlightKeywordsBlessed(highlighted);
|
|
349
|
+
highlighted = highlightNumbersBlessed(highlighted);
|
|
350
|
+
return highlighted;
|
|
351
|
+
}
|
|
352
|
+
// Generic highlighting for other languages
|
|
353
|
+
highlighted = highlightCommentsBlessed(highlighted);
|
|
354
|
+
highlighted = highlightStringsBlessed(highlighted);
|
|
355
|
+
highlighted = highlightKeywordsBlessed(highlighted);
|
|
356
|
+
highlighted = highlightNumbersBlessed(highlighted);
|
|
357
|
+
return highlighted;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Apply comprehensive syntax highlighting using blessed tags
|
|
361
|
+
* Applies all highlighting rules in the correct order
|
|
362
|
+
*/
|
|
363
|
+
function applySyntaxHighlightBlessed(text) {
|
|
364
|
+
if (!text)
|
|
365
|
+
return text;
|
|
366
|
+
let highlighted = text;
|
|
367
|
+
// Order matters: highlight specific patterns first, then broader patterns
|
|
368
|
+
// Process code blocks separately to avoid interference
|
|
369
|
+
// 0. Extract code blocks to process them separately
|
|
370
|
+
const codeBlocks = [];
|
|
371
|
+
let blockIndex = 0;
|
|
372
|
+
highlighted = highlighted.replace(/```(\w+)?\n([\s\S]*?)(?:```|$)/g, (match, lang, code) => {
|
|
373
|
+
const placeholder = `__CODEBLOCK_${blockIndex}__`;
|
|
374
|
+
const processedBlock = highlightCodeBlockContentBlessed(code, lang);
|
|
375
|
+
codeBlocks.push({
|
|
376
|
+
placeholder,
|
|
377
|
+
content: `{${exports.blessedSyntaxColors.path}}\`\`\`${lang || ''}{/${exports.blessedSyntaxColors.path}}\n${processedBlock}${match.endsWith('```') ? `{${exports.blessedSyntaxColors.path}}\`\`\`{/${exports.blessedSyntaxColors.path}}` : ''}`
|
|
378
|
+
});
|
|
379
|
+
blockIndex++;
|
|
380
|
+
return placeholder;
|
|
381
|
+
});
|
|
382
|
+
// 1. File references (must be before paths to handle file.ts:123)
|
|
383
|
+
highlighted = highlightFileRefsBlessed(highlighted);
|
|
384
|
+
// 1.5 URLs and emails
|
|
385
|
+
highlighted = highlightLinksBlessed(highlighted);
|
|
386
|
+
// 2. Paths
|
|
387
|
+
highlighted = highlightPathsBlessed(highlighted);
|
|
388
|
+
// 3. Packages (npm packages)
|
|
389
|
+
highlighted = highlightPackagesBlessed(highlighted);
|
|
390
|
+
// 4. Titles
|
|
391
|
+
highlighted = highlightTitlesBlessed(highlighted);
|
|
392
|
+
// 4.5 Code frames and diffs (line-oriented)
|
|
393
|
+
highlighted = highlightCodeFramesBlessed(highlighted);
|
|
394
|
+
highlighted = highlightDiffsBlessed(highlighted);
|
|
395
|
+
// 4.8 Env vars, CLI flags, IPs, SHAs
|
|
396
|
+
highlighted = highlightEnvVarsBlessed(highlighted);
|
|
397
|
+
highlighted = highlightCliFlagsBlessed(highlighted);
|
|
398
|
+
highlighted = highlightIPsBlessed(highlighted);
|
|
399
|
+
highlighted = highlightGitShasBlessed(highlighted);
|
|
400
|
+
// 5. Log levels and HTTP
|
|
401
|
+
highlighted = highlightLogLevelsBlessed(highlighted);
|
|
402
|
+
highlighted = highlightHttpBlessed(highlighted);
|
|
403
|
+
// 5. Comments (before keywords to avoid highlighting keywords in comments)
|
|
404
|
+
highlighted = highlightCommentsBlessed(highlighted);
|
|
405
|
+
// 6. Strings
|
|
406
|
+
highlighted = highlightStringsBlessed(highlighted);
|
|
407
|
+
// 6.5 JSON keys and literals
|
|
408
|
+
highlighted = highlightJsonBlessed(highlighted);
|
|
409
|
+
// 7. Shell commands
|
|
410
|
+
highlighted = highlightShellCommandsBlessed(highlighted);
|
|
411
|
+
// 8. Keywords
|
|
412
|
+
highlighted = highlightKeywordsBlessed(highlighted);
|
|
413
|
+
// 9. Numbers
|
|
414
|
+
highlighted = highlightNumbersBlessed(highlighted);
|
|
415
|
+
// Restore code blocks
|
|
416
|
+
for (const block of codeBlocks) {
|
|
417
|
+
highlighted = highlighted.replace(block.placeholder, block.content);
|
|
418
|
+
}
|
|
419
|
+
return highlighted;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Apply light syntax highlighting using blessed tags (conservative)
|
|
423
|
+
*/
|
|
424
|
+
function applyLightSyntaxHighlightBlessed(text) {
|
|
425
|
+
if (!text)
|
|
426
|
+
return text;
|
|
427
|
+
let highlighted = text;
|
|
428
|
+
// Only highlight paths and file references
|
|
429
|
+
highlighted = highlightFileRefsBlessed(highlighted);
|
|
430
|
+
highlighted = highlightPathsBlessed(highlighted);
|
|
431
|
+
highlighted = highlightLinksBlessed(highlighted);
|
|
432
|
+
return highlighted;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Colorize entire text block with blessed tag
|
|
436
|
+
*/
|
|
437
|
+
function colorizeBlockBlessed(text, color) {
|
|
438
|
+
return `{${color}}${text}{/${color}}`;
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=blessed-syntax-highlighter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blessed-syntax-highlighter.js","sourceRoot":"","sources":["../../src/utils/blessed-syntax-highlighter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiDH,sDAQC;AAMD,4DAMC;AAKD,sDAgBC;AAKD,4DASC;AAKD,4DAWC;AAMD,wDAKC;AAKD,oDAWC;AAKD,0DAMC;AAKD,0DAGC;AAMD,4DAwBC;AAKD,sEASC;AAKD,8DA4BC;AAKD,oDAuBC;AAKD,0DAIC;AAKD,kDAMC;AAKD,0DAIC;AAKD,gEAOC;AAKD,sDAIC;AAKD,4DAMC;AAKD,gEAmBC;AAsCD,kEA4EC;AAKD,4EAWC;AAKD,oDAEC;AA3eD;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,WAAW;IACvB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,SAAS;IACnB,mBAAmB;IACnB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,QAAQ;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW;IACzE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAC1E,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY;IACxE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW;CAC5E,CAAA;AAED;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC7E,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC5E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;CAC3E,CAAA;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,qCAAqC;IACrC,MAAM,SAAS,GAAG,6CAA6C,CAAA;IAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,gDAAgD;QAChD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QACvC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,2BAAmB,CAAC,IAAI,IAAI,IAAI,KAAK,2BAAmB,CAAC,IAAI,GAAG,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,qCAAqC;IACrC,MAAM,YAAY,GAAG,iEAAiE,CAAA;IACtF,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC1D,OAAO,IAAI,2BAAmB,CAAC,IAAI,IAAI,IAAI,KAAK,2BAAmB,CAAC,IAAI,KAAK,2BAAmB,CAAC,UAAU,IAAI,QAAQ,KAAK,2BAAmB,CAAC,UAAU,GAAG,CAAA;IAC/J,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,oCAAoC;IACpC,MAAM,QAAQ,GAAG,oDAAoD,CAAA;IACrE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAChD,OAAO,IAAI,2BAAmB,CAAC,IAAI,eAAe,CAAC,iBAAiB,2BAAmB,CAAC,IAAI,GAAG,CAAA;IACjG,CAAC,CAAC,CAAA;IAEF,kBAAkB;IAClB,MAAM,UAAU,GAAG,qCAAqC,CAAA;IACxD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QAClD,OAAO,IAAI,2BAAmB,CAAC,IAAI,eAAe,CAAC,iBAAiB,2BAAmB,CAAC,IAAI,GAAG,CAAA;IACjG,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,OAAO,MAAM,EAAE,GAAG,CAAC,CAAA;QACnD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,2BAAmB,CAAC,OAAO,QAAQ,2BAAmB,CAAC,OAAO,GAAG,CAAC,CAAA;IACjH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,kCAAkC;IAClC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5E,OAAO,IAAI,2BAAmB,CAAC,UAAU,IAAI,CAAC,KAAK,2BAAmB,CAAC,UAAU,GAAG,CAAA;IACtF,CAAC,CAAC,CAAA;IACF,kCAAkC;IAClC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;QACzD,OAAO,IAAI,2BAAmB,CAAC,UAAU,IAAI,CAAC,KAAK,2BAAmB,CAAC,UAAU,GAAG,CAAA;IACtF,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,UAAU,GAAG,qBAAqB,CAAA;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QACvD,OAAO,IAAI,2BAAmB,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,KAAK,2BAAmB,CAAC,KAAK,GAAG,CAAA;IAC1F,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,0BAA0B;IAC1B,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QACxE,OAAO,IAAI,2BAAmB,CAAC,OAAO,IAAI,GAAG,KAAK,2BAAmB,CAAC,OAAO,IAAI,CAAA;IACnF,CAAC,CAAC,CAAA;IACF,sDAAsD;IACtD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpE,OAAO,IAAI,2BAAmB,CAAC,OAAO,IAAI,CAAC,KAAK,2BAAmB,CAAC,OAAO,GAAG,CAAA;IAChF,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,mDAAmD;IACnD,MAAM,WAAW,GAAG,iCAAiC,CAAA;IACrD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,OAAO,IAAI,2BAAmB,CAAC,MAAM,IAAI,KAAK,KAAK,2BAAmB,CAAC,MAAM,GAAG,CAAA;IAClF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,MAAM,WAAW,GAAG,kBAAkB,CAAA;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,2BAAmB,CAAC,MAAM,QAAQ,2BAAmB,CAAC,MAAM,GAAG,CAAC,CAAA;AACvG,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,qEAAqE;IACrE,WAAW,GAAG,WAAW,CAAC,OAAO,CAC/B,qBAAqB,EACrB,IAAI,2BAAmB,CAAC,OAAO,QAAQ,2BAAmB,CAAC,OAAO,GAAG,CACtE,CAAA;IAED,uBAAuB;IACvB,WAAW,GAAG,WAAW,CAAC,OAAO,CAC/B,aAAa,EACb,IAAI,2BAAmB,CAAC,OAAO,QAAQ,2BAAmB,CAAC,OAAO,GAAG,CACtE,CAAA;IAED,qEAAqE;IACrE,WAAW,GAAG,WAAW,CAAC,OAAO,CAC/B,kCAAkC,EAClC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,2BAAmB,CAAC,OAAO,IAAI,OAAO,KAAK,2BAAmB,CAAC,OAAO,GAAG,CAAC,CAAA;IAC9G,CAAC,CACF,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,IAAY;IACxD,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;QAC/C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,2BAAmB,CAAC,OAAO,QAAQ,2BAAmB,CAAC,OAAO,GAAG,CAAC,CAAA;IACjH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,IAAY;IACpD,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,8CAA8C;IAC9C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,6DAA6D,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,EAAE;QACnH,MAAM,KAAK,GAAI,GAAc,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC;YAClE,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC;gBACrE,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC;oBACnE,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC;wBAClE,2BAAmB,CAAC,IAAI,CAAA;QAClC,OAAO,IAAI,KAAK,KAAK,KAAK,MAAM,KAAK,GAAG,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,6BAA6B;IAC7B,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,6DAA6D,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,EAAE;QACnH,MAAM,KAAK,GAAI,GAAc,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC;YAClE,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC;gBACrE,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC;oBACnE,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC;wBAClE,2BAAmB,CAAC,IAAI,CAAA;QAClC,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,qDAAqD;IACrD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,wDAAwD,EAAE,CAAC,EAAE,EAAE,MAAc,EAAE,EAAE;QACjH,OAAO,IAAI,2BAAmB,CAAC,UAAU,UAAU,MAAM,YAAY,2BAAmB,CAAC,UAAU,GAAG,CAAA;IACxG,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;QACrG,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAA;QAChK,OAAO,QAAQ,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,mDAAmD;IACnD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,+UAA+U,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,GAAW,EAAE,EAAE;QACnZ,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAmB,CAAC,OAAO,CAAA;QAChK,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,KAAK,GAAG,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI;SACR,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,2BAAmB,CAAC,IAAI,IAAI,CAAC,KAAK,2BAAmB,CAAC,IAAI,GAAG,CAAC;SACxG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,2BAAmB,CAAC,IAAI,IAAI,CAAC,KAAK,2BAAmB,CAAC,IAAI,GAAG,CAAC,CAAA;AACjH,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE,EAAE;QAC/E,OAAO,IAAI,2BAAmB,CAAC,IAAI,IAAI,CAAC,KAAK,2BAAmB,CAAC,IAAI,GAAG,CAAA;IAC1E,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC/C,OAAO,IAAI,2BAAmB,CAAC,OAAO,IAAI,CAAC,KAAK,2BAAmB,CAAC,OAAO,GAAG,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACrD,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,KAAyB,EAAE,EAAU,EAAE,EAAE;QAC3G,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,2BAAmB,CAAC,OAAO,IAAI,KAAK,KAAK,2BAAmB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1G,MAAM,GAAG,GAAG,IAAI,2BAAmB,CAAC,UAAU,IAAI,EAAE,KAAK,2BAAmB,CAAC,UAAU,GAAG,CAAA;QAC1F,MAAM,IAAI,GAAG,IAAI,2BAAmB,CAAC,OAAO,OAAO,2BAAmB,CAAC,OAAO,GAAG,CAAA;QACjF,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI;SACR,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,2BAAmB,CAAC,OAAO,IAAI,IAAI,KAAK,2BAAmB,CAAC,OAAO,GAAG,CAAC;SACvH,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,2BAAmB,CAAC,UAAU,IAAI,IAAI,KAAK,2BAAmB,CAAC,UAAU,GAAG,CAAC,CAAA;AAClI,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,0DAA0D;IAC1D,MAAM,YAAY,GAAG,mDAAmD,CAAA;IACxE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,OAAO,IAAI,2BAAmB,CAAC,IAAI,IAAI,KAAK,KAAK,2BAAmB,CAAC,IAAI,GAAG,CAAA;IAC9E,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACrD,0EAA0E;IAC1E,MAAM,cAAc,GAAG,iCAAiC,CAAA;IAExD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACxD,8BAA8B;QAC9B,IAAI,MAAM,GAAG,IAAI,2BAAmB,CAAC,IAAI,UAAU,IAAI,IAAI,EAAE,KAAK,2BAAmB,CAAC,IAAI,KAAK,CAAA;QAE/F,uCAAuC;QACvC,MAAM,eAAe,GAAG,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACpE,MAAM,IAAI,eAAe,CAAA;QAEzB,yCAAyC;QACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,IAAI,2BAAmB,CAAC,IAAI,YAAY,2BAAmB,CAAC,IAAI,GAAG,CAAA;QAC/E,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CAAC,IAAY,EAAE,IAAa;IACnE,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,0BAA0B;IAC1B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACzD,WAAW,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAA;QACxD,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;QACnD,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAClD,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACrF,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;QACnD,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAClD,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;QACnD,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAClD,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,2CAA2C;IAC3C,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IACnD,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAClD,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IACnD,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAElD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,IAAY;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,0EAA0E;IAC1E,uDAAuD;IAEvD,oDAAoD;IACpD,MAAM,UAAU,GAAoD,EAAE,CAAA;IACtE,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACzF,MAAM,WAAW,GAAG,eAAe,UAAU,IAAI,CAAA;QACjD,MAAM,cAAc,GAAG,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACnE,UAAU,CAAC,IAAI,CAAC;YACd,WAAW;YACX,OAAO,EAAE,IAAI,2BAAmB,CAAC,IAAI,UAAU,IAAI,IAAI,EAAE,KAAK,2BAAmB,CAAC,IAAI,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,2BAAmB,CAAC,IAAI,YAAY,2BAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SAChN,CAAC,CAAA;QACF,UAAU,EAAE,CAAA;QACZ,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,kEAAkE;IAClE,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAEnD,sBAAsB;IACtB,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAEhD,WAAW;IACX,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAEhD,6BAA6B;IAC7B,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAEnD,YAAY;IACZ,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAA;IAEjD,4CAA4C;IAC5C,WAAW,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACrD,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAEhD,qCAAqC;IACrC,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAClD,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IACnD,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAC9C,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAElD,yBAAyB;IACzB,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAA;IACpD,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAE/C,2EAA2E;IAC3E,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAEnD,aAAa;IACb,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAElD,6BAA6B;IAC7B,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAE/C,oBAAoB;IACpB,WAAW,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAA;IAExD,cAAc;IACd,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAEnD,aAAa;IACb,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAElD,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC,CAAC,IAAY;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,2CAA2C;IAC3C,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IACnD,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAChD,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAEhD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,IAAY,EAAE,KAAa;IAC9D,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export interface TableData {
|
|
2
|
+
headers: string[];
|
|
3
|
+
rows: string[][];
|
|
4
|
+
align?: ('left' | 'center' | 'right')[];
|
|
5
|
+
}
|
|
6
|
+
export interface ChartData {
|
|
7
|
+
values: number[];
|
|
8
|
+
labels?: string[];
|
|
9
|
+
config?: {
|
|
10
|
+
height?: number;
|
|
11
|
+
width?: number;
|
|
12
|
+
colors?: string[];
|
|
13
|
+
format?: (x: number, i: number) => string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Enhanced table and chart renderer using tty-table and asciichart
|
|
18
|
+
*/
|
|
19
|
+
export declare class EnhancedTableRenderer {
|
|
20
|
+
/**
|
|
21
|
+
* Render a table using tty-table
|
|
22
|
+
*/
|
|
23
|
+
static renderTable(data: TableData, options?: {
|
|
24
|
+
borderStyle?: 'solid' | 'dashed' | 'none';
|
|
25
|
+
headerAlign?: 'left' | 'center' | 'right';
|
|
26
|
+
compact?: boolean;
|
|
27
|
+
width?: number;
|
|
28
|
+
}): string;
|
|
29
|
+
/**
|
|
30
|
+
* Render a line chart using asciichart
|
|
31
|
+
*/
|
|
32
|
+
static renderChart(data: ChartData): string;
|
|
33
|
+
/**
|
|
34
|
+
* Render multiple data series as a chart
|
|
35
|
+
*/
|
|
36
|
+
static renderMultiChart(datasets: {
|
|
37
|
+
label: string;
|
|
38
|
+
values: number[];
|
|
39
|
+
color?: string;
|
|
40
|
+
}[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Auto-detect if data looks like chart data
|
|
43
|
+
*/
|
|
44
|
+
static isChartData(content: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Auto-detect if content is table data
|
|
47
|
+
*/
|
|
48
|
+
static isTableData(content: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Parse markdown table to TableData
|
|
51
|
+
*/
|
|
52
|
+
static parseMarkdownTable(markdown: string): TableData | null;
|
|
53
|
+
/**
|
|
54
|
+
* Parse CSV data to chart data
|
|
55
|
+
*/
|
|
56
|
+
static parseCSVToChart(csv: string): ChartData | null;
|
|
57
|
+
/**
|
|
58
|
+
* Convert table corners to rounded Unicode characters
|
|
59
|
+
*/
|
|
60
|
+
private static convertToRoundedCorners;
|
|
61
|
+
/**
|
|
62
|
+
* Fallback table renderer
|
|
63
|
+
*/
|
|
64
|
+
private static renderFallbackTable;
|
|
65
|
+
/**
|
|
66
|
+
* Fallback chart renderer
|
|
67
|
+
*/
|
|
68
|
+
private static renderFallbackChart;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Convenience functions
|
|
72
|
+
*/
|
|
73
|
+
export declare function renderTable(data: TableData, options?: any): string;
|
|
74
|
+
export declare function renderChart(data: ChartData): string;
|
|
75
|
+
export declare function parseMarkdownTable(markdown: string): TableData | null;
|
|
76
|
+
export declare function parseCSVToChart(csv: string): ChartData | null;
|
|
77
|
+
//# sourceMappingURL=enhanced-table-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-table-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/enhanced-table-renderer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;KAC3C,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE;QAC3C,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,MAAM;IA+Cf;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAyB3C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,MAAM;IAuChG;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAgB5C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAqB5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAiE7D;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoDrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAatC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA2ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;CA2BnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAElE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAErE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE7D"}
|