@haibun/web-playwright 1.58.1 → 1.60.0

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.
Files changed (181) hide show
  1. package/build/cycles.d.ts +4 -0
  2. package/build/cycles.d.ts.map +1 -0
  3. package/build/cycles.js +83 -0
  4. package/build/cycles.js.map +1 -0
  5. package/build/interactionSteps.d.ts +221 -0
  6. package/build/interactionSteps.d.ts.map +1 -0
  7. package/build/interactionSteps.js +515 -0
  8. package/build/interactionSteps.js.map +1 -0
  9. package/build/monitor/LogEntry.d.ts +4 -0
  10. package/build/monitor/LogEntry.d.ts.map +1 -0
  11. package/build/monitor/LogEntry.js +4 -0
  12. package/build/monitor/LogEntry.js.map +1 -0
  13. package/build/monitor/MonitorHandler.d.ts.map +1 -1
  14. package/build/monitor/MonitorHandler.js +25 -51
  15. package/build/monitor/MonitorHandler.js.map +1 -1
  16. package/build/monitor/artifactDisplayBase.d.ts +2 -0
  17. package/build/monitor/artifactDisplayBase.d.ts.map +1 -0
  18. package/build/monitor/artifactDisplayBase.js +2 -0
  19. package/build/monitor/artifactDisplayBase.js.map +1 -0
  20. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts +9 -0
  21. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts.map +1 -0
  22. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js +31 -0
  23. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js.map +1 -0
  24. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts +9 -0
  25. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts.map +1 -0
  26. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js +17 -0
  27. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js.map +1 -0
  28. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts +9 -0
  29. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts.map +1 -0
  30. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js +18 -0
  31. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js.map +1 -0
  32. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts +14 -0
  33. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts.map +1 -0
  34. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js +69 -0
  35. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js.map +1 -0
  36. package/build/monitor/artifactDisplays/MermaidDiagram.d.ts +22 -0
  37. package/build/monitor/artifactDisplays/MermaidDiagram.d.ts.map +1 -0
  38. package/build/monitor/artifactDisplays/MermaidDiagram.js +199 -0
  39. package/build/monitor/artifactDisplays/MermaidDiagram.js.map +1 -0
  40. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts +9 -0
  41. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts.map +1 -0
  42. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js +38 -0
  43. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js.map +1 -0
  44. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts +32 -0
  45. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts.map +1 -0
  46. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js +258 -0
  47. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js.map +1 -0
  48. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts +9 -0
  49. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts.map +1 -0
  50. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js +19 -0
  51. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js.map +1 -0
  52. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts +9 -0
  53. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts.map +1 -0
  54. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js +21 -0
  55. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js.map +1 -0
  56. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts +9 -0
  57. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts.map +1 -0
  58. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js +17 -0
  59. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js.map +1 -0
  60. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts +20 -0
  61. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts.map +1 -0
  62. package/build/monitor/artifactDisplays/artifactDisplayBase.js +40 -0
  63. package/build/monitor/artifactDisplays/artifactDisplayBase.js.map +1 -0
  64. package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts +9 -0
  65. package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts.map +1 -0
  66. package/build/monitor/artifactDisplays/htmlArtifactDisplay.js +31 -0
  67. package/build/monitor/artifactDisplays/htmlArtifactDisplay.js.map +1 -0
  68. package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts +9 -0
  69. package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts.map +1 -0
  70. package/build/monitor/artifactDisplays/imageArtifactDisplay.js +17 -0
  71. package/build/monitor/artifactDisplays/imageArtifactDisplay.js.map +1 -0
  72. package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts +9 -0
  73. package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts.map +1 -0
  74. package/build/monitor/artifactDisplays/jsonArtifactDisplay.js +18 -0
  75. package/build/monitor/artifactDisplays/jsonArtifactDisplay.js.map +1 -0
  76. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts +14 -0
  77. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts.map +1 -0
  78. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js +72 -0
  79. package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js.map +1 -0
  80. package/build/monitor/artifactDisplays/mermaidDiagram.d.ts +22 -0
  81. package/build/monitor/artifactDisplays/mermaidDiagram.d.ts.map +1 -0
  82. package/build/monitor/artifactDisplays/mermaidDiagram.js +199 -0
  83. package/build/monitor/artifactDisplays/mermaidDiagram.js.map +1 -0
  84. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts +9 -0
  85. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts.map +1 -0
  86. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js +36 -0
  87. package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js.map +1 -0
  88. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts +32 -0
  89. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts.map +1 -0
  90. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js +299 -0
  91. package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js.map +1 -0
  92. package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts +9 -0
  93. package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts.map +1 -0
  94. package/build/monitor/artifactDisplays/speechArtifactDisplay.js +38 -0
  95. package/build/monitor/artifactDisplays/speechArtifactDisplay.js.map +1 -0
  96. package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts +9 -0
  97. package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts.map +1 -0
  98. package/build/monitor/artifactDisplays/videoArtifactDisplay.js +22 -0
  99. package/build/monitor/artifactDisplays/videoArtifactDisplay.js.map +1 -0
  100. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts +9 -0
  101. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts.map +1 -0
  102. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js +30 -0
  103. package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js.map +1 -0
  104. package/build/monitor/graph/feature-bases.d.ts +5 -0
  105. package/build/monitor/graph/feature-bases.d.ts.map +1 -0
  106. package/build/monitor/graph/feature-bases.js +36 -0
  107. package/build/monitor/graph/feature-bases.js.map +1 -0
  108. package/build/monitor/graph/generateMermaidGraph.d.ts +4 -0
  109. package/build/monitor/graph/generateMermaidGraph.d.ts.map +1 -0
  110. package/build/monitor/graph/generateMermaidGraph.js +142 -0
  111. package/build/monitor/graph/generateMermaidGraph.js.map +1 -0
  112. package/build/monitor/graph/graphUtils.d.ts +3 -0
  113. package/build/monitor/graph/graphUtils.d.ts.map +1 -0
  114. package/build/monitor/graph/graphUtils.js +16 -0
  115. package/build/monitor/graph/graphUtils.js.map +1 -0
  116. package/build/monitor/graph/mermaidGraphLinks.d.ts +3 -0
  117. package/build/monitor/graph/mermaidGraphLinks.d.ts.map +1 -0
  118. package/build/monitor/graph/mermaidGraphLinks.js +31 -0
  119. package/build/monitor/graph/mermaidGraphLinks.js.map +1 -0
  120. package/build/monitor/htmlArtifactDisplay.d.ts +2 -0
  121. package/build/monitor/htmlArtifactDisplay.d.ts.map +1 -0
  122. package/build/monitor/htmlArtifactDisplay.js +2 -0
  123. package/build/monitor/htmlArtifactDisplay.js.map +1 -0
  124. package/build/monitor/imageArtifactDisplay.d.ts +2 -0
  125. package/build/monitor/imageArtifactDisplay.d.ts.map +1 -0
  126. package/build/monitor/imageArtifactDisplay.js +2 -0
  127. package/build/monitor/imageArtifactDisplay.js.map +1 -0
  128. package/build/monitor/jsonArtifactDisplay.d.ts +2 -0
  129. package/build/monitor/jsonArtifactDisplay.d.ts.map +1 -0
  130. package/build/monitor/jsonArtifactDisplay.js +2 -0
  131. package/build/monitor/jsonArtifactDisplay.js.map +1 -0
  132. package/build/monitor/jsonArtifactHTTPTrace.d.ts +2 -0
  133. package/build/monitor/jsonArtifactHTTPTrace.d.ts.map +1 -0
  134. package/build/monitor/jsonArtifactHTTPTrace.js +2 -0
  135. package/build/monitor/jsonArtifactHTTPTrace.js.map +1 -0
  136. package/build/monitor/messages.d.ts +9 -21
  137. package/build/monitor/messages.d.ts.map +1 -1
  138. package/build/monitor/messages.js +83 -217
  139. package/build/monitor/messages.js.map +1 -1
  140. package/build/monitor/monitor.d.ts +9 -4
  141. package/build/monitor/monitor.d.ts.map +1 -1
  142. package/build/monitor/monitor.js +8 -18
  143. package/build/monitor/monitor.js.map +1 -1
  144. package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts +2 -0
  145. package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts.map +1 -0
  146. package/build/monitor/resolvedFeaturesArtifactDisplay.js +2 -0
  147. package/build/monitor/resolvedFeaturesArtifactDisplay.js.map +1 -0
  148. package/build/monitor/sequenceDiagramGenerator.d.ts +32 -0
  149. package/build/monitor/sequenceDiagramGenerator.d.ts.map +1 -0
  150. package/build/monitor/sequenceDiagramGenerator.js +299 -0
  151. package/build/monitor/sequenceDiagramGenerator.js.map +1 -0
  152. package/build/monitor/speechArtifactDisplay.d.ts +2 -0
  153. package/build/monitor/speechArtifactDisplay.d.ts.map +1 -0
  154. package/build/monitor/speechArtifactDisplay.js +2 -0
  155. package/build/monitor/speechArtifactDisplay.js.map +1 -0
  156. package/build/monitor/test-utils.d.ts +9 -0
  157. package/build/monitor/test-utils.d.ts.map +1 -0
  158. package/build/monitor/test-utils.js +70 -0
  159. package/build/monitor/test-utils.js.map +1 -0
  160. package/build/monitor/videoArtifactDisplay.d.ts +2 -0
  161. package/build/monitor/videoArtifactDisplay.d.ts.map +1 -0
  162. package/build/monitor/videoArtifactDisplay.js +2 -0
  163. package/build/monitor/videoArtifactDisplay.js.map +1 -0
  164. package/build/monitor/videoStartArtifactDisplay.d.ts +2 -0
  165. package/build/monitor/videoStartArtifactDisplay.d.ts.map +1 -0
  166. package/build/monitor/videoStartArtifactDisplay.js +2 -0
  167. package/build/monitor/videoStartArtifactDisplay.js.map +1 -0
  168. package/build/web-playwright.d.ts +78 -77
  169. package/build/web-playwright.d.ts.map +1 -1
  170. package/build/web-playwright.js +12 -571
  171. package/build/web-playwright.js.map +1 -1
  172. package/package.json +9 -5
  173. package/web/monitor.html +261 -260
  174. package/build/monitor/monitorHandler.d.ts +0 -16
  175. package/build/monitor/monitorHandler.d.ts.map +0 -1
  176. package/build/monitor/monitorHandler.js +0 -108
  177. package/build/monitor/monitorHandler.js.map +0 -1
  178. package/build/monitor/vite.config.d.ts +0 -4
  179. package/build/monitor/vite.config.d.ts.map +0 -1
  180. package/build/monitor/vite.config.js +0 -91
  181. package/build/monitor/vite.config.js.map +0 -1
