@decaf-ts/utils 0.11.13 → 0.11.14
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/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/tests/TestReporter.d.ts +1 -1
- package/lib/esm/tests/TestReporter.js +3 -4
- package/lib/esm/tests/TestReporter.js.map +1 -1
- package/lib/esm/tests/jestPerformanceRunner.d.ts +20 -3
- package/lib/esm/tests/jestPerformanceRunner.js +220 -2
- package/lib/esm/tests/jestPerformanceRunner.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/tests/TestReporter.cjs +3 -4
- package/lib/tests/TestReporter.d.ts +1 -1
- package/lib/tests/TestReporter.js.map +1 -1
- package/lib/tests/jestPerformanceRunner.cjs +223 -2
- package/lib/tests/jestPerformanceRunner.d.ts +20 -3
- package/lib/tests/jestPerformanceRunner.js.map +1 -1
- package/package.json +1 -1
package/lib/esm/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export * from "./writers";
|
|
|
26
26
|
* @const VERSION
|
|
27
27
|
* @memberOf module:utils
|
|
28
28
|
*/
|
|
29
|
-
export declare const VERSION = "0.11.
|
|
29
|
+
export declare const VERSION = "0.11.13";
|
|
30
30
|
/**
|
|
31
31
|
* @description Represents the current version of the module.
|
|
32
32
|
* @summary Stores the version for the @decaf-ts/utils package. The build replaces
|
package/lib/esm/index.js
CHANGED
|
@@ -26,7 +26,7 @@ export * from "./writers/index.js";
|
|
|
26
26
|
* @const VERSION
|
|
27
27
|
* @memberOf module:utils
|
|
28
28
|
*/
|
|
29
|
-
export const VERSION = "0.11.
|
|
29
|
+
export const VERSION = "0.11.13";
|
|
30
30
|
/**
|
|
31
31
|
* @description Represents the current version of the module.
|
|
32
32
|
* @summary Stores the version for the @decaf-ts/utils package. The build replaces
|
|
@@ -184,7 +184,7 @@ export declare class TestReporter {
|
|
|
184
184
|
* @param {any} config - Chart.js configuration object
|
|
185
185
|
* @return {Promise<void>} Promise that resolves when graph is reported
|
|
186
186
|
*/
|
|
187
|
-
reportGraph(reference: string, config: any): Promise<
|
|
187
|
+
reportGraph(reference: string, config: any, width?: number, height?: number): Promise<Buffer>;
|
|
188
188
|
/**
|
|
189
189
|
* @description Reports an image to the test report
|
|
190
190
|
* @summary Stores an image buffer in the test report
|
|
@@ -250,11 +250,9 @@ export class TestReporter {
|
|
|
250
250
|
* @param {any} config - Chart.js configuration object
|
|
251
251
|
* @return {Promise<void>} Promise that resolves when graph is reported
|
|
252
252
|
*/
|
|
253
|
-
async reportGraph(reference, config) {
|
|
253
|
+
async reportGraph(reference, config, width = 1200, height = 600) {
|
|
254
254
|
this.deps = await installIfNotAvailable([dependencies[2]], this.deps);
|
|
255
255
|
const { ChartJSNodeCanvas } = await normalizeImport(import(dependencies[2]));
|
|
256
|
-
const width = 600; //px
|
|
257
|
-
const height = 800; //px
|
|
258
256
|
const backgroundColour = "white"; // Uses https://www.w3schools.com/tags/canvas_fillstyle.asp
|
|
259
257
|
const chartJSNodeCanvas = new ChartJSNodeCanvas({
|
|
260
258
|
width,
|
|
@@ -262,7 +260,8 @@ export class TestReporter {
|
|
|
262
260
|
backgroundColour,
|
|
263
261
|
});
|
|
264
262
|
const image = await chartJSNodeCanvas.renderToBuffer(config);
|
|
265
|
-
|
|
263
|
+
await this.reportImage(reference, image);
|
|
264
|
+
return image;
|
|
266
265
|
}
|
|
267
266
|
/**
|
|
268
267
|
* @description Reports an image to the test report
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestReporter.js","sourceRoot":"","sources":["../../../src/tests/TestReporter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TestReporter.js","sourceRoot":"","sources":["../../../src/tests/TestReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
import { PerformanceScenario, PerformanceRunner } from "../utils/performanceRunner";
|
|
1
|
+
import { PerformanceScenario, PerformanceRunner, PhaseResult } from "../utils/performanceRunner";
|
|
2
2
|
export type JestPerformanceScenario<TContext = Record<string, unknown>> = PerformanceScenario<TContext>;
|
|
3
3
|
export declare class JestPerformanceRunner<TContext = Record<string, unknown>> extends PerformanceRunner<TContext> {
|
|
4
4
|
protected scenario: JestPerformanceScenario<TContext>;
|
|
5
|
+
private readonly reporter;
|
|
5
6
|
constructor(scenario: JestPerformanceScenario<TContext>);
|
|
7
|
+
/** Disable the base-class text-table canvas; we render a proper bar chart instead. */
|
|
8
|
+
protected shouldRenderCanvas(): boolean;
|
|
9
|
+
/** Logs per-phase table to the jest-html-reporters attachment. */
|
|
10
|
+
private reportPhaseToReporter;
|
|
11
|
+
/**
|
|
12
|
+
* After all phases finish: console-log the combined summary (base class),
|
|
13
|
+
* then report the summary table and a bar chart with the reporter.
|
|
14
|
+
*/
|
|
15
|
+
protected logSummary(results: PhaseResult<TContext>[]): Promise<void>;
|
|
16
|
+
private buildTableDef;
|
|
17
|
+
/**
|
|
18
|
+
* Builds a Chart.js config: grouped bar columns (Wall/Avg/Min/Max ms)
|
|
19
|
+
* with a red line overlay for failure counts on a secondary right axis.
|
|
20
|
+
*/
|
|
21
|
+
private buildPhaseChart;
|
|
6
22
|
/**
|
|
7
23
|
* Registers Jest describe/it blocks for the scenario.
|
|
8
24
|
* Creates one `it` per phase — its never fail, errors are only recorded
|
|
9
|
-
* in aggregated results. Logs a per-phase table
|
|
10
|
-
*
|
|
25
|
+
* in aggregated results. Logs a per-phase console table and reports it
|
|
26
|
+
* via TestReporter after each `it`; reports combined table + bar chart
|
|
27
|
+
* in `afterAll`.
|
|
11
28
|
*
|
|
12
29
|
* @param hooks Optional lifecycle hooks:
|
|
13
30
|
* - `beforeAll`: runs after `scenario.initialize` but before any `it`.
|
|
@@ -1,14 +1,228 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
1
3
|
import { PerformanceRunner, } from "./../utils/performanceRunner.js";
|
|
4
|
+
import { TestReporter } from "./TestReporter.js";
|
|
2
5
|
export class JestPerformanceRunner extends PerformanceRunner {
|
|
3
6
|
constructor(scenario) {
|
|
4
7
|
super(scenario);
|
|
5
8
|
this.scenario = scenario;
|
|
9
|
+
const reporterName = scenario.name
|
|
10
|
+
.replace(/[^a-zA-Z0-9_-]/g, "-")
|
|
11
|
+
.toLowerCase();
|
|
12
|
+
this.reporter = new TestReporter(reporterName, path.join(process.cwd(), "workdocs", "reports", "evidences"));
|
|
6
13
|
}
|
|
14
|
+
/** Disable the base-class text-table canvas; we render a proper bar chart instead. */
|
|
15
|
+
shouldRenderCanvas() {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
/** Logs per-phase table to the jest-html-reporters attachment. */
|
|
19
|
+
async reportPhaseToReporter(result) {
|
|
20
|
+
try {
|
|
21
|
+
const tableDef = this.buildTableDef([result]);
|
|
22
|
+
await this.reporter.reportTable(`phase: ${result.phase.name}`, tableDef);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
console.error("[JestPerformanceRunner] Failed to report phase table:", e);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* After all phases finish: console-log the combined summary (base class),
|
|
30
|
+
* then report the summary table and a bar chart with the reporter.
|
|
31
|
+
*/
|
|
32
|
+
async logSummary(results) {
|
|
33
|
+
// Console table (base class), canvas skipped via shouldRenderCanvas()
|
|
34
|
+
await super.logSummary(results);
|
|
35
|
+
if (!results.length)
|
|
36
|
+
return;
|
|
37
|
+
// Report markdown table via jest-html-reporters
|
|
38
|
+
try {
|
|
39
|
+
const tableDef = this.buildTableDef(results);
|
|
40
|
+
await this.reporter.reportTable(`summary: ${this.scenario.name}`, tableDef);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error("[JestPerformanceRunner] Failed to report summary table:", e);
|
|
44
|
+
}
|
|
45
|
+
// Render and report bar chart; also write PNG to canvasOutputPath if set
|
|
46
|
+
try {
|
|
47
|
+
const chartConfig = this.buildPhaseChart(results);
|
|
48
|
+
const buf = await this.reporter.reportGraph(`chart: ${this.scenario.name}`, chartConfig, 1200, 600);
|
|
49
|
+
if (this.scenario.canvasOutputPath) {
|
|
50
|
+
await mkdir(path.dirname(this.scenario.canvasOutputPath), {
|
|
51
|
+
recursive: true,
|
|
52
|
+
});
|
|
53
|
+
await writeFile(this.scenario.canvasOutputPath, buf);
|
|
54
|
+
console.log(`[PerfRunner] Stored performance chart at ${this.scenario.canvasOutputPath}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
console.error("[JestPerformanceRunner] Failed to render chart:", e);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
62
|
+
buildTableDef(results) {
|
|
63
|
+
const headers = [
|
|
64
|
+
"Phase",
|
|
65
|
+
"Mode",
|
|
66
|
+
"Iterations",
|
|
67
|
+
"Wall ms",
|
|
68
|
+
"RPS",
|
|
69
|
+
"Avg ms",
|
|
70
|
+
"Min ms",
|
|
71
|
+
"Max ms",
|
|
72
|
+
"Success",
|
|
73
|
+
"Failures",
|
|
74
|
+
];
|
|
75
|
+
const rows = results.map((r) => {
|
|
76
|
+
const rps = (r.config.iterations / (r.wallClockMs / 1000)).toFixed(1);
|
|
77
|
+
return {
|
|
78
|
+
Phase: r.phase.name,
|
|
79
|
+
Mode: r.config.mode,
|
|
80
|
+
Iterations: r.config.iterations.toString(),
|
|
81
|
+
"Wall ms": r.wallClockMs.toFixed(0),
|
|
82
|
+
RPS: rps,
|
|
83
|
+
"Avg ms": r.aggregated.averageMs.toFixed(2),
|
|
84
|
+
"Min ms": r.aggregated.minMs.toFixed(2),
|
|
85
|
+
"Max ms": r.aggregated.maxMs.toFixed(2),
|
|
86
|
+
Success: r.aggregated.successCount.toString(),
|
|
87
|
+
Failures: r.aggregated.failureCount.toString(),
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
return { headers, rows };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Builds a Chart.js config: grouped bar columns (Wall/Avg/Min/Max ms)
|
|
94
|
+
* with a red line overlay for failure counts on a secondary right axis.
|
|
95
|
+
*/
|
|
96
|
+
buildPhaseChart(results) {
|
|
97
|
+
const labels = results.map((r) => r.phase.name);
|
|
98
|
+
const hasFailures = results.some((r) => r.aggregated.failureCount > 0);
|
|
99
|
+
const datasets = [
|
|
100
|
+
{
|
|
101
|
+
type: "bar",
|
|
102
|
+
label: "Wall ms",
|
|
103
|
+
data: results.map((r) => Math.round(r.wallClockMs)),
|
|
104
|
+
backgroundColor: "rgba(59, 130, 246, 0.75)",
|
|
105
|
+
borderColor: "rgba(59, 130, 246, 1)",
|
|
106
|
+
borderWidth: 1,
|
|
107
|
+
yAxisID: "y",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: "bar",
|
|
111
|
+
label: "Avg ms",
|
|
112
|
+
data: results.map((r) => Math.round(r.aggregated.averageMs)),
|
|
113
|
+
backgroundColor: "rgba(16, 185, 129, 0.75)",
|
|
114
|
+
borderColor: "rgba(16, 185, 129, 1)",
|
|
115
|
+
borderWidth: 1,
|
|
116
|
+
yAxisID: "y",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: "bar",
|
|
120
|
+
label: "Min ms",
|
|
121
|
+
data: results.map((r) => Math.round(r.aggregated.minMs)),
|
|
122
|
+
backgroundColor: "rgba(245, 158, 11, 0.75)",
|
|
123
|
+
borderColor: "rgba(245, 158, 11, 1)",
|
|
124
|
+
borderWidth: 1,
|
|
125
|
+
yAxisID: "y",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: "bar",
|
|
129
|
+
label: "Max ms",
|
|
130
|
+
data: results.map((r) => Math.round(r.aggregated.maxMs)),
|
|
131
|
+
backgroundColor: "rgba(139, 92, 246, 0.75)",
|
|
132
|
+
borderColor: "rgba(139, 92, 246, 1)",
|
|
133
|
+
borderWidth: 1,
|
|
134
|
+
yAxisID: "y",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: "line",
|
|
138
|
+
label: "Failures",
|
|
139
|
+
data: results.map((r) => r.aggregated.failureCount),
|
|
140
|
+
borderColor: "rgba(239, 68, 68, 1)",
|
|
141
|
+
backgroundColor: "rgba(239, 68, 68, 0.15)",
|
|
142
|
+
borderWidth: 2.5,
|
|
143
|
+
pointRadius: 6,
|
|
144
|
+
pointBackgroundColor: "rgba(239, 68, 68, 1)",
|
|
145
|
+
pointBorderColor: "white",
|
|
146
|
+
pointBorderWidth: 1.5,
|
|
147
|
+
fill: false,
|
|
148
|
+
tension: 0.3,
|
|
149
|
+
yAxisID: "yRight",
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
return {
|
|
153
|
+
type: "bar",
|
|
154
|
+
data: { labels, datasets },
|
|
155
|
+
options: {
|
|
156
|
+
responsive: false,
|
|
157
|
+
animation: false,
|
|
158
|
+
plugins: {
|
|
159
|
+
title: {
|
|
160
|
+
display: true,
|
|
161
|
+
text: `Performance: ${this.scenario.name}`,
|
|
162
|
+
font: { size: 16, weight: "bold" },
|
|
163
|
+
padding: { top: 10, bottom: 16 },
|
|
164
|
+
},
|
|
165
|
+
legend: {
|
|
166
|
+
display: true,
|
|
167
|
+
position: "top",
|
|
168
|
+
labels: { font: { size: 12 }, padding: 16 },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
scales: {
|
|
172
|
+
x: {
|
|
173
|
+
title: {
|
|
174
|
+
display: true,
|
|
175
|
+
text: "Phase",
|
|
176
|
+
font: { size: 12 },
|
|
177
|
+
},
|
|
178
|
+
ticks: { maxRotation: 30, font: { size: 11 } },
|
|
179
|
+
},
|
|
180
|
+
y: {
|
|
181
|
+
type: "linear",
|
|
182
|
+
position: "left",
|
|
183
|
+
beginAtZero: true,
|
|
184
|
+
title: {
|
|
185
|
+
display: true,
|
|
186
|
+
text: "Time (ms)",
|
|
187
|
+
font: { size: 12 },
|
|
188
|
+
},
|
|
189
|
+
ticks: {
|
|
190
|
+
callback: function (value) {
|
|
191
|
+
return value >= 1000
|
|
192
|
+
? `${(value / 1000).toFixed(1)}s`
|
|
193
|
+
: `${value}ms`;
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
yRight: {
|
|
198
|
+
type: "linear",
|
|
199
|
+
position: "right",
|
|
200
|
+
display: hasFailures,
|
|
201
|
+
beginAtZero: true,
|
|
202
|
+
title: {
|
|
203
|
+
display: hasFailures,
|
|
204
|
+
text: "Failures",
|
|
205
|
+
color: "rgba(239, 68, 68, 1)",
|
|
206
|
+
font: { size: 12 },
|
|
207
|
+
},
|
|
208
|
+
ticks: {
|
|
209
|
+
color: "rgba(239, 68, 68, 1)",
|
|
210
|
+
font: { size: 11 },
|
|
211
|
+
},
|
|
212
|
+
grid: { drawOnChartArea: false },
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
layout: { padding: { left: 16, right: 16, top: 8, bottom: 16 } },
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
// ── Jest describe/it wiring ────────────────────────────────────────────────
|
|
7
220
|
/**
|
|
8
221
|
* Registers Jest describe/it blocks for the scenario.
|
|
9
222
|
* Creates one `it` per phase — its never fail, errors are only recorded
|
|
10
|
-
* in aggregated results. Logs a per-phase table
|
|
11
|
-
*
|
|
223
|
+
* in aggregated results. Logs a per-phase console table and reports it
|
|
224
|
+
* via TestReporter after each `it`; reports combined table + bar chart
|
|
225
|
+
* in `afterAll`.
|
|
12
226
|
*
|
|
13
227
|
* @param hooks Optional lifecycle hooks:
|
|
14
228
|
* - `beforeAll`: runs after `scenario.initialize` but before any `it`.
|
|
@@ -32,7 +246,10 @@ export class JestPerformanceRunner extends PerformanceRunner {
|
|
|
32
246
|
const context = this.mergeContext(phase);
|
|
33
247
|
const result = await this.runPhase(phase, context);
|
|
34
248
|
results.push(result);
|
|
249
|
+
// Console table (sync)
|
|
35
250
|
this.logPhaseTable(result);
|
|
251
|
+
// Reporter table (async, await so it completes before it ends)
|
|
252
|
+
await this.reportPhaseToReporter(result);
|
|
36
253
|
}
|
|
37
254
|
catch (e) {
|
|
38
255
|
console.error(`[JestPerformanceRunner] Phase "${phase.name}" encountered an error:`, e);
|
|
@@ -41,6 +258,7 @@ export class JestPerformanceRunner extends PerformanceRunner {
|
|
|
41
258
|
});
|
|
42
259
|
});
|
|
43
260
|
afterAll(async () => {
|
|
261
|
+
// Console summary + reporter table + bar chart PNG
|
|
44
262
|
await this.logSummary(results);
|
|
45
263
|
});
|
|
46
264
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jestPerformanceRunner.js","sourceRoot":"","sources":["../../../src/tests/jestPerformanceRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,GAGlB,wCAAmC;
|
|
1
|
+
{"version":3,"file":"jestPerformanceRunner.js","sourceRoot":"","sources":["../../../src/tests/jestPerformanceRunner.ts"],"names":[],"mappings":"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"}
|
package/lib/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@ __exportStar(require("./writers/index.cjs"), exports);
|
|
|
43
43
|
* @const VERSION
|
|
44
44
|
* @memberOf module:utils
|
|
45
45
|
*/
|
|
46
|
-
exports.VERSION = "0.11.
|
|
46
|
+
exports.VERSION = "0.11.13";
|
|
47
47
|
/**
|
|
48
48
|
* @description Represents the current version of the module.
|
|
49
49
|
* @summary Stores the version for the @decaf-ts/utils package. The build replaces
|
package/lib/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export * from "./writers";
|
|
|
26
26
|
* @const VERSION
|
|
27
27
|
* @memberOf module:utils
|
|
28
28
|
*/
|
|
29
|
-
export declare const VERSION = "0.11.
|
|
29
|
+
export declare const VERSION = "0.11.13";
|
|
30
30
|
/**
|
|
31
31
|
* @description Represents the current version of the module.
|
|
32
32
|
* @summary Stores the version for the @decaf-ts/utils package. The build replaces
|
|
@@ -289,11 +289,9 @@ class TestReporter {
|
|
|
289
289
|
* @param {any} config - Chart.js configuration object
|
|
290
290
|
* @return {Promise<void>} Promise that resolves when graph is reported
|
|
291
291
|
*/
|
|
292
|
-
async reportGraph(reference, config) {
|
|
292
|
+
async reportGraph(reference, config, width = 1200, height = 600) {
|
|
293
293
|
this.deps = await (0, fs_2.installIfNotAvailable)([dependencies[2]], this.deps);
|
|
294
294
|
const { ChartJSNodeCanvas } = await normalizeImport(Promise.resolve(`${dependencies[2]}`).then(s => __importStar(require(s))));
|
|
295
|
-
const width = 600; //px
|
|
296
|
-
const height = 800; //px
|
|
297
295
|
const backgroundColour = "white"; // Uses https://www.w3schools.com/tags/canvas_fillstyle.asp
|
|
298
296
|
const chartJSNodeCanvas = new ChartJSNodeCanvas({
|
|
299
297
|
width,
|
|
@@ -301,7 +299,8 @@ class TestReporter {
|
|
|
301
299
|
backgroundColour,
|
|
302
300
|
});
|
|
303
301
|
const image = await chartJSNodeCanvas.renderToBuffer(config);
|
|
304
|
-
|
|
302
|
+
await this.reportImage(reference, image);
|
|
303
|
+
return image;
|
|
305
304
|
}
|
|
306
305
|
/**
|
|
307
306
|
* @description Reports an image to the test report
|
|
@@ -184,7 +184,7 @@ export declare class TestReporter {
|
|
|
184
184
|
* @param {any} config - Chart.js configuration object
|
|
185
185
|
* @return {Promise<void>} Promise that resolves when graph is reported
|
|
186
186
|
*/
|
|
187
|
-
reportGraph(reference: string, config: any): Promise<
|
|
187
|
+
reportGraph(reference: string, config: any, width?: number, height?: number): Promise<Buffer>;
|
|
188
188
|
/**
|
|
189
189
|
* @description Reports an image to the test report
|
|
190
190
|
* @summary Stores an image buffer in the test report
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestReporter.js","sourceRoot":"","sources":["../../src/tests/TestReporter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TestReporter.js","sourceRoot":"","sources":["../../src/tests/TestReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,234 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.JestPerformanceRunner = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const promises_1 = require("fs/promises");
|
|
4
9
|
const performanceRunner_1 = require("./../utils/performanceRunner.cjs");
|
|
10
|
+
const TestReporter_1 = require("./TestReporter.cjs");
|
|
5
11
|
class JestPerformanceRunner extends performanceRunner_1.PerformanceRunner {
|
|
6
12
|
constructor(scenario) {
|
|
7
13
|
super(scenario);
|
|
8
14
|
this.scenario = scenario;
|
|
15
|
+
const reporterName = scenario.name
|
|
16
|
+
.replace(/[^a-zA-Z0-9_-]/g, "-")
|
|
17
|
+
.toLowerCase();
|
|
18
|
+
this.reporter = new TestReporter_1.TestReporter(reporterName, path_1.default.join(process.cwd(), "workdocs", "reports", "evidences"));
|
|
9
19
|
}
|
|
20
|
+
/** Disable the base-class text-table canvas; we render a proper bar chart instead. */
|
|
21
|
+
shouldRenderCanvas() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
/** Logs per-phase table to the jest-html-reporters attachment. */
|
|
25
|
+
async reportPhaseToReporter(result) {
|
|
26
|
+
try {
|
|
27
|
+
const tableDef = this.buildTableDef([result]);
|
|
28
|
+
await this.reporter.reportTable(`phase: ${result.phase.name}`, tableDef);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
console.error("[JestPerformanceRunner] Failed to report phase table:", e);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* After all phases finish: console-log the combined summary (base class),
|
|
36
|
+
* then report the summary table and a bar chart with the reporter.
|
|
37
|
+
*/
|
|
38
|
+
async logSummary(results) {
|
|
39
|
+
// Console table (base class), canvas skipped via shouldRenderCanvas()
|
|
40
|
+
await super.logSummary(results);
|
|
41
|
+
if (!results.length)
|
|
42
|
+
return;
|
|
43
|
+
// Report markdown table via jest-html-reporters
|
|
44
|
+
try {
|
|
45
|
+
const tableDef = this.buildTableDef(results);
|
|
46
|
+
await this.reporter.reportTable(`summary: ${this.scenario.name}`, tableDef);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.error("[JestPerformanceRunner] Failed to report summary table:", e);
|
|
50
|
+
}
|
|
51
|
+
// Render and report bar chart; also write PNG to canvasOutputPath if set
|
|
52
|
+
try {
|
|
53
|
+
const chartConfig = this.buildPhaseChart(results);
|
|
54
|
+
const buf = await this.reporter.reportGraph(`chart: ${this.scenario.name}`, chartConfig, 1200, 600);
|
|
55
|
+
if (this.scenario.canvasOutputPath) {
|
|
56
|
+
await (0, promises_1.mkdir)(path_1.default.dirname(this.scenario.canvasOutputPath), {
|
|
57
|
+
recursive: true,
|
|
58
|
+
});
|
|
59
|
+
await (0, promises_1.writeFile)(this.scenario.canvasOutputPath, buf);
|
|
60
|
+
console.log(`[PerfRunner] Stored performance chart at ${this.scenario.canvasOutputPath}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error("[JestPerformanceRunner] Failed to render chart:", e);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
68
|
+
buildTableDef(results) {
|
|
69
|
+
const headers = [
|
|
70
|
+
"Phase",
|
|
71
|
+
"Mode",
|
|
72
|
+
"Iterations",
|
|
73
|
+
"Wall ms",
|
|
74
|
+
"RPS",
|
|
75
|
+
"Avg ms",
|
|
76
|
+
"Min ms",
|
|
77
|
+
"Max ms",
|
|
78
|
+
"Success",
|
|
79
|
+
"Failures",
|
|
80
|
+
];
|
|
81
|
+
const rows = results.map((r) => {
|
|
82
|
+
const rps = (r.config.iterations / (r.wallClockMs / 1000)).toFixed(1);
|
|
83
|
+
return {
|
|
84
|
+
Phase: r.phase.name,
|
|
85
|
+
Mode: r.config.mode,
|
|
86
|
+
Iterations: r.config.iterations.toString(),
|
|
87
|
+
"Wall ms": r.wallClockMs.toFixed(0),
|
|
88
|
+
RPS: rps,
|
|
89
|
+
"Avg ms": r.aggregated.averageMs.toFixed(2),
|
|
90
|
+
"Min ms": r.aggregated.minMs.toFixed(2),
|
|
91
|
+
"Max ms": r.aggregated.maxMs.toFixed(2),
|
|
92
|
+
Success: r.aggregated.successCount.toString(),
|
|
93
|
+
Failures: r.aggregated.failureCount.toString(),
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
return { headers, rows };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Builds a Chart.js config: grouped bar columns (Wall/Avg/Min/Max ms)
|
|
100
|
+
* with a red line overlay for failure counts on a secondary right axis.
|
|
101
|
+
*/
|
|
102
|
+
buildPhaseChart(results) {
|
|
103
|
+
const labels = results.map((r) => r.phase.name);
|
|
104
|
+
const hasFailures = results.some((r) => r.aggregated.failureCount > 0);
|
|
105
|
+
const datasets = [
|
|
106
|
+
{
|
|
107
|
+
type: "bar",
|
|
108
|
+
label: "Wall ms",
|
|
109
|
+
data: results.map((r) => Math.round(r.wallClockMs)),
|
|
110
|
+
backgroundColor: "rgba(59, 130, 246, 0.75)",
|
|
111
|
+
borderColor: "rgba(59, 130, 246, 1)",
|
|
112
|
+
borderWidth: 1,
|
|
113
|
+
yAxisID: "y",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: "bar",
|
|
117
|
+
label: "Avg ms",
|
|
118
|
+
data: results.map((r) => Math.round(r.aggregated.averageMs)),
|
|
119
|
+
backgroundColor: "rgba(16, 185, 129, 0.75)",
|
|
120
|
+
borderColor: "rgba(16, 185, 129, 1)",
|
|
121
|
+
borderWidth: 1,
|
|
122
|
+
yAxisID: "y",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: "bar",
|
|
126
|
+
label: "Min ms",
|
|
127
|
+
data: results.map((r) => Math.round(r.aggregated.minMs)),
|
|
128
|
+
backgroundColor: "rgba(245, 158, 11, 0.75)",
|
|
129
|
+
borderColor: "rgba(245, 158, 11, 1)",
|
|
130
|
+
borderWidth: 1,
|
|
131
|
+
yAxisID: "y",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: "bar",
|
|
135
|
+
label: "Max ms",
|
|
136
|
+
data: results.map((r) => Math.round(r.aggregated.maxMs)),
|
|
137
|
+
backgroundColor: "rgba(139, 92, 246, 0.75)",
|
|
138
|
+
borderColor: "rgba(139, 92, 246, 1)",
|
|
139
|
+
borderWidth: 1,
|
|
140
|
+
yAxisID: "y",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: "line",
|
|
144
|
+
label: "Failures",
|
|
145
|
+
data: results.map((r) => r.aggregated.failureCount),
|
|
146
|
+
borderColor: "rgba(239, 68, 68, 1)",
|
|
147
|
+
backgroundColor: "rgba(239, 68, 68, 0.15)",
|
|
148
|
+
borderWidth: 2.5,
|
|
149
|
+
pointRadius: 6,
|
|
150
|
+
pointBackgroundColor: "rgba(239, 68, 68, 1)",
|
|
151
|
+
pointBorderColor: "white",
|
|
152
|
+
pointBorderWidth: 1.5,
|
|
153
|
+
fill: false,
|
|
154
|
+
tension: 0.3,
|
|
155
|
+
yAxisID: "yRight",
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
return {
|
|
159
|
+
type: "bar",
|
|
160
|
+
data: { labels, datasets },
|
|
161
|
+
options: {
|
|
162
|
+
responsive: false,
|
|
163
|
+
animation: false,
|
|
164
|
+
plugins: {
|
|
165
|
+
title: {
|
|
166
|
+
display: true,
|
|
167
|
+
text: `Performance: ${this.scenario.name}`,
|
|
168
|
+
font: { size: 16, weight: "bold" },
|
|
169
|
+
padding: { top: 10, bottom: 16 },
|
|
170
|
+
},
|
|
171
|
+
legend: {
|
|
172
|
+
display: true,
|
|
173
|
+
position: "top",
|
|
174
|
+
labels: { font: { size: 12 }, padding: 16 },
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
scales: {
|
|
178
|
+
x: {
|
|
179
|
+
title: {
|
|
180
|
+
display: true,
|
|
181
|
+
text: "Phase",
|
|
182
|
+
font: { size: 12 },
|
|
183
|
+
},
|
|
184
|
+
ticks: { maxRotation: 30, font: { size: 11 } },
|
|
185
|
+
},
|
|
186
|
+
y: {
|
|
187
|
+
type: "linear",
|
|
188
|
+
position: "left",
|
|
189
|
+
beginAtZero: true,
|
|
190
|
+
title: {
|
|
191
|
+
display: true,
|
|
192
|
+
text: "Time (ms)",
|
|
193
|
+
font: { size: 12 },
|
|
194
|
+
},
|
|
195
|
+
ticks: {
|
|
196
|
+
callback: function (value) {
|
|
197
|
+
return value >= 1000
|
|
198
|
+
? `${(value / 1000).toFixed(1)}s`
|
|
199
|
+
: `${value}ms`;
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
yRight: {
|
|
204
|
+
type: "linear",
|
|
205
|
+
position: "right",
|
|
206
|
+
display: hasFailures,
|
|
207
|
+
beginAtZero: true,
|
|
208
|
+
title: {
|
|
209
|
+
display: hasFailures,
|
|
210
|
+
text: "Failures",
|
|
211
|
+
color: "rgba(239, 68, 68, 1)",
|
|
212
|
+
font: { size: 12 },
|
|
213
|
+
},
|
|
214
|
+
ticks: {
|
|
215
|
+
color: "rgba(239, 68, 68, 1)",
|
|
216
|
+
font: { size: 11 },
|
|
217
|
+
},
|
|
218
|
+
grid: { drawOnChartArea: false },
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
layout: { padding: { left: 16, right: 16, top: 8, bottom: 16 } },
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// ── Jest describe/it wiring ────────────────────────────────────────────────
|
|
10
226
|
/**
|
|
11
227
|
* Registers Jest describe/it blocks for the scenario.
|
|
12
228
|
* Creates one `it` per phase — its never fail, errors are only recorded
|
|
13
|
-
* in aggregated results. Logs a per-phase table
|
|
14
|
-
*
|
|
229
|
+
* in aggregated results. Logs a per-phase console table and reports it
|
|
230
|
+
* via TestReporter after each `it`; reports combined table + bar chart
|
|
231
|
+
* in `afterAll`.
|
|
15
232
|
*
|
|
16
233
|
* @param hooks Optional lifecycle hooks:
|
|
17
234
|
* - `beforeAll`: runs after `scenario.initialize` but before any `it`.
|
|
@@ -35,7 +252,10 @@ class JestPerformanceRunner extends performanceRunner_1.PerformanceRunner {
|
|
|
35
252
|
const context = this.mergeContext(phase);
|
|
36
253
|
const result = await this.runPhase(phase, context);
|
|
37
254
|
results.push(result);
|
|
255
|
+
// Console table (sync)
|
|
38
256
|
this.logPhaseTable(result);
|
|
257
|
+
// Reporter table (async, await so it completes before it ends)
|
|
258
|
+
await this.reportPhaseToReporter(result);
|
|
39
259
|
}
|
|
40
260
|
catch (e) {
|
|
41
261
|
console.error(`[JestPerformanceRunner] Phase "${phase.name}" encountered an error:`, e);
|
|
@@ -44,6 +264,7 @@ class JestPerformanceRunner extends performanceRunner_1.PerformanceRunner {
|
|
|
44
264
|
});
|
|
45
265
|
});
|
|
46
266
|
afterAll(async () => {
|
|
267
|
+
// Console summary + reporter table + bar chart PNG
|
|
47
268
|
await this.logSummary(results);
|
|
48
269
|
});
|
|
49
270
|
});
|
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
import { PerformanceScenario, PerformanceRunner } from "../utils/performanceRunner";
|
|
1
|
+
import { PerformanceScenario, PerformanceRunner, PhaseResult } from "../utils/performanceRunner";
|
|
2
2
|
export type JestPerformanceScenario<TContext = Record<string, unknown>> = PerformanceScenario<TContext>;
|
|
3
3
|
export declare class JestPerformanceRunner<TContext = Record<string, unknown>> extends PerformanceRunner<TContext> {
|
|
4
4
|
protected scenario: JestPerformanceScenario<TContext>;
|
|
5
|
+
private readonly reporter;
|
|
5
6
|
constructor(scenario: JestPerformanceScenario<TContext>);
|
|
7
|
+
/** Disable the base-class text-table canvas; we render a proper bar chart instead. */
|
|
8
|
+
protected shouldRenderCanvas(): boolean;
|
|
9
|
+
/** Logs per-phase table to the jest-html-reporters attachment. */
|
|
10
|
+
private reportPhaseToReporter;
|
|
11
|
+
/**
|
|
12
|
+
* After all phases finish: console-log the combined summary (base class),
|
|
13
|
+
* then report the summary table and a bar chart with the reporter.
|
|
14
|
+
*/
|
|
15
|
+
protected logSummary(results: PhaseResult<TContext>[]): Promise<void>;
|
|
16
|
+
private buildTableDef;
|
|
17
|
+
/**
|
|
18
|
+
* Builds a Chart.js config: grouped bar columns (Wall/Avg/Min/Max ms)
|
|
19
|
+
* with a red line overlay for failure counts on a secondary right axis.
|
|
20
|
+
*/
|
|
21
|
+
private buildPhaseChart;
|
|
6
22
|
/**
|
|
7
23
|
* Registers Jest describe/it blocks for the scenario.
|
|
8
24
|
* Creates one `it` per phase — its never fail, errors are only recorded
|
|
9
|
-
* in aggregated results. Logs a per-phase table
|
|
10
|
-
*
|
|
25
|
+
* in aggregated results. Logs a per-phase console table and reports it
|
|
26
|
+
* via TestReporter after each `it`; reports combined table + bar chart
|
|
27
|
+
* in `afterAll`.
|
|
11
28
|
*
|
|
12
29
|
* @param hooks Optional lifecycle hooks:
|
|
13
30
|
* - `beforeAll`: runs after `scenario.initialize` but before any `it`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jestPerformanceRunner.js","sourceRoot":"","sources":["../../src/tests/jestPerformanceRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jestPerformanceRunner.js","sourceRoot":"","sources":["../../src/tests/jestPerformanceRunner.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,0CAA+C;AAC/C,wEAKoC;AACpC,qDAA8C;AAM9C,MAAa,qBAEX,SAAQ,qCAA2B;IAInC,YAAY,QAA2C;QACrD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI;aAC/B,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;aAC/B,WAAW,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAY,CAC9B,YAAY,EACZ,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,sFAAsF;IACnE,kBAAkB;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kEAAkE;IAC1D,KAAK,CAAC,qBAAqB,CACjC,MAA6B;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,uDAAuD,EACvD,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACgB,KAAK,CAAC,UAAU,CACjC,OAAgC;QAEhC,sEAAsE;QACtE,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QAE5B,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC7B,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAChC,QAAQ,CACT,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,yDAAyD,EACzD,CAAC,CACF,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CACzC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC9B,WAAW,EACX,IAAI,EACJ,GAAG,CACJ,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACnC,MAAM,IAAA,gBAAK,EAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;oBACxD,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,IAAA,oBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CACT,4CAA4C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,8EAA8E;IAEtE,aAAa,CAAC,OAAgC;QACpD,MAAM,OAAO,GAAG;YACd,OAAO;YACP,MAAM;YACN,YAAY;YACZ,SAAS;YACT,KAAK;YACL,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,UAAU;SACX,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO;gBACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;gBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACnB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC1C,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,GAAG,EAAE,GAAG;gBACR,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3C,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;gBAC7C,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;aAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,OAAgC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAa;YACzB;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACnD,eAAe,EAAE,0BAA0B;gBAC3C,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,GAAG;aACb;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC5D,eAAe,EAAE,0BAA0B;gBAC3C,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,GAAG;aACb;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxD,eAAe,EAAE,0BAA0B;gBAC3C,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,GAAG;aACb;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxD,eAAe,EAAE,0BAA0B;gBAC3C,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,GAAG;aACb;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;gBACnD,WAAW,EAAE,sBAAsB;gBACnC,eAAe,EAAE,yBAAyB;gBAC1C,WAAW,EAAE,GAAG;gBAChB,WAAW,EAAE,CAAC;gBACd,oBAAoB,EAAE,sBAAsB;gBAC5C,gBAAgB,EAAE,OAAO;gBACzB,gBAAgB,EAAE,GAAG;gBACrB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC1B,OAAO,EAAE;gBACP,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE;oBACP,KAAK,EAAE;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;wBAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;wBAClC,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;qBACjC;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;qBAC5C;iBACF;gBACD,MAAM,EAAE;oBACN,CAAC,EAAE;wBACD,KAAK,EAAE;4BACL,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;yBACnB;wBACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;qBAC/C;oBACD,CAAC,EAAE;wBACD,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,IAAI;wBACjB,KAAK,EAAE;4BACL,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;yBACnB;wBACD,KAAK,EAAE;4BACL,QAAQ,EAAE,UAAU,KAAa;gCAC/B,OAAO,KAAK,IAAI,IAAI;oCAClB,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oCACjC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;4BACnB,CAAC;yBACF;qBACF;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,WAAW;wBACpB,WAAW,EAAE,IAAI;wBACjB,KAAK,EAAE;4BACL,OAAO,EAAE,WAAW;4BACpB,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,sBAAsB;4BAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;yBACnB;wBACD,KAAK,EAAE;4BACL,KAAK,EAAE,sBAAsB;4BAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;yBACnB;wBACD,IAAI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;qBACjC;iBACF;gBACD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;aACjE;SACF,CAAC;IACJ,CAAC;IAED,8EAA8E;IAE9E;;;;;;;;;;;OAWG;IACI,aAAa,CAAC,KAEpB;QACC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;YAChC,MAAM,OAAO,GAA4B,EAAE,CAAC;YAE5C,SAAS,CAAC,KAAK,IAAI,EAAE;gBACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACnC,CAAC;gBACD,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;oBACrB,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;gBACtD,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;oBACxB,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACrB,uBAAuB;wBACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;wBAC3B,+DAA+D;wBAC/D,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;oBAC3C,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CACX,kCAAkC,KAAK,CAAC,IAAI,yBAAyB,EACrE,CAAC,CACF,CAAC;wBACF,+DAA+D;oBACjE,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAClB,mDAAmD;gBACnD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlTD,sDAkTC"}
|