// ESLint (R0.12) — config unique du monorepo (flat config, ESLint 9). // Porte notamment la règle d'architecture ADR-001 : le SDK MinIO ne // s'importe QUE dans l'implémentation de FileStorage. import eslint from '@eslint/js'; import reactHooks from 'eslint-plugin-react-hooks'; import tseslint from 'typescript-eslint'; export default tseslint.config( { ignores: [ '**/dist/**', '**/node_modules/**', '**/*.d.ts', '**/coverage/**', 'docs/**', '**/*.config.{js,mjs,ts}', 'apps/api/jest.config.js', ], }, eslint.configs.recommended, ...tseslint.configs.recommended, { rules: { '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], // ADR-001 : MinIO derrière l'interface FileStorage, jamais en direct 'no-restricted-imports': [ 'error', { paths: [ { name: 'minio', message: 'Import direct du SDK MinIO interdit (ADR-001) : passez par l’interface FileStorage (apps/api/src/files).', }, ], }, ], }, }, { // Seul fichier autorisé : l'implémentation MinIO de FileStorage files: ['apps/api/src/files/minio-storage.service.ts'], rules: { 'no-restricted-imports': 'off' }, }, { files: ['apps/web/**/*.{ts,tsx}'], plugins: { 'react-hooks': reactHooks }, rules: { 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'error', }, }, );