60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import { FlatCompat } from "@eslint/eslintrc"
|
|
import eslintPlugin from "@eslint/js"
|
|
import type { Linter } from "eslint"
|
|
|
|
const compat = new FlatCompat()
|
|
|
|
const eslintConfig = [
|
|
{
|
|
name: "custom/eslint/recommended",
|
|
files: ["**/*.ts?(x)"],
|
|
...eslintPlugin.configs.recommended,
|
|
},
|
|
]
|
|
|
|
const ignoresConfig = [
|
|
{
|
|
name: "custom/eslint/ignores",
|
|
// the ignores option needs to be in a separate configuration object
|
|
// replaces the .eslintignore file
|
|
ignores: [
|
|
".next/",
|
|
".vscode/",
|
|
"public/",
|
|
"src/generated/",
|
|
"node_modules/",
|
|
"src/components/ui/",
|
|
],
|
|
},
|
|
] as Linter.Config[]
|
|
|
|
export default [
|
|
...compat.extends(
|
|
"next/core-web-vitals",
|
|
"next/typescript",
|
|
"plugin:import/recommended",
|
|
"plugin:playwright/recommended",
|
|
"plugin:prettier/recommended",
|
|
),
|
|
...compat.config({
|
|
rules: {
|
|
"no-unused-vars": "error",
|
|
"simple-import-sort/exports": "error",
|
|
"simple-import-sort/imports": "error",
|
|
"@typescript-eslint/no-unused-vars": "off",
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-empty-object-type": "off",
|
|
"@typescript-eslint/no-empty-interface": "off",
|
|
},
|
|
plugins: ["simple-import-sort"],
|
|
globals: { React: true, Prisma: true },
|
|
settings: {
|
|
react: {
|
|
version: "detect",
|
|
},
|
|
},
|
|
}),
|
|
...eslintConfig,
|
|
...ignoresConfig,
|
|
] satisfies Linter.Config[]
|