@haibun/web-playwright 3.1.3 → 3.3.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 (109) hide show
  1. package/build/BrowserFactory.d.ts +11 -11
  2. package/build/BrowserFactory.d.ts.map +1 -1
  3. package/build/BrowserFactory.js +40 -46
  4. package/build/BrowserFactory.js.map +1 -1
  5. package/build/PlaywrightEvents.d.ts +2 -2
  6. package/build/PlaywrightEvents.d.ts.map +1 -1
  7. package/build/PlaywrightEvents.js +41 -23
  8. package/build/PlaywrightEvents.js.map +1 -1
  9. package/build/cycles.d.ts.map +1 -1
  10. package/build/cycles.js +82 -36
  11. package/build/cycles.js.map +1 -1
  12. package/build/interactionSteps.d.ts +40 -51
  13. package/build/interactionSteps.d.ts.map +1 -1
  14. package/build/interactionSteps.js +32 -51
  15. package/build/interactionSteps.js.map +1 -1
  16. package/build/rest-playwright.d.ts +25 -22
  17. package/build/rest-playwright.d.ts.map +1 -1
  18. package/build/rest-playwright.js +16 -17
  19. package/build/rest-playwright.js.map +1 -1
  20. package/build/twin-page.d.ts +1 -1
  21. package/build/twin-page.d.ts.map +1 -1
  22. package/build/twin-page.js +4 -8
  23. package/build/twin-page.js.map +1 -1
  24. package/build/web-playwright.d.ts +18 -37
  25. package/build/web-playwright.d.ts.map +1 -1
  26. package/build/web-playwright.js +60 -79
  27. package/build/web-playwright.js.map +1 -1
  28. package/package.json +12 -7
  29. package/build/monitor/MonitorHandler.d.ts +0 -52
  30. package/build/monitor/MonitorHandler.d.ts.map +0 -1
  31. package/build/monitor/MonitorHandler.js +0 -176
  32. package/build/monitor/MonitorHandler.js.map +0 -1
  33. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts +0 -9
  34. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts.map +0 -1
  35. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js +0 -27
  36. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js.map +0 -1
  37. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts +0 -9
  38. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts.map +0 -1
  39. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js +0 -17
  40. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js.map +0 -1
  41. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts +0 -8
  42. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts.map +0 -1
  43. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js +0 -26
  44. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js.map +0 -1
  45. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts +0 -13
  46. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts.map +0 -1
  47. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js +0 -47
  48. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js.map +0 -1
  49. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts +0 -9
  50. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts.map +0 -1
  51. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js +0 -147
  52. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js.map +0 -1
  53. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts +0 -32
  54. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts.map +0 -1
  55. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js +0 -258
  56. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js.map +0 -1
  57. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts +0 -9
  58. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts.map +0 -1
  59. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js +0 -19
  60. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js.map +0 -1
  61. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts +0 -9
  62. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts.map +0 -1
  63. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js +0 -21
  64. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js.map +0 -1
  65. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts +0 -9
  66. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts.map +0 -1
  67. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js +0 -16
  68. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js.map +0 -1
  69. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts +0 -20
  70. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts.map +0 -1
  71. package/build/monitor/artifactDisplays/artifactDisplayBase.js +0 -40
  72. package/build/monitor/artifactDisplays/artifactDisplayBase.js.map +0 -1
  73. package/build/monitor/controls.d.ts +0 -13
  74. package/build/monitor/controls.d.ts.map +0 -1
  75. package/build/monitor/controls.js +0 -349
  76. package/build/monitor/controls.js.map +0 -1
  77. package/build/monitor/disclosureJson.d.ts +0 -3
  78. package/build/monitor/disclosureJson.d.ts.map +0 -1
  79. package/build/monitor/disclosureJson.js +0 -353
  80. package/build/monitor/disclosureJson.js.map +0 -1
  81. package/build/monitor/graph/feature-bases.d.ts +0 -5
  82. package/build/monitor/graph/feature-bases.d.ts.map +0 -1
  83. package/build/monitor/graph/feature-bases.js +0 -36
  84. package/build/monitor/graph/feature-bases.js.map +0 -1
  85. package/build/monitor/graph/generateMermaidGraph.d.ts +0 -11
  86. package/build/monitor/graph/generateMermaidGraph.d.ts.map +0 -1
  87. package/build/monitor/graph/generateMermaidGraph.js +0 -314
  88. package/build/monitor/graph/generateMermaidGraph.js.map +0 -1
  89. package/build/monitor/graph/graphUtils.d.ts +0 -3
  90. package/build/monitor/graph/graphUtils.d.ts.map +0 -1
  91. package/build/monitor/graph/graphUtils.js +0 -26
  92. package/build/monitor/graph/graphUtils.js.map +0 -1
  93. package/build/monitor/graph/mermaidGraphLinks.d.ts +0 -3
  94. package/build/monitor/graph/mermaidGraphLinks.d.ts.map +0 -1
  95. package/build/monitor/graph/mermaidGraphLinks.js +0 -26
  96. package/build/monitor/graph/mermaidGraphLinks.js.map +0 -1
  97. package/build/monitor/messages.d.ts +0 -14
  98. package/build/monitor/messages.d.ts.map +0 -1
  99. package/build/monitor/messages.js +0 -359
  100. package/build/monitor/messages.js.map +0 -1
  101. package/build/monitor/monitor.d.ts +0 -25
  102. package/build/monitor/monitor.d.ts.map +0 -1
  103. package/build/monitor/monitor.js +0 -599
  104. package/build/monitor/monitor.js.map +0 -1
  105. package/build/monitor/test-utils.d.ts +0 -9
  106. package/build/monitor/test-utils.d.ts.map +0 -1
  107. package/build/monitor/test-utils.js +0 -70
  108. package/build/monitor/test-utils.js.map +0 -1
  109. package/web/monitor.html +0 -3715
