module.exports = { root: true, parser: "babel-eslint", parserOptions: { "ecmaFeatures": { "jsx": true } }, env: { "browser": true, "commonjs": true, "es6": true, }, globals: { "process": false }, plugins: [ "react", "react-hooks", "mocha" ], rules: { "quotes": [ 1, "single", { "avoidEscape": true } ], "no-console": 1, "no-restricted-globals": [ 2, "length" ], "no-global-assign": 0, "no-unsafe-negation": 0, "react/prop-types": 0, "react/jsx-no-target-blank": 0, "react/no-unescaped-entities": 0, "react/display-name": 1, "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn", "mocha/no-skipped-tests": "warn", "mocha/no-exclusive-tests": "error" }, settings: { "react": { "version": "detect" } }, overrides: [ { files: [ "**/*.{ts,tsx}" ], parser: "@typescript-eslint/parser", parserOptions: { "ecmaFeatures": { "jsx": true }, "tsconfigRootDir": __dirname, "project": [ "./tsconfig.json" ] }, plugins: [ "@typescript-eslint" ], rules: { "@typescript-eslint/no-empty-function": 0, "@typescript-eslint/no-use-before-define": 0, "@typescript-eslint/member-delimiter-style": [2, { multiline: { delimiter: "none" } }], "@typescript-eslint/explicit-function-return-type": 0, '@typescript-eslint/prefer-string-starts-ends-with': 1, '@typescript-eslint/no-unnecessary-type-assertion': 1, // has false positives (Object.values result) v 2.29.0 '@typescript-eslint/no-inferrable-types': 1, // causes problems with unknown values v 2.29.0 typescript v 3.8.3 '@typescript-eslint/no-var-requires': 'off', // TODO - enable these new recommended rules, a first step would be to switch from "off" to "warn" '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-floating-promises': 'off', '@typescript-eslint/no-extra-semi': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/restrict-plus-operands': 'off', '@typescript-eslint/restrict-template-expressions': 'off', '@typescript-eslint/naming-convention': 'off', '@typescript-eslint/prefer-regexp-exec': 'off', '@typescript-eslint/no-explicit-any': 'off', }, extends: [ "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking" ] }, { files: ["**/*.test.js"], env: { mocha: true } } ], extends: [ "eslint:recommended", "plugin:react/recommended", "prettier", "prettier/react", "prettier/@typescript-eslint" ] }