diff --git a/.changeset/brown-walls-float.md b/.changeset/brown-walls-float.md
new file mode 100644
index 00000000..a687b001
--- /dev/null
+++ b/.changeset/brown-walls-float.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-jsx-a11y-x": patch
+---
+
+chore: cleanup dependencies with built-in replacements
diff --git a/.env.yarn b/.env.yarn
deleted file mode 100644
index e69de29b..00000000
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0d6c0584..a36845e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,728 +6,6 @@
- [#13](https://github.com/es-tooling/eslint-plugin-jsx-a11y-x/pull/13) [`b167ac4`](https://github.com/es-tooling/eslint-plugin-jsx-a11y-x/commit/b167ac4d6fd5f5349363ee652e62c003ade55edb) Thanks [@JounQin](https://github.com/JounQin)! - chore: start migration, yarn v4, changesets, workflows
-All notable changes to this project will be documented in this file.
+## Legacy `jsx-ast-utils`'s Changelog
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [v6.10.2](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.10.1...v6.10.2) - 2024-10-25
-
-### Fixed
-
-- [patch] `no-redundandant-roles`: allow `<img src="*.svg" role="img" />` [`#936`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/936)
-
-### Commits
-
-- [meta] fix changelog URLs [`0d01a1a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0d01a1aff796802bca70183b24978ffebdbef073)
-- [Refactor] remove no-longer-needed `es-iterator-helpers` [`aa075bd`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/aa075bd1897e0b0bb61683e4da68558f38511dae)
-- [Refactor] avoid spreading things that are already arrays [`d15d3ab`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d15d3abace7afe833d0988eaf3fb7cc166c05c06)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register` [`5dad7c4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5dad7c4fdfdc56c6e488fab54f25f602430dad30)
-- [Tests] `aria-role`: Add valid test for `<svg role="img" />` [`daba189`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/daba18974473bce1301ffaafb822558a9e1738ae)
-- [Docs] `label-has-associated-control`: add line breaks for readability [`0bc6378`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0bc63781c8f284ac6bef00321763c13c5bea6b9f)
-- [Tests] `label-has-associated-control`: add additional test cases [`30d2318`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/30d23189d0b6354750c31a622204a9dc412dc2c1)
-- [Tests] Add tests to reinforce required attributes for role="heading" [`d92446c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d92446c6e608617a4c75173e8b0917c06be14dc6)
-
-## [v6.10.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.10.0...v6.10.1) - 2024-10-20
-
-### Commits
-
-- [Fix] handle interactive/noninteractive changes from aria-query [`4925ba8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4925ba8d0bf80a4b1d8e8645d310590bf1b40b64)
-- [Docs] Use consistent spelling of 'screen reader' [`cb6788c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cb6788c56d7108f2faa102d041dfa37dbc0e9f59)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `auto-changelog`, `eslint-plugin-import`, `tape` [`518a77e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/518a77e1e23fb2b1df2e8a97d14bfdd08aded797)
-- [Deps] update `es-iterator-helpers`, `string.prototype.includes` [`eed03a3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/eed03a31f313442158cf7d702443723ad4800dec)
-- [meta] package.json - Update jscodeshift & remove babel-jest [`2ee940c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/2ee940c5ae87bcd0d384b6dc565d630ea70e103a)
-- [Docs] Remove accidental whitespace in CONTRIBUTING.md [`a262131`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a26213142854ffe3d931fab35f0ee4e6ae101875)
-- [Deps] unpin `aria-query` [`e517937`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e51793729e5e366e30d2f3bf0f253f2bdb9e6523)
-
-## [v6.10.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.9.0...v6.10.0) - 2024-09-03
-
-### Fixed
-
-- [New] `label-has-associated-control`: add additional error message [`#1005`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/1005)
-- [Fix] `label-has-associated-control`: ignore undetermined label text [`#966`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/966)
-
-### Commits
-
-- [Tests] switch from jest to tape [`a284cbf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a284cbf4eb21292c4cff87f02be0bfb82764757f)
-- [New] add eslint 9 support [`deac4fd`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/deac4fd06eff4c0f5da27611c2a44a009b7e7fda)
-- [New] add `attributes` setting [`a1ee7f8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a1ee7f8810efafe416eb5d7f6eb0505b52873495)
-- [New] allow polymorphic linting to be restricted [`6cd1a70`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6cd1a7011446e3925f2b49c51ff26246a21491d1)
-- [Tests] remove duplicate tests [`74d5dec`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/74d5decb6f2e42c05ce40a45630041fd695a2e7f)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types` [`6eca235`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6eca2359f5457af72dbfba265b73297c9232cb3e)
-- [readme] remove deprecated travis ci badge; add github actions badge [`0be7ea9`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0be7ea95f560c6afc6817d381054d914ebd0b2ca)
-- [Tests] use `npm audit` instead of `aud` [`05a5e49`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/05a5e4992900e0d5d61e29e13046c90797b68a7c)
-- [Deps] update `axobject-query` [`912e98c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/912e98c425ef9fcc2d7d22b45b4f7e3b445112a5)
-- [Deps] unpin `axobject-query` [`75147aa`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/75147aa68888fc150a4efea5b99809969bdc32b2)
-- [Deps] update `axe-core` [`27ff7cb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/27ff7cbf562bf2685fd5a6062e58eb4727cb85c6)
-- [readme] fix jsxA11y import name [`ce846e0`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/ce846e00414c41676a6a8601022059878bcc0b89)
-- [readme] fix typo in shareable config section in readme [`cca288b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cca288b73a39fa0932a57c02a7a88de68fc971fc)
-
-## [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.8.0...v6.9.0) - 2024-06-19
-
-### Fixed
-
-- [Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/969)
-- [meta] fix changelog links [`#960`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/960)
-
-### Commits
-
-- [New] add support for Flat Config [`6b5f096`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6b5f096f10b47326d68e2893152a48a79c8555b4)
-- Revert "[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/75d5dd722bd67186d97afa7b151fd6fee5885c70)
-- [Robustness] use `safe-regex-test` [`4c7e781`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4c7e7815c12a797587bb8e3cdced7f3003848964)
-- [actions] update actions/checkout [`51a1ca7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/51a1ca7b4d83d4fbd1ea62888f7f2dc21ece6788)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1271ac1d6e5dcf9a2bc2c086faaf062335629171)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/540cb7aefead582f237071d55a40f098d0885478)
-- [Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5d1440825a8838ae10dc94cc3a4a7e1e967644b4)
-- [Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/32fd82c628d7f3e4ec8c06a1994f4eca1be2be4f)
-- [Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d1b41142248a7cca45bb5f0b96ff23ee87fb9411)
-- [Fix] ensure `summary` remains non-interactive [`6a048da`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6a048dacf2b98eaa204e2a5a70dc7e3d48d9463a)
-- [Deps] remove `@babel/runtime` [`0a98ad8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0a98ad83ffa7f4b66458cc1c39db2ef32bb2c480)
-- [New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on <li> [`c0733f9`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/c0733f94031fe3eec6b4d54176afe47929bb0a84)
-- [Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0d5321a5457c5f0da0ca216053cc5b4f571b53ae)
-- [actions] pin codecov to v3.1.5 [`961817f`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/961817f61fa56cd7815c6940c27ef08469b1516b)
-- [Deps] unpin `axe-core` [`b3559cf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b3559cf89be6b5352cd77ffa025831b3d793d565)
-- [Deps] move `object.entries` to dev deps [`1be7b70`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1be7b709eececd83f1d5f67a60b2c97cfe9a561d)
-- [Deps] update `@babel/runtime` [`2a48abb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/2a48abb5effa911e7d1a8575e1c9768c947a33f1)
-- [Deps] update `@babel/runtime` [`1adec35`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1adec3517fc2c9797212ca4d38858deed917e7be)
-
-## [v6.8.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.7.1...v6.8.0) - 2023-11-01
-
-### Merged
-
-- Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/727)
-
-### Fixed
-
-- [Docs] `aria-activedescendant-has-tabindex`: align with changes from #708 [`#924`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/924)
-- [Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/918)
-
-### Commits
-
-- [Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/ce4d57f853ce7f71bd31edaa524eeb3ff1d27cf1)
-- [Refactor] use `es-iterator-helpers` [`52de824`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/52de82403752bb2ccbcac3379925650a0112d4af)
-- [New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/db64898fa591f17827053ad3c2ddeafdf7297dd6)
-- [New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/fffb05b38c8eee926ee758e9ceb9eae4e697fbdd)
-- [Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/64bfea6352a704470a760fa6ea25cfc5a50414db)
-- [Refactor] use `hasown` instead of `has` [`9a8edde`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9a8edde7f2e80b7d104dd576f91526c6c4cbebb9)
-- [actions] update used actions [`10c061a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/10c061a70cac067641e3a084d0fb464960544505)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6d5022d4894fa88d3c15c8b858114e8b2a8a440f)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4dc7f1e5c611aeea2f81dc50d4ec0b206566181a)
-- [New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e6bfd5cb7c060fcaf54ede85a1be74ebe2f60d1e)
-- [patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/eadd70cb1d0478c24538ee7604cf5493a96c0715)
-- [Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/46ffbc38512be4ed3db2f0fcd7d21af830574f63)
-- [Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5999555714f594c0fccfeeab2063c2658d9e4392)
-- [Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/8d8f0169dbaaa28143cf936cba3046c6e53fa134)
-- [patch] move `semver` from Deps to Dev Deps [`4da13e7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4da13e79743ad2e1073fc2bb682197e1ba6dbea3)
-- [Deps] update `ast-types-flow` [`b755318`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b755318e675e73a33b1bb7ee809abc88c1927408)
-- [Dev Deps] update `eslint-plugin-import` [`f1c976b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f1c976b6af2d4f5237b481348868a5216e169296)
-- [Deps] unpin `language-tags` [`3d1d26d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3d1d26d89d492947cbf69f439deec9e7cfaf9867)
-- [Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1271153653ada3f8d95b8e39f0164d5b255abea0)
-- [Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f0d2ddb65f21278ad29be43fb167a1092287b4b1)
-- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0c278f4805ec18d8ee4d3e8dfa2f603a28d7e113)
-
-## [v6.7.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.7.0...v6.7.1) - 2023-01-11
-
-### Commits
-
-- [Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b01219edc2eb289c7a068b4fa195f2ac04e915fa)
-
-## [v6.7.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.6.1...v6.7.0) - 2023-01-09
-
-### Merged
-
-- New rule: prefer-tag-over-role [`#833`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/833)
-
-### Fixed
-
-- [Tests] `aria-role`: add now-passing test [`#756`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/756)
-- [Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/892)
-- [New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/881)
-
-### Commits
-
-- [Docs] automate docs with `eslint-doc-generator` [`6d7a857`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6d7a857eccceb58dabfa244f6a196ad1697c01a4)
-- [Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3d77c845a98b6fc8cf10c810996278c02e308f35)
-- [New] add `anchor-ambiguous-text` rule [`7f6463e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/7f6463e5cffd1faa5cf22e3b0d33465e22bd10e1)
-- [New] add `getAccessibleChildText` util [`630116b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/630116b334e22db853a95cd64e20b7df9f2b6dc8)
-- [New] Add `isFocusable` utils method [`e199d17`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e199d17db0b6bf1d917dab13a9690876ef6f77e3)
-- [Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6b9855b9c3633308004960594327a10bc2551ad2)
-- [Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9aa878bc39769f6c7b31c72bd1140c1370d202f1)
-- [New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bbae2c46ab4ae94122be6c898f2ef313c6154c27)
-- [New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `<img />` elements [`bb84abc`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bb84abc793435a25398160242c5f2870b83b72ca)
-- [meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6ad23124582741385df50e98d5ed0d070f86eafe)
-- [meta] add `auto-changelog` [`283817b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/283817b82252ef4a6395c22585d8681f97305ca0)
-- [Docs] missing descriptions in some rules [`79b975a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/79b975ab7185cc4fbf6a3adea45c78fac2162d77)
-- [Deps] update `aria-query`, `axobject-query` [`7b3cda3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/7b3cda3854451affe20b2e4f2dd57cf317dd7d1b)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0852947cfd57a34353a97c67f6de28dbcc8be0e3)
-- [meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/65be35b0f6c6cf8b79e9a748cb657a64b78c6535)
-- [Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/60c2df5388a3f841a7780eafe1a0fbb44056743d)
-- [Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4abc751d87a8491219a9a3d2dacd80ea8adcb79b)
-- [Deps] update `@babel/runtime`, `axe-core` [`89f766c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/89f766cd40fd32ada2020856b251ad6e34a6f365)
-- [meta] run the build in prepack, not prepublish [`e411ce3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e411ce35cfa58181d375544ba5204c35db83678c)
-- [Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cccdb625d6237538fb4443349870293e8df818eb)
-- [Dev Deps] update `markdown-magic` [`3382059`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3382059feb5367c79e049943772e3a6e27e77609)
-- [Fix] expose `prefer-tag-over-role` [`38d52f8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/38d52f856a18d444e6db7d16d373e0d18c5b287d)
-- [Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9a2af0172cefad7fdce869401b2df42536812152)
-- [Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f84bb746857cfbc075f8e7104b3a16dddb66be7c)
-- [Dev Deps] update `@babel/core` [`cf3f8d0`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cf3f8d0a6bde6dc5ad39a96a6ed1912c1ad80e89)
-- [Deps] update `axe-core` [`0a73cf4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0a73cf4ad0adca0bef0a383a10a14597acef5713)
-- [Deps] update `@babel/runtime` [`053f04d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/053f04da8b60d259e4c92f214ffba07a14f3ec61)
-- [Deps] update `@babel/runtime` [`bccf0ae`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bccf0aeab8dd337c5f134f892a6d3588fbc29bdf)
-- [Deps] update `jsx-ast-utils` [`c9687cc`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/c9687cc2a1b7f5f72c8181a9fd6a47f49c373240)
-- [readme] Preventing code repetition in user's eslint config file [`8b889bf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/8b889bff2731c9db6988c88c0d76bdbff17bd3c5)
-- [Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0bdf95b41cce32c8b7916367e7c8c663411d881c)
-
-
-
-# 6.6.1 / 2022-07-21
-
-- 38405ad [Fix] `no-interactive-tabindex`: allow role assignments using a ternary with literals on both sides
-- 7524e0c [Fix] `no-static-element-interactions`: allow role assignments using a ternary with literals on both sides (#865)
-- 1c06306 [readme] properly describe rule settings in builtin configs
-- 0c19f02 [Docs] `no-noninteractive-tabindex`, `no-static-element-interactions`: document `allowExpressionValues` (#870)
-- 2362832 [readme] added link to redirect eslint to relevant docs (#862)
-- 2c6926c [Deps] unpin `axe-core`
-- b78f19d [Deps] pin `axe-core` to v4.4.1, due to a breaking change in a patch
-- 768910e [Deps] update `@babel/runtime`
-- f0e04ce [Deps] update `@babel/runtime`, `jsx-ast-utils`
-- 93b2a9d [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`
-- a962211 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`
-- 0d2bc43 [Tests] `no-noninteractive-element-interactions`: add passing test cases (#876)
-- ffefbad [Tests] `no-noninteractive-element-interactions`: add passing tests for form with onSubmit (#871)
-- e7d405d [Tests] `no-static-element-interactions`: add passing test cases
-
- # 6.6.0 / 2022-06-23
-
-- 566011b [New] `aria-role`: add `allowedInvalidRoles` option (#828)
-- 64dcac6 [New] Introduce a plugin-wide setting for custom components. (#844)
-- ce2c328 [Fix] `no-redundant-roles`, `role-supports-aria-props`: Remove implicit role from dl element (#848)
-- fb20bc4 [Refactor] `role-supports-aria-props`: clean up the logic a bit
-- 1826628 [Refactor] reduce egregious use of array spread, in favor of `[].concat` idiom
-- 0f1615a [Docs] `no-static-element-interactions`: Update error message (#843)
-- 9980d1d [Docs] Add infrastructure for auto-generating markdown table and list (#837)
-- f878d3b [Docs] Update project readme (#831)
-- aea7671 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `jsx-ast-utils`
-- d74173a [Deps] update `jsx-ast-utils`
-- f6ba03c [Deps] update `@babel/runtime`, `jsx-ast-utils`
-- 547dab4 [Deps] update `@babel/runtime`, `axe-core`, `minimatch`
-- baaf791 [Deps] update `@babel/runtime`, `minimatch`, `semver`
-- c015fef [Deps] update `@babel/runtime`, `axe-core`, `damerau-levenshtein`
-- 832cbd6 [meta] add `export default` instead of `module.exports` (#861)
-- ee933a2 [meta] Add CONTRIBUTING.md to solicit contributions (#846)
-- fa3c869 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-eslint-plugin`, `eslint-plugin-flowtype`, `eslint-plugin-import`
-- fb3d51e [Dev Deps] update `@babel/core`, `@babel/register`, `eslint-plugin-import`, `minimist`
-- 8c1df4d [Dev Deps] pin `@technote-space/doctoc` because v2.5 is a breaking change
-- fb071ab [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-plugin-eslint-plugin`
-- 5e966e5 [Dev Deps] update `@babel/cli`
-- f597f5b [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`
-- 287854a [Tests] Fix `npm run flow` (#856)
-- 112261c [Tests] skip fragment tests in eslint < 6
-- ea877c4 [Tests] `img-redundant-alt-test`: add passing tests (#832)
-- 685426d test: align usage of jest expect across tests (#827)
-- c460a8b [Tests] move invalid test case to valid; changed in axe-core v4.4
-
- # 6.5.1 / 2021-11-10
-
-- 8f7d0b0 [Fix] properly build `module.exports` (#824)
-- 2fd2087 [Dev Deps] update `eslint-plugin-import`
-
- # 6.5.0 / 2021-11-09
-
-- 0f5f582 [New] support ESLint 8.x (#810)
-- 1dbc416 [Deps] update `@babel/runtime`, `axe-core`
-- 4043d31 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-config-airbnb-base`
-- d143cba [Docs] HTTP => HTTPS (#823)
-- 309b040 [Docs] `anchor-has-content`: add missing close / for jsx succeed example (#821)
-- ba1e312 [eslint] simplify eslint command
-- 0269025 [meta] change all `master` references in URLs to `HEAD`
-- f1414cf [Dev Deps] add `eslint-plugin-eslint-plugin` (#818)
-- f44fc05 [meta] update URLs
-- df34872 [Refactor] switch to `export default` syntax for exporting rules (#819)
-- ff26b82 [meta] fix prepublish scripts
-- d4a57d8 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `jsx-ast-utils`
-- bd1dec6 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `eslint-plugin-import`, `estraverse`, `safe-publish-latest`
-- 434c4cf [Tests] do not test eslint 7 on node 11
-- aed7a20 [Tests] use `@babel/eslint-parser` instead of `babel-eslint` (#811)
-- 0021489 [actions] use codecov action
-- 1251088 [meta] delete FUNDING.yml in favor of `.github` repo
-- ecf7a27 [Docs] `scope`: replace duplicate `scope` word (#799)
-- 952af25 [Fix] `no-access-key`: Fix wording and grammar (#800)
-- 6cf7ac0 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-flowtype`, `eslint-plugin-import`
-- 79a35d4 [Deps] update `@babel/runtime`, `axe-core`, `damerau-levenshtein`
-- 2a9ab71 [Tests] delete `src/util/getComputedRole-test.js` test in node 6
-- 0c1c587 [Tests] `autocomplete-valid`: move some failed tests to passing
-- 8830902 [Tests] fix eslint < 7 not understanding `import type`
-- d57887c [Tests] ensure all tests run
-- 55e5c11 Support img role for canvas (#796)
-- 36102cd [meta] use `prepublishOnly` script for npm 7+
-- 2501a7f Remove the link-button focus css from the anchor-is-valid doc (#662)
-- d927625 Update recommended config to allow fieldset to have the radiogroup role (#746)
-- 5aa8db9 [Docs] Clarify the title of the strictness table in the main doc (#786)
-- df3c7ad [Docs] Document the similarity between html-has-lang and lang (#778)
-- 426d4c2 Fix Flow warnings (#785)
-- ecec8e4 Fully deprecate accessible-emoji rule (#782)
-- 8a0e43c [Tests] remove .travis.yml
-- f88bf6b [Dev Deps] update `flow-bin` to support aarch64 (#784)
-- 369f9db [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-flowtype`, `jscodeshift`
-- ce0785f [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `emoji-regex`
-- 2c2a2ad [actions] update to use `node/install` action
-- c275964 [Docs] `anchor-is-valid`: general cleanup (#728)
-- 3df059e [Docs] `no-redundant-roles`: Adds missing closing square bracket (#775)
-- 42ce5b7 [Docs] `anchor-is-valid`: Add Next.js case (#769)
-- 2e5df91 [Tests] fix tests breaking on npm 7
-- 066ccff [Docs] `no-noninteractive-tabindex`: Add example for tabIndex on seemingly non-interactive element (#760)
-- 6b19aa5 [Tests] migrate tests to Github Actions (#764)
-- 7e158e3 [meta] run `aud` in `posttest`
-- 71f390f [Tests] stop using coveralls
-- e54b466 [meta] add Automatic Rebase and Require Allow Edits workflows
-- 7d5511d [New] `label-has-associated-control`: Add glob support (#749)
-- 854da0c Ran npm update; latest packages (#763)
-- 8637aa7 (source/pr/734, fork/pr/26) [patch] `strict` config: Turn off `label-has-for` (#734)
-- d85ce54 [doc] Add link to MDN Aria documentation (#762)
-- 20b48a4 [patch] `no-onchange`: Remove rule from recommended/strict configs, and deprecate (#757)
-
- # 6.4.1 / 2020-10-26
-
-- f8a4496 Upgrade jsx-ast-utils to v3.1.0
-
- # 6.4.0 / 2020-10-26
-
-- 83e4ff2 [Deps] update `axe-core`, `jsx-ast-utils`
-- eb92b07 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `eslint-plugin-flowtype`, `eslint-plugin-import`, `estraverse`, `expect`, `object.assign`
-- 3d98d7a [Deps] update `@babel/runtime`, `axe-core`
-- f702f62 [readme] add Spanish translation
-- c2ae092 [Docs] `no-static-element-interactions`: Fixed rule name in comments
-- b90e20d Fix screenreader -> screen reader
-- 645900a Fixed rule name in comments
-- 381b9d6 [fix:634] Ignore control elements that are hidden
-- 2c47f0a [Fix] `autocomplete-valid`: workaround for axe not being able to handle `null`
-- 00bd6d8 Add failing test for autocomplete with dynamic type
-- 3c49c9a Add WCAG guidelines to rule documentation
-- 4ecaf35 Add a testcase for tablist to interactive supports focus
-- dac6864 Deprecate the accessible-emoji rule
-- 5191053 Update to axobject-query@2.2.0
-- b315698 Allow negative tabindex in aria-activedescendant-has-tabindex
-- 8e6fcd0 docs: fix travis badge now points to correct location at travis-ci.com
-- 2234df7 Account for additional control elements in label-has-associated-control
-- 5cbb718 Adding test cases for label tests
-- 66c425c Additional test case for no-redundant-roles
-
- # 6.3.1 / 2020-06-19
-
-- 765da0f Update to aria-query 4.2.2
-- d528e8c Fix aria-level allowed on elements wit role heading (#704)
-- 29c6859 [meta] remove yarn registry from npmrc, so publishing works
-- f52c206 chore(package): update estraverse to version 5.0.0
-
- # 6.3.0 / 2020-06-18
-
-- cce838a Update aria-query to 4.2.0
-- 121e8a4 Add two test cases found while upgrading to ARIA 1.2
-- 8059f51 Fix test failures raised by the upgrade to ARIA 1.2
-- 0d24e3a Update package.json
-- b1f412a Fix test failures in role-has-required-aria-props due to ARIA 1.2 updates
-- 74cec6e Fix test failures in no-noninteractive-element-interactions due to ARIA 1.2 updates
-- 835b89e Fix test failures in role-supports-aria-props-test due to ARIA 1.2 updates
-- 730319b Account for the null semantic generic role in ARIA 1.2
-- 7dfa7c9 Update aria-query from 4.0.1 to 4.0.2
-- 42098b9 [Refactor] `img-redundant-alt`: removing a use of `some`
-- a910d83 [Tests] `label-has-associated-control`: add test for
-- b273fe5 [New] Support ESLint 7.x
-- 1a97632 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `axobject-query`, `damerau-levenshtein`, `jsx-ast-utils`
-- b36976f [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-types`, `babel-eslint`, `babel-jest`, `coveralls`, `eslint-config-airbnb-base`, `eslint-plugin-flowtype`, `eslint-plugin-import`, `estraverse`, `in-publish`, `jest`, `minimist`, `rimraf`, `safe-publish-latest`
-- 89acdc4 fix: removing the use of the some function
-- 410ae43 chore(package): update eslint-plugin-flowtype to version 5.0.0
-- a87f83d fix(package): update emoji-regex to version 9.0.0
-- 71940e6 chore(package): update babel-preset-airbnb to version 5.0.0
-- d471f54 docs: Fix 404 links to WAI-ARIA spec
-- 42a2016 Fixes #669: use the `language-tags` package to check the `lang` rule
-- 7bcea20 [Tests] update axe-core
-- f13dc38 [Deps] Pin axe-core version
-- 33670bb fix: require missing 'autocomplete-valid' rule
-- aca4c37 chore(mouse-event): revert unrelated formatting changes
-- df1e275 fix(mouse-event): remove check from custom elements
-- 1a16a1c chore(package): update jscodeshift to version 0.7.0
-- 7a55cdd chore(package): update flow-bin to version 0.113.0
-- 8e0d22b Update aria-query and axobject-query to the latest versions
-- dd49060 Added test cases for an empty or undefined value of aria-label and aria-labelledby in alt-text
-- 1a7b94f Updated dependencies including eslint-config-airbnb-base
-- 3aea217 chore: replace ignoreNonDOM with inputComponents
-- 1848d00 feat(autocomplete-valid): add to recommended & strict config
-- 8703840 refactor: use to axe-cre 3.4 SerialVirtualNode format
-- 3519c7b chore: Remove axe VirtualNode abstraction
-- 9ac55c4 autocomplete-valid: Add inline comment
-- 44c6098 Update axe-core to 3.3.0
-- 9916990 new autocomplete-valid rule
-- 82f598e [Docs] examples: add language in code block for syntax highlight
-- 2529ad3 fixing casing issue on aria-props
-- 00926f2 Update README.md
-- ce5d121 Update README.md
-- 031574e chore(package): update flow-bin to version 0.103.0
-- e00e1db [meta] add FUNDING.yml
-- e1e5fae Fix readme file
-
- # 6.2.3 / 2019-06-30
-
-- [617] Add @babel/runtime to the dependencies
-
- # 6.2.2 / 2019-06-29
-
-- Update jsx-ast-utils to v2.2.1
-- Add @babel/cli to the dev dependencies
-- Update ESLint to v6
-- Update jsx-ast-utils to 2.2.0
-- Update flow-bin to version 0.102.0
-- [589] Allow expression statements for attribute values in no-noninteractive-tabindexlow-bin-0.101.0
-- [583] Allow expression values in attributes by configurationrror
-- [596] Adding a test case for no-static-element-interactionseper/flow-bin-0.101.0) Merge branch 'master' into greenkeeper/flow-bin-0.101.0
-- Only run branch test coverage on the master branch
-- chore(package): update flow-bin to version 0.100.0
-- Allow select as a valid child of label.
-- Allow Node 4 / ESLint 3 failure to unblock ESLint upgrade in PR #568
-- chore(package): update flow-bin to version 0.99.0
-- Remove rootDir from Jest path configs
-- (fix) Template literals with undefined evaluate to the string undefined.
-- adds more tests to “anchor-is-valid”
-- Fixes “anchor-is-valid” false positive for hrefs starting with the word “javascript”
-- chore(package): update eslint-plugin-flowtype to version 3.5.0
-- Modified no-static-element-interactions to pass on non-literal roles.
-- Added isNonLiteralProperty util method
-- [#399] Account for spread in parser options
-- [552] control-has-associated-label should allow generic links
-- [issue 392] ul role='list' test case
-- chore(package): update eslint to version 5.15.2
-- chore(package): update flow-bin to version 0.95.0
-- chore(package): update expect to version 24.3.1
-- Fix typo: defintions > definitions
-- docs: add proper title to links to axe website for media-has-caption
-- docs: removes deprecated rule label-has-for
-- docs: fix typo and couple grammatical errors in Readme
-- Ignore null/undefined values in role-supports-aria-props rule
-- Ignore undefined values in aria-proptypes rule
-- Ignore null values in aria-proptypes rule
-- set target for node 4
-
- # 6.2.1 / 2019-02-03
-
-- 9980e45 [fix] Prevent Error when JSXSpreadAttribute is passed to isSemanticRoleElement
-
- # 6.2.0 / 2019-01-25
-
-- 5650674 [new rule] control-has-associated-label checks interactives for a label
-- f234698 [docs] add How to manage IDs
-- 9924d03 [docs] document jsx-a11y/label-has-associated-control assert option
-- 77b9870 [docs] Add newlines below headings
-- 8244e43 [docs] Add syntax highlighting to example
-- 26f41c8 [docs] Change explanation for role="presentation" escape hatch
-- 33a1f94 [fix] - Purely decorative emojis do not need descriptions.
-- 29d20f7 [fix] (package): update emoji-regex to version 7.0.2
-- 0b63f73 [chore] (package): update flow-bin to version 0.88.0
-- baa1344 [fix] Disable jsx-a11y/label-has-for in recommended
-- 2c5fb06 [chore] (package): update jscodeshift to version 0.6.0
-- 87debc0 [fix] corrected no-noninteractive-element-to-interactive-role.md file
-- d56265b [chore] (package): update flow-bin to version 0.87.0
-- 477966f [fix] Update test for implicit role of `img`
-- f484ce3 [fix] No implicit role for `
` with `alt=""`
-- 6c33bcb [fix] Add select to the list of default control elements in label-has-associated-control
-- 011f8d9 [fix] Dialog and Alert roles can host keyboard listeners
-- 0f6a8af [fix] More easier `plugin:jsx-a11y/{recommended,strict}` configs
-- 3844248 [fix] Mark the replacement for label-has-for
-- 93265cb [fix] normalizedValues to values
-- 651366c [fix] Make aria-role case sensitive
-- 56d3b9a [fix] [484] Fix role-has-required-aria-props for semantic elements like input[checkbox]
-- 46e9abd [fix] Handle the type={truthy} case in jsx
-
- # 6.1.2 / 2018-10-05
-
-- [fix] Add link-type styling recommendation to anchor-is-valid #486
-- [fix] `label-has-for`: `textarea`s are inputs too #470
-
- # 6.1.1 / 2018-07-03
-
-- [fix] aria-proptypes support for idlist, #454
-- [fix] Image with expanded props throws 'The prop must be a JSXAttribute collected by the AST parser.', #459
-- [fix] label-has-for: broken in v6.1.0, #455
-
- # 6.1.0 / 2018-06-26
-
-- [new] Support for eslint v5, #451
-- [new] aria-query updated to latest version
-- [new] eslint-config-airbnb-base updated to the latest version
-- [deprecate] The rule label-has-for is deprecated and replaced with label-has-associated-control
-- [fix] heading-has-content updated to work with custom components, #431
-- [fix] aria-errormessage prop is now a valid ARIA property, #424
-
- # 6.0.2 / 2017-06-28
-
-- [fix] Prefix directories in `.npmignore` with `/` so it only matches the top-level directory
-
- # 6.0.1 / 2017-06-28
-
-- [temporary] Remove `src` and `flow` from package to resolve flow issues for consuming packages.
-
- # 6.0.0 / 2017-06-05
-
-- [new] Add rule `anchor-is-valid`. See documentation for configuration options. Thanks @AlmeroSteyn.
-- [breaking] `href-no-hash` replaced with `anchor-is-valid` in the recommended and strict configs. Use the `invalidHref` aspect (active by default) in `anchor-is-valid` to continue to apply the behavior provided by `href-no-hash`.
-- [breaking] Removed support for ESLint peer dependency at version ^2.10.2.
-- [update] The rule `label-has-for` now allows inputs nested in label tags. Previously it was strict about requiring a `for` attribute. Thanks @ignatiusreza and @mjaltamirano.
-- [update] New configuration for `interactive-supports-focus`. Recommended and strict configs for now contain a trimmed-down whitelist of roles that will be checked.
-- [fix] Incompatibility between node version 4 and 5. Thanks @evilebottnawi.
-- [fix] Missing README entry for `media-has-caption`. Thanks @ismail-syed.
-- [fix] README updates explaining recommended and strict configs. Thanks @Donaldini.
-- [fix] Updated to aria-query@0.7.0, which includes new ARIA 1.1 properties. Previously, the `aria-props` rule incorrectly threw errors for these new properties.
-
- # 5.1.1 / 2017-07-03
-
-- [fix] revert v6 breaking changes unintentionally added in v5.1 (#283)
-
-# 5.1.0 / 2017-06-26
-
-- [new] Support eslint v4. (#267)
-- [new] `label-has-for`: add "required" option to allow customization (#240)
-- [new] add `anchor-is-valid` (#224)
-- [new] `interactive-supports-focus`: Split interactive supports focus into tabbable and focusable cases (#236)
-- [new] `anchor-is-valid`: add `aspects` option (#251)
-- [Deps] Bump aria-query to 0.7.0
-
-# 5.0.3 / 2017-05-16
-
-- [fix] Remove `flow` directory from `.npmignore` to accommodate explicit imports from `v5.0.2`.
-
- # 5.0.2 / 2017-05-16
-
-- [fix] Explicitly import flow types to resolve flow failures in consuming projects.
-
- # 5.0.1 / 2017-05-07
-
-- [fix] Polyfill Array.includes for node < 6 support.
-
- # 5.0.0 / 2017-05-05
-
-- [breaking] Refactor `img-has-alt` rule into `alt-text` rule
-- [breaking] Rule `onclick-has-role` is removed. Replaced with `no-static-element-interactions` and `no-noninteractive-element-interactions`.
-- [breaking] Rule `onclick-has-focus` is removed. Replaced with `interactive-supports-focus`.
-- [new] - Add rule `media-has-caption` rule
-- [new] - Add `ignoreNonDOM` option to `no-autofocus`.
-- [new] - Add rule `no-interactive-element-to-noninteractive-role`
-- [new] - Add rule `no-noninteractive-element-to-interactive-role`
-- [new] - Add rule `no-noninteractive-tabindex`
-- [new] - Configs split into "recommended" and "strict".
-- [enhanced] - Configuration options added to `no-static-element-interactions` and `no-noninteractive-element-interactions`. Options allow for fine-tuning of elements and event handlers to check.
-
- # 4.0.0 / 2017-02-04
-
- Add new rules:
-
-- `jsx-a11y/accessible-emoji`
-- `jsx-a11y/aria-activedescendant-has-tabindex`
-- `jsx-a11y/iframe-has-title`
-- `jsx-a11y/no-autofocus`
-- `jsx-a11y/no-distracting-elements` _(breaking: consolidated no-marquee and no-blink into this rule.)_
-- `jsx-a11y/no-redundant-roles`
-- [fix] - redundant-alt to only check full words
-- [docs] - Documentation upgrades across the board.
-- [new] - Add `ignoreNonDom`
-- [dev] - Add script to scaffold new rule creation.
-
- # 3.0.2 / 2016-12-14
-
-- [fix] - make `aria-invalid` values true and false pass for rule `aria-proptypes`
-
- # 3.0.1 / 2016-10-11
-
-- [breaking] - Update all rule schemas to accept objects. This allows a future schema expansion to not be a breaking change.
-- [breaking] - All rules with schemas that accepted a string OR array, now only allows an array.
-- [new] - `href-no-hash` accepts new schema property `specialLink` to check for custom `href` properties on elements. (fixes [#76](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/76))
-- [breaking][fix] - `img-has-alt` now prefers `alt=""` over `role="presentation"`. You can set both, but not just `role="presentation"` by itself to ensure a11y across all devices.
-
-Note - see [rule documentation](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules) for updated schemas.
-
-# 2.2.3 / 2016-10-08
-
-- [fix] - Add `switch` aria role.
-- [devDependencies] - Updgrade dev dependencies and fix linting issues.
-
- # 2.2.2 / 2016-09-12
-
-- [fix] `x-has-content` rules now pass with children prop set.
-
- # 2.2.1 / 2016-08-31
-
-- [fix] Update `tablist` role to include missing property `aria-multiselectable`.
-
- # 2.2.0 / 2016-08-26
-
-- [new] Add `click-events-have-key-events` rule.
-- [new] Add `no-static-element-interactions` rule.
-- [devDependencies] Upgrade `eslint`, `eslint-config-airbnb`, `mocha` to latest.
-- [lint] Fix all new linting errors with upgrade
-- [nit] Use `error` syntax over `2` syntax in recommended config.
-
- # 2.1.0 / 2016-08-10
-
-- [fix] Require `aria-checked` for roles that are subclasses of `checkbox`
-- [new] Add `anchor-has-content` rule.
-- [refactor] Use new eslint rule syntax
-- [new] Add support for custom words in `img-redundant-alt` (mainly for i18n).
-
- # 2.0.1 / 2016-07-13
-
-- [fix] JSXElement support in expression handlers for prop types.
-- [fix] `heading-has-content`: dangerouslySetInnerHTML will pass.
-
- # 2.0.0 / 2016-07-12
-
-- [breaking] Scope `no-onchange` rule to select menu elements only.
-
- # 1.5.5 / 2016-07-05
-
-- [fix] Add `eslint` v3 as a `peerDependency`.
-
- # 1.5.4 / 2016-07-05
-
-- [fix] Add `eslint` as a `peerDependency`.
-
- # 1.5.3 / 2016-06-16
-
-- [fix] Fix crash when `` for `role-supports-aria-props`.
-
- # 1.5.2 / 2016-06-16
-
-- [fix] Fix `img-redundant-alt` rule to use `getLiteralPropValue` from `jsx-ast-utils`.
-
- # 1.5.1 / 2016-06-16
-
-- [fix] Fix checking for undefined in `heading-has-content` for children content.
-
- # 1.5.0 / 2016-06-16
-
-- [new] Add [heading-has-content](docs/rules/heading-has-content.md) rule.
-- [new] Add [html-has-lang](docs/rules/html-has-lang.md) rule.
-- [new] Add [lang](docs/rules/lang.md) rule.
-- [new] Add [no-marquee](docs/rules/no-marquee.md) rule.
-- [new] Add [scope](docs/rules/scope.md) rule.
-
- # 1.4.2 / 2016-06-10
-
-- [new] Integrate with latest `jsx-ast-utils` to use `propName` function. More support for namespaced names on attributes and elements.
-
- # 1.4.1 / 2016-06-10
-
-- [fix] Handle spread props in `aria-unsupported-elements` and `role-supports-aria-props` when reporting.
-
- # 1.4.0 / 2016-06-10
-
-- [dependency] Integrate [jsx-ast-utils](https://github.com/jsx-eslint/jsx-ast-utils)
-- [fix] Better error reporting for aria-unsupported-elements indicating which prop to remove.
-
- # 1.3.0 / 2016-06-05
-
-- [new] Spelling suggestions for incorrect `aria-*` props
-- [fix] Ensure `role` value is a string before converting to lowercase in `img-has-alt` rule.
-
- # 1.2.3 / 2016-06-02
-
-- [fix] Handle dynamic `tabIndex` expression values, but still retain validation logic for literal `tabIndex` values.
-
- # 1.2.2 / 2016-05-20
-
-- [fix] Fix checks involving the tabIndex attribute that do not account for integer literals
-
- # 1.2.1 / 2016-05-19
-
-- [fix] Avoid testing interactivity of wrapper components with same name but different casing
- as DOM elements (such as `Button` vs `button`).
-
- # 1.2.0 / 2016-05-06
-
-- [new] Import all roles from DPUB-ARIA.
-
- # 1.1.0 / 2016-05-06
-
-- [new] Add expression value handler for `BinaryExpression` type.
-- [new] Add expression value handler for `NewExpression` type.
-- [new] Add expression value handler for `ObjectExpression` type.
-- [fix] Throws error when getting an expression of type without a handler function. - This is for more graceful error handling and better issue reporting.
-
- # 1.0.4 / 2016-04-28
-
-- [fix] Add expression value handler for `ConditionalExpression` type.
-
- # 1.0.3 / 2016-04-25
-
-- [fix] Fix typo in recommended rules for `onclick-has-focus`.
-
- # 1.0.2 / 2016-04-20
-
-- [fix] Add expression value handler for `ThisExpression` type.
-
- # 1.0.1 / 2016-04-19
-
-- [fix] Fix build to copy source JSON files to build output.
-
- # 1.0.0 / 2016-04-19
-
-- [breaking] Rename `img-uses-alt` to `img-has-alt`
-- [breaking] Rename `onlick-uses-role` to `onclick-has-role`
-- [breaking] Rename `mouse-events-map-to-key-events` to `mouse-events-have-key-events`
-- [breaking] Rename `use-onblur-not-onchange` to `no-onchange`
-- [breaking] Rename `label-uses-for` to `label-has-for`
-- [breaking] Rename `redundant-alt` to `img-redundant-alt`
-- [breaking] Rename `no-hash-href` to `href-no-hash`
-- [breaking] Rename `valid-aria-role` to `aria-role`
-
-- [new] Implement `aria-props` rule
-- [new] Implement `aria-proptypes` rule
-- [new] Implement `aria-unsupported-elements` rule
-- [new] Implement `onclick-has-focus` rule
-- [new] Implement `role-has-required-aria-props` rule
-- [new] Implement `role-supports-aria-props` rule
-- [new] Implement `tabindex-no-positive` rule
-
- # 0.6.2 / 2016-04-08
-
-- [fix] Fix rule details for img-uses-alt: allow alt="" or role="presentation".
-
- # 0.6.1 / 2016-04-07
-
-- [fix] Do not infer interactivity of components that are not low-level DOM elements.
-
- # 0.6.0 / 2016-04-06
-
-- [breaking] Allow alt="" when role="presentation" on img-uses-alt rule.
-- [new] More descriptive error messaging for img-uses-alt rule.
-
- # 0.5.2 / 2016-04-05
-
-- [fix] Handle token lists for valid-aria-role.
-
- # 0.5.1 / 2016-04-05
-
-- [fix] Handle null valued props for valid-aria-role.
-
- # 0.5.0 / 2016-04-02
-
-- [new] Implement valid-aria-role rule. Based on [AX_ARIA_01](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01)
-
- # 0.4.3 / 2016-03-29
-
-- [fix] Handle LogicalExpression attribute types when extracting values. LogicalExpressions are of form ``
-
- # 0.4.2 / 2016-03-24
-
-- [fix] Allow component names of form `Object.Property` i.e. `UX.Layout`
-
- # 0.3.0 / 2016-03-02
-
-- [new] Implement [no-hash-href](docs/rules/no-hash-href.md) rule.
-- [fix] Fixed TemplateLiteral AST value building to get more exact values from template strings.
-
- # 0.2.0 / 2016-03-01
-
-- [new] Implement [redunant-alt](docs/rules/redundant-alt.md) rule.
-
- # 0.1.2 / 2016-03-01
-
-- Initial pre-release.
+[CHANGELOG_LEGACY](CHANGELOG_LEGACY)
diff --git a/CHANGELOG_LEGACY.md b/CHANGELOG_LEGACY.md
new file mode 100644
index 00000000..038cbf00
--- /dev/null
+++ b/CHANGELOG_LEGACY.md
@@ -0,0 +1,725 @@
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v6.10.2](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.10.1...v6.10.2) - 2024-10-25
+
+### Fixed
+
+- [patch] `no-redundandant-roles`: allow `<img src="*.svg" role="img" />` [`#936`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/936)
+
+### Commits
+
+- [meta] fix changelog URLs [`0d01a1a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0d01a1aff796802bca70183b24978ffebdbef073)
+- [Refactor] remove no-longer-needed `es-iterator-helpers` [`aa075bd`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/aa075bd1897e0b0bb61683e4da68558f38511dae)
+- [Refactor] avoid spreading things that are already arrays [`d15d3ab`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d15d3abace7afe833d0988eaf3fb7cc166c05c06)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register` [`5dad7c4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5dad7c4fdfdc56c6e488fab54f25f602430dad30)
+- [Tests] `aria-role`: Add valid test for `<svg role="img" />` [`daba189`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/daba18974473bce1301ffaafb822558a9e1738ae)
+- [Docs] `label-has-associated-control`: add line breaks for readability [`0bc6378`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0bc63781c8f284ac6bef00321763c13c5bea6b9f)
+- [Tests] `label-has-associated-control`: add additional test cases [`30d2318`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/30d23189d0b6354750c31a622204a9dc412dc2c1)
+- [Tests] Add tests to reinforce required attributes for role="heading" [`d92446c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d92446c6e608617a4c75173e8b0917c06be14dc6)
+
+## [v6.10.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.10.0...v6.10.1) - 2024-10-20
+
+### Commits
+
+- [Fix] handle interactive/noninteractive changes from aria-query [`4925ba8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4925ba8d0bf80a4b1d8e8645d310590bf1b40b64)
+- [Docs] Use consistent spelling of 'screen reader' [`cb6788c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cb6788c56d7108f2faa102d041dfa37dbc0e9f59)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `auto-changelog`, `eslint-plugin-import`, `tape` [`518a77e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/518a77e1e23fb2b1df2e8a97d14bfdd08aded797)
+- [Deps] update `es-iterator-helpers`, `string.prototype.includes` [`eed03a3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/eed03a31f313442158cf7d702443723ad4800dec)
+- [meta] package.json - Update jscodeshift & remove babel-jest [`2ee940c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/2ee940c5ae87bcd0d384b6dc565d630ea70e103a)
+- [Docs] Remove accidental whitespace in CONTRIBUTING.md [`a262131`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a26213142854ffe3d931fab35f0ee4e6ae101875)
+- [Deps] unpin `aria-query` [`e517937`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e51793729e5e366e30d2f3bf0f253f2bdb9e6523)
+
+## [v6.10.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.9.0...v6.10.0) - 2024-09-03
+
+### Fixed
+
+- [New] `label-has-associated-control`: add additional error message [`#1005`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/1005)
+- [Fix] `label-has-associated-control`: ignore undetermined label text [`#966`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/966)
+
+### Commits
+
+- [Tests] switch from jest to tape [`a284cbf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a284cbf4eb21292c4cff87f02be0bfb82764757f)
+- [New] add eslint 9 support [`deac4fd`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/deac4fd06eff4c0f5da27611c2a44a009b7e7fda)
+- [New] add `attributes` setting [`a1ee7f8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/a1ee7f8810efafe416eb5d7f6eb0505b52873495)
+- [New] allow polymorphic linting to be restricted [`6cd1a70`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6cd1a7011446e3925f2b49c51ff26246a21491d1)
+- [Tests] remove duplicate tests [`74d5dec`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/74d5decb6f2e42c05ce40a45630041fd695a2e7f)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types` [`6eca235`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6eca2359f5457af72dbfba265b73297c9232cb3e)
+- [readme] remove deprecated travis ci badge; add github actions badge [`0be7ea9`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0be7ea95f560c6afc6817d381054d914ebd0b2ca)
+- [Tests] use `npm audit` instead of `aud` [`05a5e49`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/05a5e4992900e0d5d61e29e13046c90797b68a7c)
+- [Deps] update `axobject-query` [`912e98c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/912e98c425ef9fcc2d7d22b45b4f7e3b445112a5)
+- [Deps] unpin `axobject-query` [`75147aa`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/75147aa68888fc150a4efea5b99809969bdc32b2)
+- [Deps] update `axe-core` [`27ff7cb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/27ff7cbf562bf2685fd5a6062e58eb4727cb85c6)
+- [readme] fix jsxA11y import name [`ce846e0`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/ce846e00414c41676a6a8601022059878bcc0b89)
+- [readme] fix typo in shareable config section in readme [`cca288b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cca288b73a39fa0932a57c02a7a88de68fc971fc)
+
+## [v6.9.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.8.0...v6.9.0) - 2024-06-19
+
+### Fixed
+
+- [Fix] `img-redundant-alt`: fixed multibyte character support [`#969`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/969)
+- [meta] fix changelog links [`#960`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/960)
+
+### Commits
+
+- [New] add support for Flat Config [`6b5f096`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6b5f096f10b47326d68e2893152a48a79c8555b4)
+- Revert "[Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1" [`75d5dd7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/75d5dd722bd67186d97afa7b151fd6fee5885c70)
+- [Robustness] use `safe-regex-test` [`4c7e781`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4c7e7815c12a797587bb8e3cdced7f3003848964)
+- [actions] update actions/checkout [`51a1ca7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/51a1ca7b4d83d4fbd1ea62888f7f2dc21ece6788)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `eslint-doc-generator`, `object.entries` [`1271ac1`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1271ac1d6e5dcf9a2bc2c086faaf062335629171)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/register`, `aud`, `eslint-plugin-import`, `npmignore`, `object.assign` [`540cb7a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/540cb7aefead582f237071d55a40f098d0885478)
+- [Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test` [`5d14408`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5d1440825a8838ae10dc94cc3a4a7e1e967644b4)
+- [Deps] pin `aria-query` and `axobject-query`, add `ls-engines` test to CI [`32fd82c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/32fd82c628d7f3e4ec8c06a1994f4eca1be2be4f)
+- [Dev Deps] update `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-doc-generator` [`d1b4114`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/d1b41142248a7cca45bb5f0b96ff23ee87fb9411)
+- [Fix] ensure `summary` remains non-interactive [`6a048da`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6a048dacf2b98eaa204e2a5a70dc7e3d48d9463a)
+- [Deps] remove `@babel/runtime` [`0a98ad8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0a98ad83ffa7f4b66458cc1c39db2ef32bb2c480)
+- [New] `no-noninteractive-element-to-interactive-role`: allow `menuitemradio` and `menuitemcheckbox` on <li> [`c0733f9`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/c0733f94031fe3eec6b4d54176afe47929bb0a84)
+- [Deps] update `@babel/runtime`, `safe-regex-test` [`0d5321a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0d5321a5457c5f0da0ca216053cc5b4f571b53ae)
+- [actions] pin codecov to v3.1.5 [`961817f`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/961817f61fa56cd7815c6940c27ef08469b1516b)
+- [Deps] unpin `axe-core` [`b3559cf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b3559cf89be6b5352cd77ffa025831b3d793d565)
+- [Deps] move `object.entries` to dev deps [`1be7b70`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1be7b709eececd83f1d5f67a60b2c97cfe9a561d)
+- [Deps] update `@babel/runtime` [`2a48abb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/2a48abb5effa911e7d1a8575e1c9768c947a33f1)
+- [Deps] update `@babel/runtime` [`1adec35`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1adec3517fc2c9797212ca4d38858deed917e7be)
+
+## [v6.8.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.7.1...v6.8.0) - 2023-11-01
+
+### Merged
+
+- Allow `title` attribute or `aria-label` attribute instead of accessible child in the "anchor-has-content" rule [`#727`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/727)
+
+### Fixed
+
+- [Docs] `aria-activedescendant-has-tabindex`: align with changes from #708 [`#924`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/924)
+- [Fix] `control-has-associated-label`: don't accept whitespace as an accessible label [`#918`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/918)
+
+### Commits
+
+- [Tests] migrate helper parsers function from `eslint-plugin-react` [`ce4d57f`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/ce4d57f853ce7f71bd31edaa524eeb3ff1d27cf1)
+- [Refactor] use `es-iterator-helpers` [`52de824`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/52de82403752bb2ccbcac3379925650a0112d4af)
+- [New] `mouse-events-have-key-events`: add `hoverInHandlers`/`hoverOutHandlers` config [`db64898`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/db64898fa591f17827053ad3c2ddeafdf7297dd6)
+- [New] add `polymorphicPropName` setting for polymorphic components [`fffb05b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/fffb05b38c8eee926ee758e9ceb9eae4e697fbdd)
+- [Fix] `isNonInteractiveElement`: Upgrade aria-query to 5.3.0 and axobject-query to 3.2.1 [`64bfea6`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/64bfea6352a704470a760fa6ea25cfc5a50414db)
+- [Refactor] use `hasown` instead of `has` [`9a8edde`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9a8edde7f2e80b7d104dd576f91526c6c4cbebb9)
+- [actions] update used actions [`10c061a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/10c061a70cac067641e3a084d0fb464960544505)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`, `aud`, `eslint-doc-generator`, `eslint-plugin-import`, `minimist` [`6d5022d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6d5022d4894fa88d3c15c8b858114e8b2a8a440f)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/register`, `eslint-doc-generator`, `eslint-plugin-import` [`4dc7f1e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4dc7f1e5c611aeea2f81dc50d4ec0b206566181a)
+- [New] `anchor-has-content`: Allow title attribute OR aria-label attribute [`e6bfd5c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e6bfd5cb7c060fcaf54ede85a1be74ebe2f60d1e)
+- [patch] `mouse-events-have-key-events`: rport the attribute, not the node [`eadd70c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/eadd70cb1d0478c24538ee7604cf5493a96c0715)
+- [Deps] update `@babel/runtime`, `array-includes`, `array.prototype.flatmap`, `object.entries`, `object.fromentries` [`46ffbc3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/46ffbc38512be4ed3db2f0fcd7d21af830574f63)
+- [Deps] update `@babel/runtime`, `axobject-query`, `jsx-ast-utils`, `semver` [`5999555`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/5999555714f594c0fccfeeab2063c2658d9e4392)
+- [Fix] pin `aria-query` and `axe-core` to fix failing tests on main [`8d8f016`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/8d8f0169dbaaa28143cf936cba3046c6e53fa134)
+- [patch] move `semver` from Deps to Dev Deps [`4da13e7`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4da13e79743ad2e1073fc2bb682197e1ba6dbea3)
+- [Deps] update `ast-types-flow` [`b755318`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b755318e675e73a33b1bb7ee809abc88c1927408)
+- [Dev Deps] update `eslint-plugin-import` [`f1c976b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f1c976b6af2d4f5237b481348868a5216e169296)
+- [Deps] unpin `language-tags` [`3d1d26d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3d1d26d89d492947cbf69f439deec9e7cfaf9867)
+- [Docs] `no-static-element-interactions`: tabIndex is written tabindex [`1271153`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/1271153653ada3f8d95b8e39f0164d5b255abea0)
+- [Deps] Upgrade ast-types-flow to mitigate Docker user namespacing problems [`f0d2ddb`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f0d2ddb65f21278ad29be43fb167a1092287b4b1)
+- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`0c278f4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0c278f4805ec18d8ee4d3e8dfa2f603a28d7e113)
+
+## [v6.7.1](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.7.0...v6.7.1) - 2023-01-11
+
+### Commits
+
+- [Fix] `no-aria-hidden-on-focusable` rule's missing export [`b01219e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/b01219edc2eb289c7a068b4fa195f2ac04e915fa)
+
+## [v6.7.0](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.6.1...v6.7.0) - 2023-01-09
+
+### Merged
+
+- New rule: prefer-tag-over-role [`#833`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/833)
+
+### Fixed
+
+- [Tests] `aria-role`: add now-passing test [`#756`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/756)
+- [Docs] `control-has-associated-label`: fix metadata [`#892`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/892)
+- [New] add `no-aria-hidden-on-focusable` rule [`#881`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/881)
+
+### Commits
+
+- [Docs] automate docs with `eslint-doc-generator` [`6d7a857`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6d7a857eccceb58dabfa244f6a196ad1697c01a4)
+- [Refactor] use fromEntries, flatMap, etc; better use iteration methods [`3d77c84`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3d77c845a98b6fc8cf10c810996278c02e308f35)
+- [New] add `anchor-ambiguous-text` rule [`7f6463e`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/7f6463e5cffd1faa5cf22e3b0d33465e22bd10e1)
+- [New] add `getAccessibleChildText` util [`630116b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/630116b334e22db853a95cd64e20b7df9f2b6dc8)
+- [New] Add `isFocusable` utils method [`e199d17`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e199d17db0b6bf1d917dab13a9690876ef6f77e3)
+- [Docs] update `eslint-doc-generator` to v1.0.0 [`6b9855b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6b9855b9c3633308004960594327a10bc2551ad2)
+- [Fix] `no-noninteractive-element-interactions`: Ignore contenteditable elements in no-noninteractive-element-interactions [`9aa878b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9aa878bc39769f6c7b31c72bd1140c1370d202f1)
+- [New] `anchor-ambiguous-text`: ignore punctuation [`bbae2c4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bbae2c46ab4ae94122be6c898f2ef313c6154c27)
+- [New] `anchor-ambiguous-text`, `getAccessibleChildText`: Implements check for `alt` tags on `<img />` elements [`bb84abc`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bb84abc793435a25398160242c5f2870b83b72ca)
+- [meta] use `npmignore` to autogenerate an npmignore file [`6ad2312`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/6ad23124582741385df50e98d5ed0d070f86eafe)
+- [meta] add `auto-changelog` [`283817b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/283817b82252ef4a6395c22585d8681f97305ca0)
+- [Docs] missing descriptions in some rules [`79b975a`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/79b975ab7185cc4fbf6a3adea45c78fac2162d77)
+- [Deps] update `aria-query`, `axobject-query` [`7b3cda3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/7b3cda3854451affe20b2e4f2dd57cf317dd7d1b)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `object.assign` [`0852947`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0852947cfd57a34353a97c67f6de28dbcc8be0e3)
+- [meta] move `.eslintignore` to `ignorePatterns` [`65be35b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/65be35b0f6c6cf8b79e9a748cb657a64b78c6535)
+- [Dev Deps] update `@babel/cli`, `@babel/core`, `aud`, `eslint-doc-generator` [`60c2df5`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/60c2df5388a3f841a7780eafe1a0fbb44056743d)
+- [Deps] update `@babel/runtime`, `array-includes`, `axe-core` [`4abc751`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/4abc751d87a8491219a9a3d2dacd80ea8adcb79b)
+- [Deps] update `@babel/runtime`, `axe-core` [`89f766c`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/89f766cd40fd32ada2020856b251ad6e34a6f365)
+- [meta] run the build in prepack, not prepublish [`e411ce3`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/e411ce35cfa58181d375544ba5204c35db83678c)
+- [Dev Deps] update `@babel/core`, `minimist` [`cccdb62`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cccdb625d6237538fb4443349870293e8df818eb)
+- [Dev Deps] update `markdown-magic` [`3382059`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/3382059feb5367c79e049943772e3a6e27e77609)
+- [Fix] expose `prefer-tag-over-role` [`38d52f8`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/38d52f856a18d444e6db7d16d373e0d18c5b287d)
+- [Docs] `label-has-for`: reran generate-list-of-rules [`9a2af01`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/9a2af0172cefad7fdce869401b2df42536812152)
+- [Deps] pin `language-tags` to `v1.0.5` [`f84bb74`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/f84bb746857cfbc075f8e7104b3a16dddb66be7c)
+- [Dev Deps] update `@babel/core` [`cf3f8d0`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/cf3f8d0a6bde6dc5ad39a96a6ed1912c1ad80e89)
+- [Deps] update `axe-core` [`0a73cf4`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0a73cf4ad0adca0bef0a383a10a14597acef5713)
+- [Deps] update `@babel/runtime` [`053f04d`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/053f04da8b60d259e4c92f214ffba07a14f3ec61)
+- [Deps] update `@babel/runtime` [`bccf0ae`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/bccf0aeab8dd337c5f134f892a6d3588fbc29bdf)
+- [Deps] update `jsx-ast-utils` [`c9687cc`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/c9687cc2a1b7f5f72c8181a9fd6a47f49c373240)
+- [readme] Preventing code repetition in user's eslint config file [`8b889bf`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/8b889bff2731c9db6988c88c0d76bdbff17bd3c5)
+- [Docs] `prefer-tag-over-role`: rename docs file [`0bdf95b`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/commit/0bdf95b41cce32c8b7916367e7c8c663411d881c)
+
+
+
+# 6.6.1 / 2022-07-21
+
+- 38405ad [Fix] `no-interactive-tabindex`: allow role assignments using a ternary with literals on both sides
+- 7524e0c [Fix] `no-static-element-interactions`: allow role assignments using a ternary with literals on both sides (#865)
+- 1c06306 [readme] properly describe rule settings in builtin configs
+- 0c19f02 [Docs] `no-noninteractive-tabindex`, `no-static-element-interactions`: document `allowExpressionValues` (#870)
+- 2362832 [readme] added link to redirect eslint to relevant docs (#862)
+- 2c6926c [Deps] unpin `axe-core`
+- b78f19d [Deps] pin `axe-core` to v4.4.1, due to a breaking change in a patch
+- 768910e [Deps] update `@babel/runtime`
+- f0e04ce [Deps] update `@babel/runtime`, `jsx-ast-utils`
+- 93b2a9d [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`
+- a962211 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `@babel/register`
+- 0d2bc43 [Tests] `no-noninteractive-element-interactions`: add passing test cases (#876)
+- ffefbad [Tests] `no-noninteractive-element-interactions`: add passing tests for form with onSubmit (#871)
+- e7d405d [Tests] `no-static-element-interactions`: add passing test cases
+
+ # 6.6.0 / 2022-06-23
+
+- 566011b [New] `aria-role`: add `allowedInvalidRoles` option (#828)
+- 64dcac6 [New] Introduce a plugin-wide setting for custom components. (#844)
+- ce2c328 [Fix] `no-redundant-roles`, `role-supports-aria-props`: Remove implicit role from dl element (#848)
+- fb20bc4 [Refactor] `role-supports-aria-props`: clean up the logic a bit
+- 1826628 [Refactor] reduce egregious use of array spread, in favor of `[].concat` idiom
+- 0f1615a [Docs] `no-static-element-interactions`: Update error message (#843)
+- 9980d1d [Docs] Add infrastructure for auto-generating markdown table and list (#837)
+- f878d3b [Docs] Update project readme (#831)
+- aea7671 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `jsx-ast-utils`
+- d74173a [Deps] update `jsx-ast-utils`
+- f6ba03c [Deps] update `@babel/runtime`, `jsx-ast-utils`
+- 547dab4 [Deps] update `@babel/runtime`, `axe-core`, `minimatch`
+- baaf791 [Deps] update `@babel/runtime`, `minimatch`, `semver`
+- c015fef [Deps] update `@babel/runtime`, `axe-core`, `damerau-levenshtein`
+- 832cbd6 [meta] add `export default` instead of `module.exports` (#861)
+- ee933a2 [meta] Add CONTRIBUTING.md to solicit contributions (#846)
+- fa3c869 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-eslint-plugin`, `eslint-plugin-flowtype`, `eslint-plugin-import`
+- fb3d51e [Dev Deps] update `@babel/core`, `@babel/register`, `eslint-plugin-import`, `minimist`
+- 8c1df4d [Dev Deps] pin `@technote-space/doctoc` because v2.5 is a breaking change
+- fb071ab [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-plugin-eslint-plugin`
+- 5e966e5 [Dev Deps] update `@babel/cli`
+- f597f5b [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`
+- 287854a [Tests] Fix `npm run flow` (#856)
+- 112261c [Tests] skip fragment tests in eslint < 6
+- ea877c4 [Tests] `img-redundant-alt-test`: add passing tests (#832)
+- 685426d test: align usage of jest expect across tests (#827)
+- c460a8b [Tests] move invalid test case to valid; changed in axe-core v4.4
+
+ # 6.5.1 / 2021-11-10
+
+- 8f7d0b0 [Fix] properly build `module.exports` (#824)
+- 2fd2087 [Dev Deps] update `eslint-plugin-import`
+
+ # 6.5.0 / 2021-11-09
+
+- 0f5f582 [New] support ESLint 8.x (#810)
+- 1dbc416 [Deps] update `@babel/runtime`, `axe-core`
+- 4043d31 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `@babel/plugin-transform-flow-strip-types`, `eslint-config-airbnb-base`
+- d143cba [Docs] HTTP => HTTPS (#823)
+- 309b040 [Docs] `anchor-has-content`: add missing close / for jsx succeed example (#821)
+- ba1e312 [eslint] simplify eslint command
+- 0269025 [meta] change all `master` references in URLs to `HEAD`
+- f1414cf [Dev Deps] add `eslint-plugin-eslint-plugin` (#818)
+- f44fc05 [meta] update URLs
+- df34872 [Refactor] switch to `export default` syntax for exporting rules (#819)
+- ff26b82 [meta] fix prepublish scripts
+- d4a57d8 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `jsx-ast-utils`
+- bd1dec6 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/eslint-parser`, `eslint-plugin-import`, `estraverse`, `safe-publish-latest`
+- 434c4cf [Tests] do not test eslint 7 on node 11
+- aed7a20 [Tests] use `@babel/eslint-parser` instead of `babel-eslint` (#811)
+- 0021489 [actions] use codecov action
+- 1251088 [meta] delete FUNDING.yml in favor of `.github` repo
+- ecf7a27 [Docs] `scope`: replace duplicate `scope` word (#799)
+- 952af25 [Fix] `no-access-key`: Fix wording and grammar (#800)
+- 6cf7ac0 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-flowtype`, `eslint-plugin-import`
+- 79a35d4 [Deps] update `@babel/runtime`, `axe-core`, `damerau-levenshtein`
+- 2a9ab71 [Tests] delete `src/util/getComputedRole-test.js` test in node 6
+- 0c1c587 [Tests] `autocomplete-valid`: move some failed tests to passing
+- 8830902 [Tests] fix eslint < 7 not understanding `import type`
+- d57887c [Tests] ensure all tests run
+- 55e5c11 Support img role for canvas (#796)
+- 36102cd [meta] use `prepublishOnly` script for npm 7+
+- 2501a7f Remove the link-button focus css from the anchor-is-valid doc (#662)
+- d927625 Update recommended config to allow fieldset to have the radiogroup role (#746)
+- 5aa8db9 [Docs] Clarify the title of the strictness table in the main doc (#786)
+- df3c7ad [Docs] Document the similarity between html-has-lang and lang (#778)
+- 426d4c2 Fix Flow warnings (#785)
+- ecec8e4 Fully deprecate accessible-emoji rule (#782)
+- 8a0e43c [Tests] remove .travis.yml
+- f88bf6b [Dev Deps] update `flow-bin` to support aarch64 (#784)
+- 369f9db [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `aud`, `eslint-plugin-flowtype`, `jscodeshift`
+- ce0785f [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `emoji-regex`
+- 2c2a2ad [actions] update to use `node/install` action
+- c275964 [Docs] `anchor-is-valid`: general cleanup (#728)
+- 3df059e [Docs] `no-redundant-roles`: Adds missing closing square bracket (#775)
+- 42ce5b7 [Docs] `anchor-is-valid`: Add Next.js case (#769)
+- 2e5df91 [Tests] fix tests breaking on npm 7
+- 066ccff [Docs] `no-noninteractive-tabindex`: Add example for tabIndex on seemingly non-interactive element (#760)
+- 6b19aa5 [Tests] migrate tests to Github Actions (#764)
+- 7e158e3 [meta] run `aud` in `posttest`
+- 71f390f [Tests] stop using coveralls
+- e54b466 [meta] add Automatic Rebase and Require Allow Edits workflows
+- 7d5511d [New] `label-has-associated-control`: Add glob support (#749)
+- 854da0c Ran npm update; latest packages (#763)
+- 8637aa7 (source/pr/734, fork/pr/26) [patch] `strict` config: Turn off `label-has-for` (#734)
+- d85ce54 [doc] Add link to MDN Aria documentation (#762)
+- 20b48a4 [patch] `no-onchange`: Remove rule from recommended/strict configs, and deprecate (#757)
+
+ # 6.4.1 / 2020-10-26
+
+- f8a4496 Upgrade jsx-ast-utils to v3.1.0
+
+ # 6.4.0 / 2020-10-26
+
+- 83e4ff2 [Deps] update `axe-core`, `jsx-ast-utils`
+- eb92b07 [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-strip-types`, `eslint-plugin-flowtype`, `eslint-plugin-import`, `estraverse`, `expect`, `object.assign`
+- 3d98d7a [Deps] update `@babel/runtime`, `axe-core`
+- f702f62 [readme] add Spanish translation
+- c2ae092 [Docs] `no-static-element-interactions`: Fixed rule name in comments
+- b90e20d Fix screenreader -> screen reader
+- 645900a Fixed rule name in comments
+- 381b9d6 [fix:634] Ignore control elements that are hidden
+- 2c47f0a [Fix] `autocomplete-valid`: workaround for axe not being able to handle `null`
+- 00bd6d8 Add failing test for autocomplete with dynamic type
+- 3c49c9a Add WCAG guidelines to rule documentation
+- 4ecaf35 Add a testcase for tablist to interactive supports focus
+- dac6864 Deprecate the accessible-emoji rule
+- 5191053 Update to axobject-query@2.2.0
+- b315698 Allow negative tabindex in aria-activedescendant-has-tabindex
+- 8e6fcd0 docs: fix travis badge now points to correct location at travis-ci.com
+- 2234df7 Account for additional control elements in label-has-associated-control
+- 5cbb718 Adding test cases for label tests
+- 66c425c Additional test case for no-redundant-roles
+
+ # 6.3.1 / 2020-06-19
+
+- 765da0f Update to aria-query 4.2.2
+- d528e8c Fix aria-level allowed on elements wit role heading (#704)
+- 29c6859 [meta] remove yarn registry from npmrc, so publishing works
+- f52c206 chore(package): update estraverse to version 5.0.0
+
+ # 6.3.0 / 2020-06-18
+
+- cce838a Update aria-query to 4.2.0
+- 121e8a4 Add two test cases found while upgrading to ARIA 1.2
+- 8059f51 Fix test failures raised by the upgrade to ARIA 1.2
+- 0d24e3a Update package.json
+- b1f412a Fix test failures in role-has-required-aria-props due to ARIA 1.2 updates
+- 74cec6e Fix test failures in no-noninteractive-element-interactions due to ARIA 1.2 updates
+- 835b89e Fix test failures in role-supports-aria-props-test due to ARIA 1.2 updates
+- 730319b Account for the null semantic generic role in ARIA 1.2
+- 7dfa7c9 Update aria-query from 4.0.1 to 4.0.2
+- 42098b9 [Refactor] `img-redundant-alt`: removing a use of `some`
+- a910d83 [Tests] `label-has-associated-control`: add test for
+- b273fe5 [New] Support ESLint 7.x
+- 1a97632 [Deps] update `@babel/runtime`, `array-includes`, `axe-core`, `axobject-query`, `damerau-levenshtein`, `jsx-ast-utils`
+- b36976f [Dev Deps] update `@babel/cli`, `@babel/core`, `@babel/plugin-transform-flow-types`, `babel-eslint`, `babel-jest`, `coveralls`, `eslint-config-airbnb-base`, `eslint-plugin-flowtype`, `eslint-plugin-import`, `estraverse`, `in-publish`, `jest`, `minimist`, `rimraf`, `safe-publish-latest`
+- 89acdc4 fix: removing the use of the some function
+- 410ae43 chore(package): update eslint-plugin-flowtype to version 5.0.0
+- a87f83d fix(package): update emoji-regex to version 9.0.0
+- 71940e6 chore(package): update babel-preset-airbnb to version 5.0.0
+- d471f54 docs: Fix 404 links to WAI-ARIA spec
+- 42a2016 Fixes #669: use the `language-tags` package to check the `lang` rule
+- 7bcea20 [Tests] update axe-core
+- f13dc38 [Deps] Pin axe-core version
+- 33670bb fix: require missing 'autocomplete-valid' rule
+- aca4c37 chore(mouse-event): revert unrelated formatting changes
+- df1e275 fix(mouse-event): remove check from custom elements
+- 1a16a1c chore(package): update jscodeshift to version 0.7.0
+- 7a55cdd chore(package): update flow-bin to version 0.113.0
+- 8e0d22b Update aria-query and axobject-query to the latest versions
+- dd49060 Added test cases for an empty or undefined value of aria-label and aria-labelledby in alt-text
+- 1a7b94f Updated dependencies including eslint-config-airbnb-base
+- 3aea217 chore: replace ignoreNonDOM with inputComponents
+- 1848d00 feat(autocomplete-valid): add to recommended & strict config
+- 8703840 refactor: use to axe-cre 3.4 SerialVirtualNode format
+- 3519c7b chore: Remove axe VirtualNode abstraction
+- 9ac55c4 autocomplete-valid: Add inline comment
+- 44c6098 Update axe-core to 3.3.0
+- 9916990 new autocomplete-valid rule
+- 82f598e [Docs] examples: add language in code block for syntax highlight
+- 2529ad3 fixing casing issue on aria-props
+- 00926f2 Update README.md
+- ce5d121 Update README.md
+- 031574e chore(package): update flow-bin to version 0.103.0
+- e00e1db [meta] add FUNDING.yml
+- e1e5fae Fix readme file
+
+ # 6.2.3 / 2019-06-30
+
+- [617] Add @babel/runtime to the dependencies
+
+ # 6.2.2 / 2019-06-29
+
+- Update jsx-ast-utils to v2.2.1
+- Add @babel/cli to the dev dependencies
+- Update ESLint to v6
+- Update jsx-ast-utils to 2.2.0
+- Update flow-bin to version 0.102.0
+- [589] Allow expression statements for attribute values in no-noninteractive-tabindexlow-bin-0.101.0
+- [583] Allow expression values in attributes by configurationrror
+- [596] Adding a test case for no-static-element-interactionseper/flow-bin-0.101.0) Merge branch 'master' into greenkeeper/flow-bin-0.101.0
+- Only run branch test coverage on the master branch
+- chore(package): update flow-bin to version 0.100.0
+- Allow select as a valid child of label.
+- Allow Node 4 / ESLint 3 failure to unblock ESLint upgrade in PR #568
+- chore(package): update flow-bin to version 0.99.0
+- Remove rootDir from Jest path configs
+- (fix) Template literals with undefined evaluate to the string undefined.
+- adds more tests to “anchor-is-valid”
+- Fixes “anchor-is-valid” false positive for hrefs starting with the word “javascript”
+- chore(package): update eslint-plugin-flowtype to version 3.5.0
+- Modified no-static-element-interactions to pass on non-literal roles.
+- Added isNonLiteralProperty util method
+- [#399] Account for spread in parser options
+- [552] control-has-associated-label should allow generic links
+- [issue 392] ul role='list' test case
+- chore(package): update eslint to version 5.15.2
+- chore(package): update flow-bin to version 0.95.0
+- chore(package): update expect to version 24.3.1
+- Fix typo: defintions > definitions
+- docs: add proper title to links to axe website for media-has-caption
+- docs: removes deprecated rule label-has-for
+- docs: fix typo and couple grammatical errors in Readme
+- Ignore null/undefined values in role-supports-aria-props rule
+- Ignore undefined values in aria-proptypes rule
+- Ignore null values in aria-proptypes rule
+- set target for node 4
+
+ # 6.2.1 / 2019-02-03
+
+- 9980e45 [fix] Prevent Error when JSXSpreadAttribute is passed to isSemanticRoleElement
+
+ # 6.2.0 / 2019-01-25
+
+- 5650674 [new rule] control-has-associated-label checks interactives for a label
+- f234698 [docs] add How to manage IDs
+- 9924d03 [docs] document jsx-a11y/label-has-associated-control assert option
+- 77b9870 [docs] Add newlines below headings
+- 8244e43 [docs] Add syntax highlighting to example
+- 26f41c8 [docs] Change explanation for role="presentation" escape hatch
+- 33a1f94 [fix] - Purely decorative emojis do not need descriptions.
+- 29d20f7 [fix] (package): update emoji-regex to version 7.0.2
+- 0b63f73 [chore] (package): update flow-bin to version 0.88.0
+- baa1344 [fix] Disable jsx-a11y/label-has-for in recommended
+- 2c5fb06 [chore] (package): update jscodeshift to version 0.6.0
+- 87debc0 [fix] corrected no-noninteractive-element-to-interactive-role.md file
+- d56265b [chore] (package): update flow-bin to version 0.87.0
+- 477966f [fix] Update test for implicit role of `img`
+- f484ce3 [fix] No implicit role for `
` with `alt=""`
+- 6c33bcb [fix] Add select to the list of default control elements in label-has-associated-control
+- 011f8d9 [fix] Dialog and Alert roles can host keyboard listeners
+- 0f6a8af [fix] More easier `plugin:jsx-a11y/{recommended,strict}` configs
+- 3844248 [fix] Mark the replacement for label-has-for
+- 93265cb [fix] normalizedValues to values
+- 651366c [fix] Make aria-role case sensitive
+- 56d3b9a [fix] [484] Fix role-has-required-aria-props for semantic elements like input[checkbox]
+- 46e9abd [fix] Handle the type={truthy} case in jsx
+
+ # 6.1.2 / 2018-10-05
+
+- [fix] Add link-type styling recommendation to anchor-is-valid #486
+- [fix] `label-has-for`: `textarea`s are inputs too #470
+
+ # 6.1.1 / 2018-07-03
+
+- [fix] aria-proptypes support for idlist, #454
+- [fix] Image with expanded props throws 'The prop must be a JSXAttribute collected by the AST parser.', #459
+- [fix] label-has-for: broken in v6.1.0, #455
+
+ # 6.1.0 / 2018-06-26
+
+- [new] Support for eslint v5, #451
+- [new] aria-query updated to latest version
+- [new] eslint-config-airbnb-base updated to the latest version
+- [deprecate] The rule label-has-for is deprecated and replaced with label-has-associated-control
+- [fix] heading-has-content updated to work with custom components, #431
+- [fix] aria-errormessage prop is now a valid ARIA property, #424
+
+ # 6.0.2 / 2017-06-28
+
+- [fix] Prefix directories in `.npmignore` with `/` so it only matches the top-level directory
+
+ # 6.0.1 / 2017-06-28
+
+- [temporary] Remove `src` and `flow` from package to resolve flow issues for consuming packages.
+
+ # 6.0.0 / 2017-06-05
+
+- [new] Add rule `anchor-is-valid`. See documentation for configuration options. Thanks @AlmeroSteyn.
+- [breaking] `href-no-hash` replaced with `anchor-is-valid` in the recommended and strict configs. Use the `invalidHref` aspect (active by default) in `anchor-is-valid` to continue to apply the behavior provided by `href-no-hash`.
+- [breaking] Removed support for ESLint peer dependency at version ^2.10.2.
+- [update] The rule `label-has-for` now allows inputs nested in label tags. Previously it was strict about requiring a `for` attribute. Thanks @ignatiusreza and @mjaltamirano.
+- [update] New configuration for `interactive-supports-focus`. Recommended and strict configs for now contain a trimmed-down whitelist of roles that will be checked.
+- [fix] Incompatibility between node version 4 and 5. Thanks @evilebottnawi.
+- [fix] Missing README entry for `media-has-caption`. Thanks @ismail-syed.
+- [fix] README updates explaining recommended and strict configs. Thanks @Donaldini.
+- [fix] Updated to aria-query@0.7.0, which includes new ARIA 1.1 properties. Previously, the `aria-props` rule incorrectly threw errors for these new properties.
+
+ # 5.1.1 / 2017-07-03
+
+- [fix] revert v6 breaking changes unintentionally added in v5.1 (#283)
+
+# 5.1.0 / 2017-06-26
+
+- [new] Support eslint v4. (#267)
+- [new] `label-has-for`: add "required" option to allow customization (#240)
+- [new] add `anchor-is-valid` (#224)
+- [new] `interactive-supports-focus`: Split interactive supports focus into tabbable and focusable cases (#236)
+- [new] `anchor-is-valid`: add `aspects` option (#251)
+- [Deps] Bump aria-query to 0.7.0
+
+# 5.0.3 / 2017-05-16
+
+- [fix] Remove `flow` directory from `.npmignore` to accommodate explicit imports from `v5.0.2`.
+
+ # 5.0.2 / 2017-05-16
+
+- [fix] Explicitly import flow types to resolve flow failures in consuming projects.
+
+ # 5.0.1 / 2017-05-07
+
+- [fix] Polyfill Array.includes for node < 6 support.
+
+ # 5.0.0 / 2017-05-05
+
+- [breaking] Refactor `img-has-alt` rule into `alt-text` rule
+- [breaking] Rule `onclick-has-role` is removed. Replaced with `no-static-element-interactions` and `no-noninteractive-element-interactions`.
+- [breaking] Rule `onclick-has-focus` is removed. Replaced with `interactive-supports-focus`.
+- [new] - Add rule `media-has-caption` rule
+- [new] - Add `ignoreNonDOM` option to `no-autofocus`.
+- [new] - Add rule `no-interactive-element-to-noninteractive-role`
+- [new] - Add rule `no-noninteractive-element-to-interactive-role`
+- [new] - Add rule `no-noninteractive-tabindex`
+- [new] - Configs split into "recommended" and "strict".
+- [enhanced] - Configuration options added to `no-static-element-interactions` and `no-noninteractive-element-interactions`. Options allow for fine-tuning of elements and event handlers to check.
+
+ # 4.0.0 / 2017-02-04
+
+ Add new rules:
+
+- `jsx-a11y/accessible-emoji`
+- `jsx-a11y/aria-activedescendant-has-tabindex`
+- `jsx-a11y/iframe-has-title`
+- `jsx-a11y/no-autofocus`
+- `jsx-a11y/no-distracting-elements` _(breaking: consolidated no-marquee and no-blink into this rule.)_
+- `jsx-a11y/no-redundant-roles`
+- [fix] - redundant-alt to only check full words
+- [docs] - Documentation upgrades across the board.
+- [new] - Add `ignoreNonDom`
+- [dev] - Add script to scaffold new rule creation.
+
+ # 3.0.2 / 2016-12-14
+
+- [fix] - make `aria-invalid` values true and false pass for rule `aria-proptypes`
+
+ # 3.0.1 / 2016-10-11
+
+- [breaking] - Update all rule schemas to accept objects. This allows a future schema expansion to not be a breaking change.
+- [breaking] - All rules with schemas that accepted a string OR array, now only allows an array.
+- [new] - `href-no-hash` accepts new schema property `specialLink` to check for custom `href` properties on elements. (fixes [#76](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/76))
+- [breaking][fix] - `img-has-alt` now prefers `alt=""` over `role="presentation"`. You can set both, but not just `role="presentation"` by itself to ensure a11y across all devices.
+
+Note - see [rule documentation](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules) for updated schemas.
+
+# 2.2.3 / 2016-10-08
+
+- [fix] - Add `switch` aria role.
+- [devDependencies] - Updgrade dev dependencies and fix linting issues.
+
+ # 2.2.2 / 2016-09-12
+
+- [fix] `x-has-content` rules now pass with children prop set.
+
+ # 2.2.1 / 2016-08-31
+
+- [fix] Update `tablist` role to include missing property `aria-multiselectable`.
+
+ # 2.2.0 / 2016-08-26
+
+- [new] Add `click-events-have-key-events` rule.
+- [new] Add `no-static-element-interactions` rule.
+- [devDependencies] Upgrade `eslint`, `eslint-config-airbnb`, `mocha` to latest.
+- [lint] Fix all new linting errors with upgrade
+- [nit] Use `error` syntax over `2` syntax in recommended config.
+
+ # 2.1.0 / 2016-08-10
+
+- [fix] Require `aria-checked` for roles that are subclasses of `checkbox`
+- [new] Add `anchor-has-content` rule.
+- [refactor] Use new eslint rule syntax
+- [new] Add support for custom words in `img-redundant-alt` (mainly for i18n).
+
+ # 2.0.1 / 2016-07-13
+
+- [fix] JSXElement support in expression handlers for prop types.
+- [fix] `heading-has-content`: dangerouslySetInnerHTML will pass.
+
+ # 2.0.0 / 2016-07-12
+
+- [breaking] Scope `no-onchange` rule to select menu elements only.
+
+ # 1.5.5 / 2016-07-05
+
+- [fix] Add `eslint` v3 as a `peerDependency`.
+
+ # 1.5.4 / 2016-07-05
+
+- [fix] Add `eslint` as a `peerDependency`.
+
+ # 1.5.3 / 2016-06-16
+
+- [fix] Fix crash when `` for `role-supports-aria-props`.
+
+ # 1.5.2 / 2016-06-16
+
+- [fix] Fix `img-redundant-alt` rule to use `getLiteralPropValue` from `jsx-ast-utils`.
+
+ # 1.5.1 / 2016-06-16
+
+- [fix] Fix checking for undefined in `heading-has-content` for children content.
+
+ # 1.5.0 / 2016-06-16
+
+- [new] Add [heading-has-content](docs/rules/heading-has-content.md) rule.
+- [new] Add [html-has-lang](docs/rules/html-has-lang.md) rule.
+- [new] Add [lang](docs/rules/lang.md) rule.
+- [new] Add [no-marquee](docs/rules/no-marquee.md) rule.
+- [new] Add [scope](docs/rules/scope.md) rule.
+
+ # 1.4.2 / 2016-06-10
+
+- [new] Integrate with latest `jsx-ast-utils` to use `propName` function. More support for namespaced names on attributes and elements.
+
+ # 1.4.1 / 2016-06-10
+
+- [fix] Handle spread props in `aria-unsupported-elements` and `role-supports-aria-props` when reporting.
+
+ # 1.4.0 / 2016-06-10
+
+- [dependency] Integrate [jsx-ast-utils](https://github.com/jsx-eslint/jsx-ast-utils)
+- [fix] Better error reporting for aria-unsupported-elements indicating which prop to remove.
+
+ # 1.3.0 / 2016-06-05
+
+- [new] Spelling suggestions for incorrect `aria-*` props
+- [fix] Ensure `role` value is a string before converting to lowercase in `img-has-alt` rule.
+
+ # 1.2.3 / 2016-06-02
+
+- [fix] Handle dynamic `tabIndex` expression values, but still retain validation logic for literal `tabIndex` values.
+
+ # 1.2.2 / 2016-05-20
+
+- [fix] Fix checks involving the tabIndex attribute that do not account for integer literals
+
+ # 1.2.1 / 2016-05-19
+
+- [fix] Avoid testing interactivity of wrapper components with same name but different casing
+ as DOM elements (such as `Button` vs `button`).
+
+ # 1.2.0 / 2016-05-06
+
+- [new] Import all roles from DPUB-ARIA.
+
+ # 1.1.0 / 2016-05-06
+
+- [new] Add expression value handler for `BinaryExpression` type.
+- [new] Add expression value handler for `NewExpression` type.
+- [new] Add expression value handler for `ObjectExpression` type.
+- [fix] Throws error when getting an expression of type without a handler function. - This is for more graceful error handling and better issue reporting.
+
+ # 1.0.4 / 2016-04-28
+
+- [fix] Add expression value handler for `ConditionalExpression` type.
+
+ # 1.0.3 / 2016-04-25
+
+- [fix] Fix typo in recommended rules for `onclick-has-focus`.
+
+ # 1.0.2 / 2016-04-20
+
+- [fix] Add expression value handler for `ThisExpression` type.
+
+ # 1.0.1 / 2016-04-19
+
+- [fix] Fix build to copy source JSON files to build output.
+
+ # 1.0.0 / 2016-04-19
+
+- [breaking] Rename `img-uses-alt` to `img-has-alt`
+- [breaking] Rename `onlick-uses-role` to `onclick-has-role`
+- [breaking] Rename `mouse-events-map-to-key-events` to `mouse-events-have-key-events`
+- [breaking] Rename `use-onblur-not-onchange` to `no-onchange`
+- [breaking] Rename `label-uses-for` to `label-has-for`
+- [breaking] Rename `redundant-alt` to `img-redundant-alt`
+- [breaking] Rename `no-hash-href` to `href-no-hash`
+- [breaking] Rename `valid-aria-role` to `aria-role`
+
+- [new] Implement `aria-props` rule
+- [new] Implement `aria-proptypes` rule
+- [new] Implement `aria-unsupported-elements` rule
+- [new] Implement `onclick-has-focus` rule
+- [new] Implement `role-has-required-aria-props` rule
+- [new] Implement `role-supports-aria-props` rule
+- [new] Implement `tabindex-no-positive` rule
+
+ # 0.6.2 / 2016-04-08
+
+- [fix] Fix rule details for img-uses-alt: allow alt="" or role="presentation".
+
+ # 0.6.1 / 2016-04-07
+
+- [fix] Do not infer interactivity of components that are not low-level DOM elements.
+
+ # 0.6.0 / 2016-04-06
+
+- [breaking] Allow alt="" when role="presentation" on img-uses-alt rule.
+- [new] More descriptive error messaging for img-uses-alt rule.
+
+ # 0.5.2 / 2016-04-05
+
+- [fix] Handle token lists for valid-aria-role.
+
+ # 0.5.1 / 2016-04-05
+
+- [fix] Handle null valued props for valid-aria-role.
+
+ # 0.5.0 / 2016-04-02
+
+- [new] Implement valid-aria-role rule. Based on [AX_ARIA_01](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01)
+
+ # 0.4.3 / 2016-03-29
+
+- [fix] Handle LogicalExpression attribute types when extracting values. LogicalExpressions are of form ``
+
+ # 0.4.2 / 2016-03-24
+
+- [fix] Allow component names of form `Object.Property` i.e. `UX.Layout`
+
+ # 0.3.0 / 2016-03-02
+
+- [new] Implement [no-hash-href](docs/rules/no-hash-href.md) rule.
+- [fix] Fixed TemplateLiteral AST value building to get more exact values from template strings.
+
+ # 0.2.0 / 2016-03-01
+
+- [new] Implement [redunant-alt](docs/rules/redundant-alt.md) rule.
+
+ # 0.1.2 / 2016-03-01
+
+- Initial pre-release.
diff --git a/__mocks__/JSXAttributeMock.js b/__mocks__/JSXAttributeMock.js
index 8dab2480..16d9584c 100644
--- a/__mocks__/JSXAttributeMock.js
+++ b/__mocks__/JSXAttributeMock.js
@@ -1,6 +1,6 @@
/** @flow */
-import toAST from 'to-ast'; // eslint-disable-line import-x/no-extraneous-dependencies
+import toAST from 'to-ast';
import JSXExpressionContainerMock from './JSXExpressionContainerMock';
export type JSXAttributeMockType = {
diff --git a/__mocks__/genInteractives.js b/__mocks__/genInteractives.js
index dcac3c28..6b476c44 100644
--- a/__mocks__/genInteractives.js
+++ b/__mocks__/genInteractives.js
@@ -1,7 +1,6 @@
/** @flow */
import { dom, roles } from 'aria-query';
-import fromEntries from 'object.fromentries';
import JSXAttributeMock from './JSXAttributeMock';
import JSXElementMock from './JSXElementMock';
@@ -120,7 +119,7 @@ const nonInteractiveElementsMap: { [string]: Array<{ [string]: string }> } = {
};
const indeterminantInteractiveElementsMap: { [key: string]: Array } =
- fromEntries(domElements.map(name => [name, []]));
+ Object.fromEntries(domElements.map(name => [name, []]));
Object.keys(interactiveElementsMap)
.concat(Object.keys(nonInteractiveElementsMap))
diff --git a/__tests__/__util__/axeMapping.js b/__tests__/__util__/axeMapping.js
index b75fbc69..92d05a2e 100644
--- a/__tests__/__util__/axeMapping.js
+++ b/__tests__/__util__/axeMapping.js
@@ -1,4 +1,3 @@
-/* eslint-disable no-underscore-dangle */
import * as axe from 'axe-core';
export function axeFailMessage(checkId, data) {
diff --git a/__tests__/__util__/helpers/getESLintCoreRule.js b/__tests__/__util__/helpers/getESLintCoreRule.js
index 22f34724..b294311e 100644
--- a/__tests__/__util__/helpers/getESLintCoreRule.js
+++ b/__tests__/__util__/helpers/getESLintCoreRule.js
@@ -3,7 +3,6 @@ import semver from 'semver';
const isESLintV8 = semver.major(version) >= 8;
-// eslint-disable-next-line global-require, import-x/no-dynamic-require, import-x/no-unresolved
const getESLintCoreRule = ruleId =>
isESLintV8
? require('eslint/use-at-your-own-risk').builtinRules.get(ruleId)
diff --git a/__tests__/__util__/helpers/parsers.js b/__tests__/__util__/helpers/parsers.js
index f4e7be12..91e4da98 100644
--- a/__tests__/__util__/helpers/parsers.js
+++ b/__tests__/__util__/helpers/parsers.js
@@ -1,11 +1,9 @@
import path from 'path';
import semver from 'semver';
-import entries from 'object.entries';
import { version } from 'eslint/package.json';
let tsParserVersion;
try {
- // eslint-disable-next-line import-x/no-unresolved, global-require
tsParserVersion = require('@typescript-eslint/parser/package.json').version;
} catch {
//
@@ -25,7 +23,7 @@ function minEcmaVersion(features, parserOptions) {
...[]
.concat(
(parserOptions && parserOptions.ecmaVersion) || [],
- entries(minEcmaVersionForFeatures).flatMap(entry => {
+ Object.entries(minEcmaVersionForFeatures).flatMap(entry => {
const f = entry[0];
const y = entry[1];
return features.has(f) ? y : [];
diff --git a/__tests__/__util__/ruleOptionsMapperFactory.js b/__tests__/__util__/ruleOptionsMapperFactory.js
index ce51751a..ae6929e0 100644
--- a/__tests__/__util__/ruleOptionsMapperFactory.js
+++ b/__tests__/__util__/ruleOptionsMapperFactory.js
@@ -1,8 +1,5 @@
/** @flow */
-import entries from 'object.entries';
-import fromEntries from 'object.fromentries';
-
type ESLintTestRunnerTestCase = {
code: string,
errors: ?Array<{ message: string, type: string }>,
@@ -18,7 +15,6 @@ type RuleOptionsMapperFactoryType = (
export default function ruleOptionsMapperFactory(
ruleOptions: Array = [],
): RuleOptionsMapperFactoryType {
- // eslint-disable-next-line
return ({
code,
errors,
@@ -31,8 +27,10 @@ export default function ruleOptionsMapperFactory(
errors,
// Flatten the array of objects in an array of one object.
options: [
- fromEntries(
- (options || []).concat(ruleOptions).flatMap(item => entries(item)),
+ Object.fromEntries(
+ (options || [])
+ .concat(ruleOptions)
+ .flatMap(item => Object.entries(item)),
),
],
parserOptions,
diff --git a/__tests__/index-test.js b/__tests__/index-test.js
index 016f5d03..3a22cbba 100644
--- a/__tests__/index-test.js
+++ b/__tests__/index-test.js
@@ -14,7 +14,7 @@ test('all rule files should be exported by the plugin', t => {
rules.forEach(ruleName => {
t.equal(
plugin.rules[ruleName],
- require(path.join('../src/rules', ruleName)), // eslint-disable-line import-x/no-dynamic-require
+ require(path.join('../src/rules', ruleName)),
`exports ${ruleName}`,
);
});
@@ -34,7 +34,7 @@ test('configurations', t => {
test('schemas', t => {
rules.forEach(ruleName => {
- const rule = require(path.join('../src/rules', ruleName)); // eslint-disable-line import-x/no-dynamic-require
+ const rule = require(path.join('../src/rules', ruleName));
const schema = rule.meta && rule.meta.schema && rule.meta.schema[0];
const { type } = schema;
diff --git a/__tests__/src/rules/label-has-for-test.js b/__tests__/src/rules/label-has-for-test.js
index 27a14d9a..8aca71ed 100644
--- a/__tests__/src/rules/label-has-for-test.js
+++ b/__tests__/src/rules/label-has-for-test.js
@@ -8,7 +8,6 @@
// -----------------------------------------------------------------------------
import { RuleTester } from 'eslint';
-import assign from 'object.assign';
import parserOptionsMapper from '../../__util__/parserOptionsMapper';
import parsers from '../../__util__/helpers/parsers';
import rule from '../../../src/rules/label-has-for';
@@ -101,19 +100,27 @@ ruleTester.run('label-has-for', rule, {
// CUSTOM ELEMENT ARRAY OPTION TESTS
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{ code: '', options: optionsComponents },
{
@@ -122,27 +129,39 @@ ruleTester.run('label-has-for', rule, {
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: '',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{
code: 'Test!',
- options: [assign({}, optionsComponents[0], optionsRequiredSome[0])],
+ options: [
+ Object.assign({}, optionsComponents[0], optionsRequiredSome[0]),
+ ],
},
{ code: '', options: optionsRequiredSome },
{ code: '', options: optionsRequiredSome },
@@ -161,7 +180,9 @@ ruleTester.run('label-has-for', rule, {
{ code: '', options: optionsChildrenAllowed },
{
code: 'Test!',
- options: [assign({}, optionsComponents, optionsChildrenAllowed)],
+ options: [
+ Object.assign({}, optionsComponents, optionsChildrenAllowed),
+ ],
},
{ code: '', options: optionsChildrenAllowed },
{
diff --git a/babel.config.js b/babel.config.js
index 76163135..e25ebd58 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,12 +1,11 @@
module.exports = {
presets: [
[
- 'airbnb',
+ '@babel/env',
{
targets: {
node: 18,
},
- transformRuntime: false,
},
],
],
diff --git a/eslint.config.js b/eslint.config.js
index 6c126708..e3dde13a 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -7,6 +7,9 @@ const flowPlugin = require('eslint-plugin-ft-flow');
const { FlatCompat } = require('@eslint/eslintrc');
const babelParser = require('@babel/eslint-parser');
const prettierConfig = require('eslint-config-prettier');
+const {
+ createTypeScriptImportResolver,
+} = require('eslint-import-resolver-typescript');
const compat = new FlatCompat({
baseDirectory: __dirname,
@@ -14,7 +17,7 @@ const compat = new FlatCompat({
module.exports = defineConfig([
{
- ignores: ['lib', 'reports', 'examples'],
+ ignores: ['.yarn', 'lib', 'reports', 'examples'],
},
{
files: [
@@ -30,9 +33,7 @@ module.exports = defineConfig([
'import-x': importPlugin.flatConfigs.recommended.plugins['import-x'],
},
languageOptions: {
- globals: {
- ...globals.node,
- },
+ globals: globals.node,
parser: babelParser,
},
extends: [
@@ -45,7 +46,7 @@ module.exports = defineConfig([
'import-x/no-extraneous-dependencies': 'error',
},
settings: {
- 'import-x/resolver': 'typescript',
+ 'import-x/resolver-next': createTypeScriptImportResolver(),
},
},
...compat.config(flowPlugin.configs.recommended).map(config => ({
@@ -86,9 +87,7 @@ module.exports = defineConfig([
{
files: ['__tests__/**/*'],
languageOptions: {
- globals: {
- jest: true,
- },
+ globals: globals.jest,
},
},
]);
diff --git a/package.json b/package.json
index 0c2a7c37..5e3cf0e4 100644
--- a/package.json
+++ b/package.json
@@ -56,10 +56,7 @@
"emoji-regex": "^9.2.2",
"jsx-ast-utils-x": "^0.1.0",
"language-tags": "^1.0.9",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.8",
- "safe-regex-test": "^1.0.3",
- "string.prototype.includes": "^2.0.1"
+ "minimatch": "^3.1.2"
},
"devDependencies": {
"@1stg/prettier-config": "^5.2.0",
@@ -67,14 +64,13 @@
"@babel/core": "^7.26.0",
"@babel/eslint-parser": "^7.25.9",
"@babel/plugin-transform-flow-strip-types": "^7.25.9",
+ "@babel/preset-env": "^7.27.2",
"@babel/register": "^7.25.9",
"@changesets/changelog-github": "^0.5.1",
"@changesets/cli": "^2.29.4",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.26.0",
- "auto-changelog": "^2.5.0",
"babel-plugin-add-module-exports": "^1.0.4",
- "babel-preset-airbnb": "^5.0.0",
"clean-pkg-json": "^1.3.0",
"eslint": "^9.27.0",
"eslint-config-prettier": "^10.1.5",
@@ -84,15 +80,12 @@
"eslint-plugin-ft-flow": "^3.0.11",
"eslint-plugin-import-x": "^4.11.1",
"estraverse": "^5.3.0",
- "flow-bin": "^0.147.0",
"hermes-eslint": "^0.28.1",
"in-publish": "^2.0.1",
"jackspeak": "=2.1.1",
"jscodeshift": "^17.0.0",
"minimist": "^1.2.8",
"npm-run-all2": "^8.0.2",
- "object.assign": "^4.1.5",
- "object.entries": "^1.1.8",
"premove": "^4.0.0",
"prettier": "^3.5.3",
"semver": "^6.3.1",
diff --git a/scripts/create-rule.js b/scripts/create-rule.js
index 677b80e1..50c4f350 100755
--- a/scripts/create-rule.js
+++ b/scripts/create-rule.js
@@ -2,8 +2,8 @@
const path = require('path');
const fs = require('fs');
const { exec } = require('child_process');
-const argv = require('minimist')(process.argv.slice(2)); // eslint-disable-line import-x/no-extraneous-dependencies
-const jscodeshiftJSON = require('jscodeshift/package.json'); // eslint-disable-line import-x/no-extraneous-dependencies
+const argv = require('minimist')(process.argv.slice(2));
+const jscodeshiftJSON = require('jscodeshift/package.json');
const ruleBoilerplateGenerator = require('./boilerplate/rule');
const testBoilerplateGenerator = require('./boilerplate/test');
@@ -54,7 +54,7 @@ exec(
].join(' '),
error => {
if (error) {
- console.error(`exec error: ${error}`); // eslint-disable-line no-console
+ console.error(`exec error: ${error}`);
}
},
);
diff --git a/src/index.js b/src/index.js
index 6af2bf85..44660bca 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,4 +1,3 @@
-/* eslint-disable global-require */
const flatConfigBase = require('./configs/flat-config-base');
const legacyConfigBase = require('./configs/legacy-config-base');
const { name, version } = require('../package.json');
diff --git a/src/rules/accessible-emoji.js b/src/rules/accessible-emoji.js
index bac8e939..7dbc259b 100644
--- a/src/rules/accessible-emoji.js
+++ b/src/rules/accessible-emoji.js
@@ -9,7 +9,7 @@
import emojiRegex from 'emoji-regex';
import { getProp, getLiteralPropValue } from 'jsx-ast-utils-x';
-import safeRegexTest from 'safe-regex-test';
+
import { generateObjSchema } from '../util/schemas';
import getElementType from '../util/getElementType';
import isHiddenFromScreenReader from '../util/isHiddenFromScreenReader';
@@ -33,14 +33,14 @@ export default {
create: context => {
const elementType = getElementType(context);
- const testEmoji = safeRegexTest(emojiRegex());
+ const emojiRegexp = emojiRegex();
return {
JSXOpeningElement: node => {
const literalChildValue = node.parent.children.find(
child => child.type === 'Literal' || child.type === 'JSXText',
);
- if (literalChildValue && testEmoji(literalChildValue.value)) {
+ if (literalChildValue && emojiRegexp.test(literalChildValue.value)) {
const elementIsHidden = isHiddenFromScreenReader(
elementType(node),
node.attributes,
diff --git a/src/rules/anchor-is-valid.js b/src/rules/anchor-is-valid.js
index 36bfc54e..5afc0ecf 100644
--- a/src/rules/anchor-is-valid.js
+++ b/src/rules/anchor-is-valid.js
@@ -11,7 +11,6 @@
import { getProp, getPropValue } from 'jsx-ast-utils-x';
import type { JSXOpeningElement } from 'ast-types-flow';
-import safeRegexTest from 'safe-regex-test';
import type {
ESLintConfig,
ESLintContext,
@@ -52,7 +51,7 @@ export default ({
create: (context: ESLintContext): ESLintVisitorSelectorConfig => {
const elementType = getElementType(context);
- const testJShref = safeRegexTest(/^\W*?javascript:/);
+ const jsHrefRegexp = /^\W*?javascript:/;
return {
JSXOpeningElement: (node: JSXOpeningElement): void => {
@@ -120,7 +119,7 @@ export default ({
value =>
value != null &&
typeof value === 'string' &&
- (!value.length || value === '#' || testJShref(value)),
+ (!value.length || value === '#' || jsHrefRegexp.test(value)),
);
if (invalidHrefValues.length !== 0) {
// If an onClick is found it should be a button, otherwise it is an invalid link.
diff --git a/src/rules/aria-proptypes.js b/src/rules/aria-proptypes.js
index e7e4125e..351f51b8 100644
--- a/src/rules/aria-proptypes.js
+++ b/src/rules/aria-proptypes.js
@@ -45,7 +45,7 @@ const validityCheck = (value, expectedType, permittedValues) => {
case 'integer':
case 'number':
// Booleans resolve to 0/1 values so hard check that it's not first.
- // eslint-disable-next-line no-restricted-globals
+
return typeof value !== 'boolean' && isNaN(Number(value)) === false;
case 'token':
return (
diff --git a/src/rules/img-redundant-alt.js b/src/rules/img-redundant-alt.js
index 9bd4a418..78543bd3 100644
--- a/src/rules/img-redundant-alt.js
+++ b/src/rules/img-redundant-alt.js
@@ -9,8 +9,6 @@
// ----------------------------------------------------------------------------
import { getProp, getLiteralPropValue } from 'jsx-ast-utils-x';
-import stringIncludes from 'string.prototype.includes';
-import safeRegexTest from 'safe-regex-test';
import { generateObjSchema, arraySchema } from '../util/schemas';
import getElementType from '../util/getElementType';
import isHiddenFromScreenReader from '../util/isHiddenFromScreenReader';
@@ -25,14 +23,14 @@ const schema = generateObjSchema({
words: arraySchema,
});
-const isASCII = safeRegexTest(/[\x20-\x7F]+/);
+const ASCII_REGEXP = /[\x20-\x7F]+/;
function containsRedundantWord(value, redundantWords) {
const lowercaseRedundantWords = redundantWords.map(redundantWord =>
redundantWord.toLowerCase(),
);
- if (isASCII(value)) {
+ if (ASCII_REGEXP.test(value)) {
return value
.split(/\s+/)
.some(valueWord =>
@@ -40,7 +38,7 @@ function containsRedundantWord(value, redundantWords) {
);
}
return lowercaseRedundantWords.some(redundantWord =>
- stringIncludes(value.toLowerCase(), redundantWord),
+ value.toLowerCase().includes(redundantWord),
);
}
diff --git a/src/rules/tabindex-no-positive.js b/src/rules/tabindex-no-positive.js
index 684ab8b0..4899b592 100644
--- a/src/rules/tabindex-no-positive.js
+++ b/src/rules/tabindex-no-positive.js
@@ -35,7 +35,6 @@ export default {
// Only check literals because we can't infer values from certain expressions.
const value = Number(getLiteralPropValue(attribute));
- // eslint-disable-next-line no-restricted-globals
if (isNaN(value) || value <= 0) {
return;
}
diff --git a/src/util/getSuggestion.js b/src/util/getSuggestion.js
index e92d10b0..fbaf2f39 100644
--- a/src/util/getSuggestion.js
+++ b/src/util/getSuggestion.js
@@ -1,5 +1,4 @@
import editDistance from 'damerau-levenshtein';
-import fromEntries from 'object.fromentries';
// Minimum edit distance to be considered a good suggestion.
const THRESHOLD = 2;
@@ -9,7 +8,7 @@ const THRESHOLD = 2;
* suggestions to return.
*/
export default function getSuggestion(word, dictionary = [], limit = 2) {
- const distances = fromEntries(
+ const distances = Object.fromEntries(
dictionary.map(dictionaryWord => {
const distance = editDistance(
word.toUpperCase(),
diff --git a/yarn.lock b/yarn.lock
index 5b21c115..fe153f1e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -83,7 +83,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2":
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/compat-data@npm:7.27.2"
checksum: 10c0/077c9e01af3b90decee384a6a44dcf353898e980cee22ec7941f9074655dbbe97ec317345536cdc7ef7391521e1497930c522a3816af473076dd524be7fccd32
@@ -149,7 +149,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2":
+"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/helper-compilation-targets@npm:7.27.2"
dependencies:
@@ -249,7 +249,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-plugin-utils@npm:7.27.1"
checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b
@@ -282,7 +282,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1":
+"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1"
dependencies:
@@ -404,70 +404,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.8.3":
- version: 7.18.6
- resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.18.6"
- "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf
- languageName: node
- linkType: hard
-
-"@babel/plugin-proposal-numeric-separator@npm:^7.8.3":
- version: 7.18.6
- resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.18.6"
- "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/a83a65c6ec0d2293d830e9db61406d246f22d8ea03583d68460cb1b6330c6699320acce1b45f66ba3c357830720e49267e3d99f95088be457c66e6450fbfe3fa
- languageName: node
- linkType: hard
-
-"@babel/plugin-proposal-object-rest-spread@npm:^7.9.0":
- version: 7.20.7
- resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7"
- dependencies:
- "@babel/compat-data": "npm:^7.20.5"
- "@babel/helper-compilation-targets": "npm:^7.20.7"
- "@babel/helper-plugin-utils": "npm:^7.20.2"
- "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3"
- "@babel/plugin-transform-parameters": "npm:^7.20.7"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8
- languageName: node
- linkType: hard
-
-"@babel/plugin-proposal-optional-catch-binding@npm:^7.8.3":
- version: 7.18.6
- resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.18.6"
- "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/ab20153d9e95e0b73004fdf86b6a2d219be2a0ace9ca76cd9eccddb680c913fec173bca54d761b1bc6044edde0a53811f3e515908c3b16d2d81cfec1e2e17391
- languageName: node
- linkType: hard
-
-"@babel/plugin-proposal-optional-chaining@npm:^7.9.0":
- version: 7.21.0
- resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.20.2"
- "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0"
- "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f
- languageName: node
- linkType: hard
-
"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2":
version: 7.21.0-placeholder-for-preset-env.2
resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2"
@@ -521,61 +457,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3":
- version: 7.8.3
- resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.8.0"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce
- languageName: node
- linkType: hard
-
-"@babel/plugin-syntax-numeric-separator@npm:^7.10.4":
- version: 7.10.4
- resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.10.4"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9
- languageName: node
- linkType: hard
-
-"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3":
- version: 7.8.3
- resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.8.0"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26
- languageName: node
- linkType: hard
-
-"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3":
- version: 7.8.3
- resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.8.0"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af
- languageName: node
- linkType: hard
-
-"@babel/plugin-syntax-optional-chaining@npm:^7.8.3":
- version: 7.8.3
- resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.8.0"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81
- languageName: node
- linkType: hard
-
"@babel/plugin-syntax-typescript@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-syntax-typescript@npm:7.27.1"
@@ -682,7 +563,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.27.1, @babel/plugin-transform-classes@npm:^7.9.2":
+"@babel/plugin-transform-classes@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-classes@npm:7.27.1"
dependencies:
@@ -767,7 +648,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1, @babel/plugin-transform-exponentiation-operator@npm:^7.8.3":
+"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1"
dependencies:
@@ -859,7 +740,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-member-expression-literals@npm:^7.27.1, @babel/plugin-transform-member-expression-literals@npm:^7.8.3":
+"@babel/plugin-transform-member-expression-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1"
dependencies:
@@ -1014,7 +895,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.27.1":
+"@babel/plugin-transform-parameters@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-parameters@npm:7.27.1"
dependencies:
@@ -1050,7 +931,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-property-literals@npm:^7.27.1, @babel/plugin-transform-property-literals@npm:^7.8.3":
+"@babel/plugin-transform-property-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-property-literals@npm:7.27.1"
dependencies:
@@ -1061,66 +942,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-property-mutators@npm:^7.8.3":
- version: 7.27.1
- resolution: "@babel/plugin-transform-property-mutators@npm:7.27.1"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/b8ba08e7e0c584ab5cf56607609c2e2557e51e20d38dc68a0d3a2ea10a1ed3a5f774ecd072039df58a00103f6a4def12315a721b67edf0856ddda683f8caffaa
- languageName: node
- linkType: hard
-
-"@babel/plugin-transform-react-display-name@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-react-display-name@npm:7.27.1"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/6cd474b5fb30a2255027d8fc19975aee1c1da54dd8bc8b79802676096182ca4136302ce65a24fbb277f8fe30f266006bbf327ef6be2846d3681eb57509744125
- languageName: node
- linkType: hard
-
-"@babel/plugin-transform-react-jsx-development@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1"
- dependencies:
- "@babel/plugin-transform-react-jsx": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/eb8c4b6a79dc5c49b41e928e2037e1ee0bbfa722e4fd74c0b7c0d11103c82c2c25c434000e1b051d534c7261ab5c92b6d1e85313bf1b26e37db3f051ae217b58
- languageName: node
- linkType: hard
-
-"@babel/plugin-transform-react-jsx@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1"
- dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.27.1"
- "@babel/helper-module-imports": "npm:^7.27.1"
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- "@babel/plugin-syntax-jsx": "npm:^7.27.1"
- "@babel/types": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/1a08637c39fc78c9760dd4a3ed363fdbc762994bf83ed7872ad5bda0232fcd0fc557332f2ce36b522c0226dfd9cc8faac6b88eddda535f24825198a689e571af
- languageName: node
- linkType: hard
-
-"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1"
- dependencies:
- "@babel/helper-annotate-as-pure": "npm:^7.27.1"
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/34bc090f4a7e460d82a851971b4d0f32e4bb519bafb927154f4174506283fe02b0f471fc20655c6050a8bf7b748bfa31c7e8f7d688849476d8266623554fbb28
- languageName: node
- linkType: hard
-
"@babel/plugin-transform-regenerator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-regenerator@npm:7.27.1"
@@ -1155,22 +976,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-runtime@npm:^7.9.0":
- version: 7.27.1
- resolution: "@babel/plugin-transform-runtime@npm:7.27.1"
- dependencies:
- "@babel/helper-module-imports": "npm:^7.27.1"
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- babel-plugin-polyfill-corejs2: "npm:^0.4.10"
- babel-plugin-polyfill-corejs3: "npm:^0.11.0"
- babel-plugin-polyfill-regenerator: "npm:^0.6.1"
- semver: "npm:^6.3.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/7abbae60a6441ba8546dee3fcbc00b38038304250ba2419adaf0c76267bff43420ff75b7049003a24a829e01d9fde2ac8a422352af6d88aebd31996a83f04c2f
- languageName: node
- linkType: hard
-
"@babel/plugin-transform-shorthand-properties@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1"
@@ -1205,7 +1010,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-template-literals@npm:^7.27.1, @babel/plugin-transform-template-literals@npm:^7.8.3":
+"@babel/plugin-transform-template-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-template-literals@npm:7.27.1"
dependencies:
@@ -1289,7 +1094,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-env@npm:^7.9.0":
+"@babel/preset-env@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/preset-env@npm:7.27.2"
dependencies:
@@ -1394,22 +1199,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-react@npm:^7.9.4":
- version: 7.27.1
- resolution: "@babel/preset-react@npm:7.27.1"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- "@babel/helper-validator-option": "npm:^7.27.1"
- "@babel/plugin-transform-react-display-name": "npm:^7.27.1"
- "@babel/plugin-transform-react-jsx": "npm:^7.27.1"
- "@babel/plugin-transform-react-jsx-development": "npm:^7.27.1"
- "@babel/plugin-transform-react-pure-annotations": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10c0/a80b02ef08b026cb9830d6512d08c7cd378eef4c0631dacba4aa1106240d9bb76af6373463f0255f4bbdbfcce40375a61e92735375906ba5871629b0c314bc45
- languageName: node
- linkType: hard
-
"@babel/preset-typescript@npm:^7.24.7":
version: 7.27.1
resolution: "@babel/preset-typescript@npm:7.27.1"
@@ -2701,22 +2490,6 @@ __metadata:
languageName: node
linkType: hard
-"auto-changelog@npm:^2.5.0":
- version: 2.5.0
- resolution: "auto-changelog@npm:2.5.0"
- dependencies:
- commander: "npm:^7.2.0"
- handlebars: "npm:^4.7.7"
- import-cwd: "npm:^3.0.0"
- node-fetch: "npm:^2.6.1"
- parse-github-url: "npm:^1.0.3"
- semver: "npm:^7.3.5"
- bin:
- auto-changelog: src/index.js
- checksum: 10c0/aa4c0389f33902f7185e6956d1dc641db027577a5c2c37782aa5a5dee531030a59f37d943bd8f9e86c457e5a2c75983aab604467a834cb5992c266dc9ac4bbfd
- languageName: node
- linkType: hard
-
"available-typed-arrays@npm:^1.0.7":
version: 1.0.7
resolution: "available-typed-arrays@npm:1.0.7"
@@ -2783,40 +2556,6 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-transform-react-remove-prop-types@npm:^0.4.24":
- version: 0.4.24
- resolution: "babel-plugin-transform-react-remove-prop-types@npm:0.4.24"
- checksum: 10c0/713441fd9fb663cc95709cb52d9c2c6228ea6d5406092a8a50094c810bcb13c3c347f8fca703d45b20cc401782743a91d7272025950147f9247d53360267f107
- languageName: node
- linkType: hard
-
-"babel-preset-airbnb@npm:^5.0.0":
- version: 5.0.0
- resolution: "babel-preset-airbnb@npm:5.0.0"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.8.3"
- "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.8.3"
- "@babel/plugin-proposal-numeric-separator": "npm:^7.8.3"
- "@babel/plugin-proposal-object-rest-spread": "npm:^7.9.0"
- "@babel/plugin-proposal-optional-catch-binding": "npm:^7.8.3"
- "@babel/plugin-proposal-optional-chaining": "npm:^7.9.0"
- "@babel/plugin-transform-classes": "npm:^7.9.2"
- "@babel/plugin-transform-exponentiation-operator": "npm:^7.8.3"
- "@babel/plugin-transform-member-expression-literals": "npm:^7.8.3"
- "@babel/plugin-transform-property-literals": "npm:^7.8.3"
- "@babel/plugin-transform-property-mutators": "npm:^7.8.3"
- "@babel/plugin-transform-runtime": "npm:^7.9.0"
- "@babel/plugin-transform-template-literals": "npm:^7.8.3"
- "@babel/preset-env": "npm:^7.9.0"
- "@babel/preset-react": "npm:^7.9.4"
- babel-plugin-transform-react-remove-prop-types: "npm:^0.4.24"
- peerDependencies:
- "@babel/core": ^7.0.0
- "@babel/runtime": ^7.0.0
- checksum: 10c0/4a53ac21607d83293959ff6abccab800c185e7c6c02d4aa6164a6a654d5da437d417a53ef3bfbc24d946d31927e7abde21992e0e1385b3cb4b5a2e8a2916a1cd
- languageName: node
- linkType: hard
-
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
@@ -3105,13 +2844,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^7.2.0":
- version: 7.2.0
- resolution: "commander@npm:7.2.0"
- checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a
- languageName: node
- linkType: hard
-
"comment-parser@npm:^1.4.0, comment-parser@npm:^1.4.1":
version: 1.4.1
resolution: "comment-parser@npm:1.4.1"
@@ -3495,7 +3227,7 @@ __metadata:
languageName: node
linkType: hard
-"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9":
+"es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9":
version: 1.23.9
resolution: "es-abstract@npm:1.23.9"
dependencies:
@@ -3755,6 +3487,7 @@ __metadata:
"@babel/core": "npm:^7.26.0"
"@babel/eslint-parser": "npm:^7.25.9"
"@babel/plugin-transform-flow-strip-types": "npm:^7.25.9"
+ "@babel/preset-env": "npm:^7.27.2"
"@babel/register": "npm:^7.25.9"
"@changesets/changelog-github": "npm:^0.5.1"
"@changesets/cli": "npm:^2.29.4"
@@ -3762,11 +3495,9 @@ __metadata:
"@eslint/js": "npm:^9.26.0"
aria-query: "npm:^5.3.2"
ast-types-flow: "npm:^0.0.8"
- auto-changelog: "npm:^2.5.0"
axe-core: "npm:^4.10.2"
axobject-query: "npm:^4.1.0"
babel-plugin-add-module-exports: "npm:^1.0.4"
- babel-preset-airbnb: "npm:^5.0.0"
clean-pkg-json: "npm:^1.3.0"
damerau-levenshtein: "npm:^1.0.8"
emoji-regex: "npm:^9.2.2"
@@ -3778,7 +3509,6 @@ __metadata:
eslint-plugin-ft-flow: "npm:^3.0.11"
eslint-plugin-import-x: "npm:^4.11.1"
estraverse: "npm:^5.3.0"
- flow-bin: "npm:^0.147.0"
hermes-eslint: "npm:^0.28.1"
in-publish: "npm:^2.0.1"
jackspeak: "npm:=2.1.1"
@@ -3788,14 +3518,9 @@ __metadata:
minimatch: "npm:^3.1.2"
minimist: "npm:^1.2.8"
npm-run-all2: "npm:^8.0.2"
- object.assign: "npm:^4.1.5"
- object.entries: "npm:^1.1.8"
- object.fromentries: "npm:^2.0.8"
premove: "npm:^4.0.0"
prettier: "npm:^3.5.3"
- safe-regex-test: "npm:^1.0.3"
semver: "npm:^6.3.1"
- string.prototype.includes: "npm:^2.0.1"
tape: "npm:^5.9.0"
to-ast: "npm:^1.0.0"
peerDependencies:
@@ -4126,15 +3851,6 @@ __metadata:
languageName: node
linkType: hard
-"flow-bin@npm:^0.147.0":
- version: 0.147.0
- resolution: "flow-bin@npm:0.147.0"
- bin:
- flow: cli.js
- checksum: 10c0/38482c9cf152b2c84a42e2de2f3233f520ee7d71f45c98a60e055bc45fa694176e811e5c207ef950f2b85881fff291b37c933274339ab8b6e5aaba952b844bd9
- languageName: node
- linkType: hard
-
"flow-parser@npm:0.*":
version: 0.271.0
resolution: "flow-parser@npm:0.271.0"
@@ -4415,24 +4131,6 @@ __metadata:
languageName: node
linkType: hard
-"handlebars@npm:^4.7.7":
- version: 4.7.8
- resolution: "handlebars@npm:4.7.8"
- dependencies:
- minimist: "npm:^1.2.5"
- neo-async: "npm:^2.6.2"
- source-map: "npm:^0.6.1"
- uglify-js: "npm:^3.1.4"
- wordwrap: "npm:^1.0.0"
- dependenciesMeta:
- uglify-js:
- optional: true
- bin:
- handlebars: bin/handlebars
- checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d
- languageName: node
- linkType: hard
-
"has-bigints@npm:^1.0.2":
version: 1.1.0
resolution: "has-bigints@npm:1.1.0"
@@ -4589,15 +4287,6 @@ __metadata:
languageName: node
linkType: hard
-"import-cwd@npm:^3.0.0":
- version: 3.0.0
- resolution: "import-cwd@npm:3.0.0"
- dependencies:
- import-from: "npm:^3.0.0"
- checksum: 10c0/398eff50e400b0db4ccabf7626391ac3aa959d9f95e659cd26d217f9d33b41f3aa02b7056ac4c3a2bf1d12b359b4761756d784f470c223297774480f6546857d
- languageName: node
- linkType: hard
-
"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.1
resolution: "import-fresh@npm:3.3.1"
@@ -4608,15 +4297,6 @@ __metadata:
languageName: node
linkType: hard
-"import-from@npm:^3.0.0":
- version: 3.0.0
- resolution: "import-from@npm:3.0.0"
- dependencies:
- resolve-from: "npm:^5.0.0"
- checksum: 10c0/83a40470190f2d9c6ca6a0a2d2de40e9d0b38eedeb2409320a44eaeed48751678e206c9ac7fefef18be19c95ad1cc0e98c844fdf631ab3d9a5597c3476e7525f
- languageName: node
- linkType: hard
-
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
@@ -5696,7 +5376,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.5, minimist@npm:^1.2.8":
+"minimist@npm:^1.2.8":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
@@ -5840,7 +5520,7 @@ __metadata:
languageName: node
linkType: hard
-"neo-async@npm:^2.5.0, neo-async@npm:^2.6.2":
+"neo-async@npm:^2.5.0":
version: 2.6.2
resolution: "neo-async@npm:2.6.2"
checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d
@@ -5857,7 +5537,7 @@ __metadata:
languageName: node
linkType: hard
-"node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.1":
+"node-fetch@npm:^2.5.0":
version: 2.7.0
resolution: "node-fetch@npm:2.7.0"
dependencies:
@@ -5989,30 +5669,6 @@ __metadata:
languageName: node
linkType: hard
-"object.entries@npm:^1.1.8":
- version: 1.1.9
- resolution: "object.entries@npm:1.1.9"
- dependencies:
- call-bind: "npm:^1.0.8"
- call-bound: "npm:^1.0.4"
- define-properties: "npm:^1.2.1"
- es-object-atoms: "npm:^1.1.1"
- checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db
- languageName: node
- linkType: hard
-
-"object.fromentries@npm:^2.0.8":
- version: 2.0.8
- resolution: "object.fromentries@npm:2.0.8"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.2"
- es-object-atoms: "npm:^1.0.0"
- checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b
- languageName: node
- linkType: hard
-
"once@npm:^1.3.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
@@ -6161,15 +5817,6 @@ __metadata:
languageName: node
linkType: hard
-"parse-github-url@npm:^1.0.3":
- version: 1.0.3
- resolution: "parse-github-url@npm:1.0.3"
- bin:
- parse-github-url: cli.js
- checksum: 10c0/8a56103f0cdb6f9bd0ffcd7fd4fe1404a414f18441c4d89ab9d9c5eca3b43d6f7cdb899cb979f061df9d8a85d5af275cab05beff953b07f2ff65a6c2826b9293
- languageName: node
- linkType: hard
-
"parse-json@npm:^5.2.0":
version: 5.2.0
resolution: "parse-json@npm:5.2.0"
@@ -6756,7 +6403,7 @@ __metadata:
languageName: node
linkType: hard
-"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0":
+"safe-regex-test@npm:^1.1.0":
version: 1.1.0
resolution: "safe-regex-test@npm:1.1.0"
dependencies:
@@ -7096,17 +6743,6 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.includes@npm:^2.0.1":
- version: 2.0.1
- resolution: "string.prototype.includes@npm:2.0.1"
- dependencies:
- call-bind: "npm:^1.0.7"
- define-properties: "npm:^1.2.1"
- es-abstract: "npm:^1.23.3"
- checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5
- languageName: node
- linkType: hard
-
"string.prototype.trim@npm:^1.2.10, string.prototype.trim@npm:^1.2.9":
version: 1.2.10
resolution: "string.prototype.trim@npm:1.2.10"
@@ -7431,15 +7067,6 @@ __metadata:
languageName: node
linkType: hard
-"uglify-js@npm:^3.1.4":
- version: 3.19.3
- resolution: "uglify-js@npm:3.19.3"
- bin:
- uglifyjs: bin/uglifyjs
- checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479
- languageName: node
- linkType: hard
-
"ulid@npm:^2.3.0":
version: 2.4.0
resolution: "ulid@npm:2.4.0"
@@ -7717,13 +7344,6 @@ __metadata:
languageName: node
linkType: hard
-"wordwrap@npm:^1.0.0":
- version: 1.0.0
- resolution: "wordwrap@npm:1.0.0"
- checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92
- languageName: node
- linkType: hard
-
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0"