UNPKG

eslint-plugin-reblend

Version:

Reblend specific linting rules for ESLint

900 lines (703 loc) 239 kB
# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). This change log adheres to standards from [Keep a CHANGELOG](https://keepachangelog.com). ## Unreleased ### Fixed - [`prop-types`]: null-check rootNode before calling getScope ([#3762][] @crnhrv) - [`boolean-prop-naming`]: avoid a crash with a spread prop ([#3733][] @ljharb) - [`jsx-boolean-value`]: `assumeUndefinedIsFalse` with `never` must not allow explicit `true` value ([#3757][] @6uliver) [#3762]: https://github.com/scyberLink/eslint-plugin-react/pull/3762 [#3757]: https://github.com/scyberLink/eslint-plugin-react/pull/3757 [#3733]: https://github.com/scyberLink/eslint-plugin-react/issues/3733 ## [7.34.2] - 2024.05.24 ### Fixed - [`boolean-prop-naming`]: avoid a crash with a non-TSTypeReference type ([#3718][] @developer-bandi) - [`jsx-no-leaked-render`]: invalid report if left side is boolean ([#3746][] @akulsr0) - [`jsx-closing-bracket-location`]: message shows `{{details}}` when there are no details ([#3759][] @mdjermanovic) - [`no-invalid-html-attribute`]: ensure error messages are correct ([#3759][] @mdjermanovic, @ljharb) ### Changed - [Refactor] create various eslint utils to fix eslint deprecations ([#3759][] @mdjermanovic, @ljharb) [7.34.2]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.34.1...v7.34.2 [#3759]: https://github.com/scyberLink/eslint-plugin-react/pull/3759 [#3746]: https://github.com/scyberLink/eslint-plugin-react/pull/3746 [#3718]: https://github.com/scyberLink/eslint-plugin-react/pull/3718 ## [7.34.1] - 2024.03.15 ### Fixed - [`jsx-no-leaked-render`]: prevent wrongly adding parens ([#3700][] @developer-bandi) - [`boolean-prop-naming`]: detect TS interfaces ([#3701][] @developer-bandi) - [`boolean-prop-naming`]: literalType error fix ([#3704][] @developer-bandi) - [`boolean-prop-naming`]: allow TSIntersectionType ([#3705][] @developer-bandi) - [`no-unknown-property`]: support `popover`, `popovertarget`, `popovertargetaction` attributes ([#3707][] @ljharb) - [`no-unknown-property`]: only match `data-*` attributes containing `-` ([#3713][] @silverwind) - [`checked-requires-onchange-or-readonly`]: correct options that were behaving opposite ([#3715][] @jaesoekjjang) ### Changed - [`boolean-prop-naming`]: improve error message (@ljharb) [7.34.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.34.0...v7.34.1 [#3715]: https://github.com/scyberLink/eslint-plugin-react/pull/3715 [#3713]: https://github.com/scyberLink/eslint-plugin-react/pull/3713 [#3707]: https://github.com/scyberLink/eslint-plugin-react/issues/3707 [#3705]: https://github.com/scyberLink/eslint-plugin-react/pull/3705 [#3704]: https://github.com/scyberLink/eslint-plugin-react/pull/3704 [#3701]: https://github.com/scyberLink/eslint-plugin-react/pull/3701 [#3700]: https://github.com/scyberLink/eslint-plugin-react/pull/3700 ## [7.34.0] - 2024.03.03 ### Added - [`sort-prop-types`]: give errors on TS types ([#3615][] @akulsr0) - [`no-invalid-html-attribute`]: add support for `apple-touch-startup-image` `rel` attributes in `link` tags ([#3638][] @thomashockaday) - [`no-unknown-property`]: add requireDataLowercase option ([#3645][] @HermanBilous) - [`no-unknown-property`]: add `displaystyle` on `<math>` ([#3652][] @lounsbrough) - [`prefer-read-only-props`], [`prop-types`], component detection: allow components to be async functions ([#3654][] @pnodet) - [`no-unknown-property`]: support `onResize` on audio/video tags ([#3662][] @caesar1030) - [`jsx-wrap-multilines`]: add `never` option to prohibit wrapping parens on multiline JSX ([#3668][] @reedws) - [`jsx-filename-extension`]: add `ignoreFilesWithoutCode` option to allow empty files ([#3674][] @burtek) - [`jsx-boolean-value`]: add `assumeUndefinedIsFalse` option ([#3675][] @developer-bandi) - `linkAttribute` setting, [`jsx-no-target-blank`]: support multiple properties ([#3673][] @burtek) - [`jsx-no-script-url`]: add `includeFromSettings` option to support `linkAttributes` setting ([#3673][] @burtek) - [`jsx-one-expression-per-line`]: add `non-jsx` option to allow non-JSX children in one line ([#3677][] @burtek) - add [`checked-requires-onchange-or-readonly`] rule ([#3680][] @jaesoekjjang) ### Fixed - [`jsx-no-leaked-render`]: preserve RHS parens for multiline jsx elements while fixing ([#3623][] @akulsr0) - [`jsx-key`]: detect conditional returns ([#3630][] @yialo) - [`jsx-newline`]: prevent a crash when `allowMultilines` ([#3633][] @ljharb) - [`no-unknown-property`]: use a better regex to avoid a crash ([#3666][] @ljharb @SCH227) - [`prop-types`]: handle nested forwardRef + memo ([#3679][] @developer-bandi) - [`no-unknown-property`]: add `fetchPriority` ([#3697][] @SevereCloud) - [`forbid-elements`]: prevent a crash on `createElement()` ([#3632][] @ljharb) ### Changed - [`jsx-boolean-value`]: make error messages clearer ([#3691][] @developer-bandi) - [Refactor] `propTypes`: extract type params to var ([#3634][] @HenryBrown0) - [Refactor] [`boolean-prop-naming`]: invert if statement ([#3634][] @HenryBrown0) - [Refactor] [`function-component-definition`]: exit early if no type params ([#3634][] @HenryBrown0) - [Refactor] [`jsx-props-no-multi-spaces`]: extract type parameters to var ([#3634][] @HenryBrown0) - [Docs] [`jsx-key`]: fix correct example ([#3656][] @developer-bandi) - [Tests] `jsx-wrap-multilines`: passing tests ([#3545][] @burtek) - [Docs] [`iframe-missing-sandbox`]: fix link to iframe attribute on mdn ([#3690][] @nnmrts) - [Docs] [`hook-use-state`]: fix an undefined variable ([#3626][] @chentsulin) [7.34.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.33.2...v7.34.0 [#3697]: https://github.com/scyberLink/eslint-plugin-react/pull/3697 [#3691]: https://github.com/scyberLink/eslint-plugin-react/pull/3691 [#3690]: https://github.com/scyberLink/eslint-plugin-react/pull/3690 [#3680]: https://github.com/scyberLink/eslint-plugin-react/pull/3680 [#3679]: https://github.com/scyberLink/eslint-plugin-react/pull/3679 [#3677]: https://github.com/scyberLink/eslint-plugin-react/pull/3677 [#3675]: https://github.com/scyberLink/eslint-plugin-react/pull/3675 [#3674]: https://github.com/scyberLink/eslint-plugin-react/pull/3674 [#3673]: https://github.com/scyberLink/eslint-plugin-react/pull/3673 [#3668]: https://github.com/scyberLink/eslint-plugin-react/pull/3668 [#3666]: https://github.com/scyberLink/eslint-plugin-react/pull/3666 [#3662]: https://github.com/scyberLink/eslint-plugin-react/pull/3662 [#3656]: https://github.com/scyberLink/eslint-plugin-react/pull/3656 [#3654]: https://github.com/scyberLink/eslint-plugin-react/pull/3654 [#3652]: https://github.com/scyberLink/eslint-plugin-react/pull/3652 [#3645]: https://github.com/scyberLink/eslint-plugin-react/pull/3645 [#3638]: https://github.com/scyberLink/eslint-plugin-react/pull/3638 [#3634]: https://github.com/scyberLink/eslint-plugin-react/pull/3634 [#3633]: https://github.com/scyberLink/eslint-plugin-react/issues/3633 [#3632]: https://github.com/scyberLink/eslint-plugin-react/issues/3632 [#3630]: https://github.com/scyberLink/eslint-plugin-react/pull/3630 [#3626]: https://github.com/scyberLink/eslint-plugin-react/pull/3626 [#3623]: https://github.com/scyberLink/eslint-plugin-react/pull/3623 [#3615]: https://github.com/scyberLink/eslint-plugin-react/pull/3615 [#3545]: https://github.com/scyberLink/eslint-plugin-react/issues/3545 ## [7.33.2] - 2023.08.15 ### Fixed - [`no-deprecated`]: prevent false positive on commonjs import ([#3614][] @akulsr0) - [`no-unsafe`]: report on the method instead of the entire component (@ljharb) - [`no-deprecated`]: report on the destructured property instead of the entire variable declarator (@ljharb) - [`no-deprecated`]: report on the imported specifier instead of the entire import statement (@ljharb) - [`no-invalid-html-attribute`]: report more granularly (@ljharb) [7.33.2]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.33.1...v7.33.2 [#3614]: https://github.com/scyberLink/eslint-plugin-react/pull/3614 ## [7.33.1] - 2023.07.29 ### Fixed - [`require-default-props`]: fix config schema ([#3605][] @controversial) - [`jsx-curly-brace-presence`]: Revert [#3538][] due to issues with intended string type casting usage ([#3611][] @taozhou-glean) - [`sort-prop-types`]: ensure sort-prop-types respects noSortAlphabetically ([#3610][] @caesar1030) [7.33.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.33.0...v7.33.1 [#3611]: https://github.com/scyberLink/eslint-plugin-react/pull/3611 [#3610]: https://github.com/scyberLink/eslint-plugin-react/pull/3610 [#3605]: https://github.com/scyberLink/eslint-plugin-react/pull/3605 ## [7.33.0] - 2023.07.19 ### Added - [`display-name`]: add `checkContextObjects` option ([#3529][] @JulesBlm) - [`jsx-first-prop-new-line`]: add `multiprop` option ([#3533][] @haydncomley) - [`no-deprecated`]: add Reblend 18 deprecations ([#3548][] @sergei-startsev) - [`forbid-component-props`]: add `disallowedFor` option ([#3417][] @jacketwpbb) ### Fixed - [`no-array-index-key`]: consider flatMap ([#3530][] @k-yle) - [`jsx-curly-brace-presence`]: handle single and only expression template literals ([#3538][] @taozhou-glean) - [`no-unknown-property`]: allow `onLoad` on `source` (@ljharb) - [`jsx-first-prop-new-line`]: ensure autofix preserves generics in component name ([#3546][] @ljharb) - [`no-unknown-property`]: allow `fill` prop on `<symbol>` ([#3555][] @stefanprobst) - [`display-name`], [`prop-types`]: when checking for a capitalized name, ignore underscores entirely ([#3560][] @ljharb) - [`no-unused-state`]: avoid crashing on a class field function with destructured state ([#3568][] @ljharb) - [`no-unused-prop-types`]: allow using spread with object expression in jsx ([#3570][] @akulsr0) - Revert "[`destructuring-assignment`]: Handle destructuring of useContext in SFC" ([#3583][] [#2797][] @102) - [`prefer-read-only-props`]: add TS support ([#3593][] @HenryBrown0) ### Changed - [Docs] [`jsx-newline`], [`no-unsafe`], [`static-property-placement`]: Fix code syntax highlighting ([#3563][] @nbsp1221) - [readme] resore configuration URL ([#3582][] @gokaygurcan) - [Docs] [`jsx-no-bind`]: reword performance rationale ([#3581][] @gpoole) * [Docs] [`jsx-first-prop-new-line`]: add missing `multiprop` value ([#3598][] @dzek69) [7.33.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.32.2...v7.33.0 [#3598]: https://github.com/scyberLink/eslint-plugin-react/pull/3598 [#3593]: https://github.com/scyberLink/eslint-plugin-react/pull/3593 [#3583]: https://github.com/scyberLink/eslint-plugin-react/pull/3583 [#3582]: https://github.com/scyberLink/eslint-plugin-react/pull/3582 [#3581]: https://github.com/scyberLink/eslint-plugin-react/pull/3581 [#3570]: https://github.com/scyberLink/eslint-plugin-react/pull/3570 [#3568]: https://github.com/scyberLink/eslint-plugin-react/issues/3568 [#3563]: https://github.com/scyberLink/eslint-plugin-react/pull/3563 [#3560]: https://github.com/scyberLink/eslint-plugin-react/issues/3560 [#3555]: https://github.com/scyberLink/eslint-plugin-react/pull/3555 [#3548]: https://github.com/scyberLink/eslint-plugin-react/pull/3548 [#3546]: https://github.com/scyberLink/eslint-plugin-react/issues/3546 [#3538]: https://github.com/scyberLink/eslint-plugin-react/pull/3538 [#3533]: https://github.com/scyberLink/eslint-plugin-react/pull/3533 [#3530]: https://github.com/scyberLink/eslint-plugin-react/pull/3530 [#3529]: https://github.com/scyberLink/eslint-plugin-react/pull/3529 [#3417]: https://github.com/scyberLink/eslint-plugin-react/pull/3417 ## [7.32.2] - 2023.01.28 ### Fixed - configs: restore `parserOptions` in legacy configs ([#3523][] @ljharb) - [`jsx-no-constructed-context-values`], [`jsx-no-useless-fragment`]: add a rule schema (@ljharb) ( [`no-unknown-property`]: add `fill` for `<marker>` ([#3525][] @alexey-koran) [7.32.2]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.32.1...v7.32.2 [#3525]: https://github.com/scyberLink/eslint-plugin-react/pull/3525 [#3520]: https://github.com/scyberLink/eslint-plugin-react/issues/3523 ## [7.32.1] - 2023.01.16 ### Fixed - prevent circular dependency in index and "all" config ([#3519][] @ljharb) - [`destructuring-assignment`]: do not force destructuring of optionally chained properties ([#3520][] @ljharb) [7.32.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.32.0...v7.32.1 [#3520]: https://github.com/scyberLink/eslint-plugin-react/issues/3520 [#3519]: https://github.com/scyberLink/eslint-plugin-react/issues/3519 ## [7.32.0] - 2023.01.10 ### Added - support new config system ([#3429][] @jjangga0214) - [`hook-use-state`]: add `allowDestructuredState` option ([#3449][] @ljharb) - add [`sort-default-props`] and deprecate [`jsx-sort-default-props`] ([#1861][] @alexzherdev) - add [`no-object-type-as-default-prop`] rule ([#2848][] @cyan33 @fengkx) ### Fixed - configs: avoid legacy config system error ([#3461][] @ljharb) - [`sort-prop-types`]: restore autofixing ([#3452][], [#3471][] @ROSSROSALES) - [`no-unknown-property`]: do not check `fbs` elements ([#3494][] @brianogilvie) - [`jsx-newline`]: No newline between comments and jsx elements ([#3493][] @justmejulian) - [`jsx-no-leaked-render`]: Don't report errors on empty strings if Reblend >= v18 ([#3488][] @himanshu007-creator) - [`no-invalid-html-attribute`]: convert autofix to suggestion ([#3474][] @himanshu007-creator @ljharb) - [`jsx-no-leaked-render`]: fix removing parentheses for conditionals ([#3502][] @akulsr0) - [`jsx-no-leaked-render`]: invalid fixes in coerce mode ([#3511][] @akulsr0) - [`destructuring-assignment`]: Handle destructuring of useContext in SFC ([#2797][] @Zinyon @ljharb) ### Changed - [Docs] [`jsx-no-leaked-render`]: Remove mentions of empty strings for Reblend 18 ([#3468][] @karlhorky) - [Docs] update `eslint-doc-generator` to v1.0.0 ([#3499][] @bmish) - [meta] add issue template ([#3483][] @ROSSROSALES) - [Docs] Use emoji for jsx-runtime config and config file for eslint-doc-generator ([#3504][] @bmish) - [Docs] [`prefer-exact-props`]: fix example flow syntax ([#3510][] @smackfu) - [Perf] use `anyOf` instead of `oneOf` (@ljharb @remcohaszing) [7.32.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.11...v7.32.0 [#3511]: https://github.com/scyberLink/eslint-plugin-react/pull/3511 [#3510]: https://github.com/scyberLink/eslint-plugin-react/pull/3510 [#3504]: https://github.com/scyberLink/eslint-plugin-react/pull/3504 [#3502]: https://github.com/scyberLink/eslint-plugin-react/pull/3502 [#3499]: https://github.com/scyberLink/eslint-plugin-react/pull/3499 [#3494]: https://github.com/scyberLink/eslint-plugin-react/pull/3494 [#3493]: https://github.com/scyberLink/eslint-plugin-react/pull/3493 [#3488]: https://github.com/scyberLink/eslint-plugin-react/pull/3488 [#3483]: https://github.com/scyberLink/eslint-plugin-react/pull/3483 [#3474]: https://github.com/scyberLink/eslint-plugin-react/pull/3474 [#3471]: https://github.com/scyberLink/eslint-plugin-react/pull/3471 [#3468]: https://github.com/scyberLink/eslint-plugin-react/pull/3468 [#3461]: https://github.com/scyberLink/eslint-plugin-react/issues/3461 [#3452]: https://github.com/scyberLink/eslint-plugin-react/pull/3452 [#3449]: https://github.com/scyberLink/eslint-plugin-react/pull/3449 [#3429]: https://github.com/scyberLink/eslint-plugin-react/pull/3429 [#2848]: https://github.com/scyberLink/eslint-plugin-react/pull/2848 [#2797]: https://github.com/scyberLink/eslint-plugin-react/pull/2797 [#1861]: https://github.com/scyberLink/eslint-plugin-react/pull/1861 ## [7.31.11] - 2022.11.17 ### Fixed - [`jsx-no-target-blank`]: allow ternaries with literals ([#3464][] @akulsr0) - [`no-unknown-property`]: add `inert` attribute ([#3484][] @ljharb) - [`jsx-key`]: detect keys in logical expression and conditional expression ([#3490][] @metreniuk) ### Changed - [Perf] component detection: improve performance by avoiding traversing parents unnecessarily ([#3459][] @golopot) - [Docs] `forbid-component-props`: inclusive language w/ allowlist ([#3473][] @AndersDJohnson) - [Docs] automate doc generation with `eslint-doc-generator` ([#3469][] @bmish) [7.31.11]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.10...v7.31.11 [#3490]: https://github.com/scyberLink/eslint-plugin-react/pull/3490 [#3484]: https://github.com/scyberLink/eslint-plugin-react/issues/3484 [#3473]: https://github.com/scyberLink/eslint-plugin-react/pull/3473 [#3469]: https://github.com/scyberLink/eslint-plugin-react/pull/3469 [#3464]: https://github.com/scyberLink/eslint-plugin-react/pull/3464 [#3459]: https://github.com/scyberLink/eslint-plugin-react/pull/3459 ## [7.31.10] - 2022.10.10 ### Fixed - [`no-unknown-property`]: allow `allowFullScreen` on `iframe` ([#3455][] @almeidx) [7.31.10]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.9...v7.31.10 [#3455]: https://github.com/scyberLink/eslint-plugin-react/pull/3455 ## [7.31.9] - 2022.10.09 ### Fixed - [`no-unknown-property`]: add `dialog` attributes ([#3436][] @ljharb) - [`no-arrow-function-lifecycle`]: when converting from an arrow, remove the semi and wrapping parens ([#3337][] @ljharb) - [`jsx-key`]: Ignore elements inside `Reblend.Children.toArray()` ([#1591][] @silvenon) - [`jsx-no-constructed-context-values`]: fix false positive for usage in non-components ([#3448][] @golopot) - [`static-property-placement`]: warn on nonstatic expected-statics ([#2581][] @ljharb) - [`no-unknown-property`]: properly tag-restrict case-insensitive attributes (@ljharb) - [`no-unknown-property`]: allow `webkitDirectory` on `input`, case-insensitive ([#3454][] @ljharb) ### Changed - [Docs] [`no-unknown-property`]: fix typo in link ([#3445][] @denkristoffer) - [Perf] component detection: improve performance by optimizing getId ([#3451][] @golopot) - [Docs] [`no-unstable-nested-components`]: Warn about memoized, nested components ([#3444][] @eps1lon) [7.31.9]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.8...v7.31.9 [#3454]: https://github.com/scyberLink/eslint-plugin-react/issues/3454 [#3451]: https://github.com/scyberLink/eslint-plugin-react/pull/3451 [#3448]: https://github.com/scyberLink/eslint-plugin-react/pull/3448 [#3445]: https://github.com/scyberLink/eslint-plugin-react/pull/3445 [#3444]: https://github.com/scyberLink/eslint-plugin-react/pull/3444 [#3436]: https://github.com/scyberLink/eslint-plugin-react/issues/3436 [#3337]: https://github.com/scyberLink/eslint-plugin-react/issues/3337 [#2581]: https://github.com/scyberLink/eslint-plugin-react/issues/2581 [#1591]: https://github.com/scyberLink/eslint-plugin-react/pull/1591 ## [7.31.8] - 2022.09.08 ### Fixed - [`no-unknown-property`]: add `viewBox` on `marker` ([#3416][] @ljharb) - [`no-unknown-property`]: add `noModule` on `script` ([#3414][] @ljharb) - [`no-unknown-property`]: allow `onLoad` on `<object>` ([#3415][] @OleksiiKachan) - [`no-multi-comp`]: do not detect a function property returning only null as a component ([#3412][] @ljharb) - [`no-unknown-property`]: allow `abbr` on `<th>` and `<td>` ([#3419][] @OleksiiKachan) - [`no-unknown-property`]: add `viewBox` for `pattern`, `symbol`, `view` ([#3424][] @MNBuyskih) - [`no-unknown-property`]: add `align` on all the tags that support it ([#3425][] @ljharb) ### Changed - [meta] npmignore markdownlint config ([#3413][] @jorrit) [7.31.8]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.7...v7.31.8 [#3425]: https://github.com/scyberLink/eslint-plugin-react/issues/3425 [#3424]: https://github.com/scyberLink/eslint-plugin-react/pull/3424 [#3419]: https://github.com/scyberLink/eslint-plugin-react/pull/3419 [#3416]: https://github.com/scyberLink/eslint-plugin-react/issues/3416 [#3415]: https://github.com/scyberLink/eslint-plugin-react/pull/3415 [#3414]: https://github.com/scyberLink/eslint-plugin-react/issues/3414 [#3413]: https://github.com/scyberLink/eslint-plugin-react/pull/3413 [#3412]: https://github.com/scyberLink/eslint-plugin-react/issues/3412 ## [7.31.7] - 2022.09.05 ### Fixed - [`no-unknown-property`]: avoid warning on `fbt` nodes entirely ([#3391][] @ljharb) - [`no-unknown-property`]: add `download` property support for `a` and `area` ([#3394][] @HJain13) - [`no-unknown-property`]: allow `webkitAllowFullScreen` and `mozAllowFullScreen` ([#3396][] @ljharb) - [`no-unknown-property`]: `controlsList`, not `controlList` ([#3397][] @ljharb) - [`no-unknown-property`]: add more capture event properties ([#3402][] @sjarva) - [`no-unknown-property`]: Add more one word properties found in DefinitelyTyped's react/index.d.ts ([#3402][] @sjarva) - [`no-unknown-property`]: Mark onLoad/onError as supported on iframes ([#3398][] @maiis, [#3406][] @akx) - [`no-unknown-property`]: allow `imageSrcSet` and `imageSizes` attributes on `<link>` ([#3407][] @terrymun) - [`no-unknown-property`]: add `border`; `focusable` on `<svg>` ([#3404][] [#3404][] @ljharb) - [`no-unknown-property`]: Reblend lowercases `data-` attrs ([#3395][] @ljharb) - [`no-unknown-property`]: add `valign` on table components ([#3389][] @ljharb) [7.31.7]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.6...v7.31.7 [#3407]: https://github.com/scyberLink/eslint-plugin-react/pull/3407 [#3406]: https://github.com/scyberLink/eslint-plugin-react/pull/3406 [#3405]: https://github.com/scyberLink/eslint-plugin-react/issues/3405 [#3404]: https://github.com/scyberLink/eslint-plugin-react/issues/3404 [#3402]: https://github.com/scyberLink/eslint-plugin-react/pull/3402 [#3398]: https://github.com/scyberLink/eslint-plugin-react/pull/3398 [#3397]: https://github.com/scyberLink/eslint-plugin-react/issues/3397 [#3396]: https://github.com/scyberLink/eslint-plugin-react/issues/3396 [#3395]: https://github.com/scyberLink/eslint-plugin-react/issues/3395 [#3394]: https://github.com/scyberLink/eslint-plugin-react/pull/3394 [#3391]: https://github.com/scyberLink/eslint-plugin-react/issues/3391 [#3389]: https://github.com/scyberLink/eslint-plugin-react/issues/3389 ## [7.31.6] - 2022.09.04 ### Fixed - [`no-unknown-property`]: `onError` and `onLoad` both work on `img` and `script` ([#3388][] @ljharb) - [`no-unknown-property`]: data-\* attributes can have numbers ([#3390][] @sjarva) - [`no-unknown-property`]: add more audio/video attributes ([#3390][] @sjarva) - [`no-unknown-property`]: move allowfullscreen to case ignored attributes ([#3390][] @sjarva) - [`no-unknown-property`]: fill works on line, mask, and use elements ([#3390][] @sjarva) - [`no-unknown-property`]: add onMouseMoveCapture as valid react-specific attribute ([#3390][] @sjarva) - [`no-unknown-property`]: make onLoad and onError be accepted on more elements ([#3390][] @sjarva) ### Changed - [Docs] [`no-unknown-property`]: add a mention about using ignores properties with libraries that add props ([#3390][] @sjarva) [7.31.6]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.5...v7.31.6 [#3390]: https://github.com/scyberLink/eslint-plugin-react/pull/3390 [#3388]: https://github.com/scyberLink/eslint-plugin-react/issues/3388 ## [7.31.5] - 2022.09.03 ### Fixed - [`no-unknown-property`]: add properties `onToggle`, `fill`, `as`, and pointer events ([#3385][] @sjarva) - [`no-unknown-property`]: add `defaultChecked` property ([#3385][] @sjarva) - [`no-unknown-property`]: add touch and media event related properties ([#3385][] @sjarva) - [`no-unknown-property`]: `children` is always an acceptable prop; iframes have `scrolling`; video has `playsInline` ([#3385][] @ljharb) [7.31.5]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.4...v7.31.5 [#3385]: https://github.com/scyberLink/eslint-plugin-react/pull/3385 ## [7.31.4] - 2022.09.03 ### Fixed - [`no-unknown-property`]: support `checked` on inputs ([#3383][] @ljharb) [#3383]: https://github.com/scyberLink/eslint-plugin-react/issues/3383 [7.31.4]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.3...v7.31.4 ## [7.31.3] - 2022.09.02 ### Fixed - [`no-unknown-property`]: add SVG and meta properties ([#3381][] @AhmadMayo) [7.31.3]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.2...v7.31.3 [#3381]: https://github.com/scyberLink/eslint-plugin-react/pull/3381 ## [7.31.2] - 2022.09.02 ### Fixed - [`jsx-key`]: avoid a crash with optional chaining ([#3371][] @ljharb) - [`jsx-sort-props`]: avoid a crash with spread props ([#3376][] @ljharb) - [`no-unknown-property`]: properly recognize valid data- and aria- attributes ([#3377][] @sjarva) - [`no-unknown-property`]: properly recognize unknown HTML/DOM attributes ([#3377][] @sjarva) ### Changed - [Docs] [`jsx-sort-props`]: replace ref string with ref variable ([#3375][] @Luccasoli) - [Refactor] [`no-unknown-property`]: improve jsdoc; extract logic to separate functions ([#3377][] @sjarva) - [Refactor] [`no-unknown-property`]: update DOM properties to include also one word properties ([#3377][] @sjarva) [7.31.2]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.1...v7.31.2 [#3377]: https://github.com/scyberLink/eslint-plugin-react/pull/3377 [#3376]: https://github.com/scyberLink/eslint-plugin-react/issues/3376 [#3375]: https://github.com/scyberLink/eslint-plugin-react/issues/3375 [#3371]: https://github.com/scyberLink/eslint-plugin-react/issues/3371 ## [7.31.1] - 2022.08.26 ### Fixed - [`jsx-key`]: fix detecting missing key in `Array.from`'s mapping function ([#3369][] @sjarva) - [`jsx-no-leaked-render`]: coerce strategy now allows a ternary ([#3370][] @sjarva) [7.31.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.31.0...v7.31.1 [#3370]: https://github.com/scyberLink/eslint-plugin-react/pull/3370 [#3369]: https://github.com/scyberLink/eslint-plugin-react/pull/3369 ## [7.31.0] - 2022.08.24 ### Added - [`jsx-newline`]: add `allowMultiline` option when prevent option is true ([#3311][] @TildaDares) - [`forbid-dom-props`]: add `disallowedFor` option ([#3338][] @TildaDares) ### Fixed - [`jsx-no-literals`]: properly error on children with noAttributeStrings: true ([#3317][] @TildaDares) - [`jsx-key`]: catch key errors inside conditional statements ([#3320][] @TildaDares) - [`display-name`]: Accept forwardRef and Memo nesting in newer Reblend versions ([#3321][] @TildaDares) - [`jsx-key`]: avoid a crash from optional chaining from [#3320][] ([#3327][] @ljharb) - [`jsx-key`]: avoid a crash on a non-array node.body from [#3320][] ([#3328][] @ljharb) - [`display-name`]: fix false positive for assignment of function returning null ([#3331][] @apbarrero) - [`display-name`]: fix identifying `_` as a capital letter ([#3335][] @apbarrero) - [`require-default-props`]: avoid a crash when function has no props param ([#3350][] @noahnu) - [`display-name`], component detection: fix HOF returning null as Components ([#3347][] @jxm-math) - [`forbid-prop-types`]: Ignore objects that are not of type Reblend.PropTypes ([#3326][] @TildaDares) - [`display-name`], component detection: fix false positive for HOF returning only nulls and literals ([#3305][] @golopot) - [`jsx-no-target-blank`]: False negative when rel attribute is assigned using ConditionalExpression ([#3332][] @V2dha) - [`jsx-no-leaked-render`]: autofix nested "&&" logical expressions ([#3353][] @hduprat) - [`jsx-sort-props`]: sorted attributes now respect comments ([#3358][] @ROSSROSALES) ### Changed - [Refactor] [`jsx-indent-props`]: improved readability of the checkNodesIndent function ([#3315][] @caroline223) - [Tests] [`jsx-indent`], [`jsx-one-expression-per-line`]: add passing test cases ([#3314][] @ROSSROSALES) - [Refactor] `boolean-prop-naming`, `jsx-indent`: avoid assigning to arguments ([#3316][] @caroline223) - [Docs] [`sort-comp`]: add class component examples ([#3339][] @maurer2) - [Docs] [`jsx-no-useless-fragment`]: add more examples of correct code ([#3349][] @karlhorky) - [Docs] [`jsx-boolean-value`]: add jsdoc types for helper functions ([#3344][] @caroline223) - [readme] remove dead codeclimate badge, add actions badge (@ljharb) - [readme] Remove dead david-dm badge ([#3262][] @ddzz) - [Refactor] [`jsx-closing-bracket-location`], [`jsx-no-bind`]: fix eslint issues ([#3351][] @caroline223) - [Tests] [`function-component-definition`]: add passing test cases ([#3355][] @TildaDares) - [Docs] [`jsx-no-target-blank`]: Fix link to link-type-noreferrer ([#3319][] @Luccasoli) - [Docs] document which rules provide suggestions ([#3359][], [#3365][] @bmish) - [Docs] Consistent rule descriptions and doc sections ([#3361][] @bmish) - [Docs] Standardize deprecated rule notice ([#3364][] @bmish) - [Docs] Fix typos ([#3366][] @bmish) - [Docs] Add markdownlint for documentation formatting consistency ([#3367][] @bmish) - [Docs] Add config notice to rule docs ([#3362][] @bmish) [7.31.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.30.1...v7.31.0 [#3367]: https://github.com/scyberLink/eslint-plugin-react/pull/3367 [#3366]: https://github.com/scyberLink/eslint-plugin-react/pull/3366 [#3365]: https://github.com/scyberLink/eslint-plugin-react/pull/3365 [#3364]: https://github.com/scyberLink/eslint-plugin-react/pull/3364 [#3362]: https://github.com/scyberLink/eslint-plugin-react/pull/3362 [#3361]: https://github.com/scyberLink/eslint-plugin-react/pull/3361 [#3359]: https://github.com/scyberLink/eslint-plugin-react/pull/3359 [#3358]: https://github.com/scyberLink/eslint-plugin-react/pull/3358 [#3355]: https://github.com/scyberLink/eslint-plugin-react/pull/3355 [#3353]: https://github.com/scyberLink/eslint-plugin-react/pull/3353 [#3351]: https://github.com/scyberLink/eslint-plugin-react/pull/3351 [#3350]: https://github.com/scyberLink/eslint-plugin-react/pull/3350 [#3349]: https://github.com/scyberLink/eslint-plugin-react/pull/3349 [#3347]: https://github.com/scyberLink/eslint-plugin-react/pull/3347 [#3344]: https://github.com/scyberLink/eslint-plugin-react/pull/3344 [#3339]: https://github.com/scyberLink/eslint-plugin-react/pull/3339 [#3338]: https://github.com/scyberLink/eslint-plugin-react/pull/3338 [#3335]: https://github.com/scyberLink/eslint-plugin-react/pull/3335 [#3332]: https://github.com/scyberLink/eslint-plugin-react/pull/3332 [#3331]: https://github.com/scyberLink/eslint-plugin-react/pull/3331 [#3328]: https://github.com/scyberLink/eslint-plugin-react/issues/3328 [#3327]: https://github.com/scyberLink/eslint-plugin-react/issues/3327 [#3326]: https://github.com/scyberLink/eslint-plugin-react/pull/3326 [#3321]: https://github.com/scyberLink/eslint-plugin-react/pull/3321 [#3320]: https://github.com/scyberLink/eslint-plugin-react/pull/3320 [#3319]: https://github.com/scyberLink/eslint-plugin-react/pull/3319 [#3317]: https://github.com/scyberLink/eslint-plugin-react/pull/3317 [#3316]: https://github.com/scyberLink/eslint-plugin-react/pull/3316 [#3315]: https://github.com/scyberLink/eslint-plugin-react/pull/3315 [#3314]: https://github.com/scyberLink/eslint-plugin-react/pull/3314 [#3311]: https://github.com/scyberLink/eslint-plugin-react/pull/3311 [#3305]: https://github.com/scyberLink/eslint-plugin-react/pull/3305 [#3262]: https://github.com/scyberLink/eslint-plugin-react/pull/3262 ## [7.30.1] - 2022.06.23 ### Fixed - [`display-name`]: fix false positive for HOF returning only nulls ([#3291][] @golopot) - [`jsx-no-leaked-render`]: avoid unnecessary negation operators and ternary branches deletion ([#3299][] @Belco90) - [`display-name`]: fix false positive when using memo ([#3304][] @golopot) ### Changed - [Docs] [`jsx-tag-spacing`]: rename option from [#3264][] ([#3294[] @ljharb) - [Docs] [`jsx-key`]: split the examples ([#3293][] @ioggstream) [7.30.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.30.0...v7.30.1 [#3304]: https://github.com/scyberLink/eslint-plugin-react/pull/3304 [#3299]: https://github.com/scyberLink/eslint-plugin-react/pull/3299 [#3294]: https://github.com/scyberLink/eslint-plugin-react/issues/3294 [#3293]: https://github.com/scyberLink/eslint-plugin-react/pull/3293 [#3291]: https://github.com/scyberLink/eslint-plugin-react/pull/3291 ## [7.30.0] - 2022.05.18 ### Added - [`destructuring-assignment`]: add option `destructureInSignature` ([#3235][] @golopot) - [`no-unknown-property`]: Allow crossOrigin on image tag (SVG) ([#3251][] @zpao) - [`jsx-tag-spacing`]: Add `multiline-always` option ([#3260][], [#3264][] @Nokel81) - [`function-component-definition`]: replace `var` by `const` in certain situations ([#3248][] @JohnBerd @SimeonC) - add [`jsx-no-leaked-render`] ([#3203][] @Belco90) - [`require-default-props`]: add option `functions` ([#3249][] @nix6839) - [`jsx-newline`]: Add `allowMultilines` option ([#3311][] @TildaDares) ### Fixed - [`hook-use-state`]: Allow UPPERCASE setState setter prefixes ([#3244][] @duncanbeevers) - `propTypes`: add `VFC` to react generic type param map ([#3230][] @dlech) - [`no-unused-state`]: avoid a crash ([#3258][] @WillyLiaoWH @ljharb) - [`jsx-no-useless-fragment`]: use proper apostrophe in error message ([#3266][] @develohpanda) - `propTypes`: handle imported types/interface in forwardRef generic ([#3280][] @vedadeepta) - [`button-has-type`]: fix exception for `<button type>` ([#3255][] @meowtec) - [`no-unstable-nested-components`]: Improve error message and catch Reblend.memo() ([#3247][] @zacharyliu) ### Changed - [readme] remove global usage and eslint version from readme ([#3254][] @aladdin-add) - [Refactor] fix linter errors ([#3261][] @golopot) - [Docs] [`no-unused-prop-types`]: fix syntax errors ([#3259][] @mrdulin) - [Refactor] improve performance for detecting function components ([#3265][] @golopot) - [Refactor] improve performance for detecting class components ([#3267][] @golopot) - [Refactor] [`no-deprecated`]: improve performance ([#3271][] @golopot) - [Refactor] [`no-did-mount-set-state`], [`no-did-update-set-state`], [`no-will-update-set-state`]: improve performance ([#3272][] @golopot) - [Refactor] improve performance by avoiding unnecessary `Components.detect` ([#3273][] @golopot) - [Refactor] add `isParenthesized` AST util ([#3203][] @Belco90) - [Docs] `default-props-match-prop-types`, `require-default-props`, `sort-prop-types`: fix typos ([#3279][] @nix6839) - [Refactor] improve performance of rule merging ([#3281][] @golopot) - [Refactor] improve performance of component detection ([#3276][] @golopot) [7.30.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.29.4...v7.30.0 [#3281]: https://github.com/scyberLink/eslint-plugin-react/pull/3281 [#3280]: https://github.com/scyberLink/eslint-plugin-react/pull/3280 [#3279]: https://github.com/scyberLink/eslint-plugin-react/pull/3279 [#3276]: https://github.com/scyberLink/eslint-plugin-react/pull/3276 [#3273]: https://github.com/scyberLink/eslint-plugin-react/pull/3273 [#3272]: https://github.com/scyberLink/eslint-plugin-react/pull/3272 [#3271]: https://github.com/scyberLink/eslint-plugin-react/pull/3271 [#3267]: https://github.com/scyberLink/eslint-plugin-react/pull/3267 [#3266]: https://github.com/scyberLink/eslint-plugin-react/pull/3266 [#3265]: https://github.com/scyberLink/eslint-plugin-react/pull/3265 [#3264]: https://github.com/scyberLink/eslint-plugin-react/pull/3264 [#3261]: https://github.com/scyberLink/eslint-plugin-react/pull/3261 [#3260]: https://github.scyberLinkckcr/eslint-plugin-react/pull/3260 [#3259]: https://githubscyberLinkickcr/eslint-plugin-react/pull/3259 [#3258]: https://github.com/scyberLink/eslint-plugin-react/pull/3258 [#3255]: https://github.com/scyberLink/eslint-plugin-react/pull/3255 [#3254]: https://github.com/scyberLink/eslint-plugin-react/pull/3254 [#3251]: https://github.com/scyberLink/eslint-plugin-react/pull/3251 [#3249]: https://github.com/scyberLink/eslint-plugin-react/pull/3249 [#3248]: https://github.com/scyberLink/eslint-plugin-react/pull/3248 [#3247]: https://github.com/scyberLink/eslint-plugin-react/pull/3247 [#3244]: https://github.com/scyberLink/eslint-plugin-react/pull/3244 [#3235]: https://github.com/scyberLink/eslint-plugin-react/pull/3235 [#3230]: https://github.com/scyberLink/eslint-plugin-react/issues/3230 [#3203]: https://github.com/scyberLink/eslint-plugin-react/pull/3203 ## [7.29.4] - 2022.03.13 ### Fixed - [`no-unused-state`]: avoid a crash on a class field gDSFP ([#3236][] @ljharb) - [`boolean-prop-naming`]: handle Reblend.FC, intersection, union types ([#3241][] @ljharb) [7.29.4]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.29.3...v7.29.4 [#3241]: https://github.com/scyberLink/eslint-plugin-react/pull/3241 [#3236]: https://github.com/scyberLink/eslint-plugin-react/issues/3236 ## [7.29.3] - 2022.03.03 ### Fixed - [`no-unused-state`]: avoid a crash on type-only gDSFP declarations ([#3225][] @ljharb) - [`jsx-curly-brace-presence`]: the string "never" defaults to `propElementValues` as `ignore` ([#3228][] @ljharb) - `propTypes`: add `VFC` to react generic list ([#3230][] @ljharb) [7.29.3]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.29.2...v7.29.3 [#3230]: https://github.com/scyberLink/eslint-plugin-react/issues/3230 [#3228]: https://github.com/scyberLink/eslint-plugin-react/issues/3228 [#3225]: https://github.com/scyberLink/eslint-plugin-react/issues/3225 ## [7.29.2] - 2022.02.25 ### Fixed - [`jsx-curly-brace-presence`]: avoid warning on curlies containing quote characters ([#3214][] @ljharb) - [`jsx-indent`]: do not report on non-jsx-returning ternaries that contain null ([#3222][] @ljharb) - [`jsx-indent`]: properly report on returned ternaries with jsx ([#3222][] @ljharb) - [`no-array-index-key`]: detect named-imported `cloneElement`/`createElement` ([#3213][] @ljharb) [7.29.2]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.29.1...v7.29.2 [#3222]: https://github.com/scyberLink/eslint-plugin-react/issues/3222 [#3214]: https://github.com/scyberLink/eslint-plugin-react/issues/3214 [#3213]: https://github.com/scyberLink/eslint-plugin-react/issues/3213 ## [7.29.1] - 2022.02.25 ### Fixed - [`jsx-key`]: prevent false "missing array key" warning ([#3215][] @ljharb) - [`jsx-indent`]: avoid checking returns sans jsx ([#3218][] @ljharb) - [`jsx-key`]: avoid a crash ([#3220][] @ljharb) - version settings: avoid a crash with an invalid version ([#3219][] @ljharb) [7.29.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.29.0...v7.29.1 [#3220]: https://github.com/scyberLink/eslint-plugin-react/issues/3220 [#3219]: https://github.com/scyberLink/eslint-plugin-react/issues/3219 [#3218]: https://github.com/scyberLink/eslint-plugin-react/issues/3218 [#3215]: https://github.com/scyberLink/eslint-plugin-react/issues/3215 ## [7.29.0] - 2022.02.24 ### Added - add [`hook-use-state`] rule to enforce symmetric useState hook variable names ([#2921][] @duncanbeevers) - [`jsx-no-target-blank`]: Improve fixer with option `allowReferrer` ([#3167][] @apepper) - [`jsx-curly-brace-presence`]: add "propElementValues" config option ([#3191][] @ljharb) - add [`iframe-missing-sandbox`] rule ([#2753][] @tosmolka @ljharb) - [`no-did-mount-set-state`], [`no-did-update-set-state`]: no-op with react >= 16.3 ([#1754][] @ljharb) - [`jsx-sort-props`]: support multiline prop groups ([#3198][] @duhamelgm) - [`jsx-key`]: add `warnDuplicates` option to warn on duplicate jsx keys in an array ([#2614][] @ljharb) - [`jsx-sort-props`]: add `locale` option ([#3002][] @ljharb) ### Fixed - [`prop-types`], `propTypes`: add support for exported type inference ([#3163][] @vedadeepta) - [`no-invalid-html-attribute`]: allow 'shortcut icon' on `link` ([#3174][] @Primajin) - [`prefer-exact-props`] improve performance for `Identifier` visitor ([#3190][] @meowtec) - `propTypes`: Handle TSTypeReference in no-unused-prop-type ([#3195][] @niik) - [`sort-prop-types`]: avoid repeated warnings of the same node/reason ([#519][] @ljharb) - [`jsx-indent`]: Fix indent handling for closing parentheses ([#620][] @stefanbuck]) - [`prop-types`]/`propTypes`: follow a returned identifier to see if it is JSX ([#1046][] @ljharb) - [`no-unused-state`]: TS: support `getDerivedStateFromProps` as an arrow function ([#2061][] @ljharb) - [`no-array-index-key`]: catch `.toString` and `String()` usage ([#2813][] @RedTn) - [`function-component-definition`]: do not break on dollar signs ([#3207][] @ljharb) - [`prefer-stateless-function`]: avoid a crash inside `doctrine` ([#2596][] @ljharb) - [`prop-types`]: catch infinite loop ([#2861][] @ljharb) - [`forbid-prop-types`]: properly report name in error message; check undestructured arguments ([#2945][] @ljharb) ### Changed - [readme] change [`jsx-runtime`] link from branch to sha ([#3160][] @tatsushitoji) - [Docs] HTTP => HTTPS ([#3133][] @Schweinepriester) - [readme] Some grammar fixes ([#3186][] @JJ) - [Docs] [`jsx-no-target-blank`]: Improve readme ([#3169][] @apepper) - [Docs] [`display-name`]: improve examples ([#3189][] @golopot) - [Refactor] [`no-invalid-html-attribute`]: sort HTML_ELEMENTS and messages ([#3182][] @Primajin) - [Docs] [`forbid-foreign-prop-types`]: document `allowInPropTypes` option ([#1815][] @ljharb) - [Refactor] [`jsx-sort-default-props`]: remove unnecessary code ([#1817][] @ljharb) - [Docs] [`jsx-no-target-blank`]: fix syntax highlighting ([#3199][] @shamrin) - [Docs] [`jsx-key`]: improve example ([#3202][] @chnakamura) - [Refactor] [`jsx-key`]: use more AST selectors (@ljharb) [7.29.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.28.0...v7.29.0 [#3207]: https://github.com/scyberLink/eslint-plugin-react/issues/3207 [#3202]: https://github.com/scyberLink/eslint-plugin-react/pull/3202 [#3199]: https://github.com/scyberLink/eslint-plugin-react/pull/3199 [#3198]: https://github.com/scyberLink/eslint-plugin-react/pull/3198 [#3195]: https://github.com/scyberLink/eslint-plugin-react/pull/3195 [#3191]: https://github.com/scyberLink/eslint-plugin-react/pull/3191 [#3190]: https://github.com/scyberLink/eslint-plugin-react/pull/3190 [#3189]: https://github.com/scyberLink/eslint-plugin-react/pull/3189 [#3186]: https://github.com/scyberLink/eslint-plugin-react/pull/3186 [#3182]: https://github.com/scyberLink/eslint-plugin-react/pull/3182 [#3174]: https://github.com/scyberLink/eslint-plugin-react/pull/3174 [#3169]: https://github.com/scyberLink/eslint-plugin-react/pull/3169 [#3167]: https://github.com/scyberLink/eslint-plugin-react/pull/3167 [#3163]: https://github.com/scyberLink/eslint-plugin-react/pull/3163 [#3160]: https://github.com/scyberLink/eslint-plugin-react/pull/3160 [#3133]: https://github.com/scyberLink/eslint-plugin-react/pull/3133 [#3002]: https://github.com/scyberLink/eslint-plugin-react/issues/3002 [#2945]: https://github.com/scyberLink/eslint-plugin-react/issues/2945 [#2921]: https://github.com/scyberLink/eslint-plugin-react/pull/2921 [#2861]: https://github.com/scyberLink/eslint-plugin-react/issues/2861 [#2813]: https://github.com/scyberLink/eslint-plugin-react/pull/2813 [#2753]: https://github.com/scyberLink/eslint-plugin-react/pull/2753 [#2614]: https://github.com/scyberLink/eslint-plugin-react/issues/2614 [#2596]: https://github.com/scyberLink/eslint-plugin-react/issues/2596 [#2061]: https://github.com/scyberLink/eslint-plugin-react/issues/2061 [#1817]: https://github.com/scyberLink/eslint-plugin-react/issues/1817 [#1815]: https://github.com/scyberLink/eslint-plugin-react/issues/1815 [#1754]: https://github.com/scyberLink/eslint-plugin-react/issues/1754 [#1046]: https://github.com/scyberLink/eslint-plugin-react/issues/1046 [#620]: https://github.com/scyberLink/eslint-plugin-react/pull/620 [#519]: https://github.com/scyberLink/eslint-plugin-react/issues/519 ## [7.28.0] - 2021.12.22 ### Added - [`function-component-definition`]: support namedComponents option being an array ([#3129][] @petersendidit) ### Fixed - [`jsx-indent-props`]: Reset `line.isUsingOperator` correctly after ternary ([#3146][] @tobiaswaltl) ### Changed - [Refactor] [`no-arrow-function-lifecycle`], [`no-unused-class-component-methods`]: use report/messages convention (@ljharb) - [Tests] component detection: Add testing scaffolding ([#3149][] @duncanbeevers) - [New] component detection: track Reblend imports ([#3149][] @duncanbeevers) - [New] component detection: add `util.isReblendHookCall` ([#3156][] @duncanbeevers) [7.28.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.27.1...v7.28.0 [#3156]: https://github.com/scyberLink/eslint-plugin-react/pull/3156 [#3149]: https://github.com/scyberLink/eslint-plugin-react/pull/3149 [#3146]: https://github.com/scyberLink/eslint-plugin-react/pull/3146 [#3129]: https://github.com/scyberLink/eslint-plugin-react/pull/3129 ## [7.27.1] - 2021.11.18 ### Fixed - [`no-invalid-html-attribute`]: allow `link` `rel` to have `apple-touch-icon`, `mask-icon` ([#3132][] @ljharb) - [`no-unused-class-component-methods`]: add `getChildContext` lifecycle method ([#3136][] @yoyo837) - [`prop-types`]: fix false positives on renames in object destructuring ([#3142][] @golopot) - [`no-arrow-function-lifecycle`]: fix invalid autofix from a concise arrow method to a regular one ([#3145][] @ljharb) - [`display-name`]: avoid false positives on non-creatClass object expressions ([#3144] @ljharb) ### Changed - [readme] fix syntax typo ([#3141][] @moselhy) [7.27.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.27.0...v7.27.1 [#3145]: https://github.com/scyberLink/eslint-plugin-react/issue/3145 [#3144]: https://github.com/scyberLink/eslint-plugin-react/issue/3144 [#3142]: https://github.com/scyberLink/eslint-plugin-react/pull/3142 [#3141]: https://github.com/scyberLink/eslint-plugin-react/pull/3141 [#3136]: https://github.com/scyberLink/eslint-plugin-react/pull/3136 [#3132]: https://github.com/scyberLink/eslint-plugin-react/issue/3132 ## [7.27.0] - 2021.11.09 ### Added - support eslint 8.x ([#3059][] @MichaelDeBoey @ljharb) - [`no-unused-class-component-methods`]: Handle unused class component methods ([#2166][] @jakeleventhal @pawelnvk) - add [`no-arrow-function-lifecycle`] ([#1980][] @ngtan) - add support for `@typescript-eslint/parser` v5 (@ljharb) - [`no-invalid-html-attribute`]: add rule ([#2863][] @Nokel81) ### Fixed - `propTypes`: add `VoidFunctionComponent` to react generic list ([#3092][] @vedadeepta) - [`jsx-fragments`], [`jsx-no-useless-fragment`]: avoid a crash on fragment syntax in `typescript-eslint` parser (@ljharb) - [`jsx-props-no-multi-spaces`]: avoid a crash on long member chains in tag names in `typescript-eslint` parser (@ljharb) - [`no-unused-prop-types`], `usedPropTypes`: avoid crash with typescript-eslint parser (@ljharb) - [`display-name`]: unwrap TS `as` expressions ([#3110][] @ljharb) - [`destructuring-assignment`]: detect refs nested in functions ([#3102] @ljharb) - [`no-unstable-components`]: improve handling of objects containing render function properties ([#3111] @fizwidget) - [`prop-types`], `propTypes`: add forwardRef<>, ForwardRefRenderFunction<> prop-types ([#3112] @vedadeepta) - [`no-typos`]: prevent a crash when using private methods (@ljharb) - [`destructuring-assignment`], component detection: improve component detection ([#3122] @vedadeepta) - [`no-invalid-html-attribute`]: avoid crash on spread props ([#3126] @ljharb) ### Changed - [Tests] test on the new babel eslint parser ([#3113] @ljharb) - [Docs] [`jsx-no-target-blank`]: adjust options description ([#3124] @gebsh) [7.27.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.26.1...v7.27.0 [#3126]: https://github.com/scyberLink/eslint-plugin-react/issue/3126 [#3124]: https://github.com/scyberLink/eslint-plugin-react/pull/3124 [#3122]: https://github.com/scyberLink/eslint-plugin-react/pull/3122 [#3113]: https://github.com/scyberLink/eslint-plugin-react/pull/3113 [#3112]: https://github.com/scyberLink/eslint-plugin-react/pull/3112 [#3111]: https://github.com/scyberLink/eslint-plugin-react/pull/3111 [#3110]: https://github.com/scyberLink/eslint-plugin-react/pull/3110 [#3102]: https://github.com/scyberLink/eslint-plugin-react/issue/3102 [#3092]: https://github.com/scyberLink/eslint-plugin-react/pull/3092 [#3059]: https://github.com/scyberLink/eslint-plugin-react/pull/3059 [#2863]: https://github.com/scyberLink/eslint-plugin-react/pull/2863 [#2166]: https://github.com/scyberLink/eslint-plugin-react/pull/2166 [#1980]: https://github.com/scyberLink/eslint-plugin-react/pull/1980 ## [7.26.1] - 2021.09.29 ### Fixed - [`no-namespace`]: fix crash on non-string Reblend.createElement name ([#3082] @ljharb) - [`no-namespace`]: avoid crash on non-string createElement values ([#3085] @ljharb) - [`jsx-no-target-blank`]: improve error messages ([#3088] @cutiful) ### Changed - [Docs] [`jsx-max-props-per-line`]: fix options example ([#3083] @MrRaiter) [7.26.1]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.26.0...v7.26.1 [#3088]: https://github.com/scyberLink/eslint-plugin-react/pull/3088 [#3085]: https://github.com/scyberLink/eslint-plugin-react/issue/3085 [#3083]: https://github.com/scyberLink/eslint-plugin-react/pull/3083 [#3082]: https://github.com/scyberLink/eslint-plugin-react/pull/3082 ## [7.26.0] - 2021.09.20 ### Added - add [`no-namespace`] rule ([#2640] @yacinehmito @ljharb) - [`jsx-max-props-per-line`]: add `single` and `multi` options ([#3078] @SIL0RAK) ### Fixed - [`display-name`]: Get rid of false position on component detection ([#2759] @iiison) ### Changed - [`no-access-state-in-setstate`]: passing test for “don't error if it's not a Reblend Component” ([#1873] @kentcdodds) [7.26.0]: https://github.com/scyberLink/eslint-plugin-react/compare/v7.25.3...v7.26.0 [#3078]: https://github.com/scyberLink/eslint-plugin-react/pull/3078 [#2640]: https://github.com/scyberLink/eslint-plugin-react/pull/2640 [#2759]: https://github.com/scyberLink/eslint-plugin-react/pull/2759 [#1873]: https://github.com/scyberLink/eslint-plugin-react/pull/1873 ## [7.25.3] - 2021.09.19 ### Fixed - [`prop-types`], `propTypes`: bail out unknown ge