-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
create rule: github/a11y-no-visually-hidden-interactive-element #446
Conversation
lib/index.js
Outdated
@@ -1,5 +1,6 @@ | |||
module.exports = { | |||
rules: { | |||
'a11y-no-sr-only-class-when-focusable': require('./rules/a11y-no-sr-only-class-when-focusable'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we wait to include this until: https://github.com/github/accessibility/issues/3868
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's fine! We could always override disable is temporarily in our projects.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yay I'm excited to see this! I will review more in-depth tomorrow but leaving a comment per quick skim of the description!
but we use the Primer component VisuallyHidden
TIL about VisuallyHidden
in Primer! 🤯
Since sr-only
and VisuallyHidden
is very GitHub/Primer-centric, and many consumers use this plugin outside of GitHub/Primer-consumers, could we allow this (the sr-only classname and the type) to be configured through the ESLint rule-level configs? I believe there are examples of this in the jsx-a11y
library.
For example, if I am a consumer whose project uses the class visually-hidden
instead of sr-only
, or the type ScreenReaderOnly
instead of VisuallyHidden
, I'd still like to be able to benefit from this rule.
@khiga8 Love that thought! Great idea... I'll add this in and re-tag you for an in-depth review when its updated. |
Interestingly, my passion week project is a use-case where we do want to visuallyHide an interactive element 🤔 |
@kendallgassner Could you bring up this example in the channel so we can discuss if it's valid? |
const {getElementType} = require('../utils/get-element-type') | ||
const {generateObjSchema} = require('eslint-plugin-jsx-a11y/lib/util/schemas') | ||
|
||
const defaultClassName = 'sr-only' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
considering making the default visually-hidden
for readability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I prefer sr-only
just because it's more widely used within different GitHub projects! As long as we document what the default is and how consumers can change it, I think sr-only
would be okay.
{code: "<span className='sr-only'>Text</span>;"}, | ||
{code: "<button className='other'>Submit</button>"}, | ||
{code: "<input className='sr-only' />"}, | ||
{code: "<a className='other show-on-focus'>skip to main content</a>"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check that show-on-focus
class is valid! This way I don't have to remove the a
tag from the list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add this rule to react.js so it's on by default :)
I have a few suggestions. This is coming along really nicely <3
const {getElementType} = require('../utils/get-element-type') | ||
const {generateObjSchema} = require('eslint-plugin-jsx-a11y/lib/util/schemas') | ||
|
||
const defaultClassName = 'sr-only' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I prefer sr-only
just because it's more widely used within different GitHub projects! As long as we document what the default is and how consumers can change it, I think sr-only
would be okay.
|
||
## Rule Details | ||
|
||
This rule guards against visually hiding interactive elements. If a sighted keyboard user navigates to an interactive element that is visually hidden they might become confused and assume that keyboard focus has been lost. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we note the default class/type, as well as which interactive elements we're checking against?
I like the note you added in the code about why we're excluding input
. Could we add it here too?
|
||
const checkIfInteractiveElement = (context, node) => { | ||
const elementType = getElementType(context, node.openingElement) | ||
const asProp = getPropValue(getProp(node.openingElement.attributes, 'as')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love this approach of just directly grabbing the tag from as
, a lot more than this experimental approach I added some time ago! I've been wanting to revisit and remove this - Component mapping experimental!
Since as
is Primer React specific, can we allow the as
to be configured in the config as well? (e.g. maybe some design systems use tag
or component
).
I think this line can be moved into getElementType
so this prop can be checked for all JSX rules, and we can get rid of the comopnent mapping stuff (lines 15-34) and the README!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can pair on this in our sync :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
htmlPropName
- name for 'as' config
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will definitely defer to @khiga8 's review here, but no concerns form the web-systems standpoint
@khiga8 I added the documentation updates and the |
const errorMessage = | ||
'Avoid visually hidding interactive elements. Visually hiding interactive elements can be confusing to sighted keyboard users as it appears their focus has been lost when they navigate to the hidden element.' | ||
|
||
ruleTester.run('a11y-no-visually-hidden-interactive-element', rule, { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we add a test to make sure the options work as expected? Here's an example! :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing! I didn't realize that was a test option!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have one test suggestion, but please feel free to merge after that!
This looks great 🚀! Good call on doing the other updates in a separate PR, I agree!
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jest) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped)) | [`29.5.2` -> `29.5.3`](https://renovatebot.com/diffs/npm/@types%2fjest/29.5.2/29.5.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fjest/29.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fjest/29.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fjest/29.5.2/29.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fjest/29.5.2/29.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped)) | [`18.16.18` -> `18.17.4`](https://renovatebot.com/diffs/npm/@types%2fnode/18.16.18/18.17.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/18.17.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/18.17.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/18.16.18/18.17.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/18.16.18/18.17.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | [`5.60.0` -> `5.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.60.0/5.62.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/5.60.0/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/5.60.0/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | [`5.60.0` -> `5.62.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.60.0/5.62.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/5.60.0/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/5.60.0/5.62.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`8.43.0` -> `8.46.0`](https://renovatebot.com/diffs/npm/eslint/8.43.0/8.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/8.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/8.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/8.43.0/8.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/8.43.0/8.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [eslint-plugin-github](https://github.com/github/eslint-plugin-github) | [`4.8.0` -> `4.9.2`](https://renovatebot.com/diffs/npm/eslint-plugin-github/4.8.0/4.9.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-github/4.9.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-github/4.9.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-github/4.8.0/4.9.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-github/4.8.0/4.9.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [jest](https://jestjs.io/) ([source](https://github.com/facebook/jest)) | [`29.5.0` -> `29.6.2`](https://renovatebot.com/diffs/npm/jest/29.5.0/29.6.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jest/29.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jest/29.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jest/29.5.0/29.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jest/29.5.0/29.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [sigstore](https://github.com/sigstore/sigstore-js/tree/main/packages/client#readme) ([source](https://github.com/sigstore/sigstore-js)) | [`1.6.0` -> `1.8.0`](https://renovatebot.com/diffs/npm/sigstore/1.6.0/1.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/sigstore/1.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sigstore/1.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sigstore/1.6.0/1.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sigstore/1.6.0/1.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [ts-jest](https://kulshekhar.github.io/ts-jest) ([source](https://github.com/kulshekhar/ts-jest)) | [`29.1.0` -> `29.1.1`](https://renovatebot.com/diffs/npm/ts-jest/29.1.0/29.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/ts-jest/29.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ts-jest/29.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ts-jest/29.1.0/29.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ts-jest/29.1.0/29.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [typescript](https://www.typescriptlang.org/) ([source](https://github.com/Microsoft/TypeScript)) | [`5.1.3` -> `5.1.6`](https://renovatebot.com/diffs/npm/typescript/5.1.3/5.1.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.1.3/5.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.1.3/5.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v5.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#5620-2023-07-10) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) ##### Bug Fixes - **eslint-plugin:** \[comma-spacing] allow no space after trailing comma in objects and arrays ([#​6938](https://github.com/typescript-eslint/typescript-eslint/issues/6938)) ([24bdacc](https://github.com/typescript-eslint/typescript-eslint/commit/24bdacc7e5df40c92031a1bd7e9815d66a35b31d)) - **eslint-plugin:** \[prefer-includes] escape special characters ([#​7161](https://github.com/typescript-eslint/typescript-eslint/issues/7161)) ([5a347a5](https://github.com/typescript-eslint/typescript-eslint/commit/5a347a5978bc5737412bd12d61eb6058163cf4a0)), closes [#​7145](https://github.com/typescript-eslint/typescript-eslint/issues/7145) - **eslint-plugin:** replace auto-fix of class literal property style rule with suggestion ([#​7054](https://github.com/typescript-eslint/typescript-eslint/issues/7054)) ([a8c824a](https://github.com/typescript-eslint/typescript-eslint/commit/a8c824a1e84453f93cd2b464fc102bc878c1aff3)) ##### Features - **eslint-plugin:** \[prefer-nullish-coalescing] add `ignorePrimitives` option ([#​6487](https://github.com/typescript-eslint/typescript-eslint/issues/6487)) ([6edaa04](https://github.com/typescript-eslint/typescript-eslint/commit/6edaa04565576f0af7e60bc08602bd781c847804)) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v5.61.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#5610-2023-07-03) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) ##### Features - **eslint-plugin:** \[ban-types] ban types in extends and implements ([#​7129](https://github.com/typescript-eslint/typescript-eslint/issues/7129)) ([997783f](https://github.com/typescript-eslint/typescript-eslint/commit/997783ff108ca18af709667ef3fdfa7134a8eefe)) - use graphemer instead of grapheme-splitter ([#​7069](https://github.com/typescript-eslint/typescript-eslint/issues/7069)) ([faea3ff](https://github.com/typescript-eslint/typescript-eslint/commit/faea3ff8b4d750974c41262b44db314f20d0c99c)) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. #### [5.60.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) (2023-06-26) **Note:** Version bump only for package [@​typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/eslint-plugin) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v5.60.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#5601-2023-06-26) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) **Note:** Version bump only for package [@​typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/eslint-plugin) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v5.62.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#5620-2023-07-10) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) **Note:** Version bump only for package [@​typescript-eslint/parser](https://github.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v5.61.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#5610-2023-07-03) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) **Note:** Version bump only for package [@​typescript-eslint/parser](https://github.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. #### [5.60.1](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) (2023-06-26) **Note:** Version bump only for package [@​typescript-eslint/parser](https://github.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v5.60.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#5601-2023-06-26) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) **Note:** Version bump only for package [@​typescript-eslint/parser](https://github.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v8.46.0`](https://github.com/eslint/eslint/releases/tag/v8.46.0) [Compare Source](https://github.com/eslint/eslint/compare/v8.45.0...v8.46.0) #### Features - [`8a93438`](https://github.com/eslint/eslint/commit/8a9343871f7dade19d910ca8e2a4177bfca28b64) feat: `require-unicode-regexp` support `v` flag ([#​17402](https://github.com/eslint/eslint/issues/17402)) (SUZUKI Sosuke) - [`1a2f966`](https://github.com/eslint/eslint/commit/1a2f966fabe35103141d2f936180d2f1a72154db) feat: `no-useless-escape` support `v` flag ([#​17420](https://github.com/eslint/eslint/issues/17420)) (Yosuke Ota) - [`ee68d1d`](https://github.com/eslint/eslint/commit/ee68d1d9630892d99ae0d8dabe2f9f8d3b1338be) feat: `no-empty-character-class` support `v` flag ([#​17419](https://github.com/eslint/eslint/issues/17419)) (Milos Djermanovic) - [`853d32b`](https://github.com/eslint/eslint/commit/853d32baa8934c08b59a738470b72522e1505f6f) feat: deprecate no-return-await ([#​17417](https://github.com/eslint/eslint/issues/17417)) (Carlos Lopez) - [`d4f02e4`](https://github.com/eslint/eslint/commit/d4f02e4bf1b9ae4e1fc8f2bc4e4851ae3c36a127) feat: `no-control-regex` support `v` flag ([#​17405](https://github.com/eslint/eslint/issues/17405)) (Yosuke Ota) - [`2a35f3e`](https://github.com/eslint/eslint/commit/2a35f3e6ed27deafbebba48b6aec570d3abf9974) feat: `prefer-named-capture-group` support `v` flag ([#​17409](https://github.com/eslint/eslint/issues/17409)) (Yosuke Ota) - [`8ca8b50`](https://github.com/eslint/eslint/commit/8ca8b50b0425b3bad34a9505bc3095168e2f59d8) feat: Better error message for flat config plugins ([#​17399](https://github.com/eslint/eslint/issues/17399)) (Nicholas C. Zakas) - [`509f753`](https://github.com/eslint/eslint/commit/509f75395035822280245772e2a95732a0dde0e1) feat: `no-misleading-character-class` support `v` flag ([#​17406](https://github.com/eslint/eslint/issues/17406)) (Yosuke Ota) - [`3caf514`](https://github.com/eslint/eslint/commit/3caf51487decdf93a4b17765a2af2a51c337e974) feat: `no-regex-spaces` support `v` flag ([#​17407](https://github.com/eslint/eslint/issues/17407)) (Yosuke Ota) - [`b7fad2b`](https://github.com/eslint/eslint/commit/b7fad2b52f23667628cf209663795a721c88d0ba) feat: `prefer-regex-literals` support `v` flag ([#​17410](https://github.com/eslint/eslint/issues/17410)) (Yosuke Ota) - [`a6a3ad4`](https://github.com/eslint/eslint/commit/a6a3ad4ae438ea7fc3a1d97cd2555f6534b565f1) feat: `no-useless-backreference` support `v` flag ([#​17408](https://github.com/eslint/eslint/issues/17408)) (Yosuke Ota) - [`94954a7`](https://github.com/eslint/eslint/commit/94954a715448d5794f2892bf212fe986b43228ed) feat: `no-invalid-regexp` support `v` flag ([#​17404](https://github.com/eslint/eslint/issues/17404)) (Yosuke Ota) - [`1af6eac`](https://github.com/eslint/eslint/commit/1af6eac5727080c809e37c07dc729b44ef24483c) feat: adds option for allowing empty object patterns as parameter ([#​17365](https://github.com/eslint/eslint/issues/17365)) (Tanuj Kanti) - [`cf03104`](https://github.com/eslint/eslint/commit/cf03104b278fea59ef46e09f667110f5eaaf95e3) feat: Improve config error messages ([#​17385](https://github.com/eslint/eslint/issues/17385)) (Nicholas C. Zakas) #### Bug Fixes - [`9803c7c`](https://github.com/eslint/eslint/commit/9803c7c04078f0672d8a480fd39cf3bbef8017e6) fix: FlatESLint#getRulesMetaForResults shouldn't throw on unknown rules ([#​17393](https://github.com/eslint/eslint/issues/17393)) (Milos Djermanovic) - [`42faa17`](https://github.com/eslint/eslint/commit/42faa17b1c93f801b14bea2840d1d528e25c7211) fix: Update no-loop-func to not overlap with no-undef ([#​17358](https://github.com/eslint/eslint/issues/17358)) (Matt Wilkinson) #### Documentation - [`4d474e3`](https://github.com/eslint/eslint/commit/4d474e351ba6ce0242f18e55c27cb3ae17b84f63) docs: update with TypeScript info ([#​17423](https://github.com/eslint/eslint/issues/17423)) (James) - [`091f44e`](https://github.com/eslint/eslint/commit/091f44e4c72007edb2ac6d4db4eafa5501e41e94) docs: File extension named processor deprecation ([#​17362](https://github.com/eslint/eslint/issues/17362)) (Matt Wilkinson) - [`9254a6c`](https://github.com/eslint/eslint/commit/9254a6cea845dfaf2f3f52f718cb9b071853aa09) docs: Update README (GitHub Actions Bot) - [`6d6dc51`](https://github.com/eslint/eslint/commit/6d6dc5141f535728029eef8735854a421bc08eba) docs: fix overlapping of `open in playground` button ([#​17403](https://github.com/eslint/eslint/issues/17403)) (Tanuj Kanti) - [`7fc3a2c`](https://github.com/eslint/eslint/commit/7fc3a2ce68979a2c2a6fc779e647b3004ab6f4ac) docs: Add private class features info to no-underscore-dangle ([#​17386](https://github.com/eslint/eslint/issues/17386)) (Matt Wilkinson) - [`da73e58`](https://github.com/eslint/eslint/commit/da73e583e1703a420551d8fa8f7c70b56dc88dd5) docs: Migrating `eslint-env` configuration comments ([#​17390](https://github.com/eslint/eslint/issues/17390)) (Francesco Trotta) - [`80dffed`](https://github.com/eslint/eslint/commit/80dffed4c81dcc71fb72bc187aff2f87d141a6ed) docs: fix Ignoring Files section in config migration guide ([#​17392](https://github.com/eslint/eslint/issues/17392)) (Milos Djermanovic) - [`8a9abb7`](https://github.com/eslint/eslint/commit/8a9abb7cf424bd49d45c09345dc45ae95f29cc9d) docs: Update README (GitHub Actions Bot) - [`7e9be4b`](https://github.com/eslint/eslint/commit/7e9be4bd7331d0e8e8e0af0b075a2f6d28d1bea3) docs: Update README (GitHub Actions Bot) - [`0b0bbe0`](https://github.com/eslint/eslint/commit/0b0bbe07d4fb0870f3916e975b8ec6978f838077) docs: Update README (GitHub Actions Bot) #### Chores - [`d1eb7e4`](https://github.com/eslint/eslint/commit/d1eb7e46e954c64af8d7d13d087b3a18f43e6d72) chore: Update ecosystem dependencies ([#​17427](https://github.com/eslint/eslint/issues/17427)) (Nicholas C. Zakas) - [`fab9e97`](https://github.com/eslint/eslint/commit/fab9e97ef9dff40e98a5b3b97bdd3b0ff5439d46) chore: package.json update for eslint-config-eslint release (ESLint Jenkins) - [`6246711`](https://github.com/eslint/eslint/commit/6246711e0650d03afe044c36acde048ed2d39ee3) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`0aa0bc3`](https://github.com/eslint/eslint/commit/0aa0bc365a5425440c8e86c96104d0053a51b602) chore: Add PRs to triage project ([#​17421](https://github.com/eslint/eslint/issues/17421)) (Nicholas C. Zakas) ### [`v8.45.0`](https://github.com/eslint/eslint/releases/tag/v8.45.0) [Compare Source](https://github.com/eslint/eslint/compare/v8.44.0...v8.45.0) ##### Features - [`cdd063c`](https://github.com/eslint/eslint/commit/cdd063c388bbfe1781d7a864a832f03a2c1cc277) feat: Expose LegacyESLint in unsupported API ([#​17341](https://github.com/eslint/eslint/issues/17341)) (Nicholas C. Zakas) - [`d34abe5`](https://github.com/eslint/eslint/commit/d34abe59eb23932dcbc79757d7932d08ee8b20e5) feat: fix indent rule for else-if ([#​17318](https://github.com/eslint/eslint/issues/17318)) (Milos Djermanovic) ##### Bug Fixes - [`b79b6fb`](https://github.com/eslint/eslint/commit/b79b6fb64473969b426d086b484d2e29594a5e9a) fix: Fix suggestion message in `no-useless-escape` ([#​17339](https://github.com/eslint/eslint/issues/17339)) (Francesco Trotta) - [`c667055`](https://github.com/eslint/eslint/commit/c667055fb9da8ebac3a99f6e5a8b5565cc86af8e) fix: provide unique `fix` and `fix.range` objects in lint messages ([#​17332](https://github.com/eslint/eslint/issues/17332)) (Milos Djermanovic) ##### Documentation - [`89f3225`](https://github.com/eslint/eslint/commit/89f3225108c66425e4132f76db6c1ab13aac98d7) docs: add playground links to correct and incorrect code blocks ([#​17306](https://github.com/eslint/eslint/issues/17306)) (Josh Goldberg ✨) - [`f8892b5`](https://github.com/eslint/eslint/commit/f8892b52920b8967f9e7bec23c75b74e03977d6b) docs: Expand rule option schema docs ([#​17198](https://github.com/eslint/eslint/issues/17198)) (Matt Wilkinson) - [`8bcbf11`](https://github.com/eslint/eslint/commit/8bcbf11b6050418262ffa8e0ca37f365ae92e7ce) docs: Config Migration Guide ([#​17230](https://github.com/eslint/eslint/issues/17230)) (Ben Perlmutter) - [`bb30908`](https://github.com/eslint/eslint/commit/bb3090897166dbfd2931a43a70e2a5c1f3fa0a07) docs: Update README (GitHub Actions Bot) - [`84d243b`](https://github.com/eslint/eslint/commit/84d243b245b01b667f0752b592e8bda02a9aa2b1) docs: Update README (GitHub Actions Bot) - [`b762632`](https://github.com/eslint/eslint/commit/b762632298f20c4f81e7d01ab850c3f5e3874637) docs: Update README (GitHub Actions Bot) - [`138c096`](https://github.com/eslint/eslint/commit/138c096bc9468b553dbafc0e573c6522a17a7922) docs: add more prefer-destructuring examples with array destructuring ([#​17330](https://github.com/eslint/eslint/issues/17330)) (Milos Djermanovic) - [`1fc50a8`](https://github.com/eslint/eslint/commit/1fc50a89753346f4f4c786ffd20ac4cf185bb036) docs: `max-len` rule `code` and `tabWidth` as positional arguments ([#​17331](https://github.com/eslint/eslint/issues/17331)) (Jesús Leganés-Combarro) ##### Chores - [`68f63d7`](https://github.com/eslint/eslint/commit/68f63d76ce785fab4f42b76f1599026eea379bf7) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`5ca9b4d`](https://github.com/eslint/eslint/commit/5ca9b4d29f747e9cf5c9055e85c93b3b605d57fc) chore: update eslint-config-eslint exports ([#​17336](https://github.com/eslint/eslint/issues/17336)) (Milos Djermanovic) - [`7bf2e86`](https://github.com/eslint/eslint/commit/7bf2e86022c9e95db4ca1472fddfa2ea4edd1870) chore: remove unused dependencies ([#​17352](https://github.com/eslint/eslint/issues/17352)) (Percy Ma) - [`c6f8cd0`](https://github.com/eslint/eslint/commit/c6f8cd0d62e4a3c314c6860ff367490bbd05325a) chore: Remove `defaultIgnores` from FlatESLint private members ([#​17349](https://github.com/eslint/eslint/issues/17349)) (Francesco Trotta) - [`0052374`](https://github.com/eslint/eslint/commit/0052374035672efe9129343fc00ee51a4c288ff3) chore: move jsdoc settings to eslint-config-eslint ([#​17338](https://github.com/eslint/eslint/issues/17338)) (唯然) ### [`v8.44.0`](https://github.com/eslint/eslint/releases/tag/v8.44.0) [Compare Source](https://github.com/eslint/eslint/compare/v8.43.0...v8.44.0) #### Features - [`1766771`](https://github.com/eslint/eslint/commit/176677180a4a1209fc192771521c9192e1f67578) feat: add `es2023` and `es2024` environments ([#​17328](https://github.com/eslint/eslint/issues/17328)) (Milos Djermanovic) - [`4c50400`](https://github.com/eslint/eslint/commit/4c5040022639ae804c15b366afc6e64982bd8ae3) feat: add `ecmaVersion: 2024`, regexp `v` flag parsing ([#​17324](https://github.com/eslint/eslint/issues/17324)) (Milos Djermanovic) - [`4d411e4`](https://github.com/eslint/eslint/commit/4d411e4c7063274d6d346f1b7ee46f7575d0bbd2) feat: add ternaryOperandBinaryExpressions option to no-extra-parens rule ([#​17270](https://github.com/eslint/eslint/issues/17270)) (Percy Ma) - [`c8b1f4d`](https://github.com/eslint/eslint/commit/c8b1f4d61a256727755d561bf53f889b6cd712e0) feat: Move `parserServices` to `SourceCode` ([#​17311](https://github.com/eslint/eslint/issues/17311)) (Milos Djermanovic) - [`ef6e24e`](https://github.com/eslint/eslint/commit/ef6e24e42670f321d996948623846d9caaedac99) feat: treat unknown nodes as having the lowest precedence ([#​17302](https://github.com/eslint/eslint/issues/17302)) (Brad Zacher) - [`1866e1d`](https://github.com/eslint/eslint/commit/1866e1df6175e4ba0ae4a0d88dc3c956bb310035) feat: allow flat config files to export a Promise ([#​17301](https://github.com/eslint/eslint/issues/17301)) (Milos Djermanovic) #### Bug Fixes - [`a36bcb6`](https://github.com/eslint/eslint/commit/a36bcb67f26be42c794797d0cc9948b9cfd4ff71) fix: no-unused-vars false positive with logical assignment operators ([#​17320](https://github.com/eslint/eslint/issues/17320)) (Gweesin Chan) - [`7620b89`](https://github.com/eslint/eslint/commit/7620b891e81c234f30f9dbcceb64a05fd0dde65e) fix: Remove `no-unused-labels` autofix before potential directives ([#​17314](https://github.com/eslint/eslint/issues/17314)) (Francesco Trotta) - [`391ed38`](https://github.com/eslint/eslint/commit/391ed38b09bd1a3abe85db65b8fcda980ab3d6f4) fix: Remove `no-extra-semi` autofix before potential directives ([#​17297](https://github.com/eslint/eslint/issues/17297)) (Francesco Trotta) #### Documentation - [`526e911`](https://github.com/eslint/eslint/commit/526e91106e6fe101578e9478a9d7f4844d4f72ac) docs: resubmit pr 17115 doc changes ([#​17291](https://github.com/eslint/eslint/issues/17291)) (唯然) - [`e1314bf`](https://github.com/eslint/eslint/commit/e1314bf85a52bb0d05b1c9ca3b4c1732bae22172) docs: Integration section and tutorial ([#​17132](https://github.com/eslint/eslint/issues/17132)) (Ben Perlmutter) - [`19a8c5d`](https://github.com/eslint/eslint/commit/19a8c5d84596a9f7f2aa428c1696ba86daf854e6) docs: Update README (GitHub Actions Bot) #### Chores - [`49e46ed`](https://github.com/eslint/eslint/commit/49e46edf3c8dc71d691a97fc33b63ed80ae0db0c) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).44.0 ([#​17329](https://github.com/eslint/eslint/issues/17329)) (Milos Djermanovic) - [`a1cb642`](https://github.com/eslint/eslint/commit/a1cb6421f9d185901cd99e5f696e912226ef6632) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`840a264`](https://github.com/eslint/eslint/commit/840a26462bbf6c27c52c01b85ee2018062157951) test: More test cases for no-case-declarations ([#​17315](https://github.com/eslint/eslint/issues/17315)) (Elian Cordoba) - [`e6e74f9`](https://github.com/eslint/eslint/commit/e6e74f9eef0448129dd4775628aba554a2d8c8c9) chore: package.json update for eslint-config-eslint release (ESLint Jenkins) - [`eb3d794`](https://github.com/eslint/eslint/commit/eb3d7946e1e9f70254008744dba2397aaa730114) chore: upgrade semver@7.5.3 ([#​17323](https://github.com/eslint/eslint/issues/17323)) (Ziyad El Abid) - [`cf88439`](https://github.com/eslint/eslint/commit/cf884390ad8071d88eae05df9321100f1770363d) chore: upgrade optionator@0.9.3 ([#​17319](https://github.com/eslint/eslint/issues/17319)) (Milos Djermanovic) - [`9718a97`](https://github.com/eslint/eslint/commit/9718a9781d69d2c40b68c631aed97700b32c0082) refactor: remove unnecessary code in `flat-eslint.js` ([#​17308](https://github.com/eslint/eslint/issues/17308)) (Milos Djermanovic) - [`f82e56e`](https://github.com/eslint/eslint/commit/f82e56e9acfb9562ece76441472d5657d7d5e296) perf: various performance improvements ([#​17135](https://github.com/eslint/eslint/issues/17135)) (moonlightaria) - [`da81e66`](https://github.com/eslint/eslint/commit/da81e66e22b4f3d3fe292cf70c388753304deaad) chore: update eslint-plugin-jsdoc to 46.2.5 ([#​17245](https://github.com/eslint/eslint/issues/17245)) (唯然) - [`b991640`](https://github.com/eslint/eslint/commit/b991640176d5dce4750f7cc71c56cd6f284c882f) chore: switch eslint-config-eslint to the flat format ([#​17247](https://github.com/eslint/eslint/issues/17247)) (唯然) </details> <details> <summary>github/eslint-plugin-github (eslint-plugin-github)</summary> ### [`v4.9.2`](https://github.com/github/eslint-plugin-github/releases/tag/v4.9.2) [Compare Source](https://github.com/github/eslint-plugin-github/compare/v4.9.1...v4.9.2) #### What's Changed - Use `getLiteralPropValue` for sr-only class by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#466 **Full Changelog**: github/eslint-plugin-github@v4.9.1...v4.9.2 ### [`v4.9.1`](https://github.com/github/eslint-plugin-github/releases/tag/v4.9.1) [Compare Source](https://github.com/github/eslint-plugin-github/compare/v4.9.0...v4.9.1) #### Bug fixes This release includes bug fixes for a few accessibility rules including: `a11y-aria-role-supports-props`, `a11y-no-title-attribute`, and `jsx-a11y/no-interactive-element-to-noninteractive-role`. #### What's Changed - Ignore calls to a method named innerText by [@​camchenry](https://github.com/camchenry) in [github/eslint-plugin-github#455 - bump `prettier` and `eslint-plugin-prettier` to latest versions by [@​shiftkey](https://github.com/shiftkey) in [github/eslint-plugin-github#457 - chore(deps): bump the all-dependencies group with 5 updates by [@​dependabot](https://github.com/dependabot) in [github/eslint-plugin-github#458 - Set config override for false positive rule by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#460 - Re-introduce accidentally removed testing commands by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#459 - Fix bugs with `getRole` and `getElementType` by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#461 - \[Fix] Only look at semantic elements for `a11y-no-title-attribute` by [@​kendallgassner](https://github.com/kendallgassner) in [github/eslint-plugin-github#464 - Check for presence of attribute in `getRole` rather than the value by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#463 #### New Contributors - [@​camchenry](https://github.com/camchenry) made their first contribution in [github/eslint-plugin-github#455 - [@​shiftkey](https://github.com/shiftkey) made their first contribution in [github/eslint-plugin-github#457 **Full Changelog**: github/eslint-plugin-github@v4.9.0...v4.9.1 ### [`v4.9.0`](https://github.com/github/eslint-plugin-github/releases/tag/v4.9.0) [Compare Source](https://github.com/github/eslint-plugin-github/compare/v4.8.0...v4.9.0) #### What's Changed - create rule: github/a11y-no-visually-hidden-interactive-element by [@​kendallgassner](https://github.com/kendallgassner) in [github/eslint-plugin-github#446 - Add polymorphic component check in `getElementType` by [@​kendallgassner](https://github.com/kendallgassner) in [github/eslint-plugin-github#449 - Adds `svg-has-accessible-name` rule by [@​lindseywild](https://github.com/lindseywild) in [github/eslint-plugin-github#450 - chore(deps): bump semver from 5.7.1 to 5.7.2 by [@​dependabot](https://github.com/dependabot) in [github/eslint-plugin-github#451 - Create rule: a11y-no-title-attribute by [@​kendallgassner](https://github.com/kendallgassner) in [github/eslint-plugin-github#453 - Bump aria-query and update to fix tests by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#448 - Rename `role-supports-aria-props` to `a11y-` by [@​khiga8](https://github.com/khiga8) in [github/eslint-plugin-github#454 #### New Contributors - [@​kendallgassner](https://github.com/kendallgassner) made their first contribution in [github/eslint-plugin-github#446 - [@​lindseywild](https://github.com/lindseywild) made their first contribution in [github/eslint-plugin-github#450 **Full Changelog**: github/eslint-plugin-github@v4.8.0...v4.9.0 </details> <details> <summary>facebook/jest (jest)</summary> ### [`v29.6.2`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#2962) [Compare Source](https://github.com/facebook/jest/compare/v29.6.1...v29.6.2) ##### Fixes - `[jest-circus]` Fix snapshot matchers in concurrent tests when nr of tests exceeds `maxConcurrency` ([#​14335](https://github.com/jestjs/jest/pull/14335)) - `[@jest/core]` When running global setup and teardown, do not try to change the `message` property of the thrown error object when the `message` property is unwritable ([#​14113](https://github.com/jestjs/jest/pull/14113)) - `[jest-snapshot]` Move `@types/prettier` from `dependencies` to `devDependencies` ([#​14328](https://github.com/jestjs/jest/pull/14328)) - `[jest-snapshot]` Throw an explicit error if Prettier v3 is used ([#​14367](https://github.com/jestjs/jest/pull/14367)) - `[jest-reporters]` Add "skipped" and "todo" symbols to Github Actions Reporter ([#​14309](https://github.com/jestjs/jest/pull/14309)) ##### Chore & Maintenance - `[@jest/core]` Use `pluralize` from `jest-util` rather than own internal ([#​14322](https://github.com/jestjs/jest/pull/14322)) ### [`v29.6.1`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#2961) [Compare Source](https://github.com/facebook/jest/compare/v29.6.0...v29.6.1) ##### Fixes - `[jest-circus]` Revert [#​14110](https://github.com/jestjs/jest/pull/14110) as it was a breaking change ([#​14304](https://github.com/jestjs/jest/pull/14304)) ### [`v29.6.0`](https://github.com/facebook/jest/blob/HEAD/CHANGELOG.md#2960) [Compare Source](https://github.com/facebook/jest/compare/v29.5.0...v29.6.0) ##### Features - `[jest-circus, jest-snapshot]` Add support for snapshot matchers in concurrent tests ([#​14139](https://github.com/jestjs/jest/pull/14139)) - `[jest-cli]` Include type definitions to generated config files ([#​14078](https://github.com/facebook/jest/pull/14078)) - `[jest-snapshot]` Support arrays as property matchers ([#​14025](https://github.com/facebook/jest/pull/14025)) - `[jest-core, jest-circus, jest-reporter, jest-runner]` Added support for reporting about start individual test cases using jest-circus ([#​14174](https://github.com/jestjs/jest/pull/14174)) ##### Fixes - `[jest-circus]` Prevent false test failures caused by promise rejections handled asynchronously ([#​14110](https://github.com/jestjs/jest/pull/14110)) - `[jest-config]` Handle frozen config object ([#​14054](https://github.com/facebook/jest/pull/14054)) - `[jest-config]` Allow `coverageDirectory` and `collectCoverageFrom` in project config ([#​14180](https://github.com/jestjs/jest/pull/14180)) - `[jest-core]` Always use workers in watch mode to avoid crashes ([#​14059](https://github.com/facebook/jest/pull/14059)). - `[jest-environment-jsdom, jest-environment-node]` Fix assignment of `customExportConditions` via `testEnvironmentOptions` when custom env subclass defines a default value ([#​13989](https://github.com/facebook/jest/pull/13989)) - `[jest-matcher-utils]` Fix copying value of inherited getters ([#​14007](https://github.com/facebook/jest/pull/14007)) - `[jest-mock]` Tweak typings to allow `jest.replaceProperty()` replace methods ([#​14008](https://github.com/facebook/jest/pull/14008)) - `[jest-mock]` Improve user input validation and error messages of `spyOn` and `replaceProperty` methods ([#​14087](https://github.com/facebook/jest/pull/14087)) - `[jest-runtime]` Bind `jest.isolateModulesAsync` to `this` ([#​14083](https://github.com/facebook/jest/pull/14083)) - `[jest-runtime]` Forward `wrapperLength` to the `Script` constructor as `columnOffset` for accurate debugging ([#​14148](https://github.com/facebook/jest/pull/14148)) - `[jest-runtime]` Guard `_isMockFunction` access with `in` ([#​14188](https://github.com/facebook/jest/pull/14188)) - `[jest-snapshot]` Fix a potential bug when not using prettier and improve performance ([#​14036](https://github.com/facebook/jest/pull/14036)) - `[@jest/transform]` Do not instrument `.json` modules ([#​14048](https://github.com/facebook/jest/pull/14048)) - `[jest-worker]` Restart a shut down worker before sending it a task ([#​14015](https://github.com/facebook/jest/pull/14015)) ##### Chore & Maintenance - `[*]` Update `semver` dependency to get vulnerability fix ([#​14262](https://github.com/jestjs/jest/pull/14262)) - `[docs]` Updated documentation for the `--runTestsByPath` CLI command ([#​14004](https://github.com/facebook/jest/pull/14004)) - `[docs]` Updated documentation regarding the synchronous fallback when asynchronous code transforms are unavailable ([#​14056](https://github.com/facebook/jest/pull/14056)) - `[docs]` Update jest statistics of use and downloads in website Index. </details> <details> <summary>sigstore/sigstore-js (sigstore)</summary> ### [`v1.8.0`](https://github.com/sigstore/sigstore-js/releases/tag/sigstore%401.8.0) [Compare Source](https://github.com/sigstore/sigstore-js/compare/sigstore@1.7.0...sigstore@1.8.0) ##### Minor Changes - [`f1b8bad`](https://github.com/sigstore/sigstore-js/commit/f1b8bad): Support for verifying v0.2 Sigstore bundles that contain inclusion proofs from Rekor - [`d9b1540`](https://github.com/sigstore/sigstore-js/commit/d9b1540): Integrate [@​sigstore/bundle](https://github.com/sigstore/bundle) package ##### Patch Changes - [`e0c16ec`](https://github.com/sigstore/sigstore-js/commit/e0c16ec): Bump [@​sigstore/protobuf-specs](https://github.com/sigstore/protobuf-specs) from 0.1.0 to 0.2.0 - [`6abe9ec`](https://github.com/sigstore/sigstore-js/commit/6abe9ec): Fix bug when setting `tlogThreshold`/`ctLogThreshold` verification options to 0 - Updated dependencies \[[`e0c16ec`](https://github.com/sigstore/sigstore-js/commit/e0c16ec)] - Updated dependencies \[[`f1b8bad`](https://github.com/sigstore/sigstore-js/commit/f1b8bad)] - Updated dependencies \[[`a388e25`](https://github.com/sigstore/sigstore-js/commit/a388e25)] - Updated dependencies \[[`e0c16ec`](https://github.com/sigstore/sigstore-js/commit/e0c16ec)] - Updated dependencies \[[`2a5f500`](https://github.com/sigstore/sigstore-js/commit/2a5f500)] - Updated dependencies \[[`2a869ba`](https://github.com/sigstore/sigstore-js/commit/2a869ba)] - [@​sigstore/bundle](https://github.com/sigstore/bundle)[@​1](https://github.com/1).0.0 - [@​sigstore/tuf](https://github.com/sigstore/tuf)[@​1](https://github.com/1).0.3 ### [`v1.7.0`](https://github.com/sigstore/sigstore-js/releases/tag/sigstore%401.7.0) [Compare Source](https://github.com/sigstore/sigstore-js/compare/sigstore@1.6.0...sigstore@1.7.0) ##### Minor Changes - [`f374dd3`](https://github.com/sigstore/sigstore-js/commit/f374dd3): Include transparency log inclusion proof in Sigstore bundle - [`fbfb315`](https://github.com/sigstore/sigstore-js/commit/fbfb315): Exports new `createVerifier` function ##### Patch Changes - [`bd1e1e1`](https://github.com/sigstore/sigstore-js/commit/bd1e1e1): Internal refactoring of Typescript types - Updated dependencies \[[`b97be71`](https://github.com/sigstore/sigstore-js/commit/b97be71)] - [@​sigstore/tuf](https://github.com/sigstore/tuf)[@​1](https://github.com/1).0.1 </details> <details> <summary>kulshekhar/ts-jest (ts-jest)</summary> ### [`v29.1.1`](https://github.com/kulshekhar/ts-jest/blob/HEAD/CHANGELOG.md#2911-2023-06-23) [Compare Source](https://github.com/kulshekhar/ts-jest/compare/v29.1.0...v29.1.1) ##### Security Fixes - bump `semver` to `7.5.3` </details> <details> <summary>Microsoft/TypeScript (typescript)</summary> ### [`v5.1.6`](https://github.com/microsoft/TypeScript/releases/tag/v5.1.6): TypeScript 5.1.6 [Compare Source](https://github.com/Microsoft/TypeScript/compare/v5.1.5...v5.1.6) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/). For the complete list of fixed issues, check out the - [fixed issues query for Typescript v5.1.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.2%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.3%22+is%3Aclosed+). - (5.1.4 [intentionally skipped](https://github.com/microsoft/TypeScript/issues/53031#issuecomment-1610038922)) - [fixed issues query for Typescript v5.1.5 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.5%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.6 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.6%22+is%3Aclosed+). Downloads are available on [npm](https://www.npmjs.com/package/typescript) ### [`v5.1.5`](https://github.com/microsoft/TypeScript/releases/tag/v5.1.5): TypeScript 5.1.5 [Compare Source](https://github.com/Microsoft/TypeScript/compare/v5.1.3...v5.1.5) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/). For the complete list of fixed issues, check out the - [fixed issues query for Typescript v5.1.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.2%22+is%3Aclosed+). - [fixed issues query for Typescript v5.1.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.3%22+is%3Aclosed+). - (5.1.4 [intentionally skipped](https://github.com/microsoft/TypeScript/issues/53031#issuecomment-1610038922)) - [fixed issues query for Typescript v5.1.5 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.5%22+is%3Aclosed+). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) - [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/slsa-framework/slsa-github-generator). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yNy4xIiwidXBkYXRlZEluVmVyIjoiMzYuMjcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> --------- Signed-off-by: Mend Renovate <bot@renovateapp.com> Signed-off-by: Ian Lewis <ianlewis@google.com> Co-authored-by: Ian Lewis <ianlewis@google.com>
What
relates to: https://github.com/github/accessibility/issues/3739
This was an interesting lint rule to write because we not only utilize the
className='sr-only'
to visually hide react content but we use the Primer componentVisuallyHidden
.I wrote an eslint rule for both scenarios. This eslint rule determines if a
JSX.Elements
is visually hidden (i.e. has thesr-only
className or of typeVisuallyHidden
). If it the element is visually hidden then it checks its self and children to see if it contains and interactive elements.Coverage
What is an interactive element?
I hard coded a list of interactive elements to check against:
a
button
summary
select
option
textarea
I thought it was better to have a
dis-allow
list rather then an allow list (e.g.span
,div
etc.)What is considered invalid?
<VisuallyHidden><div><button>Submit</button></div></VisuallyHidden>
<VisuallyHidden as='button'>Submit</VisuallyHidden>
<button className='other sr-only'>Submit</button>