Журнал изменений
Version 2.3.11 Latest
Patch Changes
-
#8583
83be210Thanks @dyc3! - Added the new nursery ruleuseVueValidTemplateRoot.This rule validates only root-level
<template>elements in Vue single-file components. If the<template>has asrcattribute, it must be empty. Otherwise, it must contain content.Invalid examples:
<template src="./foo.html">content</template><template></template>Valid examples:
<template>content</template><template src="./foo.html"></template> -
#8586
df8fe06Thanks @dyc3! - Added a new nursery ruleuseVueConsistentVBindStyle. Enforces consistentv-bindstyle (:propshorthand vsv-bind:proplonghand). Default prefers shorthand; configurable via rule options. -
#8587
9a8c98dThanks @dyc3! - Added the ruleuseVueVForKey, which enforces that any element usingv-foralso specifies akey.Invalid
<li v-for="item in items">{{ item }}</li>Valid
<li v-for="item in items" :key="item.id">{{ item }}</li> -
#8586
df8fe06Thanks @dyc3! - Added a new nursery ruleuseVueConsistentVOnStyle. Enforces consistentv-onstyle (@eventshorthand vsv-on:eventlonghand). Default prefers shorthand; configurable via rule options. -
#8583
83be210Thanks @dyc3! - Added the new nursery ruleuseVueValidVOnce. Enforces that usages of thev-oncedirective in Vue.js SFC are valid.<!-- Valid --><div v-once /><!-- Invalid --><div v-once:aaa /><div v-once.bbb /><div v-once="ccc" /> -
#8498
d80fa41Thanks @tt-a1i! - Fixed #8494. ExtendednoUndeclaredEnvVarsto support bracket notation (process.env["VAR"],import.meta.env["VAR"]), Bun runtime (Bun.env.VAR,Bun.env["VAR"]), and Deno runtime (Deno.env.get("VAR")). -
#8509
574a909Thanks @ematipico! - Added support for parsing and formatting the Svelte{#await}syntax, whenhtml.experimentalFullSupportEnabledis set totrue.{#await promise then name }{#await promise then name}{:catch name}{:catch name}{/await} -
#8316
d64e92dThanks @washbin! - Added the new nursery rulenoMultiAssign. This rule helps to prevent multiple chained assignments.For example, the following code triggers because there are two assignment expressions in the same statement.
const a = (b = 0); -
#8592
a5f59cdThanks @Netail! - Added the nursery ruleuseUniqueInputFieldNames. Require fields within an input object to be unique.Invalid:
query A($x: Int, $x: Int) {field} -
#8524
17a6156Thanks @JacquesLeupin! - Fixed #8488: Relative plugin paths are now resolved from the configuration file directory, including when configurations are merged (e.g.extends: "//"). -
#8655
3260ec9Thanks @JacquesLeupin! - Fixed #8636: Biome’s CSS formatter now breaks comma-separated declaration values at top-level commas when wrapping. -
#8537
cc3e851Thanks @dibashthapa! - Fixed #8491: Resolved false positive errors for safe boolean expressions. There are still pending fixes. Head to #8491 (comment) for more detailsThis new change will check for safe boolean expressions in variable declarations.
For example,
Valid:
let isOne = 1;let isPositiveNumber = number > 0;return (<div>{" "}{isOne && "One"} {isPositiveNumber && "Is positive"}</div>);Invalid:
let emptyStr = "";let isZero = 0;return (<div>{emptyStr && "Empty String"} {isZero && "Number is zero"}{" "}</div>); -
#8511
16a9036Thanks @ematipico! - Improved the diagnostics of the rulesuseSortedClassesandnoUnnecessaryConditions. The diagnostics now state that these rules are a work in progress and link to the relevant GitHub issue. -
#8521
a704be9Thanks @ToBinio! - Added the nursery ruleuseVueConsistentDefinePropsDeclaration, which enforces consistentdefinePropsdeclaration style.Invalid
<script setup lang="ts">const props = defineProps({kind: { type: String },});</script>Valid
<script setup lang="ts">const props = defineProps<{kind: string;}>();</script> -
#8595
7c85bf0Thanks @dyc3! - Fixed #8584: The HTML formatter will preserve whitespace after some elements and embedded expressions, which more closely aligns with Prettier’s behavior.<h1>Hello, {framework}and Svelte!</h1><h1>Hello, {framework} and Svelte!</h1> -
#8598
5e85d43Thanks @Netail! - Added the nursery ruleuseUniqueFieldDefinitionNames. Require all fields of a type to be unique.Invalid:
type SomeObject {foo: Stringfoo: String} -
#8495
b573d14Thanks @taga3s! - Fixed #8405:noMisusedPromisesnow emits warnings/errors when a function returns union types such asT | Promise<T>which is used in conditionals.const a = (): boolean | Promise<boolean> => Promise.resolve(true);if (a()) {} // Now correctly flagged -
#8632
0be7d12Thanks @Bertie690! - The documentation & rule sources forlint/complexity/noBannedTypeshave been updated to fix a few oversights.In addition to some general typo fixes:
-
The rule now recommends
Record<keyof any, never>instead ofRecord<string, never>(the latter of which incorrectly allows symbol-keyed properties). -
The rule mentions an alternate method to enforce object emptiness involving
unique symbol-based guards used bytype-festand many other packages:declare const mySym: unique symbol;// Since this type's only property is an unexported `unique symbol`, nothing that imports it can specify any properties directly// (as far as excess property checks go)export type EmptyObject = { [mySym]?: never };export type IsEmptyObject<T> = T extends EmptyObject ? true : false;
The rule’s listed sources have been updated as well to reflect the original source rule (
ban-types) having been split into 3 separate rules circa April 2024. -
-
#8580
a3a1ad2Thanks @taga3s! - Added the nursery rulenoBeforeInteractiveScriptOutsideDocumentto the Next.js domain. This rule prevents usage ofnext/script’sbeforeInteractivestrategy outside ofpages/_document.js. -
#8493
5fc24f4Thanks @ematipico! - Added support for parsing and formatting the Svelte{#each}syntax, whenhtml.experimentalFullSupportEnabledis set totrue.{#each items as item }{#each items as item}{/each} -
#8546
0196c0eThanks @Zaczero! - Hardened union static-member type flattening in edge cases (e.g. unions containingunknownor inferred expression types). This keeps inference conservative and avoids unstable type growth innode = node.parent-style loops. -
#8569
1022c76Thanks @ematipico! - Fixed an issue where the Biome HTML parser would emit a parse error when certain keywords are inside the text of HTML tags. -
#8606
f50723bThanks @dyc3! - Fixed #8563: fixed a bounds check on bogus regex literals that caused panics when doing type inference -
#7410
ab9af9aThanks @sgarcialaguna! - Added the new nursery rulenoJsxPropsBind. This rule disallows .bind(), arrow functions, or function expressions in JSX props.Invalid:
<Foo onClick={() => console.log("Hello!")}></Foo> -
#8523
5f22f1cThanks @ematipico! - Improved the diagnostics of nursery rules. Added a message to diagnostics emitted by nursery rules, so that users are aware of nature of nursery rules. -
#8571
03666fdThanks @dyc3! - Improved the performance ofnoRedeclareby eliminating string allocations -
#8591
9dd9ca7Thanks @Netail! - Added the nursery ruleuseUniqueArgumentNames. Enforce unique arguments for GraphQL fields & directives.Invalid:
query {field(arg1: "value", arg1: "value")} -
#8521
a704be9Thanks @ToBinio! - Update useVueDefineMacrosOrder to only run on -
#8344
7b982baThanks @ematipico! - Reduced the system calls when running the CLI. The performances might be noticeable in big projects that have multiple libraries and enable project rules. -
#8588
958e24bThanks @Netail! - Added the nursery ruleuseUniqueVariableNames. Enforce unique variable names for GraphQL operations.Invalid:
query ($x: Int, $x: Int) {field} -
#8529
8794883Thanks @mdevils! - Fixed #8499:useExhaustiveDependenciesproperly handles aliased destructured object keys when usingstableResultconfiguration. -
#8557
4df2f4dThanks @dyc3! - Fixed an issue with the HTML formatter where it wouldn’t add a space before the/>in self closing elements. This brings the HTML formatter more in line with Prettier.<Component/><Component /> -
#8509
574a909Thanks @ematipico! - Added support for parsing and formatting the Svelte{#snippet}syntax, whenhtml.experimentalFullSupportEnabledis set totrue.{#snippet foo() }{#snippet foo()}{/snippe} -
#8248
1231a5cThanks @emilyinure! - Added new nursery rulenoReturnAssign, which disallows assignments inside return statements.Invalid:
function f(a) {return (a = 1);} -
#8531
6b09620Thanks @taga3s! - Fixed #8472: The CSS parser can now accept multiple comma separated parameters in:active-view-transition-type. -
#8615
b9da66dThanks @taga3s! - Removenext/scriptcomponent name check fromnoBeforeInteractiveScriptOutsideDocumentsince it is a default export. -
#8536
efbfbe2Thanks @dyc3! - Fixed #8527: Improved type inference where analyzing code with repeated object property access and assignments (e.g.node = node.parent, a pattern common when traversing trees in a while loop) could hit an internal type limit. Biome now handles these cases without exceeding the type limit. -
#8583
83be210Thanks @dyc3! - Added the new nursery ruleuseVueValidVCloak. Enforces that usages of thev-cloakdirective in Vue.js SFC are valid.<!-- Valid --><div v-cloak /><!-- Invalid --><div v-cloak:aaa /><div v-cloak.bbb /><div v-cloak="ccc" /> -
#8583
83be210Thanks @dyc3! - Added the new nursery ruleuseVueValidVPre. Enforces that usages of thev-predirective in Vue.js SFC are valid.<!-- Valid --><div v-pre /><!-- Invalid --><div v-pre:aaa /><div v-pre.bbb /><div v-pre="ccc" /> -
#8644
a3a27a7Thanks @JacquesLeupin! - Added the nursery ruleuseVueVaporto enforce<script setup vapor>in Vue SFCs. For example<script setup>is invalid. -
#8508
b86842cThanks @tt-a1i! - Fixed #6783: now, when a path is provided via--stdin-file-path, Biome checks whether the file exists on disk. If the path doesn’t exist (virtual path), ignore checks (files.includesand VCS ignore rules) are skipped.
Copyright (c) 2023-present Biome Developers and Contributors.