github biomejs/biome cli/v1.9.3-nightly.75b4387
CLI v1.9.3-nightly.75b4387

Analyzer

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

Configuration

Editors

Formatter

Bug fixes

  • Fix #3924 where GraphQL formatter panics in block comments with empty line. Contributed by @vohoanglong0107

JavaScript API

Linter

New features

Bug fixes

  • 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

  • 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>&#x1F408; &#x1F602;</p>
    </div>

    Contributed by @Conaclos

  • useSemanticElements now ignores alert and alertdialog roles (#3858). Contributed by @Conaclos

  • noUselessFragments 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

What's Changed

Other changes

  • test(format/html): reenable snapshot tests by @dyc3 in #3979
  • refactor(lint): set version field for new rules by @Conaclos in #3995
  • docs: improve documentation of rule by @ematipico in #3999
  • feat(linter): implement noOctalEscape by @fireairforce in #3986
  • feat(grit): implement GritQL log() function by @arendjr in #4003
  • fix(html/parser): support root element list by @suxin2017 in #3985
  • feat(html/formatter): self close tag add slash char by @suxin2017 in #3984
  • chore(readme): use polar shield by @ematipico in #4000
  • feat: add additional FeatureKind entries for debug features by @dyc3 in #3892
  • feat(formatter/html): add line break at the end of files by @dyc3 in #4010
  • fix(parser/html): fix incorrect parsing when text starts with a quote by @dyc3 in #4011
  • chore(cli): replace PanicInfo -> PanicHookInfo by @minht11 in #4015
  • chore: enforce usage of to_ascii_lowercase_cow by @minht11 in #4014
  • chore: fix udeps failure by @dyc3 in #4016
  • feat(linter): implement useExplicitFunctionReturnType by @kaykdm in #3990
  • fix(parser/html): allow multi line attribute values by @dyc3 in #4018
  • feat(lsp): noExcessiveCognitiveComplexity diagnostic shows levels by @chrisgrieser in #4028
  • feat(html): implement debug features for html by @dyc3 in #4019
  • fix(parser/html): add param to void elements list by @dyc3 in #4020
  • feat(html): resolve format options by @dyc3 in #4017
  • test(format/grit): add tests for grit formatter by @branberry in #3937
  • perf(grit): use to_ascii_lowercase_cow by @dyc3 in #4053
  • perf(linter): performance improvement for css semantic model by @togami2864 in #4044
  • refactor(aria_metadata): generate ARIA metadata from specification by @Conaclos in #4055
  • refactor(parser/html): refactor comments to be nodes in the tree by @dyc3 in #4056
  • feat(markdown/parser): support thematic break block parser by @suxin2017 in #3982
  • feat(linter): implement no-nested-ternary by @kaykdm in #4067
  • fix(format/html): keep at most 1 empty line between elements by @dyc3 in #4057
  • fix(schema): make optional the options JSON schema field by @Conaclos in #4080
  • feat(grit): implement disregarded snippet nodes by @arendjr in #4084
  • chore: to_lowercase -> to_lowercase_cow by @minht11 in #4030
  • docs: fix isNan to isNaN by @Omochice in #4106

New Contributors

Full Changelog: cli/v1.9.2...cli/v1.9.3-nightly.75b4387

Don't miss a new biome release

NewReleases is sending notifications on new releases.