{ "env": { "browser": true, "jest": true }, "extends": [ "airbnb", "plugin:flowtype/recommended" ], "parser": "babel-eslint", "plugins": [ "flowtype", "import", "jest", "react", "react-hooks" ], "settings": { "flowtype": { "onlyFilesWithFlowAnnotation": true }, "import/resolver": { "webpack": { "config": "config/webpack/webpack.config.js" } } }, "rules": { "arrow-body-style": ["warn", "as-needed"], "brace-style": ["error", "stroustrup"], "comma-dangle": ["error", "only-multiline"], "function-paren-newline": ["error", "consistent"], "indent": [ "error", 2, { "FunctionDeclaration": { "body": 1, "parameters": 1 }, "FunctionExpression": { "body": 1, "parameters": 1 }, "SwitchCase": 1 } ], "lines-between-class-members": "off", "max-classes-per-file": "off", "max-len": [ "error", { "code": 120, "tabWidth": 2, "ignoreUrls": true, "ignoreComments": false } ], "new-cap": [ "error", { "capIsNewExceptions": [ "Axios", "Immutable.List", "Immutable.OrderedList", "Immutable.Map", "Immutable.OrderedMap", "Immutable.Set", "Immutable.OrderedSet", "List", "OrderedList", "Map", "OrderedMap", "Seq", "Set", "OrderedSet", "SortableContainer", "SortableElement" ] } ], "padded-blocks": "off", "prefer-destructuring": "warn", "space-before-function-paren": [ "error", { "anonymous": "never", "named": "never", "asyncArrow": "always" } ], "flowtype/define-flow-type": "error", "flowtype/space-after-type-colon": ["error", "never"], "flowtype/space-before-type-colon": "off", "flowtype/no-types-missing-file-annotation": "warn", "import/no-extraneous-dependencies": [ "error", { "devDependencies": [ "config/**", "src/utils/testing/**", "**/*.test.js" ] } ], "import/order": [ "warn", { "groups": ["builtin", "external", "internal", ["parent", "sibling"], "index"] } ], "import/prefer-default-export": "warn", "jest/no-disabled-tests": "error", "jest/no-focused-tests": "error", "jest/no-identical-title": "error", "jest/prefer-to-have-length": "warn", "jest/valid-expect": "error", "jsx-a11y/href-no-hash": "off", "react-hooks/exhaustive-deps": "warn", "react-hooks/rules-of-hooks": "error", "react/default-props-match-prop-types": [ "error", { "allowRequiredDefaults": true } ], "react/forbid-prop-types": "warn", "react/jsx-closing-bracket-location": [ "error", { "selfClosing": "after-props", "nonEmpty": "after-props" } ], "react/jsx-filename-extension": [ "warn", { "extensions": [".js", ".jsx"] } ], "react/jsx-indent-props": ["error", 4], "react/jsx-one-expression-per-line": "warn", "react/no-did-update-set-state": "warn", "react/prefer-stateless-function": "warn", "react/prop-types": "warn", "react/require-default-props": [ "error", { "forbidDefaultForRequired": false } ], "react/sort-comp": "off", "react/state-in-constructor": ["warn", "always"], "react/static-property-placement": ["error", "static public field"] } }