Commit e550766
chore(deps): update linters (#2222)
> ℹ️ **Note**
>
> This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Update | Change | Pending |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [aqua:owenlamont/ryl](https://redirect.github.com/owenlamont/ryl) |
minor | `0.14.0` → `0.18.1` | |

|

|
| [biome](https://redirect.github.com/biomejs/biome) | minor | `2.4.16`
→ `2.5.0` | |

|

|
| [npm:renovate](https://renovatebot.com)
([source](https://redirect.github.com/renovatebot/renovate)) | minor |
[`43.212.4` →
`43.220.0`](https://octochangelog.com/compare?repo=renovatebot%2Frenovate&from=43.212.4&to=43.220.0)
| `43.226.0` (+6) |

|

|
| [ruff](https://redirect.github.com/astral-sh/ruff) | patch | `0.15.16`
→ `0.15.17` | |

|

|
| [rumdl](https://redirect.github.com/rvben/rumdl) | patch | `0.2.9` →
`v0.2.17` | |

|

|
---
### Release Notes
<details>
<summary>owenlamont/ryl (aqua:owenlamont/ryl)</summary>
###
[`v0.18.1`](https://redirect.github.com/owenlamont/ryl/releases/tag/v0.18.1)
[Compare
Source](https://redirect.github.com/owenlamont/ryl/compare/v0.18.0...v0.18.1)
#### What's Changed
- fix(lsp): emit one diagnostics channel per client
([#​323](https://redirect.github.com/owenlamont/ryl/issues/323))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​324](https://redirect.github.com/owenlamont/ryl/pull/324)
- ci: publish SHA256SUMS with each release
([#​322](https://redirect.github.com/owenlamont/ryl/issues/322))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​325](https://redirect.github.com/owenlamont/ryl/pull/325)
- v0.18.1: bump version, run CI coverage once
([#​326](https://redirect.github.com/owenlamont/ryl/issues/326)),
combine dependency updates by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​327](https://redirect.github.com/owenlamont/ryl/pull/327)
- Bump the "dependencies" group with 2 updates across multiple
ecosystems by
[@​dependabot](https://redirect.github.com/dependabot)\[bot] in
[#​328](https://redirect.github.com/owenlamont/ryl/pull/328)
**Full Changelog**:
<https://github.com/owenlamont/ryl/compare/v0.18.0...v0.18.1>
###
[`v0.18.0`](https://redirect.github.com/owenlamont/ryl/releases/tag/v0.18.0)
[Compare
Source](https://redirect.github.com/owenlamont/ryl/compare/v0.17.0...v0.18.0)
#### What's Changed
- Publish ryl to winget via wingetcreate on release by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​312](https://redirect.github.com/owenlamont/ryl/pull/312)
- Add conda-forge install instructions to docs by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​313](https://redirect.github.com/owenlamont/ryl/pull/313)
- Add `ryl server` language server (LSP) by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​316](https://redirect.github.com/owenlamont/ryl/pull/316)
- Add LSP nice-to-have features
([#​317](https://redirect.github.com/owenlamont/ryl/issues/317))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​318](https://redirect.github.com/owenlamont/ryl/pull/318)
- chore: refresh dependencies and linters by
[@​create-pr-workflow-auth](https://redirect.github.com/create-pr-workflow-auth)\[bot]
in [#​314](https://redirect.github.com/owenlamont/ryl/pull/314)
- codex-review-watch: detect Codex's auto-started first review
([#​319](https://redirect.github.com/owenlamont/ryl/issues/319))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​320](https://redirect.github.com/owenlamont/ryl/pull/320)
- v0.18.0: language server release; temporarily disable winget by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​321](https://redirect.github.com/owenlamont/ryl/pull/321)
**Full Changelog**:
<https://github.com/owenlamont/ryl/compare/v0.17.0...v0.18.0>
###
[`v0.17.0`](https://redirect.github.com/owenlamont/ryl/releases/tag/v0.17.0)
[Compare
Source](https://redirect.github.com/owenlamont/ryl/compare/v0.16.0...v0.17.0)
#### What's Changed
- Add shell completions (--generate-completions) by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​300](https://redirect.github.com/owenlamont/ryl/pull/300)
- Add JUnit XML and GitLab code-quality output formats
([#​285](https://redirect.github.com/owenlamont/ryl/issues/285))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​301](https://redirect.github.com/owenlamont/ryl/pull/301)
- Multi-target output: repeatable --format/--output-file + TOML
\[output] (closes
[#​285](https://redirect.github.com/owenlamont/ryl/issues/285)) by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​303](https://redirect.github.com/owenlamont/ryl/pull/303)
- User-global config: ryl-native path + --migrate-user-config
([#​304](https://redirect.github.com/owenlamont/ryl/issues/304))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​307](https://redirect.github.com/owenlamont/ryl/pull/307)
- Document the explicit+local config model and reject unrecognised
top-level TOML keys by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​308](https://redirect.github.com/owenlamont/ryl/pull/308)
- Extract AGENTS.md procedures into dev skills + dogfood ryl 0.16.0
([#​306](https://redirect.github.com/owenlamont/ryl/issues/306))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​309](https://redirect.github.com/owenlamont/ryl/pull/309)
- Make ryl agent-friendly for downstream consumers: skill + docs page +
llms.txt
([#​305](https://redirect.github.com/owenlamont/ryl/issues/305))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​310](https://redirect.github.com/owenlamont/ryl/pull/310)
- v0.17.0: version bump, DRY cleanup, and retrospective-driven
dev-process improvements by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​311](https://redirect.github.com/owenlamont/ryl/pull/311)
**Full Changelog**:
<https://github.com/owenlamont/ryl/compare/v0.16.0...v0.17.0>
###
[`v0.16.0`](https://redirect.github.com/owenlamont/ryl/releases/tag/v0.16.0)
[Compare
Source](https://redirect.github.com/owenlamont/ryl/compare/v0.15.0...v0.16.0)
#### What's Changed
- Treat a bare `\r` as a YAML 1.2 line break everywhere by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​287](https://redirect.github.com/owenlamont/ryl/pull/287)
- Add `per-line-ignores` config mechanism
([#​258](https://redirect.github.com/owenlamont/ryl/issues/258))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​288](https://redirect.github.com/owenlamont/ryl/pull/288)
- Add `comments-indentation: allow-any-open-indent` option
([#​259](https://redirect.github.com/owenlamont/ryl/issues/259))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​289](https://redirect.github.com/owenlamont/ryl/pull/289)
- Add `hyphens: dash-on-own-line` option
([#​260](https://redirect.github.com/owenlamont/ryl/issues/260))
by [@​owenlamont](https://redirect.github.com/owenlamont) in
[#​293](https://redirect.github.com/owenlamont/ryl/pull/293)
- Add cargo audit prek hook + CI install step by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​295](https://redirect.github.com/owenlamont/ryl/pull/295)
- build(deps): bump the actions-dependencies group with 3 updates by
[@​dependabot](https://redirect.github.com/dependabot)\[bot] in
[#​292](https://redirect.github.com/owenlamont/ryl/pull/292)
- Bump to 0.16.0 and consolidate YAML line-break handling by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​296](https://redirect.github.com/owenlamont/ryl/pull/296)
**Full Changelog**:
<https://github.com/owenlamont/ryl/compare/v0.15.0...v0.16.0>
###
[`v0.15.0`](https://redirect.github.com/owenlamont/ryl/releases/tag/v0.15.0)
[Compare
Source](https://redirect.github.com/owenlamont/ryl/compare/v0.14.0...v0.15.0)
#### What's Changed
- Add `--diff` flag previewing safe fixes as a unified diff (closes
[#​269](https://redirect.github.com/owenlamont/ryl/issues/269)) by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​282](https://redirect.github.com/owenlamont/ryl/pull/282)
- Add block-scalar-chomping rule by
[@​owenlamont](https://redirect.github.com/owenlamont) in
[#​286](https://redirect.github.com/owenlamont/ryl/pull/286)
**Full Changelog**:
<https://github.com/owenlamont/ryl/compare/v0.14.0...v0.15.0>
</details>
<details>
<summary>biomejs/biome (biome)</summary>
###
[`v2.5.0`](https://redirect.github.com/biomejs/biome/releases/tag/%40biomejs/biome%402.5.0):
Biome CLI v2.5.0
[Compare
Source](https://redirect.github.com/biomejs/biome/compare/@biomejs/biome@2.4.16...@biomejs/biome@2.5.0)
#### 2.5.0
##### Minor Changes
- [#​9539](https://redirect.github.com/biomejs/biome/pull/9539)
[`f0615fd`](https://redirect.github.com/biomejs/biome/commit/f0615fdae80fa7257fc1d0448d2027cb1acff46e)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added a new reporter called `concise`. When `--reporter=concise` is
passed the commands `format`, `lint`, `check` and `ci`, the diagnostics
are printed in a compact manner:
```
! index.ts:2:10: lint/correctness/noUnusedImports: Several of these
imports are unused.
! main.ts:9:7: lint/correctness/noUnusedVariables: This variable f is
unused.
× index.ts:8:5: lint/suspicious/noImplicitAnyLet: This variable
implicitly has the any type.
× main.ts:2:10: lint/suspicious/noRedeclare: Shouldn't redeclare 'z'.
Consider to delete it or rename it.
```
- [#​9495](https://redirect.github.com/biomejs/biome/pull/9495)
[`2056b23`](https://redirect.github.com/biomejs/biome/commit/2056b23812a17f9c9a9015e5b725faecb04647b5)
Thanks [@​aviraldua93](https://redirect.github.com/aviraldua93)! -
Added the
[`useKeyWithClickEvents`](https://biomejs.dev/linter/rules/use-key-with-click-events/)
a11y lint rule for HTML files (`.html`, `.vue`, `.svelte`, `.astro`).
This is a port of the existing JSX rule. The rule enforces that elements
with an `onclick` handler also have at least one keyboard event handler
(`onkeydown`, `onkeyup`, or `onkeypress`) to ensure keyboard
accessibility.
Inherently keyboard-accessible elements (`<a>`, `<button>`, `<input>`,
`<select>`, `<textarea>`, `<option>`) are excluded, as are elements
hidden from assistive technologies (`aria-hidden`) or with
`role="presentation"` / `role="none"`.
```html
<!-- Invalid: no keyboard handler -->
<div onclick="handleClick()">Click me</div>
<!-- Valid: has keyboard handler -->
<div onclick="handleClick()" onkeydown="handleKeyDown()">Click me</div>
<!-- Valid: inherently keyboard-accessible -->
<button onclick="handleClick()">Submit</button>
```
- [#​9152](https://redirect.github.com/biomejs/biome/pull/9152)
[`9ec8500`](https://redirect.github.com/biomejs/biome/commit/9ec8500dabc7305cbe04ecf27a84a1450f012c0b)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added new nursery lint rule
[`noUndeclaredClasses`](https://biomejs.dev/linter/rules/no-undeclared-classes/)
for HTML, JSX, and SFC files (Vue, Astro, Svelte). The rule detects CSS
class names used in `class="..."` (or `className`) attributes that are
not defined in any `<style>` block or linked stylesheet reachable from
the file.
```html
<!-- .typo is used but never defined -->
<html>
<head>
<style>
.button {
color: blue;
}
</style>
</head>
<body>
<div class="button typo"></div>
</body>
</html>
```
- [#​9152](https://redirect.github.com/biomejs/biome/pull/9152)
[`9ec8500`](https://redirect.github.com/biomejs/biome/commit/9ec8500dabc7305cbe04ecf27a84a1450f012c0b)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added new nursery lint rule
[`noUnusedClasses`](https://biomejs.dev/linter/rules/no-unused-classes/)
for CSS. The rule detects CSS class selectors that are never referenced
in any HTML or JSX file that imports the stylesheet. This is a
project-domain rule that requires the module graph.
```css
/* styles.css — .ghost is never used in any importing file */
.button {
color: blue;
}
.ghost {
color: red;
}
```
```jsx
/* App.jsx */
import "./styles.css";
export default () => <div className="button" />;
```
- [#​9546](https://redirect.github.com/biomejs/biome/pull/9546)
[`6567efa`](https://redirect.github.com/biomejs/biome/commit/6567efa51ba074436b017e49b1d2d369e7252e74)
Thanks [@​nhedger](https://redirect.github.com/nhedger)! - Added a
`biome upgrade` command for standalone installations. It upgrades
Homebrew installs with `brew upgrade biome`, updates manually installed
binaries from the latest GitHub release, and tells npm users to upgrade
with their package manager instead.
- [#​9716](https://redirect.github.com/biomejs/biome/pull/9716)
[`701767a`](https://redirect.github.com/biomejs/biome/commit/701767a3c4de8bce032933588ef2b6e5e252919f)
Thanks [@​faizkhairi](https://redirect.github.com/faizkhairi)! -
Added the HTML version of the
[`useHeadingContent`](https://biomejs.dev/linter/rules/use-heading-content/)
rule. The rule now enforces that heading elements (`h1`-`h6`) have
content accessible to screen readers in HTML, Vue, Svelte, and Astro
files.
```html
<!-- Invalid: empty heading -->
<h1></h1>
<!-- Invalid: heading hidden from screen readers -->
<h1 aria-hidden="true">invisible content</h1>
<!-- Valid: heading with text content -->
<h1>heading</h1>
<!-- Valid: heading with accessible name -->
<h1 aria-label="Screen reader content"></h1>
```
- [#​9582](https://redirect.github.com/biomejs/biome/pull/9582)
[`f437ef8`](https://redirect.github.com/biomejs/biome/commit/f437ef8b6b0eb8f909d523950cf2c543042083d5)
Thanks [@​rahuld109](https://redirect.github.com/rahuld109)! -
Added the HTML version of the
[`useKeyWithMouseEvents`](https://biomejs.dev/linter/rules/use-key-with-mouse-events/)
rule. The rule now enforces that `onmouseover` is accompanied by
`onfocus` and `onmouseout` is accompanied by `onblur` in HTML, Vue,
Svelte, and Astro files.
```html
<!-- Invalid: onmouseover without onfocus -->
<div onmouseover="handleMouseOver()"></div>
<!-- Valid: onmouseover paired with onfocus -->
<div onmouseover="handleMouseOver()" onfocus="handleFocus()"></div>
```
- [#​9275](https://redirect.github.com/biomejs/biome/pull/9275)
[`1fdbcee`](https://redirect.github.com/biomejs/biome/commit/1fdbceea62d373f24da9c1e5cc0cdd169b573e84)
Thanks [@​ff1451](https://redirect.github.com/ff1451)! - Added the
new assist action
[`useSortedTypeFields`](https://biomejs.dev/assist/actions/use-sorted-type-fields/),
which sorts the fields of GraphQL object types, interface types and
input object types alphabetically, e.g. `name, age, id` becomes `age,
id, name`.
- [#​10561](https://redirect.github.com/biomejs/biome/pull/10561)
[`78075b7`](https://redirect.github.com/biomejs/biome/commit/78075b7c7cb7490c730a96f4ee9776c9e77826e7)
Thanks [@​Conaclos](https://redirect.github.com/Conaclos)! - Added
a new `style` option to
[useExportType](https://biomejs.dev/linter/rules/use-export-type/),
which enforces a style for exporting types.
This is the same option as the one provided by `useImportType`.
- [#​8987](https://redirect.github.com/biomejs/biome/pull/8987)
[`d16e32b`](https://redirect.github.com/biomejs/biome/commit/d16e32b5b971a4ed9cd3bf5098782c8b752af69a)
Thanks [@​DerTimonius](https://redirect.github.com/DerTimonius)! -
Ported the
[`useValidAnchor`](https://biomejs.dev/linter/rules/use-valid-anchor/)
rule to HTML. This rule enforces that all anchors are valid and that
they are navigable elements.
- [#​9533](https://redirect.github.com/biomejs/biome/pull/9533)
[`4d251d4`](https://redirect.github.com/biomejs/biome/commit/4d251d489cfd33a83e42d425476f8d6c66b72d9b)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! - The
`init` command now prints the Biome logo.
- [#​10069](https://redirect.github.com/biomejs/biome/pull/10069)
[`0eb9310`](https://redirect.github.com/biomejs/biome/commit/0eb93109e1f9bfbb20744961681b4f0b9b781ad5)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noStaticElementInteractions`](https://biomejs.dev/linter/rules/no-static-element-interactions/),
which enforces that static, visible elements (such as `<div>`) that have
click handlers use the valid role attribute.
**Invalid**:
```html
<div onclick="myFunction()"></div>
```
- [#​9134](https://redirect.github.com/biomejs/biome/pull/9134)
[`2a43488`](https://redirect.github.com/biomejs/biome/commit/2a434882746d31e1bd3c8e0d711372a539ce88f8)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added the assist action
[`useSortedPackageJson`](https://biomejs.dev/assist/actions/use-sorted-package-json).
This action organizes package.json fields according to the same
conventions as the popular
[sort-package-json](https://redirect.github.com/keithamus/sort-package-json)
tool.
- [#​9309](https://redirect.github.com/biomejs/biome/pull/9309)
[`7daa18b`](https://redirect.github.com/biomejs/biome/commit/7daa18b07f7ab348942f4cb83b475e6a4b3d1125)
Thanks [@​Bertie690](https://redirect.github.com/Bertie690)! - The
`allowDoubleNegation` option has been added to
[`noImplicitCoercions`](https://biomejs.dev/linter/rules/no-implicit-coercions)
to allow ignoring double negations inside code.
With the option enabled, the following example is considered valid and
is ignored by the rule:
```js
const truthy = !!value;
```
- [#​9700](https://redirect.github.com/biomejs/biome/pull/9700)
[`894f3fb`](https://redirect.github.com/biomejs/biome/commit/894f3fb4c664b12ff9abd1527b535621fe4e22f6)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! - The
Biome Language server now supports the "go-to definition" feature.
When the cursor of the mouse is hovering an entity (variable, CSS class,
type, etc.), and the command <kbd>CTRL</kbd> + click is triggered, the
editor jumps to where this entity is defined, if the language server can
find it.
Here's what Biome is able to resolve:
- Variables and types used in JavaScript modules, defined in the same
file or imported from another module.
- JSX Components used in JavaScript modules, defined in the same file or
imported from another module.
- CSS classes used in JSX and HTML-ish files (Vue, Svelte and Astro),
and defined in CSS files.
- Components used in HTML-ish files and defined in other HTML-ish.
- Variables used in HTML-ish files and defined in the same file or
imported from another module (JavaScript or HTML-ish).
- [#​10070](https://redirect.github.com/biomejs/biome/pull/10070)
[`bae0710`](https://redirect.github.com/biomejs/biome/commit/bae071050f5a9c335b4483ee384f21ac1e6f0b4d)
Thanks [@​Conaclos](https://redirect.github.com/Conaclos)! - Added
the `:STYLE:` group matcher for
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/)
that matches style imports.
For example, the following configuration...
```json
{
"assist": {
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": {
"groups": ["**", "!:STYLE:"],
"sortBareImports": true
}
}
}
}
}
}
```
...places style imports last:
```diff
- import "./style.css"
import A from "./a.js"
+ import "./style.css"
```
- [#​9170](https://redirect.github.com/biomejs/biome/pull/9170)
[`e3107de`](https://redirect.github.com/biomejs/biome/commit/e3107deedcff0f02b61702c6645d89e8d8635b49)
Thanks [@​mdrobny](https://redirect.github.com/mdrobny)! - Added
`bundleDependencies` option to
[NoUndeclaredDependencies](https://biomejs.dev/linter/rules/no-undeclared-dependencies)
rule.
This rule now supports imports of packages that are defined only in
`bundleDependencies` and `bundledDependencies` arrays.
- [#​9547](https://redirect.github.com/biomejs/biome/pull/9547)
[`01f8473`](https://redirect.github.com/biomejs/biome/commit/01f847317820f805698e1b8ba9eaa8fa6c26205c)
Thanks [@​mujpao](https://redirect.github.com/mujpao)! - Added new
assist rule
[`useSortedAttributes`](https://biomejs.dev/assist/actions/use-sorted-attributes/)
for HTML, porting the existing JSX rule. This rule enforces sorted HTML
attributes.
**Invalid**
```html
<input type="text" id="name" name="name" />
```
- [#​9366](https://redirect.github.com/biomejs/biome/pull/9366)
[`2ca1117`](https://redirect.github.com/biomejs/biome/commit/2ca1117f1e63f6cd99c0ce8d4b82475625838e2e)
Thanks [@​dyc3](https://redirect.github.com/dyc3)! - Added the
`html.parser.vue` configuration option. When enabled, it adds support
for the parsing of Vue in `.html` files. Most Vue users don't need to
enable this option since Vue files typically use the `.vue` extension,
but it can be useful for projects that embed Vue syntax in regular HTML
files.
- [#​9073](https://redirect.github.com/biomejs/biome/pull/9073)
[`74b20ee`](https://redirect.github.com/biomejs/biome/commit/74b20eee556c9acc72ad5ea335b1bf0983d2eb2e)
Thanks [@​chocky335](https://redirect.github.com/chocky335)! -
Added support for applying GritQL plugin rewrites as code actions.
GritQL plugins that use the rewrite operator (`=>`) now produce fixable
diagnostics for JavaScript, CSS, and JSON files. By default, plugin
rewrites are treated as unsafe fixes and require `--write --unsafe` to
apply. Plugin authors can pass `fix_kind = "safe"` to
`register_diagnostic()` to mark a fix as safe, allowing it to be applied
with just `--write`.
**Example plugin** (`useConsoleInfo.grit`):
```grit
language js
`console.log($msg)` as $call where {
register_diagnostic(span = $call, message = "Use console.info instead of
console.log.", severity = "warn", fix_kind = "safe"),
$call => `console.info($msg)`
}
```
Running `biome check --write` applies safe rewrites. Unsafe rewrites
(the default, or `fix_kind = "unsafe"`) still require `--write
--unsafe`.
- [#​9384](https://redirect.github.com/biomejs/biome/pull/9384)
[`f4c9edc`](https://redirect.github.com/biomejs/biome/commit/f4c9edca8f8772a1e65d9e6701fdc3f604a9f3fe)
Thanks [@​Conaclos](https://redirect.github.com/Conaclos)! - Added
the `sortBareImports` option to
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/),
which allows bare imports to be sorted within other imports when set to
`false`.
```json
{
"assist": {
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": { "sortBareImports": true }
}
}
}
}
}
```
```diff
- import "b";
import "a";
+ import "b";
import { A } from "a";
+ import "./file";
import { Local } from "./file";
- import "./file";
```
- [#​8731](https://redirect.github.com/biomejs/biome/pull/8731)
[`e7872bf`](https://redirect.github.com/biomejs/biome/commit/e7872bffba88f60d6c3cb6d0c2dd7a25452a0205)
Thanks [@​siketyan](https://redirect.github.com/siketyan)! - Added
the watch mode (`--watch`) to the CLI for `check`/`format`/`lint`
commands. By enabling this option, Biome will re-run the check
automatically when any file in the workspace has changed after the first
run.
- [#​10106](https://redirect.github.com/biomejs/biome/pull/10106)
[`9b35f78`](https://redirect.github.com/biomejs/biome/commit/9b35f78e183edf44a3d8b7077ebb0c548a7e92f5)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Biome can now format and lint `.svg` files.
- [#​9967](https://redirect.github.com/biomejs/biome/pull/9967)
[`e9b6c17`](https://redirect.github.com/biomejs/biome/commit/e9b6c17cd6f7e870aea68da3b6c6474aa1a9b4f6)
Thanks [@​dyc3](https://redirect.github.com/dyc3)! - Added HTML
support for
[`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/).
Biome now reports HTML files that exceed the configured line limit,
including when `skipBlankLines` is enabled.
- [#​9491](https://redirect.github.com/biomejs/biome/pull/9491)
[`b3eb63c`](https://redirect.github.com/biomejs/biome/commit/b3eb63c7e19e6ebd41e463289de098bb003686e1)
Thanks [@​IxxyDev](https://redirect.github.com/IxxyDev)! - Added
the HTML lint rule
[`noAriaUnsupportedElements`](https://biomejs.dev/linter/rules/no-aria-unsupported-elements/).
This rule enforces that elements that do not support ARIA roles, states,
and properties (`meta`, `html`, `script`, `style`) do not have `role` or
`aria-*` attributes.
```html
<!-- Invalid: meta does not support aria attributes -->
<meta charset="UTF-8" role="meta" />
```
- [#​9306](https://redirect.github.com/biomejs/biome/pull/9306)
[`afd57a6`](https://redirect.github.com/biomejs/biome/commit/afd57a634bdb6b0b161dc8a2522ac460503569b1)
Thanks [@​viraxslot](https://redirect.github.com/viraxslot)! -
Added the
[`noNoninteractiveTabindex`](https://biomejs.dev/linter/rules/no-noninteractive-tabindex/)
lint rule for HTML. This rule enforces that `tabindex` is not used on
non-interactive elements, as it can cause usability issues for keyboard
users.
```html
<div tabindex="0">Invalid: non-interactive element</div>
`
```
- [#​9276](https://redirect.github.com/biomejs/biome/pull/9276)
[`6d041d9`](https://redirect.github.com/biomejs/biome/commit/6d041d919e06595553093e084e6aad0d39fb8109)
Thanks [@​IxxyDev](https://redirect.github.com/IxxyDev)! - Added
the HTML lint rule
[`noRedundantRoles`](https://biomejs.dev/linter/rules/no-redundant-roles/).
This rule enforces that explicit `role` attributes are not the same as
the implicit/default role of an HTML element. It supports HTML, Vue,
Svelte, and Astro files.
```html
<!-- Invalid: role="button" is redundant on <button> -->
<button role="button"></button>
```
- [#​9813](https://redirect.github.com/biomejs/biome/pull/9813)
[`69aadc2`](https://redirect.github.com/biomejs/biome/commit/69aadc27741bb8a74c926e14a2a9777064cb1e03)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added a new linter configuration called `preset`. With the new option,
users can enable different kinds of rules at once.
The following presets are available:
- `"recommended"`: it enables all Biome-recommended rules, or
recommended rules of a group;
- `"all"`: it enables all Biome rules, or enables all rules of a group;
- `"none"`: it disables all Biome rules, or disable all rules of a
group.
You can enable recommended rules:
```json
{
"linter": {
"rules": {
"preset": "recommended"
}
}
}
```
You can enable **all rules** at once:
```json5
{
linter: {
rules: {
preset: "all", // enables all rules
},
},
}
```
Or enable all rules for a group:
```json5
{
linter: {
rules: {
style: {
preset: "all", // enables all rules in the style group
},
},
},
}
```
This new option, however, doesn't affect how nursery rules work. Nursery
rules must be enabled singularly, due to their nature.
This new option is meant to replace `recommended`, so make sure to run
the `migrate` command.
- [#​10022](https://redirect.github.com/biomejs/biome/pull/10022)
[`3422d71`](https://redirect.github.com/biomejs/biome/commit/3422d71bc5e9d7f07fd4e7509566427e1591d760)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noNoninteractiveElementToInteractiveRole`](https://biomejs.dev/linter/rules/no-noninteractive-element-to-interactive-role/),
which enforces that interactive ARIA roles are not assigned to
non-interactive HTML elements.
**Invalid**:
```html
<h1 role="checkbox"></h1>
```
- [#​8396](https://redirect.github.com/biomejs/biome/pull/8396)
[`13785fc`](https://redirect.github.com/biomejs/biome/commit/13785fc8f4be068eccff84a8ad90ac8530d5c992)
Thanks [@​apple-yagi](https://redirect.github.com/apple-yagi)! -
Biome now supports pnpm catalogs (default and named) when resolving
dependencies for linting. This behavior is opt-in and requires setting
`javascript.resolver.experimentalPnpmCatalogs` to `true`.
- [#​10028](https://redirect.github.com/biomejs/biome/pull/10028)
[`1009414`](https://redirect.github.com/biomejs/biome/commit/100941409f3ec5e6653e92b2cfbb4100df1becb0)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noInteractiveElementToNoninteractiveRole`](https://biomejs.dev/linter/rules/no-interactive-element-to-noninteractive-role/),
which enforces that non-interactive ARIA roles are not assigned to
interactive HTML elements.
**Invalid**:
```html
<input role="img" />
```
- [#​9853](https://redirect.github.com/biomejs/biome/pull/9853)
[`816302f`](https://redirect.github.com/biomejs/biome/commit/816302f8c8c9862585c283fce22ffd1817dedf9f)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
new assist action
[`useSortedSelectionSet`](https://biomejs.dev/assist/actions/use-sorted-selection-set/),
which sorts GraphQL selection sets alphabetically, e.g. `name, age, id`
becomes `age, id, name`.
**Invalid**:
```graphql
query {
name
age
id
}
```
- [#​10074](https://redirect.github.com/biomejs/biome/pull/10074)
[`9c7c6eb`](https://redirect.github.com/biomejs/biome/commit/9c7c6eb99f6880aa87ae0e7aff357e978361c4a3)
Thanks
[@​georgephillips](https://redirect.github.com/georgephillips)! -
Added a `kind` field to the `ImportMatcher` used by the
[`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/)
assist action. The new field selects imports by their syntactic kind and
currently supports `bare` (matching side-effect imports such as `import
"polyfill"`) with optional `!` negation (`!bare`). The matcher composes
with the existing `type` and `source` fields, so users can express
patterns such as "only bare imports that import a CSS file" (`{ "kind":
"bare", "source": "**/*.css" }`).
For example, with the following configuration:
```json
{
"assist": {
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": {
"sortBareImports": true,
"groups": [
{ "kind": "!bare" },
":BLANK_LINE:",
{ "kind": "bare" }
]
}
}
}
}
}
}
```
...the following code:
```ts
import "./register-my-component";
import { render } from "react-dom";
import "./polyfill";
import { Button } from "@​/components/Button";
```
...is organized as:
```ts
import { render } from "react-dom";
import { Button } from "@​/components/Button";
import "./polyfill";
import "./register-my-component";
```
- [#​9171](https://redirect.github.com/biomejs/biome/pull/9171)
[`ce65710`](https://redirect.github.com/biomejs/biome/commit/ce65710f591eb2676df6833e9cd00e310981692b)
Thanks [@​chocky335](https://redirect.github.com/chocky335)! -
Added `includes` option for plugin file scoping. Plugins can now be
configured with glob patterns to restrict which files they run on. Use
negated globs for exclusions.
```json
{
"plugins": [
"global-plugin.grit",
{
"path": "scoped-plugin.grit",
"includes": ["src/**/*.ts", "!**/*.test.ts"]
}
]
}
```
- [#​9617](https://redirect.github.com/biomejs/biome/pull/9617)
[`dcb99ef`](https://redirect.github.com/biomejs/biome/commit/dcb99ef0305d8431af40b526c449316bb8a70efa)
Thanks [@​faizkhairi](https://redirect.github.com/faizkhairi)! -
Ported
[`useAriaActivedescendantWithTabindex`](https://biomejs.dev/linter/rules/use-aria-activedescendant-with-tabindex/)
a11y rule to HTML.
- [#​9496](https://redirect.github.com/biomejs/biome/pull/9496)
[`1dfb829`](https://redirect.github.com/biomejs/biome/commit/1dfb8291a0a2340e7c9220f9126317a7490ec466)
Thanks [@​aviraldua93](https://redirect.github.com/aviraldua93)! -
Added HTML support for the
[`noAriaHiddenOnFocusable`](https://biomejs.dev/linter/rules/no-aria-hidden-on-focusable/)
accessibility lint rule, which enforces that `aria-hidden="true"` is not
set on focusable elements. Focusable elements include native interactive
elements (`<button>`, `<input>`, `<select>`, `<textarea>`), elements
with `href` (`<a>`, `<area>`), elements with `tabindex >= 0`, and
editing hosts (`contenteditable`). Includes an unsafe fix to remove the
`aria-hidden` attribute.
```html
<!-- Invalid: aria-hidden on a focusable element -->
<button aria-hidden="true">Submit</button>
<!-- Valid: aria-hidden on a non-focusable element -->
<div aria-hidden="true">decorative content</div>
```
- [#​9792](https://redirect.github.com/biomejs/biome/pull/9792)
[`f516854`](https://redirect.github.com/biomejs/biome/commit/f51685404f015a5c6f0fc87b9070ac5d9f0a7b6b)
Thanks
[@​Maximiliano-Zeballos](https://redirect.github.com/Maximiliano-Zeballos)!
- Added the
[`useSemanticElements`](https://biomejs.dev/linter/rules/use-semantic-elements/)
lint rule for HTML. The rule now detects the use of `role` attributes in
HTML elements and suggests using semantic elements instead.
For example, the following code is now flagged:
```html
<div role="navigation"></div>
```
The rule suggests using `<nav>` instead.
- [#​9761](https://redirect.github.com/biomejs/biome/pull/9761)
[`cbbb7d5`](https://redirect.github.com/biomejs/biome/commit/cbbb7d5bf21d8fb6db275da7adcc03c034538635)
Thanks
[@​Maximiliano-Zeballos](https://redirect.github.com/Maximiliano-Zeballos)!
- Ported the
[`useValidAriaProps`](https://biomejs.dev/linter/rules/use-valid-aria-props/)
lint rule to HTML. This rule checks that all `aria-*` attributes used in
HTML elements are valid ARIA attributes as defined by the WAI-ARIA
specification.
- [#​9928](https://redirect.github.com/biomejs/biome/pull/9928)
[`aa82576`](https://redirect.github.com/biomejs/biome/commit/aa82576ff66e03924e07729051ac9bfc59cd5aa1)
Thanks [@​aviraldua93](https://redirect.github.com/aviraldua93)! -
Ported
[`useValidAriaValues`](https://biomejs.dev/linter/rules/use-valid-aria-values/)
to HTML. Biome now validates static `aria-*` attribute values in HTML
elements against WAI-ARIA types, catching invalid values such as
`aria-hidden="yes"`.
- [#​10562](https://redirect.github.com/biomejs/biome/pull/10562)
[`6642895`](https://redirect.github.com/biomejs/biome/commit/66428957e6ca393a802f365b8e643438f19a3039)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Promoted 73 nursery rules to stable groups.
Four rules were renamed as part of the promotion:
- `noFloatingClasses` is now
[`noUnusedInstantiation`](https://biomejs.dev/linter/rules/no-unused-instantiation/),
because the rule checks any discarded `new` expression, not only
classes.
- `noMultiStr` is now
[`noMultilineString`](https://biomejs.dev/linter/rules/no-multiline-string/).
- `useFind` is now
[`useArrayFind`](https://biomejs.dev/linter/rules/use-array-find/).
- `useSpread` is now
[`useSpreadOverApply`](https://biomejs.dev/linter/rules/use-spread-over-apply/),
because the rule enforces spread call arguments over `Function.apply()`,
not array or object spread.
##### Correctness
Promoted the following rules to the `correctness` group:
-
[`noBeforeInteractiveScriptOutsideDocument`](https://biomejs.dev/linter/rules/no-before-interactive-script-outside-document/)
-
[`noUnusedInstantiation`](https://biomejs.dev/linter/rules/no-unused-instantiation/)
-
[`useInlineScriptId`](https://biomejs.dev/linter/rules/use-inline-script-id/)
(recommended, Next.js domain)
-
[`noVueVIfWithVFor`](https://biomejs.dev/linter/rules/no-vue-v-if-with-v-for/)
(recommended, Vue domain)
-
[`useVueValidVBind`](https://biomejs.dev/linter/rules/use-vue-valid-v-bind/)
(recommended, Vue domain)
-
[`useVueValidVElse`](https://biomejs.dev/linter/rules/use-vue-valid-v-else/)
(recommended, Vue domain)
-
[`useVueValidVElseIf`](https://biomejs.dev/linter/rules/use-vue-valid-v-else-if/)
(recommended, Vue domain)
-
[`useVueValidVHtml`](https://biomejs.dev/linter/rules/use-vue-valid-v-html/)
(recommended, Vue domain)
-
[`useVueValidVIf`](https://biomejs.dev/linter/rules/use-vue-valid-v-if/)
(recommended, Vue domain)
-
[`useVueValidVOn`](https://biomejs.dev/linter/rules/use-vue-valid-v-on/)
(recommended, Vue domain)
-
[`useVueValidVText`](https://biomejs.dev/linter/rules/use-vue-valid-v-text/)
(recommended, Vue domain)
-
[`useVueValidTemplateRoot`](https://biomejs.dev/linter/rules/use-vue-valid-template-root/)
(recommended, Vue domain)
-
[`useVueValidVCloak`](https://biomejs.dev/linter/rules/use-vue-valid-v-cloak/)
(recommended, Vue domain)
-
[`useVueValidVOnce`](https://biomejs.dev/linter/rules/use-vue-valid-v-once/)
(recommended, Vue domain)
-
[`useVueValidVPre`](https://biomejs.dev/linter/rules/use-vue-valid-v-pre/)
(recommended, Vue domain)
- [`useVueVForKey`](https://biomejs.dev/linter/rules/use-vue-v-for-key/)
(recommended, Vue domain)
-
[`noDuplicateAttributes`](https://biomejs.dev/linter/rules/no-duplicate-attributes/)
(recommended)
-
[`noDuplicateArgumentNames`](https://biomejs.dev/linter/rules/no-duplicate-argument-names/)
(recommended)
-
[`noDuplicateInputFieldNames`](https://biomejs.dev/linter/rules/no-duplicate-input-field-names/)
(recommended)
-
[`noDuplicateVariableNames`](https://biomejs.dev/linter/rules/no-duplicate-variable-names/)
(recommended)
-
[`noDuplicateEnumValueNames`](https://biomejs.dev/linter/rules/no-duplicate-enum-value-names/)
(recommended)
-
[`useLoneAnonymousOperation`](https://biomejs.dev/linter/rules/use-lone-anonymous-operation/)
(recommended)
##### Suspicious
Promoted the following rules to the `suspicious` group:
- [`noShadow`](https://biomejs.dev/linter/rules/no-shadow/)
-
[`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/)
-
[`noParametersOnlyUsedInRecursion`](https://biomejs.dev/linter/rules/no-parameters-only-used-in-recursion/)
-
[`noUnknownAttribute`](https://biomejs.dev/linter/rules/no-unknown-attribute/)
-
[`useArraySortCompare`](https://biomejs.dev/linter/rules/use-array-sort-compare/)
- [`noForIn`](https://biomejs.dev/linter/rules/no-for-in/)
-
[`noDuplicatedSpreadProps`](https://biomejs.dev/linter/rules/no-duplicated-spread-props/)
-
[`noEqualsToNull`](https://biomejs.dev/linter/rules/no-equals-to-null/)
- [`noProto`](https://biomejs.dev/linter/rules/no-proto/) (recommended)
-
[`noUndeclaredEnvVars`](https://biomejs.dev/linter/rules/no-undeclared-env-vars/)
(recommended, Turborepo domain)
- [`noReturnAssign`](https://biomejs.dev/linter/rules/no-return-assign/)
(default severity: `error`)
-
[`noDuplicateEnumValues`](https://biomejs.dev/linter/rules/no-duplicate-enum-values/)
(recommended)
-
[`noVueArrowFuncInWatch`](https://biomejs.dev/linter/rules/no-vue-arrow-func-in-watch/)
(recommended, Vue domain)
-
[`noNestedPromises`](https://biomejs.dev/linter/rules/no-nested-promises/)
- [`noLeakedRender`](https://biomejs.dev/linter/rules/no-leaked-render/)
-
[`noDeprecatedMediaType`](https://biomejs.dev/linter/rules/no-deprecated-media-type/)
(recommended)
-
[`noDuplicateGraphqlOperationName`](https://biomejs.dev/linter/rules/no-duplicate-graphql-operation-name/)
-
[`useRequiredScripts`](https://biomejs.dev/linter/rules/use-required-scripts/)
##### Style
Promoted the following rules to the `style` group:
-
[`useVueMultiWordComponentNames`](https://biomejs.dev/linter/rules/use-vue-multi-word-component-names/)
(recommended, Vue domain)
-
[`useVueDefineMacrosOrder`](https://biomejs.dev/linter/rules/use-vue-define-macros-order/)
-
[`noIncrementDecrement`](https://biomejs.dev/linter/rules/no-increment-decrement/)
- [`noContinue`](https://biomejs.dev/linter/rules/no-continue/)
-
[`useSpreadOverApply`](https://biomejs.dev/linter/rules/use-spread-over-apply/)
- [`noTernary`](https://biomejs.dev/linter/rules/no-ternary/)
-
[`noMultilineString`](https://biomejs.dev/linter/rules/no-multiline-string/)
- [`noMultiAssign`](https://biomejs.dev/linter/rules/no-multi-assign/)
-
[`noExcessiveClassesPerFile`](https://biomejs.dev/linter/rules/no-excessive-classes-per-file/)
-
[`noExcessiveLinesPerFile`](https://biomejs.dev/linter/rules/no-excessive-lines-per-file/)
-
[`noVueOptionsApi`](https://biomejs.dev/linter/rules/no-vue-options-api/)
- [`useErrorCause`](https://biomejs.dev/linter/rules/use-error-cause/)
-
[`useConsistentEnumValueType`](https://biomejs.dev/linter/rules/use-consistent-enum-value-type/)
-
[`useConsistentMethodSignatures`](https://biomejs.dev/linter/rules/use-consistent-method-signatures/)
- [`useGlobalThis`](https://biomejs.dev/linter/rules/use-global-this/)
(default severity: `warn`)
-
[`useDestructuring`](https://biomejs.dev/linter/rules/use-destructuring/)
-
[`useVueHyphenatedAttributes`](https://biomejs.dev/linter/rules/use-vue-hyphenated-attributes/)
(recommended, Vue domain)
-
[`useVueConsistentVBindStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-bind-style/)
(recommended, Vue domain)
-
[`useVueConsistentVOnStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-on-style/)
(recommended, Vue domain)
- [`noHexColors`](https://biomejs.dev/linter/rules/no-hex-colors/)
-
[`useConsistentGraphqlDescriptions`](https://biomejs.dev/linter/rules/use-consistent-graphql-descriptions/)
- [`noRootType`](https://biomejs.dev/linter/rules/no-root-type/)
-
[`useLoneExecutableDefinition`](https://biomejs.dev/linter/rules/use-lone-executable-definition/)
- [`useInputName`](https://biomejs.dev/linter/rules/use-input-name/)
##### Complexity
Promoted the following rules to the `complexity` group:
- [`useArrayFind`](https://biomejs.dev/linter/rules/use-array-find/)
-
[`noRedundantDefaultExport`](https://biomejs.dev/linter/rules/no-redundant-default-export/)
(default severity: `warn`)
-
[`noUselessReturn`](https://biomejs.dev/linter/rules/no-useless-return/)
- [`noDivRegex`](https://biomejs.dev/linter/rules/no-div-regex/)
##### Performance
Promoted the following rules to the `performance` group:
- [`noSyncScripts`](https://biomejs.dev/linter/rules/no-sync-scripts/)
-
[`noJsxPropsBind`](https://biomejs.dev/linter/rules/no-jsx-props-bind/)
- [`useVueVapor`](https://biomejs.dev/linter/rules/use-vue-vapor/)
##### Security
Promoted the following rules to the `security` group:
- [`noScriptUrl`](https://biomejs.dev/linter/rules/no-script-url/)
(recommended)
##### A11y
Promoted the following rules to the `a11y` group:
-
[`noAmbiguousAnchorText`](https://biomejs.dev/linter/rules/no-ambiguous-anchor-text/)
(recommended)
- [#​10121](https://redirect.github.com/biomejs/biome/pull/10121)
[`450f8e1`](https://redirect.github.com/biomejs/biome/commit/450f8e1c0a46e8c867a63a0842deaa50dee95176)
Thanks [@​jongwan56](https://redirect.github.com/jongwan56)! -
Biome now applies Git's local exclude file when VCS ignore files are
enabled. Files listed in `.git/info/exclude` are skipped the same way as
files listed in `.gitignore`, including in linked worktrees.
- [#​9397](https://redirect.github.com/biomejs/biome/pull/9397)
[`d5913c9`](https://redirect.github.com/biomejs/biome/commit/d5913c9d57b771b0b1c0097f8014017878cc14c2)
Thanks [@​mvarendorff](https://redirect.github.com/mvarendorff)! -
Added `ignore` option to the
[noUnusedVariables](https://biomejs.dev/linter/rules/no-unused-variables/)
rule. The option allows excluding identifiers by providing a list of
ignored names. It also allows excluding kinds of identifiers from this
rule entirely, which may be useful when loading classes dynamically.
For example, unused classes as well as all unused variables, functions,
etc. called "unused" may be ignored entirely with the following
configuration:
```json
{
"ignore": {
"*": ["unused"],
"class": ["*"]
}
}
```
- [#​10089](https://redirect.github.com/biomejs/biome/pull/10089)
[`71a21f0`](https://redirect.github.com/biomejs/biome/commit/71a21f0ab4fd32739331d3b3068c6c1ae6392290)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
lint rule
[`noLabelWithoutControl`](https://biomejs.dev/linter/rules/no-label-without-control/)
to HTML, which enforces that a label element or component has a text
label and an associated input.
```html
<label></label>
```
- [#​10015](https://redirect.github.com/biomejs/biome/pull/10015)
[`1828261`](https://redirect.github.com/biomejs/biome/commit/182826178de9c1b23bad2e997c3567a9d5176ba2)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`useAriaPropsSupportedByRole`](https://biomejs.dev/linter/rules/use-aria-props-supported-by-role/),
which enforces that ARIA properties are valid for the roles that are
supported by the element.
```html
<a href="#" aria-checked></a>
```
- [#​10234](https://redirect.github.com/biomejs/biome/pull/10234)
[`1a51569`](https://redirect.github.com/biomejs/biome/commit/1a51569229936b9ad1191d081ed6742e8342badd)
Thanks [@​ematipico](https://redirect.github.com/ematipico)! -
Added the `delimiterSpacing` formatter option. This option inserts
spaces inside delimiters (after the opening delimiter and before the
closing delimiter) when the content fits on a single line. Empty
delimiters are not affected, and no space is added before the opening
delimiter. The specific delimiters affected depend on the language. It
can be configured globally via `formatter.delimiterSpacing` or
per-language via `javascript.formatter.delimiterSpacing`,
`json.formatter.delimiterSpacing`, and `css.formatter.delimiterSpacing`.
Defaults to `false`.
```diff
- callFn(foo)
+ callFn( foo )
```
```diff
- const arr = [1, 2, 3];
+ const arr = [ 1, 2, 3 ];
```
##### JavaScript
When enabled, Biome inserts spaces inside parentheses (e.g., `foo( a, b
)`), square brackets (e.g., `[ a, b ]`), template literal interpolations
(e.g., `${ expr }`), and the logical NOT operator (e.g., `! x`, but in
chains only after the last one: `!! x`). Only applies when the content
fits on a single line. Empty delimiters and the space before the opening
delimiter are not affected.
```diff
- if (condition) {}
+ if ( condition ) {}
```
```diff
- `Hello ${name}!`
+ `Hello ${ name }!`
```
##### JSX
When enabled, Biome inserts spaces inside JSX expression braces (e.g.,
`attr={ value }`) and spread attributes (e.g., `{ ...props }`). Only
applies when the content fits on a single line. Empty delimiters are not
affected.
```diff
- <Foo bar={value} />
+ <Foo bar={ value } />
```
##### TypeScript
When enabled, Biome inserts spaces inside TypeScript angle brackets
(e.g., `foo< T >()`), indexed access types (e.g., `T[ K ]`), mapped
types, tuple types, type parameters, and index signatures. Only applies
when the content fits on a single line. Empty delimiters are not
affected.
```diff
- type Result = Map<string, number>;
+ type Result = Map< string, number >;
```
##### JSON
When enabled, Biome inserts spaces inside square brackets when the
content fits on a single line. Empty brackets are not affected.
```diff
- [1, 2, 3]
+ [ 1, 2, 3 ]
```
##### CSS
When enabled, Biome inserts spaces inside parentheses and square
brackets when the content fits on a single line. Empty delimiters are
not affected.
```diff
- rgba(0, 0, 0, 1)
+ rgba( 0, 0, 0, 1 )
```
```diff
- [data-attr]
+ [ data-attr ]
```
- [#​10461](https://redirect.github.com/biomejs/biome/pull/10461)
[`6bac1c3`](https://redirect.github.com/biomejs/biome/commit/6bac1c3457d396215e4daed5fc59eaf23b42f4eb)
Thanks [@​TXWSLYF](https://redirect.github.com/TXWSLYF)! -
Implements
[#​9445](https://redirect.github.com/biomejs/biome/issues/9445).
Added the `allowImplicit` option to
[`useIterableCallbackReturn`](https://biomejs.dev/linter/rules/use-iterable-callback-return/).
When enabled, callbacks can use `return;` to implicitly return
`undefined`, matching ESLint's `array-callback-return` rule.
- [#​9571](https://redirect.github.com/biomejs/biome/pull/9571)
[`5a8eb75`](https://redirect.github.com/biomejs/biome/commit/5a8eb755fe07b38760d2b72ec46e24cd108f6619)
Thanks [@​dyc3](https://redirect.github.com/dyc3)! - Added
configurable options to the
[`useNumericSeparators`](https://biomejs.dev/linter/rules/use-numeric-separators/)
rule. Users can now customize the minimum number of digits required
before adding separators and the group length for each type of numeric
literal (`binary`, `octal`, `decimal`, `hexadecimal`).
```json
{
"linter": {
"rules": {
"style": {
"useNumericSeparators": {
"level": "error",
"options": {
"decimal": {
"minimumDigits": 7,
"groupLength": 3
},
"hexadecimal": {
"minimumDigits": 4,
"groupLength": 2
}
}
}
}
}
}
}
```
- [#​10067](https://redirect.github.com/biomejs/biome/pull/10067)
[`6064312`](https://redirect.github.com/biomejs/biome/commit/60643120b5593104b311e184cf9581b9c7c2254d)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
lint rule
[`useFocusableInteractive`](https://biomejs.dev/linter/rules/use-focusable-interactive/)
to HTML, which enforces elements with an interactive role and
interaction handler to be focusable.
**Invalid**:
```html
<div role="button"></div>
```
- [#​10026](https://redirect.github.com/biomejs/biome/pull/10026)
[`fb42ac4`](https://redirect.github.com/biomejs/biome/commit/fb42ac42079ec7b8e699a507bce332f4446ac7f2)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`noNoninteractiveElementInteractions`](https://biomejs.dev/linter/rules/no-noninteractive-element-interactions/),
which disallows use event handlers on non-interactive elements.
**Invalid**:
```html
<div onclick="myFunction()">button</div>
```
- [#​10000](https://redirect.github.com/biomejs/biome/pull/10000)
[`2093e3e`](https://redirect.github.com/biomejs/biome/commit/2093e3ee2a615abecae159d35a5a17fe0df5f506)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
new assist action
[`useSortedEnumMembers`](https://biomejs.dev/assist/actions/use-sorted-enum-members/),
which sorts TypeScript & GraphQL enum members.
**Invalid**:
```graphql
enum Role {
SUPER_ADMIN
ADMIN
USER
GOD
}
```
- [#​10013](https://redirect.github.com/biomejs/biome/pull/10013)
[`ad01d3d`](https://redirect.github.com/biomejs/biome/commit/ad01d3d882276b070433822f01cdf6afed63ca4e)
Thanks [@​Netail](https://redirect.github.com/Netail)! - Added the
HTML lint rule
[`useValidAutocomplete`](https://biomejs.dev/linter/rules/use-valid-autocomplete/),
which enforces using valid values for the `autocomplete` attribute on
`input` elements.
```html
<input autocomplete="incorrect" />
```
##### Patch Changes
- [#​10498](https://redirect.github.com/biomejs/biome/pull/10498)
[`995c1ff`](https://redirect.github.com/biomejs/biome/commit/995c1ffeca039787c93370fed8b970a057e9c073)
Thanks [@​citadelgrad](https://redirect.github.com/citadelgrad)! -
Added the nursery rule
[`useReactFunctionComponentDefinition`](https://biomejs.dev/linter/rules/use-react-function-component-definition),
which enforces a consistent function type for named React function
components.
For example, the following snippet triggers the rule by default.
```jsx
const MyComponent = (props) => {
return <div>{props.name}</div>;
};
```
- [#​9974](https://redirect.github.com/biomejs/biome/pull/9974)
[`ff635a9`](https://redirect.github.com/biomejs/biome/commit/ff635a90da3567a9006ae947b6c5983d87dfbb9f)
Thanks [@​pkallos](https://redirect.github.com/pkallos)! - Added
`ignoreMixedLogicalExpressions` to
[useNullishCoalescing](https://biomejs.dev/linter/rules/use-nullish-coalescing/),
partially addressing
[#​9232](https://redirect.github.com/biomejs/biome/issues/9232).
When enabled, Biome ignores `||` and `||=` mixed with `&&` in the same
expression tree.
- [#​10503](https://redirect.github.com/biomejs/biome/pull/10503)
[`c656679`](https://redirect.github.com/biomejs/biome/commit/c656679d1f9e725a42e5d60fb3b9e76bb03d7f88)
Thanks [@​Mokto](https://redirect.github.com/Mokto)! - Added the
new nursery rule `useSvelteRequireEachKey`, a Svelte lint rule that
reports `{#each}` blocks with item bindings that are missing a key.
- [#​10516](https://redirect.github.com/biomejs/biome/pull/10516)
[`0f29b83`](https://redirect.github.com/biomejs/biome/commit/0f29b8361ba3cd11bdbfb91f8ff722184cfadf08)
Thanks [@​Dotify71](https://redirect.github.com/Dotify71)! - Added
[`useIncludes`](https://biomejs.dev/linter/rules/use-includes/) to the
nursery group. This rule flags comparisons of
`String.prototype.indexOf()` or `Array.prototype.indexOf()` against `-1`
and suggests replacing them with the clearer `includes()` /
`!includes()` form.
- [#​10487](https://redirect.github.com/biomejs/biome/pull/10487)
[`0c03ee3`](https://redirect.github.com/biomejs/biome/commit/0c03ee3deee068220175c3599e6bc3c4ed8ad247)
Thanks [@​Mokto](https://redirect.github.com/Mokto)! - Fixed a
Svelte parser error that incorrectly required a binding variable after
`{:then}` and `{:catch}`. Biome now correctly accepts `{:then}` and
`{:catch}` without a binding, as well as the `{#await expr then}` and
`{#await expr catch}` shorthand forms.
- [#​10566](https://redirect.github.com/biomejs/biome/pull/10566)
[`a4a294c`](https://redirect.github.com/biomejs/biome/commit/a4a294c3c1128fc5b38634262d499d3d2601bf3b)
Thanks [@​dyc3](https://redirect.github.com/dyc3)! - Fixed
[`useVueHyphenatedAttributes`](https://biomejs.dev/linter/rules/use-vue-hyphenated-attributes/):
The rule now only reports diagnostics in Vue files and ignores SVG
elements.
- [#​10565](https://redirect.github.com/biomejs/biome/pull/10565)
[`72ccf3b`](https://redirect.github.com/biomejs/biome/commit/72ccf3b042c4258f9871ff5b99d87f879cecccde)
Thanks [@​dyc3](https://redirect.github.com/dyc3)! - Fixed
[`useVueConsistentVBindStyle`](https://biomejs.dev/linter/rules/use-vue-consistent-v-bind-style/):
The rule no longer reports argument-less `v-bind` directives because
they cannot be converted to shorthand syntax.
- [#​10591](https://redirect.github.com/biomejs/biome/pull/10591)
[`6e8557b`](https://redirect.github.com/biomejs/biome/commit/6e8557b1b8e49ce2383f6089a46624eb030178ad)
Thanks
[@​xsourabhsharma](https://redirect.github.com/xsourabhsharma)! -
Fixed
[#​10563](https://redirect.github.com/biomejs/biome/issues/10563):
Biome now parses comma-separated CSS Modules `composes` values, such as
`composes: classA from "./a.css", classB from "./b.css";`.
- [#​10603](https://redirect.github.com/biomejs/biome/pull/10603)
[`174b21b`](https://redirect.github.com/biomejs/biome/commit/174b21b52993fc3e0237ceefe97c0d71c9b5264e)
Thanks [@​denbez
> ✂ **Note**
>
> PR body was truncated to here.
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- "before 4am on Monday"
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/prometheus/client_java).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
---------
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>1 parent bb77fa9 commit e550766
2 files changed
Lines changed: 64 additions & 64 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
| 12 | + | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
19 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
0 commit comments