@haibun/web-playwright 1.59.0 → 1.61.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.
- package/build/cycles.d.ts +4 -0
- package/build/cycles.d.ts.map +1 -0
- package/build/cycles.js +82 -0
- package/build/cycles.js.map +1 -0
- package/build/interactionSteps.d.ts +221 -0
- package/build/interactionSteps.d.ts.map +1 -0
- package/build/interactionSteps.js +515 -0
- package/build/interactionSteps.js.map +1 -0
- package/build/monitor/LogEntry.d.ts +4 -0
- package/build/monitor/LogEntry.d.ts.map +1 -0
- package/build/monitor/LogEntry.js +4 -0
- package/build/monitor/LogEntry.js.map +1 -0
- package/build/monitor/MonitorHandler.d.ts.map +1 -1
- package/build/monitor/MonitorHandler.js +24 -46
- package/build/monitor/MonitorHandler.js.map +1 -1
- package/build/monitor/artifactDisplayBase.d.ts +2 -0
- package/build/monitor/artifactDisplayBase.d.ts.map +1 -0
- package/build/monitor/artifactDisplayBase.js +2 -0
- package/build/monitor/artifactDisplayBase.js.map +1 -0
- package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js +31 -0
- package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/ImageArtifactDisplay.js +17 -0
- package/build/monitor/artifactDisplays/ImageArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/JsonArtifactDisplay.js +18 -0
- package/build/monitor/artifactDisplays/JsonArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts +13 -0
- package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js +44 -0
- package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js.map +1 -0
- package/build/monitor/artifactDisplays/MermaidDiagram.d.ts +22 -0
- package/build/monitor/artifactDisplays/MermaidDiagram.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/MermaidDiagram.js +199 -0
- package/build/monitor/artifactDisplays/MermaidDiagram.js.map +1 -0
- package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js +38 -0
- package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts +32 -0
- package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js +258 -0
- package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js.map +1 -0
- package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js +19 -0
- package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/VideoArtifactDisplay.js +21 -0
- package/build/monitor/artifactDisplays/VideoArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js +17 -0
- package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts +20 -0
- package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/artifactDisplayBase.js +40 -0
- package/build/monitor/artifactDisplays/artifactDisplayBase.js.map +1 -0
- package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/htmlArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/htmlArtifactDisplay.js +31 -0
- package/build/monitor/artifactDisplays/htmlArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/imageArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/imageArtifactDisplay.js +17 -0
- package/build/monitor/artifactDisplays/imageArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/jsonArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/jsonArtifactDisplay.js +18 -0
- package/build/monitor/artifactDisplays/jsonArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts +14 -0
- package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js +72 -0
- package/build/monitor/artifactDisplays/jsonArtifactHTTPTrace.js.map +1 -0
- package/build/monitor/artifactDisplays/mermaidDiagram.d.ts +22 -0
- package/build/monitor/artifactDisplays/mermaidDiagram.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/mermaidDiagram.js +199 -0
- package/build/monitor/artifactDisplays/mermaidDiagram.js.map +1 -0
- package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js +36 -0
- package/build/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts +32 -0
- package/build/monitor/artifactDisplays/sequenceDiagramGenerator.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js +299 -0
- package/build/monitor/artifactDisplays/sequenceDiagramGenerator.js.map +1 -0
- package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/speechArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/speechArtifactDisplay.js +38 -0
- package/build/monitor/artifactDisplays/speechArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/videoArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/videoArtifactDisplay.js +22 -0
- package/build/monitor/artifactDisplays/videoArtifactDisplay.js.map +1 -0
- package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts +9 -0
- package/build/monitor/artifactDisplays/videoStartArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js +30 -0
- package/build/monitor/artifactDisplays/videoStartArtifactDisplay.js.map +1 -0
- package/build/monitor/controls.d.ts +0 -1
- package/build/monitor/controls.d.ts.map +1 -1
- package/build/monitor/controls.js +4 -69
- package/build/monitor/controls.js.map +1 -1
- package/build/monitor/graph/feature-bases.d.ts +5 -0
- package/build/monitor/graph/feature-bases.d.ts.map +1 -0
- package/build/monitor/graph/feature-bases.js +36 -0
- package/build/monitor/graph/feature-bases.js.map +1 -0
- package/build/monitor/graph/generateMermaidGraph.d.ts +4 -0
- package/build/monitor/graph/generateMermaidGraph.d.ts.map +1 -0
- package/build/monitor/graph/generateMermaidGraph.js +144 -0
- package/build/monitor/graph/generateMermaidGraph.js.map +1 -0
- package/build/monitor/graph/graphUtils.d.ts +3 -0
- package/build/monitor/graph/graphUtils.d.ts.map +1 -0
- package/build/monitor/graph/graphUtils.js +16 -0
- package/build/monitor/graph/graphUtils.js.map +1 -0
- package/build/monitor/graph/mermaidGraphLinks.d.ts +3 -0
- package/build/monitor/graph/mermaidGraphLinks.d.ts.map +1 -0
- package/build/monitor/graph/mermaidGraphLinks.js +31 -0
- package/build/monitor/graph/mermaidGraphLinks.js.map +1 -0
- package/build/monitor/htmlArtifactDisplay.d.ts +2 -0
- package/build/monitor/htmlArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/htmlArtifactDisplay.js +2 -0
- package/build/monitor/htmlArtifactDisplay.js.map +1 -0
- package/build/monitor/imageArtifactDisplay.d.ts +2 -0
- package/build/monitor/imageArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/imageArtifactDisplay.js +2 -0
- package/build/monitor/imageArtifactDisplay.js.map +1 -0
- package/build/monitor/jsonArtifactDisplay.d.ts +2 -0
- package/build/monitor/jsonArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/jsonArtifactDisplay.js +2 -0
- package/build/monitor/jsonArtifactDisplay.js.map +1 -0
- package/build/monitor/jsonArtifactHTTPTrace.d.ts +2 -0
- package/build/monitor/jsonArtifactHTTPTrace.d.ts.map +1 -0
- package/build/monitor/jsonArtifactHTTPTrace.js +2 -0
- package/build/monitor/jsonArtifactHTTPTrace.js.map +1 -0
- package/build/monitor/messages.d.ts +9 -21
- package/build/monitor/messages.d.ts.map +1 -1
- package/build/monitor/messages.js +83 -216
- package/build/monitor/messages.js.map +1 -1
- package/build/monitor/monitor.d.ts +9 -4
- package/build/monitor/monitor.d.ts.map +1 -1
- package/build/monitor/monitor.js +8 -18
- package/build/monitor/monitor.js.map +1 -1
- package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts +2 -0
- package/build/monitor/resolvedFeaturesArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/resolvedFeaturesArtifactDisplay.js +2 -0
- package/build/monitor/resolvedFeaturesArtifactDisplay.js.map +1 -0
- package/build/monitor/sequenceDiagramGenerator.d.ts +32 -0
- package/build/monitor/sequenceDiagramGenerator.d.ts.map +1 -0
- package/build/monitor/sequenceDiagramGenerator.js +299 -0
- package/build/monitor/sequenceDiagramGenerator.js.map +1 -0
- package/build/monitor/speechArtifactDisplay.d.ts +2 -0
- package/build/monitor/speechArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/speechArtifactDisplay.js +2 -0
- package/build/monitor/speechArtifactDisplay.js.map +1 -0
- package/build/monitor/test-utils.d.ts +9 -0
- package/build/monitor/test-utils.d.ts.map +1 -0
- package/build/monitor/test-utils.js +70 -0
- package/build/monitor/test-utils.js.map +1 -0
- package/build/monitor/videoArtifactDisplay.d.ts +2 -0
- package/build/monitor/videoArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/videoArtifactDisplay.js +2 -0
- package/build/monitor/videoArtifactDisplay.js.map +1 -0
- package/build/monitor/videoStartArtifactDisplay.d.ts +2 -0
- package/build/monitor/videoStartArtifactDisplay.d.ts.map +1 -0
- package/build/monitor/videoStartArtifactDisplay.js +2 -0
- package/build/monitor/videoStartArtifactDisplay.js.map +1 -0
- package/build/web-playwright.d.ts +78 -77
- package/build/web-playwright.d.ts.map +1 -1
- package/build/web-playwright.js +12 -571
- package/build/web-playwright.js.map +1 -1
- package/package.json +9 -5
- package/web/monitor.html +298 -374
- package/build/monitor/monitorHandler.d.ts +0 -16
- package/build/monitor/monitorHandler.d.ts.map +0 -1
- package/build/monitor/monitorHandler.js +0 -108
- package/build/monitor/monitorHandler.js.map +0 -1
- package/build/monitor/vite.config.d.ts +0 -4
- package/build/monitor/vite.config.d.ts.map +0 -1
- package/build/monitor/vite.config.js +0 -91
- package/build/monitor/vite.config.js.map +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ArtifactDisplay } from './artifactDisplayBase.js';
|
|
2
|
+
import { disclosureJson } from '../disclosureJson.js';
|
|
3
|
+
import { SequenceDiagramGenerator } from './sequenceDiagramGenerator.js'; // Import the actual type
|
|
4
|
+
export class JsonArtifactHTTPTrace extends ArtifactDisplay {
|
|
5
|
+
artifact;
|
|
6
|
+
placementTarget;
|
|
7
|
+
static generatorInstance = null;
|
|
8
|
+
static sequenceDiagramParentElement = null;
|
|
9
|
+
constructor(artifact) {
|
|
10
|
+
super(artifact); // type is 'json/http/trace' by default
|
|
11
|
+
this.artifact = artifact;
|
|
12
|
+
this.placementTarget = document.querySelector('#sequence-diagram') ? 'haibun-sequence-diagram' : 'details';
|
|
13
|
+
if (!JsonArtifactHTTPTrace.sequenceDiagramParentElement) {
|
|
14
|
+
JsonArtifactHTTPTrace.sequenceDiagramParentElement = document.getElementById('sequence-diagram');
|
|
15
|
+
}
|
|
16
|
+
if (this.placementTarget === 'haibun-sequence-diagram' && JsonArtifactHTTPTrace.sequenceDiagramParentElement && !JsonArtifactHTTPTrace.generatorInstance) {
|
|
17
|
+
try {
|
|
18
|
+
// Use a fixed ID for the generator, as there's one sequence diagram display area
|
|
19
|
+
JsonArtifactHTTPTrace.generatorInstance = new SequenceDiagramGenerator('main-sequence', JsonArtifactHTTPTrace.sequenceDiagramParentElement);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error("Failed to initialize SequenceDiagramGenerator:", error);
|
|
23
|
+
// Potentially fall back to 'details' if generator fails to init, or handle error appropriately
|
|
24
|
+
// For now, we'll let it proceed, and render will show an error if generator is null.
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get diagramGenerator() {
|
|
29
|
+
return JsonArtifactHTTPTrace.generatorInstance;
|
|
30
|
+
}
|
|
31
|
+
deriveLabel() {
|
|
32
|
+
return '⇄ Trace';
|
|
33
|
+
}
|
|
34
|
+
async render(container) {
|
|
35
|
+
// Clear placeholder
|
|
36
|
+
container.innerHTML = '';
|
|
37
|
+
// Always append the JSON details for the current event to the container
|
|
38
|
+
const preElement = document.createElement('pre');
|
|
39
|
+
preElement.classList.add('haibun-message-details-json'); // Keep this class for styling JSON
|
|
40
|
+
preElement.appendChild(disclosureJson(this.artifact.trace));
|
|
41
|
+
container.appendChild(preElement);
|
|
42
|
+
// Update sequence diagram if it's the target and visible
|
|
43
|
+
// The sequence diagram itself is a separate element in the DOM, not inside this container.
|
|
44
|
+
if (this.placementTarget === 'haibun-sequence-diagram' && this.diagramGenerator) {
|
|
45
|
+
if (this.artifact.httpEvent !== 'route') {
|
|
46
|
+
const seqDiagElement = document.getElementById('sequence-diagram');
|
|
47
|
+
// Check if the sequence diagram element is actually visible in the layout
|
|
48
|
+
if (seqDiagElement && seqDiagElement.offsetParent !== null) {
|
|
49
|
+
try {
|
|
50
|
+
await this.diagramGenerator.update();
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error("Error updating sequence diagram:", error);
|
|
54
|
+
// Optionally display an error within the trace container as well
|
|
55
|
+
const errorP = document.createElement('p');
|
|
56
|
+
errorP.className = 'haibun-artifact-error';
|
|
57
|
+
errorP.textContent = `Error updating sequence diagram: ${error.message}`;
|
|
58
|
+
container.appendChild(errorP);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (!this.diagramGenerator) {
|
|
64
|
+
console.error("SequenceDiagramGenerator instance not available for JsonArtifactHTTPTrace");
|
|
65
|
+
const errorP = document.createElement('p');
|
|
66
|
+
errorP.className = 'haibun-artifact-error';
|
|
67
|
+
errorP.textContent = 'Sequence diagram generator not available.';
|
|
68
|
+
container.appendChild(errorP);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=jsonArtifactHTTPTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonArtifactHTTPTrace.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/jsonArtifactHTTPTrace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TArtifactHTTPTrace, THTTPTraceContent } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
2
|
+
export declare class SequenceDiagramGenerator {
|
|
3
|
+
private needsUpdate;
|
|
4
|
+
private diagramLines;
|
|
5
|
+
private pageNames;
|
|
6
|
+
private pageCounter;
|
|
7
|
+
private participantAdded;
|
|
8
|
+
private addParticipant;
|
|
9
|
+
processEvent(trace: THTTPTraceContent, httpEvent: TArtifactHTTPTrace['httpEvent'], filters?: {
|
|
10
|
+
request: {
|
|
11
|
+
method: string[];
|
|
12
|
+
accept: string[];
|
|
13
|
+
};
|
|
14
|
+
response: {
|
|
15
|
+
type: string[];
|
|
16
|
+
};
|
|
17
|
+
}): void;
|
|
18
|
+
getDiagram(): string;
|
|
19
|
+
update(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare function skipEvent(filters: any, httpEvent: any, serverName: any, { requestingPage, requestingURL, method, status, statusText, headers }: THTTPTraceContent): boolean;
|
|
22
|
+
//# sourceMappingURL=mermaidDiagram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaidDiagram.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/mermaidDiagram.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AA0BpG,qBAAa,wBAAwB;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,gBAAgB,CAA+B;IAGvD,OAAO,CAAC,cAAc;IAOf,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,OAAO;;;;;;;;KAAc,GAAG,IAAI;IAwF/G,UAAU,IAAI,MAAM;IAGd,MAAM;CAsCnB;AACD,wBAAgB,SAAS,CAAC,OAAO,KAAA,EAAE,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,iBAAiB,WAkClJ"}
|
|
@@ -0,0 +1,199 @@
|
|
|
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 = false;
|
|
24
|
+
diagramLines = ['sequenceDiagram']; // Initialize with diagram type
|
|
25
|
+
pageNames = {};
|
|
26
|
+
pageCounter = 1;
|
|
27
|
+
participantAdded = {}; // Track added participants
|
|
28
|
+
// Add participant declaration if not already added
|
|
29
|
+
addParticipant(alias, name) {
|
|
30
|
+
if (!this.participantAdded[alias]) {
|
|
31
|
+
this.diagramLines.splice(1, 0, `participant ${alias} as ${name}`); // Insert after 'sequenceDiagram'
|
|
32
|
+
this.participantAdded[alias] = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
processEvent(trace, httpEvent, filters = jsonFilters) {
|
|
36
|
+
this.needsUpdate = true; // Set flag immediately
|
|
37
|
+
const requestingPage = trace.requestingPage;
|
|
38
|
+
const requestingURL = trace.requestingURL;
|
|
39
|
+
const method = trace.method;
|
|
40
|
+
const status = trace.status;
|
|
41
|
+
const statusText = trace.statusText;
|
|
42
|
+
const headers = trace.headers;
|
|
43
|
+
// Use URL hostname as the server participant
|
|
44
|
+
let serverAlias = 'UnknownAlias'; // Default if URL is missing
|
|
45
|
+
let serverName = 'Unknown';
|
|
46
|
+
if (requestingURL) {
|
|
47
|
+
try {
|
|
48
|
+
const url = new URL(requestingURL);
|
|
49
|
+
serverName = url.hostname;
|
|
50
|
+
// Handle empty hostname (e.g., for about:blank)
|
|
51
|
+
if (serverName) {
|
|
52
|
+
serverAlias = serverName.replace(/[.-]/g, '');
|
|
53
|
+
if (!serverAlias) {
|
|
54
|
+
serverAlias = 'HostAlias'; // Fallback alias if replacement results in empty string
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
serverAlias = 'InvalidURLAlias';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this.addParticipant(serverAlias, serverName);
|
|
63
|
+
if (skipEvent(filters, httpEvent, serverName, trace)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (requestingPage && requestingURL) {
|
|
67
|
+
let pageAlias = this.pageNames[requestingPage];
|
|
68
|
+
if (!pageAlias) {
|
|
69
|
+
let pageName = `Browser Page ${this.pageCounter}`;
|
|
70
|
+
let baseAlias = '';
|
|
71
|
+
try {
|
|
72
|
+
// Try to get hostname from the current URL for a better name
|
|
73
|
+
const url = new URL(requestingURL);
|
|
74
|
+
const hostname = url.hostname;
|
|
75
|
+
if (hostname && requestingURL !== 'about:blank') {
|
|
76
|
+
baseAlias = hostname.replace(/[.-]/g, '');
|
|
77
|
+
if (!baseAlias)
|
|
78
|
+
baseAlias = 'Host'; // Fallback if hostname becomes empty
|
|
79
|
+
pageName = `${hostname} ${this.pageCounter}`;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// Fallback for about:blank or empty hostname
|
|
83
|
+
baseAlias = 'Page';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
// Fallback for invalid URL
|
|
88
|
+
baseAlias = 'Page';
|
|
89
|
+
}
|
|
90
|
+
// Ensure unique alias by appending counter
|
|
91
|
+
pageAlias = `${baseAlias}${this.pageCounter}`;
|
|
92
|
+
this.pageNames[requestingPage] = pageAlias;
|
|
93
|
+
this.addParticipant(pageAlias, pageName);
|
|
94
|
+
this.pageCounter++;
|
|
95
|
+
}
|
|
96
|
+
if (method) {
|
|
97
|
+
const message = sanitizeMermaidContent(`${method} ${shortenURI(requestingURL)}`);
|
|
98
|
+
this.diagramLines.push(`${pageAlias}->>${serverAlias}: ${message}`);
|
|
99
|
+
if (headers && headers.referer) {
|
|
100
|
+
const note = shortenURI(sanitizeMermaidContent(`Referer: ${headers.referer}`));
|
|
101
|
+
this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
|
|
102
|
+
}
|
|
103
|
+
if (headers && headers["accept"]) {
|
|
104
|
+
const note = sanitizeMermaidContent(`Accept: ${headers["accept"]}`);
|
|
105
|
+
this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
|
|
106
|
+
}
|
|
107
|
+
if (headers && headers["content-type"]) {
|
|
108
|
+
const note = sanitizeMermaidContent(`Content-type: ${headers['content-type']}`);
|
|
109
|
+
this.diagramLines.push(`Note right of ${pageAlias}: ${note}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (status) {
|
|
113
|
+
// Sanitize response message
|
|
114
|
+
const message = sanitizeMermaidContent(`${status} ${statusText || ''}`);
|
|
115
|
+
this.diagramLines.push(`${serverAlias}-->>${pageAlias}: ${message}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// this.needsUpdate = true; // Moved to the beginning
|
|
119
|
+
}
|
|
120
|
+
getDiagram() {
|
|
121
|
+
return this.diagramLines.join("\n");
|
|
122
|
+
}
|
|
123
|
+
async update() {
|
|
124
|
+
// Only update the DOM and render if necessary
|
|
125
|
+
if (!this.needsUpdate) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const mermaidContainer = document.getElementById('sequence-diagram');
|
|
129
|
+
if (mermaidContainer) {
|
|
130
|
+
let diagramDefinition = ''; // Declare outside try
|
|
131
|
+
try {
|
|
132
|
+
diagramDefinition = this.getDiagram(); // Assign inside try
|
|
133
|
+
mermaid.initialize({ maxTextSize: 900000 });
|
|
134
|
+
// Ensure container is empty before rendering
|
|
135
|
+
mermaidContainer.innerHTML = '';
|
|
136
|
+
// Insert the diagram definition for Mermaid to process
|
|
137
|
+
const insert = `<pre class="mermaid">${diagramDefinition}</pre>`;
|
|
138
|
+
mermaidContainer.insertAdjacentHTML('beforeend', insert);
|
|
139
|
+
await mermaid.run({ nodes: [mermaidContainer.querySelector('.mermaid')] });
|
|
140
|
+
console.log("Mermaid diagram rendered.");
|
|
141
|
+
this.needsUpdate = false; // Reset flag only after successful render
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
console.error("Failed Mermaid diagram definition:\n", diagramDefinition); // Log failing definition
|
|
145
|
+
console.error("Error rendering Mermaid diagram:", e);
|
|
146
|
+
const detailedError = (typeof e === 'object' && e !== null && 'str' in e) ? e.str : null;
|
|
147
|
+
const errorMessage = detailedError || (e instanceof Error ? e.message : String(e));
|
|
148
|
+
mermaidContainer.innerHTML = `<pre>Error rendering Mermaid diagram:\n\n${errorMessage}\n\n--- Diagram Definition ---\n${diagramDefinition}</pre>`;
|
|
149
|
+
// Optionally reset needsUpdate here too, or leave it true to retry later? Resetting for now.
|
|
150
|
+
this.needsUpdate = false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.warn("Sequence diagram container not found.");
|
|
155
|
+
// Reset flag even if container not found to avoid repeated attempts
|
|
156
|
+
this.needsUpdate = false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export function skipEvent(filters, httpEvent, serverName, { requestingPage, requestingURL, method, status, statusText, headers }) {
|
|
161
|
+
if (!serverName) {
|
|
162
|
+
// console.info('No server name found, skipping result.');
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
if (requestingURL === 'about:blank') {
|
|
166
|
+
// console.info('Requesting URL is about:blank, skipping result.');
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
if (httpEvent === 'request') {
|
|
170
|
+
if (headers && headers.accept) {
|
|
171
|
+
const acceptHeader = headers.accept;
|
|
172
|
+
if (!filters.request.accept.some(filterValue => acceptHeader.includes(filterValue))) {
|
|
173
|
+
// console.info('qx', acceptHeader, filters.request.accept);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// console.info('qY', acceptHeader, filters.request.accept);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (httpEvent === 'response') {
|
|
182
|
+
if (headers && headers['content-type']) {
|
|
183
|
+
const contentTypeHeader = headers['content-type'];
|
|
184
|
+
if (!filters.response.type.some(filterValue => contentTypeHeader.includes(filterValue))) {
|
|
185
|
+
// console.info('px', contentTypeHeader);
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// console.info('pY', contentTypeHeader);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
console.warn(`Unknown HTTP event type: ${httpEvent}`);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=mermaidDiagram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaidDiagram.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/mermaidDiagram.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TArtifactResolvedFeatures } from "@haibun/core/build/lib/interfaces/logger.js";
|
|
2
|
+
import { ArtifactDisplay } from "./artifactDisplayBase.js";
|
|
3
|
+
export declare class ResolvedFeaturesArtifactDisplay extends ArtifactDisplay {
|
|
4
|
+
protected artifact: TArtifactResolvedFeatures;
|
|
5
|
+
readonly placementTarget = "details";
|
|
6
|
+
constructor(artifact: TArtifactResolvedFeatures);
|
|
7
|
+
render(container: HTMLElement): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=resolvedFeaturesArtifactDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvedFeaturesArtifactDisplay.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO3D,qBAAa,+BAAgC,SAAQ,eAAe;IAGvD,SAAS,CAAC,QAAQ,EAAE,yBAAyB;IAFzD,QAAQ,CAAC,eAAe,aAAa;gBAEf,QAAQ,EAAE,yBAAyB;IAI5C,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA0B1D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { generateMermaidGraph } from "../graph/generateMermaidGraph.js";
|
|
2
|
+
import { ArtifactDisplay } from "./artifactDisplayBase.js";
|
|
3
|
+
import mermaid from 'mermaid';
|
|
4
|
+
mermaid.initialize({ maxTextSize: 900000, maxEdges: 5000 });
|
|
5
|
+
let instanceCounter = 0;
|
|
6
|
+
export class ResolvedFeaturesArtifactDisplay extends ArtifactDisplay {
|
|
7
|
+
artifact;
|
|
8
|
+
placementTarget = 'details';
|
|
9
|
+
constructor(artifact) {
|
|
10
|
+
super(artifact);
|
|
11
|
+
this.artifact = artifact;
|
|
12
|
+
}
|
|
13
|
+
async render(container) {
|
|
14
|
+
// The artifact is already typed as TArtifactResolvedFeatures due to the constructor
|
|
15
|
+
if (!this.artifact.resolvedFeatures || this.artifact.resolvedFeatures.length === 0) {
|
|
16
|
+
container.innerHTML = '<p>No resolved features to display.</p>';
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const mermaidGraphLines = await generateMermaidGraph(this.artifact.resolvedFeatures);
|
|
20
|
+
const mermaidGraph = mermaidGraphLines.join('\n');
|
|
21
|
+
const graphSvgId = `mermaid-graph-svg-${instanceCounter++}-${Date.now()}`;
|
|
22
|
+
container.innerHTML = ''; // Clear placeholder
|
|
23
|
+
try {
|
|
24
|
+
const { svg, bindFunctions } = await mermaid.render(graphSvgId, mermaidGraph);
|
|
25
|
+
container.innerHTML = svg;
|
|
26
|
+
if (bindFunctions) {
|
|
27
|
+
bindFunctions(container);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error('Error rendering Mermaid graph:', error);
|
|
32
|
+
container.innerHTML = `<p class="haibun-artifact-error">Error rendering graph: ${error.message}</p>`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=resolvedFeaturesArtifactDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvedFeaturesArtifactDisplay.js","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/resolvedFeaturesArtifactDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5D,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,MAAM,OAAO,+BAAgC,SAAQ,eAAe;IAG7C;IAFb,eAAe,GAAG,SAAS,CAAC;IAErC,YAAsB,QAAmC;QACxD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADK,aAAQ,GAAR,QAAQ,CAA2B;IAEzD,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,SAAsB;QACzC,oFAAoF;QACpF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpF,SAAS,CAAC,SAAS,GAAG,yCAAyC,CAAC;YAChE,OAAO;QACR,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,qBAAqB,eAAe,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAE1E,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,oBAAoB;QAE9C,IAAI,CAAC;YACJ,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC9E,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;YAE1B,IAAI,aAAa,EAAE,CAAC;gBACnB,aAAa,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,SAAS,CAAC,SAAS,GAAG,2DAA4D,KAAe,CAAC,OAAO,MAAM,CAAC;QACjH,CAAC;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TArtifactHTTPTrace, THTTPTraceContent } from '@haibun/core/build/lib/interfaces/logger.js';
|
|
2
|
+
export declare class SequenceDiagramGenerator {
|
|
3
|
+
private needsUpdate;
|
|
4
|
+
private diagramLines;
|
|
5
|
+
private pageNames;
|
|
6
|
+
private pageCounter;
|
|
7
|
+
private participantAdded;
|
|
8
|
+
private mermaidContainerId;
|
|
9
|
+
private parentElement;
|
|
10
|
+
private currentDiagramString;
|
|
11
|
+
constructor(id: string, parentElement: HTMLElement);
|
|
12
|
+
private ensureMermaidContainer;
|
|
13
|
+
private addParticipant;
|
|
14
|
+
private resetDiagramState;
|
|
15
|
+
private buildDiagramString;
|
|
16
|
+
generateDiagramFromHistory(): void;
|
|
17
|
+
processSingleEvent(trace: THTTPTraceContent, httpEvent: TArtifactHTTPTrace['httpEvent'], filters?: {
|
|
18
|
+
request: {
|
|
19
|
+
method: string[];
|
|
20
|
+
accept: string[];
|
|
21
|
+
};
|
|
22
|
+
response: {
|
|
23
|
+
type: string[];
|
|
24
|
+
};
|
|
25
|
+
}): void;
|
|
26
|
+
getDiagram(): string;
|
|
27
|
+
getNeedsUpdate(): boolean;
|
|
28
|
+
setNeedsUpdate(value: boolean): void;
|
|
29
|
+
update(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export declare function skipEvent(filters: any, httpEvent: any, serverName: any, { requestingURL, headers }: THTTPTraceContent): boolean;
|
|
32
|
+
//# sourceMappingURL=sequenceDiagramGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequenceDiagramGenerator.d.ts","sourceRoot":"","sources":["../../../src/monitor/artifactDisplays/sequenceDiagramGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAwBpG,qBAAa,wBAAwB;IACpC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,gBAAgB,CAA+B;IACpD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,oBAAoB,CAAM;gBAEtB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW;IAOlD,OAAO,CAAC,sBAAsB;IAWjC,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAQtB,OAAO,CAAC,kBAAkB;IAOtB,0BAA0B,IAAI,IAAI;IAsClC,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,OAAO;;;;;;;;KAAc,GAAG,IAAI;IAuGrH,UAAU,IAAI,MAAM;IAKjB,cAAc,IAAI,OAAO;IAKzB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIjC,MAAM;CA+CnB;AACD,wBAAgB,SAAS,CAAC,OAAO,KAAA,EAAE,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB,WAkCtG"}
|