Skip to content

fix(lint): detect Solid destructured props in JSX children#10763

Merged
ematipico merged 3 commits into
biomejs:mainfrom
Aqu1bp:fix/no-solid-destructured-props-jsx-usage
Jul 1, 2026
Merged

fix(lint): detect Solid destructured props in JSX children#10763
ematipico merged 3 commits into
biomejs:mainfrom
Aqu1bp:fix/no-solid-destructured-props-jsx-usage

Conversation

@Aqu1bp

@Aqu1bp Aqu1bp commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #10742

noSolidDestructuredProps now reports destructured props in Solid function components and JSX children.

AI assistance disclosure: I used Codex to help implement this fix and tests. I reviewed and validated the changes locally.

Test Plan

Added regression cases for function components, JSX children, function expressions, and exported functions.

Ran:

cargo test -p biome_js_analyze --test spec_tests no_solid_destructured_props
cargo test -p biome_js_analyze
cargo lint
cargo fmt --check
cargo format
pnpm format
cargo run -p xtask_codegen -- analyzer
cargo run -p xtask_codegen --features configuration -- configuration

Docs

N/A

@changeset-bot

changeset-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: afe94ea

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

This PR includes changesets to release 13 packages
Name Type
@biomejs/biome Patch
@biomejs/cli-win32-x64 Patch
@biomejs/cli-win32-arm64 Patch
@biomejs/cli-darwin-x64 Patch
@biomejs/cli-darwin-arm64 Patch
@biomejs/cli-linux-x64 Patch
@biomejs/cli-linux-arm64 Patch
@biomejs/cli-linux-x64-musl Patch
@biomejs/cli-linux-arm64-musl Patch
@biomejs/wasm-web Patch
@biomejs/wasm-bundler Patch
@biomejs/wasm-nodejs Patch
@biomejs/backend-jsonrpc 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

@github-actions

Copy link
Copy Markdown
Contributor

✅ Organic activity

No automation signals detected in the analyzed events.

View full analysis →

This is an automated analysis by AgentScan

@github-actions github-actions Bot added A-Linter Area: linter L-JavaScript Language: JavaScript and super languages labels Jun 25, 2026
@codspeed-hq

codspeed-hq Bot commented Jun 25, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 58 untouched benchmarks
⏩ 196 skipped benchmarks1


Comparing Aqu1bp:fix/no-solid-destructured-props-jsx-usage (afe94ea) with main (54e8239)

Open in CodSpeed

Footnotes

  1. 196 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Comment thread .changeset/fix-solid-destructured-props-jsx.md Outdated
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 748baf9b-67da-42bb-b6ce-3cee525210fc

📥 Commits

Reviewing files that changed from the base of the PR and between 2ea277a and afe94ea.

