{ "env": { "node": true, "browser": true, "es2021": true, "jquery": true, }, "extends": [ "eslint:recommended", "plugin:react/recommended", "plugin:react-hooks/recommended", "plugin:@typescript-eslint/recommended", "prettier", ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaFeatures": { "jsx": true, }, "ecmaVersion": 12, "sourceType": "module", "project": "./tsconfig.eslint.json", }, "plugins": [ "react", "react-refresh", "@typescript-eslint", "eslint-plugin-import", ], "ignorePatterns": ["*.js"], "rules": { "no-console": [ "warn", { "allow": ["warn", "error"], }, ], "no-fallthrough": "off", "no-eq-null": "error", "no-useless-catch": "error", "eqeqeq": "error", "react/prop-types": "off", "react/display-name": "off", "react/react-in-jsx-scope": "off", "react/no-unescaped-entities": "off", "react-hooks/exhaustive-deps": ["warn"], "react-refresh/only-export-components": "warn", "@typescript-eslint/restrict-plus-operands": "off", "@typescript-eslint/no-confusing-non-null-assertion": "error", "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-non-null-assertion": "error", "@typescript-eslint/strict-boolean-expressions": "error", "@typescript-eslint/no-extra-non-null-assertion": "error", "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", "@typescript-eslint/no-unnecessary-type-assertion": "error", "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/no-empty-interface": [ "error", { "allowSingleExtends": true, }, ], "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/ban-types": [ "error", { "types": { "{}": false, }, }, ], "@typescript-eslint/no-misused-promises": [ "error", { "checksConditionals": true, "checksVoidReturn": { "arguments": false, "attributes": false, "properties": true, "returns": false, "variables": true, }, }, ], "@typescript-eslint/promise-function-async": "error", "@typescript-eslint/no-throw-literal": "error", "@typescript-eslint/no-namespace": "off", "linebreak-style": "error", "comma-dangle": [ "warn", { "arrays": "always-multiline", "objects": "always-multiline", "imports": "always-multiline", "exports": "always-multiline", "functions": "always-multiline", }, ], "quotes": [ "error", "double", { "allowTemplateLiterals": true, }, ], "semi": ["error", "always"], "semi-style": ["error", "last"], }, "settings": { "react": { "version": "detect", }, }, }