Fix custom-property-no-missing-var-function false positives for style query in if() function#8813
Conversation
🦋 Changeset detectedLatest commit: 6caf395 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
|
Can you also add these tests:
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;
);
}
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;
);
} |
|
@otomad i have updated the pr accordingly to requested changes |
custom-property-no-missing-var-function false positives for style query in if() function
|
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 |
jeddy3
left a comment
There was a problem hiding this comment.
@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.)
| const { prop, value } = decl; | ||
|
|
||
| if (!value.includes('--')) return; |
There was a problem hiding this comment.
| const { prop, value } = decl; | |
| if (!value.includes('--')) return; | |
| const { prop, value } = decl; | |
| if (!value.includes('--')) return; |
lib/rules/custom-property-no-missing-var-function/__tests__/index.mjs
Outdated
Show resolved
Hide resolved
lib/rules/custom-property-no-missing-var-function/__tests__/index.mjs
Outdated
Show resolved
Hide resolved
|
Sorry I have no edit permission, so I just reviewed it by adding suggested changes in the comments. |
|
@otomad thanks for the review. I’ve completed the updates please let me know if you need any other changes. |
| * @param {boolean} insideStyleQuery - Whether we're inside a style() query | ||
| */ | ||
| function check(node, decl) { | ||
| function check(node, decl, insideStyleQuery) { |
There was a problem hiding this comment.
question
It seems check is never called with insideStyleQuery === true.
Hence insideStyleQuery is never set to true.
| 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?
|
@Mouvedia i have remove unused insideStyleQuery parameter |
romainmenke
left a comment
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
| // Strip trailing semicolons for lookup and reporting | |
| // `postcss-value-parser` incorrectly includes semicolons in word tokens. |
Maybe document why we need to do this.
| // Strip trailing semicolons that may be part of conditional syntax | ||
| const cleanValue = value.replace(/;+$/, ''); | ||
|
|
||
| return type === 'word' && cleanValue.startsWith('--'); |
There was a problem hiding this comment.
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 This PR includes extra files, such as |
…t CSS conditional statements
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>
c2bda06 to
6caf395
Compare
|
@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. |
| 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)).
| 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)).
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 ([#​20381](eslint/eslint#20381)) (sethamus) #### Build Related - [`506f154`](eslint/eslint@506f154) build: add .scss files entry to knip ([#​20391](eslint/eslint#20391)) (Milos Djermanovic) #### Chores - [`7ca0af7`](eslint/eslint@7ca0af7) chore: upgrade to `@eslint/js@9.39.2` ([#​20394](eslint/eslint#20394)) (Francesco Trotta) - [`c43ce24`](eslint/eslint@c43ce24) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`4c9858e`](eslint/eslint@4c9858e) ci: add `v9.x-dev` branch ([#​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 ([#​20283](eslint/eslint#20283)) (Nicholas C. Zakas) #### Documentation - [`51b51f4`](eslint/eslint@51b51f4) docs: add a section on when to use extends vs cascading ([#​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 ([#​20284](eslint/eslint#20284)) (Francesco Trotta) - [`c7ebefc`](eslint/eslint@c7ebefc) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`61778f6`](eslint/eslint@61778f6) chore: update eslint-config-eslint dependency [@​eslint/js](https://github.com/eslint/js) to ^9.39.0 ([#​20275](eslint/eslint#20275)) (renovate\[bot]) - [`d9ca2fc`](eslint/eslint@d9ca2fc) ci: Add rangeStrategy to eslint group in renovate config ([#​20266](eslint/eslint#20266)) (唯然) - [`009e507`](eslint/eslint@009e507) test: fix version tests for ESLint v10 ([#​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` ([#​20259](eslint/eslint#20259)) (Tanuj Kanti) - [`126552f`](eslint/eslint@126552f) feat: update error location in `for-direction` and `no-dupe-args` ([#​20258](eslint/eslint#20258)) (Tanuj Kanti) - [`167d097`](eslint/eslint@167d097) feat: update `complexity` rule to highlight only static block header ([#​20245](eslint/eslint#20245)) (jaymarvelz) #### Bug Fixes - [`15f5c7c`](eslint/eslint@15f5c7c) fix: forward traversal `step.args` to visitors ([#​20253](eslint/eslint#20253)) (jaymarvelz) - [`5a1a534`](eslint/eslint@5a1a534) fix: allow JSDoc comments in object-shorthand rule ([#​20167](eslint/eslint#20167)) (Nitin Kumar) - [`e86b813`](eslint/eslint@e86b813) fix: Use more types from [@​eslint/core](https://github.com/eslint/core) ([#​20257](eslint/eslint#20257)) (Nicholas C. Zakas) - [`927272d`](eslint/eslint@927272d) fix: correct `Scope` typings ([#​20198](eslint/eslint#20198)) (jaymarvelz) - [`37f76d9`](eslint/eslint@37f76d9) fix: use `AST.Program` type for Program node ([#​20244](eslint/eslint#20244)) (Francesco Trotta) - [`ae07f0b`](eslint/eslint@ae07f0b) fix: unify timing report for concurrent linting ([#​20188](eslint/eslint#20188)) (jaymarvelz) - [`b165d47`](eslint/eslint@b165d47) fix: correct `Rule` typings ([#​20199](eslint/eslint#20199)) (jaymarvelz) - [`fb97cda`](eslint/eslint@fb97cda) fix: improve error message for missing fix function in suggestions ([#​20218](eslint/eslint#20218)) (jaymarvelz) #### Documentation - [`d3e81e3`](eslint/eslint@d3e81e3) docs: Always recommend to include a files property ([#​20158](eslint/eslint#20158)) (Percy Ma) - [`0f0385f`](eslint/eslint@0f0385f) docs: use consistent naming recommendation ([#​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` ([#​20255](eslint/eslint#20255)) (Tanuj Kanti) - [`10b995c`](eslint/eslint@10b995c) docs: add TS options and examples for `nofunc` in `no-use-before-define` ([#​20249](eslint/eslint#20249)) (Tanuj Kanti) - [`2584187`](eslint/eslint@2584187) docs: remove repetitive word in comment ([#​20242](eslint/eslint#20242)) (reddaisyy) - [`637216b`](eslint/eslint@637216b) docs: update CLI flags migration instructions ([#​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 ([#​20222](eslint/eslint#20222)) (sethamus) #### Chores - [`dfe3c1b`](eslint/eslint@dfe3c1b) chore: update `@eslint/js` version to 9.39.0 ([#​20270](eslint/eslint#20270)) (Francesco Trotta) - [`2375a6d`](eslint/eslint@2375a6d) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`a1f4e52`](eslint/eslint@a1f4e52) chore: update `@eslint` dependencies ([#​20265](eslint/eslint#20265)) (Francesco Trotta) - [`c7d3229`](eslint/eslint@c7d3229) chore: update dependency [@​eslint/core](https://github.com/eslint/core) to ^0.17.0 ([#​20256](eslint/eslint#20256)) (renovate\[bot]) - [`27549bc`](eslint/eslint@27549bc) chore: update fuzz testing to not error if code sample minimizer fails ([#​20252](eslint/eslint#20252)) (Milos Djermanovic) - [`a1370ee`](eslint/eslint@a1370ee) ci: bump actions/setup-node from 5 to 6 ([#​20230](eslint/eslint#20230)) (dependabot\[bot]) - [`9e7fad4`](eslint/eslint@9e7fad4) chore: add script to auto-generate eslint:recommended configuration ([#​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 ([#​20048](eslint/eslint#20048)) (Atul Nair) - [`e37e590`](eslint/eslint@e37e590) feat: correct `no-loss-of-precision` false positives with `e` notation ([#​20187](eslint/eslint#20187)) (Francesco Trotta) #### Bug Fixes - [`50c3dfd`](eslint/eslint@50c3dfd) fix: improve type support for isolated dependencies in pnpm ([#​20201](eslint/eslint#20201)) (Francesco Trotta) - [`a1f06a3`](eslint/eslint@a1f06a3) fix: correct SourceCode typings ([#​20114](eslint/eslint#20114)) (Pixel998) #### Documentation - [`462675a`](eslint/eslint@462675a) docs: improve web accessibility by hiding non-semantic character ([#​20205](eslint/eslint#20205)) (루밀LuMir) - [`c070e65`](eslint/eslint@c070e65) docs: correct formatting in `no-irregular-whitespace` rule documentation ([#​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` ([#​20190](eslint/eslint#20190)) (Percy Ma) #### Chores - [`d17c795`](eslint/eslint@d17c795) chore: upgrade [@​eslint/js](https://github.com/eslint/js)@​9.38.0 ([#​20221](eslint/eslint#20221)) (Milos Djermanovic) - [`25d0e33`](eslint/eslint@25d0e33) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`c82b5ef`](eslint/eslint@c82b5ef) refactor: Use types from [@​eslint/core](https://github.com/eslint/core) ([#​20168](eslint/eslint#20168)) (Nicholas C. Zakas) - [`ff31609`](eslint/eslint@ff31609) ci: add Node.js 25 to `ci.yml` ([#​20220](eslint/eslint#20220)) (루밀LuMir) - [`004577e`](eslint/eslint@004577e) ci: bump github/codeql-action from 3 to 4 ([#​20211](eslint/eslint#20211)) (dependabot\[bot]) - [`eac71fb`](eslint/eslint@eac71fb) test: remove use of `nodejsScope` option of eslint-scope from tests ([#​20206](eslint/eslint#20206)) (Milos Djermanovic) - [`4168a18`](eslint/eslint@4168a18) chore: fix typo in legacy-eslint.js ([#​20202](eslint/eslint#20202)) (Sweta Tanwar) - [`205dbd2`](eslint/eslint@205dbd2) chore: fix typos ([#​20200](eslint/eslint#20200)) (ntnyq) - [`dbb200e`](eslint/eslint@dbb200e) chore: use team member's username when name is not available in data ([#​20194](eslint/eslint#20194)) (Milos Djermanovic) - [`8962089`](eslint/eslint@8962089) chore: mark deprecated rules as available until v11.0.0 ([#​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 ([#​20163](eslint/eslint#20163)) (Pixel998) - [`f81eabc`](eslint/eslint@f81eabc) feat: support TS syntax in `no-restricted-imports` ([#​19562](eslint/eslint#19562)) (Nitin Kumar) #### Bug Fixes - [`a129cce`](eslint/eslint@a129cce) fix: correct `no-loss-of-precision` false positives for leading zeros ([#​20164](eslint/eslint#20164)) (Francesco Trotta) - [`09e04fc`](eslint/eslint@09e04fc) fix: add missing AST token types ([#​20172](eslint/eslint#20172)) (Pixel998) - [`861c6da`](eslint/eslint@861c6da) fix: correct `ESLint` typings ([#​20122](eslint/eslint#20122)) (Pixel998) #### Documentation - [`b950359`](eslint/eslint@b950359) docs: fix typos across the docs ([#​20182](eslint/eslint#20182)) (루밀LuMir) - [`42498a2`](eslint/eslint@42498a2) docs: improve ToC accessibility by hiding non-semantic character ([#​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 ([#​20170](eslint/eslint#20170)) (Pixel998) - [`90a71bf`](eslint/eslint@90a71bf) docs: update `README` files to add badge and instructions ([#​20115](eslint/eslint#20115)) (루밀LuMir) - [`1603ae1`](eslint/eslint@1603ae1) docs: update references from `master` to `main` ([#​20153](eslint/eslint#20153)) (루밀LuMir) #### Chores - [`afe8a13`](eslint/eslint@afe8a13) chore: update `@eslint/js` dependency to version 9.37.0 ([#​20183](eslint/eslint#20183)) (Francesco Trotta) - [`abee4ca`](eslint/eslint@abee4ca) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`fc9381f`](eslint/eslint@fc9381f) chore: fix typos in comments ([#​20175](eslint/eslint#20175)) (overlookmotel) - [`e1574a2`](eslint/eslint@e1574a2) chore: unpin jiti ([#​20173](eslint/eslint#20173)) (renovate\[bot]) - [`e1ac05e`](eslint/eslint@e1ac05e) refactor: mark `ESLint.findConfigFile()` as `async`, add missing docs ([#​20157](eslint/eslint#20157)) (Pixel998) - [`347906d`](eslint/eslint@347906d) chore: update eslint ([#​20149](eslint/eslint#20149)) (renovate\[bot]) - [`0cb5897`](eslint/eslint@0cb5897) test: remove tmp dir created for circular fixes in multithread mode test ([#​20146](eslint/eslint#20146)) (Milos Djermanovic) - [`bb99566`](eslint/eslint@bb99566) ci: pin `jiti` to version 2.5.1 ([#​20151](eslint/eslint#20151)) (Pixel998) - [`177f669`](eslint/eslint@177f669) perf: improve worker count calculation for `"auto"` concurrency ([#​20067](eslint/eslint#20067)) (Francesco Trotta) - [`448b57b`](eslint/eslint@448b57b) chore: Mark deprecated formatting rules as available until v11.0.0 ([#​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 ([#​20109](eslint/eslint#20109)) (Francesco Trotta) #### Bug Fixes - [`75b74d8`](eslint/eslint@75b74d8) fix: add missing rule option types ([#​20127](eslint/eslint#20127)) (ntnyq) - [`1c0d850`](eslint/eslint@1c0d850) fix: update `eslint-all.js` to use `Object.freeze` for `rules` object ([#​20116](eslint/eslint#20116)) (루밀LuMir) - [`7d61b7f`](eslint/eslint@7d61b7f) fix: add missing scope types to `Scope.type` ([#​20110](eslint/eslint#20110)) (Pixel998) - [`7a670c3`](eslint/eslint@7a670c3) fix: correct rule option typings in `rules.d.ts` ([#​20084](eslint/eslint#20084)) (Pixel998) #### Documentation - [`b73ab12`](eslint/eslint@b73ab12) docs: update examples to use `defineConfig` ([#​20131](eslint/eslint#20131)) (sethamus) - [`31d9392`](eslint/eslint@31d9392) docs: fix typos ([#​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 [@​eslint/js](https://github.com/eslint/js)@​9.36.0 ([#​20139](eslint/eslint#20139)) (Milos Djermanovic) - [`488cba6`](eslint/eslint@488cba6) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`bac82a2`](eslint/eslint@bac82a2) ci: simplify renovate configuration ([#​19907](eslint/eslint#19907)) (唯然) - [`c00bb37`](eslint/eslint@c00bb37) ci: bump actions/labeler from 5 to 6 ([#​20090](eslint/eslint#20090)) (dependabot\[bot]) - [`fee751d`](eslint/eslint@fee751d) refactor: use `defaultOptions` in rules ([#​20121](eslint/eslint#20121)) (Pixel998) - [`1ace67d`](eslint/eslint@1ace67d) chore: update example to use `defineConfig` ([#​20111](eslint/eslint#20111)) (루밀LuMir) - [`4821963`](eslint/eslint@4821963) test: add missing loc information to error objects in rule tests ([#​20112](eslint/eslint#20112)) (루밀LuMir) - [`b42c42e`](eslint/eslint@b42c42e) chore: disallow use of deprecated `type` property in core rule tests ([#​20094](eslint/eslint#20094)) (Milos Djermanovic) - [`7bb498d`](eslint/eslint@7bb498d) test: remove deprecated `type` property from core rule tests ([#​20093](eslint/eslint#20093)) (Pixel998) - [`e10cf2a`](eslint/eslint@e10cf2a) ci: bump actions/setup-node from 4 to 5 ([#​20089](eslint/eslint#20089)) (dependabot\[bot]) - [`5cb0ce4`](eslint/eslint@5cb0ce4) refactor: use `meta.defaultOptions` in `preserve-caught-error` ([#​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` ([#​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 ([#​20057](eslint/eslint#20057)) (jaymarvelz) - [`102f444`](eslint/eslint@102f444) feat: implement suggestions for no-empty-static-block ([#​20056](eslint/eslint#20056)) (jaymarvelz) - [`e51ffff`](eslint/eslint@e51ffff) feat: add `preserve-caught-error` rule ([#​19913](eslint/eslint#19913)) (Amnish Singh Arora) #### Bug Fixes - [`10e7ae2`](eslint/eslint@10e7ae2) fix: update uncloneable options error message ([#​20059](eslint/eslint#20059)) (soda-sorcery) - [`bfa4601`](eslint/eslint@bfa4601) fix: ignore empty switch statements with comments in no-empty rule ([#​20045](eslint/eslint#20045)) (jaymarvelz) - [`dfd11de`](eslint/eslint@dfd11de) fix: add `before` and `after` to test case types ([#​20049](eslint/eslint#20049)) (Francesco Trotta) - [`dabbe95`](eslint/eslint@dabbe95) fix: correct types for `no-restricted-imports` rule ([#​20034](eslint/eslint#20034)) (Milos Djermanovic) - [`ea789c7`](eslint/eslint@ea789c7) fix: no-loss-of-precision false positive with uppercase exponent ([#​20032](eslint/eslint#20032)) (sethamus) #### Documentation - [`d265515`](eslint/eslint@d265515) docs: improve phrasing - "if" → "even if" from getting-started section ([#​20074](eslint/eslint#20074)) (jjangga0214) - [`a355a0e`](eslint/eslint@a355a0e) docs: invert comparison logic for example in `no-var` doc page ([#​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 ([#​20050](eslint/eslint#20050)) (Josh Goldberg ✨) - [`6ad8973`](eslint/eslint@6ad8973) docs: update `--no-ignore` and `--ignore-pattern` documentation ([#​20036](eslint/eslint#20036)) (Francesco Trotta) - [`8033b19`](eslint/eslint@8033b19) docs: add documentation for `--no-config-lookup` ([#​20033](eslint/eslint#20033)) (Francesco Trotta) #### Chores - [`da87f2f`](eslint/eslint@da87f2f) chore: upgrade [@​eslint/js](https://github.com/eslint/js)@​9.35.0 ([#​20077](eslint/eslint#20077)) (Milos Djermanovic) - [`af2a087`](eslint/eslint@af2a087) chore: package.json update for [@​eslint/js](https://github.com/eslint/js) release (Jenkins) - [`7055764`](eslint/eslint@7055764) test: remove `tests/lib/eslint/eslint.config.js` ([#​20065](eslint/eslint#20065)) (Milos Djermanovic) - [`84ffb96`](eslint/eslint@84ffb96) chore: update `@eslint-community/eslint-utils` ([#​20069](eslint/eslint#20069)) (Francesco Trotta) - [`d5ef939`](eslint/eslint@d5ef939) refactor: remove deprecated `context.parserOptions` usage across rules ([#​20060](eslint/eslint#20060)) (sethamus) - [`1b3881d`](eslint/eslint@1b3881d) chore: remove redundant word ([#​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 ([#​18383](prettier/prettier#18383) by [@​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 ([#​18393](prettier/prettier#18393) by [@​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 ([#​18395](prettier/prettier#18395) by [@​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 ([#​18375](prettier/prettier#18375) by [@​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 ([#​18351](prettier/prettier#18351) by [@​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 ([#​18352](prettier/prettier#18352) by [@​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 ([#​18364](prettier/prettier#18364) by [@​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 ([#​18342](prettier/prettier#18342) by [@​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` ([#​8850](stylelint/stylelint#8850)) ([@​romainmenke](https://github.com/romainmenke)). - Fixed: `at-rule-no-unknown` false positives for `@function` ([#​8851](stylelint/stylelint#8851)) ([@​jeddy3](https://github.com/jeddy3)). - Fixed: `declaration-property-value-no-unknown` false positives for `attr()`, `if()` and custom functions ([#​8853](stylelint/stylelint#8853)) ([@​jeddy3](https://github.com/jeddy3)). - Fixed: `function-url-quotes` false positives when URLs require quoting ([#​8804](stylelint/stylelint#8804)) ([@​taearls](https://github.com/taearls)). - Fixed: `selector-pseudo-element-no-unknown` false positives for `::scroll-button()` ([#​8856](stylelint/stylelint#8856)) ([@​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 ([#​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)). ### [`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 ([#​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)). ### [`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 ([#​8680](stylelint/stylelint#8680)) ([@​sw1tch3roo](https://github.com/sw1tch3roo)). - Added: `ignoreAtRules: []` to `nesting-selector-no-missing-scoping-root` ([#​8743](stylelint/stylelint#8743)) ([@​karlhorky](https://github.com/karlhorky)). - Fixed: `function-no-unknown` false positives for `contrast-color()` and `sibling-*()` ([#​8729](stylelint/stylelint#8729)) ([@​Mouvedia](https://github.com/Mouvedia)). - Fixed: `selector-pseudo-class-no-unknown` false positives for `:heading` ([#​8749](stylelint/stylelint#8749)) ([@​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>
Closes #8805
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.