@haibun/web-playwright 3.5.0 → 3.7.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 (96) hide show
  1. package/build/interactionSteps.d.ts +7 -0
  2. package/build/interactionSteps.d.ts.map +1 -1
  3. package/build/interactionSteps.js +65 -2
  4. package/build/interactionSteps.js.map +1 -1
  5. package/build/jsonExtractSteps.d.ts.map +1 -1
  6. package/build/jsonExtractSteps.js +9 -4
  7. package/build/jsonExtractSteps.js.map +1 -1
  8. package/build/rest-playwright.d.ts +1 -1
  9. package/build/rest-playwright.d.ts.map +1 -1
  10. package/build/rest-playwright.js +5 -4
  11. package/build/rest-playwright.js.map +1 -1
  12. package/build/web-playwright.d.ts +1 -0
  13. package/build/web-playwright.d.ts.map +1 -1
  14. package/build/web-playwright.js +4 -1
  15. package/build/web-playwright.js.map +1 -1
  16. package/package.json +10 -10
  17. package/build/monitor/MonitorHandler.d.ts +0 -47
  18. package/build/monitor/MonitorHandler.d.ts.map +0 -1
  19. package/build/monitor/MonitorHandler.js +0 -152
  20. package/build/monitor/MonitorHandler.js.map +0 -1
  21. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts +0 -9
  22. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.d.ts.map +0 -1
  23. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js +0 -27
  24. package/build/monitor/artifactDisplays/HtmlArtifactDisplay.js.map +0 -1
  25. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts +0 -9
  26. package/build/monitor/artifactDisplays/ImageArtifactDisplay.d.ts.map +0 -1
  27. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js +0 -17
  28. package/build/monitor/artifactDisplays/ImageArtifactDisplay.js.map +0 -1
  29. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts +0 -8
  30. package/build/monitor/artifactDisplays/JsonArtifactDisplay.d.ts.map +0 -1
  31. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js +0 -26
  32. package/build/monitor/artifactDisplays/JsonArtifactDisplay.js.map +0 -1
  33. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts +0 -13
  34. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.d.ts.map +0 -1
  35. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js +0 -47
  36. package/build/monitor/artifactDisplays/JsonArtifactHTTPTrace.js.map +0 -1
  37. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts +0 -9
  38. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.d.ts.map +0 -1
  39. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js +0 -38
  40. package/build/monitor/artifactDisplays/ResolvedFeaturesArtifactDisplay.js.map +0 -1
  41. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts +0 -32
  42. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.d.ts.map +0 -1
  43. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js +0 -258
  44. package/build/monitor/artifactDisplays/SequenceDiagramGenerator.js.map +0 -1
  45. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts +0 -9
  46. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.d.ts.map +0 -1
  47. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js +0 -19
  48. package/build/monitor/artifactDisplays/SpeechArtifactDisplay.js.map +0 -1
  49. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts +0 -9
  50. package/build/monitor/artifactDisplays/VideoArtifactDisplay.d.ts.map +0 -1
  51. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js +0 -21
  52. package/build/monitor/artifactDisplays/VideoArtifactDisplay.js.map +0 -1
  53. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts +0 -9
  54. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.d.ts.map +0 -1
  55. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js +0 -16
  56. package/build/monitor/artifactDisplays/VideoStartArtifactDisplay.js.map +0 -1
  57. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts +0 -20
  58. package/build/monitor/artifactDisplays/artifactDisplayBase.d.ts.map +0 -1
  59. package/build/monitor/artifactDisplays/artifactDisplayBase.js +0 -40
  60. package/build/monitor/artifactDisplays/artifactDisplayBase.js.map +0 -1
  61. package/build/monitor/controls.d.ts +0 -13
  62. package/build/monitor/controls.d.ts.map +0 -1
  63. package/build/monitor/controls.js +0 -311
  64. package/build/monitor/controls.js.map +0 -1
  65. package/build/monitor/disclosureJson.d.ts +0 -3
  66. package/build/monitor/disclosureJson.d.ts.map +0 -1
  67. package/build/monitor/disclosureJson.js +0 -353
  68. package/build/monitor/disclosureJson.js.map +0 -1
  69. package/build/monitor/graph/feature-bases.d.ts +0 -5
  70. package/build/monitor/graph/feature-bases.d.ts.map +0 -1
  71. package/build/monitor/graph/feature-bases.js +0 -36
  72. package/build/monitor/graph/feature-bases.js.map +0 -1
  73. package/build/monitor/graph/generateMermaidGraph.d.ts +0 -4
  74. package/build/monitor/graph/generateMermaidGraph.d.ts.map +0 -1
  75. package/build/monitor/graph/generateMermaidGraph.js +0 -119
  76. package/build/monitor/graph/generateMermaidGraph.js.map +0 -1
  77. package/build/monitor/graph/graphUtils.d.ts +0 -3
  78. package/build/monitor/graph/graphUtils.d.ts.map +0 -1
  79. package/build/monitor/graph/graphUtils.js +0 -16
  80. package/build/monitor/graph/graphUtils.js.map +0 -1
  81. package/build/monitor/graph/mermaidGraphLinks.d.ts +0 -3
  82. package/build/monitor/graph/mermaidGraphLinks.d.ts.map +0 -1
  83. package/build/monitor/graph/mermaidGraphLinks.js +0 -31
  84. package/build/monitor/graph/mermaidGraphLinks.js.map +0 -1
  85. package/build/monitor/messages.d.ts +0 -14
  86. package/build/monitor/messages.d.ts.map +0 -1
  87. package/build/monitor/messages.js +0 -191
  88. package/build/monitor/messages.js.map +0 -1
  89. package/build/monitor/monitor.d.ts +0 -24
  90. package/build/monitor/monitor.d.ts.map +0 -1
  91. package/build/monitor/monitor.js +0 -69
  92. package/build/monitor/monitor.js.map +0 -1
  93. package/build/monitor/test-utils.d.ts +0 -9
  94. package/build/monitor/test-utils.d.ts.map +0 -1
  95. package/build/monitor/test-utils.js +0 -70
  96. package/build/monitor/test-utils.js.map +0 -1
