fix(lint/css): recognize Vue :deep() pseudo-class - #11184
Conversation
🦋 Changeset detectedLatest commit: d5ec621 The changes in this PR will be included in the next version bump. This PR includes changesets to release 13 packages
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 |
❌ Automation signalsActivity patterns show signs of automation. This is an automated analysis by AgentScan |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
WalkthroughThe Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
crates/biome_css_analyze/src/lint/correctness/no_unknown_pseudo_class.rs (1)
217-217: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDocument the new Vue exception in rustdoc.
This rule change adds
:deep()as a valid Vue embedded pseudo-class, but the rule documentation is not updated. Add a valid example or a short note so generated rule documentation describes this exception.As per coding guidelines, Rust rule changes must be documented with rustdoc.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/biome_css_analyze/src/lint/correctness/no_unknown_pseudo_class.rs` at line 217, Update the rustdoc for the rule containing the Vue-specific check in the unknown pseudo-class analyzer to document that :deep() is valid when analyzing Vue embedded files. Add either a concise explanatory note or a valid usage example, while preserving the existing documentation for other contexts.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@crates/biome_css_analyze/src/lint/correctness/no_unknown_pseudo_class.rs`:
- Line 217: Update the rustdoc for the rule containing the Vue-specific check in
the unknown pseudo-class analyzer to document that :deep() is valid when
analyzing Vue embedded files. Add either a concise explanatory note or a valid
usage example, while preserving the existing documentation for other contexts.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 9f0b6a77-525b-46be-8ff0-0a535f48068a
⛔ Files ignored due to path filters (1)
crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_vue_deep_pseudo_class.snapis excluded by!**/*.snapand included by**
📒 Files selected for processing (3)
.changeset/big-paws-divide.mdcrates/biome_cli/tests/cases/handle_vue_files.rscrates/biome_css_analyze/src/lint/correctness/no_unknown_pseudo_class.rs
Merging this PR will not alter performance
Comparing Footnotes
|
This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.6` -> `2.5.7`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.6/2.5.7) | `2.5.8` | --- ### Release Notes <details> <summary>biomejs/biome (@​biomejs/biome)</summary> ### [`v2.5.7`](https://github.com/biomejs/biome/blob/HEAD/packages/@​biomejs/biome/CHANGELOG.md#257) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.6...@biomejs/biome@2.5.7) ##### Patch Changes - [#​10822](biomejs/biome#10822) [`c171b3b`](biomejs/biome@c171b3b) Thanks [@​pkallos](https://github.com/pkallos)! - Added the option `ignoreIfStatements` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). Biome now flags `if` statements that only assign to a nullish variable (such as `if (!a) { a = b }`) and can rewrite them to `??=`. When enabled, Biome ignores those `if` statements. - [#​11136](biomejs/biome#11136) [`e63354c`](biomejs/biome@e63354c) Thanks [@​AkashNaickar](https://github.com/AkashNaickar)! - Added a new nursery rule [`noExtendNative`](https://biomejs.dev/linter/rules/no-extend-native/), which reports extending the prototype of a built-in object. - [#​10094](biomejs/biome#10094) [`e007143`](biomejs/biome@e007143) Thanks [@​THEjacob1000](https://github.com/THEjacob1000)! - Added the nursery rule [`noTailwindArbitraryValue`](https://biomejs.dev/linter/rules/no-tailwind-arbitrary-value/). Biome now reports Tailwind CSS arbitrary values such as `w-[400px]`, including in HTML/JSX class attributes, configured utility functions, and tagged templates. - [#​11184](biomejs/biome#11184) [`135f476`](biomejs/biome@135f476) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11176](biomejs/biome#11176): `noUnknownPseudoClass` now recognizes Vue's `:deep()` pseudo-class inside `.vue` style blocks. - [#​8239](biomejs/biome#8239) [`a519f9d`](biomejs/biome@a519f9d) Thanks [@​cormacrelf](https://github.com/cormacrelf)! - Fixed [#​8233](biomejs/biome#8233), where Biome CLI in stdin mode didn't work correctly when handling files in projects with nested configurations. For example, with the following structure, `--stdin-file-path=subdirectory/...` would not use the nested configuration in `subdirectory/biome.json`: ``` ├── biome.json └── subdirectory ├── biome.json └── lib.js ``` ```shell biome format --write --stdin-file-path=subdirectory/lib.js < subdirectory/lib.js ``` Now, the nested configuration is correctly picked up and applied. In addition, Biome now shows a warning if `--stdin-file-path` is provided but that path is ignored and therefore not formatted or fixed. - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/): Biome now chooses the same function overload as TypeScript when an argument is a callback, so conditions that were previously missed are reported. The following code is now invalid, because a parameter typed `() => void` accepts an `async` callback and `schedule` therefore returns `string`: ```ts declare function schedule(handler: () => void): string; declare function schedule(handler: () => Promise<void>): string | undefined; schedule(async () => {}) ?? "fallback"; ``` The following code is also now invalid, because `map(() => 42)` returns `42`: ```ts type Mapper<T> = () => T; declare function map<T>(mapper: Mapper<T>): T; map(() => 42) || flag; ``` - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​11087](biomejs/biome#11087): [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) no longer reports optional chains and nullish coalescing whose receiver can be nullish. For example, the optional chain and fallback in the following code are no longer reported: ```ts declare const usage: { range: { startDate: string } } | null; const startDate = usage?.range.startDate ?? "N/A"; ``` - [#​11118](biomejs/biome#11118) [`9c16840`](biomejs/biome@9c16840) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11098](biomejs/biome#11098): The HTML formatter now preserves the configured trailing newline when a file ends with a comment. ```diff -<!-- trailing comment --> \ No newline at end of file +<!-- trailing comment --> ``` - [#​11201](biomejs/biome#11201) [`0e80610`](biomejs/biome@0e80610) Thanks [@​Bishwas-py](https://github.com/Bishwas-py)! - Fixed [#​11182](biomejs/biome#11182): suppression comments for [`noPositiveTabindex`](https://biomejs.dev/linter/rules/no-positive-tabindex/) now suppress the rule in HTML files when the attributes of the element span multiple lines. - [#​11079](biomejs/biome#11079) [`607afd2`](biomejs/biome@607afd2) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now lays out the `srcset` attribute of `<img>` and `<source>` as the list of candidates it is. Runs of whitespace between candidates collapse, and once the list no longer fits on one line each candidate goes on its own line with the descriptors aligned: ```diff - <img srcset="/visual@0.5.png 400w, /visual.png 805w, /visual@2x.png 1610w, /visual@3x.png 2415w" /> + <img + srcset=" + /visual@0.5.png 400w, + /visual.png 805w, + /visual@2x.png 1610w, + /visual@3x.png 2415w + " + /> ``` - [#​11156](biomejs/biome#11156) [`fed72c7`](biomejs/biome@fed72c7) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11129](biomejs/biome#11129): [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) no longer reports Vue bindings as unused when they are assigned through automatically unwrapped template refs. - [#​11124](biomejs/biome#11124) [`d890b39`](biomejs/biome@d890b39) Thanks [@​denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting of line comments between a declaration colon and value to preserve their source indentation. ```diff .test { background: - /////// foo - // bar + /////// foo + // bar radial-gradient(circle, #​000, transparent); } ``` - [#​11113](biomejs/biome#11113) [`3d8ab73`](biomejs/biome@3d8ab73) Thanks [@​denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting of long block comments between comma-separated property values: ```diff .foo { box-shadow: - 1000px /* long long long long long long long long long long long long comment */ 1000px /* long long long long long long long long long comment */ 2px color(srgb 0.555555555 0.555555555 0.555555555), + 1000px + /* long long long long long long long long long long long long comment */ + 1000px /* long long long long long long long long long comment */ 2px + color(srgb 0.555555555 0.555555555 0.555555555), 1px 1px black; } ``` - [#​11127](biomejs/biome#11127) [`da5c1a5`](biomejs/biome@da5c1a5) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now picks the quote character for an attribute by counting the quotes in the value rather than looking only for a double quote. `'` and `"` count as the characters they stand for, and only the character that ends up as the delimiter stays escaped: ```diff - <div title='123 '" 456'></div> + <div title="123 '" 456"></div> ``` Entities that are not quotes, such as `&` or `&[#​39](https://github.com/biomejs/biome/issues/39);`, are left exactly as written. - [#​11193](biomejs/biome#11193) [`77035bb`](biomejs/biome@77035bb) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter collapsing the blank line between an element and the text that follows it. A blank line before text is now kept, the way one before another element already was: ```diff <div>foo</div> - text ``` - [#​11106](biomejs/biome#11106) [`ad80f57`](biomejs/biome@ad80f57) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now writes the HTML5 doctype in lowercase, matching Prettier: ```diff - <!DOCTYPE html> + <!doctype html> ``` This only applies to a plain `.html` file whose doctype stands alone. A doctype that names a DTD keeps the case it was written with, since the rest of the declaration is not lowercased either: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> ``` A `.vue`, `.svelte`, or `.astro` file keeps whatever the author wrote. - [#​11188](biomejs/biome#11188) [`60679db`](biomejs/biome@60679db) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter printing a comment twice when it ended the line of the last element in a document: ```diff - text<!-- a --><!-- a --> + text<!-- a --> ``` - [#​11077](biomejs/biome#11077) [`4dcd0d9`](biomejs/biome@4dcd0d9) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed a bug where the HTML formatter collapsed the whitespace inside `<textarea>`, `<xmp>` and `<plaintext>`, changing what the page renders. ```diff - <textarea> - line one - line two </textarea> + <textarea>line one line two</textarea> ``` Biome now prints the content of these elements exactly as it appears in the source, matching the existing behavior for `<pre>`. - [#​11194](biomejs/biome#11194) [`abfbb11`](biomejs/biome@abfbb11) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter refusing to format a Svelte file containing an array pattern that skips a position: ```svelte {#each animals as [, value]} <p>{value}</p> {/each} ``` - [#​10094](biomejs/biome#10094) [`e007143`](biomejs/biome@e007143) Thanks [@​THEjacob1000](https://github.com/THEjacob1000)! - Fixed [`useSortedClasses`](https://biomejs.dev/linter/rules/use-sorted-classes/) to correctly detect unsorted classes in static member expression tagged templates (e.g. `tw.div\`...\`\`). Previously, these were silently skipped due to surrounding whitespace trivia not being stripped from the tag name. - [#​11078](biomejs/biome#11078) [`10da30e`](biomejs/biome@10da30e) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed Vue single-file components failing to parse when they contain a custom block such as `<i18n>` or `<docs>`, or a `<template>` written in another language. Their content is no longer read as HTML, so a block may hold whatever its own tooling expects: ```vue <docs> This block is prose, and it may mention a `<my-component>` without closing it. </docs> <template lang="pug"> .test #foo </template> ``` Previously both blocks produced a parse error and the whole file was left unformatted. Biome now prints their content unchanged while still formatting the opening tag. - [#​11231](biomejs/biome#11231) [`4afd901`](biomejs/biome@4afd901) Thanks [@​ematipico](https://github.com/ematipico)! - Improved the performance of the following lint rules: - [`noArguments`](https://biomejs.dev/linter/rules/no-arguments/). - [`noGlobalAssign`](https://biomejs.dev/linter/rules/no-global-assign/). - [`noUndeclaredVariables`](https://biomejs.dev/linter/rules/no-undeclared-variables/). - [`noRestrictedGlobals`](https://biomejs.dev/linter/rules/no-restricted-globals/). - [`noInvalidUseBeforeDeclaration`](https://biomejs.dev/linter/rules/no-invalid-use-before-declaration/). - [`noShadow`](https://biomejs.dev/linter/rules/no-shadow/). - [`noRedeclare`](https://biomejs.dev/linter/rules/no-redeclare/). - [#​11134](biomejs/biome#11134) [`2fa0a62`](biomejs/biome@2fa0a62) Thanks [@​yanthomasdev](https://github.com/yanthomasdev)! - Clarified the warning emitted when using the experimental `json` and `json-pretty` reporters. - [#​11198](biomejs/biome#11198) [`ed88b13`](biomejs/biome@ed88b13) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11171](biomejs/biome#11171): variables referenced only inside a Svelte attachment (`{@Attach ...}`) are no longer reported as unused by [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) and [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/). - [#​11155](biomejs/biome#11155) [`6ee17ea`](biomejs/biome@6ee17ea) Thanks [@​dyc3](https://github.com/dyc3)! - Improved performance when printing diagnostics to the console. - [#​11160](biomejs/biome#11160) [`217f8ad`](biomejs/biome@217f8ad) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) by skipping type inference for assignment statements, which are always considered handled. - [#​11159](biomejs/biome#11159) [`26c23d9`](biomejs/biome@26c23d9) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11144](biomejs/biome#11144): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports already-awaited optional Promise values. - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​11121](biomejs/biome#11121): [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) no longer reports conditions based on an inapplicable function overload. For example, the condition in the following code is no longer reported because `query({})` selects the overload that returns `boolean`: ```ts declare function query(options: { initial: string }): { isPending: false }; declare function query(options: { initial?: string }): { isPending: boolean }; const { isPending } = query({}); isPending || fallback; ``` - [#​11152](biomejs/biome#11152) [`c4fc6a9`](biomejs/biome@c4fc6a9) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of collecting rule timings with `--profile-rules` in heavily multithreaded environments. - [#​11128](biomejs/biome#11128) [`4d3ff76`](biomejs/biome@4d3ff76) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​7635](biomejs/biome#7635): [`noDeprecatedImports`](https://biomejs.dev/linter/rules/no-deprecated-imports/) now detects deprecated ambient declarations that are exported separately. - [#​11117](biomejs/biome#11117) [`01f7ef5`](biomejs/biome@01f7ef5) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11014](biomejs/biome#11014): [`noDelete`](https://biomejs.dev/linter/rules/no-delete/) no longer reports `process.env["FOO"]` style property deletions. - [#​11168](biomejs/biome#11168) [`9847e68`](biomejs/biome@9847e68) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Added the nursery rule [`noNonScalableViewport`](https://biomejs.dev/linter/rules/no-non-scalable-viewport), which reports viewport metadata that disables user scaling with `user-scalable=no`. For example: ```html <meta name="viewport" content="width=device-width, user-scalable=no" /> ``` - [#​11154](biomejs/biome#11154) [`a1d6b1f`](biomejs/biome@a1d6b1f) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of [`noImportCycles`](https://biomejs.dev/linter/rules/no-import-cycles/) by skipping graph traversals for imports that cannot be part of a cycle. - [#​11175](biomejs/biome#11175) [`d96d6dd`](biomejs/biome@d96d6dd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed CSS parsing of registered custom properties: Biome now correctly validates the `syntax` descriptor of `@property` rules. </details> --- ### Configuration 📅 **Schedule**: (UTC) - 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. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC44LjAiLCJ1cGRhdGVkSW5WZXIiOiI0NC44LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Client/pulls/16
This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.6` -> `2.5.7`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.6/2.5.7) | `2.5.8` | --- ### Release Notes <details> <summary>biomejs/biome (@​biomejs/biome)</summary> ### [`v2.5.7`](https://github.com/biomejs/biome/blob/HEAD/packages/@​biomejs/biome/CHANGELOG.md#257) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.6...@biomejs/biome@2.5.7) ##### Patch Changes - [#​10822](biomejs/biome#10822) [`c171b3b`](biomejs/biome@c171b3b) Thanks [@​pkallos](https://github.com/pkallos)! - Added the option `ignoreIfStatements` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). Biome now flags `if` statements that only assign to a nullish variable (such as `if (!a) { a = b }`) and can rewrite them to `??=`. When enabled, Biome ignores those `if` statements. - [#​11136](biomejs/biome#11136) [`e63354c`](biomejs/biome@e63354c) Thanks [@​AkashNaickar](https://github.com/AkashNaickar)! - Added a new nursery rule [`noExtendNative`](https://biomejs.dev/linter/rules/no-extend-native/), which reports extending the prototype of a built-in object. - [#​10094](biomejs/biome#10094) [`e007143`](biomejs/biome@e007143) Thanks [@​THEjacob1000](https://github.com/THEjacob1000)! - Added the nursery rule [`noTailwindArbitraryValue`](https://biomejs.dev/linter/rules/no-tailwind-arbitrary-value/). Biome now reports Tailwind CSS arbitrary values such as `w-[400px]`, including in HTML/JSX class attributes, configured utility functions, and tagged templates. - [#​11184](biomejs/biome#11184) [`135f476`](biomejs/biome@135f476) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11176](biomejs/biome#11176): `noUnknownPseudoClass` now recognizes Vue's `:deep()` pseudo-class inside `.vue` style blocks. - [#​8239](biomejs/biome#8239) [`a519f9d`](biomejs/biome@a519f9d) Thanks [@​cormacrelf](https://github.com/cormacrelf)! - Fixed [#​8233](biomejs/biome#8233), where Biome CLI in stdin mode didn't work correctly when handling files in projects with nested configurations. For example, with the following structure, `--stdin-file-path=subdirectory/...` would not use the nested configuration in `subdirectory/biome.json`: ``` ├── biome.json └── subdirectory ├── biome.json └── lib.js ``` ```shell biome format --write --stdin-file-path=subdirectory/lib.js < subdirectory/lib.js ``` Now, the nested configuration is correctly picked up and applied. In addition, Biome now shows a warning if `--stdin-file-path` is provided but that path is ignored and therefore not formatted or fixed. - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/): Biome now chooses the same function overload as TypeScript when an argument is a callback, so conditions that were previously missed are reported. The following code is now invalid, because a parameter typed `() => void` accepts an `async` callback and `schedule` therefore returns `string`: ```ts declare function schedule(handler: () => void): string; declare function schedule(handler: () => Promise<void>): string | undefined; schedule(async () => {}) ?? "fallback"; ``` The following code is also now invalid, because `map(() => 42)` returns `42`: ```ts type Mapper<T> = () => T; declare function map<T>(mapper: Mapper<T>): T; map(() => 42) || flag; ``` - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​11087](biomejs/biome#11087): [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) no longer reports optional chains and nullish coalescing whose receiver can be nullish. For example, the optional chain and fallback in the following code are no longer reported: ```ts declare const usage: { range: { startDate: string } } | null; const startDate = usage?.range.startDate ?? "N/A"; ``` - [#​11118](biomejs/biome#11118) [`9c16840`](biomejs/biome@9c16840) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11098](biomejs/biome#11098): The HTML formatter now preserves the configured trailing newline when a file ends with a comment. ```diff -<!-- trailing comment --> \ No newline at end of file +<!-- trailing comment --> ``` - [#​11201](biomejs/biome#11201) [`0e80610`](biomejs/biome@0e80610) Thanks [@​Bishwas-py](https://github.com/Bishwas-py)! - Fixed [#​11182](biomejs/biome#11182): suppression comments for [`noPositiveTabindex`](https://biomejs.dev/linter/rules/no-positive-tabindex/) now suppress the rule in HTML files when the attributes of the element span multiple lines. - [#​11079](biomejs/biome#11079) [`607afd2`](biomejs/biome@607afd2) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now lays out the `srcset` attribute of `<img>` and `<source>` as the list of candidates it is. Runs of whitespace between candidates collapse, and once the list no longer fits on one line each candidate goes on its own line with the descriptors aligned: ```diff - <img srcset="/visual@0.5.png 400w, /visual.png 805w, /visual@2x.png 1610w, /visual@3x.png 2415w" /> + <img + srcset=" + /visual@0.5.png 400w, + /visual.png 805w, + /visual@2x.png 1610w, + /visual@3x.png 2415w + " + /> ``` - [#​11156](biomejs/biome#11156) [`fed72c7`](biomejs/biome@fed72c7) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11129](biomejs/biome#11129): [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) no longer reports Vue bindings as unused when they are assigned through automatically unwrapped template refs. - [#​11124](biomejs/biome#11124) [`d890b39`](biomejs/biome@d890b39) Thanks [@​denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting of line comments between a declaration colon and value to preserve their source indentation. ```diff .test { background: - /////// foo - // bar + /////// foo + // bar radial-gradient(circle, #​000, transparent); } ``` - [#​11113](biomejs/biome#11113) [`3d8ab73`](biomejs/biome@3d8ab73) Thanks [@​denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting of long block comments between comma-separated property values: ```diff .foo { box-shadow: - 1000px /* long long long long long long long long long long long long comment */ 1000px /* long long long long long long long long long comment */ 2px color(srgb 0.555555555 0.555555555 0.555555555), + 1000px + /* long long long long long long long long long long long long comment */ + 1000px /* long long long long long long long long long comment */ 2px + color(srgb 0.555555555 0.555555555 0.555555555), 1px 1px black; } ``` - [#​11127](biomejs/biome#11127) [`da5c1a5`](biomejs/biome@da5c1a5) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now picks the quote character for an attribute by counting the quotes in the value rather than looking only for a double quote. `'` and `"` count as the characters they stand for, and only the character that ends up as the delimiter stays escaped: ```diff - <div title='123 '" 456'></div> + <div title="123 '" 456"></div> ``` Entities that are not quotes, such as `&` or `&[#​39](https://github.com/biomejs/biome/issues/39);`, are left exactly as written. - [#​11193](biomejs/biome#11193) [`77035bb`](biomejs/biome@77035bb) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter collapsing the blank line between an element and the text that follows it. A blank line before text is now kept, the way one before another element already was: ```diff <div>foo</div> - text ``` - [#​11106](biomejs/biome#11106) [`ad80f57`](biomejs/biome@ad80f57) Thanks [@​dyc3](https://github.com/dyc3)! - The HTML formatter now writes the HTML5 doctype in lowercase, matching Prettier: ```diff - <!DOCTYPE html> + <!doctype html> ``` This only applies to a plain `.html` file whose doctype stands alone. A doctype that names a DTD keeps the case it was written with, since the rest of the declaration is not lowercased either: ```html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> ``` A `.vue`, `.svelte`, or `.astro` file keeps whatever the author wrote. - [#​11188](biomejs/biome#11188) [`60679db`](biomejs/biome@60679db) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter printing a comment twice when it ended the line of the last element in a document: ```diff - text<!-- a --><!-- a --> + text<!-- a --> ``` - [#​11077](biomejs/biome#11077) [`4dcd0d9`](biomejs/biome@4dcd0d9) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed a bug where the HTML formatter collapsed the whitespace inside `<textarea>`, `<xmp>` and `<plaintext>`, changing what the page renders. ```diff - <textarea> - line one - line two </textarea> + <textarea>line one line two</textarea> ``` Biome now prints the content of these elements exactly as it appears in the source, matching the existing behavior for `<pre>`. - [#​11194](biomejs/biome#11194) [`abfbb11`](biomejs/biome@abfbb11) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed the HTML formatter refusing to format a Svelte file containing an array pattern that skips a position: ```svelte {#each animals as [, value]} <p>{value}</p> {/each} ``` - [#​10094](biomejs/biome#10094) [`e007143`](biomejs/biome@e007143) Thanks [@​THEjacob1000](https://github.com/THEjacob1000)! - Fixed [`useSortedClasses`](https://biomejs.dev/linter/rules/use-sorted-classes/) to correctly detect unsorted classes in static member expression tagged templates (e.g. `tw.div\`...\`\`). Previously, these were silently skipped due to surrounding whitespace trivia not being stripped from the tag name. - [#​11078](biomejs/biome#11078) [`10da30e`](biomejs/biome@10da30e) Thanks [@​dyc3](https://github.com/dyc3)! - Fixed Vue single-file components failing to parse when they contain a custom block such as `<i18n>` or `<docs>`, or a `<template>` written in another language. Their content is no longer read as HTML, so a block may hold whatever its own tooling expects: ```vue <docs> This block is prose, and it may mention a `<my-component>` without closing it. </docs> <template lang="pug"> .test #foo </template> ``` Previously both blocks produced a parse error and the whole file was left unformatted. Biome now prints their content unchanged while still formatting the opening tag. - [#​11231](biomejs/biome#11231) [`4afd901`](biomejs/biome@4afd901) Thanks [@​ematipico](https://github.com/ematipico)! - Improved the performance of the following lint rules: - [`noArguments`](https://biomejs.dev/linter/rules/no-arguments/). - [`noGlobalAssign`](https://biomejs.dev/linter/rules/no-global-assign/). - [`noUndeclaredVariables`](https://biomejs.dev/linter/rules/no-undeclared-variables/). - [`noRestrictedGlobals`](https://biomejs.dev/linter/rules/no-restricted-globals/). - [`noInvalidUseBeforeDeclaration`](https://biomejs.dev/linter/rules/no-invalid-use-before-declaration/). - [`noShadow`](https://biomejs.dev/linter/rules/no-shadow/). - [`noRedeclare`](https://biomejs.dev/linter/rules/no-redeclare/). - [#​11134](biomejs/biome#11134) [`2fa0a62`](biomejs/biome@2fa0a62) Thanks [@​yanthomasdev](https://github.com/yanthomasdev)! - Clarified the warning emitted when using the experimental `json` and `json-pretty` reporters. - [#​11198](biomejs/biome#11198) [`ed88b13`](biomejs/biome@ed88b13) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11171](biomejs/biome#11171): variables referenced only inside a Svelte attachment (`{@Attach ...}`) are no longer reported as unused by [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) and [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/). - [#​11155](biomejs/biome#11155) [`6ee17ea`](biomejs/biome@6ee17ea) Thanks [@​dyc3](https://github.com/dyc3)! - Improved performance when printing diagnostics to the console. - [#​11160](biomejs/biome#11160) [`217f8ad`](biomejs/biome@217f8ad) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) by skipping type inference for assignment statements, which are always considered handled. - [#​11159](biomejs/biome#11159) [`26c23d9`](biomejs/biome@26c23d9) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Fixed [#​11144](biomejs/biome#11144): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports already-awaited optional Promise values. - [#​11138](biomejs/biome#11138) [`8c2c6bd`](biomejs/biome@8c2c6bd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​11121](biomejs/biome#11121): [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) no longer reports conditions based on an inapplicable function overload. For example, the condition in the following code is no longer reported because `query({})` selects the overload that returns `boolean`: ```ts declare function query(options: { initial: string }): { isPending: false }; declare function query(options: { initial?: string }): { isPending: boolean }; const { isPending } = query({}); isPending || fallback; ``` - [#​11152](biomejs/biome#11152) [`c4fc6a9`](biomejs/biome@c4fc6a9) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of collecting rule timings with `--profile-rules` in heavily multithreaded environments. - [#​11128](biomejs/biome#11128) [`4d3ff76`](biomejs/biome@4d3ff76) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [#​7635](biomejs/biome#7635): [`noDeprecatedImports`](https://biomejs.dev/linter/rules/no-deprecated-imports/) now detects deprecated ambient declarations that are exported separately. - [#​11117](biomejs/biome#11117) [`01f7ef5`](biomejs/biome@01f7ef5) Thanks [@​subotac](https://github.com/subotac)! - Fixed [#​11014](biomejs/biome#11014): [`noDelete`](https://biomejs.dev/linter/rules/no-delete/) no longer reports `process.env["FOO"]` style property deletions. - [#​11168](biomejs/biome#11168) [`9847e68`](biomejs/biome@9847e68) Thanks [@​saberoueslati](https://github.com/saberoueslati)! - Added the nursery rule [`noNonScalableViewport`](https://biomejs.dev/linter/rules/no-non-scalable-viewport), which reports viewport metadata that disables user scaling with `user-scalable=no`. For example: ```html <meta name="viewport" content="width=device-width, user-scalable=no" /> ``` - [#​11154](biomejs/biome#11154) [`a1d6b1f`](biomejs/biome@a1d6b1f) Thanks [@​dyc3](https://github.com/dyc3)! - Improved the performance of [`noImportCycles`](https://biomejs.dev/linter/rules/no-import-cycles/) by skipping graph traversals for imports that cannot be part of a cycle. - [#​11175](biomejs/biome#11175) [`d96d6dd`](biomejs/biome@d96d6dd) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed CSS parsing of registered custom properties: Biome now correctly validates the `syntax` descriptor of `@property` rules. </details> --- ### Configuration 📅 **Schedule**: (UTC) - 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. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC44LjAiLCJ1cGRhdGVkSW5WZXIiOiI0NC44LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Server/pulls/34
Summary
Fixes #11176.
Changes
noUnknownPseudoClassincorrectly reporting Vue:deep()as an unknown pseudo-class..vuefiles; regular CSS behavior is unchanged.:deep()is accepted.:unknownis still correctly reported.Validation
:deep()without diagnostics.:unknown) continue to produce diagnostics..vueCSS remains unchanged.