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
Conversation
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.
To Fix: You can fix this problem by running Read more about contributing to ESLint here |
✅ Deploy Preview for docs-eslint canceled.
|
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.
To Fix: You can fix this problem by running Read more about contributing to ESLint here |
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.
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 |
Overall, I don't understand the intended usage of the new SourceCode methods in regard to
However, |
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.
No.
Good point. |
Just a note that I am still able to call disallowed 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); |
@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. |
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. |
Notes on additional changes:
|
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. |
f521e8b
to
0161967
Compare
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. |
It seems to significantly impact performance.
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 |
Okay, The reason I chose a proxy is because it's the only way I could think of to ensure that As I mentioned, we can't really implement this blocking inside of We could just pass the 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. |
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 Do you have any other ideas? |
Symbols sound good to me. I think that would be a good hint to rule developers that these methods should not be used. |
Another option (which could be used with or without symbols) is to flag these methods in |
Sounds good to me. |
I'm going to try to leave the methods as strings and see how far I can get with |
I was able to get this working in |
Updated and added missing tests to verify the changes. |
Co-authored-by: Milos Djermanovic <[email protected]>
Co-authored-by: Milos Djermanovic <[email protected]>
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
// now that we've gathered all of the directive-defined globals, let's add them | ||
|
||
return { | ||
ok: problems.length === 0, |
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.
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.
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.
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.
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.
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.
lib/source-code/source-code.js
Outdated
varsCache.set("inlineGlobals", inlineGlobals); | ||
varsCache.set("exportedVariables", exportedVariables); | ||
|
||
// now that we've gathered all of the directive-defined globals, let's add them |
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.
This comment doesn't seem to apply here?
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.
Good catch!
lib/source-code/source-code.js
Outdated
// don't allow modification of this object | ||
Object.freeze(this); | ||
Object.freeze(this.lines); |
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.
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.
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 ultimately we want freezing to happen in finalize()
, but I agree that while we have eslintrc in the mix we should keep things consistent.
Co-authored-by: Milos Djermanovic <[email protected]>
Co-authored-by: Milos Djermanovic <[email protected]>
Co-authored-by: Milos Djermanovic <[email protected]>
Co-authored-by: Milos Djermanovic <[email protected]>
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.
LGTM, thanks!
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 ([#​17590](eslint/eslint#17590)) (Tanuj Kanti) - [`f9082ff`](eslint/eslint@f9082ff) feat: flat-rule-tester make sure default config always matches ([#​17585](eslint/eslint#17585)) (fnx) - [`83914ad`](eslint/eslint@83914ad) feat: Implement SourceCode#applyInlineConfig() ([#​17351](eslint/eslint#17351)) (Nicholas C. Zakas) - [`22a5582`](eslint/eslint@22a5582) feat: add rule `no-object-constructor`, deprecate `no-new-object` ([#​17576](eslint/eslint#17576)) (Francesco Trotta) - [`85a3d9e`](eslint/eslint@85a3d9e) feat: allowVoid option in array-callback-return ([#​17564](eslint/eslint#17564)) (Tanuj Kanti) #### Bug Fixes - [`cc4d26b`](eslint/eslint@cc4d26b) fix: Ensure deprecated context.parserServices warns ([#​17593](eslint/eslint#17593)) (Nicholas C. Zakas) - [`1ea4cfb`](eslint/eslint@1ea4cfb) fix: Ensure all RuleTester tests all deprecated context methods ([#​17587](eslint/eslint#17587)) (Nicholas C. Zakas) - [`aa1b657`](eslint/eslint@aa1b657) fix: wrong suggestion and message in `no-misleading-character-class` ([#​17571](eslint/eslint#17571)) (Yosuke Ota) #### Documentation - [`1800537`](eslint/eslint@1800537) docs: Fix and standardize JSX code examples ([#​17591](eslint/eslint#17591)) (Francesco Trotta) - [`48a44a7`](eslint/eslint@48a44a7) docs: Add correct/incorrect tags to `prefer-arrow-callback` ([#​17589](eslint/eslint#17589)) (Francesco Trotta) - [`20893d4`](eslint/eslint@20893d4) docs: fix incorrect tag's place ([#​17575](eslint/eslint#17575)) (Tanuj Kanti) - [`bd7a71f`](eslint/eslint@bd7a71f) docs: Update README (GitHub Actions Bot) #### Chores - [`f8a8a2d`](eslint/eslint@f8a8a2d) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).50.0 ([#​17599](eslint/eslint#17599)) (Milos Djermanovic) - [`38ada6d`](eslint/eslint@38ada6d) chore: package.json update for [@​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]>
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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).56.0 ([#​17864](https://github.com/eslint/eslint/issues/17864)) (Milos Djermanovic) - [`60a531a`](https://github.com/eslint/eslint/commit/60a531a9c0811ddf718e26b9136e133f580b6c36) chore: package.json update for [@​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 ([#​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 ([#​17845](https://github.com/eslint/eslint/issues/17845)) (Josh Goldberg ✨) - [`70a686b`](https://github.com/eslint/eslint/commit/70a686b3c1feac5eca98bbff9bd67175f550d5db) chore: Convert rule tests to FlatRuleTester ([#​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 ([#​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 ([#​17838](https://github.com/eslint/eslint/issues/17838)) (唯然) - [`4d7c3ce`](https://github.com/eslint/eslint/commit/4d7c3ce246e6b499f472342ef59496a47cc033d6) chore: update eslint-plugin-n v16.4.0 ([#​17836](https://github.com/eslint/eslint/issues/17836)) (唯然) - [`fd0c60c`](https://github.com/eslint/eslint/commit/fd0c60c3be1f213e5a6d69d8a3248e963619e155) ci: unpin Node.js 21.2.0 ([#​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 ([#​17721](https://github.com/eslint/eslint/issues/17721)) (Tanuj Kanti) #### Documentation - [`83ece2a`](https://github.com/eslint/eslint/commit/83ece2afc2dc6c49efe82678663fe4cba590c0e5) docs: fix typo `--rules` -> `--rule` ([#​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 ([#​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 ([#​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` ([#​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 ([#​17778](https://github.com/eslint/eslint/issues/17778)) (Etienne) #### Chores - [`eb8950c`](https://github.com/eslint/eslint/commit/eb8950c3b811c9163b9aae23af8b6266ad98b295) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).55.0 ([#​17811](https://github.com/eslint/eslint/issues/17811)) (Milos Djermanovic) - [`93df384`](https://github.com/eslint/eslint/commit/93df3849a7a25ebe0502000bf0bfb80a6613a5ae) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`fe4b954`](https://github.com/eslint/eslint/commit/fe4b9545a83e9aca7ba4bb77bc9c868d57de777f) chore: upgrade [@​eslint/eslintrc](https://github.com/eslint/eslintrc)[@​2](https://github.com/2).1.4 ([#​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 ([#​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 ([#​17797](https://github.com/eslint/eslint/issues/17797)) (Milos Djermanovic) - [`de165c1`](https://github.com/eslint/eslint/commit/de165c108203c6703516ac651f5b4cac5b241804) chore: remove unused config-extends fixtures ([#​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 ([#​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 ([#​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 ([#​17755](https://github.com/eslint/eslint/issues/17755)) (Angelo Annunziata) - [`1452dc9`](https://github.com/eslint/eslint/commit/1452dc9f12c45c05d7c569f737221f0d988ecef1) feat: Add suggestions to no-console ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17712](https://github.com/eslint/eslint/issues/17712)) (Francesco Trotta) - [`eb2279e`](https://github.com/eslint/eslint/commit/eb2279e5148cee8fdea7dae614f4f8af7a2d06c3) docs: display info about deprecated rules ([#​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 ([#​17722](https://github.com/eslint/eslint/issues/17722)) (Filip Tammergård) #### Chores - [`d644de9`](https://github.com/eslint/eslint/commit/d644de9a4b593b565617303a095bc9aa69e7b768) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).54.0 ([#​17773](https://github.com/eslint/eslint/issues/17773)) (Milos Djermanovic) - [`1e6e314`](https://github.com/eslint/eslint/commit/1e6e31415cc429a3a9fc64b2ec03df0e0ec0c91b) chore: package.json update for [@​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17740](https://github.com/eslint/eslint/issues/17740)) (renovate\[bot]) - [`ba8ca7e`](https://github.com/eslint/eslint/commit/ba8ca7e3debcba68ee7015b9221cf5acd7870206) chore: add .github/renovate.json5 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17653](https://github.com/eslint/eslint/issues/17653)) (Francesco Trotta) - [`3aec1c5`](https://github.com/eslint/eslint/commit/3aec1c55ba2c6d2833e1c0afe0a58f0cc6bbc0a4) docs: explained rule fixers and suggestions ([#​17657](https://github.com/eslint/eslint/issues/17657)) (Josh Goldberg ✨) #### Chores - [`ba4d4d5`](https://github.com/eslint/eslint/commit/ba4d4d567a82554250dd8c7933322824e6a73944) chore: remove metascraper ([#​17707](https://github.com/eslint/eslint/issues/17707)) (Milos Djermanovic) - [`0d07338`](https://github.com/eslint/eslint/commit/0d0733882944b4849d71a40723c251213698cef9) chore: Update dependencies ([#​17706](https://github.com/eslint/eslint/issues/17706)) (Milos Djermanovic) - [`93256a3`](https://github.com/eslint/eslint/commit/93256a32e312f3f4e5c532762df71bdc06bded20) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`485ec7d`](https://github.com/eslint/eslint/commit/485ec7d08ed2040c292f52bf9b9152f6c8ef4809) test: fix ESLint tests for caching ([#​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 ([#​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 ([#​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 ([#​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 ([#​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` ([#​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. ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17643](https://github.com/eslint/eslint/issues/17643)) (Zhongyuan Zhou) - [`9fafe45`](https://github.com/eslint/eslint/commit/9fafe450c31ed9b6bdd9dcd6c115255943b8c1c2) docs: upgrade to 11ty 2.0 ([#​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 ([#​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 ([#​17630](https://github.com/eslint/eslint/issues/17630)) (Francesco Trotta) - [`1000187`](https://github.com/eslint/eslint/commit/1000187e00949332babcee4d37d46c96a6a554a8) docs: Fix examples in `unicode-bom` ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).52.0 ([#​17671](https://github.com/eslint/eslint/issues/17671)) (Milos Djermanovic) - [`d63d4fe`](https://github.com/eslint/eslint/commit/d63d4fe0942e6747ab60e758aa36076f43041a30) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`f30cefe`](https://github.com/eslint/eslint/commit/f30cefee6bda2789ede18e1664b84c2638ea1bb5) test: fix FlatESLint tests for caching ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ?? ([#​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 ([#​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 ([#​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 ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).51.0 ([#​17624](https://github.com/eslint/eslint/issues/17624)) (Milos Djermanovic) - [`f8c7403`](https://github.com/eslint/eslint/commit/f8c7403255c11e99c402860aef3c0179f2b16628) chore: package.json update for [@​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 ([#​17616](https://github.com/eslint/eslint/issues/17616)) (Milos Djermanovic) - [`7b77bcc`](https://github.com/eslint/eslint/commit/7b77bccbb51bd36b2d20fea61bc782545c4029b3) chore: Refactor CodePathState ([#​17510](https://github.com/eslint/eslint/issues/17510)) (Nicholas C. Zakas) - [`bc77c9a`](https://github.com/eslint/eslint/commit/bc77c9af12539f350ef19e30611a153a5b869c6b) chore: Document and refactor ForkContext ([#​17566](https://github.com/eslint/eslint/issues/17566)) (Nicholas C. Zakas) - [`24e1f14`](https://github.com/eslint/eslint/commit/24e1f140ec68659e55c1ace0d7500addb135a2b4) chore: Refactor and document CodePath ([#​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 ([#​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 ([#​17585](https://github.com/eslint/eslint/issues/17585)) (fnx) - [`83914ad`](https://github.com/eslint/eslint/commit/83914adbfd5fce7d11b33d095ba6d6a39be0dbbc) feat: Implement SourceCode#applyInlineConfig() ([#​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` ([#​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 ([#​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 ([#​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 ([#​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` ([#​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 ([#​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` ([#​17589](https://github.com/eslint/eslint/issues/17589)) (Francesco Trotta) - [`20893d4`](https://github.com/eslint/eslint/commit/20893d48b9012f2b61bbbfeac8bee70d68d90e5e) docs: fix incorrect tag's place ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).50.0 ([#​17599](https://github.com/eslint/eslint/issues/17599)) (Milos Djermanovic) - [`38ada6d`](https://github.com/eslint/eslint/commit/38ada6df8f4a0313b7d0739b28f0af6b4897b8ce) chore: package.json update for [@​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 ([#​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 ([#​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` ([#​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 ([#​17529](https://github.com/eslint/eslint/issues/17529)) (Nitin Kumar) - [`032c4b1`](https://github.com/eslint/eslint/commit/032c4b1476a7b8cfd917a66772d2221950ea87eb) docs: add typescript template ([#​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` ([#​17550](https://github.com/eslint/eslint/issues/17550)) (Milos Djermanovic) - [`cac45d0`](https://github.com/eslint/eslint/commit/cac45d04b890b0700dd8908927300608adad05fe) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).49.0 ([#​17549](https://github.com/eslint/eslint/issues/17549)) (Milos Djermanovic) - [`cd39508`](https://github.com/eslint/eslint/commit/cd395082bffcb4b68efa09226d7c682cef56179e) chore: package.json update for [@​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 ([#​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 ([#​17516](https://github.com/eslint/eslint/issues/17516)) (Milos Djermanovic) - [`926a286`](https://github.com/eslint/eslint/commit/926a28684282aeec37680bbc52a66973b8055f54) test: replace Karma with Webdriver.IO ([#​17126](https://github.com/eslint/eslint/issues/17126)) (Christian Bromann) - [`f591d2c`](https://github.com/eslint/eslint/commit/f591d2c88bf15af72e3a207b34fa872b4b90464b) chore: Upgrade config-array ([#​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` ([#​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 ([#​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` ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17465](https://github.com/eslint/eslint/issues/17465)) (Nitin Kumar) #### Chores - [`8dd3cec`](https://github.com/eslint/eslint/commit/8dd3cec90c97ed97d243a83b87ad4ea9e6b4781a) chore: upgrade [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).48.0 ([#​17501](https://github.com/eslint/eslint/issues/17501)) (Milos Djermanovic) - [`6d0496e`](https://github.com/eslint/eslint/commit/6d0496e9476fb2210fba0a3d541df8c052ecf73a) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`9d4216d`](https://github.com/eslint/eslint/commit/9d4216d638d39844decffac33ee3d5a47413c80a) chore: Refactor and document CodePathSegment ([#​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` ([#​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` ([#​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 ([#​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 [#​17402](https://github.com/eslint/eslint/issues/17402) ([#​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" ([#​17435](https://github.com/eslint/eslint/issues/17435)) (Cheol-Won) - [`d743ed3`](https://github.com/eslint/eslint/commit/d743ed3c06c62a639da0389ad27907b324ea1715) docs: add metadata for parser/processor ([#​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 ([#​17432](https://github.com/eslint/eslint/issues/17432)) (Nitin Kumar) #### Chores - [`bf69aa6`](https://github.com/eslint/eslint/commit/bf69aa6408f5403a88d8c9b71b0e58232b1ea833) chore: Update dependencies ([#​17456](https://github.com/eslint/eslint/issues/17456)) (Nicholas C. Zakas) - [`0e45760`](https://github.com/eslint/eslint/commit/0e4576012ab938b880e6f27641bff55fb4313d20) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`757bfe1`](https://github.com/eslint/eslint/commit/757bfe1c35b5ddab7042d388f8d21e834875fff5) chore: Remove add-to-triage ([#​17450](https://github.com/eslint/eslint/issues/17450)) (Nicholas C. Zakas) - [`b066640`](https://github.com/eslint/eslint/commit/b066640b7040ec30f740dcc803511244fe19473b) chore: standardize npm script names ([#​17431](https://github.com/eslint/eslint/issues/17431)) (Nitin Kumar) - [`6b2410f`](https://github.com/eslint/eslint/commit/6b2410f911dd2e3d915c879041c6e257d41a2f4e) chore: Update add-to-triage.yml ([#​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 ([#​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 [email protected] ([#​17323](https://github.com/eslint/eslint/issues/17323)) (Ziyad El Abid) - [`cf88439`](https://github.com/eslint/eslint/commit/cf884390ad8071d88eae05df9321100f1770363d) chore: upgrade [email protected] ([#​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)) (唯然) ### [`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` ([#​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 ([#​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 ([#​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 ([#​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 ([#​17022](https://github.com/eslint/eslint/issues/17022)) (Francesco Trotta) #### Documentation - [`8b855ea`](https://github.com/eslint/eslint/commit/8b855ea058992d5446d1d6dc6394ee683c3200a0) docs: resubmit pr17061 doc changes ([#​17292](https://github.com/eslint/eslint/issues/17292)) (唯然) - [`372722e`](https://github.com/eslint/eslint/commit/372722eac32ca9e3f31cf0d0bc10317c6f153369) docs: resubmit pr17012 doc changes ([#​17293](https://github.com/eslint/eslint/issues/17293)) (唯然) - [`67e7af3`](https://github.com/eslint/eslint/commit/67e7af3fdbdb4648b747dfd669be4decfe24086a) docs: resubmit custom-rules doc changes ([#​17294](https://github.com/eslint/eslint/issues/17294)) (唯然) - [`9e3d77c`](https://github.com/eslint/eslint/commit/9e3d77cba65d0e38e07996e57961fb04f30d9303) docs: Resubmit Fix formatting in Custom Rules docs ([#​17281](https://github.com/eslint/eslint/issues/17281)) (Milos Djermanovic) - [`503647a`](https://github.com/eslint/eslint/commit/503647a0b94ca8c776d7e7e8c54c8b1d32904467) docs: Resubmit markVariableAsUsed docs ([#​17280](https://github.com/eslint/eslint/issues/17280)) (Nicholas C. Zakas) - [`e0cf0d8`](https://github.com/eslint/eslint/commit/e0cf0d86d985ed2b2f901dd9aab5ccd2fff062ad) docs: Custom rule & plugin tutorial ([#​17024](https://github.com/eslint/eslint/issues/17024)) (Ben Perlmutter) - [`8e51ea9`](https://github.com/eslint/eslint/commit/8e51ea943c2fcd05bd8917cfa89e36b91209c7cd) docs: resubmit `no-new` rule documentation ([#​17264](https://github.com/eslint/eslint/issues/17264)) (Nitin Kumar) - [`1b217f8`](https://github.com/eslint/eslint/commit/1b217f8de15961fd3c80389621080132f517a0fb) docs: resubmit `Custom Processors` documentation ([#​17265](https://github.com/eslint/eslint/issues/17265)) (Nitin Kumar) - [`428fc76`](https://github.com/eslint/eslint/commit/428fc76806dea1ac82484d628261a5385f928e6a) docs: resubmit `Create Plugins` documentation ([#​17268](https://github.com/eslint/eslint/issues/17268)) (Nitin Kumar) - [`bdca88c`](https://github.com/eslint/eslint/commit/bdca88cf4f8b7888cb72197bfe9c1d90b490a0dd) docs: resubmit `Configuration Files` documentation ([#​17267](https://github.com/eslint/eslint/issues/17267)) (Nitin Kumar) - [`f5c01f2`](https://github.com/eslint/eslint/commit/f5c01f281ad288b1a0ebddbf579230ae11587c6c) docs: resubmit `Manage Issues` documentation ([#​17266](https://github.com/eslint/eslint/issues/17266)) (Nitin Kumar) - [`b199295`](https://github.com/eslint/eslint/commit/b1992954591a3f4d8417013f52739b5fef4e0cd7) docs: Resubmit custom rules update docs ([#​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 ([#​17263](https://github.com/eslint/eslint/issues/17263)) (Nitin Kumar) - [`cb2560f`](https://github.com/eslint/eslint/commit/cb2560f7a393e74b761faa9adad938fb1deb947d) docs: Resubmit getScope/getDeclaredVariables docs ([#​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 ([#​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 ([#​17258](https://github.com/eslint/eslint/issues/17258)) (Milos Djermanovic) - [`3912f3a`](https://github.com/eslint/eslint/commit/3912f3a225c12bfb5ce9b7ba26c2b5301e6275bd) docs: Improve `ignores` documentation ([#​17239](https://github.com/eslint/eslint/issues/17239)) (Francesco Trotta) - [`35e11d3`](https://github.com/eslint/eslint/commit/35e11d3248e00b711fd652836edc900f22af0ebd) docs: fix typos and missing info ([#​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 ([#​17051](https://github.com/eslint/eslint/issues/17051)) ([#​17255](https://github.com/eslint/eslint/issues/17255)) (Francesco Trotta) - [`788d836`](https://github.com/eslint/eslint/commit/788d83629a3790a7db6f52dcf0b4bddf51c6d063) docs: add references to MIT License ([#​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 ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).43.0 ([#​17295](https://github.com/eslint/eslint/issues/17295)) (Milos Djermanovic) - [`62bf759`](https://github.com/eslint/eslint/commit/62bf759124811b013ad7906c2536deb8b39c31a8) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (ESLint Jenkins) - [`e0a2448`](https://github.com/eslint/eslint/commit/e0a2448e0c0ef354e69998858846630a3fce8ebe) chore: docs package.license ISC => MIT ([#​17254](https://github.com/eslint/eslint/issues/17254)) (唯然) - [`6a0196c`](https://github.com/eslint/eslint/commit/6a0196c51310630a0ff96a1e8d7f257c2c7adda9) chore: use eslint-plugin-eslint-plugin flat configs ([#​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 ([#​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 ([#​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 ([#​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 [@​eslint/js](https://github.com/eslint/js)[@​8](https://github.com/8).42.0 ([#​17236](https://github.com/eslint/eslint/issues/17236)) (Milos Djermanovic) - [`67fc5e7`](https://github.com/eslint/eslint/commit/67fc5e730e4dfc372dea11e15d3f5165bc812491) chore: package.json update for [@​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 ([#​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 ([#​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 ([#​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 ([#​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 ([#​17184](https://github.com/eslint/eslint/issues/17184)) (Milos Djermanovic) - [`8bf5505`](https://github.com/eslint/eslint/commit/8bf550594fca6d29fab1a3453e701c1a457767e1) feat: expose `shouldUseFlatConfig` ([#​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 ([#​17196](https://github.com/eslint/eslint/issues/17196)) (Milos Djermanovic) - [`94da96c`](https://github.com/eslint/eslint/commit/94da96cbf0fb2bb6694fa2e757eb1b3e74c40db7) fix: unify `LintMessage` type ([#​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 ([#​17139](https://github.com/eslint/eslint/issues/17139)) (Milos Djermanovi…
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 ofSourceCode
by adding or modifying globals, which the core won't know about in a language-neutral future.So, these changes amount to:
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.SourceCode#applyLanguageOptions()
method - ESLint core calls this to pass in the calculated language options. This allowsSourceCode
to update itself as needed.SourceCode#applyInlineConfig()
method - ESLint core calls this soSourceCode
will further update its state based on the inline config comments. In this case, it involves tracking down the global and exported definitions.SourceCode#finalize()
method - ESLint core calls this soSourceCode
knows the core will not be passing in any further information before linting begins.SourceCode
, I'm not allowing them to be called within rules. Instead of passingSourceCode
directly, the core now creates a proxy that disallows calling any of those methods. The proxy is passed through to rules rather thanSourceCode
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 freezeSourceCode
anymore?