@@ -1,353 +0,0 @@
1
- function escapeHtml(unsafe) {
2
- return unsafe
3
- .replace(/&/g, "&")
4
- .replace(/</g, "&lt;")
5
- .replace(/>/g, "&gt;")
6
- .replace(/"/g, "&quot;")
7
- .replace(/'/g, "&#039;");
8
- }
9
- function isSimpleAggregate(value) {
10
- if (typeof value !== 'object' || value === null) {
11
- return false;
12
- }
13
- if (Array.isArray(value)) {
14
- if (value.length === 0)
15
- return true;
16
- return value.every(item => typeof item !== 'object' || item === null);
17
- }
18
- else {
19
- const keys = Object.keys(value);
20
- if (keys.length === 0)
21
- return true;
22
- return keys.every(key => typeof value[key] !== 'object' || value[key] === null);
23
- }
24
- }
25
- function getPrimitiveString(value, key) {
26
- if (key === 'html') {
27
- return '<html>';
28
- }
29
- if (typeof value === 'string') {
30
- return JSON.stringify(value);
31
- }
32
- if (value === null)
33
- return 'null';
34
- return String(value);
35
- }
36
- function getSimpleAggregateString(value) {
37
- if (Array.isArray(value)) {
38
- return `[${value.map(item => getPrimitiveString(item)).join(', ')}]`;
39
- }
40
- else if (typeof value === 'object' && value !== null) {
41
- const parts = Object.entries(value).map(([k, v]) => {
42
- let primStr = getPrimitiveString(v, k);
43
- if (k === 'html') {
44
- primStr = escapeHtml(primStr);
45
- }
46
- return `"${k}": ${primStr}`;
47
- });
48
- return `{ ${parts.join(', ')} }`;
49
- }
50
- return String(value);
51
- }
52
- function createInlineDisplayForSimpleAggregate(aggregateValue) {
53
- const containerSpan = document.createElement('span');
54
- containerSpan.className = 'simple-aggregate-inline';
55
- if (Array.isArray(aggregateValue)) {
56
- containerSpan.appendChild(document.createTextNode('['));
57
- aggregateValue.forEach((item, index) => {
58
- containerSpan.appendChild(createPrimitiveNode(item));
59
- if (index < aggregateValue.length - 1) {
60
- containerSpan.appendChild(document.createTextNode(', '));
61
- }
62
- });
63
- containerSpan.appendChild(document.createTextNode(']'));
64
- }
65
- else if (typeof aggregateValue === 'object' && aggregateValue !== null) {
66
- containerSpan.appendChild(document.createTextNode('{ '));
67
- const keys = Object.keys(aggregateValue);
68
- keys.forEach((key, index) => {
69
- const keySpan = document.createElement('span');
70
- keySpan.className = 'key inline-key';
71
- keySpan.textContent = `"${key}": `;
72
- containerSpan.appendChild(keySpan);
73
- containerSpan.appendChild(createPrimitiveNode(aggregateValue[key], key));
74
- if (index < keys.length - 1) {
75
- containerSpan.appendChild(document.createTextNode(', '));
76
- }
77
- });
78
- containerSpan.appendChild(document.createTextNode(' }'));
79
- }
80
- return containerSpan;
81
- }
82
- export function disclosureJson(jsonObj) {
83
- if (typeof jsonObj !== 'object' || jsonObj === null) {
84
- const primitiveContainer = document.createElement('div');
85
- primitiveContainer.className = 'json-root-primitive';
86
- primitiveContainer.appendChild(createPrimitiveNode(jsonObj));
87
- primitiveContainer.dataset.rawJson = JSON.stringify(jsonObj);
88
- return primitiveContainer;
89
- }
90
- if (isSimpleAggregate(jsonObj)) {
91
- const simpleRootContainer = document.createElement('div');
92
- simpleRootContainer.className = 'json-root-simple-aggregate';
93
- simpleRootContainer.appendChild(createInlineDisplayForSimpleAggregate(jsonObj));
94
- simpleRootContainer.dataset.rawJson = JSON.stringify(jsonObj);
95
- return simpleRootContainer;
96
- }
97
- else {
98
- const rootContainer = document.createElement('div');
99
- rootContainer.className = 'json-root-complex';
100
- rootContainer.dataset.rawJson = JSON.stringify(jsonObj);
101
- const isRootArray = Array.isArray(jsonObj);
102
- if (isRootArray) {
103
- jsonObj.forEach((item, index) => {
104
- appendNode(index, item, true, rootContainer, 0, undefined);
105
- });
106
- }
107
- else {
108
- Object.keys(jsonObj).forEach(key => {
109
- appendNode(key, jsonObj[key], false, rootContainer, 0, undefined);
110
- });
111
- }
112
- return rootContainer;
113
- }
114
- }
115
- function appendNode(key, value, isArrayIndex, parentElement, indentLevel = 0, parentKey) {
116
- const isPrimitiveVal = typeof value !== 'object' || value === null;
117
- if (isPrimitiveVal) {
118
- const lineDiv = document.createElement('div');
119
- lineDiv.className = 'json-line primitive-kv';
120
- let marginLeftPx = 0;
121
- if (indentLevel === 1) {
122
- marginLeftPx = 20;
123
- }
124
- else if (indentLevel > 1) {
125
- marginLeftPx = 20 + (indentLevel - 1) * 15;
126
- }
127
- lineDiv.style.marginLeft = `${marginLeftPx}px`;
128
- const keySpan = document.createElement('span');
129
- keySpan.className = isArrayIndex ? 'key index' : 'key';
130
- keySpan.textContent = isArrayIndex ? `[${key}]: ` : `${key}: `;
131
- lineDiv.appendChild(keySpan);
132
- let useTextArea = false;
133
- if (isPrimitiveVal) {
134
- if (key === 'in' && typeof value === 'string') {
135
- useTextArea = true;
136
- }
137
- else if (key === 'named') {
138
- useTextArea = true;
139
- }
140
- else if (parentKey === 'named' || parentKey === 'namedWithVars') {
141
- useTextArea = true;
142
- }
143
- }
144
- if (useTextArea) {
145
- const textArea = document.createElement('textarea');
146
- textArea.classList.add('expanded-value-textarea');
147
- textArea.value = String(value);
148
- let pathForId = 'root';
149
- if (parentElement.parentElement && parentElement.parentElement.tagName === 'DETAILS') {
150
- pathForId = getPathToNode(parentElement.parentElement);
151
- }
152
- const keyString = String(key).replace(/[^a-zA-Z0-9_-]/g, '_');
153
- textArea.id = `textarea-${pathForId}-${keyString}`;
154
- textArea.rows = 1;
155
- const setInitialWidth = (element) => {
156
- let helper = document.getElementById('autogrow-helper');
157
- if (!helper) {
158
- helper = document.createElement('div');
159
- helper.id = 'autogrow-helper';
160
- helper.style.position = 'absolute';
161
- helper.style.left = '-9999px';
162
- helper.style.top = '0';
163
- helper.style.visibility = 'hidden';
164
- helper.style.pointerEvents = 'none';
165
- document.body.appendChild(helper);
166
- }
167
- const computedStyle = window.getComputedStyle(element);
168
- helper.style.font = computedStyle.font;
169
- helper.style.letterSpacing = computedStyle.letterSpacing;
170
- helper.style.paddingTop = computedStyle.paddingTop;
171
- helper.style.paddingRight = computedStyle.paddingRight;
172
- helper.style.paddingBottom = computedStyle.paddingBottom;
173
- helper.style.paddingLeft = computedStyle.paddingLeft;
174
- helper.style.borderTopWidth = computedStyle.borderTopWidth;
175
- helper.style.borderRightWidth = computedStyle.borderRightWidth;
176
- helper.style.borderBottomWidth = computedStyle.borderBottomWidth;
177
- helper.style.borderLeftWidth = computedStyle.borderLeftWidth;
178
- helper.style.borderStyle = computedStyle.borderStyle;
179
- helper.style.boxSizing = 'border-box';
180
- helper.style.lineHeight = computedStyle.lineHeight;
181
- helper.style.whiteSpace = 'nowrap';
182
- helper.style.width = 'auto';
183
- helper.textContent = element.value || ' ';
184
- let contentWidth = helper.scrollWidth;
185
- contentWidth += 2;
186
- element.style.width = contentWidth + 'px';
187
- };
188
- const handleInputResize = (element) => {
189
- element.style.height = 'auto';
190
- element.style.height = element.scrollHeight + 'px';
191
- };
192
- textArea.addEventListener('input', () => handleInputResize(textArea));
193
- lineDiv.appendChild(textArea);
194
- lineDiv.classList.add('line-with-textarea');
195
- parentElement.appendChild(lineDiv);
196
- requestAnimationFrame(() => {
197
- setInitialWidth(textArea);
198
- });
199
- }
200
- else {
201
- lineDiv.appendChild(createPrimitiveNode(value, key));
202
- parentElement.appendChild(lineDiv);
203
- }
204
- }
205
- else {
206
- const forceComplex = key === 'named' || key === 'namedWithVars';
207
- if (!forceComplex && isSimpleAggregate(value)) {
208
- const lineDiv = document.createElement('div');
209
- lineDiv.className = 'json-line simple-aggregate-kv';
210
- let marginLeftPx = 0;
211
- if (indentLevel === 1) {
212
- marginLeftPx = 20;
213
- }
214
- else if (indentLevel > 1) {
215
- marginLeftPx = 20 + (indentLevel - 1) * 15;
216
- }
217
- lineDiv.style.marginLeft = `${marginLeftPx}px`;
218
- const keySpan = document.createElement('span');
219
- keySpan.className = isArrayIndex ? 'key index' : 'key';
220
- keySpan.textContent = isArrayIndex ? `[${key}]: ` : `${key}: `;
221
- lineDiv.appendChild(keySpan);
222
- lineDiv.appendChild(createInlineDisplayForSimpleAggregate(value));
223
- parentElement.appendChild(lineDiv);
224
- }
225
- else {
226
- const details = document.createElement('details');
227
- details.className = (isArrayIndex ? 'json-array-item' : 'json-object-item') + ' expandable';
228
- let marginLeftPx = 0;
229
- if (indentLevel === 1) {
230
- marginLeftPx = 20;
231
- }
232
- else if (indentLevel > 1) {
233
- marginLeftPx = 20 + (indentLevel - 1) * 15;
234
- }
235
- details.style.marginLeft = `${marginLeftPx}px`;
236
- details.open = false;
237
- const summary = document.createElement('summary');
238
- const summaryContentSpan = document.createElement('span');
239
- const keyDisplayPart = document.createElement('span');
240
- keyDisplayPart.className = isArrayIndex ? 'key index' : 'key';
241
- keyDisplayPart.textContent = isArrayIndex ? `[${String(key)}]: ` : `${String(key)}: `;
242
- summaryContentSpan.appendChild(keyDisplayPart);
243
- const childrenSummarySpan = document.createElement('span');
244
- childrenSummarySpan.className = 'children-summary-inline';
245
- const summaryChildrenParts = [];
246
- if (Array.isArray(value)) {
247
- value.forEach((childValue, childIndex) => {
248
- const childKeyString = String(childIndex);
249
- const isChildValuePrimitive = typeof childValue !== 'object' || childValue === null;
250
- if (isChildValuePrimitive) {
251
- summaryChildrenParts.push(`{${childKeyString}: ${getPrimitiveString(childValue, childIndex)}}`);
252
- }
253
- else if (isSimpleAggregate(childValue)) {
254
- summaryChildrenParts.push(`{${childKeyString}: ${getSimpleAggregateString(childValue)}}`);
255
- }
256
- else {
257
- summaryChildrenParts.push(`<span class="complex-child-marker">+${childKeyString}</span>`);
258
- }
259
- });
260
- }
261
- else {
262
- Object.entries(value).forEach(([childKey, childValue]) => {
263
- const isChildValuePrimitive = typeof childValue !== 'object' || childValue === null;
264
- if (isChildValuePrimitive) {
265
- let primDisplayStr = getPrimitiveString(childValue, childKey);
266
- if (childKey === 'html') {
267
- primDisplayStr = escapeHtml(primDisplayStr);
268
- }
269
- summaryChildrenParts.push(`{${childKey}: ${primDisplayStr}}`);
270
- }
271
- else if (isSimpleAggregate(childValue)) {
272
- summaryChildrenParts.push(`{${childKey}: ${getSimpleAggregateString(childValue)}}`);
273
- }
274
- else {
275
- summaryChildrenParts.push(`<span class="complex-child-marker">+${childKey}</span>`);
276
- }
277
- });
278
- }
279
- childrenSummarySpan.innerHTML = summaryChildrenParts.join(', ');
280
- summaryContentSpan.appendChild(childrenSummarySpan);
281
- summary.appendChild(summaryContentSpan);
282
- details.appendChild(summary);
283
- const detailsContentDiv = document.createElement('div');
284
- detailsContentDiv.className = 'details-content';
285
- if (Array.isArray(value)) {
286
- value.forEach((item, childIndex) => {
287
- appendNode(childIndex, item, true, detailsContentDiv, indentLevel + 1, key);
288
- });
289
- }
290
- else {
291
- Object.entries(value).forEach(([childKey, childValue]) => {
292
- appendNode(childKey, childValue, false, detailsContentDiv, indentLevel + 1, key);
293
- });
294
- }
295
- details.appendChild(detailsContentDiv);
296
- details.addEventListener('toggle', () => {
297
- if (details.open) {
298
- childrenSummarySpan.classList.add('hidden');
299
- }
300
- else {
301
- childrenSummarySpan.classList.remove('hidden');
302
- }
303
- });
304
- if (!details.open) {
305
- childrenSummarySpan.classList.remove('hidden');
306
- }
307
- else {
308
- childrenSummarySpan.classList.add('hidden');
309
- }
310
- parentElement.appendChild(details);
311
- }
312
- }
313
- }
314
- function getPathToNode(element) {
315
- const parts = [];
316
- while (element && element.parentElement && !element.classList.contains('json-root-complex')) {
317
- const keySpan = element.querySelector(':scope > summary > span > .key');
318
- let key = keySpan?.textContent?.replace(/: $/, '') || 'item';
319
- if (element.classList.contains('json-array-item')) {
320
- key = element.querySelector(':scope > summary > span > .key.index')?.textContent?.replace(/[[\]:]/g, '') || 'index';
321
- }
322
- parts.unshift(key);
323
- element = element.parentElement.closest('details, .json-root-complex');
324
- }
325
- return parts.join('-');
326
- }
327
- function createPrimitiveNode(value, key) {
328
- const span = document.createElement('span');
329
- span.classList.add('value');
330
- let displayValue;
331
- let typeClass = typeof value;
332
- if (key === 'html') {
333
- displayValue = '<html>';
334
- typeClass = 'html';
335
- }
336
- else if (value === null) {
337
- typeClass = 'null';
338
- displayValue = '<null>';
339
- }
340
- else if (typeClass === 'string') {
341
- displayValue = JSON.stringify(value);
342
- }
343
- else if (typeClass === 'undefined') {
344
- displayValue = 'undefined';
345
- }
346
- else {
347
- displayValue = String(value);
348
- }
349
- span.classList.add(`value-${typeClass}`);
350
- span.textContent = displayValue;
351
- return span;
352
- }
353
- //# sourceMappingURL=disclosureJson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disclosureJson.js","sourceRoot":"","sources":["../../src/monitor/disclosureJson.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { TResolvedFeature } from "@haibun/core/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
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-bases.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/feature-bases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,wBAAgB,gBAAgB,CAAC,gBAAgB,KAAA,gBAShD;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,eAWzE;AAED,wBAAgB,eAAe,CAAC,gBAAgB,KAAA,iBAY/C"}
@@ -1,36 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
1
- import { TResolvedFeature } from '@haibun/core/lib/defs.js';
2
- export declare function generateMermaidGraphAsMarkdown(resolvedFeatures: TResolvedFeature[], showVariables?: boolean): Promise<string>;
3
- export declare function generateMermaidGraph(resolvedFeatures: TResolvedFeature[], showVariables?: boolean): Promise<string[]>;
4
- //# sourceMappingURL=generateMermaidGraph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateMermaidGraph.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/generateMermaidGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,wBAAsB,8BAA8B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,aAAa,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhI;AAED,wBAAsB,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,aAAa,UAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsHxH"}
@@ -1,119 +0,0 @@
1
- import { sanitize, formatLabel } from './graphUtils.js';
2
- import { getBaseLocations } from './feature-bases.js';
3
- export async function generateMermaidGraphAsMarkdown(resolvedFeatures, showVariables = true) {
4
- const graphLines = await generateMermaidGraph(resolvedFeatures, showVariables);
5
- return graphLines.join('\n');
6
- }
7
- export async function generateMermaidGraph(resolvedFeatures, showVariables = true) {
8
- const graphLines = ['graph TD'];
9
- // BASES (defined first, top-level)
10
- const baseLocations = getBaseLocations(resolvedFeatures);
11
- baseLocations.forEach(basePath => {
12
- const basePathStr = String(basePath);
13
- graphLines.push(` base_${sanitize(basePathStr)}(${formatLabel(basePathStr)})`);
14
- });
15
- // ENV SUBGRAPH (collect values with source === 'env')
16
- const envVars = new Set();
17
- for (const f of resolvedFeatures) {
18
- for (const step of f.featureSteps) {
19
- for (const { origin: source, value } of Object.values(step.action.stepValuesMap || {})) {
20
- if (source === 'env' && typeof value === 'string')
21
- envVars.add(value);
22
- }
23
- }
24
- }
25
- if (envVars.size) {
26
- graphLines.push(' subgraph ENV [Environment Variables]');
27
- envVars.forEach(v => graphLines.push(` env_${sanitize(v)}([${formatLabel(v)}])`));
28
- graphLines.push(' end');
29
- }
30
- // BACKGROUNDS SUBGRAPH
31
- const { getBackgroundFeatures } = await import('./feature-bases.js');
32
- const backgrounds = getBackgroundFeatures(resolvedFeatures);
33
- if (backgrounds.size) {
34
- graphLines.push(' subgraph BACKGROUNDS [Backgrounds]');
35
- backgrounds.forEach(bgPath => {
36
- graphLines.push(` bg_${sanitize(bgPath)}[${formatLabel(bgPath)}]`);
37
- });
38
- graphLines.push(' end');
39
- }
40
- // FEATURES & SCENARIOS
41
- const baseToStepLinks = []; // Store base-to-step links here
42
- resolvedFeatures.forEach((feature) => {
43
- const featureId = `f_${sanitize(feature.path)}`;
44
- // Use featureId directly as the subgraph ID for cleaner linking
45
- graphLines.push(` subgraph ${featureId} [${formatLabel(feature.path)}]`);
46
- // Link base to the feature subgraph
47
- const baseId = `base_${sanitize(feature.base)}`;
48
- baseToStepLinks.push(` ${baseId} --> ${featureId}`); // Collect the link to the feature subgraph
49
- let scenarioIdx = 0;
50
- let currentScenarioId = null;
51
- let previousStepActualId = null;
52
- let previousStepIsInScenario = false;
53
- feature.featureSteps.forEach((step, stepIdx) => {
54
- // Assuming step.action and step.action.actionName are always present
55
- const actionNamePart = sanitize(step.action.actionName);
56
- const newStepId = `s_${actionNamePart}_${stepIdx}`;
57
- const indent = currentScenarioId ? ' ' : ' ';
58
- const currentStepIsInCurrentScenario = !!currentScenarioId;
59
- if (step.action.actionName === 'scenarioStart') {
60
- if (currentScenarioId)
61
- graphLines.push(' end'); // End previous scenario subgraph
62
- currentScenarioId = `sc_${++scenarioIdx}`;
63
- graphLines.push(` subgraph ${currentScenarioId} [${formatLabel(step.in)}]`);
64
- previousStepActualId = null; // Reset for steps within the new scenario
65
- }
66
- else {
67
- // This is an actual step node
68
- graphLines.push(`${indent}${newStepId}[${formatLabel(step.in)}]`);
69
- // Link from previous actual step in the same scope (feature or scenario)
70
- if (previousStepActualId) {
71
- if (currentStepIsInCurrentScenario === previousStepIsInScenario) {
72
- graphLines.push(`${indent}${previousStepActualId} ==> ${newStepId}`);
73
- }
74
- }
75
- previousStepActualId = newStepId;
76
- // Link to background if step is from background
77
- if (step.path !== feature.path) {
78
- if (backgrounds.has(step.path)) {
79
- graphLines.push(`${indent}${newStepId} -.-> bg_${sanitize(step.path)}`);
80
- }
81
- else {
82
- console.warn(`Background step patah "${step.path}" not found in backgrounds set.`);
83
- }
84
- }
85
- // Inline variable linking logic using new stepValuesMap.source classification
86
- if (showVariables && step.action.stepValuesMap && step.action.actionName !== 'scenarioStart') {
87
- const definedScenarioVarsForStep = new Set();
88
- Object.entries(step.action.stepValuesMap).forEach(([name, sv]) => {
89
- const { origin: source, value } = sv;
90
- if (value == null)
91
- return;
92
- if (source === 'env' && typeof value === 'string') {
93
- graphLines.push(`${indent}${newStepId} -.-> env_${sanitize(value)}`);
94
- return;
95
- }
96
- // scenario/shared variable or literal display (exclude statements/arrays)
97
- if (Array.isArray(value))
98
- return; // skip nested statements
99
- const displayVal = typeof value === 'number' ? String(value) : value;
100
- const scenarioVarNodeId = `sv_${actionNamePart}_${stepIdx}_${sanitize(name)}`;
101
- if (!definedScenarioVarsForStep.has(scenarioVarNodeId)) {
102
- graphLines.push(`${indent}${scenarioVarNodeId}([${formatLabel(name + ' = ' + displayVal)}])`);
103
- definedScenarioVarsForStep.add(scenarioVarNodeId);
104
- }
105
- graphLines.push(`${indent}${newStepId} -.-> ${scenarioVarNodeId}`);
106
- });
107
- }
108
- }
109
- previousStepIsInScenario = currentStepIsInCurrentScenario;
110
- });
111
- if (currentScenarioId)
112
- graphLines.push(' end'); // End the last scenario subgraph
113
- graphLines.push(' end');
114
- });
115
- // Add base-to-step links at the top level, after all subgraphs are defined
116
- graphLines.push(...baseToStepLinks);
117
- return graphLines;
118
- }
119
- //# sourceMappingURL=generateMermaidGraph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateMermaidGraph.js","sourceRoot":"","sources":["../../../src/monitor/graph/generateMermaidGraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,gBAAoC,EAAE,aAAa,GAAG,IAAI;IAC9G,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC/E,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,gBAAoC,EAAE,aAAa,GAAG,IAAI;IACpG,MAAM,UAAU,GAAa,CAAC,UAAU,CAAC,CAAC;IAE1C,mCAAmC;IACnC,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACnC,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;gBACxF,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvE,CAAC;QACF,CAAC;IACF,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC5D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC1D,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5B,UAAU,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,MAAM,eAAe,GAAa,EAAE,CAAC,CAAC,gCAAgC;IACtE,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,gEAAgE;QAChE,UAAU,CAAC,IAAI,CAAC,gBAAgB,SAAS,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5E,oCAAoC;QACpC,MAAM,MAAM,GAAG,QAAQ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,eAAe,CAAC,IAAI,CAAC,OAAO,MAAM,QAAQ,SAAS,EAAE,CAAC,CAAC,CAAC,2CAA2C;QAEnG,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,IAAI,oBAAoB,GAAkB,IAAI,CAAC;QAC/C,IAAI,wBAAwB,GAAY,KAAK,CAAC;QAE9C,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9C,qEAAqE;YACrE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAO,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,KAAK,cAAc,IAAI,OAAO,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/D,MAAM,8BAA8B,GAAG,CAAC,CAAC,iBAAiB,CAAC;YAE3D,IAAI,IAAI,CAAC,MAAO,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;gBACjD,IAAI,iBAAiB;oBAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAiC;gBACxF,iBAAiB,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,oBAAoB,iBAAiB,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACnF,oBAAoB,GAAG,IAAI,CAAC,CAAC,0CAA0C;YACxE,CAAC;iBAAM,CAAC;gBACP,8BAA8B;gBAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAElE,yEAAyE;gBACzE,IAAI,oBAAoB,EAAE,CAAC;oBAC1B,IAAI,8BAA8B,KAAK,wBAAwB,EAAE,CAAC;wBACjE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,oBAAoB,QAAQ,SAAS,EAAE,CAAC,CAAC;oBACtE,CAAC;gBACF,CAAC;gBACD,oBAAoB,GAAG,SAAS,CAAC;gBAEjC,gDAAgD;gBAChD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;oBAChC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAEhC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzE,CAAC;yBAAM,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAC;oBACpF,CAAC;gBACF,CAAC;gBAED,8EAA8E;gBAC9E,IAAI,aAAa,IAAI,IAAI,CAAC,MAAO,CAAC,aAAa,IAAI,IAAI,CAAC,MAAO,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;oBAChG,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;oBACrD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;wBAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;wBACrC,IAAI,KAAK,IAAI,IAAI;4BAAE,OAAO;wBAC1B,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACnD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,aAAa,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BACrE,OAAO;wBACR,CAAC;wBACD,0EAA0E;wBAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;4BAAE,OAAO,CAAC,yBAAyB;wBAC3D,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBACrE,MAAM,iBAAiB,GAAG,MAAM,cAAc,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9E,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BACxD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,iBAAiB,KAAK,WAAW,CAAC,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;4BAC9F,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBACnD,CAAC;wBACD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,SAAS,iBAAiB,EAAE,CAAC,CAAC;oBACpE,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,wBAAwB,GAAG,8BAA8B,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAiC;QACxF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAEpC,OAAO,UAAU,CAAC;AACnB,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare const sanitize: (text: string) => string;
2
- export declare const formatLabel: (text: string) => string;
3
- //# sourceMappingURL=graphUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphUtils.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/graphUtils.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,MAGvC,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAK1C,CAAC"}
@@ -1,16 +0,0 @@
1
- // Helper function to sanitize text for use in Mermaid node IDs
2
- export const sanitize = (text) => {
3
- if (!text)
4
- return 'empty_sanitized_string'; // Avoid empty IDs by providing a placeholder
5
- return text.replace(/\W/g, '_');
6
- };
7
- // Helper function to format strings for Mermaid labels (wrap in quotes and escape internal quotes)
8
- export const formatLabel = (text) => {
9
- if (text === undefined || text === null)
10
- return '" "'; // Use a space for undefined/null
11
- if (text === "")
12
- return '" "'; // Use a space for empty string
13
- const escapedText = text.replace(/"/g, '#quot;');
14
- return `"${escapedText}"`;
15
- };
16
- //# sourceMappingURL=graphUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphUtils.js","sourceRoot":"","sources":["../../../src/monitor/graph/graphUtils.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,wBAAwB,CAAC,CAAC,6CAA6C;IACzF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAChD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,iCAAiC;IACxF,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC,CAAC,+BAA+B;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,IAAI,WAAW,GAAG,CAAC;AAC9B,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function getEnvVarLinks(featureSteps: any): any[];
2
- export declare function getScenarioVars(featureSteps: any): any[];
3
- //# sourceMappingURL=mermaidGraphLinks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mermaidGraphLinks.d.ts","sourceRoot":"","sources":["../../../src/monitor/graph/mermaidGraphLinks.ts"],"names":[],"mappings":"AACA,wBAAgB,cAAc,CAAC,YAAY,KAAA,SAY1C;AAGD,wBAAgB,eAAe,CAAC,YAAY,KAAA,SAc3C"}
@@ -1,31 +0,0 @@
1
- // Helper to extract environment variable links from feature steps
2
- export function getEnvVarLinks(featureSteps) {
3
- const links = [];
4
- featureSteps.forEach((step, stepIndex) => {
5
- if (step.action && step.action.named && step.action.named.what) {
6
- // env var: {env_var} (curly braces)
7
- const match = /^\{(.+?)\}$/.exec(step.action.named.what);
8
- if (match) {
9
- links.push({ stepIndex, envVar: match[1] });
10
- }
11
- }
12
- });
13
- return links;
14
- }
15
- // Helper to extract scenario variable links from feature steps
16
- export function getScenarioVars(featureSteps) {
17
- const links = [];
18
- featureSteps.forEach((step, stepIndex) => {
19
- if (step.action && step.action.named && step.action.named.what) {
20
- // scenario var: quoted or unquoted, but not curly braces
21
- const what = step.action.named.what;
22
- if (!/^\{.+\}$/.test(what)) {
23
- // Remove quotes if present
24
- const varName = what.replace(/^"|"$/g, '');
25
- links.push({ stepIndex, varName });
26
- }
27
- }
28
- });
29
- return links;
30
- }
31
- //# sourceMappingURL=mermaidGraphLinks.js.map