@ia-qa/pal 0.5.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -4
- package/TUTORIAL.md +194 -2
- package/dist/cli/index.js +30 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/htmlReport.js +20 -5
- package/dist/htmlReport.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +6 -0
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/plan.d.ts +17 -0
- package/dist/plan.js +21 -1
- package/dist/plan.js.map +1 -1
- package/dist/rebaseline.d.ts +66 -0
- package/dist/rebaseline.js +167 -0
- package/dist/rebaseline.js.map +1 -0
- package/dist/report.d.ts +25 -0
- package/dist/report.js +106 -6
- package/dist/report.js.map +1 -1
- package/dist/run.d.ts +4 -0
- package/dist/run.js +22 -3
- package/dist/run.js.map +1 -1
- package/dist/setup.js +17 -1
- package/dist/setup.js.map +1 -1
- package/dist/suite.d.ts +46 -0
- package/dist/suite.js +95 -2
- package/dist/suite.js.map +1 -1
- package/dist/tour.d.ts +20 -1
- package/dist/tour.js +36 -9
- package/dist/tour.js.map +1 -1
- package/package.json +2 -2
package/dist/report.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exploreOutcome = exploreOutcome;
|
|
4
|
+
exports.guidance = guidance;
|
|
3
5
|
exports.renderReport = renderReport;
|
|
4
6
|
const suite_1 = require("./suite");
|
|
7
|
+
const plan_1 = require("./plan");
|
|
5
8
|
/**
|
|
6
9
|
* The one rendering of a tour for a terminal. Four sections, each printed only when it holds
|
|
7
10
|
* something, in the order a reader acts on them: what is broken, what needs a person, what is
|
|
@@ -10,6 +13,22 @@ const suite_1 = require("./suite");
|
|
|
10
13
|
*/
|
|
11
14
|
const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
12
15
|
const LEVELS = ['level 0 (public pages)', 'level 1 (with a login)', 'level 2 (with your test suite)'];
|
|
16
|
+
/**
|
|
17
|
+
* Why a `--more` tour explored nothing — classified once, worded by each renderer.
|
|
18
|
+
*
|
|
19
|
+
* "Nothing left to explore" was printed for all three, so a tour that mapped nothing
|
|
20
|
+
* ("0 explored in depth of 0") congratulated itself on a surface it never saw. Same rule as
|
|
21
|
+
* everywhere here: silence and completion must not read alike.
|
|
22
|
+
*/
|
|
23
|
+
function exploreOutcome(r) {
|
|
24
|
+
if (r.pages.exploredThisTour.length > 0)
|
|
25
|
+
return 'explored';
|
|
26
|
+
if (r.pages.underContract === 0)
|
|
27
|
+
return 'nothing-mapped';
|
|
28
|
+
if (r.pages.explored + r.pages.notExplored.length === 0)
|
|
29
|
+
return 'nothing-openable';
|
|
30
|
+
return 'all-explored';
|
|
31
|
+
}
|
|
13
32
|
function duration(seconds) {
|
|
14
33
|
if (seconds < 90)
|
|
15
34
|
return `${seconds} s`;
|
|
@@ -19,16 +38,77 @@ function duration(seconds) {
|
|
|
19
38
|
return `${Math.floor(minutes / 60)} h ${String(minutes % 60).padStart(2, '0')}`;
|
|
20
39
|
}
|
|
21
40
|
const day = (iso) => iso.slice(0, 10);
|
|
41
|
+
const list = (names, max = 6) => `${names.slice(0, max).join(', ')}${names.length > max ? ', …' : ''}`;
|
|
42
|
+
const FIX_DRY_RUN = 'npx -p @ia-qa/self-healing ia-qa-heal fix --dry-run';
|
|
43
|
+
/**
|
|
44
|
+
* What changes how the rest of the report should be read, stated before it.
|
|
45
|
+
*
|
|
46
|
+
* Each entry fires on a fact this tour measured — never on a project shape guessed from names —
|
|
47
|
+
* and each has an ordinary case where it stays silent, which the tests pin: a comparable
|
|
48
|
+
* baseline, a suite that visits only configured pages, a healable row that did become a rewrite.
|
|
49
|
+
* Nothing here changes the verdict: it says what the verdict is made of.
|
|
50
|
+
*/
|
|
51
|
+
function guidance(r) {
|
|
52
|
+
const out = [];
|
|
53
|
+
if (r.refused || r.mode !== 'regression')
|
|
54
|
+
return out;
|
|
55
|
+
const d = r.drift;
|
|
56
|
+
const s = r.suite;
|
|
57
|
+
const incomparable = d?.incomparable ?? [];
|
|
58
|
+
if (incomparable.length > 0) {
|
|
59
|
+
const pages = incomparable.map((x) => x.page);
|
|
60
|
+
const reasons = [...new Set(incomparable.map((x) => x.reason))].map((x) => plan_1.INCOMPARABLE_TEXT[x]);
|
|
61
|
+
out.push({
|
|
62
|
+
text: `${plural(pages.length, 'drifting page')} compared against a baseline this capture cannot be compared with (${list(pages)}): ${reasons.join('; ')}. ` +
|
|
63
|
+
'Much of that drift may come from how the two sides were captured, not from the app. Read the rows, then preview replacing those baselines — the preview writes nothing:',
|
|
64
|
+
command: `npx -p @ia-qa/pal ia-qa-pal rebaseline ${pages.join(' ')}`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const outside = s?.run && !s.run.dedicated ? (s.visitedUnconfigured ?? []) : [];
|
|
68
|
+
if (outside.length > 0) {
|
|
69
|
+
out.push({
|
|
70
|
+
text: `Your test command also visits ${plural(outside.length, 'page')} this project does not configure (${list(outside)}), and --suite runs all of it. ` +
|
|
71
|
+
'Declare those pages, or give pal a shorter command that runs only the tests of the configured pages, in .ia-qa/config.json:',
|
|
72
|
+
paste: '"pal": { "testCommand": "<your command, narrowed to these pages>" }',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const healable = d?.totals.healable ?? 0;
|
|
76
|
+
if (healable > 0 && !(s?.repairs && s.repairs.total > 0)) {
|
|
77
|
+
const lead = `${plural(healable, 'element')} healable — the app moved ${healable === 1 ? 'it' : 'them'} and the contract knows where — but no rewrite is proposed: `;
|
|
78
|
+
if (!s) {
|
|
79
|
+
out.push({ text: `${lead}pal rewrites only the locators a test suite writes, and this project declares none ("testPaths" in .ia-qa/config.json).` });
|
|
80
|
+
}
|
|
81
|
+
else if (!s.repairs) {
|
|
82
|
+
out.push({ text: `${lead}the repair plan could not be computed this tour. Ask the fix engine directly:`, command: FIX_DRY_RUN });
|
|
83
|
+
}
|
|
84
|
+
else if (s.repairs.leftAlone > 0) {
|
|
85
|
+
out.push({ text: `${lead}the ${plural(s.repairs.leftAlone, 'occurrence')} your tests write ${s.repairs.leftAlone === 1 ? 'was' : 'were'} deliberately left alone. The dry run gives the reason for each:`, command: FIX_DRY_RUN });
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
out.push({
|
|
89
|
+
text: `${lead}none reached your test files — their old selectors do not appear there, or two pages disagree about what one should become. The dry run says which:`,
|
|
90
|
+
command: FIX_DRY_RUN,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
22
96
|
function headline(r) {
|
|
23
97
|
if (r.refused)
|
|
24
98
|
return `⏸ Did not run — ${r.refused}`;
|
|
25
99
|
if (r.mode === 'first')
|
|
26
100
|
return '📌 Baseline established — nothing to compare yet. The next tour measures drift against it.';
|
|
27
101
|
if (r.mode === 'explore') {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
102
|
+
switch (exploreOutcome(r)) {
|
|
103
|
+
case 'explored':
|
|
104
|
+
return `🔍 ${plural(r.pages.exploredThisTour.length, 'page')} explored in depth and promoted to the baseline: ${r.pages.exploredThisTour.join(', ')}`;
|
|
105
|
+
case 'nothing-mapped':
|
|
106
|
+
return '⏸ Nothing was explored — no page is under contract. A tour has to map the app before there is anything to open.';
|
|
107
|
+
case 'nothing-openable':
|
|
108
|
+
return '🔍 Nothing to explore — no page under contract has a closed menu, tab or dialog.';
|
|
109
|
+
default:
|
|
110
|
+
return '🔍 Nothing left to explore — every page with closed controls is already explored in depth.';
|
|
111
|
+
}
|
|
32
112
|
}
|
|
33
113
|
if (!r.drift)
|
|
34
114
|
return '⏸ No page could be compared with the baseline this tour.';
|
|
@@ -53,6 +133,17 @@ function renderReport(r) {
|
|
|
53
133
|
const needing = p.explored + p.notExplored.length;
|
|
54
134
|
out.push(` ${p.underContract} of ${plural(p.configured, 'page')} under contract · ` +
|
|
55
135
|
`${p.explored} explored in depth of ${plural(needing, 'page')} with closed controls`);
|
|
136
|
+
const first = guidance(r);
|
|
137
|
+
if (first.length > 0) {
|
|
138
|
+
out.push('', '🧭 Read this first');
|
|
139
|
+
for (const g of first) {
|
|
140
|
+
out.push(` ${g.text}`);
|
|
141
|
+
if (g.command)
|
|
142
|
+
out.push(` ${g.command}`);
|
|
143
|
+
if (g.paste)
|
|
144
|
+
out.push(` ${g.paste}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
56
147
|
const broken = [];
|
|
57
148
|
const deadLinks = r.check?.deadLinks ?? [];
|
|
58
149
|
for (const d of deadLinks.slice(0, 10)) {
|
|
@@ -170,6 +261,10 @@ function renderReport(r) {
|
|
|
170
261
|
unseen.push(` partly explored (click budget reached): ${p.partlyExplored.join(', ')}`);
|
|
171
262
|
if (p.notInBaseline.length > 0)
|
|
172
263
|
unseen.push(` not in the baseline yet: ${p.notInBaseline.slice(0, 5).join(', ')}${p.notInBaseline.length > 5 ? ', …' : ''}`);
|
|
264
|
+
if (p.outOfScope.length > 0) {
|
|
265
|
+
unseen.push(` ${plural(p.outOfScope.length, 'contract')} in .ia-qa/mapping/ your config does not declare — not measured: ` +
|
|
266
|
+
`${p.outOfScope.slice(0, 5).join(', ')}${p.outOfScope.length > 5 ? ', …' : ''}`, ' ia-qa-pal tour --all-contracts judges them too');
|
|
267
|
+
}
|
|
173
268
|
for (const x of r.drift?.staleExcluded ?? [])
|
|
174
269
|
unseen.push(` not compared ${x} — same capture on both sides`);
|
|
175
270
|
if (r.drift?.depthMismatch)
|
|
@@ -187,11 +282,16 @@ function renderReport(r) {
|
|
|
187
282
|
unseen.push(' which pages your suite visits is not measured yet — ia-qa-pal tour --suite runs it once to find out');
|
|
188
283
|
}
|
|
189
284
|
else if (s.notVisited === null) {
|
|
190
|
-
unseen.push(` your suite ran (${day(s.run.at)}, exit ${s.run.exitCode}) but recorded no page —
|
|
285
|
+
unseen.push(` your suite ran (${day(s.run.at)}, exit ${s.run.exitCode}) but recorded no page — it does not arm the capture hook:`, ...(s.captureHints ?? [suite_1.CAPTURE_IMPORT]).map((line) => ` ${line}`));
|
|
191
286
|
}
|
|
192
287
|
else if (s.notVisited.length > 0) {
|
|
193
|
-
|
|
288
|
+
// A dedicated command is a subset of the suite, so "your suite never visits" would be
|
|
289
|
+
// false of it — and would retire real coverage from view on a run that never exercised it.
|
|
290
|
+
const who = s.run.dedicated ? `the command pal runs (${s.run.command})` : 'your suite';
|
|
291
|
+
unseen.push(` ${who} never visits ${s.notVisited.length} of ${p.configured} pages (run of ${day(s.run.at)}): ` +
|
|
194
292
|
`${s.notVisited.slice(0, 6).join(', ')}${s.notVisited.length > 6 ? ', …' : ''}`);
|
|
293
|
+
if (s.run.dedicated)
|
|
294
|
+
unseen.push(' that is a shorter command, not the whole suite — the rest of your tests may well visit them');
|
|
195
295
|
}
|
|
196
296
|
}
|
|
197
297
|
if (unseen.length > 0)
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":";;AA0CA,oCA4JC;AArMD,mCAAyC;AAEzC;;;;;GAKG;AAEH,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE5F,MAAM,MAAM,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,gCAAgC,CAAC,CAAC;AAEtG,SAAS,QAAQ,CAAC,OAAe;IAC/B,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,MAAM,CAAC;IAC1C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9C,SAAS,QAAQ,CAAC,CAAa;IAC7B,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,4FAA4F,CAAC;IAC5H,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC;YACV,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,oDAAoD,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAClH,CAAC,CAAC,4FAA4F,CAAC;IACnG,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,2DAA2D,CAAC;IACjF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,OAAO,UAAU,CAAC;IACtH,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,+EAA+E,MAAM,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,OAAO,GAAG,IAAI,MAAM,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,YAAY,CAAC,CAAa;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9F,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,aAAa;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,gEAAgE,CAAC,CAAC;IACjJ,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;IAClD,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,CAAC,aAAa,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB;QAC1E,GAAG,CAAC,CAAC,QAAQ,yBAAyB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,uBAAuB,CACvF,CAAC;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7K,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,qDAAqD,CAAC,CAAC;IAC1I,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3I,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;QAC5G,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,wEAAwE,CAAC,CAAC;QACzI,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,qFAAqF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAC7L,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,GAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1K,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,sDAAsD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxJ,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC;IAClC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CACT,cAAc,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CACpQ,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,sCAAsC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjJ,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,sCAAsC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvL,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,4DAA4D,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;YACrI,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACnH,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CACN,EAAE,EACF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,mEAAmE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,GAAG,EACxM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,kGAAkG,EAC9J,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACxH,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,KAAK,EAAE,IAAI,EAAE;oBAAE,MAAM;gBACzB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,wDAAwD,CAAC,CAAC;QAC3I,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,OAAO,iCAAiC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,MAAM,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,wCAAwC;YAChF,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,eAAe,wBAAwB,CAAC,CAAC,cAAc,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5I,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CACT,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wEAAwE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9L,oHAAoH,CACrH,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,MAAM,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACzG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,wCAAwC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAClJ,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,wEAAwE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrJ,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1H,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/J,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,oDAAoD,CAAC,CAAC;IACjJ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAChI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;QACxH,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CACT,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,iEAAiE,EAC5H,SAAS,sBAAc,EAAE,CAC1B,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACT,8BAA8B,CAAC,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,CAAC,UAAU,kBAAkB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;gBACtG,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;IAE9D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":";;AAwBA,wCAKC;AA+BD,4BA6CC;AA2BD,oCAiLC;AApTD,mCAAyC;AACzC,iCAA2C;AAE3C;;;;;GAKG;AAEH,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE5F,MAAM,MAAM,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,gCAAgC,CAAC,CAAC;AAItG;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,CAAa;IAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAC3D,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACzD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACnF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,MAAM,CAAC;IAC1C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9C,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAEjH,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAU1E;;;;;;;GAOG;AACH,SAAgB,QAAQ,CAAC,CAAa;IACpC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,GAAG,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAElB,MAAM,YAAY,GAAG,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC;IAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EACF,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,sEAAsE,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACrJ,yKAAyK;YAC3K,OAAO,EAAE,0CAA0C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EACF,iCAAiC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,qCAAqC,IAAI,CAAC,OAAO,CAAC,iCAAiC;gBAClJ,6HAA6H;YAC/H,KAAK,EAAE,qEAAqE;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,6BAA6B,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,8DAA8D,CAAC;QACrK,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,yHAAyH,EAAE,CAAC,CAAC;QACvJ,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,+EAA+E,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACnI,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,kEAAkE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACrO,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,IAAI,qJAAqJ;gBAClK,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,CAAa;IAC7B,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,4FAA4F,CAAC;IAC5H,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,QAAQ,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,KAAK,UAAU;gBACb,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,oDAAoD,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxJ,KAAK,gBAAgB;gBACnB,OAAO,kHAAkH,CAAC;YAC5H,KAAK,kBAAkB;gBACrB,OAAO,kFAAkF,CAAC;YAC5F;gBACE,OAAO,4FAA4F,CAAC;QACxG,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,2DAA2D,CAAC;IACjF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,OAAO,UAAU,CAAC;IACtH,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,+EAA+E,MAAM,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,OAAO,GAAG,IAAI,MAAM,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,YAAY,CAAC,CAAa;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9F,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,aAAa;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,gEAAgE,CAAC,CAAC;IACjJ,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;IAClD,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,CAAC,aAAa,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB;QAC1E,GAAG,CAAC,CAAC,QAAQ,yBAAyB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,uBAAuB,CACvF,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7K,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,qDAAqD,CAAC,CAAC;IAC1I,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3I,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC;QAC5G,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,wEAAwE,CAAC,CAAC;QACzI,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,qFAAqF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAC7L,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,GAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1K,IAAI,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,sDAAsD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxJ,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC;IAClC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CACT,cAAc,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CACpQ,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,sCAAsC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjJ,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,sCAAsC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvL,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,4DAA4D,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;YACrI,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACnH,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CACN,EAAE,EACF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,mEAAmE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,GAAG,EACxM,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,kGAAkG,EAC9J,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACxH,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,KAAK,EAAE,IAAI,EAAE;oBAAE,MAAM;gBACzB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,wDAAwD,CAAC,CAAC;QAC3I,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,OAAO,iCAAiC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,MAAM,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,wCAAwC;YAChF,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,eAAe,wBAAwB,CAAC,CAAC,cAAc,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5I,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CACT,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wEAAwE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9L,oHAAoH,CACrH,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,MAAM,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACzG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,wCAAwC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAClJ,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,wEAAwE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrJ,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1H,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/J,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CACT,MAAM,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,mEAAmE;YAC9G,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EACjF,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,oDAAoD,CAAC,CAAC;IACjJ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAChI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;QACxH,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CACT,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,4DAA4D,EACvH,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,sBAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,CACvE,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,sFAAsF;YACtF,2FAA2F;YAC3F,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;YACvF,MAAM,CAAC,IAAI,CACT,MAAM,GAAG,iBAAiB,CAAC,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,CAAC,UAAU,kBAAkB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;gBAClG,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF,CAAC;YACF,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;QACxI,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;IAE9D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC/B,CAAC"}
|
package/dist/run.d.ts
CHANGED
|
@@ -17,7 +17,10 @@ export interface RunRecord {
|
|
|
17
17
|
options: {
|
|
18
18
|
more: boolean;
|
|
19
19
|
suite: boolean;
|
|
20
|
+
strict?: boolean;
|
|
21
|
+
allContracts?: boolean;
|
|
20
22
|
batch?: number;
|
|
23
|
+
session?: string;
|
|
21
24
|
};
|
|
22
25
|
progress?: TourEvent;
|
|
23
26
|
exitCode?: number;
|
|
@@ -61,6 +64,7 @@ export declare function startBackground(dir: string, opts: {
|
|
|
61
64
|
more?: boolean;
|
|
62
65
|
suite?: boolean;
|
|
63
66
|
strict?: boolean;
|
|
67
|
+
allContracts?: boolean;
|
|
64
68
|
batch?: number;
|
|
65
69
|
session?: string;
|
|
66
70
|
}, entry?: string): BackgroundStart;
|
package/dist/run.js
CHANGED
|
@@ -100,7 +100,7 @@ function withLaterFields(report) {
|
|
|
100
100
|
return {
|
|
101
101
|
...report,
|
|
102
102
|
pages: { ...report.pages, unreadable: report.pages.unreadable ?? [] },
|
|
103
|
-
drift: report.drift ? { ...report.drift, olderCapture: report.drift.olderCapture ?? [], suitePages: report.drift.suitePages ?? [], maskSuggestions: report.drift.maskSuggestions ?? [] } : report.drift,
|
|
103
|
+
drift: report.drift ? { ...report.drift, olderCapture: report.drift.olderCapture ?? [], incomparable: report.drift.incomparable ?? [], suitePages: report.drift.suitePages ?? [], maskSuggestions: report.drift.maskSuggestions ?? [] } : report.drift,
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
function readRun(dir) {
|
|
@@ -151,7 +151,7 @@ async function trackedTour(opts) {
|
|
|
151
151
|
status: 'running',
|
|
152
152
|
startedAt: running?.startedAt ?? now(),
|
|
153
153
|
updatedAt: now(),
|
|
154
|
-
options:
|
|
154
|
+
options: recordedOptions(opts),
|
|
155
155
|
};
|
|
156
156
|
if (fs.existsSync(path.join(dir, '.ia-qa', 'config.json')))
|
|
157
157
|
write(dir, record);
|
|
@@ -200,6 +200,8 @@ function startBackground(dir, opts, entry = path.join(__dirname, 'cli', 'index.j
|
|
|
200
200
|
args.push('--suite');
|
|
201
201
|
if (opts.strict)
|
|
202
202
|
args.push('--strict');
|
|
203
|
+
if (opts.allContracts)
|
|
204
|
+
args.push('--all-contracts');
|
|
203
205
|
if (opts.batch)
|
|
204
206
|
args.push('--batch', String(opts.batch));
|
|
205
207
|
if (opts.session)
|
|
@@ -215,8 +217,25 @@ function startBackground(dir, opts, entry = path.join(__dirname, 'cli', 'index.j
|
|
|
215
217
|
status: 'running',
|
|
216
218
|
startedAt: new Date().toISOString(),
|
|
217
219
|
updatedAt: new Date().toISOString(),
|
|
218
|
-
options:
|
|
220
|
+
options: recordedOptions(opts),
|
|
219
221
|
});
|
|
220
222
|
return { started: true, pid: child.pid, log: (0, exports.logFile)(root) };
|
|
221
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* What the record says a tour was asked to do.
|
|
226
|
+
*
|
|
227
|
+
* `strict` decides whether drift behind interaction fails the tour, so a record that omits it
|
|
228
|
+
* cannot explain its own exit code — someone reading `status` sees a verdict and no reason.
|
|
229
|
+
* The session is recorded as a **path**, never its contents: the file holds live cookies.
|
|
230
|
+
*/
|
|
231
|
+
function recordedOptions(opts) {
|
|
232
|
+
return {
|
|
233
|
+
more: !!opts.more,
|
|
234
|
+
suite: !!opts.suite,
|
|
235
|
+
...(opts.strict ? { strict: true } : {}),
|
|
236
|
+
...(opts.allContracts ? { allContracts: true } : {}),
|
|
237
|
+
...(opts.batch ? { batch: opts.batch } : {}),
|
|
238
|
+
...(opts.session ? { session: opts.session } : {}),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
222
241
|
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,0BAOC;AA+CD,0BAgBC;AAGD,8BAGC;AAWD,kCAsCC;AAeD,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.runSetup = runSetup;
|
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
41
41
|
const path = __importStar(require("path"));
|
|
42
42
|
const self_healing_1 = require("@ia-qa/self-healing");
|
|
43
|
+
const suite_1 = require("./suite");
|
|
43
44
|
exports.LOGIN_COMMAND = 'npx -p @ia-qa/self-healing ia-qa-heal login';
|
|
44
45
|
const CRAWL_CAP = 50;
|
|
45
46
|
const LOGIN_CHOICES = { '1': 'none', '2': 'browser', '3': 'session' };
|
|
@@ -86,7 +87,22 @@ function hasSpecs(dir, depth = 0) {
|
|
|
86
87
|
/** Folders that look like an end-to-end suite. Proposed to a person, never assumed. */
|
|
87
88
|
function detectTests(dir) {
|
|
88
89
|
const paths = TEST_DIRS.filter((d) => hasSpecs(path.join(dir, d)));
|
|
89
|
-
|
|
90
|
+
if (paths.length === 0)
|
|
91
|
+
return { paths };
|
|
92
|
+
// `detectTestCommand` reads the project's npm scripts first — the right answer whatever the
|
|
93
|
+
// runner — and falls back to Playwright's own command. That fallback is Playwright-shaped, so
|
|
94
|
+
// a Cypress project with no e2e script was offered a command it cannot run. Here the fallback
|
|
95
|
+
// follows the runner actually on disk; several runners means no guess at all, and the setup
|
|
96
|
+
// asks instead of choosing for the person.
|
|
97
|
+
const found = (0, suite_1.detectFrameworks)(dir);
|
|
98
|
+
const detected = (0, self_healing_1.detectTestCommand)(dir);
|
|
99
|
+
// Two runners in one repository: only the project's own script can be trusted to mean
|
|
100
|
+
// "run the end-to-end suite". A runner's default command covers its half and silently leaves
|
|
101
|
+
// the other suite unmeasured, so nothing is offered and the setup asks.
|
|
102
|
+
if (found.length > 1)
|
|
103
|
+
return { paths, command: detected?.startsWith('npm ') ? detected : undefined };
|
|
104
|
+
const fallback = found.length === 1 ? { cypress: 'npx cypress run', selenium: undefined, playwright: 'npx playwright test' }[found[0]] : undefined;
|
|
105
|
+
return { paths, command: detected ?? fallback };
|
|
90
106
|
}
|
|
91
107
|
async function runSetup(opts = {}) {
|
|
92
108
|
const dir = path.resolve(opts.dir ?? process.cwd());
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/suite.d.ts
CHANGED
|
@@ -6,6 +6,29 @@ import type { IaQaConfig } from '@ia-qa/self-healing';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const APPLY_COMMAND = "npx -p @ia-qa/self-healing ia-qa-heal fix";
|
|
8
8
|
export declare const CAPTURE_IMPORT = "import { test, expect } from '@ia-qa/self-healing/capture'";
|
|
9
|
+
export type Framework = 'playwright' | 'cypress' | 'selenium';
|
|
10
|
+
/**
|
|
11
|
+
* Which runner this project drives, read off the disk.
|
|
12
|
+
*
|
|
13
|
+
* Deliberately **not** `config.framework`: that field accepts one value (`playwright`), so
|
|
14
|
+
* every config on earth says playwright whatever the project runs. Asking the field would be
|
|
15
|
+
* building on a default nobody chose. Files and dependencies are evidence; a field nobody can
|
|
16
|
+
* set is not.
|
|
17
|
+
*
|
|
18
|
+
* Several answers are a legitimate result — a repository with a Playwright suite and a legacy
|
|
19
|
+
* Cypress one needs both hooks — so this returns a list and the caller names each. An empty
|
|
20
|
+
* list means "could not tell", which is said out loud rather than guessed into Playwright.
|
|
21
|
+
*/
|
|
22
|
+
export declare function detectFrameworks(dir: string): Framework[];
|
|
23
|
+
/**
|
|
24
|
+
* How *this* project arms the capture hook.
|
|
25
|
+
*
|
|
26
|
+
* The line used to be Playwright's, always — so a Cypress project whose `--suite` run recorded
|
|
27
|
+
* nothing was told to add an import that does not belong to its runner, and the one instruction
|
|
28
|
+
* it needed was nowhere. When nothing identifies the runner, all three are named: an answer that
|
|
29
|
+
* says "I could not tell" beats a confident wrong one.
|
|
30
|
+
*/
|
|
31
|
+
export declare function captureHints(dir: string): string[];
|
|
9
32
|
export interface SuiteInventory {
|
|
10
33
|
paths: string[];
|
|
11
34
|
missingPaths: string[];
|
|
@@ -45,7 +68,30 @@ export interface SuiteRun {
|
|
|
45
68
|
/** Pages the suite really visited, as the capture hook recorded them. Null: nothing was recorded. */
|
|
46
69
|
visited: string[] | null;
|
|
47
70
|
at: string;
|
|
71
|
+
/**
|
|
72
|
+
* The command was `pal.testCommand`, not the project's whole suite.
|
|
73
|
+
*
|
|
74
|
+
* It changes what the coverage line may claim: "pages your suite never visits" is false of a
|
|
75
|
+
* subset, and would retire real coverage from view on the strength of a run that never
|
|
76
|
+
* exercised it. Everything downstream words it as *this command*.
|
|
77
|
+
*/
|
|
78
|
+
dedicated?: boolean;
|
|
79
|
+
/** The visited pages were written to `mapping/_exercised.json`, the record a coverage map reads. */
|
|
80
|
+
recorded?: boolean;
|
|
48
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* The command `--suite` runs: `pal.testCommand` when the project declares one, else the suite's.
|
|
84
|
+
*
|
|
85
|
+
* A full suite is the honest default and, on a real project, 18 minutes — too slow to run on
|
|
86
|
+
* every tour, so people stop passing `--suite` and the coverage question goes unanswered. A
|
|
87
|
+
* project can therefore declare a shorter one (a smoke tag, one spec folder) under `pal` in
|
|
88
|
+
* `.ia-qa/config.json`. It is read from the **file**, never from a flag or an MCP argument:
|
|
89
|
+
* "the command always comes from your config" is a guarantee this package makes everywhere.
|
|
90
|
+
*/
|
|
91
|
+
export declare function suiteCommand(dir: string, config: IaQaConfig): {
|
|
92
|
+
command?: string;
|
|
93
|
+
dedicated: boolean;
|
|
94
|
+
};
|
|
49
95
|
/** `ingest`: what the suite writes as locators. Written to `usage.json`, where map, diff and fix read it. */
|
|
50
96
|
export declare function inventory(dir: string, config: IaQaConfig): SuiteInventory | null;
|
|
51
97
|
/** `fix --dry-run` over baseline/ → mapping/: the rewrites it would apply. Nothing is written. */
|
package/dist/suite.js
CHANGED
|
@@ -34,6 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.CAPTURE_IMPORT = exports.APPLY_COMMAND = void 0;
|
|
37
|
+
exports.detectFrameworks = detectFrameworks;
|
|
38
|
+
exports.captureHints = captureHints;
|
|
39
|
+
exports.suiteCommand = suiteCommand;
|
|
37
40
|
exports.inventory = inventory;
|
|
38
41
|
exports.repairPlan = repairPlan;
|
|
39
42
|
exports.auditSuite = auditSuite;
|
|
@@ -49,6 +52,84 @@ const self_healing_1 = require("@ia-qa/self-healing");
|
|
|
49
52
|
*/
|
|
50
53
|
exports.APPLY_COMMAND = 'npx -p @ia-qa/self-healing ia-qa-heal fix';
|
|
51
54
|
exports.CAPTURE_IMPORT = "import { test, expect } from '@ia-qa/self-healing/capture'";
|
|
55
|
+
/**
|
|
56
|
+
* Which runner this project drives, read off the disk.
|
|
57
|
+
*
|
|
58
|
+
* Deliberately **not** `config.framework`: that field accepts one value (`playwright`), so
|
|
59
|
+
* every config on earth says playwright whatever the project runs. Asking the field would be
|
|
60
|
+
* building on a default nobody chose. Files and dependencies are evidence; a field nobody can
|
|
61
|
+
* set is not.
|
|
62
|
+
*
|
|
63
|
+
* Several answers are a legitimate result — a repository with a Playwright suite and a legacy
|
|
64
|
+
* Cypress one needs both hooks — so this returns a list and the caller names each. An empty
|
|
65
|
+
* list means "could not tell", which is said out loud rather than guessed into Playwright.
|
|
66
|
+
*/
|
|
67
|
+
function detectFrameworks(dir) {
|
|
68
|
+
const has = (...names) => names.some((n) => fs.existsSync(path.join(dir, n)));
|
|
69
|
+
const deps = (() => {
|
|
70
|
+
try {
|
|
71
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
|
|
72
|
+
return { ...pkg.dependencies, ...pkg.devDependencies };
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
78
|
+
const found = [];
|
|
79
|
+
if (has('cypress.config.js', 'cypress.config.ts', 'cypress.config.mjs', 'cypress.json', 'cypress') || deps.cypress)
|
|
80
|
+
found.push('cypress');
|
|
81
|
+
if (has('wdio.conf.js', 'wdio.conf.ts') || deps['selenium-webdriver'] || deps['@wdio/cli'])
|
|
82
|
+
found.push('selenium');
|
|
83
|
+
if (has('playwright.config.js', 'playwright.config.ts', 'playwright.config.mjs') ||
|
|
84
|
+
deps['@playwright/test'] ||
|
|
85
|
+
deps.playwright) {
|
|
86
|
+
found.push('playwright');
|
|
87
|
+
}
|
|
88
|
+
return found;
|
|
89
|
+
}
|
|
90
|
+
const HOOKS = {
|
|
91
|
+
playwright: [`in your specs: ${exports.CAPTURE_IMPORT}`],
|
|
92
|
+
cypress: ["in cypress/support/e2e.js: import '@ia-qa/self-healing/cypress'"],
|
|
93
|
+
selenium: [
|
|
94
|
+
"in your test, after each navigation: const { capture } = require('@ia-qa/self-healing/selenium')",
|
|
95
|
+
'then: await capture(driver)',
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* How *this* project arms the capture hook.
|
|
100
|
+
*
|
|
101
|
+
* The line used to be Playwright's, always — so a Cypress project whose `--suite` run recorded
|
|
102
|
+
* nothing was told to add an import that does not belong to its runner, and the one instruction
|
|
103
|
+
* it needed was nowhere. When nothing identifies the runner, all three are named: an answer that
|
|
104
|
+
* says "I could not tell" beats a confident wrong one.
|
|
105
|
+
*/
|
|
106
|
+
function captureHints(dir) {
|
|
107
|
+
const found = detectFrameworks(dir);
|
|
108
|
+
if (found.length === 0)
|
|
109
|
+
return Object.keys(HOOKS).flatMap((f) => HOOKS[f].map((line) => `${f}: ${line}`));
|
|
110
|
+
return found.flatMap((f) => HOOKS[f]);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The command `--suite` runs: `pal.testCommand` when the project declares one, else the suite's.
|
|
114
|
+
*
|
|
115
|
+
* A full suite is the honest default and, on a real project, 18 minutes — too slow to run on
|
|
116
|
+
* every tour, so people stop passing `--suite` and the coverage question goes unanswered. A
|
|
117
|
+
* project can therefore declare a shorter one (a smoke tag, one spec folder) under `pal` in
|
|
118
|
+
* `.ia-qa/config.json`. It is read from the **file**, never from a flag or an MCP argument:
|
|
119
|
+
* "the command always comes from your config" is a guarantee this package makes everywhere.
|
|
120
|
+
*/
|
|
121
|
+
function suiteCommand(dir, config) {
|
|
122
|
+
try {
|
|
123
|
+
const raw = JSON.parse(fs.readFileSync(path.join(dir, '.ia-qa', 'config.json'), 'utf8'));
|
|
124
|
+
const own = raw.pal?.testCommand;
|
|
125
|
+
if (typeof own === 'string' && own.trim())
|
|
126
|
+
return { command: own.trim(), dedicated: true };
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
/* the config is heal's to validate; a missing or broken `pal` block simply means no override */
|
|
130
|
+
}
|
|
131
|
+
return { command: config.testCommand, dedicated: false };
|
|
132
|
+
}
|
|
52
133
|
const rel = (dir, file) => path.relative(dir, file).replace(/\\/g, '/') || file;
|
|
53
134
|
function withExitCode(fn) {
|
|
54
135
|
const before = process.exitCode;
|
|
@@ -115,7 +196,7 @@ function auditSuite(dir, config) {
|
|
|
115
196
|
* The command is the one in config.json — never a string from a caller.
|
|
116
197
|
*/
|
|
117
198
|
async function runSuite(dir, config, onOutput) {
|
|
118
|
-
const command = config
|
|
199
|
+
const { command, dedicated } = suiteCommand(dir, config);
|
|
119
200
|
if (!command)
|
|
120
201
|
return null;
|
|
121
202
|
const isolated = path.join(dir, '.ia-qa', 'pal', 'suite-run');
|
|
@@ -140,6 +221,18 @@ async function runSuite(dir, config, onOutput) {
|
|
|
140
221
|
finally {
|
|
141
222
|
fs.rmSync(isolated, { recursive: true, force: true });
|
|
142
223
|
}
|
|
143
|
-
|
|
224
|
+
// Kept where `ia-qa-heal run` keeps it, so `ia-qa-discover coverage` can name the pages the
|
|
225
|
+
// suite does not test. Two runs are never recorded: a capture that recorded nothing (no hook
|
|
226
|
+
// fired is not "visits nothing"), and a dedicated command — the coverage map words every page
|
|
227
|
+
// it misses as untested, which is false of a subset.
|
|
228
|
+
const recorded = !dedicated && !!visited && visited.length > 0 && (0, self_healing_1.saveExercised)({ visited, suiteExitCode: exitCode, testCommand: command }, (0, self_healing_1.mappingDir)()) !== null;
|
|
229
|
+
return {
|
|
230
|
+
command,
|
|
231
|
+
exitCode,
|
|
232
|
+
visited: visited ? [...visited].sort() : null,
|
|
233
|
+
at: new Date().toISOString(),
|
|
234
|
+
...(dedicated ? { dedicated: true } : {}),
|
|
235
|
+
...(recorded ? { recorded: true } : {}),
|
|
236
|
+
};
|
|
144
237
|
}
|
|
145
238
|
//# sourceMappingURL=suite.js.map
|