jsx-eslint / eslint-plugin-react

React-specific linting rules for ESLint
MIT License
8.97k stars 2.77k forks source link

Warning: React version not specified in eslint-plugin-react settings #2128

Closed idahogurl closed 5 years ago

idahogurl commented 5 years ago

I am using the airbnb configuration and "settings" => "react" => "version" is set to 16 in their configuration file.

Packages "eslint": "^5.12.0", "eslint-config-airbnb": "^17.1.0", "eslint-plugin-import": "^2.14.0", "eslint-plugin-jsx-a11y": "^6.1.2", "eslint-plugin-react": "^7.12.3",

.eslintrc Configuration

{
  "root": true,
  "extends": "airbnb",
  "globals": {
    "window": true
  },
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaVersion": 2018,
    "ecmaFeatures": {
      "jsx": true,
      "modules": true
    }
  },
  "plugins": ["react"],
  "rules": {
    "brace-style": [
      "error",
      "1tbs",
      {
        "allowSingleLine": false
      }
    ],
    "consistent-return": "off",
    "curly": ["error", "all"],
    "import/extensions": "off",
    "import/no-extraneous-dependencies": "off",
    "import/no-unresolved": "off",
    "import/prefer-default-export": "off",
    "import/no-mutable-exports": "off",
    "max-len": "off",
    "no-await-in-loop": "error",
    "no-compare-neg-zero": "error",
    "no-confusing-arrow": "off",
    "no-mixed-operators": "off",
    "no-multi-assign": "off",
    "no-plusplus": "off",
    "no-use-before-define": ["error", { "functions": false, "classes": true }],
    "nonblock-statement-body-position": "error",
    "operator-linebreak": [
      "error",
      "before",
      {
        "overrides": {
          "+=": "after",
          "=": "after"
        }
      }
    ],
    "prefer-arrow-callback": [
      "error",
      {
        "allowNamedFunctions": true,
        "allowUnboundThis": true
      }
    ],
    "prefer-destructuring": "off",
    "prefer-promise-reject-errors": "error",
    "react/jsx-sort-props": "off",
    "react/sort-comp": "off",
    "react/prop-types": ["error", { "skipUndeclared": true }],
    "react/forbid-prop-types": "off",
    "react/jsx-filename-extension": [
      "error",
      {
        "extensions": [".js", ".jsx"]
      }
    ],
    "react/no-array-index-key": "off",
    "react/no-danger": "off",
    "react/prefer-stateless-function": "off",
    "react/react-in-jsx-scope": "off",
    "react/require-default-props": "off",
    "template-tag-spacing": "error"
  },
  "overrides": [
    {
      "files": ["**/__tests__/**/*.js", "**/__mocks__/**/*.js"],
      "env": {
        "jest": true
      },

      "globals": {
        "page": true,
        "browser": true,
        "context": true,
        "jestPuppeteer": true
      }
    },
    {
      "files": [
        "autotest/**/**/*.js"
      ],
      "rules": {
        "no-underscore-dangle": "off"
      }
    },
    {
      "files": ["server/**"],
      "rules": {
        "no-restricted-syntax": [
          "error",
          "ForInStatement",
          "LabeledStatement",
          "WithStatement"
        ]
      }
    }
  ]
}

Expected: Warning should not show

Actual: Warning remains

ljharb commented 5 years ago

Indeed, I'd expect that to be set. What's the output of npx eslint --print-config path/to/some/JS/file?

