{ "root": true, "env": { "browser": true, "es6": true, "jest": true }, "extends": [ "react-app", "plugin:react/recommended", "plugin:prettier/recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "plugin:import/recommended", "plugin:import/typescript", "airbnb", "prettier" ], "globals": { "Atomics": "readonly", "JSX": "readonly", "SharedArrayBuffer": "readonly" }, "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 2018, "sourceType": "module", "project": ["./tsconfig.json"] }, "plugins": ["react", "@typescript-eslint", "import"], "rules": { "no-return-await": "off", "no-console": "warn", "react/state-in-constructor": [0], "@typescript-eslint/explicit-function-return-type": [ "warn", { "allowExpressions": true } ], "react/jsx-wrap-multilines": [ "error", { "declaration": false, "assignment": false } ], "react/function-component-definition": [ "error", { "namedComponents": "arrow-function", "unnamedComponents": "arrow-function" } ], "react/jsx-props-no-spreading": 0, "no-underscore-dangle": 0, "react/react-in-jsx-scope": 0, "react/jsx-curly-brace-presence": 2, "import/prefer-default-export": 0, "jsx-a11y/click-events-have-key-events": 0, "jsx-a11y/no-static-element-interactions": 0, "jsx-a11y/no-noninteractive-element-interactions": 0, "no-unused-expressions": 0, "react/jsx-one-expression-per-line": 0, "import/no-unresolved": 2, "import/order": 0, "import/extensions": [ "error", "ignorePackages", { "js": "never", "jsx": "never", "ts": "never", "tsx": "never" } ], "react/require-default-props": 0, "no-use-before-define": "error", "@typescript-eslint/no-use-before-define": ["error"], "no-shadow": "off", "@typescript-eslint/no-shadow": "error", "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": ["error"], "react/no-unused-prop-types": 1, "import/no-cycle": 2, "react/jsx-curly-newline": 1, "@typescript-eslint/no-redeclare": 1, "jsx-a11y/anchor-is-valid": 1, "arrow-body-style": 1, "no-undef": 1, "@typescript-eslint/ban-types": 1, "no-param-reassign": 1, "no-redeclare": 1, "no-restricted-syntax": 1, "import/no-extraneous-dependencies": 1, "no-prototype-builtins": 1, "no-restricted-globals": 1, "react/button-has-type": 1, "@typescript-eslint/no-empty-function": 1, "react/no-array-index-key": 1, "no-continue": 1, "no-nested-ternary": 1, "react/no-unescaped-entities": 1, "@typescript-eslint/no-var-requires": 1, "array-callback-return": 1, "radix": 0, "react/destructuring-assignment": 1, "jsx-a11y/alt-text": 1, "react/jsx-indent": 1, "react/jsx-closing-tag-location": 1, "react/jsx-closing-bracket-location": 1, "react/jsx-filename-extension": 0, "id-length": [ 1, { "exceptions": ["i", "j", "e", "x", "y", "p", "n"], "properties": "never" } ], "prettier/prettier": [ "warn", { "endOfLine": "auto" } ] }, "overrides": [ { "files": ["**/*.tsx"], "rules": { "react/prop-types": "off" } } ], "settings": { "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, "import/resolver": { "node": { "extensions": [".js", ".jsx", ".ts", ".tsx"], "moduleDirectory": ["node_modules", "src/"], "resolvePaths": ["node_modules/@types"], "tryExtensions": [ ".js", ".json", ".node", ".jsx", ".tsx", ".ts", ".d.ts" ] }, "typescript": { "alwaysTryTypes": true } } } }