{ "extends": [ "plugin:mattermost/react", "plugin:cypress/recommended", "plugin:jquery/deprecated" ], "plugins": [ "react", "babel", "mattermost", "import", "cypress", "jquery", "no-only-tests" ], "parser": "@typescript-eslint/parser", "env": { "jest": true, "cypress/globals": true }, "settings": { "import/resolver": "webpack", "react": { "pragma": "React", "version": "detect" } }, "rules": { "max-lines": "off", "no-unused-expressions": 0, "babel/no-unused-expressions": [2, {"allowShortCircuit": true}], "eol-last": ["error", "always"], "import/no-unresolved": 2, "import/order": [ 2, { "newlines-between": "always-and-inside-groups", "groups": [ "builtin", "external", [ "internal", "parent" ], "sibling", "index" ] } ], "no-undefined": 0, "react/jsx-filename-extension": 0, "react/prop-types": [ 2, { "ignore": [ "location", "history", "component" ] } ], "react/no-string-refs": 2, "no-only-tests/no-only-tests": ["error", {"focus": ["only", "skip"]}], "max-nested-callbacks": ["error", {"max": 5}], "no-shadow": "off", "@typescript-eslint/no-shadow": "error" }, "overrides": [ { "files": ["**/*.tsx", "**/*.ts"], "extends": [ "plugin:@typescript-eslint/recommended" ], "rules": { "import/no-unresolved": 0, // ts handles this better "camelcase": 0, "semi": "off", "@typescript-eslint/naming-convention": [ 2, { "selector": "function", "format": ["camelCase", "PascalCase"] }, { "selector": "variable", "format": ["camelCase", "PascalCase", "UPPER_CASE"] }, { "selector": "parameter", "format": ["camelCase", "PascalCase"], "leadingUnderscore": "allow" }, { "selector": "typeLike", "format": ["PascalCase"] } ], "@typescript-eslint/no-non-null-assertion": 0, "@typescript-eslint/no-unused-vars": [ 2, { "vars": "all", "args": "after-used" } ], "@typescript-eslint/member-delimiter-style": [2, {"multiline": {"delimiter": "none"}, "singleline": {"delimiter": "comma"}}], "@typescript-eslint/no-var-requires": 0, "@typescript-eslint/no-empty-function": 0, "@typescript-eslint/prefer-interface": 0, "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/semi": [2, "never"], "@typescript-eslint/indent": [ 2, 4, { "SwitchCase": 0 } ], "no-use-before-define": "off", "@typescript-eslint/no-use-before-define": [ 2, { "classes": false, "functions": false, "variables": false } ], "no-useless-constructor": 0, "@typescript-eslint/no-useless-constructor": 2, "react/jsx-filename-extension": 0 } }, { "files": ["tests/**", "**/*.test.*"], "env": { "jest": true }, "rules": { "func-names": 0, "global-require": 0, "new-cap": 0, "prefer-arrow-callback": 0, "no-import-assign": 0 } }, { "files": ["cypress/**"], "rules": { "cypress/no-unnecessary-waiting": 0, "func-names": 0, "import/no-unresolved": 0, "max-nested-callbacks": 0, "no-process-env": 0, "no-unused-expressions": 0 } } ] }