@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.
@@ -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.12";
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.12";
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<void>;
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
- return await this.reportImage(reference, image);
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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,yBAAoB;AAoCpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAE/E;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe,CAAI,aAAyB;IACzD,mEAAmE;IACnE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,OAAO,YAAY;IAwBvB,YACY,WAAmB,OAAO,EAC1B,WAAW,IAAI,CAAC,IAAI,CAC5B,OAAO,CAAC,GAAG,EAAE,EACb,UAAU,EACV,SAAS,EACT,WAAW,CACZ;QANS,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,aAAQ,GAAR,QAAQ,CAKjB;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,iDAAiD;QACjD,qEAAqE;QACrE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAM7B,CAAC;QACF,IAAI,CAAC,kCAAkC,CAAC,MAAiC,CAAC,CAAC;QAC3E,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC;QACrC,YAAY,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAC7C,CAAC;IAEO,2BAA2B;QACjC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CACrD,CAAC;IACJ,CAAC;IAEO,+BAA+B;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,kCAAkC,CAAC,MAA+B;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnD,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;QAC7B,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,OAAwB;QACzD,IAAI,CAAC,YAAY,CAAC,cAAc;YAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvD,MAAM,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,UAA2B;QAE3B,IAAI,CAAC,YAAY,CAAC,iBAAiB;YAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAChE,MAAM,YAAY,CAAC,iBAAiB,CAAC;YACnC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACO,KAAK,CAAC,MAAM,CACpB,SAAiB,EACjB,IAAuC,EACvC,IAAiB,EACjB,OAAgB,KAAK;QAErB,IAAI,CAAC;YACH,IAAI,cAAc,GAEiB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,SAAS,GAAsC,MAAM,CAAC;YAE1D,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,OAAO;oBACV,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;oBACnC,SAAS,GAAG,MAAM,CAAC;oBACnB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,IAAI,EAAE,CAAC;wBACT,IAAK,IAA8B,CAAC,OAAO;4BACzC,OAAQ,IAA8B,CAAC,SAAS,CAAC,CAAC;wBACpD,IAAK,IAA6B,CAAC,MAAM;4BACvC,OAAQ,IAA6B,CAAC,QAAQ,CAAC,CAAC;oBACpD,CAAC;oBACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrC,SAAS,GAAG,OAAO,CAAC;oBACpB,MAAM;gBACR,KAAK,IAAI;oBACP,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,GAAG,MAAM,CAAC;oBACnB,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,CAAC;YAC3D,CAAC;YACD,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC/B,MAAM,cAAc,CAAC,SAAS,EAAE,IAAuB,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,mCAAmC,SAAS,yBAAyB,IAAI,CAAC,QAAQ,MAAM,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,IAA8B,EAC9B,OAAoB,MAAM,EAC1B,IAAI,GAAG,KAAK;QAEZ,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAI,GAAG,KAAK;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,QAA2B;QAC9D,IAAI,CAAC,IAAI,GAAG,MAAM,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,MAAW,EACX,KAAK,GAAG,IAAI,EACZ,MAAM,GAAG,GAAG;QAEZ,IAAI,CAAC,IAAI,GAAG,MAAM,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,eAAe,CACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxB,CAAC;QAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,2DAA2D;QAC7F,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC9C,KAAK;YACL,MAAM;YACN,gBAAgB;SACjB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,MAAc;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -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 after each `it` and a
10
- * combined summary (with optional canvas) in `afterAll`.
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 after each `it` and a
11
- * combined summary (with optional canvas) in `afterAll`.
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;AAKpC,MAAM,OAAO,qBAEX,SAAQ,iBAA2B;IAGnC,YAAY,QAA2C;QACrD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;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,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAC7B,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,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
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.12";
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.12";
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
- return await this.reportImage(reference, image);
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<void>;
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 after each `it` and a
14
- * combined summary (with optional canvas) in `afterAll`.
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 after each `it` and a
10
- * combined summary (with optional canvas) in `afterAll`.
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":";;;AAAA,wEAKoC;AAKpC,MAAa,qBAEX,SAAQ,qCAA2B;IAGnC,YAAY,QAA2C;QACrD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;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,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAC7B,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,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1DD,sDA0DC"}
1
+ {"version":3,"file":"jestPerformanceRunner.js","sourceRoot":"","sources":["../../src/tests/jestPerformanceRunner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/utils",
3
- "version": "0.11.13",
3
+ "version": "0.11.14",
4
4
  "description": "module management utils for decaf-ts",
5
5
  "type": "module",
6
6
  "exports": {