⛔ Files ignored due to path filters (1)
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/anonymousDefaultExport.tsx.snap is excluded by !**/*.snap and included by **
📒 Files selected for processing (2)
  • crates/biome_js_analyze/src/lint/correctness/no_solid_destructured_props.rs
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/anonymousDefaultExport.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • crates/biome_js_analyze/src/lint/correctness/no_solid_destructured_props.rs

Walkthrough

noSolidDestructuredProps now recognises more Solid component forms, including arrow functions, function declarations, function expressions, and exported defaults, and it treats destructured props used in JSX children the same as attribute values. The spec fixtures add invalid and valid cases for those paths, and a changeset entry records the patch.

Suggested labels

A-Diagnostic

Suggested reviewers

  • dyc3
  • ematipico
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Linked Issues check ❓ Inconclusive The PR addresses the rule bug and adds the requested detection and regression coverage, but the package-name concern is not verifiable here. Confirm whether the Solid package-name concern from #10742 was also addressed, or note it as intentionally out of scope.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the main fix: Solid destructured props detection in JSX children.
Description check ✅ Passed The description is directly related and summarises the lint fix and tests.
Out of Scope Changes check ✅ Passed The code and tests stay focused on the noSolidDestructuredProps fix, with only a matching changeset added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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.

Inline comments:
In `@crates/biome_js_analyze/src/lint/correctness/no_solid_destructured_props.rs`:
- Around line 183-189: Anonymous default exports are being treated as
non-components in the `is_component` path because
`JsFunctionExportDefaultDeclaration::cast` returns early when `id()` is missing,
so `export default function ({ a }) { ... }` slips past
`no_solid_destructured_props`; update the logic to safely unwrap `id()` and,
when the default export function is anonymous, treat it as a component by
default. Then add an invalid fixture in `noSolidDestructuredProps/invalid.tsx`
covering the anonymous default export destructured props case so this false
negative is exercised by the test suite.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: efd21e77-66ff-47e7-a030-3b3db5099e23

📥 Commits

Reviewing files that changed from the base of the PR and between 54e8239 and 2ea277a.

⛔ Files ignored due to path filters (2)
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/invalid.tsx.snap is excluded by !**/*.snap and included by **
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/valid.tsx.snap is excluded by !**/*.snap and included by **
📒 Files selected for processing (4)
  • .changeset/fix-solid-destructured-props-jsx.md
  • crates/biome_js_analyze/src/lint/correctness/no_solid_destructured_props.rs
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/invalid.tsx
  • crates/biome_js_analyze/tests/specs/correctness/noSolidDestructuredProps/valid.tsx

@ematipico ematipico merged commit 2c3e82d into biomejs:main Jul 1, 2026
32 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 1, 2026
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Client that referenced this pull request Jul 4, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.1` -> `2.5.2`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.1/2.5.2) |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.2`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#252)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.1...@biomejs/biome@2.5.2)

##### Patch Changes

- [#&#8203;10595](biomejs/biome#10595) [`f458028`](biomejs/biome@f458028) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignoreBooleanCoercion` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||` and `||=` used inside a `Boolean()` call, where coalescing on falsy values is intentional.

- [#&#8203;10798](biomejs/biome#10798) [`4a32b63`](biomejs/biome@4a32b63) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignorePrimitives` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||`, `||=`, and ternary expressions whose non-nullish operands are all primitives the option opts out of. Use `true` to ignore all primitives, or an object selecting `string`, `number`, `boolean`, or `bigint`.

- [#&#8203;10545](biomejs/biome#10545) [`f3d4c00`](biomejs/biome@f3d4c00) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Added the new nursery rule [`noSvelteUnnecessaryStateWrap`](https://biomejs.dev/linter/rules/no-svelte-unnecessary-state-wrap/), which reports unnecessary `$state()` wrapping of classes from `svelte/reactivity` that are already reactive.

  ```svelte
  <script>
  import { SvelteMap } from "svelte/reactivity";
  const map = $state(new SvelteMap()); // redundant
  </script>
  ```

- [#&#8203;10752](biomejs/biome#10752) [`f62fb8b`](biomejs/biome@f62fb8b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10739](biomejs/biome#10739). Now the rule [`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/) correctly flags the `autoComplete` attribute.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10768](biomejs/biome#10768). Improved the performance of the Biome Language Server by cancelling certain in-flight operations when there are fast updates.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) false positive on returns that use a widening type assertion: `"a" as string` is no longer reported as misleading. The rule now also reports a literal-pinning assertion such as `false as false`, matching the existing `as const` behavior.

  ```ts
  // No longer flagged (returns are `string`):
  function getValue(b: boolean): string {
    if (b) return "a" as string;
    return "b" as string;
  }

  // Now also reported, like `as const` (returns `false`):
  function isReady(): boolean {
    return false as false;
  }
  ```

- [#&#8203;10678](biomejs/biome#10678) [`8f073a7`](biomejs/biome@8f073a7) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;7718](biomejs/biome#7718): Biome now correctly parses CSS nesting selectors when `&` appears as a trailing sub-selector after a type selector, e.g. `h1& { color: red; }`.

- [#&#8203;10756](biomejs/biome#10756) [`5ec965a`](biomejs/biome@5ec965a) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatter output for selector lists with `allowWrongLineComments` and `//` comments after a selector comma. Biome now keeps the selector before the line comment inline instead of breaking it across descendant combinators.

  ```diff
  -.powerPathNavigator
  -  .helm
  -  button.pressedButton, // pressed
  +.powerPathNavigator .helm button.pressedButton, // pressed
   .powerPathNavigator .helm button:active:not(.disabledButton) {
   }
  ```

- [#&#8203;10757](biomejs/biome#10757) [`6232fcd`](biomejs/biome@6232fcd) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;8269](biomejs/biome#8269): the CSS parser now accepts Tailwind `@variant` and `@utility` names that start with a digit, such as the `2xl` breakpoint.

  ```css
  @&#8203;utility container {
    @&#8203;variant 2xl {
      max-width: 1400px;
    }
  }
  ```

- [#&#8203;10777](biomejs/biome#10777) [`575ced6`](biomejs/biome@575ced6) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): the GitLab reporter now handles `--verbose` diagnostics filtering correctly.

- [#&#8203;10281](biomejs/biome#10281) [`0efe244`](biomejs/biome@0efe244) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed a bug where GritQL patterns rejected positional (unkeyed) arguments.

- [#&#8203;10758](biomejs/biome#10758) [`e36fd8a`](biomejs/biome@e36fd8a) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10697](biomejs/biome#10697): The formatter no longer removes the parentheses around an `await` or `yield` expression used as the target of a TypeScript instantiation expression. For example, `(await makeFactory)<Value>` is no longer reformatted to `await makeFactory<Value>`, which would change the meaning of the code.

- [#&#8203;10586](biomejs/biome#10586) [`3617094`](biomejs/biome@3617094) Thanks [@&#8203;IxxyDev](https://github.com/IxxyDev)! - Fixed [#&#8203;9568](biomejs/biome#9568): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports a false positive when calling an overloaded function and the selected overload does not return a promise.

  ```ts
  function bestEffort(cb: () => Promise<number>): Promise<number>;
  function bestEffort(cb: () => number): number;
  function bestEffort(
    cb: () => number | Promise<number>,
  ): Promise<number> | number {
    return cb() as Promise<number> | number;
  }

  // This resolves to the second overload, which returns `number`, so it is no
  // longer flagged as a floating promise.
  bestEffort(() => 42);
  ```

- [#&#8203;10766](biomejs/biome#10766) [`7aff4c1`](biomejs/biome@7aff4c1) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;2862](biomejs/biome#2862): [`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/) no longer reports custom elements (a tag name containing a dash, e.g. `<my-button role="img" />`). Per the [W3C HTML-ARIA specification](https://www.w3.org/TR/html-aria/#el-autonomous-custom-element), a custom element may be given any role or none.

- [#&#8203;10680](biomejs/biome#10680) [`771daa4`](biomejs/biome@771daa4) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed [#&#8203;10635](biomejs/biome#10635): Biome now recognizes chained
  table tests such as `test.concurrent.each()` and `it.concurrent.each()` as test calls, fixing
  `noMisplacedAssertion` false positives and improving formatting for those test declarations.

- [#&#8203;10759](biomejs/biome#10759) [`34570b5`](biomejs/biome@34570b5) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10636](biomejs/biome#10636): [noStaticElementInteractions](https://biomejs.dev/linter/rules/no-static-element-interactions/) no longer reports a false positive for event handlers on Svelte special elements such as `<svelte:window>`, `<svelte:document>`, and `<svelte:body>`. These are not real DOM elements, so they are now ignored by the rule.

- [#&#8203;10741](biomejs/biome#10741) [`bd2364e`](biomejs/biome@bd2364e) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;6686](biomejs/biome#6686): the `rage` command now respects the `--config-path` option and the `BIOME_CONFIG_PATH` environment variable when loading the Biome configuration. Previously it always used the default configuration resolution and reported the configuration as `Not set` when no `biome.json` existed in the working directory.

- [#&#8203;10763](biomejs/biome#10763) [`2c3e82d`](biomejs/biome@2c3e82d) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10742](biomejs/biome#10742): [`noSolidDestructuredProps`](https://biomejs.dev/linter/rules/no-solid-destructured-props) now reports destructured props in Solid function components and JSX children.

- [#&#8203;10606](biomejs/biome#10606) [`a4cc4ab`](biomejs/biome@a4cc4ab) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed false positives in `noUnusedImports`, `noUnusedVariables`, and `useImportType` for Svelte components that use both a `<script module>` and a `<script>` block. The two blocks compile to a single module and share a top-level scope, so a binding (import, function, or variable) declared in one block and used only in the other is no longer reported as unused.

- [#&#8203;10767](biomejs/biome#10767) [`36d5aa7`](biomejs/biome@36d5aa7) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10754](biomejs/biome#10754): [`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/) no longer reports the Vue 3.4+ same-name shorthand as missing a value. `:foo` and `v-bind:foo` are now accepted as equivalent to `:foo="foo"`, while `v-bind`, `v-bind:[dynamicArg]`, and `:[dynamicArg]` without a value continue to be reported.

- [#&#8203;10775](biomejs/biome#10775) [`a918af0`](biomejs/biome@a918af0) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): `biome rage` didn't detect running Biome daemon pipes on Windows.

- [#&#8203;10730](biomejs/biome#10730) [`5a2e65b`](biomejs/biome@5a2e65b) Thanks [@&#8203;dinocosta](https://github.com/dinocosta)! - Fixed an issue where Biome was resolving [the well-known Zed settings file](https://biomejs.dev/guides/configure-biome/#well-known-files) from the wrong location on macOS and Windows.

- [#&#8203;10807](biomejs/biome#10807) [`d97fffe`](biomejs/biome@d97fffe) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where `.scss` files were incorrectly analyzed when running `biome check`.

- [#&#8203;10672](biomejs/biome#10672) [`53c6efc`](biomejs/biome@53c6efc) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where Biome incorrectly formatted snippets that have parsing errors.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`useAwaitThenable`](https://biomejs.dev/linter/rules/use-await-thenable/) false positive when awaiting a custom thenable that is not the global `Promise`. A value with a callable `then` member is now recognized as awaitable.

  ```ts
  interface Thenable<T> {
    then(onfulfilled: (value: T) => void): void;
  }
  declare const t: Thenable<number>;
  async function f() {
    await t;
  }
  ```

- [#&#8203;10734](biomejs/biome#10734) [`4396496`](biomejs/biome@4396496) Thanks [@&#8203;BangDori](https://github.com/BangDori)! - Fixed [#&#8203;10708](biomejs/biome#10708): `biome migrate` now preserves trivia when migrating the deprecated `recommended` option to `preset`.

- [#&#8203;10683](biomejs/biome#10683) [`ae31a00`](biomejs/biome@ae31a00) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10657](biomejs/biome#10657) [#&#8203;10671](biomejs/biome#10671) [#&#8203;10661](biomejs/biome#10661) [#&#8203;10637](biomejs/biome#10637) [#&#8203;10718](biomejs/biome#10718): HTML rules now correctly handle dynamic attributes.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't correctly detect styles defined inside the Astro directive `is:global`.

- [#&#8203;10770](biomejs/biome#10770) [`dd1429c`](biomejs/biome@dd1429c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the Biome Language Server DX by orchestrating certain operations, so that they won't block the editor during typing. This improvement is more visible in large documents.

- [#&#8203;10473](biomejs/biome#10473) [`d9b5133`](biomejs/biome@d9b5133) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Improved [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/), [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/), [`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/), and [`useImportType`](https://biomejs.dev/linter/rules/use-import-type/) for Svelte, Vue, and Astro files (with `html.experimentalFullSupportEnabled`). Bindings used only in the template — including component tags, attribute interpolations, directives, `bind:` shorthand, and snippet parameters — are no longer reported as unused, while genuinely unused ones still are.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where the Biome Language Server didn't enable project or type-aware lint rules, even when they were explicitly enabled.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't detect styles declared inside HTML documents.

- [#&#8203;10774](biomejs/biome#10774) [`bde945b`](biomejs/biome@bde945b) Thanks [@&#8203;pattrickrice](https://github.com/pattrickrice)! - Fixed [#&#8203;10268](biomejs/biome#10268) where a race condition resulted in internal errors such as: `The file biome.json does not exist in the workspace`.

</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](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Client/pulls/9
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Server that referenced this pull request Jul 8, 2026
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.1` -> `2.5.2`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.1/2.5.2) | `2.5.3` |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.2`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#252)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.1...@biomejs/biome@2.5.2)

##### Patch Changes

- [#&#8203;10595](biomejs/biome#10595) [`f458028`](biomejs/biome@f458028) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignoreBooleanCoercion` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||` and `||=` used inside a `Boolean()` call, where coalescing on falsy values is intentional.

- [#&#8203;10798](biomejs/biome#10798) [`4a32b63`](biomejs/biome@4a32b63) Thanks [@&#8203;pkallos](https://github.com/pkallos)! - Added the option `ignorePrimitives` to [useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/). When enabled, Biome ignores `||`, `||=`, and ternary expressions whose non-nullish operands are all primitives the option opts out of. Use `true` to ignore all primitives, or an object selecting `string`, `number`, `boolean`, or `bigint`.

- [#&#8203;10545](biomejs/biome#10545) [`f3d4c00`](biomejs/biome@f3d4c00) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Added the new nursery rule [`noSvelteUnnecessaryStateWrap`](https://biomejs.dev/linter/rules/no-svelte-unnecessary-state-wrap/), which reports unnecessary `$state()` wrapping of classes from `svelte/reactivity` that are already reactive.

  ```svelte
  <script>
  import { SvelteMap } from "svelte/reactivity";
  const map = $state(new SvelteMap()); // redundant
  </script>
  ```

- [#&#8203;10752](biomejs/biome#10752) [`f62fb8b`](biomejs/biome@f62fb8b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10739](biomejs/biome#10739). Now the rule [`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/) correctly flags the `autoComplete` attribute.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;10768](biomejs/biome#10768). Improved the performance of the Biome Language Server by cancelling certain in-flight operations when there are fast updates.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) false positive on returns that use a widening type assertion: `"a" as string` is no longer reported as misleading. The rule now also reports a literal-pinning assertion such as `false as false`, matching the existing `as const` behavior.

  ```ts
  // No longer flagged (returns are `string`):
  function getValue(b: boolean): string {
    if (b) return "a" as string;
    return "b" as string;
  }

  // Now also reported, like `as const` (returns `false`):
  function isReady(): boolean {
    return false as false;
  }
  ```

- [#&#8203;10678](biomejs/biome#10678) [`8f073a7`](biomejs/biome@8f073a7) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;7718](biomejs/biome#7718): Biome now correctly parses CSS nesting selectors when `&` appears as a trailing sub-selector after a type selector, e.g. `h1& { color: red; }`.

- [#&#8203;10756](biomejs/biome#10756) [`5ec965a`](biomejs/biome@5ec965a) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatter output for selector lists with `allowWrongLineComments` and `//` comments after a selector comma. Biome now keeps the selector before the line comment inline instead of breaking it across descendant combinators.

  ```diff
  -.powerPathNavigator
  -  .helm
  -  button.pressedButton, // pressed
  +.powerPathNavigator .helm button.pressedButton, // pressed
   .powerPathNavigator .helm button:active:not(.disabledButton) {
   }
  ```

- [#&#8203;10757](biomejs/biome#10757) [`6232fcd`](biomejs/biome@6232fcd) Thanks [@&#8203;PranavAchar01](https://github.com/PranavAchar01)! - Fixed [#&#8203;8269](biomejs/biome#8269): the CSS parser now accepts Tailwind `@variant` and `@utility` names that start with a digit, such as the `2xl` breakpoint.

  ```css
  @&#8203;utility container {
    @&#8203;variant 2xl {
      max-width: 1400px;
    }
  }
  ```

- [#&#8203;10777](biomejs/biome#10777) [`575ced6`](biomejs/biome@575ced6) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): the GitLab reporter now handles `--verbose` diagnostics filtering correctly.

- [#&#8203;10281](biomejs/biome#10281) [`0efe244`](biomejs/biome@0efe244) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed a bug where GritQL patterns rejected positional (unkeyed) arguments.

- [#&#8203;10758](biomejs/biome#10758) [`e36fd8a`](biomejs/biome@e36fd8a) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10697](biomejs/biome#10697): The formatter no longer removes the parentheses around an `await` or `yield` expression used as the target of a TypeScript instantiation expression. For example, `(await makeFactory)<Value>` is no longer reformatted to `await makeFactory<Value>`, which would change the meaning of the code.

- [#&#8203;10586](biomejs/biome#10586) [`3617094`](biomejs/biome@3617094) Thanks [@&#8203;IxxyDev](https://github.com/IxxyDev)! - Fixed [#&#8203;9568](biomejs/biome#9568): [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer reports a false positive when calling an overloaded function and the selected overload does not return a promise.

  ```ts
  function bestEffort(cb: () => Promise<number>): Promise<number>;
  function bestEffort(cb: () => number): number;
  function bestEffort(
    cb: () => number | Promise<number>,
  ): Promise<number> | number {
    return cb() as Promise<number> | number;
  }

  // This resolves to the second overload, which returns `number`, so it is no
  // longer flagged as a floating promise.
  bestEffort(() => 42);
  ```

- [#&#8203;10766](biomejs/biome#10766) [`7aff4c1`](biomejs/biome@7aff4c1) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;2862](biomejs/biome#2862): [`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/) no longer reports custom elements (a tag name containing a dash, e.g. `<my-button role="img" />`). Per the [W3C HTML-ARIA specification](https://www.w3.org/TR/html-aria/#el-autonomous-custom-element), a custom element may be given any role or none.

- [#&#8203;10680](biomejs/biome#10680) [`771daa4`](biomejs/biome@771daa4) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed [#&#8203;10635](biomejs/biome#10635): Biome now recognizes chained
  table tests such as `test.concurrent.each()` and `it.concurrent.each()` as test calls, fixing
  `noMisplacedAssertion` false positives and improving formatting for those test declarations.

- [#&#8203;10759](biomejs/biome#10759) [`34570b5`](biomejs/biome@34570b5) Thanks [@&#8203;henrybrewer00-dotcom](https://github.com/henrybrewer00-dotcom)! - Fixed [#&#8203;10636](biomejs/biome#10636): [noStaticElementInteractions](https://biomejs.dev/linter/rules/no-static-element-interactions/) no longer reports a false positive for event handlers on Svelte special elements such as `<svelte:window>`, `<svelte:document>`, and `<svelte:body>`. These are not real DOM elements, so they are now ignored by the rule.

- [#&#8203;10741](biomejs/biome#10741) [`bd2364e`](biomejs/biome@bd2364e) Thanks [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562)! - Fixed [#&#8203;6686](biomejs/biome#6686): the `rage` command now respects the `--config-path` option and the `BIOME_CONFIG_PATH` environment variable when loading the Biome configuration. Previously it always used the default configuration resolution and reported the configuration as `Not set` when no `biome.json` existed in the working directory.

- [#&#8203;10763](biomejs/biome#10763) [`2c3e82d`](biomejs/biome@2c3e82d) Thanks [@&#8203;Aqu1bp](https://github.com/Aqu1bp)! - Fixed [#&#8203;10742](biomejs/biome#10742): [`noSolidDestructuredProps`](https://biomejs.dev/linter/rules/no-solid-destructured-props) now reports destructured props in Solid function components and JSX children.

- [#&#8203;10606](biomejs/biome#10606) [`a4cc4ab`](biomejs/biome@a4cc4ab) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed false positives in `noUnusedImports`, `noUnusedVariables`, and `useImportType` for Svelte components that use both a `<script module>` and a `<script>` block. The two blocks compile to a single module and share a top-level scope, so a binding (import, function, or variable) declared in one block and used only in the other is no longer reported as unused.

- [#&#8203;10767](biomejs/biome#10767) [`36d5aa7`](biomejs/biome@36d5aa7) Thanks [@&#8203;otkrickey](https://github.com/otkrickey)! - Fixed [#&#8203;10754](biomejs/biome#10754): [`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/) no longer reports the Vue 3.4+ same-name shorthand as missing a value. `:foo` and `v-bind:foo` are now accepted as equivalent to `:foo="foo"`, while `v-bind`, `v-bind:[dynamicArg]`, and `:[dynamicArg]` without a value continue to be reported.

- [#&#8203;10775](biomejs/biome#10775) [`a918af0`](biomejs/biome@a918af0) Thanks [@&#8203;WaterWhisperer](https://github.com/WaterWhisperer)! - Fixed an issue reported in [#&#8203;10708](biomejs/biome#10708): `biome rage` didn't detect running Biome daemon pipes on Windows.

- [#&#8203;10730](biomejs/biome#10730) [`5a2e65b`](biomejs/biome@5a2e65b) Thanks [@&#8203;dinocosta](https://github.com/dinocosta)! - Fixed an issue where Biome was resolving [the well-known Zed settings file](https://biomejs.dev/guides/configure-biome/#well-known-files) from the wrong location on macOS and Windows.

- [#&#8203;10807](biomejs/biome#10807) [`d97fffe`](biomejs/biome@d97fffe) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where `.scss` files were incorrectly analyzed when running `biome check`.

- [#&#8203;10672](biomejs/biome#10672) [`53c6efc`](biomejs/biome@53c6efc) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where Biome incorrectly formatted snippets that have parsing errors.

- [#&#8203;10719](biomejs/biome#10719) [`aa649b5`](biomejs/biome@aa649b5) Thanks [@&#8203;minseong0324](https://github.com/minseong0324)! - Fixed [`useAwaitThenable`](https://biomejs.dev/linter/rules/use-await-thenable/) false positive when awaiting a custom thenable that is not the global `Promise`. A value with a callable `then` member is now recognized as awaitable.

  ```ts
  interface Thenable<T> {
    then(onfulfilled: (value: T) => void): void;
  }
  declare const t: Thenable<number>;
  async function f() {
    await t;
  }
  ```

- [#&#8203;10734](biomejs/biome#10734) [`4396496`](biomejs/biome@4396496) Thanks [@&#8203;BangDori](https://github.com/BangDori)! - Fixed [#&#8203;10708](biomejs/biome#10708): `biome migrate` now preserves trivia when migrating the deprecated `recommended` option to `preset`.

- [#&#8203;10683](biomejs/biome#10683) [`ae31a00`](biomejs/biome@ae31a00) Thanks [@&#8203;Netail](https://github.com/Netail)! - Fixed [#&#8203;10657](biomejs/biome#10657) [#&#8203;10671](biomejs/biome#10671) [#&#8203;10661](biomejs/biome#10661) [#&#8203;10637](biomejs/biome#10637) [#&#8203;10718](biomejs/biome#10718): HTML rules now correctly handle dynamic attributes.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't correctly detect styles defined inside the Astro directive `is:global`.

- [#&#8203;10770](biomejs/biome#10770) [`dd1429c`](biomejs/biome@dd1429c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the Biome Language Server DX by orchestrating certain operations, so that they won't block the editor during typing. This improvement is more visible in large documents.

- [#&#8203;10473](biomejs/biome#10473) [`d9b5133`](biomejs/biome@d9b5133) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Improved [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/), [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/), [`noUnusedFunctionParameters`](https://biomejs.dev/linter/rules/no-unused-function-parameters/), and [`useImportType`](https://biomejs.dev/linter/rules/use-import-type/) for Svelte, Vue, and Astro files (with `html.experimentalFullSupportEnabled`). Bindings used only in the template — including component tags, attribute interpolations, directives, `bind:` shorthand, and snippet parameters — are no longer reported as unused, while genuinely unused ones still are.

- [#&#8203;10796](biomejs/biome#10796) [`f1b3ab2`](biomejs/biome@f1b3ab2) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where the Biome Language Server didn't enable project or type-aware lint rules, even when they were explicitly enabled.

- [#&#8203;10746](biomejs/biome#10746) [`54e8239`](biomejs/biome@54e8239) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed an issue where [`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes) didn't detect styles declared inside HTML documents.

- [#&#8203;10774](biomejs/biome#10774) [`bde945b`](biomejs/biome@bde945b) Thanks [@&#8203;pattrickrice](https://github.com/pattrickrice)! - Fixed [#&#8203;10268](biomejs/biome#10268) where a race condition resulted in internal errors such as: `The file biome.json does not exist in the workspace`.

</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](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Server/pulls/22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Linter Area: linter L-JavaScript Language: JavaScript and super languages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

💅 noSolidDestructuredProps doesn't work

2 participants