Skip to content

Fix custom-property-no-missing-var-function false positives for style query in if() function#8813

Merged
jeddy3 merged 12 commits intostylelint:mainfrom
sajdakabir:fix/style-query-no-var
Nov 21, 2025
Merged

Fix custom-property-no-missing-var-function false positives for style query in if() function#8813
jeddy3 merged 12 commits intostylelint:mainfrom
sajdakabir:fix/style-query-no-var

Conversation

@sajdakabir
Copy link
Contributor

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

Closes #8805

Is there anything in the PR that needs further explanation?

No; the changes special-case style() queries inside if() by threading an insideStyleQuery flag through "custom-property-no-missing-var-function" update the generated CJS bundle, and add targeted tests to cover the new behavior.

@changeset-bot
Copy link

changeset-bot bot commented Oct 13, 2025

🦋 Changeset detected

Latest commit: 6caf395

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

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

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

@otomad
Copy link
Contributor

otomad commented Oct 13, 2025

Can you also add these tests:

  1. Error code:
a {
    --foo: 1;
    --bar: 2;
    color: if(
        style(--foo: --bar): red;
        else: green;
    );
}

After auto fix (Correct code):

a {
    --foo: 1;
    --bar: 2;
    color: if(
        style(--foo: var(--bar)): red;
        else: green;
    );
}
  1. Error code:
a {
    --foo: 1;
    --color: red;
    color: if(
        style(--foo: 1): --color;
        else: green;
    );
}

After auto fix (Correct code):

a {
    --foo: 1;
    --color: red;
    color: if(
        style(--foo: 1): var(--color);
        else: green;
    );
}

@sajdakabir
Copy link
Contributor Author

@otomad i have updated the pr accordingly to requested changes

@jeddy3 jeddy3 changed the title Fix/style query no var Fix custom-property-no-missing-var-function false positives for style query in if() function Oct 14, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Oct 20, 2025

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

Install it locally:

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

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.

@sajdakabir Thank you for working on this PR. Can you address the lint warnings, please?

You can use the following command to run linting locally:

npm run lint

(@otomad Thanks for your review input so far. If you've time, we'd appreciate an approval from you as me and the other Stylelint members are a bit short on OSS time at the moment.)

Comment on lines 63 to 64
const { prop, value } = decl;

if (!value.includes('--')) return;
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
const { prop, value } = decl;
if (!value.includes('--')) return;
const { prop, value } = decl;
if (!value.includes('--')) return;

@otomad
Copy link
Contributor

otomad commented Oct 20, 2025

Sorry I have no edit permission, so I just reviewed it by adding suggested changes in the comments.

@sajdakabir sajdakabir requested review from jeddy3 and otomad October 20, 2025 17:08
@sajdakabir
Copy link
Contributor Author

@otomad thanks for the review. I’ve completed the updates please let me know if you need any other changes.

@sajdakabir sajdakabir requested a review from otomad October 27, 2025 07:16
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.

@otomad Thanks for the further reviews.

@sajdakabir Thanks for enacting them.

LGTM, thank you.

* @param {boolean} insideStyleQuery - Whether we're inside a style() query
*/
function check(node, decl) {
function check(node, decl, insideStyleQuery) {
Copy link
Member

@Mouvedia Mouvedia Nov 2, 2025

Choose a reason for hiding this comment

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

question

It seems check is never called with insideStyleQuery === true.
Hence insideStyleQuery is never set to true.

Suggested change
function check(node, decl, insideStyleQuery) {
function check(node, decl, insideStyleQuery = false) {

then revert l70 and l105.

What are you planning to use passStyleQuery/insideStyleQuery for?

@sajdakabir
Copy link
Contributor Author

@Mouvedia i have remove unused insideStyleQuery parameter

@jeddy3 jeddy3 mentioned this pull request Nov 10, 2025
4 tasks
Copy link
Member

@romainmenke romainmenke left a comment

Choose a reason for hiding this comment

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

Thank you @sajdakabir,

I've left a couple of suggestions, please take a look when you have time.

if (!isDashedIdent(node)) return;

if (!knownCustomProperties.has(node.value)) return;
// Strip trailing semicolons for lookup and reporting
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
// Strip trailing semicolons for lookup and reporting
// `postcss-value-parser` incorrectly includes semicolons in word tokens.

Maybe document why we need to do this.

Comment on lines +142 to +145
// Strip trailing semicolons that may be part of conditional syntax
const cleanValue = value.replace(/;+$/, '');

return type === 'word' && cleanValue.startsWith('--');
Copy link
Member

Choose a reason for hiding this comment

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

I don't think this is needed.
It didn't make sense to me to strip trailing chars, when only checking the start.

Can you revert to:

/**
 * @param {Node} node
 */
function isDashedIdent({ type, value }) {
	return type === 'word' && value.startsWith('--');
}

@sajdakabir sajdakabir requested a review from a team as a code owner November 17, 2025 18:08
@ybiquitous
Copy link
Member

@sajdakabir This PR includes extra files, such as .changeset/chubby-donkeys-remain.md. Can you rebase the main branch, please? 🙏🏼

sajdakabir and others added 8 commits November 21, 2025 14:18
Co-authored-by: Rantetsu Inori <56647156+otomad@users.noreply.github.com>
…dex.mjs

Co-authored-by: Rantetsu Inori <56647156+otomad@users.noreply.github.com>
…dex.mjs

Co-authored-by: Rantetsu Inori <56647156+otomad@users.noreply.github.com>
…dex.mjs

Co-authored-by: Rantetsu Inori <56647156+otomad@users.noreply.github.com>
@sajdakabir sajdakabir force-pushed the fix/style-query-no-var branch from c2bda06 to 6caf395 Compare November 21, 2025 08:49
@jeddy3
Copy link
Member

jeddy3 commented Nov 21, 2025

@sajdakabir Thanks for making the requested changes and for rebasing.

I'll merge so that we can include this fix in the release I'm just about to start.

@jeddy3 jeddy3 merged commit de3a8f0 into stylelint:main Nov 21, 2025
15 checks passed
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Nov 22, 2025
| datasource | package   | from    | to      |
| ---------- | --------- | ------- | ------- |
| npm        | stylelint | 16.25.0 | 16.26.0 |


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

It adds 1 feature and fixes 2 bugs.

- Added: support for `customSyntax` with function export ([#8834](stylelint/stylelint#8834)) ([@silverwind](https://github.com/silverwind)).
- Fixed: `custom-property-no-missing-var-function` false positives for style query in `if()` function ([#8813](stylelint/stylelint#8813)) ([@sajdakabir](https://github.com/sajdakabir)).
- Fixed: `media-feature-range-notation` false positives for multiple queries and `except: exact-value` ([#8832](stylelint/stylelint#8832)) ([@jeddy3](https://github.com/jeddy3)).
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Nov 22, 2025
| datasource | package   | from    | to      |
| ---------- | --------- | ------- | ------- |
| npm        | stylelint | 16.25.0 | 16.26.0 |


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

It adds 1 feature and fixes 2 bugs.

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

Fix custom-property-no-missing-var-function false positives for style query in if() function

6 participants