@@ -0,0 +1,299 @@
1
+ import mermaid from 'mermaid';
2
+ import { shortenURI } from '@haibun/core/build/lib/util/index.js';
3
+ // Helper function for sanitization
4
+ const sanitizeMermaidContent = (message) => {
5
+ let sanitized = message.replace(/"/g, "'"); // Replace double quotes
6
+ // IMPORTANT: Escape semicolon FIRST to avoid breaking other entities
7
+ sanitized = sanitized.replace(/;/g, '#59;');
8
+ sanitized = sanitized.replace(/\(/g, '#40;');
9
+ sanitized = sanitized.replace(/\)/g, '#41;');
10
+ sanitized = sanitized.replace(/,/g, '#44;');
11
+ return sanitized;
12
+ };
13
+ const jsonFilters = {
14
+ request: {
15
+ method: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
16
+ accept: ['application/json'],
17
+ },
18
+ response: {
19
+ type: ['application/json'],
20
+ },
21
+ };
22
+ export class SequenceDiagramGenerator {
23
+ needsUpdate = true; // Start with true, assume an update is needed initially
24
+ diagramLines = ['sequenceDiagram'];
25
+ pageNames = {};
26
+ pageCounter = 1;
27
+ participantAdded = {};
28
+ mermaidContainerId;
29
+ parentElement;
30
+ currentDiagramString = ''; // Store the last successfully rendered/generated diagram
31
+ constructor(id, parentElement) {
32
+ this.mermaidContainerId = `mermaid-container-${id}`;
33
+ this.parentElement = parentElement;
34
+ this.ensureMermaidContainer();
35
+ this.currentDiagramString = this.buildDiagramString(); // Initialize with empty diagram
36
+ }
37
+ ensureMermaidContainer() {
38
+ let container = this.parentElement.querySelector(`#${this.mermaidContainerId}`);
39
+ if (!container) {
40
+ container = document.createElement('div');
41
+ container.id = this.mermaidContainerId;
42
+ container.className = 'mermaid'; // Add class for mermaid to target
43
+ this.parentElement.appendChild(container);
44
+ }
45
+ }
46
+ // Add participant declaration if not already added
47
+ addParticipant(alias, name) {
48
+ if (!this.participantAdded[alias]) {
49
+ let insertIndex = 1;
50
+ for (let i = this.diagramLines.length - 1; i >= 1; i--) {
51
+ if (this.diagramLines[i].startsWith('participant ')) {
52
+ insertIndex = i + 1;
53
+ break;
54
+ }
55
+ }
56
+ this.diagramLines.splice(insertIndex, 0, `participant ${alias} as ${name}`);
57
+ this.participantAdded[alias] = true;
58
+ }
59
+ }
60
+ resetDiagramState() {
61
+ this.diagramLines = ['sequenceDiagram'];
62
+ this.pageNames = {};
63
+ this.pageCounter = 1;
64
+ this.participantAdded = {};
65
+ // No: this.needsUpdate = true; // Don't set here, compare diagram strings later
66
+ }
67
+ buildDiagramString() {
68
+ if (this.diagramLines.length <= 1) {
69
+ return 'sequenceDiagram'; // Canonical empty diagram
70
+ }
71
+ return this.diagramLines.join("\n");
72
+ }
73
+ generateDiagramFromHistory() {
74
+ // const oldDiagramString = this.buildDiagramString(); // Not needed with currentDiagramString logic
75
+ this.resetDiagramState(); // Resets diagramLines
76
+ if (window.haibunLogData) {
77
+ const httpTraceEvents = window.haibunLogData.filter(entry => entry.messageContext?.artifact?.artifactType === 'json/http/trace' &&
78
+ entry.messageContext.artifact.httpEvent !== 'route');
79
+ for (const logEntry of httpTraceEvents) {
80
+ // Ensure messageContext and artifact are defined before trying to cast and access httpEvent
81
+ if (logEntry.messageContext && logEntry.messageContext.artifact) {
82
+ const artifact = logEntry.messageContext.artifact;
83
+ if (artifact && artifact.trace && typeof artifact.trace === 'object') {
84
+ this.processSingleEvent(artifact.trace, artifact.httpEvent);
85
+ }
86
+ }
87
+ }
88
+ }
89
+ // const newDiagramString = this.buildDiagramString(); // Not needed with currentDiagramString logic
90
+ // Revised logic for needsUpdate:
91
+ // processSingleEvent will set it to true if it adds anything.
92
+ // Here, we compare the generated diagram with the *last rendered* one.
93
+ const finalDiagram = this.buildDiagramString();
94
+ if (finalDiagram === this.currentDiagramString) {
95
+ this.needsUpdate = false; // No change from what's current (or last attempted render)
96
+ }
97
+ else {
98
+ this.needsUpdate = true; // It has changed
99
+ }
100
+ // Special case: if finalDiagram is empty and currentDiagramString was also empty, it's still false.
101
+ // This case is covered if currentDiagramString was 'sequenceDiagram' and finalDiagram is also 'sequenceDiagram'.
102
+ // If needsUpdate was false (meaning currentDiagramString was successfully rendered or was the initial empty state)
103
+ // and finalDiagram is the same, it remains false.
104
+ }
105
+ // Renamed from processEvent to avoid confusion, as processEvent might imply adding a single new event
106
+ processSingleEvent(trace, httpEvent, filters = jsonFilters) {
107
+ this.needsUpdate = true; // Set flag immediately
108
+ const { requestingPage, requestingURL, method, status, statusText, headers } = trace;
109
+ // Use URL hostname as the server participant
110
+ let serverAlias = 'UnknownServerAlias'; // Default if URL is missing
111
+ let serverName = 'UnknownServer';
112
+ if (requestingURL) {
113
+ try {
114
+ const url = new URL(requestingURL);
115
+ serverName = url.hostname;
116
+ if (url.hostname === 'localhost' && url.port) {
117
+ serverName = `${url.hostname}:${url.port}`;
118
+ }
119
+ // Handle empty hostname (e.g., for about:blank)
120
+ if (serverName) {
121
+ // Alias should be fully sanitized (lowercase, no dots, colons, hyphens)
122
+ serverAlias = serverName.toLowerCase().replace(/[.:-]/g, '');
123
+ }
124
+ else {
125
+ serverAlias = 'sourcealias'; // For data URIs or similar with no hostname
126
+ serverName = 'Source';
127
+ }
128
+ }
129
+ catch (e) {
130
+ serverAlias = 'invalidurlalias';
131
+ serverName = 'InvalidURL';
132
+ }
133
+ }
134
+ this.addParticipant(serverAlias, serverName); // serverName will have original casing and port if localhost
135
+ if (skipEvent(filters, httpEvent, serverName, trace)) {
136
+ return;
137
+ }
138
+ let pageAlias = 'UnknownPageAlias';
139
+ let pageParticipantName = 'UnknownPage';
140
+ if (requestingPage) { // requestingPage is the pageId
141
+ const existingAlias = this.pageNames[requestingPage];
142
+ if (!existingAlias) {
143
+ // Use requestingPage directly for alias and name if it's the first time.
144
+ // Alias should be sanitized, name should be original
145
+ pageAlias = requestingPage.toLowerCase().replace(/[.-]/g, ''); // Sanitize for alias, ensure lowercase
146
+ pageParticipantName = requestingPage; // Use as is for display name
147
+ // If still generic after sanitization (e.g. empty string if requestingPage was just '.')
148
+ // or if the sanitized alias is empty.
149
+ if (!pageAlias.trim()) {
150
+ pageAlias = `Page${this.pageCounter}`; // Fallback to numbered alias
151
+ // pageParticipantName remains `requestingPage` unless it was also problematic,
152
+ // but `requestingPage` itself is used as the key in `this.pageNames`
153
+ // so it should generally be usable as a display name.
154
+ // If `requestingPage` was, for example, just ".", `pageParticipantName` would be ".".
155
+ // Mermaid might handle this, or it might look odd.
156
+ // For consistency, if alias needs fallback, name might too if it was also problematic.
157
+ // However, the tests expect `requestingPage` to be used as the name.
158
+ }
159
+ this.pageNames[requestingPage] = pageAlias;
160
+ this.addParticipant(pageAlias, pageParticipantName); // pageParticipantName has original casing
161
+ this.pageCounter++;
162
+ }
163
+ else {
164
+ pageAlias = existingAlias;
165
+ const participantLine = this.diagramLines.find(line => line.startsWith(`participant ${pageAlias} as `));
166
+ if (participantLine) {
167
+ pageParticipantName = participantLine.substring(participantLine.indexOf(' as ') + 4);
168
+ }
169
+ else {
170
+ pageParticipantName = pageAlias; // Fallback
171
+ }
172
+ }
173
+ }
174
+ else {
175
+ // Fallback if no requestingPage ID is available
176
+ pageAlias = 'ClientPage';
177
+ pageParticipantName = 'Client Page';
178
+ this.addParticipant(pageAlias, pageParticipantName);
179
+ }
180
+ if (method && requestingURL) {
181
+ const message = sanitizeMermaidContent(`${method} ${shortenURI(requestingURL)}`); // Removed boolean argument
182
+ this.diagramLines.push(`${pageAlias}->>${serverAlias}: ${message}`);
183
+ // Notes for headers
184
+ if (headers) {
185
+ if (headers.referer) {
186
+ const note = shortenURI(sanitizeMermaidContent(`Referer: ${headers.referer}`));
187
+ this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
188
+ }
189
+ if (headers["accept"]) {
190
+ const note = sanitizeMermaidContent(`Accept: ${headers["accept"]}`);
191
+ this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
192
+ }
193
+ if (headers["content-type"]) {
194
+ const note = sanitizeMermaidContent(`Content-type: ${headers['content-type']}`);
195
+ this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
196
+ }
197
+ }
198
+ }
199
+ if (status) {
200
+ const message = sanitizeMermaidContent(`${status} ${statusText || ''}`);
201
+ this.diagramLines.push(`${serverAlias}-->>${pageAlias}: ${message}`);
202
+ }
203
+ }
204
+ getDiagram() {
205
+ return this.buildDiagramString();
206
+ }
207
+ // Getter for testing purposes
208
+ getNeedsUpdate() {
209
+ return this.needsUpdate;
210
+ }
211
+ // Setter for testing purposes, to simulate rendering having occurred.
212
+ setNeedsUpdate(value) {
213
+ this.needsUpdate = value;
214
+ }
215
+ async update() {
216
+ this.generateDiagramFromHistory(); // This will set needsUpdate based on comparison with currentDiagramString
217
+ const mermaidContainer = this.parentElement.querySelector(`#${this.mermaidContainerId}`);
218
+ if (!mermaidContainer) {
219
+ console.error("Mermaid container not found for ID:", this.mermaidContainerId);
220
+ // needsUpdate might be true, but we can't render. It should remain true.
221
+ return;
222
+ }
223
+ // Only update the DOM and render if necessary
224
+ // Also check if the container is empty but an update is needed (e.g. first run, or diagram changed to empty)
225
+ if (!this.needsUpdate && mermaidContainer.querySelector('svg')) {
226
+ return; // Already rendered and no update needed
227
+ }
228
+ const diagramToRender = this.getDiagram();
229
+ try {
230
+ mermaid.initialize({ maxTextSize: 900000, startOnLoad: false }); // Added startOnLoad: false
231
+ mermaidContainer.innerHTML = '';
232
+ const insert = `<pre class="mermaid">${diagramToRender}</pre>`;
233
+ mermaidContainer.insertAdjacentHTML('beforeend', insert);
234
+ const mermaidElement = mermaidContainer.querySelector('.mermaid');
235
+ if (mermaidElement) {
236
+ await mermaid.run({ nodes: [mermaidElement] });
237
+ console.log("Mermaid diagram rendered.");
238
+ this.currentDiagramString = diagramToRender; // Update current string after successful render
239
+ this.needsUpdate = false;
240
+ }
241
+ else {
242
+ console.error("Mermaid pre element not found after insert.");
243
+ mermaidContainer.innerHTML = `<pre>Error: Could not find .mermaid element for rendering.</pre>`;
244
+ // needsUpdate remains true as render failed to initiate
245
+ }
246
+ }
247
+ catch (e) {
248
+ console.error("Failed Mermaid diagram definition:\\\\n", diagramToRender);
249
+ console.error("Error rendering Mermaid diagram:", e);
250
+ const detailedError = (typeof e === 'object' && e !== null && 'str' in e) ? e.str : null;
251
+ const errorMessage = detailedError || (e instanceof Error ? e.message : String(e));
252
+ mermaidContainer.innerHTML = `<pre>Error rendering Mermaid diagram:\\\\n\\\\n${errorMessage}\\\\n\\\\n--- Diagram Definition ---\\n${diagramToRender}</pre>`;
253
+ // Even on error, we consider this "render attempt" complete.
254
+ // Setting currentDiagramString to the one that failed, and needsUpdate to false prevents re-looping on a bad diagram.
255
+ this.currentDiagramString = diagramToRender;
256
+ this.needsUpdate = false;
257
+ }
258
+ }
259
+ }
260
+ export function skipEvent(filters, httpEvent, serverName, { requestingURL, headers }) {
261
+ if (!serverName) {
262
+ // console.info('No server name found, skipping result.');
263
+ return true;
264
+ }
265
+ if (requestingURL === 'about:blank') {
266
+ // console.info('Requesting URL is about:blank, skipping result.');
267
+ return true;
268
+ }
269
+ if (httpEvent === 'request') {
270
+ if (headers && headers.accept) {
271
+ const acceptHeader = headers.accept;
272
+ if (!filters.request.accept.some(filterValue => acceptHeader.includes(filterValue))) {
273
+ // console.info('qx', acceptHeader, filters.request.accept);
274
+ return true;
275
+ }
276
+ else {
277
+ // console.info('qY', acceptHeader, filters.request.accept);
278
+ }
279
+ }
280
+ }
281
+ else if (httpEvent === 'response') {
282
+ if (headers && headers['content-type']) {
283
+ const contentTypeHeader = headers['content-type'];
284
+ if (!filters.response.type.some(filterValue => contentTypeHeader.includes(filterValue))) {
285
+ // console.info('px', contentTypeHeader);
286
+ return true;
287
+ }
288
+ else {
289
+ // console.info('pY', contentTypeHeader);
290
+ }
291
+ }
292
+ }
293
+ else {
294
+ console.warn(`Unknown HTTP event type: ${httpEvent}`);
295
+ return true;
296
+ }
297
+ return false;
298
+ }
299
+ //# sourceMappingURL=sequenceDiagramGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceDiagramGenerator.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/sequenceDiagramGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { TArtifactSpeech } from '@haibun/core/build/lib/interfaces/logger.js';
2
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
3
+ export declare class SpeechArtifactDisplay extends ArtifactDisplay {
4
+ protected artifact: TArtifactSpeech;
5
+ readonly placementTarget = "details";
6
+ constructor(artifact: TArtifactSpeech);
7
+ render(container: HTMLElement): void;
8
+ }
9
+ //# sourceMappingURL=speechArtifactDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechArtifactDisplay.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/speechArtifactDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,eAAe;IAI1C,SAAS,CAAC,QAAQ,EAAE,eAAe;IAF/C,QAAQ,CAAC,eAAe,aAAa;gBAEf,QAAQ,EAAE,eAAe;IAMxC,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CA0B9C"}
@@ -0,0 +1,38 @@
1
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
2
+ export class SpeechArtifactDisplay extends ArtifactDisplay {
3
+ artifact;
4
+ // placementTarget is still useful for LogMessageContent/LogEntry to know how to handle this artifact.
5
+ placementTarget = 'details';
6
+ constructor(artifact) {
7
+ super(artifact);
8
+ this.artifact = artifact;
9
+ // No element creation or manipulation in the constructor.
10
+ }
11
+ // render is now public as per the updated ArtifactDisplay base class
12
+ render(container) {
13
+ const typedArtifact = this.artifact;
14
+ container.innerHTML = ''; // Clear "Artifact is loading..." or previous content
15
+ const audioElement = document.createElement('audio');
16
+ audioElement.src = typedArtifact.path;
17
+ audioElement.controls = true;
18
+ audioElement.style.width = '320px';
19
+ audioElement.addEventListener('click', () => {
20
+ // Prevent click on controls from re-triggering play/pause logic if not intended
21
+ // However, standard audio controls handle their own play/pause.
22
+ // This listener is more for if the entire audio element area is clicked.
23
+ // For simplicity, let's assume clicking anywhere on the audio element implies play intent.
24
+ if (audioElement.paused) {
25
+ audioElement.play().catch(error => {
26
+ console.error('Error playing audio:', error);
27
+ // Optionally, display an error in the container if play fails
28
+ // container.innerHTML += `<p class="haibun-artifact-error">Could not play audio: ${(error as Error).message}</p>`;
29
+ });
30
+ }
31
+ else {
32
+ // audioElement.pause(); // Optional: click to pause if already playing
33
+ }
34
+ });
35
+ container.appendChild(audioElement);
36
+ }
37
+ }
38
+ //# sourceMappingURL=speechArtifactDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechArtifactDisplay.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/speechArtifactDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAIhC;IAHtB,sGAAsG;IAC7F,eAAe,GAAG,SAAS,CAAC;IAErC,YAAsB,QAAyB;QAC3C,KAAK,CAAC,QAAQ,CAAC,CAAC;QADE,aAAQ,GAAR,QAAQ,CAAiB;QAE3C,0DAA0D;IAC9D,CAAC;IAED,qEAAqE;IAC9D,MAAM,CAAC,SAAsB;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,QAA2B,CAAC;QACvD,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,qDAAqD;QAE/E,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;QACtC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAEnC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACxC,gFAAgF;YAChF,gEAAgE;YAChE,yEAAyE;YACzE,2FAA2F;YAC3F,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACtB,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBAC7C,8DAA8D;oBAC9D,mHAAmH;gBACvH,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,uEAAuE;YAC3E,CAAC;QACL,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { TArtifactVideo } from '@haibun/core/build/lib/interfaces/logger.js';
2
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
3
+ export declare class VideoArtifactDisplay extends ArtifactDisplay {
4
+ protected artifact: TArtifactVideo;
5
+ readonly placementTarget: 'details' | 'haibun-video';
6
+ constructor(artifact: TArtifactVideo);
7
+ render(container: HTMLElement): void;
8
+ }
9
+ //# sourceMappingURL=videoArtifactDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoArtifactDisplay.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/videoArtifactDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,qBAAa,oBAAqB,SAAQ,eAAe;IAEzC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAD9C,QAAQ,CAAC,eAAe,EAAE,SAAS,GAAG,cAAc,CAAC;gBAC/B,QAAQ,EAAE,cAAc;IAQvC,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAO9C"}
@@ -0,0 +1,22 @@
1
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
2
+ export class VideoArtifactDisplay extends ArtifactDisplay {
3
+ artifact;
4
+ placementTarget;
5
+ constructor(artifact) {
6
+ super(artifact); // type is 'video' by default from TArtifactVideo
7
+ this.artifact = artifact;
8
+ // Element creation is deferred to render method
9
+ this.placementTarget = document.querySelector('#haibun-video') ? 'haibun-video' : 'details';
10
+ if (this.placementTarget === 'details') {
11
+ console.info('Cannot find #haibun-video container; video will be appended to details on toggle.');
12
+ }
13
+ }
14
+ render(container) {
15
+ const videoElement = document.createElement('video');
16
+ videoElement.controls = true;
17
+ videoElement.style.width = '320px'; // Or use CSS classes
18
+ videoElement.src = this.artifact.path;
19
+ container.replaceChildren(videoElement); // Clear placeholder and add video
20
+ }
21
+ }
22
+ //# sourceMappingURL=videoArtifactDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoArtifactDisplay.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/videoArtifactDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAE/B;IADb,eAAe,CAA6B;IACrD,YAAsB,QAAwB;QAC1C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;QADhD,aAAQ,GAAR,QAAQ,CAAgB;QAE1C,gDAAgD;QAChD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;IACM,MAAM,CAAC,SAAsB;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,qBAAqB;QACzD,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,kCAAkC;IAC/E,CAAC;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { TArtifactVideoStart } from '@haibun/core/build/lib/interfaces/logger.js';
2
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
3
+ export declare class VideoStartArtifactDisplay extends ArtifactDisplay {
4
+ protected artifact: TArtifactVideoStart;
5
+ readonly placementTarget = "body";
6
+ constructor(artifact: TArtifactVideoStart);
7
+ render(container: HTMLElement): void;
8
+ }
9
+ //# sourceMappingURL=videoStartArtifactDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoStartArtifactDisplay.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/videoStartArtifactDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,qBAAa,yBAA0B,SAAQ,eAAe;IAE9C,SAAS,CAAC,QAAQ,EAAE,mBAAmB;IADnD,QAAQ,CAAC,eAAe,UAAU;gBACZ,QAAQ,EAAE,mBAAmB;IAI5C,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAmB9C"}
@@ -0,0 +1,30 @@
1
+ import { ArtifactDisplay } from './artifactDisplayBase.js';
2
+ export class VideoStartArtifactDisplay extends ArtifactDisplay {
3
+ artifact;
4
+ placementTarget = 'body';
5
+ constructor(artifact) {
6
+ super(artifact); // type is 'video/start' by default from TArtifactVideoStart
7
+ this.artifact = artifact;
8
+ // Element creation is deferred to render method
9
+ }
10
+ render(container) {
11
+ // For VideoStart, we might not render a visible element in the container itself,
12
+ // but rather use this to signal something, or if it were to display info,
13
+ // it would be done here.
14
+ // For now, let's assume it might want to display its start time if it were visible.
15
+ const span = document.createElement('span');
16
+ span.id = 'haibun-video-start'; // This id might be used by other logic
17
+ span.dataset.start = `${this.artifact.start}`;
18
+ span.textContent = `Video start event: ${this.artifact.start}`;
19
+ // Since this is 'body' placement, the container passed might be a generic div
20
+ // created by LogMessageContent.renderSpecialPlacementArtifact.
21
+ // If this artifact is meant to be invisible or just a marker,
22
+ // it might not even append to the container or clear it.
23
+ // However, to be consistent with other renderers that populate the container:
24
+ container.replaceChildren(span);
25
+ // If it's truly a marker for document.body, it might do this instead:
26
+ // document.body.appendChild(span); // Or update an existing element on the body
27
+ // For now, populating the provided container is the standard.
28
+ }
29
+ }
30
+ //# sourceMappingURL=videoStartArtifactDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoStartArtifactDisplay.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/videoStartArtifactDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAEpC;IADb,eAAe,GAAG,MAAM,CAAC;IAClC,YAAsB,QAA6B;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,4DAA4D;QAD3D,aAAQ,GAAR,QAAQ,CAAqB;QAE/C,gDAAgD;IACpD,CAAC;IACM,MAAM,CAAC,SAAsB;QAChC,iFAAiF;QACjF,0EAA0E;QAC1E,yBAAyB;QACzB,oFAAoF;QACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC,uCAAuC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,sBAAsB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/D,8EAA8E;QAC9E,+DAA+D;QAC/D,8DAA8D;QAC9D,yDAAyD;QACzD,8EAA8E;QAC9E,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChC,sEAAsE;QACtE,gFAAgF;QAChF,8DAA8D;IAClE,CAAC;CACJ"}
@@ -0,0 +1,5 @@
1
+ import { TResolvedFeature } from "@haibun/core/build/lib/defs.js";
2
+ export declare function getBaseLocations(resolvedFeatures: any): Set<unknown>;
3
+ export declare function getBackgroundFeatures(resolvedFeatures: TResolvedFeature[]): Set<string>;
4
+ export declare function getBaseFeatures(resolvedFeatures: any): Map<any, any>;
5
+ //# sourceMappingURL=feature-bases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-bases.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/feature-bases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,gBAAgB,KAAA,gBAShD;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,eAWzE;AAED,wBAAgB,eAAe,CAAC,gBAAgB,KAAA,iBAY/C"}
@@ -0,0 +1,36 @@
1
+ export function getBaseLocations(resolvedFeatures) {
2
+ // Collect all unique base locations from features
3
+ const baseLocations = new Set();
4
+ resolvedFeatures.forEach(f => {
5
+ if (f.base && typeof f.base === 'string' && f.base.trim() !== '') {
6
+ baseLocations.add(f.base);
7
+ }
8
+ });
9
+ return baseLocations;
10
+ }
11
+ export function getBackgroundFeatures(resolvedFeatures) {
12
+ const backgroundPaths = new Set();
13
+ resolvedFeatures.forEach(f => {
14
+ const steps = f.featureSteps ?? [];
15
+ steps.forEach(step => {
16
+ if (step.path && step.path !== f.path) {
17
+ backgroundPaths.add(step.path);
18
+ }
19
+ });
20
+ });
21
+ return backgroundPaths;
22
+ }
23
+ export function getBaseFeatures(resolvedFeatures) {
24
+ // Map of base path to the resolved feature object
25
+ const bases = new Map();
26
+ resolvedFeatures.forEach(f => {
27
+ if (f.base && typeof f.base === 'string' && f.base.trim() !== '') {
28
+ const baseFeature = resolvedFeatures.find(rf => rf.path === f.base);
29
+ if (baseFeature) {
30
+ bases.set(f.base, baseFeature);
31
+ }
32
+ }
33
+ });
34
+ return bases;
35
+ }
36
+ //# sourceMappingURL=feature-bases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-bases.js","sourceRoot":"","sources":["../../../src/monitor/graph/feature-bases.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,gBAAgB;IAC/C,kDAAkD;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IAChC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3B,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,gBAAoC;IACxE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,gBAAgB;IAC9C,kDAAkD;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3B,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { TResolvedFeature } from '@haibun/core/build/lib/defs.js';
2
+ export declare function generateMermaidGraphAsMarkdown(resolvedFeatures: TResolvedFeature[]): Promise<string>;
3
+ export declare function generateMermaidGraph(resolvedFeatures: TResolvedFeature[]): Promise<string[]>;
4
+ //# sourceMappingURL=generateMermaidGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateMermaidGraph.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/generateMermaidGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,wBAAsB,8BAA8B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1G;AAED,wBAAsB,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkJlG"}