@@ -1,599 +0,0 @@
1
- import { EExecutionMessageType } from '@haibun/core/monitor';
2
- import { LogEntry } from './messages.js';
3
- import { setupControls } from './controls.js';
4
- window.haibunCapturedMessages = window.haibunCapturedMessages || [];
5
- console.info('monitor.ts: window.haibunCapturedMessages initialized.');
6
- // Track the number of messages we've already rendered to avoid duplicates
7
- let renderedMessageCount = 0;
8
- // Function exposed to Playwright to receive new logs
9
- window.receiveLogData = (logEntry) => {
10
- monitorState.isLive = true;
11
- console.info(`[receiveLogData] Received log entry:`, logEntry.level, logEntry.message.substring(0, 50));
12
- window.haibunCapturedMessages.push(logEntry);
13
- // Update start time if this is the first message or earlier than current start
14
- if (window.haibunCapturedMessages.length === 1 || logEntry.timestamp < monitorState.startTime) {
15
- monitorState.startTime = logEntry.timestamp;
16
- // Sync display time base
17
- document.body.dataset.startTime = `${monitorState.startTime}`;
18
- // Force visibility update since start time changed
19
- recalcVisibility(monitorState.currentTime);
20
- updateTimelineMarkers();
21
- }
22
- if (logEntry.timestamp - monitorState.startTime > monitorState.maxTime) {
23
- monitorState.maxTime = logEntry.timestamp - monitorState.startTime;
24
- }
25
- renderedMessageCount++;
26
- renderLogEntry(logEntry);
27
- };
28
- // Functions for statement input control
29
- window.showStatementInput = () => {
30
- const statementInput = document.getElementById('haibun-statement-input');
31
- if (statementInput) {
32
- statementInput.style.display = 'inline-block';
33
- statementInput.focus();
34
- }
35
- };
36
- window.hideStatementInput = () => {
37
- const statementInput = document.getElementById('haibun-statement-input');
38
- if (statementInput) {
39
- statementInput.style.display = 'none';
40
- statementInput.value = '';
41
- }
42
- };
43
- window.submitStatement = (statement) => {
44
- if (typeof window.haibunSubmitStatement === 'function') {
45
- window.haibunSubmitStatement(statement);
46
- }
47
- window.hideStatementInput();
48
- };
49
- export function renderLogEntry(logEntryData) {
50
- const { level, message, messageContext, timestamp } = logEntryData;
51
- const container = document.getElementById('haibun-log-display-area');
52
- const logEntry = new LogEntry(level, timestamp, message, messageContext);
53
- const logEntryElement = logEntry.element;
54
- if (messageContext?.incident) {
55
- logEntryElement.dataset.incident = messageContext.incident;
56
- }
57
- container.appendChild(logEntryElement);
58
- // Update context header
59
- if (messageContext?.incident === EExecutionMessageType.FEATURE_START) {
60
- const feature = messageContext.incidentDetails.feature;
61
- const text = `Feature: ${feature.name || feature.path}`;
62
- logEntryElement.dataset.contextText = text;
63
- const contextEl = document.getElementById('haibun-current-context');
64
- if (contextEl)
65
- contextEl.textContent = text;
66
- }
67
- else if (messageContext?.incident === EExecutionMessageType.SCENARIO_START) {
68
- const contextEl = document.getElementById('haibun-current-context');
69
- const scenarioTitle = messageContext.incidentDetails.scenarioTitle || `Scenario ${messageContext.incidentDetails.currentScenario}`;
70
- logEntryElement.dataset.contextText = scenarioTitle;
71
- if (contextEl) {
72
- const current = contextEl.textContent || '';
73
- if (current.startsWith('Feature: ')) {
74
- contextEl.textContent = `${current.split(' > ')[0]} > ${scenarioTitle}`;
75
- }
76
- else {
77
- contextEl.textContent = scenarioTitle;
78
- }
79
- }
80
- }
81
- else if (typeof message === 'string') {
82
- if (message.startsWith('Feature: ')) {
83
- const contextEl = document.getElementById('haibun-current-context');
84
- if (contextEl)
85
- contextEl.textContent = message;
86
- }
87
- else if (message.startsWith('Scenario: ')) {
88
- const contextEl = document.getElementById('haibun-current-context');
89
- if (contextEl) {
90
- const current = contextEl.textContent || '';
91
- if (current.startsWith('Feature: ')) {
92
- contextEl.textContent = `${current.split(' > ')[0]} > ${message}`;
93
- }
94
- else {
95
- contextEl.textContent = message;
96
- }
97
- }
98
- }
99
- }
100
- // On STEP_END, find the last active STEP_START entry and handle it
101
- if (messageContext?.incident === EExecutionMessageType.STEP_END) {
102
- const activeStepStartEntries = container.querySelectorAll('.haibun-step-start:not(.disappeared)');
103
- if (activeStepStartEntries.length > 0) {
104
- const lastActiveEntry = activeStepStartEntries[activeStepStartEntries.length - 1];
105
- // Just mark as disappeared - don't add failed class to STEP_START
106
- // The STEP_END entry itself will have the failed class if needed
107
- lastActiveEntry.classList.add('disappeared');
108
- lastActiveEntry.dataset.endTime = `${timestamp}`;
109
- // Check failure
110
- const incidentDetails = messageContext.incidentDetails;
111
- const actionResult = incidentDetails?.actionResult;
112
- if (actionResult?.ok === false) {
113
- markTimelineError(lastActiveEntry.dataset.time);
114
- }
115
- }
116
- else {
117
- console.warn('Received STEP_END but found no active STEP_START log entry to hide.');
118
- }
119
- }
120
- // Store seqPath if available
121
- const incidentDetails = messageContext?.incidentDetails;
122
- const featureStep = incidentDetails?.featureStep;
123
- if (featureStep?.seqPath) {
124
- const val = Array.isArray(featureStep.seqPath) ? featureStep.seqPath.join('.') : featureStep.seqPath;
125
- logEntryElement.dataset.seqPath = val;
126
- }
127
- // On ENSURE_END, find the last active ENSURE_START entry and handle it
128
- if (messageContext?.incident === EExecutionMessageType.ENSURE_END) {
129
- const activeEnsureStartEntries = container.querySelectorAll('.haibun-ensure-start:not(.disappeared)');
130
- if (activeEnsureStartEntries.length > 0) {
131
- const lastActiveEntry = activeEnsureStartEntries[activeEnsureStartEntries.length - 1];
132
- // Check if this ensure failed
133
- const incidentDetails = messageContext.incidentDetails;
134
- const actionResult = incidentDetails?.actionResult;
135
- const ensureFailed = actionResult?.ok === false;
136
- if (ensureFailed) {
137
- // Mark as failed so it stays visible regardless of log level
138
- lastActiveEntry.classList.add('haibun-ensure-failed');
139
- markTimelineError(lastActiveEntry.dataset.time);
140
- }
141
- // Hide the ensure-start marker (but failed ensures will remain visible via CSS)
142
- lastActiveEntry.classList.add('disappeared');
143
- lastActiveEntry.dataset.endTime = `${timestamp}`;
144
- }
145
- else {
146
- console.warn('Received ENSURE_END but found no active ENSURE_START log entry to hide.');
147
- }
148
- }
149
- // Add timeline marker
150
- if (messageContext?.incident === EExecutionMessageType.STEP_START || messageContext?.incident === EExecutionMessageType.ENSURE_START) {
151
- addTimelineMarker(timestamp, messageContext.incident);
152
- }
153
- // Move prompt controls to the end
154
- const promptControls = document.getElementById('haibun-prompt-controls-container');
155
- if (promptControls) {
156
- container.appendChild(promptControls);
157
- }
158
- // Ensure scrolling happens after DOM update
159
- // if (monitorState.autoScroll) {
160
- // setTimeout(() => {
161
- // container.scrollTop = container.scrollHeight;
162
- // }, 0);
163
- // }
164
- }
165
- // --- Monitor State & Time Control ---
166
- const monitorState = {
167
- isPlaying: true,
168
- autoScroll: true,
169
- startTime: 0,
170
- maxTime: 0,
171
- currentTime: 0,
172
- playbackSpeed: 1,
173
- lastFrameTime: 0,
174
- lastScrolled: null,
175
- isLive: false
176
- };
177
- function markTimelineError(timestamp) {
178
- if (!timestamp)
179
- return;
180
- const markersContainer = document.getElementById('haibun-timeline-markers');
181
- if (!markersContainer)
182
- return;
183
- const marker = markersContainer.querySelector(`.timeline-marker[data-time="${timestamp}"]`);
184
- if (marker) {
185
- marker.classList.add('error');
186
- }
187
- }
188
- function addTimelineMarker(timestamp, type) {
189
- const markersContainer = document.getElementById('haibun-timeline-markers');
190
- if (!markersContainer)
191
- return;
192
- const marker = document.createElement('div');
193
- marker.className = 'timeline-marker';
194
- if (type === EExecutionMessageType.ENSURE_START) {
195
- marker.classList.add('ensure');
196
- }
197
- // Store absolute timestamp
198
- marker.dataset.time = `${timestamp}`;
199
- markersContainer.appendChild(marker);
200
- updateTimelineMarkers();
201
- }
202
- function updateTimelineMarkers() {
203
- const markersContainer = document.getElementById('haibun-timeline-markers');
204
- if (!markersContainer || monitorState.maxTime === 0)
205
- return;
206
- const markers = markersContainer.children;
207
- for (let i = 0; i < markers.length; i++) {
208
- const marker = markers[i];
209
- const timestamp = parseInt(marker.dataset.time || '0', 10);
210
- const relativeTime = timestamp - monitorState.startTime;
211
- const percent = (relativeTime / monitorState.maxTime) * 100;
212
- marker.style.left = `${percent}%`;
213
- }
214
- }
215
- function updatePlayPauseButton() {
216
- const btn = document.getElementById('haibun-play-pause');
217
- if (!btn)
218
- return;
219
- if (monitorState.isPlaying) {
220
- if (monitorState.autoScroll) {
221
- btn.textContent = '⏸️'; // Pause
222
- btn.title = "Pause";
223
- }
224
- else {
225
- btn.textContent = '🔦'; // Resume AutoScroll (Guided)
226
- btn.title = "Resume Auto-Scroll";
227
- }
228
- }
229
- else {
230
- btn.textContent = '▶️'; // Play
231
- btn.title = "Play";
232
- }
233
- }
234
- function setupTimeControls() {
235
- const slider = document.getElementById('haibun-time-slider');
236
- const playPauseBtn = document.getElementById('haibun-play-pause');
237
- const timeDisplay = document.getElementById('haibun-time-display');
238
- const viewToggle = document.getElementById('haibun-view-toggle');
239
- const speedSelect = document.getElementById('haibun-playback-speed');
240
- const container = document.getElementById('haibun-log-display-area');
241
- // Use the first log entry's timestamp as start time if available, otherwise fallback to body dataset or Date.now()
242
- if (window.haibunCapturedMessages && window.haibunCapturedMessages.length > 0) {
243
- monitorState.startTime = window.haibunCapturedMessages.reduce((min, m) => Math.min(min, m.timestamp), window.haibunCapturedMessages[0].timestamp);
244
- const lastTimestamp = window.haibunCapturedMessages.reduce((max, m) => Math.max(max, m.timestamp), window.haibunCapturedMessages[0].timestamp);
245
- monitorState.maxTime = lastTimestamp - monitorState.startTime;
246
- // If we have captured messages, we are likely in replay mode, so start paused
247
- monitorState.isPlaying = false;
248
- monitorState.autoScroll = false;
249
- // Set current time to end
250
- monitorState.currentTime = monitorState.maxTime;
251
- // Update slider and display immediately
252
- if (slider) {
253
- slider.max = `${monitorState.maxTime}`;
254
- slider.value = `${monitorState.currentTime}`;
255
- }
256
- if (timeDisplay) {
257
- timeDisplay.textContent = `${(monitorState.currentTime / 1000).toFixed(3)}s`;
258
- }
259
- // Force visibility update for the end state
260
- setTimeout(() => {
261
- recalcVisibility(monitorState.currentTime, true);
262
- }, 100);
263
- }
264
- else {
265
- monitorState.startTime = parseInt(document.body.dataset.startTime || `${Date.now()}`, 10);
266
- }
267
- // Sync display time base
268
- document.body.dataset.startTime = `${monitorState.startTime}`;
269
- const dateEl = document.getElementById('haibun-date');
270
- if (dateEl) {
271
- dateEl.textContent = new Date(monitorState.startTime).toISOString();
272
- }
273
- monitorState.lastFrameTime = Date.now();
274
- if (container) {
275
- const stopAutoScroll = () => {
276
- if (monitorState.isPlaying && monitorState.autoScroll) {
277
- monitorState.autoScroll = false;
278
- updatePlayPauseButton();
279
- }
280
- };
281
- // Rely on explicit user interaction to stop auto-scroll, rather than the generic 'scroll' event
282
- // which can be triggered by layout shifts or programmatic scrolling in some environments (like Playwright).
283
- container.addEventListener('wheel', stopAutoScroll, { passive: true });
284
- container.addEventListener('touchmove', stopAutoScroll, { passive: true });
285
- container.addEventListener('mousedown', stopAutoScroll);
286
- container.addEventListener('keydown', stopAutoScroll);
287
- }
288
- updatePlayPauseButton();
289
- playPauseBtn.addEventListener('click', () => {
290
- if (monitorState.isPlaying && !monitorState.autoScroll) {
291
- // Resume AutoScroll
292
- monitorState.autoScroll = true;
293
- updatePlayPauseButton();
294
- // Force scroll immediately
295
- recalcVisibility(monitorState.currentTime, true);
296
- return;
297
- }
298
- // Restart if at end and not live
299
- if (!monitorState.isPlaying && monitorState.currentTime >= monitorState.maxTime && !monitorState.isLive) {
300
- monitorState.currentTime = 0;
301
- // Reset slider and display
302
- if (slider)
303
- slider.value = '0';
304
- if (timeDisplay)
305
- timeDisplay.textContent = '0.000s';
306
- recalcVisibility(0, true);
307
- }
308
- monitorState.isPlaying = !monitorState.isPlaying;
309
- if (monitorState.isPlaying) {
310
- monitorState.autoScroll = true;
311
- monitorState.lastFrameTime = Date.now();
312
- updateTimeLoop();
313
- }
314
- updatePlayPauseButton();
315
- });
316
- if (speedSelect) {
317
- speedSelect.addEventListener('change', (e) => {
318
- monitorState.playbackSpeed = parseFloat(e.target.value);
319
- });
320
- }
321
- slider.addEventListener('input', (e) => {
322
- monitorState.isPlaying = false;
323
- monitorState.autoScroll = false;
324
- updatePlayPauseButton();
325
- const val = parseInt(e.target.value, 10);
326
- monitorState.currentTime = val;
327
- recalcVisibility(val, true);
328
- timeDisplay.textContent = `${(val / 1000).toFixed(3)}s`;
329
- });
330
- if (viewToggle) {
331
- const initialMode = window.HAIBUN_VIEW_MODE || 'timeline';
332
- const timeControls = document.getElementById('haibun-time-controls');
333
- if (initialMode === 'document') {
334
- document.body.classList.add('view-documentation');
335
- viewToggle.checked = true;
336
- if (timeControls)
337
- timeControls.style.visibility = 'hidden';
338
- }
339
- else {
340
- document.body.classList.remove('view-documentation');
341
- viewToggle.checked = false;
342
- if (timeControls)
343
- timeControls.style.visibility = 'visible';
344
- }
345
- viewToggle.addEventListener('change', (e) => {
346
- if (e.target.checked) {
347
- document.body.classList.add('view-documentation');
348
- if (timeControls)
349
- timeControls.style.visibility = 'hidden';
350
- }
351
- else {
352
- document.body.classList.remove('view-documentation');
353
- if (timeControls)
354
- timeControls.style.visibility = 'visible';
355
- }
356
- });
357
- }
358
- const statementInput = document.getElementById('haibun-statement-input');
359
- if (statementInput) {
360
- statementInput.addEventListener('input', () => {
361
- monitorState.currentTime = monitorState.maxTime;
362
- monitorState.autoScroll = true;
363
- recalcVisibility(monitorState.currentTime);
364
- const slider = document.getElementById('haibun-time-slider');
365
- if (slider)
366
- slider.value = `${monitorState.currentTime}`;
367
- const timeDisplay = document.getElementById('haibun-time-display');
368
- if (timeDisplay)
369
- timeDisplay.textContent = `${(monitorState.currentTime / 1000).toFixed(3)}s`;
370
- });
371
- }
372
- updateTimeLoop();
373
- }
374
- function updateTimeLoop() {
375
- if (!monitorState.isPlaying)
376
- return;
377
- const now = Date.now();
378
- const delta = now - monitorState.lastFrameTime;
379
- monitorState.lastFrameTime = now;
380
- // If we are "live" (maxTime is increasing), we just follow real time
381
- // But if we are replaying, we use speed.
382
- // Actually, simpler: always use speed for currentTime advancement.
383
- // But we need to know if we are at the "head" (live).
384
- // Calculate "live" elapsed time
385
- const liveElapsed = now - monitorState.startTime;
386
- // If we are close to live edge, just sync to live (unless speed != 1)
387
- // But user asked for slowdown control for replaying.
388
- if (monitorState.playbackSpeed !== 1 || monitorState.currentTime < monitorState.maxTime - 100) {
389
- monitorState.currentTime += delta * monitorState.playbackSpeed;
390
- }
391
- else {
392
- // Live mode (speed 1, at head)
393
- // Ensure we are at least at maxTime to show latest messages immediately (handles client clock lag)
394
- // monitorState.currentTime = Math.max(liveElapsed, monitorState.maxTime);
395
- }
396
- // Update maxTime to be at least liveElapsed (if we are receiving new data)
397
- // But if we are just viewing a static file, maxTime is fixed?
398
- // In this monitor, we assume we might be receiving data.
399
- if (monitorState.isLive && liveElapsed > monitorState.maxTime) {
400
- monitorState.maxTime = liveElapsed;
401
- }
402
- // Cap currentTime at maxTime
403
- if (monitorState.currentTime > monitorState.maxTime) {
404
- monitorState.currentTime = monitorState.maxTime;
405
- // Stop if at end and not live (replay finished)
406
- if (monitorState.isPlaying && !monitorState.isLive) {
407
- monitorState.isPlaying = false;
408
- updatePlayPauseButton();
409
- }
410
- }
411
- const slider = document.getElementById('haibun-time-slider');
412
- const timeDisplay = document.getElementById('haibun-time-display');
413
- if (slider) {
414
- slider.max = `${monitorState.maxTime}`;
415
- slider.value = `${monitorState.currentTime}`;
416
- }
417
- if (timeDisplay) {
418
- timeDisplay.textContent = `${(monitorState.currentTime / 1000).toFixed(3)}s`;
419
- }
420
- recalcVisibility(monitorState.currentTime);
421
- updateTimelineMarkers();
422
- requestAnimationFrame(updateTimeLoop);
423
- }
424
- function recalcVisibility(timeMs, forceScroll = false) {
425
- const container = document.getElementById('haibun-log-display-area');
426
- if (!container)
427
- return;
428
- const entries = container.querySelectorAll('.haibun-log-entry');
429
- let lastVisible = null;
430
- let currentFeatureText = '';
431
- let currentScenarioText = '';
432
- // Reset highlights
433
- entries.forEach(e => e.classList.remove('haibun-log-entry-current'));
434
- for (let i = 0; i < entries.length; i++) {
435
- const el = entries[i];
436
- const entryTime = parseInt(el.dataset.time || '0', 10) - monitorState.startTime;
437
- if (entryTime > timeMs + 250) {
438
- el.classList.add('invisible-future');
439
- continue;
440
- }
441
- if (el.dataset.incident === 'FEATURE_START') {
442
- currentFeatureText = el.dataset.contextText || '';
443
- currentScenarioText = '';
444
- }
445
- else if (el.dataset.incident === 'SCENARIO_START') {
446
- currentScenarioText = el.dataset.contextText || '';
447
- }
448
- el.classList.remove('invisible-future');
449
- if (el.dataset.endTime) {
450
- const endTime = parseInt(el.dataset.endTime, 10) - monitorState.startTime;
451
- if (endTime <= timeMs) {
452
- el.classList.add('disappeared');
453
- continue;
454
- }
455
- else {
456
- el.classList.remove('disappeared');
457
- }
458
- }
459
- lastVisible = el;
460
- }
461
- // Handle placeholders visibility: hide them if the content they represent is in the future
462
- const placeholders = container.querySelectorAll('.haibun-log-depth-placeholder');
463
- placeholders.forEach(p => {
464
- const el = p;
465
- const next = el.nextElementSibling;
466
- // If the next element (the first hidden log entry) is future, hide the placeholder
467
- if (next && next.classList.contains('invisible-future')) {
468
- el.classList.add('invisible-future');
469
- }
470
- else {
471
- el.classList.remove('invisible-future');
472
- }
473
- });
474
- const videos = document.querySelectorAll('video');
475
- if (videos.length > 0) {
476
- videos.forEach(v => {
477
- try {
478
- v.currentTime = timeMs / 1000;
479
- v.pause();
480
- }
481
- catch (e) {
482
- console.error('Error updating video time:', e);
483
- }
484
- });
485
- }
486
- const contextEl = document.getElementById('haibun-current-context');
487
- if (contextEl) {
488
- if (currentFeatureText && currentScenarioText) {
489
- contextEl.textContent = `${currentFeatureText} > ${currentScenarioText}`;
490
- }
491
- else if (currentFeatureText) {
492
- contextEl.textContent = currentFeatureText;
493
- }
494
- else if (currentScenarioText) {
495
- contextEl.textContent = currentScenarioText;
496
- }
497
- }
498
- if (lastVisible) {
499
- lastVisible.classList.add('haibun-log-entry-current');
500
- if (forceScroll || (monitorState.autoScroll && lastVisible !== monitorState.lastScrolled)) {
501
- lastVisible.scrollIntoView({ block: 'center', behavior: 'auto' });
502
- monitorState.lastScrolled = lastVisible;
503
- }
504
- }
505
- }
506
- /**
507
- * Parses the JSON island and feeds data into the monitor in digestible chunks.
508
- */
509
- function startLazyIngestion() {
510
- const dataScript = document.getElementById('haibun-log-data');
511
- // 1. If we are in "Live" mode (no data script), set up controls and return
512
- if (!dataScript) {
513
- setupControls(); // Initialize controls for live mode
514
- if (window.haibunCapturedMessages && window.haibunCapturedMessages.length > 0) {
515
- renderAllLogsSynchronously(); // Fallback for legacy format
516
- }
517
- return;
518
- }
519
- // 2. Parse the JSON.
520
- // This is the only heavy synchronous operation, but it is much faster than JS compilation.
521
- let allLogs = [];
522
- try {
523
- allLogs = JSON.parse(dataScript.textContent || '[]');
524
- }
525
- catch (e) {
526
- console.error("Failed to parse log data:", e);
527
- return;
528
- }
529
- // Populate the global array so other tools can access it
530
- window.haibunCapturedMessages = allLogs;
531
- // Initialize start times based on the full dataset
532
- if (allLogs.length > 0) {
533
- monitorState.startTime = allLogs.reduce((min, m) => Math.min(min, m.timestamp), allLogs[0].timestamp);
534
- const lastTimestamp = allLogs.reduce((max, m) => Math.max(max, m.timestamp), allLogs[0].timestamp);
535
- monitorState.maxTime = lastTimestamp - monitorState.startTime;
536
- monitorState.currentTime = monitorState.maxTime;
537
- // Update UI initial state
538
- const slider = document.getElementById('haibun-time-slider');
539
- if (slider) {
540
- slider.max = `${monitorState.maxTime}`;
541
- slider.value = `${monitorState.currentTime}`;
542
- }
543
- const dateEl = document.getElementById('haibun-date');
544
- if (dateEl) {
545
- dateEl.textContent = new Date(monitorState.startTime).toISOString();
546
- }
547
- }
548
- // Initialize controls before rendering (sets up log level filter)
549
- setupControls();
550
- // 3. The Chunking Loop
551
- let currentIndex = 0;
552
- const CHUNK_SIZE = 100; // Adjust this: Lower = smoother UI, Higher = faster loading
553
- function processNextChunk() {
554
- const end = Math.min(currentIndex + CHUNK_SIZE, allLogs.length);
555
- for (let i = currentIndex; i < end; i++) {
556
- // We call renderLogEntry directly instead of receiveLogData
557
- // to avoid re-pushing to the window.haibunCapturedMessages array
558
- renderLogEntry(allLogs[i]);
559
- renderedMessageCount++;
560
- }
561
- currentIndex += CHUNK_SIZE;
562
- if (currentIndex < allLogs.length) {
563
- // Yield control to the browser to keep the UI responsive
564
- requestAnimationFrame(processNextChunk);
565
- }
566
- else {
567
- console.info(`Finished ingesting ${allLogs.length} logs.`);
568
- // Finalize UI state
569
- recalcVisibility(monitorState.currentTime, true);
570
- }
571
- }
572
- console.info("Starting lazy log ingestion...");
573
- processNextChunk();
574
- }
575
- /**
576
- * Fallback for legacy format (window.haibunCapturedMessages already populated)
577
- */
578
- function renderAllLogsSynchronously() {
579
- const container = document.getElementById('haibun-log-display-area');
580
- if (container) {
581
- const messagesToRender = window.haibunCapturedMessages.slice(renderedMessageCount);
582
- console.info(`Rendering ${messagesToRender.length} new log entries (legacy mode)...`);
583
- messagesToRender.forEach(logEntry => {
584
- renderLogEntry(logEntry);
585
- renderedMessageCount++;
586
- });
587
- setupControls();
588
- }
589
- }
590
- document.addEventListener('DOMContentLoaded', () => {
591
- if (!document.body.dataset.startTime) {
592
- document.body.dataset.startTime = `${Date.now()}`;
593
- }
594
- setupTimeControls();
595
- // Replace the old renderAllLogs call with the lazy loader
596
- startLazyIngestion();
597
- console.info("Monitor initialized.");
598
- });
599
- //# sourceMappingURL=monitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/monitor/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,qBAAqB,EAAmB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAsB9C,MAAM,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;AACpE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;AAEvE,0EAA0E;AAC1E,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B,qDAAqD;AACrD,MAAM,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,EAAE;IACpC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7C,+EAA+E;IAC/E,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;QAC/F,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC5C,yBAAyB;QACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;QAC9D,mDAAmD;QACnD,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,qBAAqB,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACxE,YAAY,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACpE,CAAC;IAED,oBAAoB,EAAE,CAAC;IACvB,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,kBAAkB,GAAG,GAAG,EAAE;IAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAqB,CAAC;IAC7F,IAAI,cAAc,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9C,cAAc,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,kBAAkB,GAAG,GAAG,EAAE;IAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAqB,CAAC;IAC7F,IAAI,cAAc,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACtC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;IAC3B,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC9C,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,YAAuB;IACrD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAErE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEzC,IAAI,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC9B,eAAe,CAAC,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAEvC,wBAAwB;IACxB,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,aAAa,EAAE,CAAC;QACtE,MAAM,OAAO,GAAI,cAAc,CAAC,eAAuB,CAAC,OAA2C,CAAC;QACpG,MAAM,IAAI,GAAG,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACxD,eAAe,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACpE,IAAI,SAAS;YAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7C,CAAC;SAAM,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,cAAc,EAAE,CAAC;QAC9E,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACpE,MAAM,aAAa,GAAI,cAAc,CAAC,eAAuB,CAAC,aAAa,IAAI,YAAa,cAAc,CAAC,eAAuB,CAAC,eAAe,EAAE,CAAC;QACrJ,eAAe,CAAC,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC;YACvC,CAAC;QACF,CAAC;IACF,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;YACpE,IAAI,SAAS;gBAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;YACpE,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACrC,SAAS,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACP,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC;gBACjC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,mEAAmE;IACnE,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACjE,MAAM,sBAAsB,GAAG,SAAS,CAAC,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;QAClG,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAgB,CAAC;YAEjG,kEAAkE;YAClE,iEAAiE;YACjE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7C,eAAe,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,SAAS,EAAE,CAAC;YAEjD,gBAAgB;YAChB,MAAM,eAAe,GAAG,cAAc,CAAC,eAAsD,CAAC;YAC9F,MAAM,YAAY,GAAG,eAAe,EAAE,YAA4C,CAAC;YACnF,IAAI,YAAY,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;gBAChC,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAED,6BAA6B;IAC7B,MAAM,eAAe,GAAG,cAAc,EAAE,eAAsD,CAAC;IAC/F,MAAM,WAAW,GAAG,eAAe,EAAE,WAA2D,CAAC;IACjG,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;QACrG,eAAe,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,UAAU,EAAE,CAAC;QACnE,MAAM,wBAAwB,GAAG,SAAS,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;QACtG,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,wBAAwB,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAgB,CAAC;YAErG,8BAA8B;YAC9B,MAAM,eAAe,GAAG,cAAc,CAAC,eAAsD,CAAC;YAC9F,MAAM,YAAY,GAAG,eAAe,EAAE,YAA4C,CAAC;YACnF,MAAM,YAAY,GAAG,YAAY,EAAE,EAAE,KAAK,KAAK,CAAC;YAEhD,IAAI,YAAY,EAAE,CAAC;gBAClB,6DAA6D;gBAC7D,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACtD,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YAED,gFAAgF;YAChF,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7C,eAAe,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,SAAS,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACzF,CAAC;IACF,CAAC;IAED,sBAAsB;IACtB,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,UAAU,IAAI,cAAc,EAAE,QAAQ,KAAK,qBAAqB,CAAC,YAAY,EAAE,CAAC;QACtI,iBAAiB,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,kCAAkC;IAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,kCAAkC,CAAC,CAAC;IACnF,IAAI,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED,4CAA4C;IAC5C,iCAAiC;IACjC,sBAAsB;IACtB,kDAAkD;IAClD,UAAU;IACV,IAAI;AACL,CAAC;AAED,uCAAuC;AAEvC,MAAM,YAAY,GAAG;IACpB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,IAA0B;IACxC,MAAM,EAAE,KAAK;CACb,CAAC;AAEF,SAAS,iBAAiB,CAAC,SAA6B;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAC5E,IAAI,CAAC,gBAAgB;QAAE,OAAO;IAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,aAAa,CAAC,+BAA+B,SAAS,IAAI,CAAC,CAAC;IAC5F,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,IAA2B;IACxE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAC5E,IAAI,CAAC,gBAAgB;QAAE,OAAO;IAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACrC,IAAI,IAAI,KAAK,qBAAqB,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,2BAA2B;IAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;IACrC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,qBAAqB,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,qBAAqB;IAC7B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAC5E,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO;IAE5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAgB,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,CAAC;IACnC,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC7B,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,QAAQ;YAChC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,6BAA6B;YACrD,GAAG,CAAC,KAAK,GAAG,oBAAoB,CAAC;QAClC,CAAC;IACF,CAAC;SAAM,CAAC;QACP,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO;QAC/B,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;IACpB,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;IACjF,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAsB,CAAC;IACvF,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAoB,CAAC;IACtF,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;IACrF,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAsB,CAAC;IAC1F,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAErE,mHAAmH;IACnH,IAAI,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/E,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClJ,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/I,YAAY,CAAC,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC;QAC9D,8EAA8E;QAC9E,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;QAC/B,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;QAEhC,0BAA0B;QAC1B,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;QAEhD,wCAAwC;QACxC,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACjB,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9E,CAAC;QAED,4CAA4C;QAC5C,UAAU,CAAC,GAAG,EAAE;YACf,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;SAAM,CAAC;QACP,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;IAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAED,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAExC,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,cAAc,GAAG,GAAG,EAAE;YAC3B,IAAI,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBACvD,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;gBAChC,qBAAqB,EAAE,CAAC;YACzB,CAAC;QACF,CAAC,CAAC;QAEF,gGAAgG;QAChG,4GAA4G;QAC5G,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACxD,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,qBAAqB,EAAE,CAAC;IAExB,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC3C,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YACxD,oBAAoB;YACpB,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,qBAAqB,EAAE,CAAC;YACxB,2BAA2B;YAC3B,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO;QACR,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzG,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;YAC7B,2BAA2B;YAC3B,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YAC/B,IAAI,WAAW;gBAAE,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC;YACpD,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,SAAS,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;QACjD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxC,cAAc,EAAE,CAAC;QAClB,CAAC;QACD,qBAAqB,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,EAAE,CAAC;QACjB,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5C,YAAY,CAAC,aAAa,GAAG,UAAU,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACtC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;QAC/B,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;QAChC,qBAAqB,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,QAAQ,CAAE,CAAC,CAAC,MAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,YAAY,CAAC,WAAW,GAAG,GAAG,CAAC;QAC/B,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,IAAI,UAAU,CAAC;QAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QAErE,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClD,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,IAAI,YAAY;gBAAE,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC5D,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACrD,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,IAAI,YAAY;gBAAE,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7D,CAAC;QAED,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3C,IAAK,CAAC,CAAC,MAA2B,CAAC,OAAO,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClD,IAAI,YAAY;oBAAE,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACrD,IAAI,YAAY;oBAAE,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;YAC7D,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACzE,IAAI,cAAc,EAAE,CAAC;QACpB,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7C,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;YAChD,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;YACjF,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YAEzD,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAoB,CAAC;YACtF,IAAI,WAAW;gBAAE,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/F,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,cAAc;IACtB,IAAI,CAAC,YAAY,CAAC,SAAS;QAAE,OAAO;IAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC;IAC/C,YAAY,CAAC,aAAa,GAAG,GAAG,CAAC;IAEjC,qEAAqE;IACrE,yCAAyC;IACzC,mEAAmE;IACnE,sDAAsD;IAEtD,gCAAgC;IAChC,MAAM,WAAW,GAAG,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;IAEjD,sEAAsE;IACtE,qDAAqD;IAErD,IAAI,YAAY,CAAC,aAAa,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;QAC/F,YAAY,CAAC,WAAW,IAAI,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC;IAChE,CAAC;SAAM,CAAC;QACP,+BAA+B;QAC/B,mGAAmG;QACnG,0EAA0E;IAC3E,CAAC;IAED,2EAA2E;IAC3E,8DAA8D;IAC9D,yDAAyD;IACzD,IAAI,YAAY,CAAC,MAAM,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/D,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,6BAA6B;IAC7B,IAAI,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACrD,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;QAEhD,gDAAgD;QAChD,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACpD,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;YAC/B,qBAAqB,EAAE,CAAC;QACzB,CAAC;IACF,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAoB,CAAC;IAEtF,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACjB,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9E,CAAC;IAED,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,qBAAqB,EAAE,CAAC;IAExB,qBAAqB,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,WAAW,GAAG,KAAK;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAChE,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAC5B,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAE7B,mBAAmB;IACnB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAgB,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;QAEhF,IAAI,SAAS,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACrC,SAAS;QACV,CAAC;QAED,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YAC7C,kBAAkB,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;YAClD,mBAAmB,GAAG,EAAE,CAAC;QAC1B,CAAC;aAAM,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACrD,mBAAmB,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QACpD,CAAC;QAED,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAExC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;YAC1E,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACvB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAChC,SAAS;YACV,CAAC;iBAAM,CAAC;gBACP,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,WAAW,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,2FAA2F;IAC3F,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;IACjF,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxB,MAAM,EAAE,GAAG,CAAgB,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAiC,CAAC;QAClD,mFAAmF;QACnF,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzD,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,IAAI,CAAC;gBACJ,CAAC,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC9B,CAAC,CAAC,KAAK,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACpE,IAAI,SAAS,EAAE,CAAC;QACf,IAAI,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;YAC/C,SAAS,CAAC,WAAW,GAAG,GAAG,kBAAkB,MAAM,mBAAmB,EAAE,CAAC;QAC1E,CAAC;aAAM,IAAI,kBAAkB,EAAE,CAAC;YAC/B,SAAS,CAAC,WAAW,GAAG,kBAAkB,CAAC;QAC5C,CAAC;aAAM,IAAI,mBAAmB,EAAE,CAAC;YAChC,SAAS,CAAC,WAAW,GAAG,mBAAmB,CAAC;QAC7C,CAAC;IACF,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACjB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAEtD,IAAI,WAAW,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,WAAW,KAAK,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3F,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,YAAY,CAAC,YAAY,GAAG,WAAW,CAAC;QACzC,CAAC;IACF,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAE9D,2EAA2E;IAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC,CAAC,oCAAoC;QACrD,IAAI,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/E,0BAA0B,EAAE,CAAC,CAAC,6BAA6B;QAC5D,CAAC;QACD,OAAO;IACR,CAAC;IAED,qBAAqB;IACrB,2FAA2F;IAC3F,IAAI,OAAO,GAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC;QACJ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO;IACR,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,sBAAsB,GAAG,OAAO,CAAC;IAExC,mDAAmD;IACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtG,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnG,YAAY,CAAC,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC;QAC9D,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;QAEhD,0BAA0B;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;QACjF,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,CAAC;IACF,CAAC;IAED,kEAAkE;IAClE,aAAa,EAAE,CAAC;IAEhB,uBAAuB;IACvB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,4DAA4D;IAEpF,SAAS,gBAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhE,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,4DAA4D;YAC5D,iEAAiE;YACjE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,oBAAoB,EAAE,CAAC;QACxB,CAAC;QAED,YAAY,IAAI,UAAU,CAAC;QAE3B,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,yDAAyD;YACzD,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC3D,oBAAoB;YACpB,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC/C,gBAAgB,EAAE,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,aAAa,gBAAgB,CAAC,MAAM,mCAAmC,CAAC,CAAC;QACtF,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACnC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzB,oBAAoB,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,aAAa,EAAE,CAAC;IACjB,CAAC;AACF,CAAC;AAED,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,iBAAiB,EAAE,CAAC;IAEpB,0DAA0D;IAC1D,kBAAkB,EAAE,CAAC;IAErB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import { THTTPTraceContent } from '@haibun/core/lib/interfaces/logger.js';
2
- import { TTag } from '@haibun/core/lib/ttag.js';
3
- export declare function defineGlobalMermaidAndDOMPurify(): void;
4
- export declare function setupMessagesTestDOM(testStartTime: number): void;
5
- export declare function cleanupMessagesTestDOM(): void;
6
- export declare const MOCK_MERMAID_CONTAINER_ID_PREFFIX = "mermaid-container-";
7
- export declare function createMockTag(): TTag;
8
- export declare function createMockHTTPTraceArtifact(partialTrace: Partial<THTTPTraceContent>): THTTPTraceContent;
9
- //# sourceMappingURL=test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/monitor/test-utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAa,MAAM,0BAA0B,CAAC;AAE3D,wBAAgB,+BAA+B,SAqC9C;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAED,eAAO,MAAM,iCAAiC,uBAAuB,CAAC;AAEtE,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAUvG"}