front(lint): ESLint 9 flat config + angular-eslint 19

- eslint.config.js (flat) : recommended TS + angular-eslint (ts + templates
  a11y), règles selectors app + no-unused-vars (^_ ignoré)
- script lint -> 'eslint .' (+ lint:fix), évite la résolution du builder
  Angular sous pnpm
- fix de la seule violation (variable _ inutilisée dans l'effect catalog)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
z3n
2026-06-26 13:13:54 +00:00
parent cd43c88294
commit c9fa0cd97b
4 changed files with 776 additions and 30 deletions

View File

@@ -0,0 +1,38 @@
// @ts-check
const eslint = require('@eslint/js');
const tseslint = require('typescript-eslint');
const angular = require('angular-eslint');
module.exports = tseslint.config(
{
ignores: ['dist/**', 'node_modules/**', '.angular/**', 'coverage/**'],
},
{
files: ['**/*.ts'],
extends: [
eslint.configs.recommended,
...tseslint.configs.recommended,
...angular.configs.tsRecommended,
],
processor: angular.processInlineTemplates,
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
'@angular-eslint/component-selector': [
'error',
{ type: 'element', prefix: 'app', style: 'kebab-case' },
],
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
},
},
{
files: ['**/*.html'],
extends: [
...angular.configs.templateRecommended,
...angular.configs.templateAccessibility,
],
rules: {},
},
);

View File

@@ -7,11 +7,10 @@
"build": "ng build", "build": "ng build",
"build:prod": "ng build --configuration production", "build:prod": "ng build --configuration production",
"test": "ng test --watch=false --browsers=ChromeHeadless", "test": "ng test --watch=false --browsers=ChromeHeadless",
"lint": "ng lint" "lint": "eslint .",
"lint:fix": "eslint . --fix"
}, },
"dependencies": { "dependencies": {
"@datacat/shared": "workspace:*",
"@gouvfr/dsfr": "^1.13.0",
"@angular/animations": "^19.0.0", "@angular/animations": "^19.0.0",
"@angular/common": "^19.0.0", "@angular/common": "^19.0.0",
"@angular/compiler": "^19.0.0", "@angular/compiler": "^19.0.0",
@@ -20,6 +19,8 @@
"@angular/platform-browser": "^19.0.0", "@angular/platform-browser": "^19.0.0",
"@angular/platform-browser-dynamic": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0",
"@angular/router": "^19.0.0", "@angular/router": "^19.0.0",
"@datacat/shared": "workspace:*",
"@gouvfr/dsfr": "^1.13.0",
"rxjs": "^7.8.0", "rxjs": "^7.8.0",
"tslib": "^2.8.0", "tslib": "^2.8.0",
"zone.js": "^0.15.0" "zone.js": "^0.15.0"
@@ -28,8 +29,12 @@
"@angular-devkit/build-angular": "^19.0.0", "@angular-devkit/build-angular": "^19.0.0",
"@angular/cli": "^19.0.0", "@angular/cli": "^19.0.0",
"@angular/compiler-cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0",
"@eslint/js": "^9.39.4",
"@types/node": "^22.0.0", "@types/node": "^22.0.0",
"angular-eslint": "^19.8.1",
"eslint": "^9.39.4",
"sass": "^1.83.0",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"sass": "^1.83.0" "typescript-eslint": "^8.62.0"
} }
} }

View File

@@ -176,9 +176,9 @@ export class CatalogComponent implements OnInit {
private searchTimer: ReturnType<typeof setTimeout> | null = null; private searchTimer: ReturnType<typeof setTimeout> | null = null;
constructor() { constructor() {
/* Rechargement si page change */ /* Rechargement si page change (lecture du signal = dépendance de l'effet) */
effect(() => { effect(() => {
const _ = this.page(); this.page();
this.loadApis(); this.loadApis();
}); });
} }

751
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff