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

refactor: Extract processor logic into ProcessorService #18818

Merged
merged 7 commits into from
Sep 19, 2024

Conversation

nzakas
Copy link
Member

@nzakas nzakas commented Aug 26, 2024

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)

This extracts processor logic into ProcessService:

  • Created ProcessorService
  • Refactored Linter to use ProcessorService
  • Added rawBody to VFile
  • Updated VFile tests

The biggest difference is that ProcessorService takes a VFile and returns an array of VFiles (or strings for legacy compat). This makes it easier to pass VFile instances around without worrying if it's from a processor or not.

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

  • I'm unsure if the parameter order for ProcessorService#postprocessSync() makes sense. I like the idea of always having config as the last parameter, but would like some other opinions.
  • I think we can avoid adding rawBody to VFile if we always pass BOM-less file contents to a processor. See inline comment.

@nzakas nzakas requested a review from a team as a code owner August 26, 2024 20:55
@eslint-github-bot eslint-github-bot bot added the chore This change is not user-facing label Aug 26, 2024
@github-actions github-actions bot added the core Relates to ESLint's core APIs and features label Aug 26, 2024
Copy link

netlify bot commented Aug 26, 2024

Deploy Preview for docs-eslint canceled.

Name Link
🔨 Latest commit b617ad7
🔍 Latest deploy log https://app.netlify.com/sites/docs-eslint/deploys/66eaf99fd8107800097a3b7d

