@futdevpro/dynamo-eslint 1.20.2 → 1.20.3
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 +1 -1
- package/__documentations/2026-08-22-angular-20-phase2-release.md +7 -3
- package/build/configs/ngx.js +2 -2
- package/build/configs/ngx.js.map +1 -1
- package/package.json +1 -1
- package/samples/package.json.example +1 -1
- package/src/configs/angular20-compatibility.spec.ts +11 -0
- package/src/configs/ngx.ts +2 -2
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Requirement:** BFR-CTM-006
|
|
6
6
|
|
|
7
|
-
**Release:** `@futdevpro/dynamo-eslint@1.20.
|
|
7
|
+
**Release:** `@futdevpro/dynamo-eslint@1.20.3` after the Angular 20 consumer correction
|
|
8
8
|
|
|
9
9
|
**Dependency baseline:** `@futdevpro/fsm-dynamo@1.20.2`
|
|
10
10
|
|
|
@@ -40,6 +40,10 @@ consumer installations and created false peer conflicts.
|
|
|
40
40
|
- Angular TypeScript plugin, template plugin, and template parser resolution now comes from `angular-eslint`.
|
|
41
41
|
- An executable compatibility specification verifies that every configured Angular rule exists in the Angular
|
|
42
42
|
20 plugin objects and that the unified parser/plugin instances are the exported preset instances.
|
|
43
|
+
- Angular 20's template-complexity default is no longer inherited implicitly. The fleet policy is explicit:
|
|
44
|
+
warning severity at `maxComplexity: 20`. Legacy `ngFor` trackBy findings are warning-level while the existing
|
|
45
|
+
`no-ngfor-directive` migration warning remains active. Structural template defects such as duplicate attributes
|
|
46
|
+
remain errors.
|
|
43
47
|
- TypeScript 5.9's current ESLint visitor callback declarations are reflected in the direct unit-test invocations.
|
|
44
48
|
Runtime visitor behavior is unchanged; unused synthetic visitor arguments were removed from implementations.
|
|
45
49
|
- Package-local validator scripts now invoke their built entry points directly. The former scripts attempted to
|
|
@@ -59,8 +63,8 @@ consumer installations and created false peer conflicts.
|
|
|
59
63
|
- Naming validator: 37 production source files, PASS.
|
|
60
64
|
- Production dependency audit: 0 known vulnerabilities.
|
|
61
65
|
- Package dependency tree: all declared direct dependencies resolved.
|
|
62
|
-
-
|
|
63
|
-
the
|
|
66
|
+
- Initial package release: `1.20.2`. The first Angular 20 package consumer run then measured the changed implicit
|
|
67
|
+
template-complexity default and drove the explicit fleet policy correction released as `1.20.3`.
|
|
64
68
|
- Full repository ESLint: 0 errors and 2,728 legacy warning-level findings; the existing script exits successfully.
|
|
65
69
|
This release adds no warning-level release gate claim for the historical package source. The consumer release
|
|
66
70
|
gate remains zero-warning lint, and the upgraded presets must be proven there before BFR-CTM-006 resolution.
|
package/build/configs/ngx.js
CHANGED
|
@@ -62,7 +62,7 @@ module.exports = [
|
|
|
62
62
|
},
|
|
63
63
|
rules: {
|
|
64
64
|
'@angular-eslint/template/banana-in-box': 'error',
|
|
65
|
-
'@angular-eslint/template/cyclomatic-complexity': '
|
|
65
|
+
'@angular-eslint/template/cyclomatic-complexity': ['warn', { maxComplexity: 20 }],
|
|
66
66
|
'@angular-eslint/template/eqeqeq': 'error',
|
|
67
67
|
// Signal-first kódban (Angular 17+) a `params.data_$()`, `model_$()` stb.
|
|
68
68
|
// szignal-getter hivasok DESIGN-ALTAL kerulnek a templatebe — olcso, ket
|
|
@@ -77,7 +77,7 @@ module.exports = [
|
|
|
77
77
|
'@angular-eslint/template/no-call-expression': ['warn', { allowSuffix: '_$' }],
|
|
78
78
|
'@angular-eslint/template/no-duplicate-attributes': 'error',
|
|
79
79
|
'@angular-eslint/template/no-negated-async': 'error',
|
|
80
|
-
'@angular-eslint/template/use-track-by-function': '
|
|
80
|
+
'@angular-eslint/template/use-track-by-function': 'warn',
|
|
81
81
|
// CCAP-portolt Angular template review-k (regex-alapú text scan).
|
|
82
82
|
'@futdevpro/dynamo/no-method-call-in-template': 'warn',
|
|
83
83
|
'@futdevpro/dynamo/angular-for-track-logic': 'warn',
|
package/build/configs/ngx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa,CAAC,QAAQ;SAC1C;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,aAAa,CAAC,cAAc;YACpC,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,aAAa,CAAC,cAAc;SACzD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,
|
|
1
|
+
{"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa,CAAC,QAAQ;SAC1C;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,aAAa,CAAC,cAAc;YACpC,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,aAAa,CAAC,cAAc;SACzD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,CAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;YAClF,iCAAiC,EAAE,OAAO;YAC1C,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,4EAA4E;YAC5E,gEAAgE;YAChE,8DAA8D;YAC9D,oFAAoF;YACpF,2FAA2F;YAC3F,4EAA4E;YAC5E,6CAA6C,EAAE,CAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/E,kDAAkD,EAAE,OAAO;YAC3D,2CAA2C,EAAE,OAAO;YACpD,gDAAgD,EAAE,MAAM;YAExD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"test": "npm run lint && npm run validate:imports && npm run validate:naming"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@futdevpro/dynamo-eslint": "1.20.
|
|
16
|
+
"@futdevpro/dynamo-eslint": "1.20.3",
|
|
17
17
|
"angular-eslint": "~20.7.0",
|
|
18
18
|
"eslint": "~9.39.5",
|
|
19
19
|
"typescript": "5.9.3",
|
|
@@ -59,4 +59,15 @@ describe('| Angular 20 flat-config compatibility', (): void => {
|
|
|
59
59
|
expect(templateConfig.plugins['@angular-eslint/template']).toBe(angularEslint.templatePlugin);
|
|
60
60
|
expect(templateConfig.languageOptions.parser).toBe(angularEslint.templateParser);
|
|
61
61
|
});
|
|
62
|
+
|
|
63
|
+
it('| pins the Angular 20 template-complexity policy instead of inheriting its default', (): void => {
|
|
64
|
+
const templateConfig: any = ngxConfig.find(
|
|
65
|
+
(config: any): boolean => !!config.plugins?.['@angular-eslint/template'],
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
expect(templateConfig.rules['@angular-eslint/template/cyclomatic-complexity'])
|
|
69
|
+
.toEqual([ 'warn', { maxComplexity: 20 }]);
|
|
70
|
+
expect(templateConfig.rules['@angular-eslint/template/use-track-by-function']).toBe('warn');
|
|
71
|
+
expect(templateConfig.rules['@angular-eslint/template/no-duplicate-attributes']).toBe('error');
|
|
72
|
+
});
|
|
62
73
|
});
|
package/src/configs/ngx.ts
CHANGED
|
@@ -64,7 +64,7 @@ module.exports = [
|
|
|
64
64
|
},
|
|
65
65
|
rules: {
|
|
66
66
|
'@angular-eslint/template/banana-in-box': 'error',
|
|
67
|
-
'@angular-eslint/template/cyclomatic-complexity': '
|
|
67
|
+
'@angular-eslint/template/cyclomatic-complexity': [ 'warn', { maxComplexity: 20 }],
|
|
68
68
|
'@angular-eslint/template/eqeqeq': 'error',
|
|
69
69
|
// Signal-first kódban (Angular 17+) a `params.data_$()`, `model_$()` stb.
|
|
70
70
|
// szignal-getter hivasok DESIGN-ALTAL kerulnek a templatebe — olcso, ket
|
|
@@ -79,7 +79,7 @@ module.exports = [
|
|
|
79
79
|
'@angular-eslint/template/no-call-expression': [ 'warn', { allowSuffix: '_$' }],
|
|
80
80
|
'@angular-eslint/template/no-duplicate-attributes': 'error',
|
|
81
81
|
'@angular-eslint/template/no-negated-async': 'error',
|
|
82
|
-
'@angular-eslint/template/use-track-by-function': '
|
|
82
|
+
'@angular-eslint/template/use-track-by-function': 'warn',
|
|
83
83
|
|
|
84
84
|
// CCAP-portolt Angular template review-k (regex-alapú text scan).
|
|
85
85
|
'@futdevpro/dynamo/no-method-call-in-template': 'warn',
|