Skip to content

Conversation

@ryo-manba
Copy link
Member

@ryo-manba ryo-manba commented May 5, 2025

Which issue, if any, is this issue related to?

Closes #8173

Is there anything in the PR that needs further explanation?

Adds bulk suppressions to Stylelint, based on ESLint’s feature.

  • New CLI flags:--suppress, --suppress=<rule>, --suppress-location
  • CLI integration and tests
  • Docs updates: brief “Suppressing Violations” section in cli.md and full guide in user-guide/suppressions.md

Reference:

@changeset-bot
Copy link

changeset-bot bot commented May 5, 2025

🦋 Changeset detected

Latest commit: e78bf6b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
stylelint Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Contributor

github-actions bot commented May 5, 2025

This PR is packaged and the instant preview is available (e78bf6b). View the demo website.

Install it locally:

npm i -D https://pkg.pr.new/stylelint@e78bf6b

@ryo-manba ryo-manba marked this pull request as ready for review May 6, 2025 17:16
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for bulk suppressions to Stylelint by introducing new CLI flags (such as --suppress-all, --suppress-rule, --suppressions-location, and --prune-suppressions), integrating them into the core CLI, and updating related documentation and tests.

  • Implements the suppressions service in both ESM and CJS formats.
  • Updates the CLI to handle suppression flags along with proper error reporting for conflicting or missing options.
  • Enhances the documentation and tests to reflect the new bulk suppressions feature.

Reviewed Changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
lib/utils/suppressionsService.{mjs,cjs} Introduces suppression service logic; counts violations and updates suppression file.
lib/standalone.{mjs,cjs} Integrates suppressions handling into the standalone linting command.
lib/cli.mjs Updates CLI flags to support bulk suppressions and defines error conditions.
docs/user-guide/suppressions.md Adds new documentation covering bulk suppressions usage and options.
docs/user-guide/cli.md Updates CLI documentation with new suppression flags.
Other test fixture and utility files Include required test cases and utility updates supporting the new feature.

@Mouvedia
Copy link
Member

@ryo-manba thanks for the PR.

I did a first pass on some files; Ill do the rest eventually.
Nothing major or blocking, it's looking good.

@ryo-manba ryo-manba requested a review from Mouvedia May 16, 2025 12:37
ybiquitous

This comment was marked as resolved.

ybiquitous

This comment was marked as resolved.

@Mouvedia

This comment was marked as resolved.

@ryo-manba

This comment was marked as resolved.

@ybiquitous

This comment was marked as resolved.

ryo-manba and others added 5 commits September 9, 2025 00:45
Copy link
Member

@ybiquitous ybiquitous left a comment

Choose a reason for hiding this comment

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

I've left a few nitpicks, but LGTM. 👍🏼

Let's wait for one more approval to merge it!

ryo-manba and others added 3 commits September 9, 2025 22:49
Co-authored-by: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
Copy link
Member

@jeddy3 jeddy3 left a comment

Choose a reason for hiding this comment

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

Thanks again for all the hard work creating and reviewing this PR.

I set aside time to revise the documentation for this feature and read up on ESLint's original RFC for this feature. We do a few things differently to ESLint, and I've made some suggestions and changes that reflect them, including how we:

  • standardised on "problem" rather than "violation" (for example)
  • have a severity secondary option, whereas ESLint use "warn" and "error" for their primary option

I've pushed a commit to update the code to use "problem".

To help us maintain the docs and to keep things consistent for our users, we typically put the documentation for each option or configuration property in a single place (e.g. options.md or configure.md) and then duplicate the key part in cli.md and the CLI help, rather than spreading the docs out or wording things differently. In my suggestion, I've pulled and combined the wording from cli.md and the CLI help and then consolidated them in suppression.md.

I've also tried to make the language consistent, e.g., standardising on "suppress", rather than using "mute" interchangeably.

How much effort is needed to add this feature to the Node.js API, and do we think the feature should be available to the Node.js API and live under "Options"?

In preparation for this possibility, I've condensed the docs in my suggestion so that they more closely match the conciseness and style of the other options.

@@ -0,0 +1,80 @@
# Bulk suppressions
Copy link
Member

@jeddy3 jeddy3 Sep 15, 2025

Choose a reason for hiding this comment

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

# Bulk suppressions

> [!WARNING]
> This feature is **experimental**, and might change significantly.

Turning on a rule with the severity of `error` can be difficult when an established codebase already contains many problems that can't be auto-fixed. You can suppress those legacy problems so the rule is enforced only for new code, and then clear the backlog at your own pace.

## `--suppress [<rule>]`

Suppress problems that have the severity of `error` and record them in a file.

If no rule is specified, all problems are suppressed. Otherwise, only problems with the given rules are suppressed, e.g., `--suppress rule1 --suppress rule2`.

Subsequent runs without the `--suppress` flag will not report these problems, unless there are more problems for the same rule in the same file.

> [!TIP]
> We recommend committing the suppressions file to your repository and using the `--fix` option alongside the `--suppress`.

> [!NOTE]
> `--suppress` can't be combined with stdin input (e.g., piping code via `echo "..." | stylelint`).

