import { fixupConfigRules } from "@eslint/compat" import globals from "globals" import tsParser from "@typescript-eslint/parser" import path from "node:path" import { fileURLToPath } from "node:url" import js from "@eslint/js" import { FlatCompat } from "@eslint/eslintrc" const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, allConfig: js.configs.all, }) export default [ ...fixupConfigRules( compat.extends( "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:import/recommended", "plugin:import/typescript", "plugin:prettier/recommended", "prettier", ), ), { languageOptions: { globals: { ...globals.browser, ...globals.jest, ...globals.node, }, parser: tsParser, ecmaVersion: 2018, sourceType: "module", }, settings: { "import/resolver": { typescript: { alwaysTryTypes: true, }, }, }, rules: { "@typescript-eslint/no-unused-vars": [ "error", { args: "none", }, ], "no-dupe-class-members": "off", "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/ban-types": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-extra-semi": "off", "@typescript-eslint/no-require-imports": "off", "@typescript-eslint/no-unused-vars": "off", // TODO: Fix these. "@typescript-eslint/no-empty-object-type": "off", eqeqeq: "error", "import/order": [ "error", { alphabetize: { order: "asc", }, groups: [["builtin", "external", "internal"], "parent", "sibling"], }, ], "no-async-promise-executor": "off", }, }, ]