idahogurl commented 5 years ago
```json { "globals": { "__dirname": false, "__filename": false, "Buffer": false, "clearImmediate": false, "clearInterval": false, "clearTimeout": false, "console": false, "exports": true, "global": false, "Intl": false, "module": false, "process": false, "require": false, "setImmediate": false, "setInterval": false, "setTimeout": false, "Array": false, "ArrayBuffer": false, "Boolean": false, "constructor": false, "DataView": false, "Date": false, "decodeURI": false, "decodeURIComponent": false, "encodeURI": false, "encodeURIComponent": false, "Error": false, "escape": false, "eval": false, "EvalError": false, "Float32Array": false, "Float64Array": false, "Function": false, "hasOwnProperty": false, "Infinity": false, "Int16Array": false, "Int32Array": false, "Int8Array": false, "isFinite": false, "isNaN": false, "isPrototypeOf": false, "JSON": false, "Map": false, "Math": false, "NaN": false, "Number": false, "Object": false, "parseFloat": false, "parseInt": false, "Promise": false, "propertyIsEnumerable": false, "Proxy": false, "RangeError": false, "ReferenceError": false, "Reflect": false, "RegExp": false, "Set": false, "String": false, "Symbol": false, "SyntaxError": false, "toLocaleString": false, "toString": false, "TypeError": false, "Uint16Array": false, "Uint32Array": false, "Uint8Array": false, "Uint8ClampedArray": false, "undefined": false, "unescape": false, "URIError": false, "valueOf": false, "WeakMap": false, "WeakSet": false, "window": true }, "env": { "node": true, "es6": true }, "rules": { "accessor-pairs": "off", "array-callback-return": [ "error", { "allowImplicit": true } ], "block-scoped-var": "error", "complexity": [ "off", 11 ], "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" ] } ], "consistent-return": "off", "curly": [ "error", "all" ], "default-case": [ "error", { "commentPattern": "^no default$" } ], "dot-notation": [ "error", { "allowKeywords": true } ], "dot-location": [ "error", "property" ], "eqeqeq": [ "error", "always", { "null": "ignore" } ], "guard-for-in": "error", "max-classes-per-file": [ "off", 1 ], "no-alert": "warn", "no-caller": "error", "no-case-declarations": "error", "no-div-regex": "off", "no-else-return": [ "error", { "allowElseIf": false } ], "no-empty-function": [ "error", { "allow": [ "arrowFunctions", "functions", "methods" ] } ], "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-floating-decimal": "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-implied-eval": "error", "no-invalid-this": "off", "no-iterator": "error", "no-labels": [ "error", { "allowLoop": false, "allowSwitch": false } ], "no-lone-blocks": "error", "no-loop-func": "error", "no-magic-numbers": [ "off", { "ignore": [], "ignoreArrayIndexes": true, "enforceConst": true, "detectObjects": false } ], "no-multi-spaces": [ "error", { "ignoreEOLComments": false } ], "no-multi-str": "error", "no-new": "error", "no-new-func": "error", "no-new-wrappers": "error", "no-octal": "error", "no-octal-escape": "error", "no-param-reassign": [ "error", { "props": true, "ignorePropertyModificationsFor": [ "acc", "accumulator", "e", "ctx", "req", "request", "res", "response", "$scope" ] } ], "no-proto": "error", "no-redeclare": "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-return-assign": [ "error", "always" ], "no-return-await": "error", "no-script-url": "error", "no-self-assign": [ "error", { "props": false } ], "no-self-compare": "error", "no-sequences": "error", "no-throw-literal": "error", "no-unmodified-loop-condition": "off", "no-unused-expressions": [ "error", { "allowShortCircuit": false, "allowTernary": false, "allowTaggedTemplates": false } ], "no-unused-labels": "error", "no-useless-call": "off", "no-useless-concat": "error", "no-useless-escape": "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 } ], "radix": "error", "require-await": "off", "require-unicode-regexp": "off", "vars-on-top": "error", "wrap-iife": [ "error", "outside", { "functionPrototypeMethods": false } ], "yoda": "error", "for-direction": "error", "getter-return": [ "error", { "allowImplicit": true } ], "no-async-promise-executor": "off", "no-await-in-loop": "error", "no-compare-neg-zero": "error", "no-cond-assign": [ "error", "always" ], "no-console": "warn", "no-constant-condition": "warn", "no-control-regex": "error", "no-debugger": "error", "no-dupe-args": "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-extra-parens": [ "off", "all", { "conditionalAssign": true, "nestedBinaryExpressions": false, "returnAssign": false, "ignoreJSX": "all", "enforceForArrowConditionals": false } ], "no-extra-semi": "error", "no-func-assign": "error", "no-inner-declarations": "error", "no-invalid-regexp": "error", "no-irregular-whitespace": "error", "no-misleading-character-class": "off", "no-obj-calls": "error", "no-prototype-builtins": "error", "no-regex-spaces": "error", "no-sparse-arrays": "error", "no-template-curly-in-string": "error", "no-unexpected-multiline": "error", "no-unreachable": "error", "no-unsafe-finally": "error", "no-unsafe-negation": "error", "no-negated-in-lhs": "off", "require-atomic-updates": "off", "use-isnan": "error", "valid-jsdoc": "off", "valid-typeof": [ "error", { "requireStringLiterals": true } ], "callback-return": "off", "global-require": "error", "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", "array-bracket-newline": [ "off", "consistent" ], "array-element-newline": [ "off", { "multiline": true, "minItems": 3 } ], "array-bracket-spacing": [ "error", "never" ], "block-spacing": [ "error", "always" ], "brace-style": [ "error", "1tbs", { "allowSingleLine": false } ], "camelcase": [ "error", { "properties": "never" } ], "capitalized-comments": [ "off", "never", { "line": { "ignorePattern": ".*", "ignoreInlineComments": true, "ignoreConsecutiveComments": true }, "block": { "ignorePattern": ".*", "ignoreInlineComments": true, "ignoreConsecutiveComments": true } } ], "comma-dangle": [ "error", { "arrays": "always-multiline", "objects": "always-multiline", "imports": "always-multiline", "exports": "always-multiline", "functions": "always-multiline" } ], "comma-spacing": [ "error", { "before": false, "after": true } ], "comma-style": [ "error", "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": [ "error", "never" ], "consistent-this": "off", "eol-last": [ "error", "always" ], "func-call-spacing": [ "error", "never" ], "func-name-matching": [ "off", "always", { "includeCommonJSModuleExports": false } ], "func-names": "warn", "func-style": [ "off", "expression" ], "function-paren-newline": [ "error", "consistent" ], "id-blacklist": "off", "id-length": "off", "id-match": "off", "implicit-arrow-linebreak": [ "error", "beside" ], "indent": [ "error", 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", "JSXText", "JSXEmptyExpression", "JSXSpreadChild" ], "ignoreComments": false } ], "jsx-quotes": [ "error", "prefer-double" ], "key-spacing": [ "error", { "beforeColon": false, "afterColon": true } ], "keyword-spacing": [ "error", { "before": true, "after": true, "overrides": { "return": { "after": true }, "throw": { "after": true }, "case": { "after": true } } } ], "line-comment-position": [ "off", { "position": "above", "ignorePattern": "", "applyDefaultPatterns": true } ], "linebreak-style": [ "error", "unix" ], "lines-between-class-members": [ "error", "always", { "exceptAfterSingleLine": false } ], "lines-around-comment": "off", "lines-around-directive": [ "error", { "before": "always", "after": "always" } ], "max-depth": [ "off", 4 ], "max-len": [ "off", 100, 2, { "ignoreUrls": true, "ignoreComments": false, "ignoreRegExpLiterals": true, "ignoreStrings": true, "ignoreTemplateLiterals": true } ], "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 ], "max-statements-per-line": [ "off", { "max": 1 } ], "multiline-comment-style": [ "off", "starred-block" ], "multiline-ternary": [ "off", "never" ], "new-cap": [ "error", { "newIsCap": true, "newIsCapExceptions": [], "capIsNew": false, "capIsNewExceptions": [ "Immutable.Map", "Immutable.Set", "Immutable.List" ] } ], "new-parens": "error", "newline-after-var": "off", "newline-before-return": "off", "newline-per-chained-call": [ "error", { "ignoreChainWithDepth": 4 } ], "no-array-constructor": "error", "no-bitwise": "error", "no-continue": "error", "no-inline-comments": "off", "no-lonely-if": "error", "no-mixed-operators": [ "off", { "groups": [ [ "%", "**" ], [ "%", "+" ], [ "%", "-" ], [ "%", "*" ], [ "%", "/" ], [ "**", "+" ], [ "**", "-" ], [ "**", "*" ], [ "**", "/" ], [ "&", "|", "^", "~", "<<", ">>", ">>>" ], [ "==", "!=", "===", "!==", ">", ">=", "<", "<=" ], [ "&&", "||" ], [ "in", "instanceof" ] ], "allowSamePrecedence": false } ], "no-mixed-spaces-and-tabs": "error", "no-multi-assign": [ "off" ], "no-multiple-empty-lines": [ "error", { "max": 2, "maxEOF": 0 } ], "no-negated-condition": "off", "no-nested-ternary": "error", "no-new-object": "error", "no-plusplus": "off", "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-spaced-func": "error", "no-tabs": "error", "no-ternary": "off", "no-trailing-spaces": [ "error", { "skipBlankLines": false, "ignoreComments": false } ], "no-underscore-dangle": [ "error", { "allow": [], "allowAfterThis": false, "allowAfterSuper": false, "enforceInMethodNames": false } ], "no-unneeded-ternary": [ "error", { "defaultAssignment": false } ], "no-whitespace-before-property": "error", "nonblock-statement-body-position": [ "error", "beside", { "overrides": {} } ], "object-curly-spacing": [ "error", "always" ], "object-curly-newline": [ "error", { "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-property-newline": [ "error", { "allowAllPropertiesOnSameLine": true } ], "one-var": [ "error", "never" ], "one-var-declaration-per-line": [ "error", "always" ], "operator-assignment": [ "error", "always" ], "operator-linebreak": [ "error", "before", { "overrides": { "+=": "after", "=": "after" } } ], "padded-blocks": [ "error", { "blocks": "never", "classes": "never", "switches": "never" } ], "padding-line-between-statements": "off", "prefer-object-spread": "off", "quote-props": [ "error", "as-needed", { "keywords": false, "unnecessary": true, "numbers": false } ], "quotes": [ "error", "single", { "avoidEscape": true } ], "require-jsdoc": "off", "semi": [ "error", "always" ], "semi-spacing": [ "error", { "before": false, "after": true } ], "semi-style": [ "error", "last" ], "sort-keys": [ "off", "asc", { "caseSensitive": false, "natural": true } ], "sort-vars": "off", "space-before-blocks": "error", "space-before-function-paren": [ "error", { "anonymous": "always", "named": "never", "asyncArrow": "always" } ], "space-in-parens": [ "error", "never" ], "space-infix-ops": "error", "space-unary-ops": [ "error", { "words": true, "nonwords": false, "overrides": {} } ], "spaced-comment": [ "error", "always", { "line": { "exceptions": [ "-", "+" ], "markers": [ "=", "!" ] }, "block": { "exceptions": [ "-", "+" ], "markers": [ "=", "!" ], "balanced": true } } ], "switch-colon-spacing": [ "error", { "after": true, "before": false } ], "template-tag-spacing": [ "error", "never" ], "unicode-bom": [ "error", "never" ], "wrap-regex": "off", "init-declarations": "off", "no-catch-shadow": "off", "no-delete-var": "error", "no-label-var": "error", "no-restricted-globals": [ "error", "isFinite", "isNaN", "addEventListener", "blur", "close", "closed", "confirm", "defaultStatus", "event", "external", "defaultstatus", "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": "error", "no-shadow-restricted-names": "error", "no-undef": "error", "no-undef-init": "error", "no-undefined": "off", "no-unused-vars": [ "error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": true } ], "no-use-before-define": [ "error", { "functions": false, "classes": true } ], "arrow-body-style": [ "error", "as-needed", { "requireReturnForObjectLiteral": false } ], "arrow-parens": [ "error", "as-needed", { "requireForBlockBody": true } ], "arrow-spacing": [ "error", { "before": true, "after": true } ], "constructor-super": "error", "generator-star-spacing": [ "error", { "before": false, "after": true } ], "no-class-assign": "error", "no-confusing-arrow": [ "off", { "allowParens": true } ], "no-const-assign": "error", "no-dupe-class-members": "error", "no-duplicate-imports": "off", "no-new-symbol": "error", "no-restricted-imports": [ "off", { "paths": [], "patterns": [] } ], "no-this-before-super": "error", "no-useless-computed-key": "error", "no-useless-constructor": "error", "no-useless-rename": [ "error", { "ignoreDestructuring": false, "ignoreImport": false, "ignoreExport": false } ], "no-var": "error", "object-shorthand": [ "error", "always", { "ignoreConstructors": false, "avoidQuotes": true } ], "prefer-arrow-callback": [ "error", { "allowNamedFunctions": true, "allowUnboundThis": true } ], "prefer-const": [ "error", { "destructuring": "any", "ignoreReadBeforeAssign": true } ], "prefer-destructuring": [ "off", { "VariableDeclarator": { "array": false, "object": true }, "AssignmentExpression": { "array": true, "object": true } }, { "enforceForRenamedProperties": false } ], "prefer-numeric-literals": "error", "prefer-reflect": "off", "prefer-rest-params": "error", "prefer-spread": "error", "prefer-template": "error", "require-yield": "error", "rest-spread-spacing": [ "error", "never" ], "sort-imports": [ "off", { "ignoreCase": false, "ignoreMemberSort": false, "memberSyntaxSortOrder": [ "none", "all", "multiple", "single" ] } ], "symbol-description": "error", "template-curly-spacing": "error", "yield-star-spacing": [ "error", "after" ], "import/no-unresolved": [ "off", { "commonjs": true, "caseSensitive": true } ], "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-extraneous-dependencies": [ "off", { "devDependencies": [ "test/**", "tests/**", "spec/**", "**/__tests__/**", "**/__mocks__/**", "test.{js,jsx}", "test-*.{js,jsx}", "**/*{.,_}{test,spec}.{js,jsx}", "**/jest.config.js", "**/vue.config.js", "**/webpack.config.js", "**/webpack.config.*.js", "**/rollup.config.js", "**/rollup.config.*.js", "**/gulpfile.js", "**/gulpfile.*.js", "**/Gruntfile{,.js}", "**/protractor.conf.js", "**/protractor.conf.*.js" ], "optionalDependencies": false } ], "import/no-mutable-exports": "off", "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/extensions": [ "off", "ignorePackages", { "js": "never", "mjs": "never", "jsx": "never" } ], "import/order": [ "error", { "groups": [ [ "builtin", "external", "internal" ] ] } ], "import/newline-after-import": "error", "import/prefer-default-export": "off", "import/no-restricted-paths": "off", "import/max-dependencies": [ "off", { "max": 10 } ], "import/no-absolute-path": "error", "import/no-dynamic-require": "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-self-import": "error", "import/no-cycle": [ "error", { "maxDepth": null } ], "import/no-useless-path-segments": "error", "import/dynamic-import-chunkname": [ "off", { "importFunctions": [], "webpackChunknameFormat": "[0-9a-zA-Z-_/.]+" } ], "import/no-relative-parent-imports": "off", "strict": [ "error", "never" ], "react/display-name": [ "off", { "ignoreTranspilerName": false } ], "react/forbid-prop-types": [ "off", { "forbid": [ "any", "array", "object" ], "checkContextTypes": true, "checkChildContextTypes": true } ], "react/forbid-dom-props": [ "off", { "forbid": [] } ], "react/jsx-boolean-value": [ "error", "never", { "always": [] } ], "react/jsx-closing-bracket-location": [ "error", "line-aligned" ], "react/jsx-closing-tag-location": "error", "react/jsx-curly-spacing": [ "error", "never", { "allowMultiline": true } ], "react/jsx-handler-names": [ "off", { "eventHandlerPrefix": "handle", "eventHandlerPropPrefix": "on" } ], "react/jsx-indent-props": [ "error", 2 ], "react/jsx-key": "off", "react/jsx-max-props-per-line": [ "error", { "maximum": 1, "when": "multiline" } ], "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-react": [ "error" ], "react/jsx-uses-vars": "error", "react/no-danger": "off", "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": [ "error", { "ignoreStateless": true } ], "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": [ "off", { "ignorePureComponents": true } ], "react/prop-types": [ "error", { "skipUndeclared": true } ], "react/react-in-jsx-scope": "off", "react/require-render-return": "error", "react/self-closing-comp": "error", "react/sort-comp": [ "off", { "order": [ "static-methods", "instance-variables", "lifecycle", "/^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", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "componentWillUnmount" ], "rendering": [ "/^render.+$/", "render" ] } } ], "react/jsx-wrap-multilines": [ "error", { "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" } ], "react/jsx-first-prop-new-line": [ "error", "multiline-multiprop" ], "react/jsx-equals-spacing": [ "error", "never" ], "react/jsx-indent": [ "error", 2 ], "react/jsx-no-target-blank": [ "error", { "enforceDynamicLinks": "always" } ], "react/jsx-filename-extension": [ "error", { "extensions": [ ".js", ".jsx" ] } ], "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/style-prop-object": "error", "react/no-unescaped-entities": "error", "react/no-children-prop": "error", "react/jsx-tag-spacing": [ "error", { "closingSlash": "never", "beforeSelfClosing": "always", "afterOpening": "never", "beforeClosing": "never" } ], "react/jsx-space-before-closing": [ "off", "always" ], "react/no-array-index-key": "off", "react/require-default-props": [ "off", { "forbidDefaultForRequired": true } ], "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/jsx-one-expression-per-line": [ "error", { "allow": "single-child" } ], "react/destructuring-assignment": [ "error", "always" ], "react/no-access-state-in-setstate": "error", "react/button-has-type": [ "error", { "button": true, "submit": true, "reset": false } ], "react/jsx-child-element-spacing": "off", "react/no-this-in-sfc": "error", "react/jsx-max-depth": "off", "react/jsx-props-no-multi-spaces": "error", "react/no-unsafe": "off", "jsx-a11y/anchor-has-content": [ "error", { "components": [] } ], "jsx-a11y/aria-role": [ "error", { "ignoreNonDom": false } ], "jsx-a11y/aria-props": "error", "jsx-a11y/aria-proptypes": "error", "jsx-a11y/aria-unsupported-elements": "error", "jsx-a11y/alt-text": [ "error", { "elements": [ "img", "object", "area", "input[type=\"image\"]" ], "img": [], "object": [], "area": [], "input[type=\"image\"]": [] } ], "jsx-a11y/img-redundant-alt": "error", "jsx-a11y/label-has-for": [ "error", { "components": [], "required": { "every": [ "nesting", "id" ] }, "allowChildren": false } ], "jsx-a11y/label-has-associated-control": [ "error", { "labelComponents": [], "labelAttributes": [], "controlComponents": [], "assert": "both", "depth": 25 } ], "jsx-a11y/mouse-events-have-key-events": "error", "jsx-a11y/no-access-key": "error", "jsx-a11y/no-onchange": "off", "jsx-a11y/interactive-supports-focus": "error", "jsx-a11y/role-has-required-aria-props": "error", "jsx-a11y/role-supports-aria-props": "error", "jsx-a11y/tabindex-no-positive": "error", "jsx-a11y/heading-has-content": [ "error", { "components": [ "" ] } ], "jsx-a11y/html-has-lang": "error", "jsx-a11y/lang": "error", "jsx-a11y/no-distracting-elements": [ "error", { "elements": [ "marquee", "blink" ] } ], "jsx-a11y/scope": "error", "jsx-a11y/click-events-have-key-events": "error", "jsx-a11y/no-static-element-interactions": [ "error", { "handlers": [ "onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp" ] } ], "jsx-a11y/no-noninteractive-element-interactions": [ "error", { "handlers": [ "onClick", "onMouseDown", "onMouseUp", "onKeyPress", "onKeyDown", "onKeyUp" ] } ], "jsx-a11y/accessible-emoji": "error", "jsx-a11y/aria-activedescendant-has-tabindex": "error", "jsx-a11y/iframe-has-title": "error", "jsx-a11y/no-autofocus": [ "error", { "ignoreNonDOM": true } ], "jsx-a11y/no-redundant-roles": "error", "jsx-a11y/media-has-caption": [ "error", { "audio": [], "video": [], "track": [] } ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ "error", { "tr": [ "none", "presentation" ] } ], "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/anchor-is-valid": [ "error", { "components": [ "Link" ], "specialLink": [ "to" ], "aspects": [ "noHref", "invalidHref", "preferButton" ] } ] }, "parserOptions": { "ecmaFeatures": { "globalReturn": true, "generators": false, "objectLiteralDuplicateProperties": false, "jsx": true, "experimentalObjectRestSpread": true, "modules": true }, "ecmaVersion": 2018, "sourceType": "module" }, "plugins": [ "import", "react", "jsx-a11y" ], "settings": { "import/resolver": { "node": { "extensions": [ ".js", ".jsx", ".json" ] } }, "import/extensions": [ ".js", ".mjs", ".jsx" ], "import/core-modules": [], "import/ignore": [ "node_modules", "\\.(coffee|scss|css|less|hbs|svg|json)$" ], "react": { "pragma": "React", "version": "16.0" }, "propWrapperFunctions": [ "forbidExtraProps", "exact", "Object.freeze" ] }, "extends": [ "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/best-practices.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/errors.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/node.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/style.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/variables.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/es6.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/imports.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/index.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb-base/rules/strict.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb/rules/react.js", "/Users/vestre/frontend/node_modules/eslint-config-airbnb/rules/react-a11y.js", "airbnb" ], "root": true, "parser": "/Users/vestre/frontend/node_modules/babel-eslint/lib/index.js" } ```
ljharb commented 5 years ago
  "react": {
     "pragma": "React",
     "version": "16.0"
   },

this should definitely be working; I'll look into it.

ljharb commented 5 years ago

I've added some more tests to master, that pass. I'm going to assume this is fixed on master but not yet released; I'll reopen if it's still a problem after publishing the next release.

ljharb commented 5 years ago

v7.12.4 has been released.