@futdevpro/dynamo-eslint 1.20.51 → 1.20.55
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 +22 -0
- package/build/configs/ngx.d.ts +6 -0
- package/build/configs/ngx.d.ts.map +1 -1
- package/build/configs/ngx.js +20 -0
- package/build/configs/ngx.js.map +1 -1
- package/build/plugin/index.d.ts +1 -0
- package/build/plugin/index.d.ts.map +1 -1
- package/build/plugin/index.js +2 -0
- package/build/plugin/index.js.map +1 -1
- package/build/plugin/rules/angular/empty-state-guard.util.d.ts +58 -0
- package/build/plugin/rules/angular/empty-state-guard.util.d.ts.map +1 -0
- package/build/plugin/rules/angular/empty-state-guard.util.js +158 -0
- package/build/plugin/rules/angular/empty-state-guard.util.js.map +1 -0
- package/build/plugin/rules/angular/empty-state-requires-guard.d.ts +10 -0
- package/build/plugin/rules/angular/empty-state-requires-guard.d.ts.map +1 -0
- package/build/plugin/rules/angular/empty-state-requires-guard.js +61 -0
- package/build/plugin/rules/angular/empty-state-requires-guard.js.map +1 -0
- package/build/plugin/rules/angular/ui-building-blocks-baseline.interface.d.ts +5 -0
- package/build/plugin/rules/angular/ui-building-blocks-baseline.interface.d.ts.map +1 -1
- package/build/plugin/rules/angular/ui-building-blocks-element.interface.d.ts +5 -0
- package/build/plugin/rules/angular/ui-building-blocks-element.interface.d.ts.map +1 -1
- package/build/plugin/rules/angular/ui-building-blocks-rule-context.util.js +1 -1
- package/build/plugin/rules/angular/ui-building-blocks-rule-context.util.js.map +1 -1
- package/build/plugin/rules/angular/ui-building-blocks.util.d.ts +10 -1
- package/build/plugin/rules/angular/ui-building-blocks.util.d.ts.map +1 -1
- package/build/plugin/rules/angular/ui-building-blocks.util.js +44 -4
- package/build/plugin/rules/angular/ui-building-blocks.util.js.map +1 -1
- package/build/plugin/rules/prefer-interface-over-duplicate-types.d.ts.map +1 -1
- package/build/plugin/rules/prefer-interface-over-duplicate-types.js +31 -19
- package/build/plugin/rules/prefer-interface-over-duplicate-types.js.map +1 -1
- package/build/scripts/lint-strict.d.ts +62 -0
- package/build/scripts/lint-strict.d.ts.map +1 -0
- package/build/scripts/lint-strict.js +151 -0
- package/build/scripts/lint-strict.js.map +1 -0
- package/build/scripts/ui-building-blocks-baseline.js +17 -2
- package/build/scripts/ui-building-blocks-baseline.js.map +1 -1
- package/package.json +4 -3
|
@@ -32,6 +32,7 @@ class UiBuildingBlocks_Util {
|
|
|
32
32
|
static ruleIds = [
|
|
33
33
|
'@futdevpro/dynamo/scroll-container-min-h-0',
|
|
34
34
|
'@futdevpro/dynamo/module-load-failed-branch',
|
|
35
|
+
'@futdevpro/dynamo/empty-state-requires-guard',
|
|
35
36
|
];
|
|
36
37
|
/**
|
|
37
38
|
* A loading state in a template. Deliberately NOT a bare spinner / progress bar (status indicators, determinate
|
|
@@ -44,7 +45,14 @@ class UiBuildingBlocks_Util {
|
|
|
44
45
|
static failedPattern = new RegExp('@(?:if|else if)\\s*\\([^)]*(?:[eE]rror|[fF]ail)(?!s\\b)|'
|
|
45
46
|
+ '\\*ngIf\\s*=\\s*"[^"]*(?:[eE]rror|[fF]ail)(?!s\\b)|'
|
|
46
47
|
+ '<[a-z][\\w-]*(?:load-?failed|load-error|error-state)\\b|'
|
|
47
|
-
+ 'data-testid="[^"]*load[a-z-]*(?:error|failed)'
|
|
48
|
+
+ 'data-testid="[^"]*load[a-z-]*(?:error|failed)|'
|
|
49
|
+
// BFR-MASTERPROMPTER-075 ⓑ: the three-state idiom `@if (loading) {…} @else if (data) {…} @else { …-error }` —
|
|
50
|
+
// the closing `@else` branch (⛔ `@else if`) carrying an error / failed test-id, before the next control-flow block
|
|
51
|
+
+ '@else\\s*\\{[^@]*?data-testid="[^"]*-(?:error|failed)"');
|
|
52
|
+
/** BFR-MASTERPROMPTER-075 ⓐ: the `[dynamo-overlay]` directive attribute (runtime `position: absolute`). */
|
|
53
|
+
static outOfFlowAttribute = /(?:^|\s)dynamo-overlay(?=[\s=/]|$)/;
|
|
54
|
+
/** BFR-MASTERPROMPTER-075 ⓒ: a loading match whose condition is the bare `loading` flag (`@if (loading)`). */
|
|
55
|
+
static subFrameLoadingCondition = /\(\s*!?\s*loading\s*$/;
|
|
48
56
|
static voidTags = new Set([
|
|
49
57
|
'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'source', 'track', 'wbr',
|
|
50
58
|
]);
|
|
@@ -110,6 +118,7 @@ class UiBuildingBlocks_Util {
|
|
|
110
118
|
.test(attributes),
|
|
111
119
|
offset: template.offset + match.index,
|
|
112
120
|
parent: stack[stack.length - 1],
|
|
121
|
+
outOfFlow: UiBuildingBlocks_Util.outOfFlowAttribute.test(attributes),
|
|
113
122
|
};
|
|
114
123
|
result.push(element);
|
|
115
124
|
if (!attributes.trim().endsWith('/') && !UiBuildingBlocks_Util.voidTags.has(tag)) {
|
|
@@ -146,7 +155,7 @@ class UiBuildingBlocks_Util {
|
|
|
146
155
|
return;
|
|
147
156
|
}
|
|
148
157
|
const bases = UiBuildingBlocks_Util.bases(ancestor);
|
|
149
|
-
if (bases.includes('absolute') || bases.includes('fixed')) {
|
|
158
|
+
if (bases.includes('absolute') || bases.includes('fixed') || ancestor.outOfFlow) {
|
|
150
159
|
// out of the flex flow: its height comes from the containing block, not from this chain
|
|
151
160
|
return;
|
|
152
161
|
}
|
|
@@ -169,14 +178,36 @@ class UiBuildingBlocks_Util {
|
|
|
169
178
|
UiBuildingBlocks_Util.templates(text, filename).forEach((template) => {
|
|
170
179
|
const code = UiBuildingBlocks_Util.blankComments(template.text);
|
|
171
180
|
const regex = new RegExp(UiBuildingBlocks_Util.loadingPattern.source, 'g');
|
|
181
|
+
const subFrame = UiBuildingBlocks_Util.isSubFrameComponent(text, filename);
|
|
172
182
|
let match = regex.exec(code);
|
|
173
183
|
while (match !== null) {
|
|
174
|
-
|
|
184
|
+
// BFR-MASTERPROMPTER-075 ⓒ: a `DyNX_SubFrame` component's bare `loading` is its ROUTE-CHANGE flag
|
|
185
|
+
// (`updateState(url, loading)`), ⛔ a data load — a failed branch cannot belong to it
|
|
186
|
+
if (!(subFrame && UiBuildingBlocks_Util.subFrameLoadingCondition.test(match[0]))) {
|
|
187
|
+
result.push(template.offset + match.index);
|
|
188
|
+
}
|
|
175
189
|
match = regex.exec(code);
|
|
176
190
|
}
|
|
177
191
|
});
|
|
178
192
|
return result;
|
|
179
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* BFR-MASTERPROMPTER-075 ⓒ: the component (inline template: this file; external template: its sibling `.ts`)
|
|
196
|
+
* extends `DyNX_SubFrame_Component`. An unreadable sibling ⇒ `false` (measure, never silence).
|
|
197
|
+
*/
|
|
198
|
+
static isSubFrameComponent(text, filename) {
|
|
199
|
+
const extendsSubFrame = /\bextends\s+DyNX_SubFrame_Component\b/;
|
|
200
|
+
if (filename.endsWith('.ts')) {
|
|
201
|
+
return extendsSubFrame.test(text);
|
|
202
|
+
}
|
|
203
|
+
const sibling = filename.replace(/\.html$/, '.ts');
|
|
204
|
+
try {
|
|
205
|
+
return sibling !== filename && (0, fs_1.existsSync)(sibling) && extendsSubFrame.test((0, fs_1.readFileSync)(sibling, 'utf8'));
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
180
211
|
/** ② Whether a file's templates show a failed / error state. */
|
|
181
212
|
static hasFailedBranch(text, filename) {
|
|
182
213
|
return UiBuildingBlocks_Util.templates(text, filename).some((template) => UiBuildingBlocks_Util.failedPattern.test(UiBuildingBlocks_Util.blankComments(template.text)));
|
|
@@ -237,7 +268,7 @@ class UiBuildingBlocks_Util {
|
|
|
237
268
|
/** Reads the committed baseline (missing file = empty baseline; a broken file THROWS — never a silent pass). */
|
|
238
269
|
static readBaseline(baselinePath) {
|
|
239
270
|
if (!(0, fs_1.existsSync)(baselinePath)) {
|
|
240
|
-
return { scrollerTags: [], scrollContainers: {}, modulesWithoutLoadFailedBranch: [] };
|
|
271
|
+
return { scrollerTags: [], scrollContainers: {}, modulesWithoutLoadFailedBranch: [], emptyStatesWithoutGuard: {} };
|
|
241
272
|
}
|
|
242
273
|
const stamp = UiBuildingBlocks_Util.stamp(baselinePath);
|
|
243
274
|
const cached = UiBuildingBlocks_Util.baselineCache.get(baselinePath);
|
|
@@ -249,6 +280,7 @@ class UiBuildingBlocks_Util {
|
|
|
249
280
|
const settings = field('settings');
|
|
250
281
|
const scrollContainers = field('scrollContainers');
|
|
251
282
|
const modules = field('modulesWithoutLoadFailedBranch');
|
|
283
|
+
const emptyStates = field('emptyStatesWithoutGuard');
|
|
252
284
|
if (!scrollContainers || typeof scrollContainers !== 'object' || !Array.isArray(modules)) {
|
|
253
285
|
throw new Error(`UI-building-blocks baseline ${baselinePath} has no "scrollContainers" object / `
|
|
254
286
|
+ '"modulesWithoutLoadFailedBranch" array — regenerate it with `npx dynamo-ui-building-blocks-baseline`.');
|
|
@@ -260,6 +292,14 @@ class UiBuildingBlocks_Util {
|
|
|
260
292
|
modulesWithoutLoadFailedBranch: modules.filter((m) => typeof m === 'string')
|
|
261
293
|
.map((m) => UiBuildingBlocks_Util.normalize(m)),
|
|
262
294
|
};
|
|
295
|
+
// BFR-QA-003: optional — a baseline generated before the rule existed simply has none (the preset keeps the rule off)
|
|
296
|
+
if (emptyStates && typeof emptyStates === 'object') {
|
|
297
|
+
baseline.emptyStatesWithoutGuard = {};
|
|
298
|
+
Object.entries(emptyStates).forEach(([key, value]) => {
|
|
299
|
+
baseline.emptyStatesWithoutGuard[UiBuildingBlocks_Util.normalize(key)] =
|
|
300
|
+
typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : 0;
|
|
301
|
+
});
|
|
302
|
+
}
|
|
263
303
|
Object.entries(scrollContainers).forEach(([key, value]) => {
|
|
264
304
|
baseline.scrollContainers[UiBuildingBlocks_Util.normalize(key)] =
|
|
265
305
|
typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-building-blocks.util.js","sourceRoot":"","sources":["../../../../src/plugin/rules/angular/ui-building-blocks.util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-building-blocks.util.js","sourceRoot":"","sources":["../../../../src/plugin/rules/angular/ui-building-blocks.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-interface-over-duplicate-types.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/prefer-interface-over-duplicate-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-interface-over-duplicate-types.d.ts","sourceRoot":"","sources":["../../../src/plugin/rules/prefer-interface-over-duplicate-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiB9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAkThB,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -16,12 +16,19 @@ const rule = {
|
|
|
16
16
|
minimum: 2,
|
|
17
17
|
default: 3,
|
|
18
18
|
},
|
|
19
|
+
interfacePrefix: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
minLength: 1,
|
|
22
|
+
},
|
|
19
23
|
},
|
|
20
24
|
additionalProperties: false,
|
|
21
25
|
},
|
|
22
26
|
],
|
|
23
27
|
messages: {
|
|
24
|
-
preferInterface: 'Object type used {{count}} times. Consider creating interface "{{interfaceName}}"
|
|
28
|
+
preferInterface: 'Object type used {{count}} times. Consider creating interface "{{interfaceName}}"',
|
|
29
|
+
// BFR-DYNCLI-001: no FDP-conform name can be derived (no `interfacePrefix`, or no property keys) ⇒ report only
|
|
30
|
+
preferInterfaceNoFix: 'Object type used {{count}} times. Extract it into a named, module-prefixed interface'
|
|
31
|
+
+ ' (e.g. "{{suggestion}}") — auto-fix runs only with the `interfacePrefix` option.',
|
|
25
32
|
},
|
|
26
33
|
// BFR-ADVENTOR-009 (2. lépcső): a fixer forrás-szöveg-megőrzőre átírva (`sourceCode.getText` per property)
|
|
27
34
|
// → a komplex/union/qualified/function típusok EXAKT megőrződnek, a generált interface ÉRVÉNYES TS. Ezért
|
|
@@ -104,21 +111,6 @@ const rule = {
|
|
|
104
111
|
return 'complex';
|
|
105
112
|
}
|
|
106
113
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Generate interface name based on context
|
|
109
|
-
*/
|
|
110
|
-
function generateInterfaceName(signature, usageCount) {
|
|
111
|
-
// Try to extract meaningful name from signature
|
|
112
|
-
const properties = signature.split(';');
|
|
113
|
-
if (properties.length === 1) {
|
|
114
|
-
const prop = properties[0].split(':')[0].replace('readonly ', '').replace('?', '');
|
|
115
|
-
if (prop && prop !== 'unknown') {
|
|
116
|
-
return `${prop.charAt(0).toUpperCase() + prop.slice(1)}Interface`;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// Fallback to generic name
|
|
120
|
-
return `GeneratedInterface${usageCount}`;
|
|
121
|
-
}
|
|
122
114
|
/**
|
|
123
115
|
* Check if interface name conflicts with existing identifiers
|
|
124
116
|
*/
|
|
@@ -169,8 +161,10 @@ const rule = {
|
|
|
169
161
|
.map((m) => String(m.key?.name ?? m.key?.value ?? ''))
|
|
170
162
|
.filter((k) => !!k)
|
|
171
163
|
.slice(0, 3);
|
|
164
|
+
// no property keys ⇒ no meaningful name (the former `Generated_Interface` / `GeneratedInterfaceN` fallback
|
|
165
|
+
// wrote meaningless, convention-breaking names into the source — BFR-DYNCLI-001)
|
|
172
166
|
if (!keys.length) {
|
|
173
|
-
return
|
|
167
|
+
return undefined;
|
|
174
168
|
}
|
|
175
169
|
const pascal = keys
|
|
176
170
|
.map((k) => k.charAt(0).toUpperCase() + k.slice(1))
|
|
@@ -202,8 +196,26 @@ const rule = {
|
|
|
202
196
|
// Process all collected type usages
|
|
203
197
|
for (const [signature, usages] of typeUsages) {
|
|
204
198
|
if (usages.length >= threshold) {
|
|
205
|
-
// beszédes név a property-kulcsokból (
|
|
206
|
-
|
|
199
|
+
// beszédes név a property-kulcsokból; BFR-DYNCLI-001: FDP-konform (modul-prefixes) név CSAK az
|
|
200
|
+
// `interfacePrefix` opcióval vezethető le — enélkül (vagy kulcsok nélkül) a szabály csak jelez, ⛔ fixel
|
|
201
|
+
const derived = deriveInterfaceName(usages[0].node);
|
|
202
|
+
const prefix = options.interfacePrefix;
|
|
203
|
+
const interfaceName = derived && prefix
|
|
204
|
+
? generateUniqueInterfaceName(`${prefix}${derived}`)
|
|
205
|
+
: undefined;
|
|
206
|
+
if (!interfaceName) {
|
|
207
|
+
for (const usage of usages) {
|
|
208
|
+
context.report({
|
|
209
|
+
node: usage.node,
|
|
210
|
+
messageId: 'preferInterfaceNoFix',
|
|
211
|
+
data: {
|
|
212
|
+
count: usages.length.toString(),
|
|
213
|
+
suggestion: derived ? `<ModulePrefix>_${derived}` : '<ModulePrefix>_<Name>_Interface',
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
207
219
|
// a törzs a FORRÁS-SZÖVEGBŐL (getText) — a komplex/union/qualified típusok EXAKT megőrződnek
|
|
208
220
|
const interfaceBody = buildInterfaceBody(usages[0].node);
|
|
209
221
|
// Report on each usage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-interface-over-duplicate-types.js","sourceRoot":"","sources":["../../../src/plugin/rules/prefer-interface-over-duplicate-types.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"prefer-interface-over-duplicate-types.js","sourceRoot":"","sources":["../../../src/plugin/rules/prefer-interface-over-duplicate-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Strict lint entry point — `dynamo-lint-strict` (BFR-WARFACTORY-003)
|
|
4
|
+
*
|
|
5
|
+
* Runs ESLint (flat config, the project's own `eslint.config.*`) and sets the process exit code from the
|
|
6
|
+
* AGGREGATED result counters — never from a wrapper's own success path:
|
|
7
|
+
*
|
|
8
|
+
* | exit | meaning |
|
|
9
|
+
* |---|---|
|
|
10
|
+
* | `0` | 0 errors (incl. fatal/parsing errors) and the warnings are within the budget |
|
|
11
|
+
* | `1` | at least one error, OR more warnings than `--max-warnings` |
|
|
12
|
+
* | `2` | lint could not run (config error, NO file linted, crash) — never reported as a pass |
|
|
13
|
+
*
|
|
14
|
+
* **Warning budget:** without `--max-warnings` warnings are reported but do not fail (the budget is unlimited);
|
|
15
|
+
* `--max-warnings 0` is the zero-warning gate; `--max-warnings <n>` a ratchet for a known backlog.
|
|
16
|
+
*
|
|
17
|
+
* **`.eslintignore`:** flat config does NOT read it (ESLint 9) — files listed there ARE linted. If one exists, the
|
|
18
|
+
* run says so loudly and points at the `ignores` migration; it does not fail on it.
|
|
19
|
+
*
|
|
20
|
+
* @usage
|
|
21
|
+
* ```bash
|
|
22
|
+
* dynamo-lint-strict [patterns...] [--max-warnings <n>] [--json]
|
|
23
|
+
* dynamo-lint-strict src --max-warnings 0
|
|
24
|
+
* dynamo-lint-strict --json # last stdout line: machine-readable summary (CI)
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
import { ESLint } from 'eslint';
|
|
28
|
+
/** Parsed command-line options of `dynamo-lint-strict`. */
|
|
29
|
+
export interface DyESL_LintStrictOptions_Interface {
|
|
30
|
+
patterns: string[];
|
|
31
|
+
/** `undefined` = unlimited warning budget */
|
|
32
|
+
maxWarnings?: number;
|
|
33
|
+
json: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Aggregated result of one strict lint run. */
|
|
36
|
+
export interface DyESL_LintStrictSummary_Interface {
|
|
37
|
+
errorCount: number;
|
|
38
|
+
fatalErrorCount: number;
|
|
39
|
+
warningCount: number;
|
|
40
|
+
fileCount: number;
|
|
41
|
+
maxWarnings: number | null;
|
|
42
|
+
legacyEslintignore: boolean;
|
|
43
|
+
passed: boolean;
|
|
44
|
+
exitCode: number;
|
|
45
|
+
}
|
|
46
|
+
/** Strict lint runner — pure helpers (unit-testable) + the CLI `run`. */
|
|
47
|
+
export declare class DyESL_LintStrict_Util {
|
|
48
|
+
/**
|
|
49
|
+
* Parses `[patterns...] [--max-warnings <n>] [--json]`.
|
|
50
|
+
* @throws Error on an invalid / missing `--max-warnings` value or an unknown option
|
|
51
|
+
*/
|
|
52
|
+
static parseArgs(argv: string[]): DyESL_LintStrictOptions_Interface;
|
|
53
|
+
/** Aggregates the ESLint results into the summary + the exit code (0 pass / 1 fail). */
|
|
54
|
+
static summarize(results: ESLint.LintResult[], maxWarnings: number | undefined, legacyEslintignore: boolean): DyESL_LintStrictSummary_Interface;
|
|
55
|
+
/** Human-readable one-line verdict. */
|
|
56
|
+
static formatVerdict(summary: DyESL_LintStrictSummary_Interface): string;
|
|
57
|
+
/**
|
|
58
|
+
* Runs the strict lint in `cwd` and returns the exit code (0 / 1 / 2). Output goes to stdout/stderr.
|
|
59
|
+
*/
|
|
60
|
+
static run(argv: string[], cwd?: string): Promise<number>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=lint-strict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-strict.d.ts","sourceRoot":"","sources":["../../src/scripts/lint-strict.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,2DAA2D;AAC3D,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gDAAgD;AAChD,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yEAAyE;AACzE,qBAAa,qBAAqB;IAEhC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iCAAiC;IA6BnE,wFAAwF;IACxF,MAAM,CAAC,SAAS,CACd,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,EAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,kBAAkB,EAAE,OAAO,GAC1B,iCAAiC;IAsBpC,uCAAuC;IACvC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,iCAAiC,GAAG,MAAM;IAQxE;;OAEG;WACU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;CAkD/E"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Strict lint entry point — `dynamo-lint-strict` (BFR-WARFACTORY-003)
|
|
5
|
+
*
|
|
6
|
+
* Runs ESLint (flat config, the project's own `eslint.config.*`) and sets the process exit code from the
|
|
7
|
+
* AGGREGATED result counters — never from a wrapper's own success path:
|
|
8
|
+
*
|
|
9
|
+
* | exit | meaning |
|
|
10
|
+
* |---|---|
|
|
11
|
+
* | `0` | 0 errors (incl. fatal/parsing errors) and the warnings are within the budget |
|
|
12
|
+
* | `1` | at least one error, OR more warnings than `--max-warnings` |
|
|
13
|
+
* | `2` | lint could not run (config error, NO file linted, crash) — never reported as a pass |
|
|
14
|
+
*
|
|
15
|
+
* **Warning budget:** without `--max-warnings` warnings are reported but do not fail (the budget is unlimited);
|
|
16
|
+
* `--max-warnings 0` is the zero-warning gate; `--max-warnings <n>` a ratchet for a known backlog.
|
|
17
|
+
*
|
|
18
|
+
* **`.eslintignore`:** flat config does NOT read it (ESLint 9) — files listed there ARE linted. If one exists, the
|
|
19
|
+
* run says so loudly and points at the `ignores` migration; it does not fail on it.
|
|
20
|
+
*
|
|
21
|
+
* @usage
|
|
22
|
+
* ```bash
|
|
23
|
+
* dynamo-lint-strict [patterns...] [--max-warnings <n>] [--json]
|
|
24
|
+
* dynamo-lint-strict src --max-warnings 0
|
|
25
|
+
* dynamo-lint-strict --json # last stdout line: machine-readable summary (CI)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.DyESL_LintStrict_Util = void 0;
|
|
30
|
+
const fs_1 = require("fs");
|
|
31
|
+
const path_1 = require("path");
|
|
32
|
+
const eslint_1 = require("eslint");
|
|
33
|
+
/** Strict lint runner — pure helpers (unit-testable) + the CLI `run`. */
|
|
34
|
+
class DyESL_LintStrict_Util {
|
|
35
|
+
/**
|
|
36
|
+
* Parses `[patterns...] [--max-warnings <n>] [--json]`.
|
|
37
|
+
* @throws Error on an invalid / missing `--max-warnings` value or an unknown option
|
|
38
|
+
*/
|
|
39
|
+
static parseArgs(argv) {
|
|
40
|
+
const options = { patterns: [], json: false };
|
|
41
|
+
for (let i = 0; i < argv.length; i++) {
|
|
42
|
+
const arg = argv[i];
|
|
43
|
+
if (arg === '--json') {
|
|
44
|
+
options.json = true;
|
|
45
|
+
}
|
|
46
|
+
else if (arg === '--max-warnings') {
|
|
47
|
+
const value = Number(argv[i + 1]);
|
|
48
|
+
if (argv[i + 1] === undefined || !Number.isInteger(value) || value < 0) {
|
|
49
|
+
throw new Error(`--max-warnings needs a non-negative integer (got: ${argv[i + 1] ?? 'nothing'})`);
|
|
50
|
+
}
|
|
51
|
+
options.maxWarnings = value;
|
|
52
|
+
i++;
|
|
53
|
+
}
|
|
54
|
+
else if (arg.startsWith('-')) {
|
|
55
|
+
throw new Error(`unknown option: ${arg}`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
options.patterns.push(arg);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!options.patterns.length) {
|
|
62
|
+
options.patterns.push('.');
|
|
63
|
+
}
|
|
64
|
+
return options;
|
|
65
|
+
}
|
|
66
|
+
/** Aggregates the ESLint results into the summary + the exit code (0 pass / 1 fail). */
|
|
67
|
+
static summarize(results, maxWarnings, legacyEslintignore) {
|
|
68
|
+
const errorCount = results.reduce((sum, r) => sum + r.errorCount, 0);
|
|
69
|
+
const fatalErrorCount = results
|
|
70
|
+
.reduce((sum, r) => sum + r.fatalErrorCount, 0);
|
|
71
|
+
const warningCount = results
|
|
72
|
+
.reduce((sum, r) => sum + r.warningCount, 0);
|
|
73
|
+
// a `fatalErrorCount` az `errorCount` RÉSZE (ESLint 9) — külön is számoljuk, hogy a parsing-hiba látsszon
|
|
74
|
+
const overBudget = maxWarnings !== undefined && warningCount > maxWarnings;
|
|
75
|
+
const passed = !errorCount && !fatalErrorCount && !overBudget;
|
|
76
|
+
return {
|
|
77
|
+
errorCount: errorCount,
|
|
78
|
+
fatalErrorCount: fatalErrorCount,
|
|
79
|
+
warningCount: warningCount,
|
|
80
|
+
fileCount: results.length,
|
|
81
|
+
maxWarnings: maxWarnings ?? null,
|
|
82
|
+
legacyEslintignore: legacyEslintignore,
|
|
83
|
+
passed: passed,
|
|
84
|
+
exitCode: passed ? 0 : 1,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** Human-readable one-line verdict. */
|
|
88
|
+
static formatVerdict(summary) {
|
|
89
|
+
const budget = summary.maxWarnings === null ? 'unlimited' : `${summary.maxWarnings}`;
|
|
90
|
+
return `[dynamo-lint-strict] ${summary.passed ? 'PASS' : 'FAIL'} — errors: ${summary.errorCount}`
|
|
91
|
+
+ ` (fatal: ${summary.fatalErrorCount}) · warnings: ${summary.warningCount} (budget: ${budget})`
|
|
92
|
+
+ ` · files: ${summary.fileCount}`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Runs the strict lint in `cwd` and returns the exit code (0 / 1 / 2). Output goes to stdout/stderr.
|
|
96
|
+
*/
|
|
97
|
+
static async run(argv, cwd = process.cwd()) {
|
|
98
|
+
let options;
|
|
99
|
+
try {
|
|
100
|
+
options = DyESL_LintStrict_Util.parseArgs(argv);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error(`[dynamo-lint-strict] usage error: ${error instanceof Error ? error.message : String(error)}`);
|
|
104
|
+
return 2;
|
|
105
|
+
}
|
|
106
|
+
const legacyEslintignore = (0, fs_1.existsSync)((0, path_1.join)(cwd, '.eslintignore'));
|
|
107
|
+
if (legacyEslintignore) {
|
|
108
|
+
console.error('[dynamo-lint-strict] ⚠️ .eslintignore found — ESLint 9 flat config does NOT read it, the files'
|
|
109
|
+
+ ' listed there ARE linted. Move the patterns into an `ignores` entry of eslint.config.* and delete the file.');
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const eslint = new eslint_1.ESLint({ cwd: cwd });
|
|
113
|
+
const results = await eslint.lintFiles(options.patterns);
|
|
114
|
+
// üres futás ⛔ zöld: az ESLint `errorOnUnmatchedPattern`-je MÉRTEN nem megbízható (nem létező mappára 5/5
|
|
115
|
+
// futásban 0 fájlt adott vissza, hiba nélkül) — ezért a kapu maga ellenőrzi
|
|
116
|
+
if (!results.length) {
|
|
117
|
+
console.error(`[dynamo-lint-strict] no file was linted for: ${options.patterns.join(' ')} (exit 2)`
|
|
118
|
+
+ ' — an empty run is not a pass. Check the patterns and the `ignores` of eslint.config.*.');
|
|
119
|
+
return 2;
|
|
120
|
+
}
|
|
121
|
+
const summary = DyESL_LintStrict_Util.summarize(results, options.maxWarnings, legacyEslintignore);
|
|
122
|
+
const formatter = await eslint.loadFormatter('stylish');
|
|
123
|
+
const formatted = await formatter.format(results);
|
|
124
|
+
if (formatted) {
|
|
125
|
+
console.log(formatted);
|
|
126
|
+
}
|
|
127
|
+
console.log(DyESL_LintStrict_Util.formatVerdict(summary));
|
|
128
|
+
if (options.json) {
|
|
129
|
+
console.log(JSON.stringify(summary));
|
|
130
|
+
}
|
|
131
|
+
return summary.exitCode;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// a lint NEM futott le ⇒ ⛔ soha nem „zöld"
|
|
135
|
+
console.error('[dynamo-lint-strict] lint could not run (exit 2):', error instanceof Error ? error.message : String(error));
|
|
136
|
+
return 2;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.DyESL_LintStrict_Util = DyESL_LintStrict_Util;
|
|
141
|
+
if (require.main === module) {
|
|
142
|
+
DyESL_LintStrict_Util.run(process.argv.slice(2))
|
|
143
|
+
.then((code) => {
|
|
144
|
+
process.exitCode = code;
|
|
145
|
+
})
|
|
146
|
+
.catch((error) => {
|
|
147
|
+
console.error('[dynamo-lint-strict] crashed (exit 2):', error);
|
|
148
|
+
process.exitCode = 2;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=lint-strict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-strict.js","sourceRoot":"","sources":["../../src/scripts/lint-strict.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
|
|
|
24
24
|
const fs_1 = require("fs");
|
|
25
25
|
const path = tslib_1.__importStar(require("path"));
|
|
26
26
|
const ui_building_blocks_util_1 = require("../plugin/rules/angular/ui-building-blocks.util");
|
|
27
|
+
const empty_state_guard_util_1 = require("../plugin/rules/angular/empty-state-guard.util");
|
|
27
28
|
/** Scans a project folder into baseline form. */
|
|
28
29
|
function scanProject(root, scrollerTags) {
|
|
29
30
|
const files = fast_glob_1.default.sync(['**/*.html', '**/*.ts'], {
|
|
@@ -34,6 +35,7 @@ function scanProject(root, scrollerTags) {
|
|
|
34
35
|
const scrollContainers = {};
|
|
35
36
|
const loadingModules = new Set();
|
|
36
37
|
const failedModules = new Set();
|
|
38
|
+
const emptyStatesWithoutGuard = {};
|
|
37
39
|
files.sort().forEach((rel) => {
|
|
38
40
|
if (!ui_building_blocks_util_1.UiBuildingBlocks_Util.isInScope(rel)) {
|
|
39
41
|
return;
|
|
@@ -44,6 +46,12 @@ function scanProject(root, scrollerTags) {
|
|
|
44
46
|
if (findings) {
|
|
45
47
|
scrollContainers[ui_building_blocks_util_1.UiBuildingBlocks_Util.normalize(rel)] = findings;
|
|
46
48
|
}
|
|
49
|
+
// BFR-QA-003: unguarded empty-state messages (own ancestor block OR the rendering parent's guard clears them)
|
|
50
|
+
const unguarded = empty_state_guard_util_1.EmptyStateGuard_Util.findings(text, rel)
|
|
51
|
+
.filter((f) => !f.ownGuard).length;
|
|
52
|
+
if (unguarded && !empty_state_guard_util_1.EmptyStateGuard_Util.guardedByParent(full, root)) {
|
|
53
|
+
emptyStatesWithoutGuard[ui_building_blocks_util_1.UiBuildingBlocks_Util.normalize(rel)] = unguarded;
|
|
54
|
+
}
|
|
47
55
|
const moduleDir = ui_building_blocks_util_1.UiBuildingBlocks_Util.moduleDir(full);
|
|
48
56
|
if (moduleDir) {
|
|
49
57
|
const key = ui_building_blocks_util_1.UiBuildingBlocks_Util.relativeKey(moduleDir, root);
|
|
@@ -59,6 +67,7 @@ function scanProject(root, scrollerTags) {
|
|
|
59
67
|
scrollerTags: scrollerTags,
|
|
60
68
|
scrollContainers: scrollContainers,
|
|
61
69
|
modulesWithoutLoadFailedBranch: [...loadingModules].filter((m) => !failedModules.has(m)).sort(),
|
|
70
|
+
emptyStatesWithoutGuard: emptyStatesWithoutGuard,
|
|
62
71
|
};
|
|
63
72
|
}
|
|
64
73
|
/** The CLI. */
|
|
@@ -79,12 +88,16 @@ function main(args) {
|
|
|
79
88
|
.map(([key]) => key);
|
|
80
89
|
const newModules = current.modulesWithoutLoadFailedBranch
|
|
81
90
|
.filter((m) => !committed.modulesWithoutLoadFailedBranch.includes(m));
|
|
91
|
+
const grownEmpty = Object.entries(current.emptyStatesWithoutGuard ?? {})
|
|
92
|
+
.filter(([key, count]) => count > (committed.emptyStatesWithoutGuard?.[key] ?? 0))
|
|
93
|
+
.map(([key]) => key);
|
|
82
94
|
grownFiles.forEach((key) => console.log(`NEW scroll container without min-h-0 chain: ${key}`));
|
|
83
95
|
newModules.forEach((m) => console.log(`NEW module with a loading state but no failed state: ${m}`));
|
|
84
|
-
|
|
96
|
+
grownEmpty.forEach((key) => console.log(`NEW empty-state message without a loading / failed guard: ${key}`));
|
|
97
|
+
if (!grownFiles.length && !newModules.length && !grownEmpty.length) {
|
|
85
98
|
console.log('UI building blocks within the baseline.');
|
|
86
99
|
}
|
|
87
|
-
process.exitCode = grownFiles.length || newModules.length ? 1 : 0;
|
|
100
|
+
process.exitCode = grownFiles.length || newModules.length || grownEmpty.length ? 1 : 0;
|
|
88
101
|
return;
|
|
89
102
|
}
|
|
90
103
|
(0, fs_1.mkdirSync)(path.dirname(out), { recursive: true });
|
|
@@ -97,9 +110,11 @@ function main(args) {
|
|
|
97
110
|
totals: {
|
|
98
111
|
scrollContainers: scrollTotal,
|
|
99
112
|
modulesWithoutLoadFailedBranch: current.modulesWithoutLoadFailedBranch.length,
|
|
113
|
+
emptyStatesWithoutGuard: Object.values(current.emptyStatesWithoutGuard ?? {}).reduce((a, b) => a + b, 0),
|
|
100
114
|
},
|
|
101
115
|
scrollContainers: current.scrollContainers,
|
|
102
116
|
modulesWithoutLoadFailedBranch: current.modulesWithoutLoadFailedBranch,
|
|
117
|
+
emptyStatesWithoutGuard: current.emptyStatesWithoutGuard ?? {},
|
|
103
118
|
}, null, 2) + '\n');
|
|
104
119
|
console.log(`UI-building-blocks baseline written: ${path.relative(root, out)} — ${scrollTotal} scroll container(s) `
|
|
105
120
|
+ `without a min-h-0 chain, ${current.modulesWithoutLoadFailedBranch.length} module(s) without a load-failed state.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-building-blocks-baseline.js","sourceRoot":"","sources":["../../src/scripts/ui-building-blocks-baseline.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,kEAA2B;AAC3B,2BAA4D;AAC5D,mDAA6B;AAG7B,6FAAwF;
|
|
1
|
+
{"version":3,"file":"ui-building-blocks-baseline.js","sourceRoot":"","sources":["../../src/scripts/ui-building-blocks-baseline.ts"],"names":[],"mappings":"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"}
|