import { dirname } from 'node:path' import { fileURLToPath } from 'node:url' import naechstesWebVitals from 'eslint-config-next/core-web-vitals' import tseslint from 'typescript-eslint' const wurzel = dirname(fileURLToPath(import.meta.url)) export default tseslint.config( { ignores: [ '.next/**', 'node_modules/**', 'coverage/**', 'playwright-report/**', 'test-results/**', // Vom Generator erzeugt, nicht von Hand gepflegt. 'src/generated/**', 'next-env.d.ts', // Service Worker: laeuft im Browser, nicht in unserer Werkzeugkette. 'public/sw.js', ], }, ...naechstesWebVitals, ...tseslint.configs.recommendedTypeChecked, { languageOptions: { parserOptions: { projectService: true, tsconfigRootDir: wurzel, }, }, rules: { '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], '@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports', fixStyle: 'inline-type-imports' }, ], '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/require-await': 'error', // Keine Geheimnisse in Logs: console nur fuer Warnungen und Fehler. 'no-console': ['error', { allow: ['warn', 'error'] }], eqeqeq: ['error', 'always', { null: 'ignore' }], }, }, // Skripte, Seed und Tests duerfen auf die Konsole schreiben. { files: ['scripts/**', 'prisma/**', '**/*.test.ts', '**/*.test.tsx', 'e2e/**'], rules: { 'no-console': 'off', }, }, { files: ['**/*.js', '**/*.mjs', '**/*.cjs'], extends: [tseslint.configs.disableTypeChecked], }, )