## `--suppress-location <path>`

Path to a suppressions file or directory. Defaults to `stylelint-suppressions.json`.

If you specify a directory path, Stylelint will create a file named `stylelint-suppressions.json` in that directory.

> [!IMPORTANT]
> You must use `--suppress-location` on all subsequent runs, even when not using the `--suppress` flag.

A suggestion for an alternative version. It's concise like the docs for our options. Do we think it retains the key points from the existing version, or does anything need to be expanded upon?

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks, Looks good.
Fixed via e8ab682.

Comment on lines 137 to 143
Suppress all current problems and record them in a suppressions file. [More info](suppressions.md).

If a rule is specified as an argument (e.g., `--suppress=block-no-empty`), it suppresses violations for only the specified rule. You can repeat the flag to target multiple rules.

> [!NOTE]
>
> - `--suppress` cannot be combined with stdin input (e.g., piping code via `echo "..." | stylelint`).
Copy link
Member

@jeddy3 jeddy3 Sep 15, 2025

Choose a reason for hiding this comment

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

Suggested change
Suppress all current problems and record them in a suppressions file. [More info](suppressions.md).
If a rule is specified as an argument (e.g., `--suppress=block-no-empty`), it suppresses violations for only the specified rule. You can repeat the flag to target multiple rules.
> [!NOTE]
>
> - `--suppress` cannot be combined with stdin input (e.g., piping code via `echo "..." | stylelint`).
Suppress problems that have the severity of `error` and record them in a file. [More info](suppressions.md#suppress).

To be consistent with other flags in the doc cli.md, i.e. we duplicate just the key part of the linked doc.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed via ed50f2b.

@ryo-manba
Copy link
Member Author

ryo-manba commented Sep 23, 2025

@jeddy3
Thanks for the thoughtful suggestions!

For this PR, I’d like to keep the scope to the CLI-only.
The Node.js API integration (needed for IDE integrations like VS Code) has a lot of design considerations.
ESLint is actively discussing this in an RFC (See: eslint/rfcs#133).

I’d prefer we evaluate Node.js API support separately. (issue created: #8775)

ryo-manba and others added 4 commits September 23, 2025 14:55
Copy link
Member

@jeddy3 jeddy3 left a comment

Choose a reason for hiding this comment

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

LGTM, thank you.

Let's add this as an experimental CLI-only option, and then see how its used and where the ESLint discussion goes.

@ryo-manba
Copy link
Member Author

Many thanks to @jeddy3, @Mouvedia , and @ybiquitous for the patient and thorough reviews.
I really appreciate all your feedback.

Merging now.

@ryo-manba ryo-manba merged commit 8d0b9d2 into main Sep 23, 2025
19 of 20 checks passed
@ryo-manba ryo-manba deleted the issue-8173 branch September 23, 2025 12:18
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Oct 3, 2025
| datasource | package   | from    | to      |
| ---------- | --------- | ------- | ------- |
| npm        | stylelint | 16.24.0 | 16.25.0 |


## [v16.25.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16250---2025-10-03)

It adds 3 new features, including experimental support for bulk suppressions. It's also our first [immutable release](https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview/), with the package published to npm using [trusted publishing](https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/) and our dependencies updated on a [cool down](https://github.blog/changelog/2025-07-01-dependabot-supports-configuration-of-a-minimum-package-age/) for improved supply chain security.

- Added: support for bulk suppressions ([#8564](stylelint/stylelint#8564)) ([@ryo-manba](https://github.com/ryo-manba)).
- Added: `ignoreAtRules: []` to `no-invalid-position-declaration` ([#8781](stylelint/stylelint#8781)) ([@jrmlt](https://github.com/jrmlt)).
- Added: rule name to custom messages ([#8774](stylelint/stylelint#8774)) ([@jhae-de](https://github.com/jhae-de)).
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Oct 3, 2025
| datasource | package   | from    | to      |
| ---------- | --------- | ------- | ------- |
| npm        | stylelint | 16.24.0 | 16.25.0 |


## [v16.25.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16250---2025-10-03)

It adds 3 new features, including experimental support for bulk suppressions. It's also our first [immutable release](https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview/), with the package published to npm using [trusted publishing](https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/) and our dependencies updated on a [cool down](https://github.blog/changelog/2025-07-01-dependabot-supports-configuration-of-a-minimum-package-age/) for improved supply chain security.

- Added: support for bulk suppressions ([#8564](stylelint/stylelint#8564)) ([@ryo-manba](https://github.com/ryo-manba)).
- Added: `ignoreAtRules: []` to `no-invalid-position-declaration` ([#8781](stylelint/stylelint#8781)) ([@jrmlt](https://github.com/jrmlt)).
- Added: rule name to custom messages ([#8774](stylelint/stylelint#8774)) ([@jhae-de](https://github.com/jhae-de)).
robbevp pushed a commit to robbevp/website-robbevanpetegem that referenced this pull request Dec 22, 2025
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | minor | [`9.34.0` -> `9.39.2`](https://renovatebot.com/diffs/npm/eslint/9.34.0/9.39.2) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.6.2` -> `3.7.4`](https://renovatebot.com/diffs/npm/prettier/3.6.2/3.7.4) |
| [stylelint](https://stylelint.io) ([source](https://github.com/stylelint/stylelint)) | devDependencies | minor | [`16.23.1` -> `16.26.1`](https://renovatebot.com/diffs/npm/stylelint/16.23.1/16.26.1) |

---

### Release Notes

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

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

[Compare Source](eslint/eslint@v9.39.1...v9.39.2)

#### Bug Fixes

- [`5705833`](eslint/eslint@5705833) fix: warn when `eslint-env` configuration comments are found ([#&#8203;20381](eslint/eslint#20381)) (sethamus)

#### Build Related

- [`506f154`](eslint/eslint@506f154) build: add .scss files entry to knip ([#&#8203;20391](eslint/eslint#20391)) (Milos Djermanovic)

#### Chores

- [`7ca0af7`](eslint/eslint@7ca0af7) chore: upgrade to `@eslint/js@9.39.2` ([#&#8203;20394](eslint/eslint#20394)) (Francesco Trotta)
- [`c43ce24`](eslint/eslint@c43ce24) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`4c9858e`](eslint/eslint@4c9858e) ci: add `v9.x-dev` branch ([#&#8203;20382](eslint/eslint#20382)) (Milos Djermanovic)

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

[Compare Source](eslint/eslint@v9.39.0...v9.39.1)

#### Bug Fixes

- [`650753e`](eslint/eslint@650753e) fix: Only pass node to JS lang visitor methods ([#&#8203;20283](eslint/eslint#20283)) (Nicholas C. Zakas)

#### Documentation

- [`51b51f4`](eslint/eslint@51b51f4) docs: add a section on when to use extends vs cascading ([#&#8203;20268](eslint/eslint#20268)) (Tanuj Kanti)
- [`b44d426`](eslint/eslint@b44d426) docs: Update README (GitHub Actions Bot)

#### Chores

- [`92db329`](eslint/eslint@92db329) chore: update `@eslint/js` version to 9.39.1 ([#&#8203;20284](eslint/eslint#20284)) (Francesco Trotta)
- [`c7ebefc`](eslint/eslint@c7ebefc) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`61778f6`](eslint/eslint@61778f6) chore: update eslint-config-eslint dependency [@&#8203;eslint/js](https://github.com/eslint/js) to ^9.39.0 ([#&#8203;20275](eslint/eslint#20275)) (renovate\[bot])
- [`d9ca2fc`](eslint/eslint@d9ca2fc) ci: Add rangeStrategy to eslint group in renovate config ([#&#8203;20266](eslint/eslint#20266)) (唯然)
- [`009e507`](eslint/eslint@009e507) test: fix version tests for ESLint v10 ([#&#8203;20274](eslint/eslint#20274)) (Milos Djermanovic)

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

[Compare Source](eslint/eslint@v9.38.0...v9.39.0)

#### Features

- [`cc57d87`](eslint/eslint@cc57d87) feat: update error loc to key in `no-dupe-class-members` ([#&#8203;20259](eslint/eslint#20259)) (Tanuj Kanti)
- [`126552f`](eslint/eslint@126552f) feat: update error location in `for-direction` and `no-dupe-args` ([#&#8203;20258](eslint/eslint#20258)) (Tanuj Kanti)
- [`167d097`](eslint/eslint@167d097) feat: update `complexity` rule to highlight only static block header ([#&#8203;20245](eslint/eslint#20245)) (jaymarvelz)

#### Bug Fixes

- [`15f5c7c`](eslint/eslint@15f5c7c) fix: forward traversal `step.args` to visitors ([#&#8203;20253](eslint/eslint#20253)) (jaymarvelz)
- [`5a1a534`](eslint/eslint@5a1a534) fix: allow JSDoc comments in object-shorthand rule ([#&#8203;20167](eslint/eslint#20167)) (Nitin Kumar)
- [`e86b813`](eslint/eslint@e86b813) fix: Use more types from [@&#8203;eslint/core](https://github.com/eslint/core) ([#&#8203;20257](eslint/eslint#20257)) (Nicholas C. Zakas)
- [`927272d`](eslint/eslint@927272d) fix: correct `Scope` typings ([#&#8203;20198](eslint/eslint#20198)) (jaymarvelz)
- [`37f76d9`](eslint/eslint@37f76d9) fix: use `AST.Program` type for Program node ([#&#8203;20244](eslint/eslint#20244)) (Francesco Trotta)
- [`ae07f0b`](eslint/eslint@ae07f0b) fix: unify timing report for concurrent linting ([#&#8203;20188](eslint/eslint#20188)) (jaymarvelz)
- [`b165d47`](eslint/eslint@b165d47) fix: correct `Rule` typings ([#&#8203;20199](eslint/eslint#20199)) (jaymarvelz)
- [`fb97cda`](eslint/eslint@fb97cda) fix: improve error message for missing fix function in suggestions ([#&#8203;20218](eslint/eslint#20218)) (jaymarvelz)

#### Documentation

- [`d3e81e3`](eslint/eslint@d3e81e3) docs: Always recommend to include a files property ([#&#8203;20158](eslint/eslint#20158)) (Percy Ma)
- [`0f0385f`](eslint/eslint@0f0385f) docs: use consistent naming recommendation ([#&#8203;20250](eslint/eslint#20250)) (Alex M. Spieslechner)
- [`a3b1456`](eslint/eslint@a3b1456) docs: Update README (GitHub Actions Bot)
- [`cf5f2dd`](eslint/eslint@cf5f2dd) docs: fix correct tag of `no-useless-constructor` ([#&#8203;20255](eslint/eslint#20255)) (Tanuj Kanti)
- [`10b995c`](eslint/eslint@10b995c) docs: add TS options and examples for `nofunc` in `no-use-before-define` ([#&#8203;20249](eslint/eslint#20249)) (Tanuj Kanti)
- [`2584187`](eslint/eslint@2584187) docs: remove repetitive word in comment ([#&#8203;20242](eslint/eslint#20242)) (reddaisyy)
- [`637216b`](eslint/eslint@637216b) docs: update CLI flags migration instructions ([#&#8203;20238](eslint/eslint#20238)) (jaymarvelz)
- [`e7cda3b`](eslint/eslint@e7cda3b) docs: Update README (GitHub Actions Bot)
- [`7b9446f`](eslint/eslint@7b9446f) docs: handle empty flags sections on the feature flags page ([#&#8203;20222](eslint/eslint#20222)) (sethamus)

#### Chores

- [`dfe3c1b`](eslint/eslint@dfe3c1b) chore: update `@eslint/js` version to 9.39.0 ([#&#8203;20270](eslint/eslint#20270)) (Francesco Trotta)
- [`2375a6d`](eslint/eslint@2375a6d) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`a1f4e52`](eslint/eslint@a1f4e52) chore: update `@eslint` dependencies ([#&#8203;20265](eslint/eslint#20265)) (Francesco Trotta)
- [`c7d3229`](eslint/eslint@c7d3229) chore: update dependency [@&#8203;eslint/core](https://github.com/eslint/core) to ^0.17.0 ([#&#8203;20256](eslint/eslint#20256)) (renovate\[bot])
- [`27549bc`](eslint/eslint@27549bc) chore: update fuzz testing to not error if code sample minimizer fails ([#&#8203;20252](eslint/eslint#20252)) (Milos Djermanovic)
- [`a1370ee`](eslint/eslint@a1370ee) ci: bump actions/setup-node from 5 to 6 ([#&#8203;20230](eslint/eslint#20230)) (dependabot\[bot])
- [`9e7fad4`](eslint/eslint@9e7fad4) chore: add script to auto-generate eslint:recommended configuration ([#&#8203;20208](eslint/eslint#20208)) (唯然)

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

[Compare Source](eslint/eslint@v9.37.0...v9.38.0)

#### Features

- [`ce40f74`](eslint/eslint@ce40f74) feat: update `complexity` rule to only highlight function header ([#&#8203;20048](eslint/eslint#20048)) (Atul Nair)
- [`e37e590`](eslint/eslint@e37e590) feat: correct `no-loss-of-precision` false positives with `e` notation ([#&#8203;20187](eslint/eslint#20187)) (Francesco Trotta)

#### Bug Fixes

- [`50c3dfd`](eslint/eslint@50c3dfd) fix: improve type support for isolated dependencies in pnpm ([#&#8203;20201](eslint/eslint#20201)) (Francesco Trotta)
- [`a1f06a3`](eslint/eslint@a1f06a3) fix: correct SourceCode typings ([#&#8203;20114](eslint/eslint#20114)) (Pixel998)

#### Documentation

- [`462675a`](eslint/eslint@462675a) docs: improve web accessibility by hiding non-semantic character ([#&#8203;20205](eslint/eslint#20205)) (루밀LuMir)
- [`c070e65`](eslint/eslint@c070e65) docs: correct formatting in `no-irregular-whitespace` rule documentation ([#&#8203;20203](eslint/eslint#20203)) (루밀LuMir)
- [`b39e71a`](eslint/eslint@b39e71a) docs: Update README (GitHub Actions Bot)
- [`cd39983`](eslint/eslint@cd39983) docs: move `custom-formatters` type descriptions to `nodejs-api` ([#&#8203;20190](eslint/eslint#20190)) (Percy Ma)

#### Chores

- [`d17c795`](eslint/eslint@d17c795) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)@&#8203;9.38.0 ([#&#8203;20221](eslint/eslint#20221)) (Milos Djermanovic)
- [`25d0e33`](eslint/eslint@25d0e33) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`c82b5ef`](eslint/eslint@c82b5ef) refactor: Use types from [@&#8203;eslint/core](https://github.com/eslint/core) ([#&#8203;20168](eslint/eslint#20168)) (Nicholas C. Zakas)
- [`ff31609`](eslint/eslint@ff31609) ci: add Node.js 25 to `ci.yml` ([#&#8203;20220](eslint/eslint#20220)) (루밀LuMir)
- [`004577e`](eslint/eslint@004577e) ci: bump github/codeql-action from 3 to 4 ([#&#8203;20211](eslint/eslint#20211)) (dependabot\[bot])
- [`eac71fb`](eslint/eslint@eac71fb) test: remove use of `nodejsScope` option of eslint-scope from tests ([#&#8203;20206](eslint/eslint#20206)) (Milos Djermanovic)
- [`4168a18`](eslint/eslint@4168a18) chore: fix typo in legacy-eslint.js ([#&#8203;20202](eslint/eslint#20202)) (Sweta Tanwar)
- [`205dbd2`](eslint/eslint@205dbd2) chore: fix typos ([#&#8203;20200](eslint/eslint#20200)) (ntnyq)
- [`dbb200e`](eslint/eslint@dbb200e) chore: use team member's username when name is not available in data ([#&#8203;20194](eslint/eslint#20194)) (Milos Djermanovic)
- [`8962089`](eslint/eslint@8962089) chore: mark deprecated rules as available until v11.0.0 ([#&#8203;20184](eslint/eslint#20184)) (Pixel998)

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

[Compare Source](eslint/eslint@v9.36.0...v9.37.0)

#### Features

- [`39f7fb4`](eslint/eslint@39f7fb4) feat: `preserve-caught-error` should recognize all static "cause" keys ([#&#8203;20163](eslint/eslint#20163)) (Pixel998)
- [`f81eabc`](eslint/eslint@f81eabc) feat: support TS syntax in `no-restricted-imports` ([#&#8203;19562](eslint/eslint#19562)) (Nitin Kumar)

#### Bug Fixes

- [`a129cce`](eslint/eslint@a129cce) fix: correct `no-loss-of-precision` false positives for leading zeros ([#&#8203;20164](eslint/eslint#20164)) (Francesco Trotta)
- [`09e04fc`](eslint/eslint@09e04fc) fix: add missing AST token types ([#&#8203;20172](eslint/eslint#20172)) (Pixel998)
- [`861c6da`](eslint/eslint@861c6da) fix: correct `ESLint` typings ([#&#8203;20122](eslint/eslint#20122)) (Pixel998)

#### Documentation

- [`b950359`](eslint/eslint@b950359) docs: fix typos across the docs ([#&#8203;20182](eslint/eslint#20182)) (루밀LuMir)
- [`42498a2`](eslint/eslint@42498a2) docs: improve ToC accessibility by hiding non-semantic character ([#&#8203;20181](eslint/eslint#20181)) (Percy Ma)
- [`29ea092`](eslint/eslint@29ea092) docs: Update README (GitHub Actions Bot)
- [`5c97a04`](eslint/eslint@5c97a04) docs: show `availableUntil` in deprecated rule banner ([#&#8203;20170](eslint/eslint#20170)) (Pixel998)
- [`90a71bf`](eslint/eslint@90a71bf) docs: update `README` files to add badge and instructions ([#&#8203;20115](eslint/eslint#20115)) (루밀LuMir)
- [`1603ae1`](eslint/eslint@1603ae1) docs: update references from `master` to `main` ([#&#8203;20153](eslint/eslint#20153)) (루밀LuMir)

#### Chores

- [`afe8a13`](eslint/eslint@afe8a13) chore: update `@eslint/js` dependency to version 9.37.0 ([#&#8203;20183](eslint/eslint#20183)) (Francesco Trotta)
- [`abee4ca`](eslint/eslint@abee4ca) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`fc9381f`](eslint/eslint@fc9381f) chore: fix typos in comments ([#&#8203;20175](eslint/eslint#20175)) (overlookmotel)
- [`e1574a2`](eslint/eslint@e1574a2) chore: unpin jiti ([#&#8203;20173](eslint/eslint#20173)) (renovate\[bot])
- [`e1ac05e`](eslint/eslint@e1ac05e) refactor: mark `ESLint.findConfigFile()` as `async`, add missing docs ([#&#8203;20157](eslint/eslint#20157)) (Pixel998)
- [`347906d`](eslint/eslint@347906d) chore: update eslint ([#&#8203;20149](eslint/eslint#20149)) (renovate\[bot])
- [`0cb5897`](eslint/eslint@0cb5897) test: remove tmp dir created for circular fixes in multithread mode test ([#&#8203;20146](eslint/eslint#20146)) (Milos Djermanovic)
- [`bb99566`](eslint/eslint@bb99566) ci: pin `jiti` to version 2.5.1 ([#&#8203;20151](eslint/eslint#20151)) (Pixel998)
- [`177f669`](eslint/eslint@177f669) perf: improve worker count calculation for `"auto"` concurrency ([#&#8203;20067](eslint/eslint#20067)) (Francesco Trotta)
- [`448b57b`](eslint/eslint@448b57b) chore: Mark deprecated formatting rules as available until v11.0.0 ([#&#8203;20144](eslint/eslint#20144)) (Milos Djermanovic)

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

[Compare Source](eslint/eslint@v9.35.0...v9.36.0)

#### Features

- [`47afcf6`](eslint/eslint@47afcf6) feat: correct `preserve-caught-error` edge cases ([#&#8203;20109](eslint/eslint#20109)) (Francesco Trotta)

#### Bug Fixes

- [`75b74d8`](eslint/eslint@75b74d8) fix: add missing rule option types ([#&#8203;20127](eslint/eslint#20127)) (ntnyq)
- [`1c0d850`](eslint/eslint@1c0d850) fix: update `eslint-all.js` to use `Object.freeze` for `rules` object ([#&#8203;20116](eslint/eslint#20116)) (루밀LuMir)
- [`7d61b7f`](eslint/eslint@7d61b7f) fix: add missing scope types to `Scope.type` ([#&#8203;20110](eslint/eslint#20110)) (Pixel998)
- [`7a670c3`](eslint/eslint@7a670c3) fix: correct rule option typings in `rules.d.ts` ([#&#8203;20084](eslint/eslint#20084)) (Pixel998)

#### Documentation

- [`b73ab12`](eslint/eslint@b73ab12) docs: update examples to use `defineConfig` ([#&#8203;20131](eslint/eslint#20131)) (sethamus)
- [`31d9392`](eslint/eslint@31d9392) docs: fix typos ([#&#8203;20118](eslint/eslint#20118)) (Pixel998)
- [`c7f861b`](eslint/eslint@c7f861b) docs: Update README (GitHub Actions Bot)
- [`6b0c08b`](eslint/eslint@6b0c08b) docs: Update README (GitHub Actions Bot)
- [`91f97c5`](eslint/eslint@91f97c5) docs: Update README (GitHub Actions Bot)

#### Chores

- [`12411e8`](eslint/eslint@12411e8) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)@&#8203;9.36.0 ([#&#8203;20139](eslint/eslint#20139)) (Milos Djermanovic)
- [`488cba6`](eslint/eslint@488cba6) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`bac82a2`](eslint/eslint@bac82a2) ci: simplify renovate configuration ([#&#8203;19907](eslint/eslint#19907)) (唯然)
- [`c00bb37`](eslint/eslint@c00bb37) ci: bump actions/labeler from 5 to 6 ([#&#8203;20090](eslint/eslint#20090)) (dependabot\[bot])
- [`fee751d`](eslint/eslint@fee751d) refactor: use `defaultOptions` in rules ([#&#8203;20121](eslint/eslint#20121)) (Pixel998)
- [`1ace67d`](eslint/eslint@1ace67d) chore: update example to use `defineConfig` ([#&#8203;20111](eslint/eslint#20111)) (루밀LuMir)
- [`4821963`](eslint/eslint@4821963) test: add missing loc information to error objects in rule tests ([#&#8203;20112](eslint/eslint#20112)) (루밀LuMir)
- [`b42c42e`](eslint/eslint@b42c42e) chore: disallow use of deprecated `type` property in core rule tests ([#&#8203;20094](eslint/eslint#20094)) (Milos Djermanovic)
- [`7bb498d`](eslint/eslint@7bb498d) test: remove deprecated `type` property from core rule tests ([#&#8203;20093](eslint/eslint#20093)) (Pixel998)
- [`e10cf2a`](eslint/eslint@e10cf2a) ci: bump actions/setup-node from 4 to 5 ([#&#8203;20089](eslint/eslint#20089)) (dependabot\[bot])
- [`5cb0ce4`](eslint/eslint@5cb0ce4) refactor: use `meta.defaultOptions` in `preserve-caught-error` ([#&#8203;20080](eslint/eslint#20080)) (Pixel998)
- [`f9f7cb5`](eslint/eslint@f9f7cb5) chore: package.json update for eslint-config-eslint release (Jenkins)
- [`81764b2`](eslint/eslint@81764b2) chore: update `eslint` peer dependency in `eslint-config-eslint` ([#&#8203;20079](eslint/eslint#20079)) (Milos Djermanovic)

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

[Compare Source](eslint/eslint@v9.34.0...v9.35.0)

#### Features

- [`42761fa`](eslint/eslint@42761fa) feat: implement suggestions for no-empty-function ([#&#8203;20057](eslint/eslint#20057)) (jaymarvelz)
- [`102f444`](eslint/eslint@102f444) feat: implement suggestions for no-empty-static-block ([#&#8203;20056](eslint/eslint#20056)) (jaymarvelz)
- [`e51ffff`](eslint/eslint@e51ffff) feat: add `preserve-caught-error` rule ([#&#8203;19913](eslint/eslint#19913)) (Amnish Singh Arora)

#### Bug Fixes

- [`10e7ae2`](eslint/eslint@10e7ae2) fix: update uncloneable options error message ([#&#8203;20059](eslint/eslint#20059)) (soda-sorcery)
- [`bfa4601`](eslint/eslint@bfa4601) fix: ignore empty switch statements with comments in no-empty rule ([#&#8203;20045](eslint/eslint#20045)) (jaymarvelz)
- [`dfd11de`](eslint/eslint@dfd11de) fix: add `before` and `after` to test case types ([#&#8203;20049](eslint/eslint#20049)) (Francesco Trotta)
- [`dabbe95`](eslint/eslint@dabbe95) fix: correct types for `no-restricted-imports` rule ([#&#8203;20034](eslint/eslint#20034)) (Milos Djermanovic)
- [`ea789c7`](eslint/eslint@ea789c7) fix: no-loss-of-precision false positive with uppercase exponent ([#&#8203;20032](eslint/eslint#20032)) (sethamus)

#### Documentation

- [`d265515`](eslint/eslint@d265515) docs: improve phrasing - "if" → "even if" from getting-started section ([#&#8203;20074](eslint/eslint#20074)) (jjangga0214)
- [`a355a0e`](eslint/eslint@a355a0e) docs: invert comparison logic for example in `no-var` doc page ([#&#8203;20064](eslint/eslint#20064)) (OTonGitHub)
- [`5082fc2`](eslint/eslint@5082fc2) docs: Update README (GitHub Actions Bot)
- [`99cfd7e`](eslint/eslint@99cfd7e) docs: add missing "the" in rule deprecation docs ([#&#8203;20050](eslint/eslint#20050)) (Josh Goldberg ✨)
- [`6ad8973`](eslint/eslint@6ad8973) docs: update `--no-ignore` and `--ignore-pattern` documentation ([#&#8203;20036](eslint/eslint#20036)) (Francesco Trotta)
- [`8033b19`](eslint/eslint@8033b19) docs: add documentation for `--no-config-lookup` ([#&#8203;20033](eslint/eslint#20033)) (Francesco Trotta)

#### Chores

- [`da87f2f`](eslint/eslint@da87f2f) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)@&#8203;9.35.0 ([#&#8203;20077](eslint/eslint#20077)) (Milos Djermanovic)
- [`af2a087`](eslint/eslint@af2a087) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`7055764`](eslint/eslint@7055764) test: remove `tests/lib/eslint/eslint.config.js` ([#&#8203;20065](eslint/eslint#20065)) (Milos Djermanovic)
- [`84ffb96`](eslint/eslint@84ffb96) chore: update `@eslint-community/eslint-utils` ([#&#8203;20069](eslint/eslint#20069)) (Francesco Trotta)
- [`d5ef939`](eslint/eslint@d5ef939) refactor: remove deprecated `context.parserOptions` usage across rules ([#&#8203;20060](eslint/eslint#20060)) (sethamus)
- [`1b3881d`](eslint/eslint@1b3881d) chore: remove redundant word ([#&#8203;20058](eslint/eslint#20058)) (pxwanglu)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.7.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#374)

[Compare Source](prettier/prettier@3.7.3...3.7.4)

[diff](prettier/prettier@3.7.3...3.7.4)

##### LWC: Avoid quote around interpolations ([#&#8203;18383](prettier/prettier#18383) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```html
<!-- Input -->
<div foo={bar}>   </div>

<!-- Prettier 3.7.3 (--embedded-language-formatting off) -->
<div foo="{bar}"></div>

<!-- Prettier 3.7.4 (--embedded-language-formatting off) -->
<div foo={bar}></div>
```

##### TypeScript: Fix comment inside union type gets duplicated ([#&#8203;18393](prettier/prettier#18393) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
type Foo = (/** comment */ a | b) | c;

// Prettier 3.7.3
type Foo = /** comment */ (/** comment */ a | b) | c;

// Prettier 3.7.4
type Foo = /** comment */ (a | b) | c;
```

##### TypeScript: Fix unstable comment print in union type comments ([#&#8203;18395](prettier/prettier#18395) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
type X = (A | B) & (
  // comment
  A | B
);

// Prettier 3.7.3 (first format)
type X = (A | B) &
  (// comment
  A | B);

// Prettier 3.7.3 (second format)
type X = (
  | A
  | B // comment
) &
  (A | B);

// Prettier 3.7.4
type X = (A | B) &
  // comment
  (A | B);
```

### [`v3.7.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#373)

[Compare Source](prettier/prettier@3.7.2...3.7.3)

[diff](prettier/prettier@3.7.2...3.7.3)

##### API: Fix `prettier.getFileInfo()` change that breaks VSCode extension ([#&#8203;18375](prettier/prettier#18375) by [@&#8203;fisker](https://github.com/fisker))

An internal refactor accidentally broke the VSCode extension plugin loading.

### [`v3.7.2`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#372)

[Compare Source](prettier/prettier@3.7.1...3.7.2)

[diff](prettier/prettier@3.7.1...3.7.2)

##### JavaScript: Fix string print when switching quotes ([#&#8203;18351](prettier/prettier#18351) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
console.log("A descriptor\\'s .kind must be \"method\" or \"field\".")

// Prettier 3.7.1
console.log('A descriptor\\'s .kind must be "method" or "field".');

// Prettier 3.7.2
console.log('A descriptor\\\'s .kind must be "method" or "field".');
```

##### JavaScript: Preserve quote for embedded HTML attribute values ([#&#8203;18352](prettier/prettier#18352) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;

// Prettier 3.7.1
const html = /* HTML */ ` <div class=${styles.banner}></div> `;

// Prettier 3.7.2
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;
```

##### TypeScript: Fix comment in empty type literal ([#&#8203;18364](prettier/prettier#18364) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
export type XXX = {
  // tbd
};

// Prettier 3.7.1
export type XXX = { // tbd };

// Prettier 3.7.2
export type XXX = {
  // tbd
};
```

### [`v3.7.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#371)

[Compare Source](prettier/prettier@3.7.0...3.7.1)

[diff](prettier/prettier@3.7.0...3.7.1)

##### API: Fix performance regression in doc printer ([#&#8203;18342](prettier/prettier#18342) by [@&#8203;fisker](https://github.com/fisker))

Prettier 3.7.0 can be very slow when formatting big files, the regression has been fixed.

### [`v3.7.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#370)

[Compare Source](prettier/prettier@3.6.2...3.7.0)

[diff](prettier/prettier@3.6.2...3.7.0)

🔗 [Release Notes](https://prettier.io/blog/2025/11/27/3.7.0)

</details>

<details>
<summary>stylelint/stylelint (stylelint)</summary>

### [`v16.26.1`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16261---2025-11-28)

[Compare Source](stylelint/stylelint@16.26.0...16.26.1)

It fixes numerous false positive bugs, including many in the `declaration-property-value-no-unknown` rule for the latest CSS specifications.

- Fixed: `*-no-unknown` false positives for latest specs by integrating `@csstools/css-syntax-patches-for-csstree` ([#&#8203;8850](stylelint/stylelint#8850)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `at-rule-no-unknown` false positives for `@function` ([#&#8203;8851](stylelint/stylelint#8851)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-value-no-unknown` false positives for `attr()`, `if()` and custom functions ([#&#8203;8853](stylelint/stylelint#8853)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `function-url-quotes` false positives when URLs require quoting ([#&#8203;8804](stylelint/stylelint#8804)) ([@&#8203;taearls](https://github.com/taearls)).
- Fixed: `selector-pseudo-element-no-unknown` false positives for `::scroll-button()` ([#&#8203;8856](stylelint/stylelint#8856)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).

### [`v16.26.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16260---2025-11-21)

[Compare Source](stylelint/stylelint@16.25.0...16.26.0)

It adds 1 feature and fixes 2 bugs.

- Added: support for `customSyntax` with function export ([#&#8203;8834](stylelint/stylelint#8834)) ([@&#8203;silverwind](https://github.com/silverwind)).
- Fixed: `custom-property-no-missing-var-function` false positives for style query in `if()` function ([#&#8203;8813](stylelint/stylelint#8813)) ([@&#8203;sajdakabir](https://github.com/sajdakabir)).
- Fixed: `media-feature-range-notation` false positives for multiple queries and `except: exact-value` ([#&#8203;8832](stylelint/stylelint#8832)) ([@&#8203;jeddy3](https://github.com/jeddy3)).

### [`v16.25.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16250---2025-10-03)

[Compare Source](stylelint/stylelint@16.24.0...16.25.0)

It adds 3 new features, including experimental support for bulk suppressions. It's also our first [immutable release](https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview/), with the package published to npm using [trusted publishing](https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/) and our dependencies updated on a [cool down](https://github.blog/changelog/2025-07-01-dependabot-supports-configuration-of-a-minimum-package-age/) for improved supply chain security.

- Added: support for bulk suppressions ([#&#8203;8564](stylelint/stylelint#8564)) ([@&#8203;ryo-manba](https://github.com/ryo-manba)).
- Added: `ignoreAtRules: []` to `no-invalid-position-declaration` ([#&#8203;8781](stylelint/stylelint#8781)) ([@&#8203;jrmlt](https://github.com/jrmlt)).
- Added: rule name to custom messages ([#&#8203;8774](stylelint/stylelint#8774)) ([@&#8203;jhae-de](https://github.com/jhae-de)).

### [`v16.24.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#16240---2025-09-07)

[Compare Source](stylelint/stylelint@16.23.1...16.24.0)

It adds 1 new rule, adds 1 option to a rule and fixes 2 bugs.

- Added: `rule-nesting-at-rule-required-list` rule ([#&#8203;8680](stylelint/stylelint#8680)) ([@&#8203;sw1tch3roo](https://github.com/sw1tch3roo)).
- Added: `ignoreAtRules: []` to `nesting-selector-no-missing-scoping-root` ([#&#8203;8743](stylelint/stylelint#8743)) ([@&#8203;karlhorky](https://github.com/karlhorky)).
- Fixed: `function-no-unknown` false positives for `contrast-color()` and `sibling-*()` ([#&#8203;8729](stylelint/stylelint#8729)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).
- Fixed: `selector-pseudo-class-no-unknown` false positives for `:heading` ([#&#8203;8749](stylelint/stylelint#8749)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

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

Reviewed-on: https://git.robbevp.be/robbevp/website-robbevanpetegem/pulls/498
Co-authored-by: Renovate Bot <renovate@robbevp.be>
Co-committed-by: Renovate Bot <renovate@robbevp.be>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Add support for bulk suppressions

5 participants