-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Description
Purpose
I recently update the package eslint-import-resolver-webpack
to version 0.13.5
. After some tests, it appears this upgrade introduces severe performance issues.
# With version 0.13.4
eslint . 'js/**/*.ts?(x)'
✨ Done in 22.21s.
# With version 0.13.5
eslint . 'js/**/*.ts?(x)'
✨ Done in 79.86s.
Resources
My eslint configuration
{ "env": { "browser": true, "jest": true, "es6": true, "node": true }, "globals": {}, "parser": "/openfun/richie/src/frontend/node_modules/@typescript-eslint/parser/dist/index.js", "parserOptions": { "project": "./tsconfig.json", "ecmaFeatures": { "jsx": true, "generators": false, "objectLiteralDuplicateProperties": false }, "ecmaVersion": 2018, "sourceType": "module" }, "plugins": [ "import", "react", "jsx-a11y", "compat", "prettier", "storybook", "@typescript-eslint", "formatjs" ], "rules": { "@typescript-eslint/explicit-member-accessibility": [ "error", { "accessibility": "no-public" } ], "@typescript-eslint/lines-between-class-members": [ "off", "always", { "exceptAfterSingleLine": false, "exceptAfterOverload": true } ], "@typescript-eslint/no-use-before-define": [ "off", { "functions": true, "classes": true, "variables": true } ], "arrow-parens": [ "error", "always" ], "consistent-return": [ "off" ], "default-case": [ "off", { "commentPattern": "^no default$" } ], "formatjs/no-multiple-whitespaces": [ "error" ], "formatjs/enforce-description": [ "error" ], "formatjs/enforce-default-message": [ "error" ], "global-require": [ "off" ], "import/extensions": [ "off", "ignorePackages", { "js": "never", "mjs": "never", "jsx": "never", "ts": "never", "tsx": "never" } ], "import/no-cycle": [ "off", { "maxDepth": "∞", "ignoreExternal": false, "allowUnsafeDynamicCyclicDependency": false } ], "import/no-dynamic-require": [ "off" ], "import/order": [ "error", { "groups": [ "builtin", "external", "internal", "parent", "sibling", "index" ], "alphabetize": { "order": "ignore", "caseInsensitive": false, "orderImportKind": "ignore" }, "distinctGroup": true, "warnOnUnassignedImports": false } ], "import/prefer-default-export": [ "off" ], "jsx-a11y/click-events-have-key-events": [ "off" ], "jsx-a11y/label-has-associated-control": [ "warn", { "labelComponents": [], "labelAttributes": [], "controlComponents": [], "assert": "both", "depth": 25 } ], "no-console": [ "error", { "allow": [ "warn" ] } ], "no-else-return": [ "off", { "allowElseIf": false } ], "no-empty-function": [ "off", { "allow": [ "arrowFunctions", "functions", "methods" ] } ], "no-nested-ternary": [ "warn" ], "no-param-reassign": [ "off", { "props": true, "ignorePropertyModificationsFor": [ "acc", "accumulator", "e", "ctx", "context", "req", "request", "res", "response", "$scope", "staticContext" ] } ], "no-plusplus": [ "off" ], "no-promise-executor-return": [ "off" ], "no-prototype-builtins": [ "off" ], "no-return-assign": [ "off", "always" ], "no-return-await": [ "off" ], "no-undef": [ "off" ], "no-underscore-dangle": [ "off", { "allow": [ "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__" ], "allowAfterThis": false, "allowAfterSuper": false, "enforceInMethodNames": true, "allowAfterThisConstructor": false, "allowFunctionParams": true, "enforceInClassFields": false, "allowInArrayDestructuring": true, "allowInObjectDestructuring": true } ], "no-useless-escape": [ "off" ], "prefer-template": [ "off" ], "react/button-has-type": [ "off", { "button": true, "submit": true, "reset": false } ], "react/destructuring-assignment": [ "off", "always" ], "react/function-component-definition": [ "error", { "namedComponents": "arrow-function", "unnamedComponents": "arrow-function" } ], "react/jsx-boolean-value": [ "off", "never", { "always": [] } ], "react/jsx-fragments": [ "off", "syntax" ], "react/jsx-props-no-spreading": [ "off", { "html": "enforce", "custom": "enforce", "explicitSpread": "ignore", "exceptions": [] } ], "react/jsx-uses-react": [ "off" ], "react/no-array-index-key": [ "warn" ], "react/prop-types": [ "off", { "ignore": [], "customValidators": [], "skipUndeclared": false } ], "react/react-in-jsx-scope": [ "off" ], "react/require-default-props": [ "off", { "forbidDefaultForRequired": true } ], "react/style-prop-object": [ "error", { "allow": [ "FormattedNumber" ] } ], "prettier/prettier": [ "error" ], "arrow-body-style": [ "off", "as-needed", { "requireReturnForObjectLiteral": false } ], "prefer-arrow-callback": [ "off", { "allowNamedFunctions": false, "allowUnboundThis": true } ], "curly": [ 0, "multi-line" ], "lines-around-comment": [ 0 ], "max-len": [ 0, 100, 2, { "ignoreUrls": true, "ignoreComments": false, "ignoreRegExpLiterals": true, "ignoreStrings": true, "ignoreTemplateLiterals": true } ], "no-confusing-arrow": [ 0, { "allowParens": true, "onlyOneSimpleParam": false } ], "no-mixed-operators": [ 0, { "groups": [ [ "%", "**" ], [ "%", "+" ], [ "%", "-" ], [ "%", "*" ], [ "%", "/" ], [ "/", "*" ], [ "&", "|", "<<", ">>", ">>>" ], [ "==", "!=", "===", "!==" ], [ "&&", "||" ] ], "allowSamePrecedence": false } ], "no-tabs": [ 0 ], "no-unexpected-multiline": [ 0 ], "quotes": [ 0, "single", { "avoidEscape": true } ], "@typescript-eslint/lines-around-comment": [ 0 ], "@typescript-eslint/quotes": [ 0, "single", { "avoidEscape": true } ], "babel/quotes": [ 0 ], "vue/html-self-closing": [ 0 ], "vue/max-len": [ 0 ], "array-bracket-newline": [ "off", "consistent" ], "array-bracket-spacing": [ "off", "never" ], "array-element-newline": [ "off", { "multiline": true, "minItems": 3 } ], "arrow-spacing": [ "off", { "before": true, "after": true } ], "block-spacing": [ "off", "always" ], "brace-style": [ "off", "1tbs", { "allowSingleLine": true } ], "comma-dangle": [ "off", { "arrays": "always-multiline", "objects": "always-multiline", "imports": "always-multiline", "exports": "always-multiline", "functions": "always-multiline" } ], "comma-spacing": [ "off", { "before": false, "after": true } ], "comma-style": [ "off", "last", { "exceptions": { "ArrayExpression": false, "ArrayPattern": false, "ArrowFunctionExpression": false, "CallExpression": false, "FunctionDeclaration": false, "FunctionExpression": false, "ImportDeclaration": false, "ObjectExpression": false, "ObjectPattern": false, "VariableDeclaration": false, "NewExpression": false } } ], "computed-property-spacing": [ "off", "never" ], "dot-location": [ "off", "property" ], "eol-last": [ "off", "always" ], "func-call-spacing": [ "off", "never" ], "function-call-argument-newline": [ "off", "consistent" ], "function-paren-newline": [ "off", "multiline-arguments" ], "generator-star-spacing": [ "off", { "before": false, "after": true } ], "implicit-arrow-linebreak": [ "off", "beside" ], "indent": [ "off", 2, { "SwitchCase": 1, "VariableDeclarator": 1, "outerIIFEBody": 1, "FunctionDeclaration": { "parameters": 1, "body": 1 }, "FunctionExpression": { "parameters": 1, "body": 1 }, "CallExpression": { "arguments": 1 }, "ArrayExpression": 1, "ObjectExpression": 1, "ImportDeclaration": 1, "flatTernaryExpressions": false, "ignoredNodes": [ "JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXFragment", "JSXOpeningFragment", "JSXClosingFragment", "JSXText", "JSXEmptyExpression", "JSXSpreadChild" ], "ignoreComments": false, "offsetTernaryExpressions": false } ], "jsx-quotes": [ "off", "prefer-double" ], "key-spacing": [ "off", { "beforeColon": false, "afterColon": true } ], "keyword-spacing": [ "off", { "before": true, "after": true, "overrides": { "return": { "after": true }, "throw": { "after": true }, "case": { "after": true } } } ], "linebreak-style": [ "off", "unix" ], "max-statements-per-line": [ "off", { "max": 1 } ], "multiline-ternary": [ "off", "never" ], "newline-per-chained-call": [ "off", { "ignoreChainWithDepth": 4 } ], "new-parens": [ "off" ], "no-extra-parens": [ "off", "all", { "conditionalAssign": true, "nestedBinaryExpressions": false, "returnAssign": false, "ignoreJSX": "all", "enforceForArrowConditionals": false } ], "no-extra-semi": [ "off" ], "no-floating-decimal": [ "off" ], "no-mixed-spaces-and-tabs": [ "off" ], "no-multi-spaces": [ "off", { "ignoreEOLComments": false } ], "no-multiple-empty-lines": [ "off", { "max": 1, "maxBOF": 0, "maxEOF": 0 } ], "no-trailing-spaces": [ "off", { "skipBlankLines": false, "ignoreComments": false } ], "no-whitespace-before-property": [ "off" ], "nonblock-statement-body-position": [ "off", "beside", { "overrides": {} } ], "object-curly-newline": [ "off", { "ObjectExpression": { "minProperties": 4, "multiline": true, "consistent": true }, "ObjectPattern": { "minProperties": 4, "multiline": true, "consistent": true }, "ImportDeclaration": { "minProperties": 4, "multiline": true, "consistent": true }, "ExportDeclaration": { "minProperties": 4, "multiline": true, "consistent": true } } ], "object-curly-spacing": [ "off", "always" ], "object-property-newline": [ "off", { "allowAllPropertiesOnSameLine": true, "allowMultiplePropertiesPerLine": false } ], "one-var-declaration-per-line": [ "off", "always" ], "operator-linebreak": [ "off", "before", { "overrides": { "=": "none" } } ], "padded-blocks": [ "off", { "blocks": "never", "classes": "never", "switches": "never" }, { "allowSingleLineBlocks": true } ], "quote-props": [ "off", "as-needed", { "keywords": false, "unnecessary": true, "numbers": false } ], "rest-spread-spacing": [ "off", "never" ], "semi": [ "off", "always" ], "semi-spacing": [ "off", { "before": false, "after": true } ], "semi-style": [ "off", "last" ], "space-before-blocks": [ "off" ], "space-before-function-paren": [ "off", { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "space-in-parens": [ "off", "never" ], "space-infix-ops": [ "off" ], "space-unary-ops": [ "off", { "words": true, "nonwords": false, "overrides": {} } ], "switch-colon-spacing": [ "off", { "after": true, "before": false } ], "template-curly-spacing": [ "off" ], "template-tag-spacing": [ "off", "never" ], "wrap-iife": [ "off", "outside", { "functionPrototypeMethods": false } ], "wrap-regex": [ "off" ], "yield-star-spacing": [ "off", "after" ], "@babel/object-curly-spacing": [ "off" ], "@babel/semi": [ "off" ], "@typescript-eslint/block-spacing": [ "off" ], "@typescript-eslint/brace-style": [ "off", "1tbs", { "allowSingleLine": true } ], "@typescript-eslint/comma-dangle": [ "off", { "arrays": "always-multiline", "objects": "always-multiline", "imports": "always-multiline", "exports": "always-multiline", "functions": "always-multiline", "enums": "always-multiline", "generics": "always-multiline", "tuples": "always-multiline" } ], "@typescript-eslint/comma-spacing": [ "off", { "before": false, "after": true } ], "@typescript-eslint/func-call-spacing": [ "off", "never" ], "@typescript-eslint/indent": [ "off", 2, { "SwitchCase": 1, "VariableDeclarator": 1, "outerIIFEBody": 1, "FunctionDeclaration": { "parameters": 1, "body": 1 }, "FunctionExpression": { "parameters": 1, "body": 1 }, "CallExpression": { "arguments": 1 }, "ArrayExpression": 1, "ObjectExpression": 1, "ImportDeclaration": 1, "flatTernaryExpressions": false, "ignoredNodes": [ "JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXFragment", "JSXOpeningFragment", "JSXClosingFragment", "JSXText", "JSXEmptyExpression", "JSXSpreadChild" ], "ignoreComments": false, "offsetTernaryExpressions": false } ], "@typescript-eslint/key-spacing": [ "off" ], "@typescript-eslint/keyword-spacing": [ "off", { "before": true, "after": true, "overrides": { "return": { "after": true }, "throw": { "after": true }, "case": { "after": true } } } ], "@typescript-eslint/member-delimiter-style": [ "off" ], "@typescript-eslint/no-extra-parens": [ "off", "all", { "conditionalAssign": true, "nestedBinaryExpressions": false, "returnAssign": false, "ignoreJSX": "all", "enforceForArrowConditionals": false } ], "@typescript-eslint/no-extra-semi": [ "off" ], "@typescript-eslint/object-curly-spacing": [ "off", "always" ], "@typescript-eslint/semi": [ "off", "always" ], "@typescript-eslint/space-before-blocks": [ "off" ], "@typescript-eslint/space-before-function-paren": [ "off", { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "@typescript-eslint/space-infix-ops": [ "off" ], "@typescript-eslint/type-annotation-spacing": [ "off" ], "babel/object-curly-spacing": [ "off" ], "babel/semi": [ "off" ], "flowtype/boolean-style": [ "off" ], "flowtype/delimiter-dangle": [ "off" ], "flowtype/generic-spacing": [ "off" ], "flowtype/object-type-curly-spacing": [ "off" ], "flowtype/object-type-delimiter": [ "off" ], "flowtype/quotes": [ "off" ], "flowtype/semi": [ "off" ], "flowtype/space-after-type-colon": [ "off" ], "flowtype/space-before-generic-bracket": [ "off" ], "flowtype/space-before-type-colon": [ "off" ], "flowtype/union-intersection-spacing": [ "off" ], "react/jsx-child-element-spacing": [ "off" ], "react/jsx-closing-bracket-location": [ "off", "line-aligned" ], "react/jsx-closing-tag-location": [ "off" ], "react/jsx-curly-newline": [ "off", { "multiline": "consistent", "singleline": "consistent" } ], "react/jsx-curly-spacing": [ "off", "never", { "allowMultiline": true } ], "react/jsx-equals-spacing": [ "off", "never" ], "react/jsx-first-prop-new-line": [ "off", "multiline-multiprop" ], "react/jsx-indent": [ "off", 2 ], "react/jsx-indent-props": [ "off", 2 ], "react/jsx-max-props-per-line": [ "off", { "maximum": 1, "when": "multiline" } ], "react/jsx-newline": [ "off" ], "react/jsx-one-expression-per-line": [ "off", { "allow": "single-child" } ], "react/jsx-props-no-multi-spaces": [ "off" ], "react/jsx-tag-spacing": [ "off", { "closingSlash": "never", "beforeSelfClosing": "always", "afterOpening": "never", "beforeClosing": "never" } ], "react/jsx-wrap-multilines": [ "off", { "declaration": "parens-new-line", "assignment": "parens-new-line", "return": "parens-new-line", "arrow": "parens-new-line", "condition": "parens-new-line", "logical": "parens-new-line", "prop": "parens-new-line" } ], "standard/array-bracket-even-spacing": [ "off" ], "standard/computed-property-even-spacing": [ "off" ], "standard/object-curly-even-spacing": [ "off" ], "unicorn/empty-brace-spaces": [ "off" ], "unicorn/no-nested-ternary": [ "off" ], "unicorn/number-literal-case": [ "off" ], "vue/array-bracket-newline": [ "off" ], "vue/array-bracket-spacing": [ "off" ], "vue/array-element-newline": [ "off" ], "vue/arrow-spacing": [ "off" ], "vue/block-spacing": [ "off" ], "vue/block-tag-newline": [ "off" ], "vue/brace-style": [ "off" ], "vue/comma-dangle": [ "off" ], "vue/comma-spacing": [ "off" ], "vue/comma-style": [ "off" ], "vue/dot-location": [ "off" ], "vue/func-call-spacing": [ "off" ], "vue/html-closing-bracket-newline": [ "off" ], "vue/html-closing-bracket-spacing": [ "off" ], "vue/html-end-tags": [ "off" ], "vue/html-indent": [ "off" ], "vue/html-quotes": [ "off" ], "vue/key-spacing": [ "off" ], "vue/keyword-spacing": [ "off" ], "vue/max-attributes-per-line": [ "off" ], "vue/multiline-html-element-content-newline": [ "off" ], "vue/multiline-ternary": [ "off" ], "vue/mustache-interpolation-spacing": [ "off" ], "vue/no-extra-parens": [ "off" ], "vue/no-multi-spaces": [ "off" ], "vue/no-spaces-around-equal-signs-in-attribute": [ "off" ], "vue/object-curly-newline": [ "off" ], "vue/object-curly-spacing": [ "off" ], "vue/object-property-newline": [ "off" ], "vue/operator-linebreak": [ "off" ], "vue/quote-props": [ "off" ], "vue/script-indent": [ "off" ], "vue/singleline-html-element-content-newline": [ "off" ], "vue/space-in-parens": [ "off" ], "vue/space-infix-ops": [ "off" ], "vue/space-unary-ops": [ "off" ], "vue/template-curly-spacing": [ "off" ], "generator-star": [ "off" ], "indent-legacy": [ "off" ], "no-arrow-condition": [ "off" ], "no-comma-dangle": [ "off" ], "no-reserved-keys": [ "off" ], "no-space-before-semi": [ "off" ], "no-spaced-func": [ "off" ], "no-wrap-func": [ "off" ], "space-after-function-name": [ "off" ], "space-after-keywords": [ "off" ], "space-before-function-parentheses": [ "off" ], "space-before-keywords": [ "off" ], "space-in-brackets": [ "off" ], "space-return-throw-case": [ "off" ], "space-unary-word-ops": [ "off" ], "react/jsx-space-before-closing": [ "off", "always" ], "compat/compat": [ "error" ], "react/jsx-filename-extension": [ "error", { "extensions": [ ".jsx", ".tsx" ] } ], "camelcase": [ "off", { "properties": "never", "ignoreDestructuring": false, "ignoreImports": false, "ignoreGlobals": false } ], "@typescript-eslint/naming-convention": [ "error", { "selector": "variable", "format": [ "camelCase", "PascalCase", "UPPER_CASE" ] }, { "selector": "function", "format": [ "camelCase", "PascalCase" ] }, { "selector": "typeLike", "format": [ "PascalCase" ] } ], "default-param-last": [ "off" ], "@typescript-eslint/default-param-last": [ "error" ], "dot-notation": [ "off", { "allowKeywords": true, "allowPattern": "", "allowPrivateClassPropertyAccess": false, "allowProtectedClassPropertyAccess": false, "allowIndexSignaturePropertyAccess": false } ], "@typescript-eslint/dot-notation": [ "error", { "allowKeywords": true, "allowPattern": "", "allowPrivateClassPropertyAccess": false, "allowProtectedClassPropertyAccess": false, "allowIndexSignaturePropertyAccess": false } ], "lines-between-class-members": [ "off", "always", { "exceptAfterSingleLine": false, "exceptAfterOverload": true } ], "no-array-constructor": [ "off" ], "@typescript-eslint/no-array-constructor": [ "error" ], "no-dupe-class-members": [ "off" ], "@typescript-eslint/no-dupe-class-members": [ "error" ], "@typescript-eslint/no-empty-function": [ "error", { "allow": [ "arrowFunctions", "functions", "methods" ] } ], "no-implied-eval": [ "off" ], "no-new-func": [ "off" ], "@typescript-eslint/no-implied-eval": [ "error" ], "no-loss-of-precision": [ "off" ], "@typescript-eslint/no-loss-of-precision": [ "error" ], "no-loop-func": [ "off" ], "@typescript-eslint/no-loop-func": [ "error" ], "no-magic-numbers": [ "off", { "ignore": [], "ignoreArrayIndexes": true, "enforceConst": true, "detectObjects": false } ], "@typescript-eslint/no-magic-numbers": [ "off", { "ignore": [], "ignoreArrayIndexes": true, "enforceConst": true, "detectObjects": false } ], "no-redeclare": [ "off" ], "@typescript-eslint/no-redeclare": [ "error" ], "no-shadow": [ "off" ], "@typescript-eslint/no-shadow": [ "error" ], "no-throw-literal": [ "off" ], "@typescript-eslint/no-throw-literal": [ "error" ], "no-unused-expressions": [ "off", { "allowShortCircuit": false, "allowTernary": false, "allowTaggedTemplates": false, "enforceForJSX": false } ], "@typescript-eslint/no-unused-expressions": [ "error", { "allowShortCircuit": false, "allowTernary": false, "allowTaggedTemplates": false, "enforceForJSX": false } ], "no-unused-vars": [ "off", { "vars": "all", "args": "after-used", "ignoreRestSiblings": true } ], "@typescript-eslint/no-unused-vars": [ "error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": true } ], "no-use-before-define": [ "off", { "functions": true, "classes": true, "variables": true } ], "no-useless-constructor": [ "off" ], "@typescript-eslint/no-useless-constructor": [ "error" ], "require-await": [ "off" ], "@typescript-eslint/require-await": [ "off" ], "@typescript-eslint/return-await": [ "error", "in-try-catch" ], "import/no-extraneous-dependencies": [ "error", { "devDependencies": [ "test/**", "tests/**", "spec/**", "**/__tests__/**", "**/__mocks__/**", "test.{js,jsx}", "test.{ts,tsx}", "test-*.{js,jsx}", "test-*.{ts,tsx}", "**/*{.,_}{test,spec}.{js,jsx}", "**/*{.,_}{test,spec}.{ts,tsx}", "**/jest.config.js", "**/jest.config.ts", "**/jest.setup.js", "**/jest.setup.ts", "**/vue.config.js", "**/vue.config.ts", "**/webpack.config.js", "**/webpack.config.ts", "**/webpack.config.*.js", "**/webpack.config.*.ts", "**/rollup.config.js", "**/rollup.config.ts", "**/rollup.config.*.js", "**/rollup.config.*.ts", "**/gulpfile.js", "**/gulpfile.ts", "**/gulpfile.*.js", "**/gulpfile.*.ts", "**/Gruntfile{,.js}", "**/Gruntfile{,.ts}", "**/protractor.conf.js", "**/protractor.conf.ts", "**/protractor.conf.*.js", "**/protractor.conf.*.ts", "**/karma.conf.js", "**/karma.conf.ts", "**/.eslintrc.js", "**/.eslintrc.ts" ], "optionalDependencies": false } ], "jsx-a11y/accessible-emoji": [ "off" ], "jsx-a11y/alt-text": [ "error", { "elements": [ "img", "object", "area", "input[type=\"image\"]" ], "img": [], "object": [], "area": [], "input[type=\"image\"]": [] } ], "jsx-a11y/anchor-has-content": [ "error", { "components": [] } ], "jsx-a11y/anchor-is-valid": [ "error", { "components": [ "Link" ], "specialLink": [ "to" ], "aspects": [ "noHref", "invalidHref", "preferButton" ] } ], "jsx-a11y/aria-activedescendant-has-tabindex": [ "error" ], "jsx-a11y/aria-props": [ "error" ], "jsx-a11y/aria-proptypes": [ "error" ], "jsx-a11y/aria-role": [ "error", { "ignoreNonDOM": false } ], "jsx-a11y/aria-unsupported-elements": [ "error" ], "jsx-a11y/autocomplete-valid": [ "off", { "inputComponents": [] } ], "jsx-a11y/control-has-associated-label": [ "error", { "labelAttributes": [ "label" ], "controlComponents": [], "ignoreElements": [ "audio", "canvas", "embed", "input", "textarea", "tr", "video" ], "ignoreRoles": [ "grid", "listbox", "menu", "menubar", "radiogroup", "row", "tablist", "toolbar", "tree", "treegrid" ], "depth": 5 } ], "jsx-a11y/heading-has-content": [ "error", { "components": [ "" ] } ], "jsx-a11y/html-has-lang": [ "error" ], "jsx-a11y/iframe-has-title": [ "error" ], "jsx-a11y/img-redundant-alt": [ "error" ], "jsx-a11y/interactive-supports-focus": [ "error" ], "jsx-a11y/lang": [ "error" ], "jsx-a11y/media-has-caption": [ "error", { "audio": [], "video": [], "track": [] } ], "jsx-a11y/mouse-events-have-key-events": [ "error" ], "jsx-a11y/no-access-key": [ "error" ], "jsx-a11y/no-autofocus": [ "error", { "ignoreNonDOM": true } ], "jsx-a11y/no-distracting-elements": [ "error", { "elements": [ "marquee", "blink" ] } ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ "error", { "tr": [ "none", "presentation" ] } ], "jsx-a11y/no-noninteractive-element-interactions": [ "error", { "handlers": [ "onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp" ] } ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ "error", { "ul": [ "listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid" ], "ol": [ "listbox", "menu", "menubar", "radiogroup", "tablist", "tree", "treegrid" ], "li": [ "menuitem", "option", "row", "tab", "treeitem" ], "table": [ "grid" ], "td": [ "gridcell" ] } ], "jsx-a11y/no-noninteractive-tabindex": [ "error", { "tags": [], "roles": [ "tabpanel" ] } ], "jsx-a11y/no-onchange": [ "off" ], "jsx-a11y/no-redundant-roles": [ "error" ], "jsx-a11y/no-static-element-interactions": [ "error", { "handlers": [ "onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp" ] } ], "jsx-a11y/role-has-required-aria-props": [ "error" ], "jsx-a11y/role-supports-aria-props": [ "error" ], "jsx-a11y/scope": [ "error" ], "jsx-a11y/tabindex-no-positive": [ "error" ], "jsx-a11y/label-has-for": [ "off", { "components": [], "required": { "every": [ "nesting", "id" ] }, "allowChildren": false } ], "class-methods-use-this": [ "error", { "exceptMethods": [ "render", "getInitialState", "getDefaultProps", "getChildContext", "componentWillMount", "UNSAFE_componentWillMount", "componentDidMount", "componentWillReceiveProps", "UNSAFE_componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "UNSAFE_componentWillUpdate", "componentDidUpdate", "componentWillUnmount", "componentDidCatch", "getSnapshotBeforeUpdate" ], "enforceForClassFields": true } ], "react/display-name": [ "off", { "ignoreTranspilerName": false } ], "react/forbid-prop-types": [ "error", { "forbid": [ "any", "array", "object" ], "checkContextTypes": true, "checkChildContextTypes": true } ], "react/forbid-dom-props": [ "off", { "forbid": [] } ], "react/jsx-handler-names": [ "off", { "eventHandlerPrefix": "handle", "eventHandlerPropPrefix": "on" } ], "react/jsx-key": [ "off" ], "react/jsx-no-bind": [ "error", { "ignoreRefs": true, "allowArrowFunctions": true, "allowFunctions": false, "allowBind": false, "ignoreDOMComponents": true } ], "react/jsx-no-duplicate-props": [ "error", { "ignoreCase": true } ], "react/jsx-no-literals": [ "off", { "noStrings": true } ], "react/jsx-no-undef": [ "error" ], "react/jsx-pascal-case": [ "error", { "allowAllCaps": true, "ignore": [] } ], "react/sort-prop-types": [ "off", { "ignoreCase": true, "callbacksLast": false, "requiredFirst": false, "sortShapeProp": true } ], "react/jsx-sort-prop-types": [ "off" ], "react/jsx-sort-props": [ "off", { "ignoreCase": true, "callbacksLast": false, "shorthandFirst": false, "shorthandLast": false, "noSortAlphabetically": false, "reservedFirst": true } ], "react/jsx-sort-default-props": [ "off", { "ignoreCase": true } ], "react/jsx-uses-vars": [ "error" ], "react/no-danger": [ "warn" ], "react/no-deprecated": [ "error" ], "react/no-did-mount-set-state": [ "off" ], "react/no-did-update-set-state": [ "error" ], "react/no-will-update-set-state": [ "error" ], "react/no-direct-mutation-state": [ "off" ], "react/no-is-mounted": [ "error" ], "react/no-multi-comp": [ "off" ], "react/no-set-state": [ "off" ], "react/no-string-refs": [ "error" ], "react/no-unknown-property": [ "error" ], "react/prefer-es6-class": [ "error", "always" ], "react/prefer-stateless-function": [ "error", { "ignorePureComponents": true } ], "react/require-render-return": [ "error" ], "react/self-closing-comp": [ "error" ], "react/sort-comp": [ "error", { "order": [ "static-variables", "static-methods", "instance-variables", "lifecycle", "/^handle.+$/", "/^on.+$/", "getters", "setters", "/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/", "instance-methods", "everything-else", "rendering" ], "groups": { "lifecycle": [ "displayName", "propTypes", "contextTypes", "childContextTypes", "mixins", "statics", "defaultProps", "constructor", "getDefaultProps", "getInitialState", "state", "getChildContext", "getDerivedStateFromProps", "componentWillMount", "UNSAFE_componentWillMount", "componentDidMount", "componentWillReceiveProps", "UNSAFE_componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "UNSAFE_componentWillUpdate", "getSnapshotBeforeUpdate", "componentDidUpdate", "componentDidCatch", "componentWillUnmount" ], "rendering": [ "/^render.+$/", "render" ] } } ], "react/jsx-no-target-blank": [ "error", { "enforceDynamicLinks": "always", "links": true, "forms": false } ], "react/jsx-no-comment-textnodes": [ "error" ], "react/no-render-return-value": [ "error" ], "react/require-optimization": [ "off", { "allowDecorators": [] } ], "react/no-find-dom-node": [ "error" ], "react/forbid-component-props": [ "off", { "forbid": [] } ], "react/forbid-elements": [ "off", { "forbid": [] } ], "react/no-danger-with-children": [ "error" ], "react/no-unused-prop-types": [ "error", { "customValidators": [], "skipShapeProps": true } ], "react/no-unescaped-entities": [ "error" ], "react/no-children-prop": [ "error" ], "react/forbid-foreign-prop-types": [ "warn", { "allowInPropTypes": true } ], "react/void-dom-elements-no-children": [ "error" ], "react/default-props-match-prop-types": [ "error", { "allowRequiredDefaults": false } ], "react/no-redundant-should-component-update": [ "error" ], "react/no-unused-state": [ "error" ], "react/boolean-prop-naming": [ "off", { "propTypeNames": [ "bool", "mutuallyExclusiveTrueProps" ], "rule": "^(is|has)[A-Z]([A-Za-z0-9]?)+", "message": "" } ], "react/no-typos": [ "error" ], "react/jsx-curly-brace-presence": [ "error", { "props": "never", "children": "never" } ], "react/no-access-state-in-setstate": [ "error" ], "react/no-this-in-sfc": [ "error" ], "react/jsx-max-depth": [ "off" ], "react/no-unsafe": [ "off" ], "react/state-in-constructor": [ "error", "always" ], "react/static-property-placement": [ "error", "property assignment" ], "react/prefer-read-only-props": [ "off" ], "react/jsx-no-script-url": [ "error", [ { "name": "Link", "props": [ "to" ] } ] ], "react/jsx-no-useless-fragment": [ "error" ], "react/no-adjacent-inline-elements": [ "off" ], "react/jsx-no-constructed-context-values": [ "error" ], "react/no-unstable-nested-components": [ "error" ], "react/no-namespace": [ "error" ], "react/prefer-exact-props": [ "error" ], "react/no-arrow-function-lifecycle": [ "error" ], "react/no-invalid-html-attribute": [ "error" ], "react/no-unused-class-component-methods": [ "error" ], "strict": [ "error", "never" ], "import/no-unresolved": [ "error", { "commonjs": true, "caseSensitive": true, "caseSensitiveStrict": false } ], "import/named": [ "error" ], "import/default": [ "off" ], "import/namespace": [ "off" ], "import/export": [ "error" ], "import/no-named-as-default": [ "error" ], "import/no-named-as-default-member": [ "error" ], "import/no-deprecated": [ "off" ], "import/no-mutable-exports": [ "error" ], "import/no-commonjs": [ "off" ], "import/no-amd": [ "error" ], "import/no-nodejs-modules": [ "off" ], "import/first": [ "error" ], "import/imports-first": [ "off" ], "import/no-duplicates": [ "error" ], "import/no-namespace": [ "off" ], "import/newline-after-import": [ "error" ], "import/no-restricted-paths": [ "off" ], "import/max-dependencies": [ "off", { "max": 10 } ], "import/no-absolute-path": [ "error" ], "import/no-internal-modules": [ "off", { "allow": [] } ], "import/unambiguous": [ "off" ], "import/no-webpack-loader-syntax": [ "error" ], "import/no-unassigned-import": [ "off" ], "import/no-named-default": [ "error" ], "import/no-anonymous-default-export": [ "off", { "allowArray": false, "allowArrowFunction": false, "allowAnonymousClass": false, "allowAnonymousFunction": false, "allowLiteral": false, "allowObject": false } ], "import/exports-last": [ "off" ], "import/group-exports": [ "off" ], "import/no-default-export": [ "off" ], "import/no-named-export": [ "off" ], "import/no-self-import": [ "error" ], "import/no-useless-path-segments": [ "error", { "commonjs": true } ], "import/dynamic-import-chunkname": [ "off", { "importFunctions": [], "webpackChunknameFormat": "[0-9a-zA-Z-_/.]+" } ], "import/no-relative-parent-imports": [ "off" ], "import/no-unused-modules": [ "off", { "ignoreExports": [], "missingExports": true, "unusedExports": true } ], "import/no-import-module-exports": [ "error", { "exceptions": [] } ], "import/no-relative-packages": [ "error" ], "constructor-super": [ "error" ], "no-class-assign": [ "error" ], "no-const-assign": [ "error" ], "no-duplicate-imports": [ "off" ], "no-new-symbol": [ "error" ], "no-restricted-exports": [ "error", { "restrictedNamedExports": [ "default", "then" ] } ], "no-restricted-imports": [ "off", { "paths": [], "patterns": [] } ], "no-this-before-super": [ "error" ], "no-useless-computed-key": [ "error" ], "no-useless-rename": [ "error", { "ignoreDestructuring": false, "ignoreImport": false, "ignoreExport": false } ], "no-var": [ "error" ], "object-shorthand": [ "error", "always", { "ignoreConstructors": false, "avoidQuotes": true } ], "prefer-const": [ "error", { "destructuring": "any", "ignoreReadBeforeAssign": true } ], "prefer-destructuring": [ "error", { "VariableDeclarator": { "array": false, "object": true }, "AssignmentExpression": { "array": true, "object": false } }, { "enforceForRenamedProperties": false } ], "prefer-numeric-literals": [ "error" ], "prefer-reflect": [ "off" ], "prefer-rest-params": [ "error" ], "prefer-spread": [ "error" ], "require-yield": [ "error" ], "sort-imports": [ "off", { "ignoreCase": false, "ignoreDeclarationSort": false, "ignoreMemberSort": false, "memberSyntaxSortOrder": [ "none", "all", "multiple", "single" ] } ], "symbol-description": [ "error" ], "init-declarations": [ "off" ], "no-catch-shadow": [ "off" ], "no-delete-var": [ "error" ], "no-label-var": [ "error" ], "no-restricted-globals": [ "error", { "name": "isFinite", "message": "Use Number.isFinite instead https://github.com/airbnb/javascript#standard-library--isfinite" }, { "name": "isNaN", "message": "Use Number.isNaN instead https://github.com/airbnb/javascript#standard-library--isnan" }, "addEventListener", "blur", "close", "closed", "confirm", "defaultStatus", "defaultstatus", "event", "external", "find", "focus", "frameElement", "frames", "history", "innerHeight", "innerWidth", "length", "location", "locationbar", "menubar", "moveBy", "moveTo", "name", "onblur", "onerror", "onfocus", "onload", "onresize", "onunload", "open", "opener", "opera", "outerHeight", "outerWidth", "pageXOffset", "pageYOffset", "parent", "print", "removeEventListener", "resizeBy", "resizeTo", "screen", "screenLeft", "screenTop", "screenX", "screenY", "scroll", "scrollbars", "scrollBy", "scrollTo", "scrollX", "scrollY", "self", "status", "statusbar", "stop", "toolbar", "top" ], "no-shadow-restricted-names": [ "error" ], "no-undef-init": [ "error" ], "no-undefined": [ "off" ], "capitalized-comments": [ "off", "never", { "line": { "ignorePattern": ".*", "ignoreInlineComments": true, "ignoreConsecutiveComments": true }, "block": { "ignorePattern": ".*", "ignoreInlineComments": true, "ignoreConsecutiveComments": true } } ], "consistent-this": [ "off" ], "func-name-matching": [ "off", "always", { "includeCommonJSModuleExports": false, "considerPropertyDescriptor": true } ], "func-names": [ "warn" ], "func-style": [ "off", "expression" ], "id-denylist": [ "off" ], "id-length": [ "off" ], "id-match": [ "off" ], "line-comment-position": [ "off", { "position": "above", "ignorePattern": "", "applyDefaultPatterns": true } ], "lines-around-directive": [ "error", { "before": "always", "after": "always" } ], "max-depth": [ "off", 4 ], "max-lines": [ "off", { "max": 300, "skipBlankLines": true, "skipComments": true } ], "max-lines-per-function": [ "off", { "max": 50, "skipBlankLines": true, "skipComments": true, "IIFEs": true } ], "max-nested-callbacks": [ "off" ], "max-params": [ "off", 3 ], "max-statements": [ "off", 10 ], "multiline-comment-style": [ "off", "starred-block" ], "new-cap": [ "error", { "newIsCap": true, "newIsCapExceptions": [], "capIsNew": false, "capIsNewExceptions": [ "Immutable.Map", "Immutable.Set", "Immutable.List" ], "properties": true } ], "newline-after-var": [ "off" ], "newline-before-return": [ "off" ], "no-bitwise": [ "error" ], "no-continue": [ "error" ], "no-inline-comments": [ "off" ], "no-lonely-if": [ "error" ], "no-multi-assign": [ "error" ], "no-negated-condition": [ "off" ], "no-new-object": [ "error" ], "no-restricted-syntax": [ "error", { "selector": "ForInStatement", "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array." }, { "selector": "ForOfStatement", "message": "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations." }, { "selector": "LabeledStatement", "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand." }, { "selector": "WithStatement", "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize." } ], "no-ternary": [ "off" ], "no-unneeded-ternary": [ "error", { "defaultAssignment": false } ], "one-var": [ "error", "never" ], "operator-assignment": [ "error", "always" ], "padding-line-between-statements": [ "off" ], "prefer-exponentiation-operator": [ "error" ], "prefer-object-spread": [ "error" ], "require-jsdoc": [ "off" ], "sort-keys": [ "off", "asc", { "caseSensitive": false, "natural": true } ], "sort-vars": [ "off" ], "spaced-comment": [ "error", "always", { "line": { "exceptions": [ "-", "+" ], "markers": [ "=", "!", "/" ] }, "block": { "exceptions": [ "-", "+" ], "markers": [ "=", "!", ":", "::" ], "balanced": true } } ], "unicode-bom": [ "error", "never" ], "callback-return": [ "off" ], "handle-callback-err": [ "off" ], "no-buffer-constructor": [ "error" ], "no-mixed-requires": [ "off", false ], "no-new-require": [ "error" ], "no-path-concat": [ "error" ], "no-process-env": [ "off" ], "no-process-exit": [ "off" ], "no-restricted-modules": [ "off" ], "no-sync": [ "off" ], "for-direction": [ "error" ], "getter-return": [ "error", { "allowImplicit": true } ], "no-async-promise-executor": [ "error" ], "no-await-in-loop": [ "error" ], "no-compare-neg-zero": [ "error" ], "no-cond-assign": [ "error", "always" ], "no-constant-condition": [ "warn" ], "no-control-regex": [ "error" ], "no-debugger": [ "error" ], "no-dupe-args": [ "error" ], "no-dupe-else-if": [ "error" ], "no-dupe-keys": [ "error" ], "no-duplicate-case": [ "error" ], "no-empty": [ "error" ], "no-empty-character-class": [ "error" ], "no-ex-assign": [ "error" ], "no-extra-boolean-cast": [ "error" ], "no-func-assign": [ "error" ], "no-import-assign": [ "error" ], "no-inner-declarations": [ "error" ], "no-invalid-regexp": [ "error" ], "no-irregular-whitespace": [ "error" ], "no-misleading-character-class": [ "error" ], "no-obj-calls": [ "error" ], "no-regex-spaces": [ "error" ], "no-setter-return": [ "error" ], "no-sparse-arrays": [ "error" ], "no-template-curly-in-string": [ "error" ], "no-unreachable": [ "error" ], "no-unreachable-loop": [ "error", { "ignore": [] } ], "no-unsafe-finally": [ "error" ], "no-unsafe-negation": [ "error" ], "no-unsafe-optional-chaining": [ "error", { "disallowArithmeticOperators": true } ], "no-unused-private-class-members": [ "off" ], "no-useless-backreference": [ "error" ], "no-negated-in-lhs": [ "off" ], "require-atomic-updates": [ "off" ], "use-isnan": [ "error" ], "valid-jsdoc": [ "off" ], "valid-typeof": [ "error", { "requireStringLiterals": true } ], "accessor-pairs": [ "off" ], "array-callback-return": [ "error", { "allowImplicit": true, "checkForEach": false } ], "block-scoped-var": [ "error" ], "complexity": [ "off", 20 ], "default-case-last": [ "error" ], "eqeqeq": [ "error", "always", { "null": "ignore" } ], "grouped-accessor-pairs": [ "error" ], "guard-for-in": [ "error" ], "max-classes-per-file": [ "error", 1 ], "no-alert": [ "warn" ], "no-caller": [ "error" ], "no-case-declarations": [ "error" ], "no-constructor-return": [ "error" ], "no-div-regex": [ "off" ], "no-empty-pattern": [ "error" ], "no-eq-null": [ "off" ], "no-eval": [ "error" ], "no-extend-native": [ "error" ], "no-extra-bind": [ "error" ], "no-extra-label": [ "error" ], "no-fallthrough": [ "error" ], "no-global-assign": [ "error", { "exceptions": [] } ], "no-native-reassign": [ "off" ], "no-implicit-coercion": [ "off", { "boolean": false, "number": true, "string": true, "allow": [] } ], "no-implicit-globals": [ "off" ], "no-invalid-this": [ "off" ], "no-iterator": [ "error" ], "no-labels": [ "error", { "allowLoop": false, "allowSwitch": false } ], "no-lone-blocks": [ "error" ], "no-multi-str": [ "error" ], "no-new": [ "error" ], "no-new-wrappers": [ "error" ], "no-nonoctal-decimal-escape": [ "error" ], "no-octal": [ "error" ], "no-octal-escape": [ "error" ], "no-proto": [ "error" ], "no-restricted-properties": [ "error", { "object": "arguments", "property": "callee", "message": "arguments.callee is deprecated" }, { "object": "global", "property": "isFinite", "message": "Please use Number.isFinite instead" }, { "object": "self", "property": "isFinite", "message": "Please use Number.isFinite instead" }, { "object": "window", "property": "isFinite", "message": "Please use Number.isFinite instead" }, { "object": "global", "property": "isNaN", "message": "Please use Number.isNaN instead" }, { "object": "self", "property": "isNaN", "message": "Please use Number.isNaN instead" }, { "object": "window", "property": "isNaN", "message": "Please use Number.isNaN instead" }, { "property": "__defineGetter__", "message": "Please use Object.defineProperty instead." }, { "property": "__defineSetter__", "message": "Please use Object.defineProperty instead." }, { "object": "Math", "property": "pow", "message": "Use the exponentiation operator (**) instead." } ], "no-script-url": [ "error" ], "no-self-assign": [ "error", { "props": true } ], "no-self-compare": [ "error" ], "no-sequences": [ "error" ], "no-unmodified-loop-condition": [ "off" ], "no-unused-labels": [ "error" ], "no-useless-call": [ "off" ], "no-useless-catch": [ "error" ], "no-useless-concat": [ "error" ], "no-useless-return": [ "error" ], "no-void": [ "error" ], "no-warning-comments": [ "off", { "terms": [ "todo", "fixme", "xxx" ], "location": "start" } ], "no-with": [ "error" ], "prefer-promise-reject-errors": [ "error", { "allowEmptyReject": true } ], "prefer-named-capture-group": [ "off" ], "prefer-regex-literals": [ "error", { "disallowRedundantWrapping": true } ], "radix": [ "error" ], "require-unicode-regexp": [ "off" ], "vars-on-top": [ "error" ], "yoda": [ "error" ] }, "settings": { "polyfills": [ "fetch", "Promise" ], "import/resolver": { "webpack": {}, "node": { "extensions": [ ".js", ".cjs", ".jsx", ".json", ".ts", ".tsx", ".d.ts" ] } }, "import/parsers": { "@typescript-eslint/parser": [ ".ts", ".tsx", ".d.ts" ] }, "import/extensions": [ ".js", ".mjs", ".jsx", ".ts", ".tsx", ".d.ts" ], "import/external-module-folders": [ "node_modules", "node_modules/@types" ], "react": { "pragma": "React", "version": "detect" }, "propWrapperFunctions": [ "forbidExtraProps", "exact", "Object.freeze" ], "import/core-modules": [], "import/ignore": [ "node_modules", "\\.(coffee|scss|css|less|hbs|svg|json)$" ] }, "ignorePatterns": [ "node_modules" ] }