chore: update @biomejs/biome 1.9.2 → 1.9.4 (patch)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request.
What changed?
✳ ️ @biomejs/biome (1.9.2 → 1.9.4) · Repo · Changelog
Release Notes
1.9.4 (from changelog)
Analyzer
Bug fixes
Implement GraphQL suppression action. Contributed by @vohoanglong0107
Improved the message for unused suppression comments. Contributed by @dyc3
Fix #4228, where the rule
a11y/noInteractiveElementToNoninteractiveRole
incorrectly reports arole
for non-interactive elements. Contributed by @eryue0220
noSuspiciousSemicolonInJsx
now catches suspicious semicolons in React fragments. Contributed by @vasucp1207CLI
Enhancements
The
--summary
reporter now reports parsing diagnostics too. Contributed by @ematipicoImproved performance of GritQL queries by roughly 25-30%. Contributed by @arendjr
Configuration
Bug fixes
- Fix an issue where the JSON schema marked lint rules options as mandatory. Contributed by @ematipico
Editors
Formatter
Bug fixes
JavaScript APIs
Linter
New features
- Add useGuardForIn. Contributed by @fireairforce
- Add noDocumentCookie. Contributed by @tunamaguro
- Add noDocumentImportInPage. Contributed by @kaioduarte
- Add noDuplicateProperties. Contributed by @togami2864
- Add noHeadElement. Contributed by @kaioduarte
- Add noHeadImportInDocument. Contributed by @kaioduarte
- Add noImgElement. Contributed by @kaioduarte
- Add noUnknownTypeSelector. Contributed by @Kazuhiro-Mimaki
- Add useAtIndex. Contributed by @GunseiKPaseri
- Add noUselessStringRaw. Contributed by @fireairforce
- Add nursery/useCollapsedIf. Contributed by @siketyan
- Add useGoogleFontDisplay. Contributed by @kaioduarte
Bug Fixes
Biome no longer crashes when it encounters a string that contain a multibyte character (#4181).
This fixes a regression introduced in Biome 1.9.3 The regression affected the following linter rules:
nursery/useSortedClasses
nursery/useTrimStartEnd
style/useTemplate
suspicious/noMisleadingCharacterClass
Contributed by @Conaclos
Fix #4190, where the rule
noMissingVarFunction
wrongly reported a variable as missing when used inside avar()
function that was a newline. Contributed by @ematipicoFix #4041. Now the rule
useSortedClasses
won't be triggered ifclassName
is composed only by inlined variables. Contributed by @ematipicouseImportType and useExportType now report useless inline type qualifiers (#4178).
The following fix is now proposed:
- import type { type A, B } from "";
+ import type { A, B } from "";- export type { type C, D };
+ export type { C, D };Contributed by @Conaclos
useExportType now reports ungrouped
export from
.The following fix is now proposed:
- export { type A, type B } from ""; + export type { A, B } from "";Contributed by @Conaclos
noVoidTypeReturn now accepts
void
expressions in return position (#4173).The following code is now accepted:
function f(): void { return void 0; }Contributed by @Conaclos
noUselessFragments now correctly handles fragments containing HTML escapes (e.g.
) inside expression escapes{ ... }
(#4059).The following code is no longer reported:
function Component() { return ( <div key={index}>{line || <> </>}</div> ) }Contributed by @fireairforce
noUnusedFunctionParameters and noUnusedVariables no longer reports a parameter as unused when another parameter has a constructor type with the same parameter name (#4227).
In the following code, the
name
parameter is no longer reported as unused.export class Foo { bar(name: string, _class: new (name: string) => any) { return name } }Contributed by @Conaclos
noUndeclaredDependencies now accepts dependency names with dots. Contributed by @Conaclos
useFilenamingConvention now correctly handles renamed exports (#4254).
The rule allows the filename to be named as one of the exports of the module. For instance, the file containing the following export can be named
Button
.class Button {} export { Button }The rule now correctly handles the renaming of an export. For example, the file containing the following export can only be named
Button
. Previously the rule expected the file to be namedA
.class A {} export { A as Button }Contributed by @Conaclos
useConsistentMemberAccessibility now ignore private class members such as
#property
(#4276). Contributed by @ConaclosnoUnknownFunction correctly handles
calc-size
function (#4212).The following code
calc-size
is no longer reported as unknown:.a { height: calc-size(0px); }Contributed by @fireairforce
useNamingConvention now allows configuring conventions for readonly index signatures.
Contributed by @sepruko
- noDuplicateCustomProperties now correctly handles custom properties and ignores non-custom properties. Previously, the rule incorrectly reported duplicates for all properties, including non-custom ones. Contributed by @togami2864
Parser
Bug Fixes
The CSS parser now accepts more emoji in identifiers (#3627).
Browsers accept more emoji than the standard allows. Biome now accepts these additional emojis.
The following code is now correctly parsed:
p { --✨-color: red; color: var(--✨-color); }Contributed by @Conaclos
Add support for parsing typescript's
resolution-mode
in Import Types(#2115)export type Fs = typeof import('fs', { with: { 'resolution-mode': 'import' } }); export type TypeFromRequire = import("pkg", { with: { "resolution-mode": "require" } }).TypeFromRequire; export type TypeFromImport = import("pkg", { with: { "resolution-mode": "import" } }).TypeFromImport;Contributed by @fireairforce
1.9.3 (from changelog)
CLI
New features
GritQL queries that match functions or methods will now match async functions or methods as well.
If this is not what you want, you can capture the
async
keyword (or its absence) in a metavariable and assert its emptiness:$async function foo() {} where $async <: .
Contributed by @arendjr
Bug fixes
Fix #4077: Grit queries no longer need to match the statement's trailing semicolon. Contributed by @arendjr
Fix #4102. Now the CLI command
lint
doesn't exit with an error code when using--write
/--fix
. Contributed by @ematipicoConfiguration
Bug fixes
- Fix #4125, where
noLabelWithoutControl
options where incorrectly marked as mandatory. Contributed by @ematipicoEditors
- Fix a case where CSS files weren't correctly linted using the default configuration. Contributed by @ematipico
Formatter
Bug fixes
Fix #3924 where GraphQL formatter panics in block comments with empty line. Contributed by @vohoanglong0107
Fix a case where raw values inside
url()
functions weren't properly trimmed..value { - background: url( - whitespace-around-string - ); + background: url(whitespace-around-string); }Contributed by @ematipico
Fixed #4076, where a media query wasn't correctly formatted:
.class { - @media (1024px <= width <=1280px) { + @media (1024px <= width <= 1280px) { color: red; } }Contributed by @blaze-d83
JavaScript API
Bug fixes
- Fix #3881, by updating the APIs to use the latest WASM changes. Contributed by @ematipico
Linter
New features
Add noDescendingSpecificity. Contributed by @tunamaguro
Add noNestedTernary. Contributed by @kaykdm
Add noTemplateCurlyInString. Contributed by @fireairforce
Add noOctalEscape. Contributed by @fireairforce
Enhancements
Add an option
reportUnnecessaryDependencies
to useExhaustiveDependencies.Defaults to true. When set to false, errors will be suppressed for React hooks that declare dependencies but do not use them.
Contributed by @simon-paris
Add an option
reportMissingDependenciesArray
to useExhaustiveDependencies. Contributed by @simon-parisBug fixes
noControlCharactersInRegex no longer panics on regexes with incomplete escape sequences. Contributed by @Conaclos
noMisleadingCharacterClass no longer reports issues outside of character classes.
The following code is no longer reported:
/[a-z]👍/;Contributed by @Conaclos
noUndeclaredDependencies no longer reports Node.js builtin modules as undeclared dependencies.
The rule no longer reports the following code:
import * as fs from "fs";Contributed by @Conaclos
noUnusedVariables no longer panics when suggesting the renaming of a variable at the start of a file (#4114). Contributed by @Conaclos
noUselessEscapeInRegex no longer panics on regexes that start with an empty character class. Contributed by @Conaclos
noUselessStringConcat no longer panics when it encounters malformed code. Contributed by @Conaclos
noUnusedFunctionParameters no longer reports unused parameters inside an object pattern with a rest parameter.
In the following code, the rule no longer reports
a
as unused.function f({ a, ...rest }) { return rest; }This matches the behavior of noUnusedVariables.
Contributed by @Conaclos
useButtonType no longer reports dynamically created button with a valid type (#4072).
The following code is no longer reported:
React.createElement("button", { type: "button" }, "foo")Contributed by @Conaclos
useSemanticElements now ignores elements with the
img
role (#3994).MDN recommends using
role="img"
for grouping images or creating an image from other elements. The following code is no longer reported:<div role="img" aria-label="That cat is so cute"> <p>🐈 😂</p> </div>Contributed by @Conaclos
useSemanticElements now ignores
alert
andalertdialog
roles (#3858). Contributed by @ConaclosnoUselessFragments don't create invaild JSX code when Fragments children contains JSX Expression and in a LogicalExpression. Contributed by @fireairforce
Parser
Bug fixes
- Forbid undefined as type name for typescript parser. Contributed by @fireairforce
Does any of this look wrong? Please let us know.
Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase
.
All Depfu comment commands
Go to the Depfu Dashboard to see the state of your dependencies and to customize how Depfu works.
- @depfu rebase
- Rebases against your default branch and redoes this update
- @depfu recreate
- Recreates this PR, overwriting any edits that you've made to it
- @depfu merge
- Merges this PR once your tests are passing and conflicts are resolved
- @depfu cancel merge
- Cancels automatic merging of this PR
- @depfu close
- Closes this PR and deletes the branch
- @depfu reopen
- Restores the branch and reopens this PR (if it's closed)
- @depfu pause
- Ignores all future updates for this dependency and closes this PR
- @depfu pause [minor|major]
- Ignores all future minor/major updates for this dependency and closes this PR
- @depfu resume
- Future versions of this dependency will create PRs again (leaves this PR as is)