import { dirname } from 'path' import { fileURLToPath } from 'url' import { FlatCompat } from '@eslint/eslintrc' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) const compat = new FlatCompat({ baseDirectory: __dirname, }) const eslintConfig = [ ...compat.extends('next/core-web-vitals', 'next/typescript'), { rules: { '@typescript-eslint/ban-ts-comment': 'warn', '@typescript-eslint/no-empty-object-type': 'warn', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-unsafe-function-type': 'warn', // Some legacy patterns use Function type '@typescript-eslint/no-unused-vars': [ 'warn', { vars: 'all', args: 'after-used', ignoreRestSiblings: false, argsIgnorePattern: '^_', varsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_', caughtErrorsIgnorePattern: '^(_|ignore)', }, ], }, }, { // Payload Admin components can use elements (they're not in Next.js page router) files: ['src/components/admin/**/*.tsx'], rules: { '@next/next/no-html-link-for-pages': 'off', }, }, { ignores: [ '.next/', 'coverage/', 'node_modules/', 'playwright-report/', 'test-results/', 'next-env.d.ts', 'src/migrations/', // Payload migrations have required but unused params 'src/migrations_backup/', ], }, ] export default eslintConfig