import { includeIgnoreFile } from "@eslint/compat"; import pluginJs from "@eslint/js"; import eslintConfigPrettier from "eslint-config-prettier/flat"; import globals from "globals"; import path from "node:path"; import { fileURLToPath } from "node:url"; import tseslint from "typescript-eslint"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const gitignorePath = path.resolve(__dirname, ".gitignore"); /** @type {import('eslint').Linter.Config[]} */ export default [ includeIgnoreFile(gitignorePath), { ignores: ["src/server/gatekeeper/**"] }, { files: ["**/*.{js,mjs,cjs,ts}"] }, { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, pluginJs.configs.recommended, ...tseslint.configs.recommended, eslintConfigPrettier, { languageOptions: { parserOptions: { projectService: { allowDefaultProject: [ "__mocks__/fileMock.js", "eslint.config.js", "postcss.config.js", "tailwind.config.js", "scripts/sync-assets.mjs", ], }, tsconfigRootDir: import.meta.dirname, }, }, }, { rules: { // Disable rules that would fail. The failures should be fixed, and the entries here removed. "@typescript-eslint/no-explicit-any": "off", "no-unused-vars": "off", }, }, { rules: { // Enable rules "@typescript-eslint/prefer-nullish-coalescing": "error", eqeqeq: "error", "no-case-declarations": "error", "@typescript-eslint/no-unused-vars": [ "error", { args: "none", caughtErrors: "none", }, ], }, }, ];