Skip to content
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

feat: Implement SourceCode#applyInlineConfig() #17351

Merged
merged 29 commits into from Sep 22, 2023
Merged

Conversation

nzakas
Copy link
Member

@nzakas nzakas commented Jul 7, 2023

Prerequisites checklist

What is the purpose of this pull request? (put an "X" next to an item)

[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[x] Add something to the core
[ ] Other, please explain:

What changes did you make? (Give an overview)

The original intent of this commit was to implement SourceCode#getInlineConfig() as described in the Language Plugins RFC. However, once I started to implement this feature I realized that the design in the RFC wouldn't work and I had to make some changes. The specific problem is that I was thinking we could extract the inline config from the source code and then the core could use that to lint the source code. The thing I didn't realize is that a lot of the inline config actually changes the state of SourceCode by adding or modifying globals, which the core won't know about in a language-neutral future.

So, these changes amount to:

  1. Added SoureCode#getInlineConfigComments() method - this just retrieves all the config comments so when inline config is disabled and warnings are enabled, the core can warn about all the config comments. This is only called when both inline config comments are disabled and warnings for inline config comments are enabled.
  2. Added SourceCode#applyLanguageOptions() method - ESLint core calls this to pass in the calculated language options. This allows SourceCode to update itself as needed.
  3. Added SourceCode#applyInlineConfig() method - ESLint core calls this so SourceCode will further update its state based on the inline config comments. In this case, it involves tracking down the global and exported definitions.
  4. Added SourceCode#finalize() method - ESLint core calls this so SourceCode knows the core will not be passing in any further information before linting begins.
  5. Because those last three methods change the state of SourceCode, I'm not allowing them to be called within rules. Instead of passing SourceCode directly, the core now creates a proxy that disallows calling any of those methods. The proxy is passed through to rules rather than SourceCode itself.

Refs #16999

Is there anything you'd like reviewers to focus on?

Does this approach make sense?

Any concerns about the proxy approach?

Given that freezing SourceCode was intended to protect against modification in a rule, does using a proxy mean we don't need to freeze SourceCode anymore?

@nzakas nzakas requested a review from a team as a code owner July 7, 2023 17:05
@eslint-github-bot
Copy link

Hi @nzakas!, thanks for the Pull Request

The first commit message isn't properly formatted. We ask that you update the message to match this format, as we use it to generate changelogs and automate releases.

  • The commit message tag wasn't recognized. Did you mean "docs", "fix", or "feat"?
  • There should be a space following the initial tag and colon, for example 'feat: Message'.
  • The first letter of the tag should be in lowercase

To Fix: You can fix this problem by running git commit --amend, editing your commit message, and then running git push -f to update this pull request.

Read more about contributing to ESLint here

@netlify
Copy link

netlify bot commented Jul 7, 2023

Deploy Preview for docs-eslint canceled.

Name Link
🔨 Latest commit 5a8363f
🔍 Latest deploy log https://app.netlify.com/sites/docs-eslint/deploys/650db20743c54d0008e8db81

@eslint-github-bot
Copy link

Hi @nzakas!, thanks for the Pull Request

The first commit message isn't properly formatted. We ask that you update the message to match this format, as we use it to generate changelogs and automate releases.

  • The commit message tag wasn't recognized. Did you mean "docs", "fix", or "feat"?
  • There should be a space following the initial tag and colon, for example 'feat: Message'.
  • The first letter of the tag should be in lowercase

To Fix: You can fix this problem by running git commit --amend, editing your commit message, and then running git push -f to update this pull request.

Read more about contributing to ESLint here

@eslint-github-bot
Copy link

Hi @nzakas!, thanks for the Pull Request

The pull request title isn't properly formatted. We ask that you update the message to match this format, as we use it to generate changelogs and automate releases.

  • The commit message tag wasn't recognized. Did you mean "docs", "fix", or "feat"?
  • There should be a space following the initial tag and colon, for example 'feat: Message'.
  • The first letter of the tag should be in lowercase

To Fix: You can fix this problem by clicking 'Edit' next to the pull request title at the top of this page.

Read more about contributing to ESLint here

@mdjermanovic mdjermanovic changed the title Implement SourceCode#applyInlineConfig() feat: Implement SourceCode#applyInlineConfig() Jul 7, 2023
@eslint-github-bot eslint-github-bot bot added the feature This change adds a new feature to ESLint label Jul 7, 2023
lib/linter/linter.js Show resolved Hide resolved
lib/source-code/source-code.js Outdated Show resolved Hide resolved
@mdjermanovic
Copy link
Member

Overall, I don't understand the intended usage of the new SourceCode methods in regard to eslint and eslint-disable-* comments.

getInlineConfigComments returns eslint and eslint-disable-* comments as well.

applyLanguageOptions processes eslint comments.

However, _verifyWithFlatConfigArrayAndWithoutProcessors still uses linter's own function getDirectiveComments for extracting eslint and eslint-disable-* comments and processing eslint comments. Shouldn't it switch completely to the new SourceCode methods?

@nzakas
Copy link
Member Author

nzakas commented Jul 14, 2023

Overall, I don't understand the intended usage of the new SourceCode methods in regard to eslint and eslint-disable-* comments.

getInlineConfigComments returns eslint and eslint-disable-* comments as well.

Yes. To restate from my original comment: retrieves all the config comments so when inline config is disabled and warnings are enabled, the core can warn about all the config comments. This is only called when both inline config comments are disabled and warnings for inline config comments are enabled. So this method is retrieving the comments but isn't trying to evaluate them.

applyLanguageOptions processes eslint comments.

No. applyLanguageOptions applies data passed into the method. It does not process eslint comments.

applyInlineConfig processes eslint comments only and not disable directives. It's only adding globals, exports, and extracting rule configs so the core can apply those. Processing disable directives needs to be done in the core (to mark areas where rules should not be applied), and I'm saving that for a different step.

However, _verifyWithFlatConfigArrayAndWithoutProcessors still uses linter's own function getDirectiveComments for extracting eslint and eslint-disable-* comments and processing eslint comments. Shouldn't it switch completely to the new SourceCode methods?

Good point. getDirectiveComments can use getInlineConfigComments now. I can also split this into two functions, one for the eslintrc code path and one for the flat config code path to avoid duplicate functionality. I can update that. To the larger point, processing of disable directives need to be handled separately. As we discussed on the RFC, I'm not sure if the current way we structure the info about disable directives makes sense for all languages, so I need to look at that separately next.

@fasttime
Copy link
Member

Just a note that I am still able to call disallowed SourceCode methods inside a rule like this:

sourceCode.__proto__.applyInlineConfig.call(sourceCode);

Or using another non-proxy instance:

const { SourceCode } = require("eslint");
const dummySourceCode = new SourceCode(sourceCode.text, sourceCode.ast);

dummySourceCode.applyInlineConfig.call(sourceCode);

@nzakas
Copy link
Member Author

nzakas commented Jul 17, 2023

@fasttime of course, we can't completely block people from calling those methods if they really want to. We're just trying to let them know that if they do, we can't guarantee what will happen.

@nzakas
Copy link
Member Author

nzakas commented Jul 18, 2023

I've been digging into fixing the bugs that @mdjermanovic pointed out, and I've discovered more complexity.

For inline config, we are doing one-off rule validation just on that config in eslintrc mode; in flat config mode, we actually don't have a way to do one-off rule validation, so I need to do some thinking around what that might look like.

@nzakas
Copy link
Member Author

nzakas commented Jul 20, 2023

Notes on additional changes:

  1. SourceCode#getInlineConfigComments() is now called SourceCode#getInlineConfigNodes() to make it more generic. Even though we are using comments right now, I'm not sure it's idiomatic in other languages where people might use decorators/attributes for such purposes. By specifying this as "nodes" it allows us to deal with any type of nodes in the future including comments.
  2. SourceCode#applyInlineConfig() now returns an array called configs where each item is an object with a config property containing an actual config and node property that is a reference to the node (comment) that defines that config. The node property is used to output the location of the comment when there is a problem with the config.
    Note: I use config with just a rules property because I'm unsure if in the future we'd like to allow configuring more than just rules inline. This allows us the option of adding more properties to the config in the future. The other option is to replace config with rules directly and then add on additional properties to each object in configs if we need to add more information...I didn't like that approach because it will make a config-like object that isn't really a config, but definitely open to feedback.

@nzakas
Copy link
Member Author

nzakas commented Jul 20, 2023

Also note: Node.js 19 appears to change the format of the JSON parse error message that we were relying on in a test, so I had to update that to use a regex so it will pass in all Node.js versions.

@github-actions
Copy link

Hi everyone, it looks like we lost track of this pull request. Please review and see what the next steps are. This pull request will auto-close in 7 days without an update.

@mdjermanovic
Copy link
Member

Any concerns about the proxy approach?

It seems to significantly impact performance.

time npx eslint . without proxy:

real    0m41.127s
user    0m0.015s
sys     0m0.151s

time npx eslint . with proxy:

real    0m51.178s
user    0m0.015s
sys     0m0.151s

npm run test:performance without proxy:

Loading:
  Load performance Run #1:  230.6313ms
  Load performance Run #2:  280.6211ms
  Load performance Run #3:  299.4569ms
  Load performance Run #4:  216.506ms
  Load performance Run #5:  217.934ms

  Load Performance median:  230.6313ms


Single File:
  CPU Speed is 2695 with multiplier 13000000
  Performance Run #1:  4483.5138ms
  Performance Run #2:  4381.0608ms
  Performance Run #3:  4368.7255000000005ms
  Performance Run #4:  4359.9843ms
  Performance Run #5:  4327.2511ms

  Performance budget ok:  4368.7255000000005ms (limit: 4823.747680890538ms)


Multi Files (450 files):
  CPU Speed is 2695 with multiplier 39000000
  Performance Run #1:  12333.5897ms
  Performance Run #2:  12235.3641ms
  Performance Run #3:  12212.1394ms
  Performance Run #4:  12220.1246ms
  Performance Run #5:  12229.7475ms

  Performance budget ok:  12229.7475ms (limit: 14471.243042671615ms)

npm run test:performance with proxy:

Loading:
  Load performance Run #1:  233.8499ms
  Load performance Run #2:  294.5263ms
  Load performance Run #3:  314.7176ms
  Load performance Run #4:  271.8502ms
  Load performance Run #5:  228.772ms

  Load Performance median:  271.8502ms


Single File:
  CPU Speed is 2695 with multiplier 13000000
  Performance Run #1:  4663.8604ms
  Performance Run #2:  4561.8331ms
  Performance Run #3:  4591.1485ms
  Performance Run #4:  4620.0033ms
  Performance Run #5:  4560.5226999999995ms

  Performance budget ok:  4591.1485ms (limit: 4823.747680890538ms)


Multi Files (450 files):
  CPU Speed is 2695 with multiplier 39000000
  Performance Run #1:  13518.9048ms
  Performance Run #2:  13341.3334ms
  Performance Run #3:  13395.097ms
  Performance Run #4:  13337.3276ms
  Performance Run #5:  13336.2579ms

  Performance budget ok:  13341.3334ms (limit: 14471.243042671615ms)

Perhaps we could instead prevent calling the new methods by throwing an error from the method if it's called after the source code object is finalized?

@nzakas
Copy link
Member Author

nzakas commented Aug 14, 2023

Perhaps we could instead prevent calling the new methods by throwing an error from the method if it's called after the source code object is finalized?

I can try switching to Object.create() and nulling those methods out to see if that improves the situation. We can't implement this inside of SourceCode because then every language plugin would have to duplicate that functionality.

@nzakas
Copy link
Member Author

nzakas commented Aug 14, 2023

Okay, Object.create() approach is going to confuse this inside of SourceCode, so that's not going to work.

The reason I chose a proxy is because it's the only way I could think of to ensure that context.sourceCode will look the same even with having restrictions. If we create a wrapper object around SourceCode, that will exhibit a different prototype that could potentially break existing rules.

As I mentioned, we can't really implement this blocking inside of SourceCode because every language plugin would have to duplicate that for safety, which is a poor developer experience.

We could just pass the SourceCode object in without any protection, but the potential to call state-changing methods could mean hard-to-track-down bugs.

So I guess the decision here is if the safety of the proxy is worth the performance hit or not?

@mdjermanovic
Copy link
Member

So I guess the decision here is if the safety of the proxy is worth the performance hit or not?

Since the performance hit seems large (on my computer, with proxies it takes ~25% more time to lint the eslint codebase; on CI, Verify Files > Lint Files step takes 1m 17s on this branch, while it's only 41s on the main branch, although this may not be just because of the proxy) I think the safety of the proxy is not worth the performance hit.

@nzakas
Copy link
Member Author

nzakas commented Aug 21, 2023

Okay, I can remove the proxy. I'm wondering if maybe we should at least change those methods to use symbols instead of names? Maybe that will be a hint to rule developers that they shouldn't be calling these methods directly?

I suppose I can also check inside of SourceCode if it has been finalized, just a shame that every other language will have to do the same.

Do you have any other ideas?

@mdjermanovic
Copy link
Member

Okay, I can remove the proxy. I'm wondering if maybe we should at least change those methods to use symbols instead of names? Maybe that will be a hint to rule developers that they shouldn't be calling these methods directly?

Symbols sound good to me. I think that would be a good hint to rule developers that these methods should not be used.

@nzakas
Copy link
Member Author

nzakas commented Aug 22, 2023

Another option (which could be used with or without symbols) is to flag these methods in RuleTester. What do you think about that?

@mdjermanovic
Copy link
Member

Another option (which could be used with or without symbols) is to flag these methods in RuleTester. What do you think about that?

Sounds good to me.

@nzakas
Copy link
Member Author

nzakas commented Aug 25, 2023

I'm going to try to leave the methods as strings and see how far I can get with RuleTester. I realize this might be a bit tricky because, unlike other methods we check in RuleTester, these ones will actually be called by Linter first. If I can't get that to work then I'll go with symbols.

@nzakas
Copy link
Member Author

nzakas commented Aug 30, 2023

I was able to get this working in RuleTester, so I left the methods as strings (easier to read overall). Let me know what you think.

@mdjermanovic mdjermanovic added the core Relates to ESLint's core APIs and features label Sep 5, 2023
lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
@nzakas
Copy link
Member Author

nzakas commented Sep 15, 2023

Updated and added missing tests to verify the changes.

tests/lib/linter/linter.js Outdated Show resolved Hide resolved
tests/lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
@nzakas
Copy link
Member Author

nzakas commented Sep 19, 2023

Looks like Node.js 19 and 20 have changed their JSON parsing error messages, so need to update tests accordingly.

lib/source-code/source-code.js Outdated Show resolved Hide resolved
// now that we've gathered all of the directive-defined globals, let's add them

return {
ok: problems.length === 0,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need the ok property here? Linter doesn't use it. Since this method is part of the required interface for custom SourceCode implementations, it might be confusing for them when and how to set this property. I think it would be better to remove this property.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I think we should keep ok, as I believe we need a way to say "stop". For this, we should probably just always return true, but I could envision other languages wanting a different behavior.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upon further review, it looks like ok was intended just to determine if there were any problems to display warnings about, so I agree we don't actually need it.

varsCache.set("inlineGlobals", inlineGlobals);
varsCache.set("exportedVariables", exportedVariables);

// now that we've gathered all of the directive-defined globals, let's add them
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment doesn't seem to apply here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

Comment on lines 269 to 271
// don't allow modification of this object
Object.freeze(this);
Object.freeze(this.lines);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving this to finalize() will now unfreeze these objects in the eslintrc mode, since we're not calling finalize() in the eslintrc mode.

Maybe we could keep this freezing here, as it doesn't seem we're actually modifying these objects later, neither in eslintrc nor in flat config mode. We only modify them in the new source code tests by adding scopeManager to the instance, but those tests might be more representative anyway if we pass scopeManager to the constructor like Linter does.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think ultimately we want freezing to happen in finalize(), but I agree that while we have eslintrc in the mix we should keep things consistent.

lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
tests/lib/linter/linter.js Outdated Show resolved Hide resolved
Copy link
Member

@mdjermanovic mdjermanovic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@mdjermanovic mdjermanovic merged commit 83914ad into main Sep 22, 2023
21 checks passed
@mdjermanovic mdjermanovic deleted the get-inline-config branch September 22, 2023 16:33
ChrisW-B pushed a commit to ChrisW-B/PersonalApi that referenced this pull request Sep 24, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`8.49.0` -> `8.50.0`](https://renovatebot.com/diffs/npm/eslint/8.49.0/8.50.0) |

---

### Release Notes

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v8.50.0`](https://github.com/eslint/eslint/releases/tag/v8.50.0)

[Compare Source](eslint/eslint@v8.49.0...v8.50.0)

#### Features

-   [`27d5a9e`](eslint/eslint@27d5a9e) feat: add suggestions to array-callback-return ([#&#8203;17590](eslint/eslint#17590)) (Tanuj Kanti)
-   [`f9082ff`](eslint/eslint@f9082ff) feat: flat-rule-tester make sure default config always matches ([#&#8203;17585](eslint/eslint#17585)) (fnx)
-   [`83914ad`](eslint/eslint@83914ad) feat: Implement SourceCode#applyInlineConfig() ([#&#8203;17351](eslint/eslint#17351)) (Nicholas C. Zakas)
-   [`22a5582`](eslint/eslint@22a5582) feat: add rule `no-object-constructor`, deprecate `no-new-object` ([#&#8203;17576](eslint/eslint#17576)) (Francesco Trotta)
-   [`85a3d9e`](eslint/eslint@85a3d9e) feat: allowVoid option in array-callback-return ([#&#8203;17564](eslint/eslint#17564)) (Tanuj Kanti)

#### Bug Fixes

-   [`cc4d26b`](eslint/eslint@cc4d26b) fix: Ensure deprecated context.parserServices warns ([#&#8203;17593](eslint/eslint#17593)) (Nicholas C. Zakas)
-   [`1ea4cfb`](eslint/eslint@1ea4cfb) fix: Ensure all RuleTester tests all deprecated context methods ([#&#8203;17587](eslint/eslint#17587)) (Nicholas C. Zakas)
-   [`aa1b657`](eslint/eslint@aa1b657) fix: wrong suggestion and message in `no-misleading-character-class` ([#&#8203;17571](eslint/eslint#17571)) (Yosuke Ota)

#### Documentation

-   [`1800537`](eslint/eslint@1800537) docs: Fix and standardize JSX code examples ([#&#8203;17591](eslint/eslint#17591)) (Francesco Trotta)
-   [`48a44a7`](eslint/eslint@48a44a7) docs: Add correct/incorrect tags to `prefer-arrow-callback` ([#&#8203;17589](eslint/eslint#17589)) (Francesco Trotta)
-   [`20893d4`](eslint/eslint@20893d4) docs: fix incorrect tag's place ([#&#8203;17575](eslint/eslint#17575)) (Tanuj Kanti)
-   [`bd7a71f`](eslint/eslint@bd7a71f) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`f8a8a2d`](eslint/eslint@f8a8a2d) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).50.0 ([#&#8203;17599](eslint/eslint#17599)) (Milos Djermanovic)
-   [`38ada6d`](eslint/eslint@38ada6d) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 3pm on Sunday" in timezone America/New_York, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi43Ny4wIiwidXBkYXRlZEluVmVyIjoiMzYuNzcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://git.chriswb.dev/chrisw-b/PersonalApi/pulls/14
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
Vylpes pushed a commit to Vylpes/Droplet that referenced this pull request Feb 5, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`8.40.0` -> `8.56.0`](https://renovatebot.com/diffs/npm/eslint/8.40.0/8.56.0) |
| [@types/eslint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped)) | devDependencies | minor | [`8.37.0` -> `8.56.2`](https://renovatebot.com/diffs/npm/@types%2feslint/8.37.0/8.56.2) |

---

### Release Notes

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v8.56.0`](https://github.com/eslint/eslint/releases/tag/v8.56.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.55.0...v8.56.0)

#### Features

-   [`0dd9704`](https://github.com/eslint/eslint/commit/0dd9704c4751e1cd02039f7d6485fee09bbccbf6) feat: Support custom severity when reporting unused disable directives ([#&#8203;17212](https://github.com/eslint/eslint/issues/17212)) (Bryan Mishkin)
-   [`31a7e3f`](https://github.com/eslint/eslint/commit/31a7e3fde491e36496b54e8905c766b31162d776) feat: fix no-restricted-properties false negatives with unknown objects ([#&#8203;17818](https://github.com/eslint/eslint/issues/17818)) (Arka Pratim Chaudhuri)

#### Bug Fixes

-   [`7d5e5f6`](https://github.com/eslint/eslint/commit/7d5e5f68849ae80caec0fc96ecceebccd348deec) fix: `TypeError: fs.exists is not a function` on read-only file system ([#&#8203;17846](https://github.com/eslint/eslint/issues/17846)) (Francesco Trotta)
-   [`74739c8`](https://github.com/eslint/eslint/commit/74739c849bbb6547b0e555ed8bb2ba1cbe0fdce4) fix: suggestion with invalid syntax in no-promise-executor-return rule ([#&#8203;17812](https://github.com/eslint/eslint/issues/17812)) (Bryan Mishkin)

#### Documentation

-   [`9007719`](https://github.com/eslint/eslint/commit/90077199fe519953f9af8664bf947db4e4958514) docs: update link in ways-to-extend.md ([#&#8203;17839](https://github.com/eslint/eslint/issues/17839)) (Amel SELMANE)
-   [`3a22236`](https://github.com/eslint/eslint/commit/3a22236f8d10af8a5bcafe56092651d3d681c99d) docs: Update README (GitHub Actions Bot)
-   [`54c3ca6`](https://github.com/eslint/eslint/commit/54c3ca6f2dcd2a7afd53f42fc32055a25587259e) docs: fix migration-guide example ([#&#8203;17829](https://github.com/eslint/eslint/issues/17829)) (Tanuj Kanti)
-   [`4391b71`](https://github.com/eslint/eslint/commit/4391b71e62b15e54b0493f0dce1ea053ebbc0689) docs: check config comments in rule examples ([#&#8203;17815](https://github.com/eslint/eslint/issues/17815)) (Francesco Trotta)
-   [`fd28363`](https://github.com/eslint/eslint/commit/fd2836342c2be4751b05fe0ba7cece17d1edecc8) docs: remove mention about ESLint stylistic rules in readme ([#&#8203;17810](https://github.com/eslint/eslint/issues/17810)) (Zwyx)
-   [`48ed5a6`](https://github.com/eslint/eslint/commit/48ed5a6dad478a14d3e823f137455c523f373e0b) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`ba6af85`](https://github.com/eslint/eslint/commit/ba6af85c7d8ba55d37f8663aee949d148e441c1a) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).56.0 ([#&#8203;17864](https://github.com/eslint/eslint/issues/17864)) (Milos Djermanovic)
-   [`60a531a`](https://github.com/eslint/eslint/commit/60a531a9c0811ddf718e26b9136e133f580b6c36) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`ba87a06`](https://github.com/eslint/eslint/commit/ba87a0651a65b52c3ac442b512dd9f4c2b4c5f57) chore: update dependency markdownlint to ^0.32.0 ([#&#8203;17783](https://github.com/eslint/eslint/issues/17783)) (renovate\[bot])
-   [`9271d10`](https://github.com/eslint/eslint/commit/9271d10d9eabeafb0129a090f29191bfd14273c0) chore: add GitHub issue template for docs issues ([#&#8203;17845](https://github.com/eslint/eslint/issues/17845)) (Josh Goldberg ✨)
-   [`70a686b`](https://github.com/eslint/eslint/commit/70a686b3c1feac5eca98bbff9bd67175f550d5db) chore: Convert rule tests to FlatRuleTester ([#&#8203;17819](https://github.com/eslint/eslint/issues/17819)) (Nicholas C. Zakas)
-   [`f3a599d`](https://github.com/eslint/eslint/commit/f3a599d34c7080fc0b2c9a60b5e54dc98c22867c) chore: upgrade eslint-plugin-unicorn to v49.0.0 ([#&#8203;17837](https://github.com/eslint/eslint/issues/17837)) (唯然)
-   [`905d4b7`](https://github.com/eslint/eslint/commit/905d4b75ab2df42aba30622cee0f66b511397e2c) chore: upgrade eslint-plugin-eslint-plugin v5.2.1 ([#&#8203;17838](https://github.com/eslint/eslint/issues/17838)) (唯然)
-   [`4d7c3ce`](https://github.com/eslint/eslint/commit/4d7c3ce246e6b499f472342ef59496a47cc033d6) chore: update eslint-plugin-n v16.4.0 ([#&#8203;17836](https://github.com/eslint/eslint/issues/17836)) (唯然)
-   [`fd0c60c`](https://github.com/eslint/eslint/commit/fd0c60c3be1f213e5a6d69d8a3248e963619e155) ci: unpin Node.js 21.2.0 ([#&#8203;17821](https://github.com/eslint/eslint/issues/17821)) (Francesco Trotta)

### [`v8.55.0`](https://github.com/eslint/eslint/releases/tag/v8.55.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.54.0...v8.55.0)

#### Features

-   [`8c9e6c1`](https://github.com/eslint/eslint/commit/8c9e6c100a6eb69da292463293b3b48cff911a01) feat: importNamePattern option in no-restricted-imports ([#&#8203;17721](https://github.com/eslint/eslint/issues/17721)) (Tanuj Kanti)

#### Documentation

-   [`83ece2a`](https://github.com/eslint/eslint/commit/83ece2afc2dc6c49efe82678663fe4cba590c0e5) docs: fix typo `--rules` -> `--rule` ([#&#8203;17806](https://github.com/eslint/eslint/issues/17806)) (OKURA Masafumi)
-   [`fffca5c`](https://github.com/eslint/eslint/commit/fffca5c362bcd205dbf79d1bb52834f8a98fc6bd) docs: remove "Open in Playground" buttons for removed rules ([#&#8203;17791](https://github.com/eslint/eslint/issues/17791)) (Francesco Trotta)
-   [`a6d9442`](https://github.com/eslint/eslint/commit/a6d9442a9ab34d5d19f78d8c8fd0767a1237bfe3) docs: fix correct/incorrect examples of rules ([#&#8203;17789](https://github.com/eslint/eslint/issues/17789)) (Tanuj Kanti)
-   [`383e999`](https://github.com/eslint/eslint/commit/383e99928d7ce649ec9030c9856b03fbac0c3501) docs: update and fix examples for `no-unused-vars` ([#&#8203;17788](https://github.com/eslint/eslint/issues/17788)) (Tanuj Kanti)
-   [`5a8efd5`](https://github.com/eslint/eslint/commit/5a8efd5b7ad13eb320a1f468d1d4ab3c8ab99214) docs: add specific stylistic rule for each deprecated rule ([#&#8203;17778](https://github.com/eslint/eslint/issues/17778)) (Etienne)

#### Chores

-   [`eb8950c`](https://github.com/eslint/eslint/commit/eb8950c3b811c9163b9aae23af8b6266ad98b295) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).55.0 ([#&#8203;17811](https://github.com/eslint/eslint/issues/17811)) (Milos Djermanovic)
-   [`93df384`](https://github.com/eslint/eslint/commit/93df3849a7a25ebe0502000bf0bfb80a6613a5ae) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fe4b954`](https://github.com/eslint/eslint/commit/fe4b9545a83e9aca7ba4bb77bc9c868d57de777f) chore: upgrade [@&#8203;eslint/eslintrc](https://github.com/eslint/eslintrc)[@&#8203;2](https://github.com/2).1.4 ([#&#8203;17799](https://github.com/eslint/eslint/issues/17799)) (Milos Djermanovic)
-   [`bd8911d`](https://github.com/eslint/eslint/commit/bd8911db85c7a1127543c9212c8cea47a5cb687d) ci: pin Node.js 21.2.0 ([#&#8203;17809](https://github.com/eslint/eslint/issues/17809)) (Milos Djermanovic)
-   [`b29a16b`](https://github.com/eslint/eslint/commit/b29a16b22f234f6134475efb6c7be5ac946556ee) chore: fix several `cli` tests to run in the intended flat config mode ([#&#8203;17797](https://github.com/eslint/eslint/issues/17797)) (Milos Djermanovic)
-   [`de165c1`](https://github.com/eslint/eslint/commit/de165c108203c6703516ac651f5b4cac5b241804) chore: remove unused config-extends fixtures ([#&#8203;17781](https://github.com/eslint/eslint/issues/17781)) (Milos Djermanovic)
-   [`d4304b8`](https://github.com/eslint/eslint/commit/d4304b8b66eac870ffbf4840d84add8a123b25fc) chore: remove formatting/stylistic rules from new rule templates ([#&#8203;17780](https://github.com/eslint/eslint/issues/17780)) (Francesco Trotta)
-   [`21024fe`](https://github.com/eslint/eslint/commit/21024fe2029420b413bed11d23761c87e9a02a1a) chore: check rule examples for syntax errors ([#&#8203;17718](https://github.com/eslint/eslint/issues/17718)) (Francesco Trotta)

### [`v8.54.0`](https://github.com/eslint/eslint/releases/tag/v8.54.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.53.0...v8.54.0)

#### Features

-   [`a7a883b`](https://github.com/eslint/eslint/commit/a7a883bd6ba4f140b60cbbb2be5b53d750f6c8db) feat: for-direction rule add check for condition in reverse order ([#&#8203;17755](https://github.com/eslint/eslint/issues/17755)) (Angelo Annunziata)
-   [`1452dc9`](https://github.com/eslint/eslint/commit/1452dc9f12c45c05d7c569f737221f0d988ecef1) feat: Add suggestions to no-console ([#&#8203;17680](https://github.com/eslint/eslint/issues/17680)) (Joel Mathew Koshy)
-   [`21ebf8a`](https://github.com/eslint/eslint/commit/21ebf8a811be9f4b009cf70a10be5062d4fdc736) feat: update `no-array-constructor` rule ([#&#8203;17711](https://github.com/eslint/eslint/issues/17711)) (Francesco Trotta)

#### Bug Fixes

-   [`98926e6`](https://github.com/eslint/eslint/commit/98926e6e7323e5dd12a9f016cb558144296665af) fix: Ensure that extra data is not accidentally stored in the cache file ([#&#8203;17760](https://github.com/eslint/eslint/issues/17760)) (Milos Djermanovic)
-   [`e8cf9f6`](https://github.com/eslint/eslint/commit/e8cf9f6a524332293f8b2c90a2db4a532e47d919) fix: Make dark scroll bar in dark theme ([#&#8203;17753](https://github.com/eslint/eslint/issues/17753)) (Pavel)
-   [`3cbeaad`](https://github.com/eslint/eslint/commit/3cbeaad7b943c153937ce34365cec2c406f2b98b) fix: Use `cwd` constructor option as config `basePath` in Linter ([#&#8203;17705](https://github.com/eslint/eslint/issues/17705)) (Milos Djermanovic)

#### Documentation

-   [`becfdd3`](https://github.com/eslint/eslint/commit/becfdd39b25d795e56c9a13eb3e77af6b9c86e8a) docs: Make clear when rules are removed ([#&#8203;17728](https://github.com/eslint/eslint/issues/17728)) (Nicholas C. Zakas)
-   [`05d6e99`](https://github.com/eslint/eslint/commit/05d6e99153ed6d94eb30f46c57609371918a41f3) docs: update "Submit a Pull Request" page ([#&#8203;17712](https://github.com/eslint/eslint/issues/17712)) (Francesco Trotta)
-   [`eb2279e`](https://github.com/eslint/eslint/commit/eb2279e5148cee8fdea7dae614f4f8af7a2d06c3) docs: display info about deprecated rules ([#&#8203;17749](https://github.com/eslint/eslint/issues/17749)) (Percy Ma)
-   [`d245326`](https://github.com/eslint/eslint/commit/d24532601e64714ac5d08507e05aa5c14ecd1d5a) docs: Correct working in migrating plugin docs ([#&#8203;17722](https://github.com/eslint/eslint/issues/17722)) (Filip Tammergård)

#### Chores

-   [`d644de9`](https://github.com/eslint/eslint/commit/d644de9a4b593b565617303a095bc9aa69e7b768) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).54.0 ([#&#8203;17773](https://github.com/eslint/eslint/issues/17773)) (Milos Djermanovic)
-   [`1e6e314`](https://github.com/eslint/eslint/commit/1e6e31415cc429a3a9fc64b2ec03df0e0ec0c91b) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`6fb8805`](https://github.com/eslint/eslint/commit/6fb8805310afe7476d6c404f172177a6d15fcf11) chore: Fixed grammar in issue_templates/rule_change ([#&#8203;17770](https://github.com/eslint/eslint/issues/17770)) (Joel Mathew Koshy)
-   [`85db724`](https://github.com/eslint/eslint/commit/85db7243ddb8706ed60ab64a7ddf604d0d7de493) chore: upgrade `markdownlint` to 0.31.1 ([#&#8203;17754](https://github.com/eslint/eslint/issues/17754)) (Nitin Kumar)
-   [`6d470d2`](https://github.com/eslint/eslint/commit/6d470d2e74535761bd56dcb1c021b463ef9e8a9c) chore: update dependency recast to ^0.23.0 ([#&#8203;17736](https://github.com/eslint/eslint/issues/17736)) (renovate\[bot])
-   [`b7121b5`](https://github.com/eslint/eslint/commit/b7121b590d578c9c9b38ee481313317f30e54817) chore: update dependency markdownlint-cli to ^0.37.0 ([#&#8203;17735](https://github.com/eslint/eslint/issues/17735)) (renovate\[bot])
-   [`633b9a1`](https://github.com/eslint/eslint/commit/633b9a19752b6a22ab4d6c824f27a75ac0e4151b) chore: update dependency regenerator-runtime to ^0.14.0 ([#&#8203;17739](https://github.com/eslint/eslint/issues/17739)) (renovate\[bot])
-   [`acac16f`](https://github.com/eslint/eslint/commit/acac16fdf8540f7ba86cf637e3c1b253bd35a268) chore: update dependency vite-plugin-commonjs to ^0.10.0 ([#&#8203;17740](https://github.com/eslint/eslint/issues/17740)) (renovate\[bot])
-   [`ba8ca7e`](https://github.com/eslint/eslint/commit/ba8ca7e3debcba68ee7015b9221cf5acd7870206) chore: add .github/renovate.json5 ([#&#8203;17567](https://github.com/eslint/eslint/issues/17567)) (Josh Goldberg ✨)

### [`v8.53.0`](https://github.com/eslint/eslint/releases/tag/v8.53.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.52.0...v8.53.0)

#### Features

-   [`528e1c0`](https://github.com/eslint/eslint/commit/528e1c00dc2aa8636e5b706c4270dc655cfa17e3) feat: Deprecate formatting rules ([#&#8203;17696](https://github.com/eslint/eslint/issues/17696)) (Nicholas C. Zakas)
-   [`c0b11dd`](https://github.com/eslint/eslint/commit/c0b11ddb9f8aacc64c3933b9f278939aa7bea481) feat: Add suggestions for no-prototype-builtins ([#&#8203;17677](https://github.com/eslint/eslint/issues/17677)) (Yonathan Randolph)

#### Bug Fixes

-   [`1ad6257`](https://github.com/eslint/eslint/commit/1ad6257744d63281235fcc33288394b1d69b34ce) fix: ensure that exit code for fatal errors is not overwritten ([#&#8203;17683](https://github.com/eslint/eslint/issues/17683)) (Milos Djermanovic)
-   [`b329ea7`](https://github.com/eslint/eslint/commit/b329ea748dff45f11c7e218208244dc24fcb5c8f) fix: add `;` after JSX nodes in  `no-object-constructor` autofix ([#&#8203;17672](https://github.com/eslint/eslint/issues/17672)) (Francesco Trotta)

#### Documentation

-   [`ab8c60d`](https://github.com/eslint/eslint/commit/ab8c60d4f859cec787b5a12f7271b40e666235f5) docs: change position of return to top button ([#&#8203;17688](https://github.com/eslint/eslint/issues/17688)) (Tanuj Kanti)
-   [`4fc44c0`](https://github.com/eslint/eslint/commit/4fc44c0b8c5dca466bffdfe01dfd80794d7762b7) docs: update twitter icon to new X icon ([#&#8203;17687](https://github.com/eslint/eslint/issues/17687)) (Tanuj Kanti)
-   [`4164b2c`](https://github.com/eslint/eslint/commit/4164b2ceec89726b18ea0b0e34fab05735d55a09) docs: Update README (GitHub Actions Bot)
-   [`8651895`](https://github.com/eslint/eslint/commit/8651895ca7ae15e13d74c8be67d9eebd63a7ce1f) docs: Fix tabs in rule examples ([#&#8203;17653](https://github.com/eslint/eslint/issues/17653)) (Francesco Trotta)
-   [`3aec1c5`](https://github.com/eslint/eslint/commit/3aec1c55ba2c6d2833e1c0afe0a58f0cc6bbc0a4) docs: explained rule fixers and suggestions ([#&#8203;17657](https://github.com/eslint/eslint/issues/17657)) (Josh Goldberg ✨)

#### Chores

-   [`ba4d4d5`](https://github.com/eslint/eslint/commit/ba4d4d567a82554250dd8c7933322824e6a73944) chore: remove metascraper ([#&#8203;17707](https://github.com/eslint/eslint/issues/17707)) (Milos Djermanovic)
-   [`0d07338`](https://github.com/eslint/eslint/commit/0d0733882944b4849d71a40723c251213698cef9) chore: Update dependencies ([#&#8203;17706](https://github.com/eslint/eslint/issues/17706)) (Milos Djermanovic)
-   [`93256a3`](https://github.com/eslint/eslint/commit/93256a32e312f3f4e5c532762df71bdc06bded20) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`485ec7d`](https://github.com/eslint/eslint/commit/485ec7d08ed2040c292f52bf9b9152f6c8ef4809) test: fix ESLint tests for caching ([#&#8203;17699](https://github.com/eslint/eslint/issues/17699)) (Milos Djermanovic)
-   [`db06a7f`](https://github.com/eslint/eslint/commit/db06a7ff7992a74368f03d1f21beb00df0407021) ci: bump actions/setup-node from 3 to 4 ([#&#8203;17676](https://github.com/eslint/eslint/issues/17676)) (dependabot\[bot])
-   [`994596b`](https://github.com/eslint/eslint/commit/994596b07f5ff20a615a4be1ea03e5fd59cdb84b) ci: run tests in Node.js 21 ([#&#8203;17673](https://github.com/eslint/eslint/issues/17673)) (Francesco Trotta)

### [`v8.52.0`](https://github.com/eslint/eslint/releases/tag/v8.52.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.51.0...v8.52.0)

#### Features

-   [`70648ee`](https://github.com/eslint/eslint/commit/70648ee49c07f7b533d09f6bf8a5291e5a5a8601) feat: report-unused-disable-directive to report unused eslint-enable ([#&#8203;17611](https://github.com/eslint/eslint/issues/17611)) (Yosuke Ota)

#### Bug Fixes

-   [`5de9637`](https://github.com/eslint/eslint/commit/5de9637fc925729a83d5a5e9e868a41792a184e3) fix: Ensure shared references in rule configs are separated ([#&#8203;17666](https://github.com/eslint/eslint/issues/17666)) (Nicholas C. Zakas)
-   [`dcfe573`](https://github.com/eslint/eslint/commit/dcfe5739c374c9d7ed21f14027870ec0fd453661) fix: add preceding semicolon in suggestions of `no-object-constructor` ([#&#8203;17649](https://github.com/eslint/eslint/issues/17649)) (Francesco Trotta)

#### Documentation

-   [`476d58a`](https://github.com/eslint/eslint/commit/476d58a584d5d2db003c4c22ffee90e63566164d) docs: Add note about invalid CLI flags when using flat config. ([#&#8203;17664](https://github.com/eslint/eslint/issues/17664)) (Nicholas C. Zakas)
-   [`660ed3a`](https://github.com/eslint/eslint/commit/660ed3afd128ad529234a855345629982caf1bc7) docs: Plugin flat config migration guide ([#&#8203;17640](https://github.com/eslint/eslint/issues/17640)) (Nicholas C. Zakas)
-   [`a58aa20`](https://github.com/eslint/eslint/commit/a58aa200fccedae7e2e9b6129246f2cedab14f8d) docs: fix examples for several rules ([#&#8203;17645](https://github.com/eslint/eslint/issues/17645)) (Milos Djermanovic)
-   [`179929b`](https://github.com/eslint/eslint/commit/179929bd46892f18f2aef0c159d5cc361cb69987) docs: Remove trailing newline from the code of Playground links ([#&#8203;17641](https://github.com/eslint/eslint/issues/17641)) (Francesco Trotta)
-   [`f8e5c30`](https://github.com/eslint/eslint/commit/f8e5c30636450d4a8baf51f0e227685e6d77ac64) docs: Update README (GitHub Actions Bot)
-   [`b7ef2f3`](https://github.com/eslint/eslint/commit/b7ef2f34fe12b68a366e1b4bf5f64d7332c6e72e) docs: Enable pretty code formatter output ([#&#8203;17635](https://github.com/eslint/eslint/issues/17635)) (Nicholas C. Zakas)
-   [`0bcb9a8`](https://github.com/eslint/eslint/commit/0bcb9a8db608a3d0bd2645f99e0707b9a9bbaaf0) docs: Fix syntax errors in rule examples ([#&#8203;17633](https://github.com/eslint/eslint/issues/17633)) (Francesco Trotta)
-   [`61b9083`](https://github.com/eslint/eslint/commit/61b90839633ef300ac7707a651f65f532e65f42d) docs: Make no-continue example code work ([#&#8203;17643](https://github.com/eslint/eslint/issues/17643)) (Zhongyuan Zhou)
-   [`9fafe45`](https://github.com/eslint/eslint/commit/9fafe450c31ed9b6bdd9dcd6c115255943b8c1c2) docs: upgrade to 11ty 2.0 ([#&#8203;17632](https://github.com/eslint/eslint/issues/17632)) (Percy Ma)
-   [`ff8e4bf`](https://github.com/eslint/eslint/commit/ff8e4bf327b5c92b0623b0fc5f8f101954f785db) docs: Update README (GitHub Actions Bot)
-   [`fab249a`](https://github.com/eslint/eslint/commit/fab249ae6addac2ee18cd81cee80916010bb469e) docs: Update README (GitHub Actions Bot)
-   [`392305b`](https://github.com/eslint/eslint/commit/392305bf4797e3ebc696dfca48bd874741fca845) docs: Update `no-irregular-whitespace` and fix examples ([#&#8203;17626](https://github.com/eslint/eslint/issues/17626)) (Francesco Trotta)
-   [`6b8acfb`](https://github.com/eslint/eslint/commit/6b8acfb770589f3941df41c3910d3b8ffc3e1e45) docs: Add real whitespace to `no-trailing-spaces` examples ([#&#8203;17630](https://github.com/eslint/eslint/issues/17630)) (Francesco Trotta)
-   [`1000187`](https://github.com/eslint/eslint/commit/1000187e00949332babcee4d37d46c96a6a554a8) docs: Fix examples in `unicode-bom` ([#&#8203;17631](https://github.com/eslint/eslint/issues/17631)) (Francesco Trotta)
-   [`000290c`](https://github.com/eslint/eslint/commit/000290c4c923cc1473e21b4bdbdc0c42765ef7dd) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`6d1f0c2`](https://github.com/eslint/eslint/commit/6d1f0c2da0309c06c21149b8d71a8f439a70d7e8) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).52.0 ([#&#8203;17671](https://github.com/eslint/eslint/issues/17671)) (Milos Djermanovic)
-   [`d63d4fe`](https://github.com/eslint/eslint/commit/d63d4fe0942e6747ab60e758aa36076f43041a30) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`f30cefe`](https://github.com/eslint/eslint/commit/f30cefee6bda2789ede18e1664b84c2638ea1bb5) test: fix FlatESLint tests for caching ([#&#8203;17658](https://github.com/eslint/eslint/issues/17658)) (Milos Djermanovic)
-   [`ef650cb`](https://github.com/eslint/eslint/commit/ef650cb612510bcfa1379c1f0af56dd563b3a705) test: update tests for no-promise-executor-return ([#&#8203;17661](https://github.com/eslint/eslint/issues/17661)) (Milos Djermanovic)

### [`v8.51.0`](https://github.com/eslint/eslint/releases/tag/v8.51.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.50.0...v8.51.0)

#### Features

-   [`0a9c433`](https://github.com/eslint/eslint/commit/0a9c43339a4adef24ef83034d0b078dd279cc977) feat: Add `--no-warn-ignored` CLI option for flat config ([#&#8203;17569](https://github.com/eslint/eslint/issues/17569)) (Domantas Petrauskas)
-   [`977e67e`](https://github.com/eslint/eslint/commit/977e67ec274a05cb7391665b5e3453e7f72f72b2) feat: logical-assignment-operators to report expressions with 3 operands ([#&#8203;17600](https://github.com/eslint/eslint/issues/17600)) (Yosuke Ota)

#### Bug Fixes

-   [`f976b2f`](https://github.com/eslint/eslint/commit/f976b2f7bfe7cc78bb649f8b37e90fd519ff3bcc) fix: make rule severity case-sensitive in flat config ([#&#8203;17619](https://github.com/eslint/eslint/issues/17619)) (Milos Djermanovic)
-   [`0edfe36`](https://github.com/eslint/eslint/commit/0edfe369aa5bd80a98053022bb4c6b1ea0155f44) fix: Ensure crash error messages are not duplicated ([#&#8203;17584](https://github.com/eslint/eslint/issues/17584)) (Nicholas C. Zakas)
-   [`dd79abc`](https://github.com/eslint/eslint/commit/dd79abc0c1857b1d765acc312c0d6518e40d31c9) fix: `eslint-disable` to be able to parse quoted rule names ([#&#8203;17612](https://github.com/eslint/eslint/issues/17612)) (Yosuke Ota)
-   [`d2f6801`](https://github.com/eslint/eslint/commit/d2f68019b8882278877801c5ef2f74d55e2a10c1) fix: Ensure correct code path for && followed by ?? ([#&#8203;17618](https://github.com/eslint/eslint/issues/17618)) (Nicholas C. Zakas)

#### Documentation

-   [`ee5be81`](https://github.com/eslint/eslint/commit/ee5be81fa3c4fe801c2f653854f098ed6a84dcef) docs: default to `sourceType: "module"` in rule examples ([#&#8203;17615](https://github.com/eslint/eslint/issues/17615)) (Francesco Trotta)
-   [`1aa26df`](https://github.com/eslint/eslint/commit/1aa26df9fbcfdf5b895743c6d2d3a216479544b1) docs: Add more examples for multiline-ternary ([#&#8203;17610](https://github.com/eslint/eslint/issues/17610)) (George Ashiotis)
-   [`47d0b44`](https://github.com/eslint/eslint/commit/47d0b446964f44d70b9457ecc368e721e1dc7c11) docs: Update README (GitHub Actions Bot)
-   [`dbf831e`](https://github.com/eslint/eslint/commit/dbf831e31f8eea0bc94df96cd33255579324b66e) docs: use generated og image ([#&#8203;17601](https://github.com/eslint/eslint/issues/17601)) (Percy Ma)
-   [`1866da5`](https://github.com/eslint/eslint/commit/1866da5e1d931787256ecb825a803cac5835b71c) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`1ef39ea`](https://github.com/eslint/eslint/commit/1ef39ea5b884453be717ebc929155d7eb584dcbf) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).51.0 ([#&#8203;17624](https://github.com/eslint/eslint/issues/17624)) (Milos Djermanovic)
-   [`f8c7403`](https://github.com/eslint/eslint/commit/f8c7403255c11e99c402860aef3c0179f2b16628) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`2665552`](https://github.com/eslint/eslint/commit/2665552ba0057e8603f9fbece0fd236f189f5cf3) test: fix flat config linter tests to use Linter in flat config mode ([#&#8203;17616](https://github.com/eslint/eslint/issues/17616)) (Milos Djermanovic)
-   [`7b77bcc`](https://github.com/eslint/eslint/commit/7b77bccbb51bd36b2d20fea61bc782545c4029b3) chore: Refactor CodePathState ([#&#8203;17510](https://github.com/eslint/eslint/issues/17510)) (Nicholas C. Zakas)
-   [`bc77c9a`](https://github.com/eslint/eslint/commit/bc77c9af12539f350ef19e30611a153a5b869c6b) chore: Document and refactor ForkContext ([#&#8203;17566](https://github.com/eslint/eslint/issues/17566)) (Nicholas C. Zakas)
-   [`24e1f14`](https://github.com/eslint/eslint/commit/24e1f140ec68659e55c1ace0d7500addb135a2b4) chore: Refactor and document CodePath ([#&#8203;17558](https://github.com/eslint/eslint/issues/17558)) (Nicholas C. Zakas)

### [`v8.50.0`](https://github.com/eslint/eslint/releases/tag/v8.50.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.49.0...v8.50.0)

#### Features

-   [`27d5a9e`](https://github.com/eslint/eslint/commit/27d5a9e57ad347982a68fcd0e75eafee42d344f0) feat: add suggestions to array-callback-return ([#&#8203;17590](https://github.com/eslint/eslint/issues/17590)) (Tanuj Kanti)
-   [`f9082ff`](https://github.com/eslint/eslint/commit/f9082ff3f3956a0a5a7d7659de63640a21c4de0f) feat: flat-rule-tester make sure default config always matches ([#&#8203;17585](https://github.com/eslint/eslint/issues/17585)) (fnx)
-   [`83914ad`](https://github.com/eslint/eslint/commit/83914adbfd5fce7d11b33d095ba6d6a39be0dbbc) feat: Implement SourceCode#applyInlineConfig() ([#&#8203;17351](https://github.com/eslint/eslint/issues/17351)) (Nicholas C. Zakas)
-   [`22a5582`](https://github.com/eslint/eslint/commit/22a558228ff98f478fa308c9ecde361acc4caf20) feat: add rule `no-object-constructor`, deprecate `no-new-object` ([#&#8203;17576](https://github.com/eslint/eslint/issues/17576)) (Francesco Trotta)
-   [`85a3d9e`](https://github.com/eslint/eslint/commit/85a3d9e967b19cb4a0189746499d81ef2f93e14e) feat: allowVoid option in array-callback-return ([#&#8203;17564](https://github.com/eslint/eslint/issues/17564)) (Tanuj Kanti)

#### Bug Fixes

-   [`cc4d26b`](https://github.com/eslint/eslint/commit/cc4d26b5a59d510f2c878e973fd245e8eff27c2a) fix: Ensure deprecated context.parserServices warns ([#&#8203;17593](https://github.com/eslint/eslint/issues/17593)) (Nicholas C. Zakas)
-   [`1ea4cfb`](https://github.com/eslint/eslint/commit/1ea4cfb585dcb52ac3cb1522a32f25cfe507121b) fix: Ensure all RuleTester tests all deprecated context methods ([#&#8203;17587](https://github.com/eslint/eslint/issues/17587)) (Nicholas C. Zakas)
-   [`aa1b657`](https://github.com/eslint/eslint/commit/aa1b657a9febcd03e9298c03ae2888762795e322) fix: wrong suggestion and message in `no-misleading-character-class` ([#&#8203;17571](https://github.com/eslint/eslint/issues/17571)) (Yosuke Ota)

#### Documentation

-   [`1800537`](https://github.com/eslint/eslint/commit/180053759c6cf05a326c710353b4717fbf289ee0) docs: Fix and standardize JSX code examples ([#&#8203;17591](https://github.com/eslint/eslint/issues/17591)) (Francesco Trotta)
-   [`48a44a7`](https://github.com/eslint/eslint/commit/48a44a73ac456739bdee348bbaf1840d2b1e4830) docs: Add correct/incorrect tags to `prefer-arrow-callback` ([#&#8203;17589](https://github.com/eslint/eslint/issues/17589)) (Francesco Trotta)
-   [`20893d4`](https://github.com/eslint/eslint/commit/20893d48b9012f2b61bbbfeac8bee70d68d90e5e) docs: fix incorrect tag's place ([#&#8203;17575](https://github.com/eslint/eslint/issues/17575)) (Tanuj Kanti)
-   [`bd7a71f`](https://github.com/eslint/eslint/commit/bd7a71fd6b7efb0445393304e2d48c5c06d46a45) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`f8a8a2d`](https://github.com/eslint/eslint/commit/f8a8a2d6b45c82f94a574623759b6e3d2af193f3) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).50.0 ([#&#8203;17599](https://github.com/eslint/eslint/issues/17599)) (Milos Djermanovic)
-   [`38ada6d`](https://github.com/eslint/eslint/commit/38ada6df8f4a0313b7d0739b28f0af6b4897b8ce) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)

### [`v8.49.0`](https://github.com/eslint/eslint/releases/tag/v8.49.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.48.0...v8.49.0)

#### Features

-   [`da09f4e`](https://github.com/eslint/eslint/commit/da09f4e641141f585ef611c6e9d63d4331054706) feat: Implement onUnreachableCodePathStart/End ([#&#8203;17511](https://github.com/eslint/eslint/issues/17511)) (Nicholas C. Zakas)
-   [`32b2327`](https://github.com/eslint/eslint/commit/32b2327aafdd3b911fabab69ed75c9ff97658c60) feat: Emit deprecation warnings in RuleTester ([#&#8203;17527](https://github.com/eslint/eslint/issues/17527)) (Nicholas C. Zakas)
-   [`acb7df3`](https://github.com/eslint/eslint/commit/acb7df35b9a7485f26bc6b3e1f9083d1c585dce9) feat: add new `enforce` option to `lines-between-class-members` ([#&#8203;17462](https://github.com/eslint/eslint/issues/17462)) (Nitin Kumar)

#### Documentation

-   [`ecfb54f`](https://github.com/eslint/eslint/commit/ecfb54ff4cdd18f28b4f9b78f0a78fb4cf80f1b8) docs: Update README (GitHub Actions Bot)
-   [`de86b3b`](https://github.com/eslint/eslint/commit/de86b3b2e58edd5826200c23255d8325abe375e1) docs: update `no-promise-executor-return` examples ([#&#8203;17529](https://github.com/eslint/eslint/issues/17529)) (Nitin Kumar)
-   [`032c4b1`](https://github.com/eslint/eslint/commit/032c4b1476a7b8cfd917a66772d2221950ea87eb) docs: add typescript template ([#&#8203;17500](https://github.com/eslint/eslint/issues/17500)) (James)
-   [`cd7da5c`](https://github.com/eslint/eslint/commit/cd7da5cc3154f86f7ca45fb58929d27a7af359ed) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`b7621c3`](https://github.com/eslint/eslint/commit/b7621c3b16cf7d5539f05336a827e1b32d95e6ac) chore: remove browser test from `npm test` ([#&#8203;17550](https://github.com/eslint/eslint/issues/17550)) (Milos Djermanovic)
-   [`cac45d0`](https://github.com/eslint/eslint/commit/cac45d04b890b0700dd8908927300608adad05fe) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).49.0 ([#&#8203;17549](https://github.com/eslint/eslint/issues/17549)) (Milos Djermanovic)
-   [`cd39508`](https://github.com/eslint/eslint/commit/cd395082bffcb4b68efa09226d7c682cef56179e) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`203a971`](https://github.com/eslint/eslint/commit/203a971c0abc3a95ae02ff74104a01e569707060) ci: bump actions/checkout from 3 to 4 ([#&#8203;17530](https://github.com/eslint/eslint/issues/17530)) (dependabot\[bot])
-   [`a40fa50`](https://github.com/eslint/eslint/commit/a40fa509922b36bb986eb1be9394591f84f62d9e) chore: use eslint-plugin-jsdoc's flat config ([#&#8203;17516](https://github.com/eslint/eslint/issues/17516)) (Milos Djermanovic)
-   [`926a286`](https://github.com/eslint/eslint/commit/926a28684282aeec37680bbc52a66973b8055f54) test: replace Karma with Webdriver.IO ([#&#8203;17126](https://github.com/eslint/eslint/issues/17126)) (Christian Bromann)
-   [`f591d2c`](https://github.com/eslint/eslint/commit/f591d2c88bf15af72e3a207b34fa872b4b90464b) chore: Upgrade config-array ([#&#8203;17512](https://github.com/eslint/eslint/issues/17512)) (Nicholas C. Zakas)

### [`v8.48.0`](https://github.com/eslint/eslint/releases/tag/v8.48.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.47.0...v8.48.0)

#### Features

-   [`1fbb3b0`](https://github.com/eslint/eslint/commit/1fbb3b0b477c814c0d179564fe495f4c50a451e9) feat: correct update direction in `for-direction` ([#&#8203;17483](https://github.com/eslint/eslint/issues/17483)) (Francesco Trotta)
-   [`d73fbf2`](https://github.com/eslint/eslint/commit/d73fbf2228631d6c468cd24710e2579fe6cb70fd) feat: rule tester do not create empty valid or invalid test suites ([#&#8203;17475](https://github.com/eslint/eslint/issues/17475)) (fnx)
-   [`ee2f718`](https://github.com/eslint/eslint/commit/ee2f718188d32e9888b1932fe6b9bd2a62c529a4) feat: Allow `void` in rule `no-promise-executor-return` ([#&#8203;17282](https://github.com/eslint/eslint/issues/17282)) (nopeless)

#### Bug Fixes

-   [`7234f6a`](https://github.com/eslint/eslint/commit/7234f6a706a209aa2d79259110328752e9ae3928) fix: update RuleTester JSDoc and deprecations ([#&#8203;17496](https://github.com/eslint/eslint/issues/17496)) (Jonas Berlin)

#### Documentation

-   [`7a51d77`](https://github.com/eslint/eslint/commit/7a51d77c0a066e461ff288568fdfee0e9539a2b5) docs: no-param-reassign mention strict mode ([#&#8203;17494](https://github.com/eslint/eslint/issues/17494)) (Stephen Hardy)
-   [`9cd7ac2`](https://github.com/eslint/eslint/commit/9cd7ac2fdb6b1d71a9fb1b8297a478cafacbdafd) docs: add `fetch` script to package.json conventions ([#&#8203;17459](https://github.com/eslint/eslint/issues/17459)) (Nitin Kumar)
-   [`cab21e6`](https://github.com/eslint/eslint/commit/cab21e64a8f79779c641178f825945958667c6e4) docs: advice for inline disabling of rules ([#&#8203;17458](https://github.com/eslint/eslint/issues/17458)) (Ashish Yadav)
-   [`056499d`](https://github.com/eslint/eslint/commit/056499de31a139dbc965d18652b0b520e11b408d) docs: fix example of flat config from plugin ([#&#8203;17482](https://github.com/eslint/eslint/issues/17482)) (Francesco Trotta)
-   [`9e9edf9`](https://github.com/eslint/eslint/commit/9e9edf93ecfa0658e8b79e71bc98530ade150081) docs: update documentation URL in error message ([#&#8203;17465](https://github.com/eslint/eslint/issues/17465)) (Nitin Kumar)

#### Chores

-   [`8dd3cec`](https://github.com/eslint/eslint/commit/8dd3cec90c97ed97d243a83b87ad4ea9e6b4781a) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).48.0 ([#&#8203;17501](https://github.com/eslint/eslint/issues/17501)) (Milos Djermanovic)
-   [`6d0496e`](https://github.com/eslint/eslint/commit/6d0496e9476fb2210fba0a3d541df8c052ecf73a) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`9d4216d`](https://github.com/eslint/eslint/commit/9d4216d638d39844decffac33ee3d5a47413c80a) chore: Refactor and document CodePathSegment ([#&#8203;17474](https://github.com/eslint/eslint/issues/17474)) (Nicholas C. Zakas)

### [`v8.47.0`](https://github.com/eslint/eslint/releases/tag/v8.47.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.46.0...v8.47.0)

#### Features

-   [`53d7508`](https://github.com/eslint/eslint/commit/53d750800b1c0c1f8c29393c488bb3167bb1d2a5) feat: update regex for methods with `thisArg` ([#&#8203;17439](https://github.com/eslint/eslint/issues/17439)) (Francesco Trotta)

#### Bug Fixes

-   [`631648e`](https://github.com/eslint/eslint/commit/631648ee0b51a8951ce576ccd4430e09c9c8bcae) fix: do not report on shadowed constructors in `no-new-wrappers` ([#&#8203;17447](https://github.com/eslint/eslint/issues/17447)) (Francesco Trotta)

#### Documentation

-   [`a766a48`](https://github.com/eslint/eslint/commit/a766a48030d4359db76523d5b413d6332130e485) docs: document lack of config file names ([#&#8203;17442](https://github.com/eslint/eslint/issues/17442)) (James)
-   [`a1635d6`](https://github.com/eslint/eslint/commit/a1635d6198a8baf6571b3351e098e5ac960be887) docs: Update README (GitHub Actions Bot)
-   [`47a0859`](https://github.com/eslint/eslint/commit/47a08597966651975126dd6726939cd34f13b80e) docs: update `require-unicode-regexp.md` as following up [#&#8203;17402](https://github.com/eslint/eslint/issues/17402) ([#&#8203;17441](https://github.com/eslint/eslint/issues/17441)) (SUZUKI Sosuke)
-   [`fcdc85d`](https://github.com/eslint/eslint/commit/fcdc85d3a6bc14970c3349cc8d6f3a47eca172a3) docs: Update README (GitHub Actions Bot)
-   [`2a92b6c`](https://github.com/eslint/eslint/commit/2a92b6cc9520a27255520369206556e9841a3af8) docs: update with "Specifying Parser Options" ([#&#8203;17435](https://github.com/eslint/eslint/issues/17435)) (Cheol-Won)
-   [`d743ed3`](https://github.com/eslint/eslint/commit/d743ed3c06c62a639da0389ad27907b324ea1715) docs: add metadata for parser/processor ([#&#8203;17438](https://github.com/eslint/eslint/issues/17438)) (Huáng Jùnliàng)
-   [`224376c`](https://github.com/eslint/eslint/commit/224376cd99a08394291a9584ad9c1ea1283673c6) docs: Update README (GitHub Actions Bot)
-   [`a41a8e4`](https://github.com/eslint/eslint/commit/a41a8e4a7da14726d6fce71a023f12101fd52fdb) docs: update script names in README ([#&#8203;17432](https://github.com/eslint/eslint/issues/17432)) (Nitin Kumar)

#### Chores

-   [`bf69aa6`](https://github.com/eslint/eslint/commit/bf69aa6408f5403a88d8c9b71b0e58232b1ea833) chore: Update dependencies ([#&#8203;17456](https://github.com/eslint/eslint/issues/17456)) (Nicholas C. Zakas)
-   [`0e45760`](https://github.com/eslint/eslint/commit/0e4576012ab938b880e6f27641bff55fb4313d20) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`757bfe1`](https://github.com/eslint/eslint/commit/757bfe1c35b5ddab7042d388f8d21e834875fff5) chore: Remove add-to-triage ([#&#8203;17450](https://github.com/eslint/eslint/issues/17450)) (Nicholas C. Zakas)
-   [`b066640`](https://github.com/eslint/eslint/commit/b066640b7040ec30f740dcc803511244fe19473b) chore: standardize npm script names ([#&#8203;17431](https://github.com/eslint/eslint/issues/17431)) (Nitin Kumar)
-   [`6b2410f`](https://github.com/eslint/eslint/commit/6b2410f911dd2e3d915c879041c6e257d41a2f4e) chore: Update add-to-triage.yml ([#&#8203;17444](https://github.com/eslint/eslint/issues/17444)) (Nicholas C. Zakas)

### [`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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;17419](https://github.com/eslint/eslint/issues/17419)) (Milos Djermanovic)
-   [`853d32b`](https://github.com/eslint/eslint/commit/853d32baa8934c08b59a738470b72522e1505f6f) feat: deprecate no-return-await ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;17365](https://github.com/eslint/eslint/issues/17365)) (Tanuj Kanti)
-   [`cf03104`](https://github.com/eslint/eslint/commit/cf03104b278fea59ef46e09f667110f5eaaf95e3) feat: Improve config error messages ([#&#8203;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 ([#&#8203;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 ([#&#8203;17358](https://github.com/eslint/eslint/issues/17358)) (Matt Wilkinson)

#### Documentation

-   [`4d474e3`](https://github.com/eslint/eslint/commit/4d474e351ba6ce0242f18e55c27cb3ae17b84f63) docs: update with TypeScript info ([#&#8203;17423](https://github.com/eslint/eslint/issues/17423)) (James)
-   [`091f44e`](https://github.com/eslint/eslint/commit/091f44e4c72007edb2ac6d4db4eafa5501e41e94) docs: File extension named processor deprecation ([#&#8203;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 ([#&#8203;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 ([#&#8203;17386](https://github.com/eslint/eslint/issues/17386)) (Matt Wilkinson)
-   [`da73e58`](https://github.com/eslint/eslint/commit/da73e583e1703a420551d8fa8f7c70b56dc88dd5) docs: Migrating `eslint-env` configuration comments ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`0aa0bc3`](https://github.com/eslint/eslint/commit/0aa0bc365a5425440c8e86c96104d0053a51b602) chore: Add PRs to triage project ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;17306](https://github.com/eslint/eslint/issues/17306)) (Josh Goldberg ✨)
-   [`f8892b5`](https://github.com/eslint/eslint/commit/f8892b52920b8967f9e7bec23c75b74e03977d6b) docs: Expand rule option schema docs ([#&#8203;17198](https://github.com/eslint/eslint/issues/17198)) (Matt Wilkinson)
-   [`8bcbf11`](https://github.com/eslint/eslint/commit/8bcbf11b6050418262ffa8e0ca37f365ae92e7ce) docs: Config Migration Guide ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`5ca9b4d`](https://github.com/eslint/eslint/commit/5ca9b4d29f747e9cf5c9055e85c93b3b605d57fc) chore: update eslint-config-eslint exports ([#&#8203;17336](https://github.com/eslint/eslint/issues/17336)) (Milos Djermanovic)
-   [`7bf2e86`](https://github.com/eslint/eslint/commit/7bf2e86022c9e95db4ca1472fddfa2ea4edd1870) chore: remove unused dependencies ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;17270](https://github.com/eslint/eslint/issues/17270)) (Percy Ma)
-   [`c8b1f4d`](https://github.com/eslint/eslint/commit/c8b1f4d61a256727755d561bf53f889b6cd712e0) feat: Move `parserServices` to `SourceCode` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;17291](https://github.com/eslint/eslint/issues/17291)) (唯然)
-   [`e1314bf`](https://github.com/eslint/eslint/commit/e1314bf85a52bb0d05b1c9ca3b4c1732bae22172) docs: Integration section and tutorial ([#&#8203;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 [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).44.0 ([#&#8203;17329](https://github.com/eslint/eslint/issues/17329)) (Milos Djermanovic)
-   [`a1cb642`](https://github.com/eslint/eslint/commit/a1cb6421f9d185901cd99e5f696e912226ef6632) chore: package.json update for [@&#8203;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 ([#&#8203;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 [email protected] ([#&#8203;17323](https://github.com/eslint/eslint/issues/17323)) (Ziyad El Abid)
-   [`cf88439`](https://github.com/eslint/eslint/commit/cf884390ad8071d88eae05df9321100f1770363d) chore: upgrade [email protected] ([#&#8203;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` ([#&#8203;17308](https://github.com/eslint/eslint/issues/17308)) (Milos Djermanovic)
-   [`f82e56e`](https://github.com/eslint/eslint/commit/f82e56e9acfb9562ece76441472d5657d7d5e296) perf: various performance improvements ([#&#8203;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 ([#&#8203;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 ([#&#8203;17247](https://github.com/eslint/eslint/issues/17247)) (唯然)

### [`v8.43.0`](https://github.com/eslint/eslint/releases/tag/v8.43.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0)

#### Features

-   [`14581ff`](https://github.com/eslint/eslint/commit/14581ff15aaee5a55c46bbf4983818ddc8dd7cb1) feat: directive prologue detection and autofix condition in `quotes` ([#&#8203;17284](https://github.com/eslint/eslint/issues/17284)) (Francesco Trotta)
-   [`e50fac3`](https://github.com/eslint/eslint/commit/e50fac3f8f998f729e3080e256066db3a7827c67) feat: add declaration loc to message in block-scoped-var ([#&#8203;17252](https://github.com/eslint/eslint/issues/17252)) (Milos Djermanovic)
-   [`1b7faf0`](https://github.com/eslint/eslint/commit/1b7faf0702b1af86b6a0ddafc37cf45d60f5d4d8) feat: add `skipJSXText` option to `no-irregular-whitespace` rule ([#&#8203;17182](https://github.com/eslint/eslint/issues/17182)) (Azat S)

#### Bug Fixes

-   [`5338b56`](https://github.com/eslint/eslint/commit/5338b56fda7f47d16bdb23514f1e95b24de7b92f) fix: normalize `cwd` passed to `ESLint`/`FlatESLint` constructor ([#&#8203;17277](https://github.com/eslint/eslint/issues/17277)) (Milos Djermanovic)
-   [`54383e6`](https://github.com/eslint/eslint/commit/54383e69b092ef537d59a1f7799a85b1412f4e59) fix: Remove `no-extra-parens` autofix for potential directives ([#&#8203;17022](https://github.com/eslint/eslint/issues/17022)) (Francesco Trotta)

#### Documentation

-   [`8b855ea`](https://github.com/eslint/eslint/commit/8b855ea058992d5446d1d6dc6394ee683c3200a0) docs: resubmit pr17061 doc changes ([#&#8203;17292](https://github.com/eslint/eslint/issues/17292)) (唯然)
-   [`372722e`](https://github.com/eslint/eslint/commit/372722eac32ca9e3f31cf0d0bc10317c6f153369) docs: resubmit pr17012 doc changes ([#&#8203;17293](https://github.com/eslint/eslint/issues/17293)) (唯然)
-   [`67e7af3`](https://github.com/eslint/eslint/commit/67e7af3fdbdb4648b747dfd669be4decfe24086a) docs: resubmit custom-rules doc changes ([#&#8203;17294](https://github.com/eslint/eslint/issues/17294)) (唯然)
-   [`9e3d77c`](https://github.com/eslint/eslint/commit/9e3d77cba65d0e38e07996e57961fb04f30d9303) docs: Resubmit Fix formatting in Custom Rules docs ([#&#8203;17281](https://github.com/eslint/eslint/issues/17281)) (Milos Djermanovic)
-   [`503647a`](https://github.com/eslint/eslint/commit/503647a0b94ca8c776d7e7e8c54c8b1d32904467) docs: Resubmit markVariableAsUsed docs ([#&#8203;17280](https://github.com/eslint/eslint/issues/17280)) (Nicholas C. Zakas)
-   [`e0cf0d8`](https://github.com/eslint/eslint/commit/e0cf0d86d985ed2b2f901dd9aab5ccd2fff062ad) docs: Custom rule & plugin tutorial ([#&#8203;17024](https://github.com/eslint/eslint/issues/17024)) (Ben Perlmutter)
-   [`8e51ea9`](https://github.com/eslint/eslint/commit/8e51ea943c2fcd05bd8917cfa89e36b91209c7cd) docs: resubmit `no-new` rule documentation ([#&#8203;17264](https://github.com/eslint/eslint/issues/17264)) (Nitin Kumar)
-   [`1b217f8`](https://github.com/eslint/eslint/commit/1b217f8de15961fd3c80389621080132f517a0fb) docs: resubmit `Custom Processors` documentation ([#&#8203;17265](https://github.com/eslint/eslint/issues/17265)) (Nitin Kumar)
-   [`428fc76`](https://github.com/eslint/eslint/commit/428fc76806dea1ac82484d628261a5385f928e6a) docs: resubmit `Create Plugins` documentation ([#&#8203;17268](https://github.com/eslint/eslint/issues/17268)) (Nitin Kumar)
-   [`bdca88c`](https://github.com/eslint/eslint/commit/bdca88cf4f8b7888cb72197bfe9c1d90b490a0dd) docs: resubmit `Configuration Files` documentation ([#&#8203;17267](https://github.com/eslint/eslint/issues/17267)) (Nitin Kumar)
-   [`f5c01f2`](https://github.com/eslint/eslint/commit/f5c01f281ad288b1a0ebddbf579230ae11587c6c) docs: resubmit `Manage Issues` documentation ([#&#8203;17266](https://github.com/eslint/eslint/issues/17266)) (Nitin Kumar)
-   [`b199295`](https://github.com/eslint/eslint/commit/b1992954591a3f4d8417013f52739b5fef4e0cd7) docs: Resubmit custom rules update docs ([#&#8203;17273](https://github.com/eslint/eslint/issues/17273)) (Ben Perlmutter)
-   [`0e9980c`](https://github.com/eslint/eslint/commit/0e9980c3a8a1e554fdb377305c0ebe9e94a354c9) docs: add new `omitLastInOneLineClassBody` option to the `semi` rule ([#&#8203;17263](https://github.com/eslint/eslint/issues/17263)) (Nitin Kumar)
-   [`cb2560f`](https://github.com/eslint/eslint/commit/cb2560f7a393e74b761faa9adad938fb1deb947d) docs: Resubmit getScope/getDeclaredVariables docs ([#&#8203;17262](https://github.com/eslint/eslint/issues/17262)) (Nicholas C. Zakas)
-   [`85d2b30`](https://github.com/eslint/eslint/commit/85d2b30bc318c1355e52ebb21c56cca32f0ab198) docs: explain how to include predefined globals ([#&#8203;17261](https://github.com/eslint/eslint/issues/17261)) (Marcus Wyatt)
-   [`de4d3c1`](https://github.com/eslint/eslint/commit/de4d3c14c30a88795b9075d59827d3fe63a42c5e) docs: update flat config default ignore patterns ([#&#8203;17258](https://github.com/eslint/eslint/issues/17258)) (Milos Djermanovic)
-   [`3912f3a`](https://github.com/eslint/eslint/commit/3912f3a225c12bfb5ce9b7ba26c2b5301e6275bd) docs: Improve `ignores` documentation ([#&#8203;17239](https://github.com/eslint/eslint/issues/17239)) (Francesco Trotta)
-   [`35e11d3`](https://github.com/eslint/eslint/commit/35e11d3248e00b711fd652836edc900f22af0ebd) docs: fix typos and missing info ([#&#8203;17257](https://github.com/eslint/eslint/issues/17257)) (Ed Lucas)
-   [`0bc257c`](https://github.com/eslint/eslint/commit/0bc257c290b12fcda85cb61b40d55fc2be0f938c) docs: Clarify `no-div-regex` rule docs ([#&#8203;17051](https://github.com/eslint/eslint/issues/17051)) ([#&#8203;17255](https://github.com/eslint/eslint/issues/17255)) (Francesco Trotta)
-   [`788d836`](https://github.com/eslint/eslint/commit/788d83629a3790a7db6f52dcf0b4bddf51c6d063) docs: add references to MIT License ([#&#8203;17248](https://github.com/eslint/eslint/issues/17248)) (Milos Djermanovic)
-   [`58aab6b`](https://github.com/eslint/eslint/commit/58aab6b6c09996875418aefeeb0fd76c50caef7a) docs: Update README (GitHub Actions Bot)
-   [`3ef5814`](https://github.com/eslint/eslint/commit/3ef58140550cf8ff34af35fc4d9a1f9a124fe0e6) docs: Revert all changes after the license change ([#&#8203;17227](https://github.com/eslint/eslint/issues/17227)) (Milos Djermanovic)
-   [`03fc4aa`](https://github.com/eslint/eslint/commit/03fc4aa847bd0445e7b3ea81bcc9523b1847facc) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`78350f6`](https://github.com/eslint/eslint/commit/78350f63045c82b7990bb7bfe5080c5ad5e1c3f5) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).43.0 ([#&#8203;17295](https://github.com/eslint/eslint/issues/17295)) (Milos Djermanovic)
-   [`62bf759`](https://github.com/eslint/eslint/commit/62bf759124811b013ad7906c2536deb8b39c31a8) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`e0a2448`](https://github.com/eslint/eslint/commit/e0a2448e0c0ef354e69998858846630a3fce8ebe) chore: docs package.license ISC => MIT ([#&#8203;17254](https://github.com/eslint/eslint/issues/17254)) (唯然)
-   [`6a0196c`](https://github.com/eslint/eslint/commit/6a0196c51310630a0ff96a1e8d7f257c2c7adda9) chore: use eslint-plugin-eslint-plugin flat configs ([#&#8203;17204](https://github.com/eslint/eslint/issues/17204)) (Milos Djermanovic)

### [`v8.42.0`](https://github.com/eslint/eslint/releases/tag/v8.42.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.41.0...v8.42.0)

#### Features

-   [`b8448ff`](https://github.com/eslint/eslint/commit/b8448ff1ae1adf26a81dea07f340caa5b5c2f257) feat: correct no-useless-return behaviour in try statements ([#&#8203;16996](https://github.com/eslint/eslint/issues/16996)) (Nitin Kumar)

#### Bug Fixes

-   [`a589636`](https://github.com/eslint/eslint/commit/a5896360c3faa1e7d1fe81a9907a434b8b8f6b60) fix: Config with `ignores` and without `files` should not always apply ([#&#8203;17181](https://github.com/eslint/eslint/issues/17181)) (Milos Djermanovic)
-   [`c4fad17`](https://github.com/eslint/eslint/commit/c4fad173c7149dbcd25695c19c68663102b9ec6b) fix: Correct ignore message for "node_modules" subfolders ([#&#8203;17217](https://github.com/eslint/eslint/issues/17217)) (Francesco Trotta)

#### Documentation

-   [`01d7142`](https://github.com/eslint/eslint/commit/01d7142642c87241135699571e8010f5e8fcda4f) docs: Update README (GitHub Actions Bot)
-   [`e5182b7`](https://github.com/eslint/eslint/commit/e5182b723ff82bb3b55c50c06d64626055414b31) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`6ca5b7c`](https://github.com/eslint/eslint/commit/6ca5b7ca3bac9e10c6cfee4cdc78446e94eb7607) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;8](https://github.com/8).42.0 ([#&#8203;17236](https://github.com/eslint/eslint/issues/17236)) (Milos Djermanovic)
-   [`67fc5e7`](https://github.com/eslint/eslint/commit/67fc5e730e4dfc372dea11e15d3f5165bc812491) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (ESLint Jenkins)
-   [`0892412`](https://github.com/eslint/eslint/commit/0892412556b2ba6c3d1b85152dafe47a3f4cba72) refactor: remove `Identifier` listener in no-irregular-whitespace ([#&#8203;17235](https://github.com/eslint/eslint/issues/17235)) (Milos Djermanovic)
-   [`f67d298`](https://github.com/eslint/eslint/commit/f67d2984c3c3f26497842a04d5166707587c1fca) test: Add `FlatESLint` tests with missing config files ([#&#8203;17164](https://github.com/eslint/eslint/issues/17164)) (Milos Djermanovic)
-   [`5b68d51`](https://github.com/eslint/eslint/commit/5b68d51e3e6bd003d6cf74d3434f7165691b4f4d) chore: Fix `fixedsize` attribute in code path analysis DOT debug output ([#&#8203;17202](https://github.com/eslint/eslint/issues/17202)) (Milos Djermanovic)
-   [`37432f2`](https://github.com/eslint/eslint/commit/37432f27dc15817d66cf42377792197dc2aeb8b2) chore: update descriptions in key-spacing tests ([#&#8203;17195](https://github.com/eslint/eslint/issues/17195)) (Milos Djermanovic)

### [`v8.41.0`](https://github.com/eslint/eslint/releases/tag/v8.41.0)

[Compare Source](https://github.com/eslint/eslint/compare/v8.40.0...v8.41.0)

#### Features

-   [`880a431`](https://github.com/eslint/eslint/commit/880a4317b949e575a4a6c5e8baaba1eea7674cc6) feat: change default ignore pattern to `**/node_modules/` in flat config ([#&#8203;17184](https://github.com/eslint/eslint/issues/17184)) (Milos Djermanovic)
-   [`8bf5505`](https://github.com/eslint/eslint/commit/8bf550594fca6d29fab1a3453e701c1a457767e1) feat: expose `shouldUseFlatConfig` ([#&#8203;17169](https://github.com/eslint/eslint/issues/17169)) (Connor Prussin)

#### Bug Fixes

-   [`4f5440d`](https://github.com/eslint/eslint/commit/4f5440db631707b17140c4e5cc7beb223afbd2b9) fix: incorrect warning message for ignored dotfiles ([#&#8203;17196](https://github.com/eslint/eslint/issues/17196)) (Milos Djermanovic)
-   [`94da96c`](https://github.com/eslint/eslint/commit/94da96cbf0fb2bb6694fa2e757eb1b3e74c40db7) fix: unify `LintMessage` type ([#&#8203;17076](https://github.com/eslint/eslint/issues/17076)) (Brandon Mills)
-   [`0c415cd`](https://github.com/eslint/eslint/commit/0c415cda5d76dbe5120ab9f3c4c81320538e35f0) fix: validate `ignorePatterns` constructor option in `FlatESLint` class ([#&#8203;17139](https://github.com/eslint/eslint/issues/17139)) (Milos Djermanovi…
@eslint-github-bot eslint-github-bot bot locked and limited conversation to collaborators Mar 21, 2024
@eslint-github-bot eslint-github-bot bot added the archived due to age This issue has been archived; please open a new issue for any further discussion label Mar 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion archived due to age This issue has been archived; please open a new issue for any further discussion core Relates to ESLint's core APIs and features feature This change adds a new feature to ESLint
Projects
Status: Complete
Development

Successfully merging this pull request may close these issues.

None yet

4 participants