UNPKG

eslint-flat-config-airbnb

Version:

A mostly reasonable approach to JavaScript and React using Airbnb's ESLint config, updated for ESLint 9+

528 lines (527 loc) 29.3 kB
export default reactCore; declare namespace reactCore { let plugins: { react: { deprecatedRules: Partial<{ 'boolean-prop-naming': import("eslint").Rule.RuleModule; 'button-has-type': import("eslint").Rule.RuleModule; 'checked-requires-onchange-or-readonly': import("eslint").Rule.RuleModule; 'default-props-match-prop-types': import("eslint").Rule.RuleModule; 'destructuring-assignment': import("eslint").Rule.RuleModule; 'display-name': import("eslint").Rule.RuleModule; 'forbid-component-props': import("eslint").Rule.RuleModule; 'forbid-dom-props': import("eslint").Rule.RuleModule; 'forbid-elements': import("eslint").Rule.RuleModule; 'forbid-foreign-prop-types': import("eslint").Rule.RuleModule; 'forbid-prop-types': import("eslint").Rule.RuleModule; 'forward-ref-uses-ref': import("eslint").Rule.RuleModule; 'function-component-definition': import("eslint").Rule.RuleModule; 'hook-use-state': import("eslint").Rule.RuleModule; 'iframe-missing-sandbox': import("eslint").Rule.RuleModule; 'jsx-boolean-value': import("eslint").Rule.RuleModule; 'jsx-child-element-spacing': import("eslint").Rule.RuleModule; 'jsx-closing-bracket-location': import("eslint").Rule.RuleModule; 'jsx-closing-tag-location': import("eslint").Rule.RuleModule; 'jsx-curly-spacing': import("eslint").Rule.RuleModule; 'jsx-curly-newline': import("eslint").Rule.RuleModule; 'jsx-equals-spacing': import("eslint").Rule.RuleModule; 'jsx-filename-extension': import("eslint").Rule.RuleModule; 'jsx-first-prop-new-line': import("eslint").Rule.RuleModule; 'jsx-handler-names': import("eslint").Rule.RuleModule; 'jsx-indent': import("eslint").Rule.RuleModule; 'jsx-indent-props': import("eslint").Rule.RuleModule; 'jsx-key': import("eslint").Rule.RuleModule; 'jsx-max-depth': import("eslint").Rule.RuleModule; 'jsx-max-props-per-line': import("eslint").Rule.RuleModule; 'jsx-newline': import("eslint").Rule.RuleModule; 'jsx-no-bind': import("eslint").Rule.RuleModule; 'jsx-no-comment-textnodes': import("eslint").Rule.RuleModule; 'jsx-no-constructed-context-values': import("eslint").Rule.RuleModule; 'jsx-no-duplicate-props': import("eslint").Rule.RuleModule; 'jsx-no-leaked-render': import("eslint").Rule.RuleModule; 'jsx-no-literals': import("eslint").Rule.RuleModule; 'jsx-no-script-url': import("eslint").Rule.RuleModule; 'jsx-no-target-blank': import("eslint").Rule.RuleModule; 'jsx-no-useless-fragment': import("eslint").Rule.RuleModule; 'jsx-one-expression-per-line': import("eslint").Rule.RuleModule; 'jsx-no-undef': import("eslint").Rule.RuleModule; 'jsx-curly-brace-presence': import("eslint").Rule.RuleModule; 'jsx-pascal-case': import("eslint").Rule.RuleModule; 'jsx-fragments': import("eslint").Rule.RuleModule; 'jsx-props-no-multi-spaces': import("eslint").Rule.RuleModule; 'jsx-props-no-spreading': import("eslint").Rule.RuleModule; 'jsx-props-no-spread-multi': import("eslint").Rule.RuleModule; 'jsx-sort-default-props': import("eslint").Rule.RuleModule; 'jsx-sort-props': import("eslint").Rule.RuleModule; 'jsx-space-before-closing': import("eslint").Rule.RuleModule; 'jsx-tag-spacing': import("eslint").Rule.RuleModule; 'jsx-uses-react': import("eslint").Rule.RuleModule; 'jsx-uses-vars': import("eslint").Rule.RuleModule; 'jsx-wrap-multilines': import("eslint").Rule.RuleModule; 'no-invalid-html-attribute': import("eslint").Rule.RuleModule; 'no-access-state-in-setstate': import("eslint").Rule.RuleModule; 'no-adjacent-inline-elements': import("eslint").Rule.RuleModule; 'no-array-index-key': import("eslint").Rule.RuleModule; 'no-arrow-function-lifecycle': import("eslint").Rule.RuleModule; 'no-children-prop': import("eslint").Rule.RuleModule; 'no-danger': import("eslint").Rule.RuleModule; 'no-danger-with-children': import("eslint").Rule.RuleModule; 'no-deprecated': import("eslint").Rule.RuleModule; 'no-did-mount-set-state': import("eslint").Rule.RuleModule; 'no-did-update-set-state': import("eslint").Rule.RuleModule; 'no-direct-mutation-state': import("eslint").Rule.RuleModule; 'no-find-dom-node': import("eslint").Rule.RuleModule; 'no-is-mounted': import("eslint").Rule.RuleModule; 'no-multi-comp': import("eslint").Rule.RuleModule; 'no-namespace': import("eslint").Rule.RuleModule; 'no-set-state': import("eslint").Rule.RuleModule; 'no-string-refs': import("eslint").Rule.RuleModule; 'no-redundant-should-component-update': import("eslint").Rule.RuleModule; 'no-render-return-value': import("eslint").Rule.RuleModule; 'no-this-in-sfc': import("eslint").Rule.RuleModule; 'no-typos': import("eslint").Rule.RuleModule; 'no-unescaped-entities': import("eslint").Rule.RuleModule; 'no-unknown-property': import("eslint").Rule.RuleModule; 'no-unsafe': import("eslint").Rule.RuleModule; 'no-unstable-nested-components': import("eslint").Rule.RuleModule; 'no-unused-class-component-methods': import("eslint").Rule.RuleModule; 'no-unused-prop-types': import("eslint").Rule.RuleModule; 'no-unused-state': import("eslint").Rule.RuleModule; 'no-object-type-as-default-prop': import("eslint").Rule.RuleModule; 'no-will-update-set-state': import("eslint").Rule.RuleModule; 'prefer-es6-class': import("eslint").Rule.RuleModule; 'prefer-exact-props': import("eslint").Rule.RuleModule; 'prefer-read-only-props': import("eslint").Rule.RuleModule; 'prefer-stateless-function': import("eslint").Rule.RuleModule; 'prop-types': import("eslint").Rule.RuleModule; 'react-in-jsx-scope': import("eslint").Rule.RuleModule; 'require-default-props': import("eslint").Rule.RuleModule; 'require-optimization': import("eslint").Rule.RuleModule; 'require-render-return': import("eslint").Rule.RuleModule; 'self-closing-comp': import("eslint").Rule.RuleModule; 'sort-comp': import("eslint").Rule.RuleModule; 'sort-default-props': import("eslint").Rule.RuleModule; 'sort-prop-types': import("eslint").Rule.RuleModule; 'state-in-constructor': import("eslint").Rule.RuleModule; 'static-property-placement': import("eslint").Rule.RuleModule; 'style-prop-object': import("eslint").Rule.RuleModule; 'void-dom-elements-no-children': import("eslint").Rule.RuleModule; }>; rules: { 'boolean-prop-naming': import("eslint").Rule.RuleModule; 'button-has-type': import("eslint").Rule.RuleModule; 'checked-requires-onchange-or-readonly': import("eslint").Rule.RuleModule; 'default-props-match-prop-types': import("eslint").Rule.RuleModule; 'destructuring-assignment': import("eslint").Rule.RuleModule; 'display-name': import("eslint").Rule.RuleModule; 'forbid-component-props': import("eslint").Rule.RuleModule; 'forbid-dom-props': import("eslint").Rule.RuleModule; 'forbid-elements': import("eslint").Rule.RuleModule; 'forbid-foreign-prop-types': import("eslint").Rule.RuleModule; 'forbid-prop-types': import("eslint").Rule.RuleModule; 'forward-ref-uses-ref': import("eslint").Rule.RuleModule; 'function-component-definition': import("eslint").Rule.RuleModule; 'hook-use-state': import("eslint").Rule.RuleModule; 'iframe-missing-sandbox': import("eslint").Rule.RuleModule; 'jsx-boolean-value': import("eslint").Rule.RuleModule; 'jsx-child-element-spacing': import("eslint").Rule.RuleModule; 'jsx-closing-bracket-location': import("eslint").Rule.RuleModule; 'jsx-closing-tag-location': import("eslint").Rule.RuleModule; 'jsx-curly-spacing': import("eslint").Rule.RuleModule; 'jsx-curly-newline': import("eslint").Rule.RuleModule; 'jsx-equals-spacing': import("eslint").Rule.RuleModule; 'jsx-filename-extension': import("eslint").Rule.RuleModule; 'jsx-first-prop-new-line': import("eslint").Rule.RuleModule; 'jsx-handler-names': import("eslint").Rule.RuleModule; 'jsx-indent': import("eslint").Rule.RuleModule; 'jsx-indent-props': import("eslint").Rule.RuleModule; 'jsx-key': import("eslint").Rule.RuleModule; 'jsx-max-depth': import("eslint").Rule.RuleModule; 'jsx-max-props-per-line': import("eslint").Rule.RuleModule; 'jsx-newline': import("eslint").Rule.RuleModule; 'jsx-no-bind': import("eslint").Rule.RuleModule; 'jsx-no-comment-textnodes': import("eslint").Rule.RuleModule; 'jsx-no-constructed-context-values': import("eslint").Rule.RuleModule; 'jsx-no-duplicate-props': import("eslint").Rule.RuleModule; 'jsx-no-leaked-render': import("eslint").Rule.RuleModule; 'jsx-no-literals': import("eslint").Rule.RuleModule; 'jsx-no-script-url': import("eslint").Rule.RuleModule; 'jsx-no-target-blank': import("eslint").Rule.RuleModule; 'jsx-no-useless-fragment': import("eslint").Rule.RuleModule; 'jsx-one-expression-per-line': import("eslint").Rule.RuleModule; 'jsx-no-undef': import("eslint").Rule.RuleModule; 'jsx-curly-brace-presence': import("eslint").Rule.RuleModule; 'jsx-pascal-case': import("eslint").Rule.RuleModule; 'jsx-fragments': import("eslint").Rule.RuleModule; 'jsx-props-no-multi-spaces': import("eslint").Rule.RuleModule; 'jsx-props-no-spreading': import("eslint").Rule.RuleModule; 'jsx-props-no-spread-multi': import("eslint").Rule.RuleModule; 'jsx-sort-default-props': import("eslint").Rule.RuleModule; 'jsx-sort-props': import("eslint").Rule.RuleModule; 'jsx-space-before-closing': import("eslint").Rule.RuleModule; 'jsx-tag-spacing': import("eslint").Rule.RuleModule; 'jsx-uses-react': import("eslint").Rule.RuleModule; 'jsx-uses-vars': import("eslint").Rule.RuleModule; 'jsx-wrap-multilines': import("eslint").Rule.RuleModule; 'no-invalid-html-attribute': import("eslint").Rule.RuleModule; 'no-access-state-in-setstate': import("eslint").Rule.RuleModule; 'no-adjacent-inline-elements': import("eslint").Rule.RuleModule; 'no-array-index-key': import("eslint").Rule.RuleModule; 'no-arrow-function-lifecycle': import("eslint").Rule.RuleModule; 'no-children-prop': import("eslint").Rule.RuleModule; 'no-danger': import("eslint").Rule.RuleModule; 'no-danger-with-children': import("eslint").Rule.RuleModule; 'no-deprecated': import("eslint").Rule.RuleModule; 'no-did-mount-set-state': import("eslint").Rule.RuleModule; 'no-did-update-set-state': import("eslint").Rule.RuleModule; 'no-direct-mutation-state': import("eslint").Rule.RuleModule; 'no-find-dom-node': import("eslint").Rule.RuleModule; 'no-is-mounted': import("eslint").Rule.RuleModule; 'no-multi-comp': import("eslint").Rule.RuleModule; 'no-namespace': import("eslint").Rule.RuleModule; 'no-set-state': import("eslint").Rule.RuleModule; 'no-string-refs': import("eslint").Rule.RuleModule; 'no-redundant-should-component-update': import("eslint").Rule.RuleModule; 'no-render-return-value': import("eslint").Rule.RuleModule; 'no-this-in-sfc': import("eslint").Rule.RuleModule; 'no-typos': import("eslint").Rule.RuleModule; 'no-unescaped-entities': import("eslint").Rule.RuleModule; 'no-unknown-property': import("eslint").Rule.RuleModule; 'no-unsafe': import("eslint").Rule.RuleModule; 'no-unstable-nested-components': import("eslint").Rule.RuleModule; 'no-unused-class-component-methods': import("eslint").Rule.RuleModule; 'no-unused-prop-types': import("eslint").Rule.RuleModule; 'no-unused-state': import("eslint").Rule.RuleModule; 'no-object-type-as-default-prop': import("eslint").Rule.RuleModule; 'no-will-update-set-state': import("eslint").Rule.RuleModule; 'prefer-es6-class': import("eslint").Rule.RuleModule; 'prefer-exact-props': import("eslint").Rule.RuleModule; 'prefer-read-only-props': import("eslint").Rule.RuleModule; 'prefer-stateless-function': import("eslint").Rule.RuleModule; 'prop-types': import("eslint").Rule.RuleModule; 'react-in-jsx-scope': import("eslint").Rule.RuleModule; 'require-default-props': import("eslint").Rule.RuleModule; 'require-optimization': import("eslint").Rule.RuleModule; 'require-render-return': import("eslint").Rule.RuleModule; 'self-closing-comp': import("eslint").Rule.RuleModule; 'sort-comp': import("eslint").Rule.RuleModule; 'sort-default-props': import("eslint").Rule.RuleModule; 'sort-prop-types': import("eslint").Rule.RuleModule; 'state-in-constructor': import("eslint").Rule.RuleModule; 'static-property-placement': import("eslint").Rule.RuleModule; 'style-prop-object': import("eslint").Rule.RuleModule; 'void-dom-elements-no-children': import("eslint").Rule.RuleModule; }; configs: { recommended: { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; }; rules: { "react/display-name": 2; "react/jsx-key": 2; "react/jsx-no-comment-textnodes": 2; "react/jsx-no-duplicate-props": 2; "react/jsx-no-target-blank": 2; "react/jsx-no-undef": 2; "react/jsx-uses-react": 2; "react/jsx-uses-vars": 2; "react/no-children-prop": 2; "react/no-danger-with-children": 2; "react/no-deprecated": 2; "react/no-direct-mutation-state": 2; "react/no-find-dom-node": 2; "react/no-is-mounted": 2; "react/no-render-return-value": 2; "react/no-string-refs": 2; "react/no-unescaped-entities": 2; "react/no-unknown-property": 2; "react/no-unsafe": 0; "react/prop-types": 2; "react/react-in-jsx-scope": 2; "react/require-render-return": 2; }; }; all: { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; }; rules: Record<"boolean-prop-naming" | "button-has-type" | "checked-requires-onchange-or-readonly" | "default-props-match-prop-types" | "destructuring-assignment" | "display-name" | "forbid-component-props" | "forbid-dom-props" | "forbid-elements" | "forbid-foreign-prop-types" | "forbid-prop-types" | "prop-types" | "forward-ref-uses-ref" | "function-component-definition" | "hook-use-state" | "iframe-missing-sandbox" | "jsx-boolean-value" | "jsx-child-element-spacing" | "jsx-closing-bracket-location" | "jsx-closing-tag-location" | "jsx-curly-spacing" | "jsx-curly-newline" | "jsx-equals-spacing" | "jsx-filename-extension" | "jsx-first-prop-new-line" | "jsx-handler-names" | "jsx-indent" | "jsx-indent-props" | "jsx-key" | "jsx-max-depth" | "jsx-max-props-per-line" | "jsx-newline" | "jsx-no-bind" | "jsx-no-comment-textnodes" | "jsx-no-constructed-context-values" | "jsx-no-duplicate-props" | "jsx-no-leaked-render" | "jsx-no-literals" | "jsx-no-script-url" | "jsx-no-target-blank" | "jsx-no-useless-fragment" | "jsx-one-expression-per-line" | "jsx-no-undef" | "jsx-curly-brace-presence" | "jsx-pascal-case" | "jsx-fragments" | "jsx-props-no-multi-spaces" | "jsx-props-no-spreading" | "jsx-props-no-spread-multi" | "sort-default-props" | "jsx-sort-default-props" | "jsx-sort-props" | "jsx-tag-spacing" | "jsx-space-before-closing" | "jsx-uses-react" | "jsx-uses-vars" | "jsx-wrap-multilines" | "no-invalid-html-attribute" | "no-access-state-in-setstate" | "no-adjacent-inline-elements" | "no-array-index-key" | "no-arrow-function-lifecycle" | "no-children-prop" | "no-danger" | "no-danger-with-children" | "no-deprecated" | "no-direct-mutation-state" | "no-find-dom-node" | "no-is-mounted" | "no-multi-comp" | "no-namespace" | "no-set-state" | "no-string-refs" | "no-redundant-should-component-update" | "no-render-return-value" | "no-this-in-sfc" | "no-typos" | "no-unescaped-entities" | "no-unknown-property" | "no-unsafe" | "no-unstable-nested-components" | "no-unused-class-component-methods" | "no-unused-prop-types" | "no-unused-state" | "no-object-type-as-default-prop" | "prefer-es6-class" | "prefer-exact-props" | "prefer-read-only-props" | "prefer-stateless-function" | "react-in-jsx-scope" | "require-default-props" | "require-optimization" | "require-render-return" | "self-closing-comp" | "sort-comp" | "sort-prop-types" | "state-in-constructor" | "static-property-placement" | "style-prop-object" | "void-dom-elements-no-children" | "no-did-mount-set-state" | "no-did-update-set-state" | "no-will-update-set-state", 2 | "error">; }; 'jsx-runtime': { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; jsxPragma: any; }; rules: { "react/react-in-jsx-scope": 0; "react/jsx-uses-react": 0; }; }; flat: Record<string, reactPlugin.ReactFlatConfig>; } & { flat: Record<string, reactPlugin.ReactFlatConfig>; }; }; '@stylistic': { rules: import("@stylistic/eslint-plugin").Rules; configs: import("eslint").ESLint.Plugin["configs"] & import("@stylistic/eslint-plugin").Configs; }; }; namespace languageOptions { namespace parserOptions { namespace ecmaFeatures { let jsx: boolean; } } } let settings: { 'import/resolver': { node: { extensions: string[]; }; }; react: { pragma: string; version: string; }; propWrapperFunctions: string[]; }; let rules: { '@stylistic/jsx-quotes': string[]; 'class-methods-use-this': (string | { exceptMethods: string[]; })[]; 'react/checked-requires-onchange-or-readonly': (string | { ignoreMissingProperties: boolean; ignoreExclusiveCheckedAttribute: boolean; })[]; 'react/display-name': (string | { ignoreTranspilerName: boolean; })[]; 'react/forbid-prop-types': (string | { forbid: string[]; checkContextTypes: boolean; checkChildContextTypes: boolean; })[]; 'react/forbid-dom-props': (string | { forbid: never[]; })[]; 'react/jsx-boolean-value': (string | { always: never[]; })[]; 'react/jsx-closing-bracket-location': string[]; 'react/jsx-closing-tag-location': string; 'react/jsx-curly-spacing': (string | { allowMultiline: boolean; })[]; 'react/jsx-handler-names': (string | { eventHandlerPrefix: string; eventHandlerPropPrefix: string; })[]; 'react/jsx-indent-props': (string | number)[]; 'react/jsx-key': string; 'react/jsx-max-props-per-line': (string | { maximum: number; when: string; })[]; 'react/jsx-no-bind': (string | { ignoreRefs: boolean; allowArrowFunctions: boolean; allowFunctions: boolean; allowBind: boolean; ignoreDOMComponents: boolean; })[]; 'react/jsx-no-duplicate-props': (string | { ignoreCase: boolean; })[]; 'react/jsx-no-literals': (string | { noStrings: boolean; })[]; 'react/jsx-no-undef': string; 'react/jsx-pascal-case': (string | { allowAllCaps: boolean; ignore: never[]; })[]; 'react/sort-prop-types': (string | { ignoreCase: boolean; callbacksLast: boolean; requiredFirst: boolean; sortShapeProp: boolean; })[]; 'react/jsx-sort-prop-types': string; 'react/jsx-sort-props': (string | { ignoreCase: boolean; callbacksLast: boolean; shorthandFirst: boolean; shorthandLast: boolean; noSortAlphabetically: boolean; reservedFirst: boolean; })[]; 'react/jsx-uses-react': string[]; 'react/jsx-uses-vars': string; 'react/no-danger': string; 'react/no-deprecated': string[]; 'react/no-did-mount-set-state': string; 'react/no-did-update-set-state': string; 'react/no-will-update-set-state': string; 'react/no-direct-mutation-state': string; 'react/no-is-mounted': string; 'react/no-multi-comp': string; 'react/no-set-state': string; 'react/no-string-refs': string; 'react/no-unknown-property': string; 'react/prefer-es6-class': string[]; 'react/prefer-stateless-function': (string | { ignorePureComponents: boolean; })[]; 'react/prop-types': (string | { ignore: never[]; customValidators: never[]; skipUndeclared: boolean; })[]; 'react/react-in-jsx-scope': string; 'react/require-render-return': string; 'react/self-closing-comp': string; 'react/sort-comp': (string | { order: string[]; groups: { lifecycle: string[]; rendering: string[]; }; })[]; 'react/jsx-wrap-multilines': (string | { declaration: string; assignment: string; return: string; arrow: string; condition: string; logical: string; prop: string; })[]; 'react/jsx-first-prop-new-line': string[]; 'react/jsx-equals-spacing': string[]; 'react/jsx-indent': (string | number)[]; 'react/jsx-no-target-blank': (string | { enforceDynamicLinks: string; })[]; 'react/jsx-filename-extension': (string | { extensions: string[]; })[]; 'react/jsx-no-comment-textnodes': string; 'react/no-render-return-value': string; 'react/require-optimization': (string | { allowDecorators: never[]; })[]; 'react/no-find-dom-node': string; 'react/forbid-component-props': (string | { forbid: never[]; })[]; 'react/forbid-elements': (string | { forbid: never[]; })[]; 'react/no-danger-with-children': string; 'react/no-unused-prop-types': (string | { customValidators: never[]; skipShapeProps: boolean; })[]; 'react/style-prop-object': string; 'react/no-unescaped-entities': string; 'react/no-children-prop': string; 'react/jsx-tag-spacing': (string | { closingSlash: string; beforeSelfClosing: string; afterOpening: string; beforeClosing: string; })[]; 'react/no-array-index-key': string; 'react/require-default-props': (string | { forbidDefaultForRequired: boolean; })[]; 'react/forbid-foreign-prop-types': (string | { allowInPropTypes: boolean; })[]; 'react/void-dom-elements-no-children': string; 'react/default-props-match-prop-types': (string | { allowRequiredDefaults: boolean; })[]; 'react/no-redundant-should-component-update': string; 'react/no-unused-state': string; 'react/boolean-prop-naming': (string | { propTypeNames: string[]; rule: string; message: string; })[]; 'react/no-typos': string; 'react/jsx-curly-brace-presence': (string | { props: string; children: string; })[]; 'react/jsx-one-expression-per-line': (string | { allow: string; })[]; 'react/destructuring-assignment': string[]; 'react/no-access-state-in-setstate': string; 'react/button-has-type': (string | { button: boolean; submit: boolean; reset: boolean; })[]; 'react/jsx-child-element-spacing': string; 'react/no-this-in-sfc': string; 'react/jsx-max-depth': string; 'react/jsx-props-no-multi-spaces': string; 'react/no-unsafe': string; 'react/jsx-fragments': string[]; 'react/jsx-curly-newline': (string | { multiline: string; singleline: string; })[]; 'react/state-in-constructor': string[]; 'react/static-property-placement': string[]; 'react/jsx-props-no-spreading': (string | { html: string; custom: string; explicitSpread: string; exceptions: never[]; })[]; 'react/prefer-read-only-props': string; 'react/jsx-no-script-url': (string | { name: string; props: string[]; }[])[]; 'react/jsx-no-useless-fragment': string; 'react/no-adjacent-inline-elements': string; 'react/function-component-definition': (string | { namedComponents: string[]; unnamedComponents: string; })[]; 'react/jsx-newline': string; 'react/jsx-no-constructed-context-values': string; 'react/no-unstable-nested-components': string; 'react/no-namespace': string; 'react/prefer-exact-props': string; 'react/no-arrow-function-lifecycle': string; 'react/no-invalid-html-attribute': string; 'react/no-unused-class-component-methods': string; 'react/hook-use-state': string; 'react/iframe-missing-sandbox': string; 'react/jsx-no-leaked-render': string; 'react/no-object-type-as-default-prop': string; 'react/sort-default-props': (string | { ignoreCase: boolean; })[]; 'react/forward-ref-uses-ref': string; 'react/jsx-props-no-spread-multi': string; }; } import reactPlugin from 'eslint-plugin-react';