* @param {ConfigData} providedConfig An ESLintConfig instance to configure everything.
* @param {VerifyOptions} [providedOptions] The optional filename of the file being checked.
* @throws {Error} If during rule execution.
* @returns {(LintMessage|SuppressedLintMessage)[]} The results as an array of messages or an empty array if no messages.
*/
_verifyWithoutProcessors(textOrSourceCode, providedConfig, providedOptions) {
#eslintrcVerifyWithoutProcessors(file, providedConfig, providedOptions) {
Copy link
Member Author

Choose a reason for hiding this comment

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

Created this to avoid creating a second VFile for each block.

* @param {FlatConfig} providedConfig An ESLintConfig instance to configure everything.
* @param {VerifyOptions} [providedOptions] The optional filename of the file being checked.
* @throws {Error} If during rule execution.
* @returns {(LintMessage|SuppressedLintMessage)[]} The results as an array of messages or an empty array if no messages.
*/
_verifyWithFlatConfigArrayAndWithoutProcessors(textOrSourceCode, providedConfig, providedOptions) {
#flatVerifyWithoutProcessors(file, providedConfig, providedOptions) {
Copy link
Member Author

Choose a reason for hiding this comment

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

Same here. Wanted to avoid creating two VFiles for the same block.

@@ -104,8 +111,8 @@ class VFile {
this.physicalPath = physicalPath ?? path;
this.bom = hasUnicodeBOM(body);
this.body = stripUnicodeBOM(body);
this.rawBody = this.bom ? body : this.body;
Copy link
Member Author

Choose a reason for hiding this comment

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

Right now, we actually pass the raw file contents to processors, which includes the BOM if present. I added this to make existing tests pass, however, I think it would be better to always strip the BOM before passing to a processor.

This wouldn't be a breaking change because processors must always check for the presence of BOMs right now as they don't know if one will be passed.

Copy link
Member

Choose a reason for hiding this comment

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

I think it's safer to keep passing the raw file contents to processors because preprocess() can return the text as-is, in which case the file will be linted as if there was no processor.

eslint/lib/linter/linter.js

Lines 1592 to 1607 in 156b1c3

// Resolve configuration again if the file content or extension was changed.
if (configForRecursive && (text !== blockText || path.extname(blockName) !== originalExtname)) {
debug("Resolving configuration again because the file content or extension was changed.");
return this._verifyWithFlatConfigArray(
blockText,
configForRecursive,
{ ...options, filename: blockName, physicalFilename }
);
}
// Does lint.
return this._verifyWithFlatConfigArrayAndWithoutProcessors(
blockText,
config,
{ ...options, filename: blockName, physicalFilename }
);

On the other hand, not passing BOM would fix bugs in processors that do not check if the BOM is present, which happens to be the case with @eslint/markdown (autofixes are off-by-one in files with BOM).

@mdjermanovic mdjermanovic added the accepted There is consensus among the team that this change meets the criteria for inclusion label Sep 4, 2024
Copy link
Member

Choose a reason for hiding this comment

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

This file was probably accidentally left here after testing #18742 (comment)

Comment on lines 1596 to 1607
blockText,
block.body,
Copy link
Member

Choose a reason for hiding this comment

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

Related to #18818 (comment)

Before this change, with this config file:

// eslint.config.js
module.exports = [{
    files: ["**/*.myjs"],
    processor: {
        preprocess(text, filename) {
            return [{ text, filename }];
        },
        postprocess(messages) {
            return [].concat(...messages);
        },
        supportsAutofix: true
    },
    rules: {
        "unicode-bom": ["error", "never"]
    }
}];

and this test file (has BOM):

// test.myjs

var x = "This file has BOM";

Running eslint test.myjs would report that the file has BOM, and running eslint test.myjs --fix would remove it.

After this change, eslint test.myjs doesn't report that the file has BOM.

Copy link
Member Author

Choose a reason for hiding this comment

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

Oops yeah, that would have to be rawBody to make this work.

@nzakas
Copy link
Member Author

nzakas commented Sep 4, 2024

It seems like processors not checking for BOMs is a likely source of bugs, so I'm more in favor of passing BOM-less text to processors now. What do you think?

@nzakas
Copy link
Member Author

nzakas commented Sep 4, 2024

I've updated the PR so that BOMs are not passed to processors any more. If we decide not to move forward with that, I can revert that commit, but I do think this is the right choice based on previous discussion.

@mdjermanovic
Copy link
Member

I've updated the PR so that BOMs are not passed to processors any more.

Makes sense to me. It seems unlikely that a processor would particularly want to know if the original file has BOM.

However, I think we should ensure that, when the processor returns a block with the entire content that was passed to it (in order to lint the file as a whole + its code blocks), the original file with BOM is linted. The example in #18818 (comment) still doesn't work with the latest version of this branch.

@nzakas
Copy link
Member Author

nzakas commented Sep 5, 2024

However, I think we should ensure that, when the processor returns a block with the entire content that was passed to it (in order to lint the file as a whole + its code blocks), the original file with BOM is linted. The example in #18818 (comment) still doesn't work with the latest version of this branch.

I think the only way to achieve this would be to add a third parameter to preprocess that indicates if there's a BOM. That way, processors could decide whether or not they wanted to pass the BOM along in their code blocks. That preserves the benefits of stripping the BOM from the text so processors don't forget to check while allowing processors to still opt-in to checking for it if they so desire.

(I think in an ideal world, processors would accept and return VFile objects, which would carry that additional information. But this would mean a v2 processors API just to support this use case, and I'm not sure it's worth that much effort.)

@nzakas nzakas added the tsc agenda This issue will be discussed by ESLint's TSC at the next meeting label Sep 5, 2024
@nzakas
Copy link
Member Author

nzakas commented Sep 6, 2024

Updated to preserve current behavior.

Instead of adding rawBody to VFile (which always felt a little gross), I'm just recalculating the correct body when it's necessary.

@nzakas
Copy link
Member Author

nzakas commented Sep 6, 2024

The failure is just the pull request labeler. No idea what's going on with that.

@sam3k
Copy link
Contributor

sam3k commented Sep 8, 2024

Per 2024-09-05 TSC meeting, we will preserve the current behavior and @nzakas will open an issue to discuss changing it in v10

@mdjermanovic mdjermanovic removed the tsc agenda This issue will be discussed by ESLint's TSC at the next meeting label Sep 11, 2024
@mdjermanovic
Copy link
Member

Sorry for the delay, I'll review this soon.

debug("This code block was skipped.");
return [];
}

// Resolve configuration again if the file content or extension was changed.
if (configForRecursive && (text !== blockText || path.extname(blockName) !== originalExtname)) {
if (configForRecursive && (text !== block.body || path.extname(block.path) !== originalExtname)) {
Copy link
Member

Choose a reason for hiding this comment

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

The example from #18818 (comment) still doesn't work, because text !== block.body is true when file has BOM so it enters this code path and lints block.body which doesn't include BOM.

@nzakas
Copy link
Member Author

nzakas commented Sep 16, 2024

I went back to the original implementation that preserve the existing BOM behavior and added a test for Linter that validates the BOM is being passed.

lib/linter/vfile.js Outdated Show resolved Hide resolved
lib/linter/linter.js Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
lib/linter/linter.js Outdated Show resolved Hide resolved
nzakas and others added 2 commits September 18, 2024 10:33
Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>
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 e4e02cc into main Sep 19, 2024
23 checks passed
@mdjermanovic mdjermanovic deleted the processor-service branch September 19, 2024 08:37
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 23, 2024
##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 23, 2024
##### [v9.11.1](eslint/eslint@v9.11.0...69e9459)

##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 24, 2024
##### [v9.11.1](eslint/eslint@v9.11.0...69e9459)

##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 24, 2024
##### [v9.11.1](eslint/eslint@v9.11.0...69e9459)

##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 24, 2024
##### [v9.11.1](eslint/eslint@v9.11.0...69e9459)

##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Sep 24, 2024
##### [v9.11.1](eslint/eslint@v9.11.0...69e9459)

##### [v9.11.0](https://github.com/eslint/eslint/releases/tag/v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).11.0 ([#18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#18869](eslint/eslint#18869)) (Francesco Trotta)
##### [v9.10.0](eslint/eslint@v9.9.1...6448f32)

##### [v9.9.1](eslint/eslint@v9.9.0...8781e6f)

##### [v9.9.0](https://github.com/eslint/eslint/releases/tag/v9.9.0)

#### Features

-   [`41d0206`](eslint/eslint@41d0206) feat: Add support for TS config files ([#18134](eslint/eslint#18134)) (Arya Emami)
-   [`3a4eaf9`](eslint/eslint@3a4eaf9) feat: add suggestion to `require-await` to remove `async` keyword ([#18716](eslint/eslint#18716)) (Dave)

#### Documentation

-   [`9fe068c`](eslint/eslint@9fe068c) docs: how to author plugins with configs that extend other configs ([#18753](eslint/eslint#18753)) (Alec Gibson)
-   [`48117b2`](eslint/eslint@48117b2) docs: add version support page in the side navbar ([#18738](eslint/eslint#18738)) (Amaresh  S M)
-   [`fec2951`](eslint/eslint@fec2951) docs: add version support page to the dropdown ([#18730](eslint/eslint#18730)) (Amaresh  S M)
-   [`38a0661`](eslint/eslint@38a0661) docs: Fix typo ([#18735](eslint/eslint#18735)) (Zaina Al Habash)
-   [`3c32a9e`](eslint/eslint@3c32a9e) docs: Update yarn command for creating ESLint config ([#18739](eslint/eslint#18739)) (Temitope Ogunleye)
-   [`f9ac978`](eslint/eslint@f9ac978) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`461b2c3`](eslint/eslint@461b2c3) chore: upgrade to `@eslint/js@9.9.0` ([#18765](eslint/eslint#18765)) (Francesco Trotta)
-   [`59dba1b`](eslint/eslint@59dba1b) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`fea8563`](eslint/eslint@fea8563) chore: update dependency [@eslint/core](https://github.com/eslint/core) to ^0.3.0 ([#18724](eslint/eslint#18724)) (renovate\[bot])
-   [`aac191e`](eslint/eslint@aac191e) chore: update dependency [@eslint/json](https://github.com/eslint/json) to ^0.3.0 ([#18760](eslint/eslint#18760)) (renovate\[bot])
-   [`b97fa05`](eslint/eslint@b97fa05) chore: update wdio dependencies for more stable tests ([#18759](eslint/eslint#18759)) (Christian Bromann)
##### [v9.8.0](eslint/eslint@v9.7.0...63881dc)

##### [v9.7.0](https://github.com/eslint/eslint/releases/tag/v9.7.0)

#### Features

-   [`7bd9839`](eslint/eslint@7bd9839) feat: add support for es2025 duplicate named capturing groups ([#18630](eslint/eslint#18630)) (Yosuke Ota)
-   [`1381394`](eslint/eslint@1381394) feat: add `regex` option in `no-restricted-imports` ([#18622](eslint/eslint#18622)) (Nitin Kumar)

#### Bug Fixes

-   [`14e9f81`](eslint/eslint@14e9f81) fix: destructuring in catch clause in `no-unused-vars` ([#18636](eslint/eslint#18636)) (Francesco Trotta)

#### Documentation

-   [`9f416db`](eslint/eslint@9f416db) docs: Add Powered by Algolia label to the search. ([#18633](eslint/eslint#18633)) (Amaresh  S M)
-   [`c8d26cb`](eslint/eslint@c8d26cb) docs: Open JS Foundation -> OpenJS Foundation ([#18649](eslint/eslint#18649)) (Milos Djermanovic)
-   [`6e79ac7`](eslint/eslint@6e79ac7) docs: `loadESLint` does not support option `cwd` ([#18641](eslint/eslint#18641)) (Francesco Trotta)

#### Chores

-   [`793b718`](eslint/eslint@793b718) chore: upgrade [@eslint/js](https://github.com/eslint/js)[@9](https://github.com/9).7.0 ([#18680](eslint/eslint#18680)) (Francesco Trotta)
-   [`7ed6f9a`](eslint/eslint@7ed6f9a) chore: package.json update for [@eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`7bcda76`](eslint/eslint@7bcda76) refactor: Add type references ([#18652](eslint/eslint#18652)) (Nicholas C. Zakas)
-   [`51bf57c`](eslint/eslint@51bf57c) chore: add tech sponsors through actions ([#18624](eslint/eslint#18624)) (Strek)
-   [`6320732`](eslint/eslint@6320732) refactor: don't use `parent` property in `NodeEventGenerator` ([#18653](eslint/eslint#18653)) (Milos Djermanovic)
-   [`9e6d640`](eslint/eslint@9e6d640) refactor: move "Parsing error" prefix adding to Linter ([#18650](eslint/eslint#18650)) (Milos Djermanovic)
##### [v9.6.0](eslint/eslint@v9.5.0...473d1bb)

##### [v9.5.0](eslint/eslint@v9.4.0...5352357)

##### [v9.4.0](eslint/eslint@v9.3.0...a5f7e58)

##### [v9.3.0](eslint/eslint@v9.2.0...41a871c)

##### [v9.2.0](eslint/eslint@v9.1.1...271e7ab)

##### [v9.1.1](eslint/eslint@v9.1.0...b4d2512)

##### [v9.1.0](eslint/eslint@v9.0.0...b78d831)

##### [v9.0.0](eslint/eslint@v8.57.0...e0cbc50)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion chore This change is not user-facing core Relates to ESLint's core APIs and features
Projects
Status: Complete
Development

Successfully merging this pull request may close these issues.

3 participants