@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 CHANGED
@@ -314,4 +314,4 @@ This package uses its own presets and rules for self-linting. The ESLint v9 flat
314
314
 
315
315
  **Maintained by**: Future Development Program Ltd.
316
316
  **License**: ISC
317
- **Version**: 1.20.2
317
+ **Version**: 1.20.3
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Requirement:** BFR-CTM-006
6
6
 
7
- **Release:** `@futdevpro/dynamo-eslint@1.20.2` after the repository release hook
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
- - Pre-hook package dry run: `@futdevpro/dynamo-eslint@1.20.1` generated successfully; the release hook then aligned
63
- the final package version to `1.20.2`.
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.
@@ -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': 'error',
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': 'error',
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',
@@ -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,OAAO;YACzD,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,OAAO;YAEzD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/dynamo-eslint",
3
- "version": "1.20.2",
3
+ "version": "1.20.3",
4
4
  "description": "Shared ESLint configs, Dynamo-powered plugin and validators for FutDevPro stacks",
5
5
  "author": "Future Development Program Ltd.",
6
6
  "license": "ISC",
@@ -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.2",
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
  });
@@ -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': 'error',
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': 'error',
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',