@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,49 @@
|
|
|
1
|
+
import { MathRenderConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Math renderer for TTY
|
|
4
|
+
* Converts LaTeX math to Unicode/ASCII representation
|
|
5
|
+
*/
|
|
6
|
+
export declare class MathRenderer {
|
|
7
|
+
private config;
|
|
8
|
+
private static readonly UNICODE_SYMBOLS;
|
|
9
|
+
private static readonly SUPERSCRIPTS;
|
|
10
|
+
private static readonly SUBSCRIPTS;
|
|
11
|
+
constructor(config?: MathRenderConfig);
|
|
12
|
+
/**
|
|
13
|
+
* Convert LaTeX math to Unicode representation
|
|
14
|
+
*/
|
|
15
|
+
convertToUnicode(latex: string, displayMode?: boolean): string;
|
|
16
|
+
/**
|
|
17
|
+
* Convert LaTeX to Unicode text
|
|
18
|
+
*/
|
|
19
|
+
private latexToUnicode;
|
|
20
|
+
/**
|
|
21
|
+
* Convert text to superscript
|
|
22
|
+
*/
|
|
23
|
+
private toSuperscript;
|
|
24
|
+
/**
|
|
25
|
+
* Convert text to subscript
|
|
26
|
+
*/
|
|
27
|
+
private toSubscript;
|
|
28
|
+
/**
|
|
29
|
+
* Format error message
|
|
30
|
+
*/
|
|
31
|
+
private formatError;
|
|
32
|
+
/**
|
|
33
|
+
* Render inline math (compact)
|
|
34
|
+
*/
|
|
35
|
+
renderInline(latex: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Render block math (centered, bordered)
|
|
38
|
+
*/
|
|
39
|
+
renderBlock(latex: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Update configuration
|
|
42
|
+
*/
|
|
43
|
+
updateConfig(config: Partial<MathRenderConfig>): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Singleton instance
|
|
47
|
+
*/
|
|
48
|
+
export declare const mathRenderer: MathRenderer;
|
|
49
|
+
//# sourceMappingURL=math-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/math-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAmB;IAGjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAmCrC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAKlC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAQhC;gBAEU,MAAM,GAAE,gBAAqB;IASzC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,MAAM;IAoBrE;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAgBlC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAGxD;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mathRenderer = exports.MathRenderer = void 0;
|
|
7
|
+
const katex_1 = __importDefault(require("katex"));
|
|
8
|
+
/**
|
|
9
|
+
* Math renderer for TTY
|
|
10
|
+
* Converts LaTeX math to Unicode/ASCII representation
|
|
11
|
+
*/
|
|
12
|
+
class MathRenderer {
|
|
13
|
+
config;
|
|
14
|
+
// Unicode math symbol mappings
|
|
15
|
+
static UNICODE_SYMBOLS = {
|
|
16
|
+
// Greek letters
|
|
17
|
+
'alpha': 'α', 'beta': 'β', 'gamma': 'γ', 'delta': 'δ', 'epsilon': 'ε',
|
|
18
|
+
'zeta': 'ζ', 'eta': 'η', 'theta': 'θ', 'iota': 'ι', 'kappa': 'κ',
|
|
19
|
+
'lambda': 'λ', 'mu': 'μ', 'nu': 'ν', 'xi': 'ξ', 'pi': 'π',
|
|
20
|
+
'rho': 'ρ', 'sigma': 'σ', 'tau': 'τ', 'upsilon': 'υ', 'phi': 'φ',
|
|
21
|
+
'chi': 'χ', 'psi': 'ψ', 'omega': 'ω',
|
|
22
|
+
// Capital Greek
|
|
23
|
+
'Gamma': 'Γ', 'Delta': 'Δ', 'Theta': 'Θ', 'Lambda': 'Λ', 'Xi': 'Ξ',
|
|
24
|
+
'Pi': 'Π', 'Sigma': 'Σ', 'Phi': 'Φ', 'Psi': 'Ψ', 'Omega': 'Ω',
|
|
25
|
+
// Math operators
|
|
26
|
+
'pm': '±', 'mp': '∓', 'times': '×', 'div': '÷', 'cdot': '·',
|
|
27
|
+
'leq': '≤', 'geq': '≥', 'neq': '≠', 'approx': '≈', 'equiv': '≡',
|
|
28
|
+
'propto': '∝', 'infty': '∞', 'partial': '∂', 'nabla': '∇',
|
|
29
|
+
'sum': '∑', 'prod': '∏', 'int': '∫', 'oint': '∮',
|
|
30
|
+
'sqrt': '√', 'cbrt': '∛',
|
|
31
|
+
// Arrows
|
|
32
|
+
'rightarrow': '→', 'leftarrow': '←', 'uparrow': '↑', 'downarrow': '↓',
|
|
33
|
+
'leftrightarrow': '↔', 'Rightarrow': '⇒', 'Leftarrow': '⇐',
|
|
34
|
+
'Leftrightarrow': '⇔', 'mapsto': '↦',
|
|
35
|
+
// Set theory
|
|
36
|
+
'in': '∈', 'notin': '∉', 'subset': '⊂', 'supset': '⊃',
|
|
37
|
+
'subseteq': '⊆', 'supseteq': '⊇', 'cup': '∪', 'cap': '∩',
|
|
38
|
+
'emptyset': '∅', 'exists': '∃', 'forall': '∀',
|
|
39
|
+
// Logic
|
|
40
|
+
'land': '∧', 'lor': '∨', 'lnot': '¬', 'implies': '⇒',
|
|
41
|
+
// Other
|
|
42
|
+
'dots': '…', 'cdots': '⋯', 'ldots': '…', 'vdots': '⋮',
|
|
43
|
+
'therefore': '∴', 'because': '∵',
|
|
44
|
+
};
|
|
45
|
+
// Superscript digits
|
|
46
|
+
static SUPERSCRIPTS = {
|
|
47
|
+
'0': '⁰', '1': '¹', '2': '²', '3': '³', '4': '⁴',
|
|
48
|
+
'5': '⁵', '6': '⁶', '7': '⁷', '8': '⁸', '9': '⁹',
|
|
49
|
+
'+': '⁺', '-': '⁻', '=': '⁼', '(': '⁽', ')': '⁾',
|
|
50
|
+
'n': 'ⁿ', 'i': 'ⁱ',
|
|
51
|
+
};
|
|
52
|
+
// Subscript digits
|
|
53
|
+
static SUBSCRIPTS = {
|
|
54
|
+
'0': '₀', '1': '₁', '2': '₂', '3': '₃', '4': '₄',
|
|
55
|
+
'5': '₅', '6': '₆', '7': '₇', '8': '₈', '9': '₉',
|
|
56
|
+
'+': '₊', '-': '₋', '=': '₌', '(': '₍', ')': '₎',
|
|
57
|
+
'a': 'ₐ', 'e': 'ₑ', 'h': 'ₕ', 'i': 'ᵢ', 'j': 'ⱼ',
|
|
58
|
+
'k': 'ₖ', 'l': 'ₗ', 'm': 'ₘ', 'n': 'ₙ', 'o': 'ₒ',
|
|
59
|
+
'p': 'ₚ', 'r': 'ᵣ', 's': 'ₛ', 't': 'ₜ', 'u': 'ᵤ',
|
|
60
|
+
'v': 'ᵥ', 'x': 'ₓ',
|
|
61
|
+
};
|
|
62
|
+
constructor(config = {}) {
|
|
63
|
+
this.config = {
|
|
64
|
+
displayMode: false,
|
|
65
|
+
throwOnError: false,
|
|
66
|
+
errorColor: 'red',
|
|
67
|
+
...config,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Convert LaTeX math to Unicode representation
|
|
72
|
+
*/
|
|
73
|
+
convertToUnicode(latex, displayMode = false) {
|
|
74
|
+
try {
|
|
75
|
+
// Try to parse with KaTeX first for validation
|
|
76
|
+
const parsed = katex_1.default.renderToString(latex, {
|
|
77
|
+
displayMode: displayMode || this.config.displayMode,
|
|
78
|
+
throwOnError: this.config.throwOnError || false,
|
|
79
|
+
trust: this.config.trust || false,
|
|
80
|
+
macros: this.config.macros || {},
|
|
81
|
+
});
|
|
82
|
+
// Convert to Unicode representation
|
|
83
|
+
return this.latexToUnicode(latex);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (this.config.throwOnError) {
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
return this.formatError(error.message);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Convert LaTeX to Unicode text
|
|
94
|
+
*/
|
|
95
|
+
latexToUnicode(latex) {
|
|
96
|
+
let result = latex;
|
|
97
|
+
// Remove LaTeX commands we don't need
|
|
98
|
+
result = result.replace(/\\text\{([^}]+)\}/g, '$1');
|
|
99
|
+
result = result.replace(/\\mathrm\{([^}]+)\}/g, '$1');
|
|
100
|
+
result = result.replace(/\\mathbf\{([^}]+)\}/g, '$1');
|
|
101
|
+
result = result.replace(/\\mathit\{([^}]+)\}/g, '$1');
|
|
102
|
+
// Replace backslash commands with Unicode
|
|
103
|
+
for (const [command, symbol] of Object.entries(MathRenderer.UNICODE_SYMBOLS)) {
|
|
104
|
+
const regex = new RegExp(`\\\\${command}\\b`, 'g');
|
|
105
|
+
result = result.replace(regex, symbol);
|
|
106
|
+
}
|
|
107
|
+
// Handle fractions: \frac{a}{b} → a/b
|
|
108
|
+
result = result.replace(/\\frac\{([^}]+)\}\{([^}]+)\}/g, '($1)/($2)');
|
|
109
|
+
// Handle superscripts: x^2 → x²
|
|
110
|
+
result = result.replace(/(\w)\^(\d)/g, (match, base, exp) => {
|
|
111
|
+
return base + (MathRenderer.SUPERSCRIPTS[exp] || `^${exp}`);
|
|
112
|
+
});
|
|
113
|
+
result = result.replace(/(\w)\^\{([^}]+)\}/g, (match, base, exp) => {
|
|
114
|
+
return base + this.toSuperscript(exp);
|
|
115
|
+
});
|
|
116
|
+
// Handle subscripts: x_0 → x₀
|
|
117
|
+
result = result.replace(/(\w)_(\w)/g, (match, base, sub) => {
|
|
118
|
+
return base + (MathRenderer.SUBSCRIPTS[sub] || `_${sub}`);
|
|
119
|
+
});
|
|
120
|
+
result = result.replace(/(\w)_\{([^}]+)\}/g, (match, base, sub) => {
|
|
121
|
+
return base + this.toSubscript(sub);
|
|
122
|
+
});
|
|
123
|
+
// Handle square roots: \sqrt{x} → √x
|
|
124
|
+
result = result.replace(/\\sqrt\{([^}]+)\}/g, '√($1)');
|
|
125
|
+
result = result.replace(/\\sqrt\[3\]\{([^}]+)\}/g, '∛($1)');
|
|
126
|
+
// Handle common environments
|
|
127
|
+
result = result.replace(/\\begin\{([^}]+)\}(.*?)\\end\{\1\}/gs, '$2');
|
|
128
|
+
// Clean up remaining LaTeX artifacts
|
|
129
|
+
result = result.replace(/\\\\/g, '\n');
|
|
130
|
+
result = result.replace(/\\,/g, ' ');
|
|
131
|
+
result = result.replace(/\\;/g, ' ');
|
|
132
|
+
result = result.replace(/[{}]/g, '');
|
|
133
|
+
return result.trim();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Convert text to superscript
|
|
137
|
+
*/
|
|
138
|
+
toSuperscript(text) {
|
|
139
|
+
return text
|
|
140
|
+
.split('')
|
|
141
|
+
.map(char => MathRenderer.SUPERSCRIPTS[char] || char)
|
|
142
|
+
.join('');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Convert text to subscript
|
|
146
|
+
*/
|
|
147
|
+
toSubscript(text) {
|
|
148
|
+
return text
|
|
149
|
+
.split('')
|
|
150
|
+
.map(char => MathRenderer.SUBSCRIPTS[char] || char)
|
|
151
|
+
.join('');
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Format error message
|
|
155
|
+
*/
|
|
156
|
+
formatError(message) {
|
|
157
|
+
return `[Math Error: ${message}]`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Render inline math (compact)
|
|
161
|
+
*/
|
|
162
|
+
renderInline(latex) {
|
|
163
|
+
return this.convertToUnicode(latex, false);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Render block math (centered, bordered)
|
|
167
|
+
*/
|
|
168
|
+
renderBlock(latex) {
|
|
169
|
+
const content = this.convertToUnicode(latex, true);
|
|
170
|
+
const lines = content.split('\n');
|
|
171
|
+
const maxWidth = Math.max(...lines.map(line => line.length));
|
|
172
|
+
// Create bordered box
|
|
173
|
+
const border = '─'.repeat(maxWidth + 4);
|
|
174
|
+
const result = [
|
|
175
|
+
`┌${border}┐`,
|
|
176
|
+
...lines.map(line => `│ ${line.padEnd(maxWidth)} │`),
|
|
177
|
+
`└${border}┘`,
|
|
178
|
+
];
|
|
179
|
+
return result.join('\n');
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Update configuration
|
|
183
|
+
*/
|
|
184
|
+
updateConfig(config) {
|
|
185
|
+
this.config = { ...this.config, ...config };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.MathRenderer = MathRenderer;
|
|
189
|
+
/**
|
|
190
|
+
* Singleton instance
|
|
191
|
+
*/
|
|
192
|
+
exports.mathRenderer = new MathRenderer();
|
|
193
|
+
//# sourceMappingURL=math-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math-renderer.js","sourceRoot":"","sources":["../../src/renderers/math-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mermaid diagram → ASCII art renderer
|
|
3
|
+
* Supports flowchart, sequence, gantt diagrams
|
|
4
|
+
* Pure string output, no blessed dependencies
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Main entry point: parse mermaid code and render to ASCII
|
|
8
|
+
*/
|
|
9
|
+
export declare function renderMermaidToASCII(mermaidCode: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Check if text contains Mermaid diagram
|
|
12
|
+
*/
|
|
13
|
+
export declare function containsMermaid(text: string): boolean;
|
|
14
|
+
//# sourceMappingURL=mermaid-ascii.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-ascii.d.ts","sourceRoot":"","sources":["../../src/renderers/mermaid-ascii.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0BhE;AAgQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mermaid diagram → ASCII art renderer
|
|
4
|
+
* Supports flowchart, sequence, gantt diagrams
|
|
5
|
+
* Pure string output, no blessed dependencies
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.renderMermaidToASCII = renderMermaidToASCII;
|
|
9
|
+
exports.containsMermaid = containsMermaid;
|
|
10
|
+
/**
|
|
11
|
+
* Main entry point: parse mermaid code and render to ASCII
|
|
12
|
+
*/
|
|
13
|
+
function renderMermaidToASCII(mermaidCode) {
|
|
14
|
+
if (!mermaidCode || !mermaidCode.trim()) {
|
|
15
|
+
return '[Empty diagram]';
|
|
16
|
+
}
|
|
17
|
+
const lines = mermaidCode.trim().split('\n');
|
|
18
|
+
const firstLine = lines[0]?.toLowerCase().trim() || '';
|
|
19
|
+
try {
|
|
20
|
+
// Detect diagram type
|
|
21
|
+
if (firstLine.includes('flowchart') || firstLine.includes('graph')) {
|
|
22
|
+
return renderFlowchartASCII(mermaidCode);
|
|
23
|
+
}
|
|
24
|
+
else if (firstLine.includes('sequenceDiagram') || firstLine.includes('sequence')) {
|
|
25
|
+
return renderSequenceDiagramASCII(mermaidCode);
|
|
26
|
+
}
|
|
27
|
+
else if (firstLine.includes('gantt')) {
|
|
28
|
+
return renderGanttASCII(mermaidCode);
|
|
29
|
+
}
|
|
30
|
+
else if (firstLine.includes('classDiagram')) {
|
|
31
|
+
return renderClassDiagramASCII(mermaidCode);
|
|
32
|
+
}
|
|
33
|
+
else if (firstLine.includes('stateDiagram')) {
|
|
34
|
+
return renderStateDiagramASCII(mermaidCode);
|
|
35
|
+
}
|
|
36
|
+
return `[Mermaid diagram: ${firstLine}]`;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return `[Diagram error: ${error instanceof Error ? error.message : 'unknown'}]`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Render flowchart/graph to ASCII
|
|
44
|
+
*/
|
|
45
|
+
function renderFlowchartASCII(code) {
|
|
46
|
+
const nodes = new Map();
|
|
47
|
+
const edges = [];
|
|
48
|
+
const lines = code.split('\n').map(l => l.trim()).filter(Boolean);
|
|
49
|
+
// Parse nodes: ID["Label"], ID{Label}, ID([Label])
|
|
50
|
+
for (const line of lines) {
|
|
51
|
+
const nodeMatch = line.match(/(\w+)\[([\[\(]?)["']?([^"\'\]]*)["']?([\]\)]?)\]/);
|
|
52
|
+
if (nodeMatch) {
|
|
53
|
+
nodes.set(nodeMatch[1], nodeMatch[3] || nodeMatch[1]);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const nodeMatch2 = line.match(/(\w+)\{["']?([^"\'{}]*)["']?\}/);
|
|
57
|
+
if (nodeMatch2) {
|
|
58
|
+
nodes.set(nodeMatch2[1], nodeMatch2[2] || nodeMatch2[1]);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Parse edges: A --> B, A -->|label| B
|
|
63
|
+
for (const line of lines) {
|
|
64
|
+
const edgeMatch = line.match(/(\w+)\s*-+>?\|([^|]*)\|\s*(\w+)/);
|
|
65
|
+
if (edgeMatch) {
|
|
66
|
+
edges.push({
|
|
67
|
+
from: edgeMatch[1],
|
|
68
|
+
to: edgeMatch[3],
|
|
69
|
+
label: edgeMatch[2].trim(),
|
|
70
|
+
});
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const edgeMatch2 = line.match(/(\w+)\s*(?:-->|--|-|->)\s*(\w+)/);
|
|
74
|
+
if (edgeMatch2) {
|
|
75
|
+
edges.push({
|
|
76
|
+
from: edgeMatch2[1],
|
|
77
|
+
to: edgeMatch2[2],
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Build ASCII output
|
|
82
|
+
let output = '';
|
|
83
|
+
// Simple linear flow for now
|
|
84
|
+
if (nodes.size === 0) {
|
|
85
|
+
return '[Empty flowchart]';
|
|
86
|
+
}
|
|
87
|
+
const nodeArray = Array.from(nodes.entries());
|
|
88
|
+
for (let i = 0; i < nodeArray.length; i++) {
|
|
89
|
+
const [id, label] = nodeArray[i];
|
|
90
|
+
const boxWidth = Math.max(label.length + 4, 14);
|
|
91
|
+
const padding = Math.max(0, (boxWidth - label.length - 2) / 2);
|
|
92
|
+
if (i > 0)
|
|
93
|
+
output += '\n ↓\n';
|
|
94
|
+
output += `┌${'─'.repeat(boxWidth - 2)}┐\n`;
|
|
95
|
+
output += `│${' '.repeat(Math.floor(padding))}${label}${' '.repeat(Math.ceil(padding))}│\n`;
|
|
96
|
+
output += `└${'─'.repeat(boxWidth - 2)}┘`;
|
|
97
|
+
}
|
|
98
|
+
return output;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Render sequence diagram to ASCII
|
|
102
|
+
*/
|
|
103
|
+
function renderSequenceDiagramASCII(code) {
|
|
104
|
+
const actors = new Set();
|
|
105
|
+
const messages = [];
|
|
106
|
+
const lines = code.split('\n').map(l => l.trim()).filter(Boolean);
|
|
107
|
+
// Parse participants
|
|
108
|
+
for (const line of lines) {
|
|
109
|
+
const participantMatch = line.match(/participant\s+(\w+)/);
|
|
110
|
+
if (participantMatch) {
|
|
111
|
+
actors.add(participantMatch[1]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Parse messages: A->B: message
|
|
115
|
+
for (const line of lines) {
|
|
116
|
+
const msgMatch = line.match(/(\w+)\s*(?:->|->>)\s*(\w+)\s*:\s*(.+)/);
|
|
117
|
+
if (msgMatch) {
|
|
118
|
+
messages.push({
|
|
119
|
+
from: msgMatch[1],
|
|
120
|
+
to: msgMatch[2],
|
|
121
|
+
text: msgMatch[3].trim(),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (actors.size === 0) {
|
|
126
|
+
return '[Empty sequence diagram]';
|
|
127
|
+
}
|
|
128
|
+
const actorArray = Array.from(actors);
|
|
129
|
+
const colWidth = Math.max(...actorArray.map(a => a.length)) + 2;
|
|
130
|
+
// Header
|
|
131
|
+
let output = '';
|
|
132
|
+
output += '┌';
|
|
133
|
+
for (let i = 0; i < actorArray.length; i++) {
|
|
134
|
+
output += '─'.repeat(colWidth);
|
|
135
|
+
if (i < actorArray.length - 1)
|
|
136
|
+
output += '┬';
|
|
137
|
+
}
|
|
138
|
+
output += '┐\n';
|
|
139
|
+
// Actor names
|
|
140
|
+
output += '│';
|
|
141
|
+
for (const actor of actorArray) {
|
|
142
|
+
const padding = Math.max(0, (colWidth - actor.length) / 2);
|
|
143
|
+
output += ' '.repeat(Math.floor(padding)) + actor + ' '.repeat(Math.ceil(padding));
|
|
144
|
+
output += '│';
|
|
145
|
+
}
|
|
146
|
+
output += '\n';
|
|
147
|
+
// Separator
|
|
148
|
+
output += '├';
|
|
149
|
+
for (let i = 0; i < actorArray.length; i++) {
|
|
150
|
+
output += '─'.repeat(colWidth);
|
|
151
|
+
if (i < actorArray.length - 1)
|
|
152
|
+
output += '┼';
|
|
153
|
+
}
|
|
154
|
+
output += '┤\n';
|
|
155
|
+
// Messages (simplified: show as text)
|
|
156
|
+
for (const msg of messages) {
|
|
157
|
+
output += `│ ${msg.from} → ${msg.to}: ${msg.text}\n`;
|
|
158
|
+
}
|
|
159
|
+
// Footer
|
|
160
|
+
output += '└';
|
|
161
|
+
for (let i = 0; i < actorArray.length; i++) {
|
|
162
|
+
output += '─'.repeat(colWidth);
|
|
163
|
+
if (i < actorArray.length - 1)
|
|
164
|
+
output += '┴';
|
|
165
|
+
}
|
|
166
|
+
output += '┘';
|
|
167
|
+
return output;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Render Gantt chart to ASCII
|
|
171
|
+
*/
|
|
172
|
+
function renderGanttASCII(code) {
|
|
173
|
+
const tasks = [];
|
|
174
|
+
const lines = code.split('\n').map(l => l.trim()).filter(Boolean);
|
|
175
|
+
// Parse tasks: taskName :done, 2024-01-01, 30d
|
|
176
|
+
// Simplified: extract task names and show as bars
|
|
177
|
+
for (const line of lines) {
|
|
178
|
+
// Simple pattern: word : ...
|
|
179
|
+
const taskMatch = line.match(/^(\w+)\s*:/);
|
|
180
|
+
if (taskMatch) {
|
|
181
|
+
const name = taskMatch[1];
|
|
182
|
+
// Extract duration (rough estimate)
|
|
183
|
+
const durationMatch = line.match(/(\d+)([dhw])/);
|
|
184
|
+
let duration = 30;
|
|
185
|
+
if (durationMatch) {
|
|
186
|
+
const num = parseInt(durationMatch[1]);
|
|
187
|
+
const unit = durationMatch[2];
|
|
188
|
+
duration = unit === 'd' ? num : unit === 'w' ? num * 7 : num * 24;
|
|
189
|
+
}
|
|
190
|
+
tasks.push({ name, start: 0, duration: Math.min(duration, 50) });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (tasks.length === 0) {
|
|
194
|
+
return '[Empty Gantt chart]';
|
|
195
|
+
}
|
|
196
|
+
let output = 'Gantt Chart\n';
|
|
197
|
+
output += '─'.repeat(50) + '\n';
|
|
198
|
+
for (const task of tasks) {
|
|
199
|
+
const barLength = Math.max(1, Math.round(task.duration / 2));
|
|
200
|
+
const bar = '█'.repeat(barLength) + '░'.repeat(Math.max(0, 25 - barLength));
|
|
201
|
+
output += `${task.name.padEnd(12)} ${bar} ${task.duration}%\n`;
|
|
202
|
+
}
|
|
203
|
+
return output;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Render class diagram to ASCII
|
|
207
|
+
*/
|
|
208
|
+
function renderClassDiagramASCII(code) {
|
|
209
|
+
const classes = new Map();
|
|
210
|
+
const lines = code.split('\n').map(l => l.trim()).filter(Boolean);
|
|
211
|
+
// Parse class: class ClassName { ...methods... }
|
|
212
|
+
for (const line of lines) {
|
|
213
|
+
const classMatch = line.match(/class\s+(\w+)/);
|
|
214
|
+
if (classMatch) {
|
|
215
|
+
classes.set(classMatch[1], []);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (classes.size === 0) {
|
|
219
|
+
return '[Empty class diagram]';
|
|
220
|
+
}
|
|
221
|
+
let output = '';
|
|
222
|
+
for (const [className, members] of classes) {
|
|
223
|
+
const width = Math.max(className.length + 4, 16);
|
|
224
|
+
output += '┌' + '─'.repeat(width - 2) + '┐\n';
|
|
225
|
+
output += `│ ${className.padEnd(width - 4)} │\n`;
|
|
226
|
+
output += '├' + '─'.repeat(width - 2) + '┤\n';
|
|
227
|
+
output += '└' + '─'.repeat(width - 2) + '┘\n';
|
|
228
|
+
}
|
|
229
|
+
return output;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Render state diagram to ASCII
|
|
233
|
+
*/
|
|
234
|
+
function renderStateDiagramASCII(code) {
|
|
235
|
+
const states = new Set();
|
|
236
|
+
const lines = code.split('\n').map(l => l.trim()).filter(Boolean);
|
|
237
|
+
// Parse states
|
|
238
|
+
for (const line of lines) {
|
|
239
|
+
const stateMatch = line.match(/\[?\*?\]?\s*-->\s*(\w+)/);
|
|
240
|
+
if (stateMatch) {
|
|
241
|
+
states.add(stateMatch[1]);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (states.size === 0) {
|
|
245
|
+
return '[Empty state diagram]';
|
|
246
|
+
}
|
|
247
|
+
let output = '';
|
|
248
|
+
for (const state of states) {
|
|
249
|
+
const width = Math.max(state.length + 4, 12);
|
|
250
|
+
output += '●' + ' '.repeat(2) + state + '\n';
|
|
251
|
+
}
|
|
252
|
+
return output;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Check if text contains Mermaid diagram
|
|
256
|
+
*/
|
|
257
|
+
function containsMermaid(text) {
|
|
258
|
+
return /```mermaid\n/i.test(text) || /^(graph|flowchart|sequenceDiagram|gantt|classDiagram|stateDiagram)/m.test(text);
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=mermaid-ascii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-ascii.js","sourceRoot":"","sources":["../../src/renderers/mermaid-ascii.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { MermaidTTYConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Mermaid diagram renderer for TTY
|
|
4
|
+
* Converts Mermaid diagrams to ASCII art using mermaid-ascii when available
|
|
5
|
+
*/
|
|
6
|
+
export declare class MermaidRenderer {
|
|
7
|
+
private config;
|
|
8
|
+
private useExternalTool;
|
|
9
|
+
constructor(config?: MermaidTTYConfig);
|
|
10
|
+
/**
|
|
11
|
+
* Render mermaid diagram to ASCII (async to support external tool)
|
|
12
|
+
*/
|
|
13
|
+
render(mermaidCode: string): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Internal mermaid rendering (existing logic)
|
|
16
|
+
*/
|
|
17
|
+
private renderInternal;
|
|
18
|
+
/**
|
|
19
|
+
* Render flowchart to ASCII
|
|
20
|
+
*/
|
|
21
|
+
private renderFlowchart;
|
|
22
|
+
/**
|
|
23
|
+
* Get node shape from brackets
|
|
24
|
+
*/
|
|
25
|
+
private getNodeShape;
|
|
26
|
+
/**
|
|
27
|
+
* Build flowchart ASCII representation
|
|
28
|
+
*/
|
|
29
|
+
private buildFlowchartASCII;
|
|
30
|
+
/**
|
|
31
|
+
* Render a single node
|
|
32
|
+
*/
|
|
33
|
+
private renderNode;
|
|
34
|
+
/**
|
|
35
|
+
* Render an edge
|
|
36
|
+
*/
|
|
37
|
+
private renderEdge;
|
|
38
|
+
/**
|
|
39
|
+
* Render sequence diagram
|
|
40
|
+
*/
|
|
41
|
+
private renderSequence;
|
|
42
|
+
/**
|
|
43
|
+
* Build sequence diagram ASCII
|
|
44
|
+
*/
|
|
45
|
+
private buildSequenceASCII;
|
|
46
|
+
/**
|
|
47
|
+
* Render Gantt chart (simplified)
|
|
48
|
+
*/
|
|
49
|
+
private renderGantt;
|
|
50
|
+
/**
|
|
51
|
+
* Render class diagram (simplified)
|
|
52
|
+
*/
|
|
53
|
+
private renderClassDiagram;
|
|
54
|
+
/**
|
|
55
|
+
* Render state diagram (simplified)
|
|
56
|
+
*/
|
|
57
|
+
private renderStateDiagram;
|
|
58
|
+
/**
|
|
59
|
+
* Render pie chart (simplified)
|
|
60
|
+
*/
|
|
61
|
+
private renderPie;
|
|
62
|
+
/**
|
|
63
|
+
* Fallback renderer for unsupported diagrams
|
|
64
|
+
*/
|
|
65
|
+
private renderFallback;
|
|
66
|
+
/**
|
|
67
|
+
* Update configuration
|
|
68
|
+
*/
|
|
69
|
+
updateConfig(config: Partial<MermaidTTYConfig>): void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Singleton instance
|
|
73
|
+
*/
|
|
74
|
+
export declare const mermaidRenderer: MermaidRenderer;
|
|
75
|
+
/**
|
|
76
|
+
* Convenience function for rendering mermaid diagrams
|
|
77
|
+
*/
|
|
78
|
+
export declare function renderMermaidDiagram(mermaidCode: string, config?: MermaidTTYConfig): Promise<string>;
|
|
79
|
+
//# sourceMappingURL=mermaid-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/mermaid-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAiB;gBAE5B,MAAM,GAAE,gBAAqB;IASzC;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BlD;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAgClB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAGxD;AAsBD;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|