@sdd-method/sdd-cli 0.37.0 → 0.38.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/dist/lib/catalogue/archetype/maps/android.yaml +66 -0
- package/dist/lib/catalogue/archetype/maps/swiftui.yaml +58 -0
- package/dist/lib/catalogue/archetype/maps/uikit.yaml +48 -0
- package/dist/lib/catalogue/archetype/maps/web-generic.yaml +86 -0
- package/dist/lib/catalogue/archetype/openui-archetype-vocabulary.yaml +46 -0
- package/dist/lib/catalogue/archetype/resolver.d.ts +27 -0
- package/dist/lib/catalogue/archetype/resolver.d.ts.map +1 -0
- package/dist/lib/catalogue/archetype/resolver.js +87 -0
- package/dist/lib/catalogue/archetype/resolver.js.map +1 -0
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +5 -1
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/screen-tree.d.ts +27 -0
- package/dist/lib/catalogue/builders/screen-tree.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/screen-tree.js +126 -0
- package/dist/lib/catalogue/builders/screen-tree.js.map +1 -0
- package/dist/lib/catalogue/builders/screens.d.ts +6 -0
- package/dist/lib/catalogue/builders/screens.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/screens.js +51 -2
- package/dist/lib/catalogue/builders/screens.js.map +1 -1
- package/dist/lib/catalogue/findings.d.ts +12 -2
- package/dist/lib/catalogue/findings.d.ts.map +1 -1
- package/dist/lib/catalogue/findings.js +10 -4
- package/dist/lib/catalogue/findings.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Screen composition-tree analysis for openui-lang blocks (per ADR 0168).
|
|
2
|
+
//
|
|
3
|
+
// The screens builder (screens.ts) lowers a ```openui-lang block into catalogue
|
|
4
|
+
// rows by flat token-scanning. ADR 0168 adds a *fidelity floor*: the block must
|
|
5
|
+
// be a faithful tree, not a flat / empty / mis-rooted "widget bag". That needs
|
|
6
|
+
// the structural shape the flat scan throws away — so this module parses the
|
|
7
|
+
// block into a tree and computes the metrics the depth findings reason about.
|
|
8
|
+
//
|
|
9
|
+
// Pure functions, no I/O. The metrics reason about TREE SHAPE only — never about
|
|
10
|
+
// any component vocabulary (adopter-agnostic by construction, ADR 0168 §4.5).
|
|
11
|
+
//
|
|
12
|
+
// Grammar recap (ADR 0166 / openui-lang-grammar-reference.md): one
|
|
13
|
+
// `identifier = Expression` statement per line; the first statement is `root`;
|
|
14
|
+
// composition is by identifier reference inside list literals. A component is a
|
|
15
|
+
// Capitalised call head (`Name(`); local references are lowercase ids that are
|
|
16
|
+
// themselves defined as statements.
|
|
17
|
+
/** First Capitalised call head in an expression (the component invoked). */
|
|
18
|
+
const CALL_HEAD_RE = /\b([A-Z][A-Za-z0-9]*)\s*\(/;
|
|
19
|
+
/** All Capitalised call heads (for componentCount). */
|
|
20
|
+
const CALL_HEAD_RE_G = /\b([A-Z][A-Za-z0-9]*)\s*\(/g;
|
|
21
|
+
/** `identifier = Expression`, one per line. */
|
|
22
|
+
const STATEMENT_RE = /^\s*([A-Za-z_][\w-]*)\s*=\s*(.+?)\s*$/;
|
|
23
|
+
/** Quoted string literals (single or double) — stripped before ref detection. */
|
|
24
|
+
const STRING_RE = /"[^"]*"|'[^']*'/g;
|
|
25
|
+
/** Any identifier token. */
|
|
26
|
+
const IDENT_RE = /\b([A-Za-z_][\w-]*)\b/g;
|
|
27
|
+
/**
|
|
28
|
+
* Strip openui-lang inline comments: from the first *unquoted* `#` to
|
|
29
|
+
* end-of-line, per line (ADR 0168 §4.4, defect g). A `Capitalised(` token inside
|
|
30
|
+
* a comment must not be lexed as a component. `#` inside a string literal is
|
|
31
|
+
* preserved.
|
|
32
|
+
*/
|
|
33
|
+
export function stripBlockComments(block) {
|
|
34
|
+
return block
|
|
35
|
+
.split(/\r?\n/)
|
|
36
|
+
.map(stripLineComment)
|
|
37
|
+
.join("\n");
|
|
38
|
+
}
|
|
39
|
+
function stripLineComment(line) {
|
|
40
|
+
let quote = null;
|
|
41
|
+
for (let i = 0; i < line.length; i++) {
|
|
42
|
+
const c = line[i];
|
|
43
|
+
if (quote) {
|
|
44
|
+
if (c === quote)
|
|
45
|
+
quote = null;
|
|
46
|
+
}
|
|
47
|
+
else if (c === '"' || c === "'") {
|
|
48
|
+
quote = c;
|
|
49
|
+
}
|
|
50
|
+
else if (c === "#") {
|
|
51
|
+
return line.slice(0, i);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return line;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Parse a (comment-stripped) openui-lang block into a composition tree and
|
|
58
|
+
* compute its structural metrics. Cycle-safe.
|
|
59
|
+
*/
|
|
60
|
+
export function analyzeComposition(cleanBlock) {
|
|
61
|
+
const statements = new Map();
|
|
62
|
+
const order = [];
|
|
63
|
+
for (const raw of cleanBlock.split(/\r?\n/)) {
|
|
64
|
+
const m = STATEMENT_RE.exec(raw);
|
|
65
|
+
if (!m)
|
|
66
|
+
continue;
|
|
67
|
+
const id = m[1];
|
|
68
|
+
const rhs = m[2];
|
|
69
|
+
if (!statements.has(id))
|
|
70
|
+
order.push(id);
|
|
71
|
+
// Last assignment wins (re-declaration is unusual; keep it deterministic).
|
|
72
|
+
statements.set(id, { id, rhs, head: CALL_HEAD_RE.exec(rhs)?.[1] ?? "", childIds: [] });
|
|
73
|
+
}
|
|
74
|
+
const definedIds = new Set(statements.keys());
|
|
75
|
+
const containers = new Set();
|
|
76
|
+
// Resolve child references: a defined id (other than self) appearing in the
|
|
77
|
+
// expression, after stripping string literals so quoted text can't match.
|
|
78
|
+
for (const st of statements.values()) {
|
|
79
|
+
const noStrings = st.rhs.replace(STRING_RE, "");
|
|
80
|
+
const refs = new Set();
|
|
81
|
+
for (const tok of noStrings.matchAll(IDENT_RE)) {
|
|
82
|
+
const name = tok[1];
|
|
83
|
+
if (name !== st.id && definedIds.has(name))
|
|
84
|
+
refs.add(name);
|
|
85
|
+
}
|
|
86
|
+
st.childIds = [...refs];
|
|
87
|
+
if (st.head && st.childIds.length > 0)
|
|
88
|
+
containers.add(st.head);
|
|
89
|
+
}
|
|
90
|
+
// componentCount: distinct Capitalised call heads across the block (strings
|
|
91
|
+
// stripped so a `"Foo("` inside a literal is not counted).
|
|
92
|
+
const heads = new Set();
|
|
93
|
+
for (const tok of cleanBlock.replace(STRING_RE, "").matchAll(CALL_HEAD_RE_G)) {
|
|
94
|
+
heads.add(tok[1]);
|
|
95
|
+
}
|
|
96
|
+
const componentCount = heads.size;
|
|
97
|
+
const rootId = order[0];
|
|
98
|
+
if (rootId === undefined) {
|
|
99
|
+
return { maxDepth: 0, maxBreadth: 0, rootChildCount: 0, componentCount, rootComponent: "", containers };
|
|
100
|
+
}
|
|
101
|
+
const rootStmt = statements.get(rootId);
|
|
102
|
+
let maxDepth = 0;
|
|
103
|
+
let maxBreadth = 0;
|
|
104
|
+
const walk = (id, depth, seen) => {
|
|
105
|
+
const st = statements.get(id);
|
|
106
|
+
maxDepth = Math.max(maxDepth, depth);
|
|
107
|
+
if (st === undefined)
|
|
108
|
+
return; // reference to an undefined id → leaf
|
|
109
|
+
maxBreadth = Math.max(maxBreadth, st.childIds.length);
|
|
110
|
+
if (seen.has(id))
|
|
111
|
+
return; // cycle guard
|
|
112
|
+
const next = new Set(seen).add(id);
|
|
113
|
+
for (const child of st.childIds)
|
|
114
|
+
walk(child, depth + 1, next);
|
|
115
|
+
};
|
|
116
|
+
walk(rootId, 0, new Set());
|
|
117
|
+
return {
|
|
118
|
+
maxDepth,
|
|
119
|
+
maxBreadth,
|
|
120
|
+
rootChildCount: rootStmt.childIds.length,
|
|
121
|
+
componentCount,
|
|
122
|
+
rootComponent: rootStmt.head,
|
|
123
|
+
containers,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=screen-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen-tree.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/screen-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,12 @@ export interface ScreensBuildInputs {
|
|
|
12
12
|
/** Persona id resolution for `persona_access:` -> persona_screen. */
|
|
13
13
|
readonly personaIdBySlug: ReadonlyMap<string, string>;
|
|
14
14
|
readonly personaIdByName: ReadonlyMap<string, string>;
|
|
15
|
+
/**
|
|
16
|
+
* Flat-composition threshold N (ADR 0168 §4.2): a composition is "flat" when
|
|
17
|
+
* `maxDepth <= 1` and `rootChildCount >= N`. Adopter-tunable with a method
|
|
18
|
+
* default; defaults to 6 when unset.
|
|
19
|
+
*/
|
|
20
|
+
readonly flatThreshold?: number;
|
|
15
21
|
}
|
|
16
22
|
export interface ScreensBuildResult {
|
|
17
23
|
readonly screens: CatalogueRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/screens.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/screens.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIrD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAOD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;CACvC;AAOD,wBAAsB,YAAY,CAChC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA2H7B"}
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
import { readdir, readFile } from "node:fs/promises";
|
|
36
36
|
import { basename, join } from "node:path";
|
|
37
37
|
import { parse as parseYaml } from "yaml";
|
|
38
|
+
import { analyzeComposition, stripBlockComments } from "./screen-tree.js";
|
|
39
|
+
import { isContainerArchetype } from "../archetype/resolver.js";
|
|
40
|
+
/** Method default for the flat-composition threshold (ADR 0168 §4.2). */
|
|
41
|
+
const DEFAULT_FLAT_THRESHOLD = 6;
|
|
42
|
+
/** The only maturity value that asserts a faithful, complete composition (ADR 0168 §4.3). */
|
|
43
|
+
const COMPLETENESS_STATUS = "working";
|
|
38
44
|
const SCREENS_DIR_REL = "screens";
|
|
39
45
|
// Recognised standard maturity vocabulary (ADR 0165); other values pass through.
|
|
40
46
|
const STANDARD_MATURITY = new Set(["working", "provisional", "unknown", "absent"]);
|
|
@@ -45,6 +51,7 @@ export async function buildScreens(inputs) {
|
|
|
45
51
|
const screenFeature = new Map();
|
|
46
52
|
const personaScreen = new Map();
|
|
47
53
|
const screenAction = new Map();
|
|
54
|
+
const flatThreshold = inputs.flatThreshold ?? DEFAULT_FLAT_THRESHOLD;
|
|
48
55
|
const dir = join(inputs.sddPath, SCREENS_DIR_REL);
|
|
49
56
|
let entries;
|
|
50
57
|
try {
|
|
@@ -86,9 +93,12 @@ export async function buildScreens(inputs) {
|
|
|
86
93
|
inputs.findings.add("coverage", `screens: ${filename} has no \`\`\`openui-lang block — screen emitted, no components`);
|
|
87
94
|
}
|
|
88
95
|
else {
|
|
96
|
+
// Strip inline `#` comments before any scan so a `Capitalised(` token in a
|
|
97
|
+
// comment can't emit a phantom component (ADR 0168 §4.4, defect g).
|
|
98
|
+
const clean = stripBlockComments(block);
|
|
89
99
|
// Component invocations: Capitalised call heads (e.g. Stack(, StatCard().
|
|
90
100
|
// Local id references (lowercase, no parens) and list literals are skipped.
|
|
91
|
-
for (const comp of new Set(matchAll(
|
|
101
|
+
for (const comp of new Set(matchAll(clean, /\b([A-Z][A-Za-z0-9]*)\s*\(/g))) {
|
|
92
102
|
const cid = `${inputs.productId}-${screenSlug(comp)}`;
|
|
93
103
|
if (!uiById.has(cid)) {
|
|
94
104
|
uiById.set(cid, {
|
|
@@ -102,7 +112,7 @@ export async function buildScreens(inputs) {
|
|
|
102
112
|
}
|
|
103
113
|
}
|
|
104
114
|
// Action declarations: action="..." (single or double quoted).
|
|
105
|
-
for (const action of new Set(matchAll(
|
|
115
|
+
for (const action of new Set(matchAll(clean, /\baction\s*=\s*["']([^"']+)["']/g))) {
|
|
106
116
|
const aKey = `${screenId}__${screenSlug(action)}`;
|
|
107
117
|
if (!screenAction.has(aKey)) {
|
|
108
118
|
// event_id left empty: external-capable, resolved against the event
|
|
@@ -110,6 +120,12 @@ export async function buildScreens(inputs) {
|
|
|
110
120
|
screenAction.set(aKey, { id: aKey, screen_id: screenId, action, event_id: "", source_sdd_id: "" });
|
|
111
121
|
}
|
|
112
122
|
}
|
|
123
|
+
// Composition-depth validation (ADR 0168): structural fidelity floor +
|
|
124
|
+
// status gate + the archetype-aware root check (ADR 0169). The vocabulary-
|
|
125
|
+
// free checks reason about tree shape + status only; root-is-leaf consults
|
|
126
|
+
// the archetype map when the screen declares a `platform:`.
|
|
127
|
+
const platform = typeof fm.platform === "string" ? fm.platform : undefined;
|
|
128
|
+
emitDepthFindings(inputs.findings, screenId, status, analyzeComposition(clean), flatThreshold, platform);
|
|
113
129
|
}
|
|
114
130
|
// realises: -> screen_feature
|
|
115
131
|
for (const fref of toList(fm.realises)) {
|
|
@@ -143,6 +159,39 @@ export async function buildScreens(inputs) {
|
|
|
143
159
|
screenAction: [...screenAction.values()],
|
|
144
160
|
};
|
|
145
161
|
}
|
|
162
|
+
// Composition-depth findings (ADR 0168 §4.2/§4.3). All vocabulary-free — they
|
|
163
|
+
// reason about tree shape + status only. `screen-empty-composition` and
|
|
164
|
+
// `screen-flat-composition` are advisory warnings; `screen-status-exceeds-depth`
|
|
165
|
+
// is an error (fails the build by default, like an FK failure) because a screen
|
|
166
|
+
// must not claim `working` maturity over an empty or flat composition.
|
|
167
|
+
function emitDepthFindings(findings, screenId, status, m, flatThreshold, platform) {
|
|
168
|
+
const empty = m.componentCount <= 1;
|
|
169
|
+
const flat = !empty && m.maxDepth <= 1 && m.rootChildCount >= flatThreshold;
|
|
170
|
+
if (empty) {
|
|
171
|
+
findings.add("coverage", `screen ${screenId}: composition is empty — root has no children (screen-empty-composition)`);
|
|
172
|
+
}
|
|
173
|
+
else if (flat) {
|
|
174
|
+
findings.add("coverage", `screen ${screenId}: composition is flat — root has ${m.rootChildCount} children at depth ${m.maxDepth} (screen-flat-composition)`);
|
|
175
|
+
}
|
|
176
|
+
// Status gate (keystone): `working` is the only maturity that asserts a
|
|
177
|
+
// faithful, complete composition (ADR 0168 §4.3). provisional/unknown/absent
|
|
178
|
+
// make no completeness claim and are not gated.
|
|
179
|
+
if (status === COMPLETENESS_STATUS && (empty || flat)) {
|
|
180
|
+
findings.add("convention", `screen ${screenId}: status "${COMPLETENESS_STATUS}" exceeds composition depth — block is ${empty ? "empty" : "flat"} (screen-status-exceeds-depth)`, "error");
|
|
181
|
+
}
|
|
182
|
+
// Mis-rooted (ADR 0168 §4.2 screen-root-is-leaf, archetype-aware per ADR 0169):
|
|
183
|
+
// root is a leaf/control rather than a screen container. isContainer combines
|
|
184
|
+
// the appears-with-children heuristic (containers) with the archetype map.
|
|
185
|
+
// Only fires when the screen declares a known `platform:` — without a map the
|
|
186
|
+
// heuristic alone can't distinguish an empty container root (Stack([])) from a
|
|
187
|
+
// genuine leaf root (Button([])), so the check no-ops (ADR 0168 §4.5).
|
|
188
|
+
if (m.rootComponent !== "" && m.rootChildCount === 0) {
|
|
189
|
+
const byMap = isContainerArchetype(m.rootComponent, platform);
|
|
190
|
+
if (byMap === false && !m.containers.has(m.rootComponent)) {
|
|
191
|
+
findings.add("convention", `screen ${screenId}: root component "${m.rootComponent}" is a leaf, not a container (screen-root-is-leaf)`, "error");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
146
195
|
function emptyResult() {
|
|
147
196
|
return { screens: [], uiComponents: [], screenComponent: [], screenFeature: [], personaScreen: [], screenAction: [] };
|
|
148
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/screens.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/screens.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,18 +10,28 @@
|
|
|
10
10
|
* categories may be passed as freeform strings if they emerge.
|
|
11
11
|
*/
|
|
12
12
|
export type FindingCategory = "divergence" | "coverage" | "orphan" | "convention" | "inferred" | "external";
|
|
13
|
+
/**
|
|
14
|
+
* Severity governs the build exit code. `warn` (the default) is advisory only;
|
|
15
|
+
* `error` fails the build by default, the same as an internal FK failure
|
|
16
|
+
* (per ADR 0168 — e.g. the screen-spec status gate). Most findings are `warn`;
|
|
17
|
+
* the `--strict` flag escalates every finding to a failure regardless.
|
|
18
|
+
*/
|
|
19
|
+
export type FindingSeverity = "warn" | "error";
|
|
13
20
|
export interface Finding {
|
|
14
21
|
readonly category: FindingCategory | string;
|
|
15
22
|
readonly summary: string;
|
|
23
|
+
readonly severity: FindingSeverity;
|
|
16
24
|
}
|
|
17
25
|
export declare class FindingsLog {
|
|
18
26
|
private readonly findings;
|
|
19
|
-
add(category: FindingCategory | string, summary: string): void;
|
|
27
|
+
add(category: FindingCategory | string, summary: string, severity?: FindingSeverity): void;
|
|
20
28
|
/** Returns a copy of recorded findings, in insertion order. */
|
|
21
29
|
all(): readonly Finding[];
|
|
22
30
|
/** Count findings, optionally filtered to a single category. */
|
|
23
31
|
count(category?: FindingCategory | string): number;
|
|
24
|
-
/**
|
|
32
|
+
/** Count error-severity findings (these fail the build by default). */
|
|
33
|
+
errorCount(): number;
|
|
34
|
+
/** Render every finding as a stdout line. Error-severity findings are marked. */
|
|
25
35
|
render(): string;
|
|
26
36
|
}
|
|
27
37
|
//# sourceMappingURL=findings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,UAAU,CAAC;AAEf;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,GAAG,CACD,QAAQ,EAAE,eAAe,GAAG,MAAM,EAClC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,eAAwB,GACjC,IAAI;IAIP,+DAA+D;IAC/D,GAAG,IAAI,SAAS,OAAO,EAAE;IAIzB,gEAAgE;IAChE,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM;IAKlD,uEAAuE;IACvE,UAAU,IAAI,MAAM;IAIpB,iFAAiF;IACjF,MAAM,IAAI,MAAM;CASjB"}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export class FindingsLog {
|
|
13
13
|
findings = [];
|
|
14
|
-
add(category, summary) {
|
|
15
|
-
this.findings.push({ category, summary });
|
|
14
|
+
add(category, summary, severity = "warn") {
|
|
15
|
+
this.findings.push({ category, summary, severity });
|
|
16
16
|
}
|
|
17
17
|
/** Returns a copy of recorded findings, in insertion order. */
|
|
18
18
|
all() {
|
|
@@ -24,10 +24,16 @@ export class FindingsLog {
|
|
|
24
24
|
return this.findings.length;
|
|
25
25
|
return this.findings.filter((f) => f.category === category).length;
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
27
|
+
/** Count error-severity findings (these fail the build by default). */
|
|
28
|
+
errorCount() {
|
|
29
|
+
return this.findings.filter((f) => f.severity === "error").length;
|
|
30
|
+
}
|
|
31
|
+
/** Render every finding as a stdout line. Error-severity findings are marked. */
|
|
28
32
|
render() {
|
|
29
33
|
return this.findings
|
|
30
|
-
.map((f) =>
|
|
34
|
+
.map((f) => f.severity === "error"
|
|
35
|
+
? `[finding] ${f.category} [error]: ${f.summary}`
|
|
36
|
+
: `[finding] ${f.category}: ${f.summary}`)
|
|
31
37
|
.join("\n");
|
|
32
38
|
}
|
|
33
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../../../src/lib/catalogue/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../../../src/lib/catalogue/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwBH,MAAM,OAAO,WAAW;IACL,QAAQ,GAAc,EAAE,CAAC;IAE1C,GAAG,CACD,QAAkC,EAClC,OAAe,EACf,WAA4B,MAAM;QAElC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,+DAA+D;IAC/D,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,QAAmC;QACvC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACrE,CAAC;IAED,uEAAuE;IACvE,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IAED,iFAAiF;IACjF,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,QAAQ,KAAK,OAAO;YACpB,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,aAAa,CAAC,CAAC,OAAO,EAAE;YACjD,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAC5C;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACF"}
|