@sun-asterisk/sungen 3.2.16-beta.1 → 3.2.16-beta.10
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/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +67 -20
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/exporters/feature-parser.d.ts +16 -1
- package/dist/exporters/feature-parser.d.ts.map +1 -1
- package/dist/exporters/feature-parser.js +21 -2
- package/dist/exporters/feature-parser.js.map +1 -1
- package/dist/exporters/matrix/build.d.ts +27 -2
- package/dist/exporters/matrix/build.d.ts.map +1 -1
- package/dist/exporters/matrix/build.js +277 -47
- package/dist/exporters/matrix/build.js.map +1 -1
- package/dist/exporters/matrix/export.d.ts +7 -4
- package/dist/exporters/matrix/export.d.ts.map +1 -1
- package/dist/exporters/matrix/export.js +22 -6
- package/dist/exporters/matrix/export.js.map +1 -1
- package/dist/exporters/matrix/gates.d.ts.map +1 -1
- package/dist/exporters/matrix/gates.js +112 -3
- package/dist/exporters/matrix/gates.js.map +1 -1
- package/dist/exporters/matrix/map-loader.d.ts.map +1 -1
- package/dist/exporters/matrix/map-loader.js +20 -0
- package/dist/exporters/matrix/map-loader.js.map +1 -1
- package/dist/exporters/matrix/render-csv.d.ts +3 -2
- package/dist/exporters/matrix/render-csv.d.ts.map +1 -1
- package/dist/exporters/matrix/render-csv.js +53 -30
- package/dist/exporters/matrix/render-csv.js.map +1 -1
- package/dist/exporters/matrix/render-xlsx.d.ts +32 -8
- package/dist/exporters/matrix/render-xlsx.d.ts.map +1 -1
- package/dist/exporters/matrix/render-xlsx.js +215 -83
- package/dist/exporters/matrix/render-xlsx.js.map +1 -1
- package/dist/exporters/matrix/types.d.ts +53 -7
- package/dist/exporters/matrix/types.d.ts.map +1 -1
- package/dist/exporters/matrix/types.js +2 -2
- package/dist/exporters/matrix/types.js.map +1 -1
- package/dist/exporters/matrix/wording.d.ts +61 -0
- package/dist/exporters/matrix/wording.d.ts.map +1 -0
- package/dist/exporters/matrix/wording.js +221 -0
- package/dist/exporters/matrix/wording.js.map +1 -0
- package/dist/exporters/scenario-merger.d.ts.map +1 -1
- package/dist/exporters/scenario-merger.js +2 -1
- package/dist/exporters/scenario-merger.js.map +1 -1
- package/dist/exporters/spec-parser.d.ts.map +1 -1
- package/dist/exporters/spec-parser.js +2 -1
- package/dist/exporters/spec-parser.js.map +1 -1
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +11 -2
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/blindspot.d.ts.map +1 -1
- package/dist/harness/blindspot.js +2 -1
- package/dist/harness/blindspot.js.map +1 -1
- package/dist/harness/capability-plan.d.ts.map +1 -1
- package/dist/harness/capability-plan.js +3 -2
- package/dist/harness/capability-plan.js.map +1 -1
- package/dist/harness/feedback.d.ts.map +1 -1
- package/dist/harness/feedback.js +3 -2
- package/dist/harness/feedback.js.map +1 -1
- package/dist/harness/flow-check.d.ts.map +1 -1
- package/dist/harness/flow-check.js +2 -1
- package/dist/harness/flow-check.js.map +1 -1
- package/dist/harness/flow-plan.d.ts.map +1 -1
- package/dist/harness/flow-plan.js +3 -2
- package/dist/harness/flow-plan.js.map +1 -1
- package/dist/harness/intent.d.ts.map +1 -1
- package/dist/harness/intent.js +2 -1
- package/dist/harness/intent.js.map +1 -1
- package/dist/harness/journey.d.ts.map +1 -1
- package/dist/harness/journey.js +3 -2
- package/dist/harness/journey.js.map +1 -1
- package/dist/harness/ledger.d.ts.map +1 -1
- package/dist/harness/ledger.js +3 -2
- package/dist/harness/ledger.js.map +1 -1
- package/dist/harness/manifest.d.ts.map +1 -1
- package/dist/harness/manifest.js +4 -3
- package/dist/harness/manifest.js.map +1 -1
- package/dist/harness/parse.d.ts.map +1 -1
- package/dist/harness/parse.js +16 -3
- package/dist/harness/parse.js.map +1 -1
- package/dist/harness/quality-gates.d.ts.map +1 -1
- package/dist/harness/quality-gates.js +2 -1
- package/dist/harness/quality-gates.js.map +1 -1
- package/dist/harness/read-text.d.ts +22 -0
- package/dist/harness/read-text.d.ts.map +1 -0
- package/dist/harness/read-text.js +64 -0
- package/dist/harness/read-text.js.map +1 -0
- package/dist/harness/script-check.d.ts.map +1 -1
- package/dist/harness/script-check.js +3 -2
- package/dist/harness/script-check.js.map +1 -1
- package/dist/harness/sensors.d.ts.map +1 -1
- package/dist/harness/sensors.js +2 -10
- package/dist/harness/sensors.js.map +1 -1
- package/dist/harness/spec-coverage.d.ts +5 -0
- package/dist/harness/spec-coverage.d.ts.map +1 -1
- package/dist/harness/spec-coverage.js +17 -7
- package/dist/harness/spec-coverage.js.map +1 -1
- package/dist/harness/trace.d.ts.map +1 -1
- package/dist/harness/trace.js +4 -3
- package/dist/harness/trace.js.map +1 -1
- package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
- package/dist/harness/viewpoint-ledger.js +2 -1
- package/dist/harness/viewpoint-ledger.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +9 -0
- package/dist/orchestrator/templates/ai-src/commands/delivery.md +103 -18
- package/dist/orchestrator/templates/ai-src/skills/sungen-delivery/SKILL.md +77 -11
- package/dist/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +1 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +22 -0
- package/package.json +4 -4
- package/src/cli/commands/delivery.ts +68 -22
- package/src/exporters/feature-parser.ts +21 -2
- package/src/exporters/matrix/build.ts +281 -43
- package/src/exporters/matrix/export.ts +31 -6
- package/src/exporters/matrix/gates.ts +119 -3
- package/src/exporters/matrix/map-loader.ts +22 -1
- package/src/exporters/matrix/render-csv.ts +53 -30
- package/src/exporters/matrix/render-xlsx.ts +216 -85
- package/src/exporters/matrix/types.ts +58 -8
- package/src/exporters/matrix/wording.ts +221 -0
- package/src/exporters/scenario-merger.ts +2 -1
- package/src/exporters/spec-parser.ts +2 -1
- package/src/harness/audit.ts +11 -2
- package/src/harness/blindspot.ts +2 -1
- package/src/harness/capability-plan.ts +3 -2
- package/src/harness/feedback.ts +3 -2
- package/src/harness/flow-check.ts +2 -1
- package/src/harness/flow-plan.ts +3 -2
- package/src/harness/intent.ts +2 -1
- package/src/harness/journey.ts +3 -2
- package/src/harness/ledger.ts +3 -2
- package/src/harness/manifest.ts +4 -3
- package/src/harness/parse.ts +17 -3
- package/src/harness/quality-gates.ts +2 -1
- package/src/harness/read-text.ts +28 -0
- package/src/harness/script-check.ts +3 -2
- package/src/harness/sensors.ts +2 -1
- package/src/harness/spec-coverage.ts +22 -7
- package/src/harness/trace.ts +4 -3
- package/src/harness/viewpoint-ledger.ts +2 -1
- package/src/orchestrator/templates/ai-src/commands/create-test.md +9 -0
- package/src/orchestrator/templates/ai-src/commands/delivery.md +103 -18
- package/src/orchestrator/templates/ai-src/skills/sungen-delivery/SKILL.md +77 -11
- package/src/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +1 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +22 -0
|
@@ -7,13 +7,15 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.deriveVariants = deriveVariants;
|
|
10
|
+
exports.displayValue = displayValue;
|
|
11
|
+
exports.computeRequirements = computeRequirements;
|
|
12
|
+
exports.variantState = variantState;
|
|
10
13
|
exports.rollUp = rollUp;
|
|
11
14
|
exports.expandMapRef = expandMapRef;
|
|
12
15
|
exports.buildMatrix = buildMatrix;
|
|
13
|
-
const scenario_merger_1 = require("../scenario-merger");
|
|
14
16
|
const feature_parser_1 = require("../feature-parser");
|
|
15
17
|
const result_variants_1 = require("../result-variants");
|
|
16
|
-
const
|
|
18
|
+
const wording_1 = require("./wording");
|
|
17
19
|
const fingerprint_1 = require("./fingerprint");
|
|
18
20
|
const types_1 = require("./types");
|
|
19
21
|
const gates_1 = require("./gates");
|
|
@@ -57,13 +59,13 @@ function resolveDataPairs(vars, testData, row) {
|
|
|
57
59
|
for (const [k, v] of Object.entries(row)) {
|
|
58
60
|
if (k.startsWith('__') || k === 'case' || k === 'name' || k === 'label')
|
|
59
61
|
continue;
|
|
60
|
-
pairs.push(`${k}: ${String(v)}`);
|
|
62
|
+
pairs.push(`${k}: ${displayValue(String(v))}`);
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
for (const v of vars) {
|
|
64
66
|
const val = row && v in row ? undefined : testData?.[v]; // row columns already listed
|
|
65
67
|
if (val !== undefined)
|
|
66
|
-
pairs.push(`${v}: ${val}`);
|
|
68
|
+
pairs.push(`${v}: ${displayValue(val)}`);
|
|
67
69
|
}
|
|
68
70
|
return pairs;
|
|
69
71
|
}
|
|
@@ -73,7 +75,10 @@ function resolveDataPairs(vars, testData, row) {
|
|
|
73
75
|
* support tooling see the same universe the builder does.
|
|
74
76
|
*/
|
|
75
77
|
function deriveVariants(inputs) {
|
|
76
|
-
const { merged,
|
|
78
|
+
const { merged, results } = inputs;
|
|
79
|
+
// Test-data values may cross-reference other keys (email_padded: " {{valid_email}} ") —
|
|
80
|
+
// resolve one level so display cells never leak a template token (review B-04).
|
|
81
|
+
const testData = resolveCrossRefs(inputs.testData);
|
|
77
82
|
const variants = [];
|
|
78
83
|
for (const m of merged) {
|
|
79
84
|
const { vpId, category1 } = (0, feature_parser_1.splitVpAndName)(m.feature.name);
|
|
@@ -82,25 +87,40 @@ function deriveVariants(inputs) {
|
|
|
82
87
|
const tags = m.feature.tags;
|
|
83
88
|
const mode = (0, feature_parser_1.extractTestcaseType)(tags) === 'Manual' ? 'manual' : 'auto';
|
|
84
89
|
const authRole = (0, feature_parser_1.extractAuthRole)(tags);
|
|
85
|
-
|
|
86
|
-
//
|
|
90
|
+
// Category segment of the id, whatever the project's scheme:
|
|
91
|
+
// VP-SEC-001 → SEC · SEC-123 → SEC · MS-HP-001 → MS-HP · PER-345 → PER.
|
|
92
|
+
const vpCategory = vpId.replace(/^VP-/, '').replace(/-\d+(?:[a-zA-Z]|-[A-Z0-9]+)?$/, '');
|
|
93
|
+
const procedureProfile = deriveProcedureProfile(m);
|
|
94
|
+
// Manual scenarios: the `# Tester verifies:` block is classified into structured
|
|
95
|
+
// fields — Setup → precondition (review B-02), Action → trigger, Observable →
|
|
96
|
+
// expected, Oracle → verification method. Labels never remain inside prose.
|
|
87
97
|
const manual = mode === 'manual' && m.feature.comments?.length
|
|
88
|
-
? (0,
|
|
98
|
+
? (0, wording_1.classifyManualComments)(m.feature.comments)
|
|
89
99
|
: null;
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
// Raw (pre-wording) step texts — these feed shapes + Gate C, never the cells.
|
|
101
|
+
const rawTrigger = manual ? manual.actions : m.feature.rawWhenSteps;
|
|
102
|
+
const rawOracle = manual
|
|
103
|
+
? (manual.expected.length > 0 ? manual.expected : m.feature.rawThenSteps)
|
|
104
|
+
: m.resolvedExpected.filter((s) => s.bucket === 'then').map((s) => s.text);
|
|
105
|
+
// Values the scenario itself produces during the run — captured from the page
|
|
106
|
+
// or bound by a capability precondition. The compiler registers these as
|
|
107
|
+
// "captured" and skips YAML validation; the matrix does the same.
|
|
108
|
+
const runtimeVars = (0, wording_1.runtimeVarsOf)([...m.resolvedSteps.map((st) => st.text), ...m.resolvedExpected.map((st) => st.text)], tags);
|
|
95
109
|
const preconditionProfile = [
|
|
96
110
|
authRole ?? '-',
|
|
97
111
|
m.feature.extendsName ?? '-',
|
|
98
112
|
...m.feature.rawGivenSteps.map(normalizeShape),
|
|
113
|
+
...(manual?.preconditions ?? []).map(normalizeShape),
|
|
99
114
|
].join(' | ');
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
115
|
+
// Display precondition = auth state + Background Given (shared start state) +
|
|
116
|
+
// the scenario's own Given steps + manual Setup lines — deduplicated (a manual
|
|
117
|
+
// scenario often repeats the Background navigation as its own Given).
|
|
118
|
+
const precondition = Array.from(new Set([
|
|
119
|
+
...(authRole ? [authRole === 'no-auth' ? 'The user is signed out.' : `The user is signed in as ${authRole}.`] : []),
|
|
120
|
+
...inputs.feature.backgroundGivenSteps.map(wording_1.renderPrecondition),
|
|
121
|
+
...m.feature.rawGivenSteps.map(wording_1.renderPrecondition),
|
|
122
|
+
...(manual?.preconditions ?? []).map((t) => (0, wording_1.renderSetupInstruction)(t)),
|
|
123
|
+
]));
|
|
104
124
|
const base = {
|
|
105
125
|
vpId,
|
|
106
126
|
vpCategory,
|
|
@@ -109,11 +129,50 @@ function deriveVariants(inputs) {
|
|
|
109
129
|
manualReason: manualReason(tags),
|
|
110
130
|
layers: deriveLayers(tags),
|
|
111
131
|
traces: tags.filter((t) => t.startsWith('@spec:')).map((t) => t.slice('@spec:'.length)),
|
|
112
|
-
|
|
113
|
-
|
|
132
|
+
runtimeVars: [...runtimeVars],
|
|
133
|
+
triggerShape: rawTrigger.map(normalizeShape),
|
|
134
|
+
oracleShape: rawOracle.map(normalizeShape),
|
|
114
135
|
preconditionProfile,
|
|
115
136
|
precondition,
|
|
116
|
-
procedureProfile
|
|
137
|
+
procedureProfile,
|
|
138
|
+
verification: manual?.verification.map((t) => sentenceOf(t)) ?? [],
|
|
139
|
+
};
|
|
140
|
+
/** Render the display cells for one data context (vars resolved first). */
|
|
141
|
+
const renderCells = (vars) => {
|
|
142
|
+
const sub = (s) => substituteDisplayVars(s, vars, runtimeVars);
|
|
143
|
+
const preconditionOut = precondition.map(sub);
|
|
144
|
+
const verificationOut = base.verification.map(sub);
|
|
145
|
+
if (procedureProfile === 'sequence' && !manual) {
|
|
146
|
+
// Ordered flow (review B-03): keep the event order — actions stay numbered in
|
|
147
|
+
// the trigger, mid-flow assertions render inline as "Verify:", and only the
|
|
148
|
+
// FINAL Then block becomes the expected result.
|
|
149
|
+
const steps = m.feature.orderedSteps;
|
|
150
|
+
let lastActionIdx = -1;
|
|
151
|
+
steps.forEach((s, i) => { if (s.bucket !== 'then')
|
|
152
|
+
lastActionIdx = i; });
|
|
153
|
+
const trigger = [];
|
|
154
|
+
const oracle = [];
|
|
155
|
+
steps.forEach((s, i) => {
|
|
156
|
+
if (i > lastActionIdx)
|
|
157
|
+
oracle.push((0, wording_1.renderExpected)(sub(s.text))); // trailing Then block
|
|
158
|
+
else if (s.bucket === 'then')
|
|
159
|
+
trigger.push(`Verify: ${(0, wording_1.renderExpected)(sub(s.text))}`);
|
|
160
|
+
else if (s.bucket === 'when')
|
|
161
|
+
trigger.push((0, wording_1.renderAction)(sub(s.text)));
|
|
162
|
+
// leading given steps already live in the precondition
|
|
163
|
+
});
|
|
164
|
+
return { trigger, oracle, precondition: preconditionOut, verification: verificationOut };
|
|
165
|
+
}
|
|
166
|
+
const trigger = rawTrigger.map((s) => (0, wording_1.renderAction)(sub(s)));
|
|
167
|
+
const oracle = rawOracle.map((s) => (0, wording_1.renderExpected)(sub(s)));
|
|
168
|
+
return {
|
|
169
|
+
// A pure-render check (Given + Then only) is checked on page load — say so
|
|
170
|
+
// in words instead of a placeholder token (review §10.3).
|
|
171
|
+
trigger: trigger.length > 0 ? trigger : ['No action — the state is checked on page load.'],
|
|
172
|
+
oracle,
|
|
173
|
+
precondition: preconditionOut,
|
|
174
|
+
verification: verificationOut,
|
|
175
|
+
};
|
|
117
176
|
};
|
|
118
177
|
const rows = (0, result_variants_1.getCasesDatasetRows)(m, testData ?? undefined);
|
|
119
178
|
if (rows) {
|
|
@@ -122,6 +181,7 @@ function deriveVariants(inputs) {
|
|
|
122
181
|
const resultByLabel = new Map(resultVariants.map((rv) => [rv.nameSuffix.replace(/^ — /, ''), rv.result]));
|
|
123
182
|
rows.forEach((row, i) => {
|
|
124
183
|
const label = String(row.case ?? row.name ?? row.label ?? `row ${i + 1}`);
|
|
184
|
+
const cells = renderCells({ ...(testData ?? {}), ...rowAsStrings(row) });
|
|
125
185
|
variants.push({
|
|
126
186
|
...base,
|
|
127
187
|
ref: `${vpId}#${label}`,
|
|
@@ -129,22 +189,27 @@ function deriveVariants(inputs) {
|
|
|
129
189
|
title: `${category1} — ${label}`,
|
|
130
190
|
condition: label,
|
|
131
191
|
data: resolveDataPairs(m.feature.referencedVars, testData, row),
|
|
132
|
-
trigger:
|
|
133
|
-
oracle:
|
|
192
|
+
trigger: cells.trigger,
|
|
193
|
+
oracle: cells.oracle,
|
|
194
|
+
precondition: cells.precondition,
|
|
195
|
+
verification: cells.verification,
|
|
134
196
|
fingerprint: (0, fingerprint_1.scenarioFingerprint)(m.feature, row),
|
|
135
197
|
result: resultByLabel.get(label),
|
|
136
198
|
});
|
|
137
199
|
});
|
|
138
200
|
}
|
|
139
201
|
else {
|
|
202
|
+
const cells = renderCells(testData ?? {});
|
|
140
203
|
variants.push({
|
|
141
204
|
...base,
|
|
142
205
|
ref: vpId,
|
|
143
206
|
title: category1,
|
|
144
207
|
condition: category1,
|
|
145
208
|
data: resolveDataPairs(m.feature.referencedVars, testData),
|
|
146
|
-
trigger:
|
|
147
|
-
oracle:
|
|
209
|
+
trigger: cells.trigger,
|
|
210
|
+
oracle: cells.oracle,
|
|
211
|
+
precondition: cells.precondition,
|
|
212
|
+
verification: cells.verification,
|
|
148
213
|
fingerprint: (0, fingerprint_1.scenarioFingerprint)(m.feature),
|
|
149
214
|
result: (0, result_variants_1.resolveResultVariants)(m, results ?? null, testData ?? undefined)[0]?.result,
|
|
150
215
|
});
|
|
@@ -152,45 +217,171 @@ function deriveVariants(inputs) {
|
|
|
152
217
|
}
|
|
153
218
|
return variants;
|
|
154
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Display substitution for matrix cells. Unlike the legacy exporter's
|
|
222
|
+
* substituteTestDataVars (which keeps EMPTY values literal for the Steps
|
|
223
|
+
* column), an empty value is a legitimate test input here (an intentionally
|
|
224
|
+
* empty field) — it renders as `(empty)` so the tester sees the intent and no
|
|
225
|
+
* `{{token}}` survives into the deliverable (Gate D would reject it).
|
|
226
|
+
*/
|
|
227
|
+
function substituteDisplayVars(text, vars, runtimeVars = new Set()) {
|
|
228
|
+
// `remember … as {{v}}` DECLARES v — leave that token for renderAction, which
|
|
229
|
+
// turns it into a quoted name ("note it as …"), not a value to look up.
|
|
230
|
+
const isCapture = /\bremember\b/i.test(text);
|
|
231
|
+
return text.replace(/\{\{\s*([^}\s]+)\s*\}\}/g, (m, key, offset) => {
|
|
232
|
+
if (isCapture && /\bas\s+$/i.test(text.slice(0, offset)))
|
|
233
|
+
return m;
|
|
234
|
+
// A value the test produces at run time has no static form — name it so the
|
|
235
|
+
// tester knows to compare against what the earlier step captured.
|
|
236
|
+
if (runtimeVars.has(key) || runtimeVars.has(key.split(/[.[]/)[0]))
|
|
237
|
+
return `the captured ${key}`;
|
|
238
|
+
if (!(key in vars))
|
|
239
|
+
return m; // unknown stays literal → Gate D flags it
|
|
240
|
+
return displayValue(vars[key]);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Make invisible test data VISIBLE instead of losing it (review GAP-04):
|
|
245
|
+
* '' → (empty) · whitespace-only → (N spaces) · padded → quoted verbatim.
|
|
246
|
+
* The canonical value is never changed — only its presentation.
|
|
247
|
+
*/
|
|
248
|
+
function displayValue(v) {
|
|
249
|
+
if (v === '')
|
|
250
|
+
return '(empty)';
|
|
251
|
+
if (/^\s+$/.test(v))
|
|
252
|
+
return `(${v.length} space${v.length > 1 ? 's' : ''})`;
|
|
253
|
+
if (v !== v.trim())
|
|
254
|
+
return `"${v}"`;
|
|
255
|
+
return v;
|
|
256
|
+
}
|
|
257
|
+
function sentenceOf(text) {
|
|
258
|
+
const s = text.trim();
|
|
259
|
+
if (!s)
|
|
260
|
+
return s;
|
|
261
|
+
const cap = s.charAt(0).toUpperCase() + s.slice(1);
|
|
262
|
+
return /[.!?…]$/.test(cap) ? cap : `${cap}.`;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Requirement inventory ∪ traces → coverage table. Ids are scanned from the spec
|
|
266
|
+
* text (FR-/TR-/NFR-<n>); map overrides win over the derived covered/gap status.
|
|
267
|
+
*/
|
|
268
|
+
function computeRequirements(specText, map, items) {
|
|
269
|
+
const ids = [];
|
|
270
|
+
const seen = new Set();
|
|
271
|
+
const add = (id) => { if (!seen.has(id)) {
|
|
272
|
+
seen.add(id);
|
|
273
|
+
ids.push(id);
|
|
274
|
+
} };
|
|
275
|
+
// A spec declares its requirements in bold — `- **FR-001**: …`, `- **REQ-12**: …`.
|
|
276
|
+
// Reading the DECLARATION (rather than any `PREFIX-123` token in the prose) keeps
|
|
277
|
+
// a project's own scheme working without matching ISO numbers, dates, or the form
|
|
278
|
+
// number in a header.
|
|
279
|
+
for (const m of specText.matchAll(/\*\*([A-Z][A-Z0-9]{1,7}-\d+)\*\*/g))
|
|
280
|
+
add(m[1]);
|
|
281
|
+
// Specs that do not bold their ids still work for the conventional prefixes.
|
|
282
|
+
if (ids.length === 0) {
|
|
283
|
+
for (const m of specText.matchAll(/\b(?:FR|TR|NFR)-\d+\b/g))
|
|
284
|
+
add(m[0]);
|
|
285
|
+
}
|
|
286
|
+
// Overrides may reference ids the spec text doesn't list (e.g. a shared catalog).
|
|
287
|
+
for (const id of Object.keys(map.requirements ?? {})) {
|
|
288
|
+
if (!seen.has(id)) {
|
|
289
|
+
seen.add(id);
|
|
290
|
+
ids.push(id);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (ids.length === 0)
|
|
294
|
+
return [];
|
|
295
|
+
return ids.map((id) => {
|
|
296
|
+
const traced = items.filter((it) => it.variants.some((v) => v.traces.includes(id)));
|
|
297
|
+
const override = (map.requirements ?? {})[id];
|
|
298
|
+
return {
|
|
299
|
+
id,
|
|
300
|
+
status: override?.status ?? (traced.length > 0 ? 'covered' : 'gap'),
|
|
301
|
+
items: traced.map((it) => it.id),
|
|
302
|
+
variantCount: traced.reduce((a, it) => a + it.variants.filter((v) => v.traces.includes(id)).length, 0),
|
|
303
|
+
note: override?.note ?? '',
|
|
304
|
+
};
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/** Resolve one level of {{key}} cross-references inside test-data VALUES. */
|
|
308
|
+
function resolveCrossRefs(testData) {
|
|
309
|
+
if (!testData)
|
|
310
|
+
return null;
|
|
311
|
+
const out = {};
|
|
312
|
+
for (const [k, v] of Object.entries(testData)) {
|
|
313
|
+
out[k] = typeof v === 'string' && v.includes('{{') ? substituteDisplayVars(v, testData) : v;
|
|
314
|
+
}
|
|
315
|
+
return out;
|
|
316
|
+
}
|
|
155
317
|
function rowAsStrings(row) {
|
|
156
318
|
const out = {};
|
|
157
|
-
for (const [k, v] of Object.entries(row))
|
|
319
|
+
for (const [k, v] of Object.entries(row)) {
|
|
158
320
|
out[k] = String(v);
|
|
321
|
+
out[`row.${k}`] = String(v); // steps reference dataset columns as {{row.<col>}}
|
|
322
|
+
}
|
|
159
323
|
return out;
|
|
160
324
|
}
|
|
161
325
|
// ---------------------------------------------------------------------------
|
|
162
326
|
// Item assembly + roll-up
|
|
163
327
|
// ---------------------------------------------------------------------------
|
|
164
|
-
|
|
328
|
+
/**
|
|
329
|
+
* The exact word rendered in a variant's Result cell. This is the SINGLE
|
|
330
|
+
* vocabulary both the renderers and the parent's COUNTIF roll-up use — the
|
|
331
|
+
* legacy exporter's statusToTestResult disagreed on two statuses (`skipped`
|
|
332
|
+
* showed N/A but counted as not-run; `interrupted` showed Pending but counted
|
|
333
|
+
* as blocked), which silently skewed the derived parent result.
|
|
334
|
+
*/
|
|
335
|
+
function variantState(v) {
|
|
336
|
+
const r = v.result;
|
|
165
337
|
if (!r)
|
|
166
|
-
return '
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return '
|
|
171
|
-
|
|
172
|
-
return '
|
|
173
|
-
|
|
338
|
+
return 'Pending';
|
|
339
|
+
switch (r.status) {
|
|
340
|
+
case 'passed': return 'Passed';
|
|
341
|
+
case 'failed':
|
|
342
|
+
case 'timedOut': return 'Failed';
|
|
343
|
+
case 'interrupted': return 'Blocked';
|
|
344
|
+
case 'skipped': return 'N/A';
|
|
345
|
+
default: return 'Pending';
|
|
346
|
+
}
|
|
174
347
|
}
|
|
175
|
-
|
|
348
|
+
const STATE_TO_COUNT = {
|
|
349
|
+
Passed: 'passed', Failed: 'failed', Blocked: 'blocked', Pending: 'notRun', 'N/A': 'na',
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Derived parent result — precedence failed → blocked → all-N/A → not_run →
|
|
353
|
+
* partial → passed. `N/A` variants leave the denominator (an intentionally
|
|
354
|
+
* skipped case must not make the parent look incomplete).
|
|
355
|
+
*/
|
|
176
356
|
function rollUp(variants) {
|
|
177
|
-
const counts = { passed: 0, failed: 0, blocked: 0, notRun: 0 };
|
|
357
|
+
const counts = { passed: 0, failed: 0, blocked: 0, notRun: 0, na: 0 };
|
|
178
358
|
for (const v of variants)
|
|
179
|
-
counts[
|
|
180
|
-
const
|
|
359
|
+
counts[STATE_TO_COUNT[variantState(v)]]++;
|
|
360
|
+
const effective = variants.length - counts.na;
|
|
181
361
|
let result;
|
|
182
362
|
if (counts.failed > 0)
|
|
183
363
|
result = 'failed';
|
|
184
364
|
else if (counts.blocked > 0)
|
|
185
365
|
result = 'blocked';
|
|
186
|
-
else if (
|
|
366
|
+
else if (effective === 0)
|
|
367
|
+
result = 'na';
|
|
368
|
+
else if (counts.passed === 0)
|
|
187
369
|
result = 'not_run';
|
|
188
|
-
else if (counts.
|
|
189
|
-
result = 'partial';
|
|
190
|
-
else
|
|
370
|
+
else if (counts.passed === effective)
|
|
191
371
|
result = 'passed';
|
|
372
|
+
else
|
|
373
|
+
result = 'partial';
|
|
192
374
|
return { result, counts };
|
|
193
375
|
}
|
|
376
|
+
/** Longest shared leading run of steps — hoisted onto the parent row. */
|
|
377
|
+
function commonPrefix(lists) {
|
|
378
|
+
if (lists.length === 0)
|
|
379
|
+
return 0;
|
|
380
|
+
let n = 0;
|
|
381
|
+
while (lists.every((l) => l.length > n) && new Set(lists.map((l) => l[n])).size === 1)
|
|
382
|
+
n++;
|
|
383
|
+
return n;
|
|
384
|
+
}
|
|
194
385
|
/**
|
|
195
386
|
* Expand one map variant ref to concrete variant refs:
|
|
196
387
|
* a bare VP-id whose scenario has a dataset means ALL its rows.
|
|
@@ -217,7 +408,17 @@ function buildMatrix(inputs) {
|
|
|
217
408
|
const groupVariants = g.variants.flatMap((ref) => expandMapRef(ref, variantsByVp));
|
|
218
409
|
const { result, counts } = rollUp(groupVariants);
|
|
219
410
|
const first = groupVariants[0];
|
|
220
|
-
const
|
|
411
|
+
const modes = new Set(groupVariants.map((v) => v.mode));
|
|
412
|
+
const commonPre = (first?.precondition ?? []).filter((line) => groupVariants.every((v) => v.precondition.includes(line)));
|
|
413
|
+
// Steps every variant starts with belong on the parent once; each variant
|
|
414
|
+
// renders only its remaining steps (review: the shared prefix was repeated
|
|
415
|
+
// on every child while the parent cell sat empty).
|
|
416
|
+
const prefixLen = commonPrefix(groupVariants.map((v) => v.trigger));
|
|
417
|
+
// Item priority = highest variant priority (per-variant priorities stay visible).
|
|
418
|
+
const priorityRank = { High: 0, Normal: 1, Low: 2 };
|
|
419
|
+
const priority = groupVariants
|
|
420
|
+
.map((v) => v.priority)
|
|
421
|
+
.sort((a, b) => (priorityRank[a] ?? 1) - (priorityRank[b] ?? 1))[0] ?? 'Normal';
|
|
221
422
|
return {
|
|
222
423
|
id: g.id,
|
|
223
424
|
target: g.target,
|
|
@@ -226,12 +427,19 @@ function buildMatrix(inputs) {
|
|
|
226
427
|
category: g.category,
|
|
227
428
|
// A stale (drifted) group presents as proposed regardless of its stored state.
|
|
228
429
|
review: stale.has(g.id) ? 'proposed' : g.review,
|
|
229
|
-
priority
|
|
230
|
-
mode: first?.mode ?? 'auto',
|
|
430
|
+
priority,
|
|
431
|
+
mode: modes.size > 1 ? 'mixed' : (first?.mode ?? 'auto'),
|
|
231
432
|
layers: Array.from(new Set(groupVariants.flatMap((v) => v.layers))),
|
|
232
433
|
traces: Array.from(new Set(groupVariants.flatMap((v) => v.traces))),
|
|
233
|
-
|
|
234
|
-
|
|
434
|
+
dimensions: g.dimensions,
|
|
435
|
+
// Only the preconditions COMMON to every variant belong on the parent —
|
|
436
|
+
// copying the first variant's setup mis-states the start state of the
|
|
437
|
+
// others (review GAP-03). Variant-specific lines render as the sub-row's
|
|
438
|
+
// precondition delta.
|
|
439
|
+
precondition: commonPre,
|
|
440
|
+
preconditionDeltas: Object.fromEntries(groupVariants.map((v) => [v.ref, v.precondition.filter((line) => !commonPre.includes(line))])),
|
|
441
|
+
triggerDeltas: Object.fromEntries(groupVariants.map((v) => [v.ref, v.trigger.slice(prefixLen)])),
|
|
442
|
+
trigger: (first?.trigger ?? []).slice(0, prefixLen),
|
|
235
443
|
variants: groupVariants,
|
|
236
444
|
result,
|
|
237
445
|
resultCounts: counts,
|
|
@@ -243,6 +451,27 @@ function buildMatrix(inputs) {
|
|
|
243
451
|
as: d.as,
|
|
244
452
|
reason: d.reason ?? '',
|
|
245
453
|
}));
|
|
454
|
+
// Requirement coverage (review §6): the requirement-id inventory comes from
|
|
455
|
+
// requirements/spec.md; @spec: traces mark `covered`; the map's `requirements:`
|
|
456
|
+
// section carries the reviewed overrides (partially_covered / not_applicable / …).
|
|
457
|
+
const requirements = computeRequirements(inputs.specText ?? '', map, items);
|
|
458
|
+
const gaps = requirements.filter((r) => r.status === 'gap');
|
|
459
|
+
if (gaps.length > 0) {
|
|
460
|
+
findings.push({
|
|
461
|
+
gate: 'R', severity: 'warning',
|
|
462
|
+
message: `${gaps.length} requirement id(s) with no coverage or disposition: ${gaps.map((g) => g.id).join(', ')} — trace them, or record a status in the map \`requirements:\` section`,
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
// A `covered` claim with no traced variant is prose, not traceability: nothing
|
|
466
|
+
// detects it when the proving scenario is later changed or deleted. Either tag
|
|
467
|
+
// the scenario that proves it (`@spec:<id>`) or say where it IS covered.
|
|
468
|
+
const unbacked = requirements.filter((r) => r.status === 'covered' && r.items.length === 0);
|
|
469
|
+
if (unbacked.length > 0) {
|
|
470
|
+
findings.push({
|
|
471
|
+
gate: 'R', severity: 'warning',
|
|
472
|
+
message: `${unbacked.length} requirement id(s) declared \`covered\` with no variant tracing to them: ${unbacked.map((r) => r.id).join(', ')} — add \`@spec:<id>\` to the scenario that proves each, or use covered_elsewhere / partially_covered with a named reference`,
|
|
473
|
+
});
|
|
474
|
+
}
|
|
246
475
|
const variantCount = items.reduce((a, i) => a + i.variants.length, 0);
|
|
247
476
|
const approved = items.every((i) => i.review === 'approved')
|
|
248
477
|
&& !findings.some((f) => f.severity === 'error' || f.severity === 'review');
|
|
@@ -251,6 +480,7 @@ function buildMatrix(inputs) {
|
|
|
251
480
|
formNo: map.formNo ?? 'BM-2-901-13',
|
|
252
481
|
items,
|
|
253
482
|
dispositions,
|
|
483
|
+
requirements,
|
|
254
484
|
findings,
|
|
255
485
|
manifest: {
|
|
256
486
|
unit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/exporters/matrix/build.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/exporters/matrix/build.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiGH,wCAmJC;AAgCD,oCAKC;AAaD,kDAkCC;AAgCD,oCAWC;AAWD,wBAYC;AAcD,oCAMC;AAED,kCA8GC;AA1gBD,sDAK2B;AAC3B,wDAAgF;AAChF,uCAA4I;AAC5I,+CAAgG;AAChG,mCAWiB;AACjB,mCAAmC;AAEnC,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,mFAAmF;AACnF,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,iGAAiG;AACjG,SAAS,sBAAsB,CAAC,CAAiB;IAC/C,IAAI,IAAA,oCAAmB,EAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,MAAM,KAAK,MAAM;YAAE,QAAQ,GAAG,IAAI,CAAC;aAClC,IAAI,QAAQ;YAAE,OAAO,UAAU,CAAC,CAAC,iDAAiD;IACzF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,4EAA4E;AAC5E,SAAS,gBAAgB,CACvB,IAAc,EACd,QAAuC,EACvC,GAA6B;IAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO;gBAAE,SAAS;YAClF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;QACtF,IAAI,GAAG,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAcD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,MAAwE;IACrG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACnC,wFAAwF;IACxF,gFAAgF;IAChF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAA,+BAAc,EAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,SAAS,CAAC,kEAAkE;QACvF,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAA,oCAAmB,EAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAA,gCAAe,EAAC,IAAI,CAAC,CAAC;QACvC,6DAA6D;QAC7D,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAEnD,iFAAiF;QACjF,8EAA8E;QAC9E,4EAA4E;QAC5E,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM;YAC5D,CAAC,CAAC,IAAA,gCAAsB,EAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC;QAET,8EAA8E;QAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACpE,MAAM,SAAS,GAAG,MAAM;YACtB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;YACzE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE7E,8EAA8E;QAC9E,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAA,uBAAa,EAC/B,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EACrF,IAAI,CACL,CAAC;QAEF,MAAM,mBAAmB,GAAG;YAC1B,QAAQ,IAAI,GAAG;YACf,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG;YAC5B,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;YAC9C,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;SACrD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,8EAA8E;QAC9E,+EAA+E;QAC/E,sEAAsE;QACtE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;YACtC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,4BAA4B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnH,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,4BAAkB,CAAC;YAC9D,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,4BAAkB,CAAC;YAClD,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gCAAsB,EAAC,CAAC,CAAC,CAAC;SACvE,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,UAAU;YACV,QAAQ,EAAE,IAAA,gCAAe,EAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,IAAyB;YAC/B,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvF,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;YAC7B,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC;YAC5C,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YAC1C,mBAAmB;YACnB,YAAY;YACZ,gBAAgB;YAChB,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACnE,CAAC;QAEF,2EAA2E;QAC3E,MAAM,WAAW,GAAG,CAAC,IAA4B,EAA2F,EAAE;YAC5I,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,gBAAgB,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/C,8EAA8E;gBAC9E,4EAA4E;gBAC5E,gDAAgD;gBAChD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;gBACrC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;gBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;oBAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrB,IAAI,CAAC,GAAG,aAAa;wBAAE,MAAM,CAAC,IAAI,CAAC,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAW,sBAAsB;yBAC5F,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;wBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;yBAChF,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;wBAAE,OAAO,CAAC,IAAI,CAAC,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACtE,uDAAuD;gBACzD,CAAC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO;gBACL,2EAA2E;gBAC3E,0DAA0D;gBAC1D,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC;gBAC1F,MAAM;gBACN,YAAY,EAAE,eAAe;gBAC7B,YAAY,EAAE,eAAe;aAC9B,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAA,qCAAmB,EAAC,CAAC,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;QAC3D,IAAI,IAAI,EAAE,CAAC;YACT,qFAAqF;YACrF,MAAM,cAAc,GAAG,IAAA,uCAAqB,EAAC,CAAC,EAAE,OAAO,IAAI,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;YACxF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1G,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,IAAI;oBACP,GAAG,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE;oBACvB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,GAAG,SAAS,MAAM,KAAK,EAAE;oBAChC,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC;oBAC/D,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,WAAW,EAAE,IAAA,iCAAmB,EAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;oBAChD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,IAAI;gBACP,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,SAAS;gBACpB,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;gBAC1D,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,WAAW,EAAE,IAAA,iCAAmB,EAAC,CAAC,CAAC,OAAO,CAAC;gBAC3C,MAAM,EAAE,IAAA,uCAAqB,EAAC,CAAC,EAAE,OAAO,IAAI,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;aACpF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAC5B,IAAY,EACZ,IAA4B,EAC5B,cAA2B,IAAI,GAAG,EAAE;IAEpC,8EAA8E;IAC9E,wEAAwE;IACxE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,MAAc,EAAE,EAAE;QACjF,IAAI,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACnE,4EAA4E;QAC5E,kEAAkE;QAClE,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,gBAAgB,GAAG,EAAE,CAAC;QAChG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,0CAA0C;QACxE,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5E,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,GAAgB,EAChB,KAAqB;IAErB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,EAAU,EAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IACzF,mFAAmF;IACnF,kFAAkF;IAClF,kFAAkF;IAClF,sBAAsB;IACtB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,6EAA6E;IAC7E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,kFAAkF;IAClF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO;YACL,EAAE;YACF,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACtG,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,QAAuC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B;IAChD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,CAAkB;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC;QACjC,KAAK,aAAa,CAAC,CAAC,OAAO,SAAS,CAAC;QACrC,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,CAAC;QAC7B,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAA6D;IAC/E,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI;CACvF,CAAC;AAEF;;;;GAIG;AACH,SAAgB,MAAM,CAAC,QAA2B;IAChD,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC9C,IAAI,MAAkB,CAAC;IACvB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,QAAQ,CAAC;SACpC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;QAAE,MAAM,GAAG,SAAS,CAAC;SAC3C,IAAI,SAAS,KAAK,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC;SACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,GAAG,SAAS,CAAC;SAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,GAAG,QAAQ,CAAC;;QACnD,MAAM,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,yEAAyE;AACzE,SAAS,YAAY,CAAC,KAAiB;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,CAAC,EAAE,CAAC;IAC3F,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,YAA4C;IACpF,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,SAAgB,WAAW,CAAC,MAAmB;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,gBAAQ,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAa,CAAC,CAAC,CAAC;IAEnG,MAAM,KAAK,GAAmB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACnF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5D,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,0EAA0E;QAC1E,2EAA2E;QAC3E,mDAAmD;QACnD,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,kFAAkF;QAClF,MAAM,YAAY,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,aAAa;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;QAClF,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,+EAA+E;YAC/E,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC/C,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;YACxD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnE,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,wEAAwE;YACxE,sEAAsE;YACtE,yEAAyE;YACzE,sBAAsB;YACtB,YAAY,EAAE,SAAS;YACvB,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7D,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YACnD,QAAQ,EAAE,aAAa;YACvB,MAAM;YACN,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAwB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7F,IAAI;QACJ,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;QAC/C,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;KACvB,CAAC,CAAC,CAAC;IAEJ,4EAA4E;IAC5E,gFAAgF;IAChF,mFAAmF;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS;YAC9B,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,uDAAuD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wEAAwE;SACvL,CAAC,CAAC;IACL,CAAC;IACD,+EAA+E;IAC/E,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS;YAC9B,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,4EAA4E,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6HAA6H;SACzQ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;WACvD,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAE9E,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,aAAa;QACnC,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,QAAQ,EAAE;YACR,IAAI;YACJ,kBAAkB;YAClB,iBAAiB,EAAE,IAAA,iCAAmB,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1E,cAAc,EAAE,IAAA,mCAAqB,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC;YACnE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;YAC9C,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,YAAY;YACZ,UAAU,EAAE,EAAE,kBAAkB,EAAE,6BAAqB,EAAE;SAC1D;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -16,6 +16,8 @@ export interface MatrixTargetPaths {
|
|
|
16
16
|
featureFile: string;
|
|
17
17
|
testDataFile: string;
|
|
18
18
|
specFile: string;
|
|
19
|
+
/** requirements/spec.md — the requirement-id inventory for coverage (optional). */
|
|
20
|
+
specMdFile?: string;
|
|
19
21
|
resultsPath: string | null;
|
|
20
22
|
mapFile: string;
|
|
21
23
|
}
|
|
@@ -39,9 +41,10 @@ export declare function approveMatrix(paths: MatrixTargetPaths, groupIds?: strin
|
|
|
39
41
|
findings: MatrixFinding[];
|
|
40
42
|
approved: string[];
|
|
41
43
|
};
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
export type MatrixFormat = 'xlsx' | 'csv' | 'both';
|
|
45
|
+
/** Render + write the requested format(s). Caller has already enforced the gate policy. */
|
|
46
|
+
export declare function writeMatrixDeliverables(paths: MatrixTargetPaths, model: MatrixModel, format?: MatrixFormat): Promise<{
|
|
47
|
+
csvPath?: string;
|
|
48
|
+
xlsxPath?: string;
|
|
46
49
|
}>;
|
|
47
50
|
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/exporters/matrix/export.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/exporters/matrix/export.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,gBAAgB,CAuB1E;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,aAAa,EAAE,KAAG,OAAgD,CAAC;AAChG,eAAO,MAAM,SAAS,GAAI,GAAG,aAAa,EAAE,KAAG,OAAiD,CAAC;AAEjG;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAyC9H;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnD,2FAA2F;AAC3F,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,YAAqB,GAC5B,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUlD"}
|
|
@@ -55,9 +55,15 @@ const package_info_1 = require("../package-info");
|
|
|
55
55
|
const csv_exporter_1 = require("../csv-exporter");
|
|
56
56
|
const xlsx_exporter_1 = require("../xlsx-exporter");
|
|
57
57
|
const map_loader_1 = require("./map-loader");
|
|
58
|
+
const fingerprint_1 = require("./fingerprint");
|
|
58
59
|
const build_1 = require("./build");
|
|
59
60
|
const render_xlsx_1 = require("./render-xlsx");
|
|
60
61
|
const render_csv_1 = require("./render-csv");
|
|
62
|
+
function readSpecText(paths) {
|
|
63
|
+
return paths.specMdFile && fs.existsSync(paths.specMdFile)
|
|
64
|
+
? fs.readFileSync(paths.specMdFile, 'utf-8')
|
|
65
|
+
: '';
|
|
66
|
+
}
|
|
61
67
|
function loadMatrixModel(paths) {
|
|
62
68
|
const { map, errors } = (0, map_loader_1.loadDeliveryMap)(paths.mapFile);
|
|
63
69
|
if (!map) {
|
|
@@ -76,6 +82,7 @@ function loadMatrixModel(paths) {
|
|
|
76
82
|
results,
|
|
77
83
|
map,
|
|
78
84
|
transformerVersion: (0, package_info_1.getPackageVersion)(),
|
|
85
|
+
specText: readSpecText(paths),
|
|
79
86
|
});
|
|
80
87
|
return { model, map, mapErrors: [] };
|
|
81
88
|
}
|
|
@@ -99,6 +106,7 @@ function approveMatrix(paths, groupIds) {
|
|
|
99
106
|
const model = (0, build_1.buildMatrix)({
|
|
100
107
|
unit: paths.unit, feature, merged, testData, results: null, map,
|
|
101
108
|
transformerVersion: (0, package_info_1.getPackageVersion)(),
|
|
109
|
+
specText: readSpecText(paths),
|
|
102
110
|
});
|
|
103
111
|
const blocking = model.findings.filter((f) => f.severity === 'error');
|
|
104
112
|
if (blocking.length > 0)
|
|
@@ -123,14 +131,22 @@ function approveMatrix(paths, groupIds) {
|
|
|
123
131
|
g.review = 'approved';
|
|
124
132
|
approved.push(g.id);
|
|
125
133
|
}
|
|
134
|
+
// Freeze the reviewed map semantics as well (GAP-09) — computed AFTER the
|
|
135
|
+
// review flips so re-running approve on an unchanged map is idempotent.
|
|
136
|
+
map.fingerprints.__map__ = (0, fingerprint_1.mapContentFingerprint)(map.groups, map.dispositions);
|
|
126
137
|
(0, map_loader_1.writeDeliveryMap)(paths.mapFile, map);
|
|
127
138
|
return { findings: model.findings.filter((f) => f.severity !== 'error'), approved };
|
|
128
139
|
}
|
|
129
|
-
/** Render + write
|
|
130
|
-
async function writeMatrixDeliverables(paths, model) {
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
140
|
+
/** Render + write the requested format(s). Caller has already enforced the gate policy. */
|
|
141
|
+
async function writeMatrixDeliverables(paths, model, format = 'xlsx') {
|
|
142
|
+
const out = {};
|
|
143
|
+
if (format === 'csv' || format === 'both') {
|
|
144
|
+
out.csvPath = (0, csv_exporter_1.writeCsv)(paths.cwd, paths.unit, (0, render_csv_1.renderMatrixCsv)(model));
|
|
145
|
+
}
|
|
146
|
+
if (format === 'xlsx' || format === 'both') {
|
|
147
|
+
const wb = (0, render_xlsx_1.renderMatrixXlsx)(model, (0, package_info_1.getPackageVersion)());
|
|
148
|
+
out.xlsxPath = await (0, xlsx_exporter_1.writeXlsx)(paths.cwd, paths.unit, wb);
|
|
149
|
+
}
|
|
150
|
+
return out;
|
|
135
151
|
}
|
|
136
152
|
//# sourceMappingURL=export.js.map
|