chore(deps): update dependency @biomejs/biome to v2.2.5 - autoclosed #29

Closed
Renovate wants to merge 1 commit from renovate/biomejs-biome-2.x into main
Collaborator

This PR contains the following updates:

Package Change Age Confidence
@biomejs/biome (source) 2.2.2 -> 2.2.5 age confidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.2.5

Compare Source

Patch Changes
  • #​7597 5c3d542 Thanks @​arendjr! - Fixed #​6432: useImportExtensions now works correctly with aliased paths.

  • #​7269 f18dac1 Thanks @​CDGardner! - Fixed #​6648, where Biome's noUselessFragments contained inconsistencies with ESLint for fragments only containing text.

    Previously, Biome would report that fragments with only text were unnecessary under the noUselessFragments rule. Further analysis of ESLint's behavior towards these cases revealed that text-only fragments (<>A</a>, <React.Fragment>B</React.Fragment>, <RenamedFragment>B</RenamedFragment>) would not have noUselessFragments emitted for them.

    On the Biome side, instances such as these would emit noUselessFragments, and applying the suggested fix would turn the text content into a proper JS string.

    // Ended up as: - const t = "Text"
    const t = <>Text</>
    
    // Ended up as: - const e = t ? "Option A" : "Option B"
    const e = t ? <>Option A</> : <>Option B</>
    
    /* Ended up as:
      function someFunc() {
        return "Content desired to be a multi-line block of text."
      }
    */
    function someFunc() {
      return <>
        Content desired to be a multi-line
        block of text.
      <>
    }
    

    The proposed update was to align Biome's reaction to this rule with ESLint's; the aforementioned examples will now be supported from Biome's perspective, thus valid use of fragments.

    // These instances are now valid and won't be called out by noUselessFragments.
    
    const t = <>Text</>
    const e = t ? <>Option A</> : <>Option B</>
    
    function someFunc() {
      return <>
        Content desired to be a multi-line
        block of text.
      <>
    }
    
  • #​7498 002cded Thanks @​siketyan! - Fixed #​6893: The useExhaustiveDependencies rule now correctly adds a dependency that is captured in a shorthand object member. For example:

    useEffect(() => {
      console.log({ firstId, secondId });
    }, []);
    

    is now correctly fixed to:

    useEffect(() => {
      console.log({ firstId, secondId });
    }, [firstId, secondId]);
    
  • #​7509 1b61631 Thanks @​siketyan! - Added a new lint rule noReactForwardRef, which detects usages of forwardRef that is no longer needed and deprecated in React 19.

    For example:

    export const Component = forwardRef(function Component(props, ref) {
      return <div ref={ref} />;
    });
    

    will be fixed to:

    export const Component = function Component({ ref, ...props }) {
      return <div ref={ref} />;
    };
    

    Note that the rule provides an unsafe fix, which may break the code. Don't forget to review the code after applying the fix.

  • #​7520 3f06e19 Thanks @​arendjr! - Added new nursery rule noDeprecatedImports to flag imports of deprecated symbols.

Invalid example
// foo.js
import { oldUtility } from "./utils.js";
// utils.js
/**
 * @&#8203;deprecated
 */
export function oldUtility() {}
Valid examples
// foo.js
import { newUtility, oldUtility } from "./utils.js";
// utils.js
export function newUtility() {}

// @&#8203;deprecated (this is not a JSDoc comment)
export function oldUtility() {}
  • #​7457 9637f93 Thanks @​kedevked! - Added style and requireForObjectLiteral options to the lint rule useConsistentArrowReturn.

    This rule enforces a consistent return style for arrow functions. It can be configured with the following options:

    • style: (default: asNeeded)
      • always: enforces that arrow functions always have a block body.
      • never: enforces that arrow functions never have a block body, when possible.
      • asNeeded: enforces that arrow functions have a block body only when necessary (e.g. for object literals).
style: "always"

Invalid:

const f = () => 1;

Valid:

const f = () => {
  return 1;
};
style: "never"

Invalid:

const f = () => {
  return 1;
};

Valid:

const f = () => 1;
style: "asNeeded"

Invalid:

const f = () => {
  return 1;
};

Valid:

const f = () => 1;
style: "asNeeded" and requireForObjectLiteral: true

Valid:

const f = () => {
  return { a: 1 };
};
  • #​7510 527cec2 Thanks @​rriski! - Implements #​7339. GritQL patterns can now use native Biome AST nodes using their PascalCase names, in addition to the existing TreeSitter-compatible snake_case names.

    engine biome(1.0)
    language js(typescript,jsx)
    
    or {
      // TreeSitter-compatible pattern
      if_statement(),
    
      // Native Biome AST node pattern
      JsIfStatement()
    } as $stmt where {
      register_diagnostic(
        span=$stmt,
        message="Found an if statement"
      )
    }
    
  • #​7574 47907e7 Thanks @​kedevked! - Fixed 7574. The diagnostic message for the rule useSolidForComponent now correctly emphasizes <For /> and provides a working hyperlink to the Solid documentation.

  • #​7497 bd70f40 Thanks @​siketyan! - Fixed #​7320: The useConsistentCurlyBraces rule now correctly detects a string literal including " inside a JSX attribute value.

  • #​7522 1af9931 Thanks @​Netail! - Added extra references to external rules to improve migration for the following rules: noUselessFragments & noNestedComponentDefinitions

  • #​7597 5c3d542 Thanks @​arendjr! - Fixed an issue where package.json manifests would not be correctly discovered
    when evaluating files in the same directory.

  • #​7565 38d2098 Thanks @​siketyan! - The resolver can now correctly resolve .ts, .tsx, .d.ts, .js files by .js extension if exists, based on the file extension substitution in TypeScript.

    For example, the linter can now detect the floating promise in the following situation, if you have enabled the noFloatingPromises rule.

    foo.ts

    export async function doSomething(): Promise<void> {}
    

    bar.ts

    import { doSomething } from "./foo.js"; // doesn't exist actually, but it is resolved to `foo.ts`
    
    doSomething(); // floating promise!
    
  • #​7542 cadad2c Thanks @​mdevils! - Added the rule noVueDuplicateKeys, which prevents duplicate keys in Vue component definitions.

    This rule prevents the use of duplicate keys across different Vue component options such as props, data, computed, methods, and setup. Even if keys don't conflict in the script tag, they may cause issues in the template since Vue allows direct access to these keys.

    Invalid examples
    <script>
    export default {
      props: ["foo"],
      data() {
        return {
          foo: "bar",
        };
      },
    };
    </script>
    
    <script>
    export default {
      data() {
        return {
          message: "hello",
        };
      },
      methods: {
        message() {
          console.log("duplicate key");
        },
      },
    };
    </script>
    
    <script>
    export default {
      computed: {
        count() {
          return this.value * 2;
        },
      },
      methods: {
        count() {
          this.value++;
        },
      },
    };
    </script>
    
    Valid examples
    <script>
    export default {
      props: ["foo"],
      data() {
        return {
          bar: "baz",
        };
      },
      methods: {
        handleClick() {
          console.log("unique key");
        },
      },
    };
    </script>
    
    <script>
    export default {
      computed: {
        displayMessage() {
          return this.message.toUpperCase();
        },
      },
      methods: {
        clearMessage() {
          this.message = "";
        },
      },
    };
    </script>
    
  • #​7546 a683acc Thanks @​siketyan! - Internal data for Unicode strings have been updated to Unicode 17.0.

  • #​7497 bd70f40 Thanks @​siketyan! - Fixed #​7256: The useConsistentCurlyBraces rule now correctly ignores a string literal with braces that contains only whitespaces. Previously, literals that contains single whitespace were only allowed.

  • #​7565 38d2098 Thanks @​siketyan! - The useImportExtensions rule now correctly detects imports with an invalid extension. For example, importing .ts file with .js extension is flagged by default. If you are using TypeScript with neither the allowImportingTsExtensions option nor the rewriteRelativeImportExtensions option, it's recommended to turn on the forceJsExtensions option of the rule.

  • #​7581 8653921 Thanks @​lucasweng! - Fixed #​7470: solved a false positive for noDuplicateProperties. Previously, declarations in @container and @starting-style at-rules were incorrectly flagged as duplicates of identical declarations at the root selector.

    For example, the linter no longer flags the display declaration in @container or the opacity declaration in @starting-style.

    a {
      display: block;
      @&#8203;container (min-width: 600px) {
        display: none;
      }
    }
    
    [popover]:popover-open {
      opacity: 1;
      @&#8203;starting-style {
        opacity: 0;
      }
    }
    
  • #​7529 fea905f Thanks @​qraqras! - Fixed #​7517: the useOptionalChain rule no longer suggests changes for typeof checks on global objects.

    // ok
    typeof window !== "undefined" && window.location;
    
  • #​7476 c015765 Thanks @​ematipico! - Fixed a bug where the suppression action for noPositiveTabindex didn't place the suppression comment in the correct position.

  • #​7511 a0039fd Thanks @​arendjr! - Added nursery rule noUnusedExpressions to flag expressions used as a statement that is neither an assignment nor a function call.

Invalid examples
f; // intended to call `f()` instead
function foo() {
  0; // intended to `return 0` instead
}
Valid examples
f();
function foo() {
  return 0;
}

v2.2.4

Compare Source

Patch Changes
  • #​7453 aa8cea3 Thanks @​arendjr! - Fixed #​7242: Aliases specified in
    package.json's imports section now support having multiple targets as part of an array.

  • #​7454 ac17183 Thanks @​arendjr! - Greatly improved performance of
    noImportCycles by eliminating allocations.

    In one repository, the total runtime of Biome with only noImportCycles enabled went from ~23s down to ~4s.

  • #​7447 7139aad Thanks @​rriski! - Fixes #​7446. The GritQL
    $... spread metavariable now correctly matches members in object literals, aligning its behavior with arrays and function calls.

  • #​6710 98cf9af Thanks @​arendjr! - Fixed #​4723: Type inference now recognises
    index signatures and their accesses when they are being indexed as a string.

Example
type BagOfPromises = {
  // This is an index signature definition. It declares that instances of type
  // `BagOfPromises` can be indexed using arbitrary strings.
  [property: string]: Promise<void>;
};

let bag: BagOfPromises = {};
// Because `bag.iAmAPromise` is equivalent to `bag["iAmAPromise"]`, this is
// considered an access to the string index, and a Promise is expected.
bag.iAmAPromise;
  • #​7415 d042f18 Thanks @​qraqras! - Fixed #​7212, now the useOptionalChain rule recognizes optional chaining using
    typeof (e.g., typeof foo !== 'undefined' && foo.bar).

  • #​7419 576baf4 Thanks @​Conaclos! - Fixed #​7323. noUnusedPrivateClassMembers no longer reports as unused TypeScript
    private members if the rule encounters a computed access on this.

    In the following example, member as previously reported as unused. It is no longer reported.

    class TsBioo {
      private member: number;
    
      set_with_name(name: string, value: number) {
        this[name] = value;
      }
    }
    
  • 351bccd Thanks @​ematipico! - Added the new nursery lint rule
    noJsxLiterals, which disallows the use of string literals inside JSX.

    The rule catches these cases:

    <>
      <div>test</div> {/* test is invalid */}
      <>test</>
      <div>
        {/* this string is invalid */}
        asdjfl test foo
      </div>
    </>
    
  • #​7406 b906112 Thanks @​mdevils! - Fixed an issue (#​6393) where the useHookAtTopLevel rule reported excessive diagnostics for nested hook calls.

    The rule now reports only the offending top-level call site, not sub-hooks of composite hooks.

    // Before: reported twice (useFoo and useBar).
    function useFoo() {
      return useBar();
    }
    function Component() {
      if (cond) useFoo();
    }
    // After: reported once at the call to useFoo().
    
  • #​7461 ea585a9 Thanks @​arendjr! - Improved performance of
    noPrivateImports by eliminating allocations.

    In one repository, the total runtime of Biome with only noPrivateImports enabled went from ~3.2s down to ~1.4s.

  • 351bccd Thanks @​ematipico! - Fixed #​7411. The Biome Language Server had a regression where opening an editor with a file already open wouldn't load the project settings correctly.

  • #​7142 53ff5ae Thanks @​Netail! - Added the new nursery rule noDuplicateDependencies, which verifies that no dependencies are duplicated between the
    bundledDependencies, bundleDependencies, dependencies, devDependencies, overrides,
    optionalDependencies, and peerDependencies sections.

    For example, the following snippets will trigger the rule:

    {
      "dependencies": {
        "foo": ""
      },
      "devDependencies": {
        "foo": ""
      }
    }
    
    {
      "dependencies": {
        "foo": ""
      },
      "optionalDependencies": {
        "foo": ""
      }
    }
    
    {
      "dependencies": {
        "foo": ""
      },
      "peerDependencies": {
        "foo": ""
      }
    }
    
  • 351bccd Thanks @​ematipico! - Fixed #​3824. Now the option CLI
    --color is correctly applied to logging too.

v2.2.3

Compare Source

Patch Changes
  • #​7353 4d2b719 Thanks @​JeetuSuthar! - Fixed #​7340: The linter now allows the
    navigation property for view-transition in CSS.

    Previously, the linter incorrectly flagged navigation: auto as an unknown property. This fix adds
    navigation to the list of known CSS properties, following the CSS View Transitions spec.

  • #​7275 560de1b Thanks @​arendjr! - Fixed #​7268: Files that are explicitly passed as CLI arguments are now correctly ignored if they reside in an ignored folder.

  • #​7358 963a246 Thanks @​ematipico! - Fixed #​7085, now the rule
    noDescendingSpecificity correctly calculates the specificity of selectors when they are included inside a media query.

  • #​7387 923674d Thanks @​qraqras! - Fixed #​7381, now the useOptionalChain rule recognizes optional chaining using Yoda expressions (e.g.,
    undefined !== foo && foo.bar).

  • #​7316 f9636d5 Thanks @​Conaclos! - Fixed #​7289. The rule useImportType now inlines import type into
    import { type } when the style option is set to inlineType.

    Example:

    import type { T } from "mod";
    // becomes
    import { type T } from "mod";
    
  • #​7350 bb4d407 Thanks @​siketyan! - Fixed #​7261: two characters
    (KATAKANA MIDDLE DOT, U+30FB) and
    (HALFWIDTH KATAKANA MIDDLE DOT, U+FF65) are no longer considered as valid characters in identifiers. Property keys containing these character(s) are now preserved as string literals.

  • #​7377 811f47b Thanks @​ematipico! - Fixed a bug where the Biome Language Server didn't correctly compute the diagnostics of a monorepo setting, caused by an incorrect handling of the project status.

  • #​7245 fad34b9 Thanks @​kedevked! - Added the new lint rule
    useConsistentArrowReturn.

    This rule enforces a consistent return style for arrow functions.

Invalid
const f = () => {
  return 1;
};

This rule is a port of ESLint's arrow-body-style rule.

  • #​7370 e8032dd Thanks @​fireairforce! - Support dynamic
    import defer and import source. The syntax looks like:

    import.source("foo");
    import.source("x", { with: { attr: "val" } });
    import.defer("foo");
    import.defer("x", { with: { attr: "val" } });
    
  • #​7369 b1f8cbd Thanks @​siketyan! - Range suppressions are now supported for Grit plugins.

    For JavaScript, you can suppress a plugin as follows:

    // biome-ignore-start lint/plugin/preferObjectSpread: reason
    Object.assign({ foo: "bar" }, baz);
    // biome-ignore-end lint/plugin/preferObjectSpread: reason
    

    For CSS, you can suppress a plugin as follows:

    body {
      /* biome-ignore-start lint/plugin/useLowercaseColors: reason */
      color: #fff;
      /* biome-ignore-end lint/plugin/useLowercaseColors: reason */
    }
    
  • #​7384 099507e Thanks @​ematipico! - Reduced the severity of certain diagnostics emitted when Biome deserializes the configuration files. Now these diagnostics are emitted as
    Information severity, which means that they won't interfere when running commands with --error-on-warnings

  • #​7302 2af2380 Thanks @​unvalley! - Fixed #​7301: useReadonlyClassProperties now correctly skips JavaScript files.

  • #​7288 94d85f8 Thanks @​ThiefMaster! - Fixed #​7286. Files are now formatted with JSX behavior when
    javascript.parser.jsxEverywhere is explicitly set.

    Previously, this flag was only used for parsing, but not for formatting, which resulted in incorrect formatting of conditional expressions when JSX syntax is used in
    .js files.

  • #​7311 62154b9 Thanks @​qraqras! - Added the new nursery rule
    noUselessCatchBinding. This rule disallows unnecessary catch bindings.

    try {
        // Do something
    - } catch (unused) {}
    + } catch {}
    
  • #​7349 45c1dfe Thanks @​ematipico! - Fixed #​4298. Biome now correctly formats CSS declarations when it contains one single value:

    .bar {
    -  --123456789012345678901234567890: var(--1234567890123456789012345678901234567);
    +  --123456789012345678901234567890: var(
    +    --1234567890123456789012345678901234567
    +  );
    }
    
  • #​7295 7638e84 Thanks @​ematipico! - Fixed #​7130. Removed the emission of a false-positive diagnostic. Biome no longer emits the following diagnostic:

    lib/main.ts:1:5 suppressions/unused ━━━━━━━━━━━━━━━━━━━━━━━━━
    
      ⚠ Suppression comment has no effect because the tool is not enabled.
    
      > 1 │ /** biome-ignore-all assist/source/organizeImports: For the lib root file, we don't want to organize exports */
          │     ^^^^^^^^^^^^^^^^
    
    
  • #​7377 811f47b Thanks @​ematipico! - Fixed #​7371 where the Biome Language Server didn't correctly recompute the diagnostics when updating a nested configuration file.

  • #​7348 ac27fc5 Thanks @​ematipico! - Fixed #​7079. Now the rule useSemanticElements doesn't trigger components and custom elements.

  • #​7389 ab06a7e Thanks @​Conaclos! - Fixed #​7344. useNamingConvention no longer reports interfaces defined in global declarations.

    Interfaces declared in global declarations augment existing interfaces. Thus, they must be ignored.

    In the following example, useNamingConvention reported HTMLElement. It is now ignored.

    export {};
    declare global {
      interface HTMLElement {
        foo(): void;
      }
    }
    
  • #​7315 4a2bd2f Thanks @​vladimir-ivanov! - Fixed #​7310: useReadonlyClassProperties correctly handles nested assignments, avoiding false positives when a class property is assigned within another assignment expression.

    Example of code that previously triggered a false positive but is now correctly ignored:

    class test {
      private thing: number = 0; // incorrectly flagged
    
      public incrementThing(): void {
        const temp = { x: 0 };
        temp.x = this.thing++;
      }
    }
    

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), 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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | [`2.2.2` -> `2.2.5`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.2.2/2.2.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@biomejs%2fbiome/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@biomejs%2fbiome/2.2.2/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>biomejs/biome (@&#8203;biomejs/biome)</summary> ### [`v2.2.5`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#225) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.2.4...@biomejs/biome@2.2.5) ##### Patch Changes - [#&#8203;7597](https://github.com/biomejs/biome/pull/7597) [`5c3d542`](https://github.com/biomejs/biome/commit/5c3d542e65fee652dc4e52f3ec2de0441c3f3aec) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Fixed [#&#8203;6432](https://github.com/biomejs/biome/issues/6432): [`useImportExtensions`](https://biomejs.dev/linter/rules/use-import-extensions/) now works correctly with aliased paths. - [#&#8203;7269](https://github.com/biomejs/biome/pull/7269) [`f18dac1`](https://github.com/biomejs/biome/commit/f18dac1d662c426d036894a59755eb26f5668aaf) Thanks [@&#8203;CDGardner](https://github.com/CDGardner)! - Fixed [#&#8203;6648](https://github.com/biomejs/biome/issues/6648), where Biome's `noUselessFragments` contained inconsistencies with ESLint for fragments only containing text. Previously, Biome would report that fragments with only text were unnecessary under the `noUselessFragments` rule. Further analysis of ESLint's behavior towards these cases revealed that text-only fragments (`<>A</a>`, `<React.Fragment>B</React.Fragment>`, `<RenamedFragment>B</RenamedFragment>`) would not have `noUselessFragments` emitted for them. On the Biome side, instances such as these would emit `noUselessFragments`, and applying the suggested fix would turn the text content into a proper JS string. ```js // Ended up as: - const t = "Text" const t = <>Text</> // Ended up as: - const e = t ? "Option A" : "Option B" const e = t ? <>Option A</> : <>Option B</> /* Ended up as: function someFunc() { return "Content desired to be a multi-line block of text." } */ function someFunc() { return <> Content desired to be a multi-line block of text. <> } ``` The proposed update was to align Biome's reaction to this rule with ESLint's; the aforementioned examples will now be supported from Biome's perspective, thus valid use of fragments. ```js // These instances are now valid and won't be called out by noUselessFragments. const t = <>Text</> const e = t ? <>Option A</> : <>Option B</> function someFunc() { return <> Content desired to be a multi-line block of text. <> } ``` - [#&#8203;7498](https://github.com/biomejs/biome/pull/7498) [`002cded`](https://github.com/biomejs/biome/commit/002cded543e6aa5f5cf55f48312f40c83975a22f) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Fixed [#&#8203;6893](https://github.com/biomejs/biome/issues/6893): The [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) rule now correctly adds a dependency that is captured in a shorthand object member. For example: ```jsx useEffect(() => { console.log({ firstId, secondId }); }, []); ``` is now correctly fixed to: ```jsx useEffect(() => { console.log({ firstId, secondId }); }, [firstId, secondId]); ``` - [#&#8203;7509](https://github.com/biomejs/biome/pull/7509) [`1b61631`](https://github.com/biomejs/biome/commit/1b61631c63f161fa8163365571825c99aed3eaae) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Added a new lint rule [`noReactForwardRef`](https://biomejs.dev/linter/rules/no-react-forward-ref/), which detects usages of `forwardRef` that is no longer needed and deprecated in React 19. For example: ```jsx export const Component = forwardRef(function Component(props, ref) { return <div ref={ref} />; }); ``` will be fixed to: ```jsx export const Component = function Component({ ref, ...props }) { return <div ref={ref} />; }; ``` Note that the rule provides an unsafe fix, which may break the code. Don't forget to review the code after applying the fix. - [#&#8203;7520](https://github.com/biomejs/biome/pull/7520) [`3f06e19`](https://github.com/biomejs/biome/commit/3f06e19c6eb8476ad9de4e3dac00c50a2d6f0aed) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Added new nursery rule [`noDeprecatedImports`](https://biomejs.dev/linter/rules/no-deprecated-imports/) to flag imports of deprecated symbols. ##### Invalid example ```js // foo.js import { oldUtility } from "./utils.js"; ``` ```js // utils.js /** * @&#8203;deprecated */ export function oldUtility() {} ``` ##### Valid examples ```js // foo.js import { newUtility, oldUtility } from "./utils.js"; ``` ```js // utils.js export function newUtility() {} // @&#8203;deprecated (this is not a JSDoc comment) export function oldUtility() {} ``` - [#&#8203;7457](https://github.com/biomejs/biome/pull/7457) [`9637f93`](https://github.com/biomejs/biome/commit/9637f9308fe39f7e94d42419cd430cc2a55d5473) Thanks [@&#8203;kedevked](https://github.com/kedevked)! - Added `style` and `requireForObjectLiteral` options to the lint rule [`useConsistentArrowReturn`](https://biomejs.dev/linter/rules/use-consistent-arrow-return/). This rule enforces a consistent return style for arrow functions. It can be configured with the following options: - `style`: (default: `asNeeded`) - `always`: enforces that arrow functions always have a block body. - `never`: enforces that arrow functions never have a block body, when possible. - `asNeeded`: enforces that arrow functions have a block body only when necessary (e.g. for object literals). ##### `style: "always"` Invalid: ```js const f = () => 1; ``` Valid: ```js const f = () => { return 1; }; ``` ##### `style: "never"` Invalid: ```js const f = () => { return 1; }; ``` Valid: ```js const f = () => 1; ``` ##### `style: "asNeeded"` Invalid: ```js const f = () => { return 1; }; ``` Valid: ```js const f = () => 1; ``` ##### `style: "asNeeded"` and `requireForObjectLiteral: true` Valid: ```js const f = () => { return { a: 1 }; }; ``` - [#&#8203;7510](https://github.com/biomejs/biome/pull/7510) [`527cec2`](https://github.com/biomejs/biome/commit/527cec2ca10df23754e9958d17baefca6a559154) Thanks [@&#8203;rriski](https://github.com/rriski)! - Implements [#&#8203;7339](https://github.com/biomejs/biome/discussions/7339). GritQL patterns can now use native Biome AST nodes using their `PascalCase` names, in addition to the existing TreeSitter-compatible `snake_case` names. ```grit engine biome(1.0) language js(typescript,jsx) or { // TreeSitter-compatible pattern if_statement(), // Native Biome AST node pattern JsIfStatement() } as $stmt where { register_diagnostic( span=$stmt, message="Found an if statement" ) } ``` - [#&#8203;7574](https://github.com/biomejs/biome/pull/7574) [`47907e7`](https://github.com/biomejs/biome/commit/47907e7d9badbe0c41c6a23bdd962676de216db0) Thanks [@&#8203;kedevked](https://github.com/kedevked)! - Fixed [7574](https://github.com/biomejs/biome/pull/7574). The diagnostic message for the rule `useSolidForComponent` now correctly emphasizes `<For />` and provides a working hyperlink to the Solid documentation. - [#&#8203;7497](https://github.com/biomejs/biome/pull/7497) [`bd70f40`](https://github.com/biomejs/biome/commit/bd70f40cb933c1df0c171a9048b62da432093308) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Fixed [#&#8203;7320](https://github.com/biomejs/biome/issues/7320): The [`useConsistentCurlyBraces`](https://biomejs.dev/linter/rules/use-consistent-curly-braces/) rule now correctly detects a string literal including `"` inside a JSX attribute value. - [#&#8203;7522](https://github.com/biomejs/biome/pull/7522) [`1af9931`](https://github.com/biomejs/biome/commit/1af993134ba2d9158f6824c2f002c90133c0e3f4) Thanks [@&#8203;Netail](https://github.com/Netail)! - Added extra references to external rules to improve migration for the following rules: `noUselessFragments` & `noNestedComponentDefinitions` - [#&#8203;7597](https://github.com/biomejs/biome/pull/7597) [`5c3d542`](https://github.com/biomejs/biome/commit/5c3d542e65fee652dc4e52f3ec2de0441c3f3aec) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Fixed an issue where `package.json` manifests would not be correctly discovered when evaluating files in the same directory. - [#&#8203;7565](https://github.com/biomejs/biome/pull/7565) [`38d2098`](https://github.com/biomejs/biome/commit/38d2098bb3a81adaf73a19807c1e62d352405764) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - The resolver can now correctly resolve `.ts`, `.tsx`, `.d.ts`, `.js` files by `.js` extension if exists, based on [the file extension substitution in TypeScript](https://www.typescriptlang.org/docs/handbook/modules/reference.html#file-extension-substitution). For example, the linter can now detect the floating promise in the following situation, if you have enabled the `noFloatingPromises` rule. **`foo.ts`** ```ts export async function doSomething(): Promise<void> {} ``` **`bar.ts`** ```ts import { doSomething } from "./foo.js"; // doesn't exist actually, but it is resolved to `foo.ts` doSomething(); // floating promise! ``` - [#&#8203;7542](https://github.com/biomejs/biome/pull/7542) [`cadad2c`](https://github.com/biomejs/biome/commit/cadad2cadbd3852873cbd3f721c26ae7ceb3f39a) Thanks [@&#8203;mdevils](https://github.com/mdevils)! - Added the rule [`noVueDuplicateKeys`](https://biomejs.dev/linter/rules/no-vue-duplicate-keys/), which prevents duplicate keys in Vue component definitions. This rule prevents the use of duplicate keys across different Vue component options such as `props`, `data`, `computed`, `methods`, and `setup`. Even if keys don't conflict in the script tag, they may cause issues in the template since Vue allows direct access to these keys. ##### Invalid examples ```vue <script> export default { props: ["foo"], data() { return { foo: "bar", }; }, }; </script> ``` ```vue <script> export default { data() { return { message: "hello", }; }, methods: { message() { console.log("duplicate key"); }, }, }; </script> ``` ```vue <script> export default { computed: { count() { return this.value * 2; }, }, methods: { count() { this.value++; }, }, }; </script> ``` ##### Valid examples ```vue <script> export default { props: ["foo"], data() { return { bar: "baz", }; }, methods: { handleClick() { console.log("unique key"); }, }, }; </script> ``` ```vue <script> export default { computed: { displayMessage() { return this.message.toUpperCase(); }, }, methods: { clearMessage() { this.message = ""; }, }, }; </script> ``` - [#&#8203;7546](https://github.com/biomejs/biome/pull/7546) [`a683acc`](https://github.com/biomejs/biome/commit/a683acc30bf85d1337760aa1500eb892ebc8e0ac) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Internal data for Unicode strings have been updated to Unicode 17.0. - [#&#8203;7497](https://github.com/biomejs/biome/pull/7497) [`bd70f40`](https://github.com/biomejs/biome/commit/bd70f40cb933c1df0c171a9048b62da432093308) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Fixed [#&#8203;7256](https://github.com/biomejs/biome/issues/7256): The [`useConsistentCurlyBraces`](https://biomejs.dev/linter/rules/use-consistent-curly-braces/) rule now correctly ignores a string literal with braces that contains only whitespaces. Previously, literals that contains single whitespace were only allowed. - [#&#8203;7565](https://github.com/biomejs/biome/pull/7565) [`38d2098`](https://github.com/biomejs/biome/commit/38d2098bb3a81adaf73a19807c1e62d352405764) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - The [`useImportExtensions`](https://biomejs.dev/linter/rules/use-import-extensions/) rule now correctly detects imports with an invalid extension. For example, importing `.ts` file with `.js` extension is flagged by default. If you are using TypeScript with neither the `allowImportingTsExtensions` option nor the `rewriteRelativeImportExtensions` option, it's recommended to turn on the `forceJsExtensions` option of the rule. - [#&#8203;7581](https://github.com/biomejs/biome/pull/7581) [`8653921`](https://github.com/biomejs/biome/commit/86539215dde0c29eae0a6975b442637048a8673b) Thanks [@&#8203;lucasweng](https://github.com/lucasweng)! - Fixed [#&#8203;7470](https://github.com/biomejs/biome/issues/7470): solved a false positive for [`noDuplicateProperties`](https://biomejs.dev/linter/rules/no-duplicate-properties/). Previously, declarations in `@container` and `@starting-style` at-rules were incorrectly flagged as duplicates of identical declarations at the root selector. For example, the linter no longer flags the `display` declaration in `@container` or the `opacity` declaration in `@starting-style`. ```css a { display: block; @&#8203;container (min-width: 600px) { display: none; } } [popover]:popover-open { opacity: 1; @&#8203;starting-style { opacity: 0; } } ``` - [#&#8203;7529](https://github.com/biomejs/biome/pull/7529) [`fea905f`](https://github.com/biomejs/biome/commit/fea905f0af9fc992a17fe1dcdbc3e0e63fae9d65) Thanks [@&#8203;qraqras](https://github.com/qraqras)! - Fixed [#&#8203;7517](https://github.com/biomejs/biome/issues/7517): the [`useOptionalChain`](https://biomejs.dev/linter/rules/use-optional-chain/) rule no longer suggests changes for typeof checks on global objects. ```ts // ok typeof window !== "undefined" && window.location; ``` - [#&#8203;7476](https://github.com/biomejs/biome/pull/7476) [`c015765`](https://github.com/biomejs/biome/commit/c015765af2defb042285d96588fcb5f531eb8b6f) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where the suppression action for `noPositiveTabindex` didn't place the suppression comment in the correct position. - [#&#8203;7511](https://github.com/biomejs/biome/pull/7511) [`a0039fd`](https://github.com/biomejs/biome/commit/a0039fd5457d0df18242feed5d21ff868ceb0693) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Added nursery rule [`noUnusedExpressions`](https://biomejs.dev/linter/rules/no-unused-expressions/) to flag expressions used as a statement that is neither an assignment nor a function call. ##### Invalid examples ```js f; // intended to call `f()` instead ``` ```js function foo() { 0; // intended to `return 0` instead } ``` ##### Valid examples ```js f(); ``` ```js function foo() { return 0; } ``` - [#&#8203;7564](https://github.com/biomejs/biome/pull/7564) [`40e515f`](https://github.com/biomejs/biome/commit/40e515f73275ad0023ec03e95551a3bbb79b84a1) Thanks [@&#8203;turbocrime](https://github.com/turbocrime)! - Fixed [#&#8203;6617](https://github.com/biomejs/biome/issues/6617): improved [`useIterableCallbackReturn`](https://biomejs.dev/linter/rules/use-iterable-callback-return/) to correctly handle arrow functions with a single-expression `void` body. Now the following code doesn't trigger the rule anymore: ```js [].forEach(() => void null); ``` ### [`v2.2.4`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#224) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.2.3...@biomejs/biome@2.2.4) ##### Patch Changes - [#&#8203;7453](https://github.com/biomejs/biome/pull/7453) [`aa8cea3`](https://github.com/biomejs/biome/commit/aa8cea31af675699e18988fe79242ae5d5215af1) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Fixed [#&#8203;7242](https://github.com/biomejs/biome/issues/7242): Aliases specified in `package.json`'s `imports` section now support having multiple targets as part of an array. - [#&#8203;7454](https://github.com/biomejs/biome/pull/7454) [`ac17183`](https://github.com/biomejs/biome/commit/ac171839a31600225e3b759470eaa026746e9cf4) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Greatly improved performance of `noImportCycles` by eliminating allocations. In one repository, the total runtime of Biome with only `noImportCycles` enabled went from \~23s down to \~4s. - [#&#8203;7447](https://github.com/biomejs/biome/pull/7447) [`7139aad`](https://github.com/biomejs/biome/commit/7139aad75b6e8045be6eb09425fb82eb035fb704) Thanks [@&#8203;rriski](https://github.com/rriski)! - Fixes [#&#8203;7446](https://github.com/biomejs/biome/issues/7446). The GritQL `$...` spread metavariable now correctly matches members in object literals, aligning its behavior with arrays and function calls. - [#&#8203;6710](https://github.com/biomejs/biome/pull/6710) [`98cf9af`](https://github.com/biomejs/biome/commit/98cf9af0a4e02434983899ce49d92209a6abab02) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Fixed [#&#8203;4723](https://github.com/biomejs/biome/issues/7423): Type inference now recognises *index signatures* and their accesses when they are being indexed as a string. ##### Example ```ts type BagOfPromises = { // This is an index signature definition. It declares that instances of type // `BagOfPromises` can be indexed using arbitrary strings. [property: string]: Promise<void>; }; let bag: BagOfPromises = {}; // Because `bag.iAmAPromise` is equivalent to `bag["iAmAPromise"]`, this is // considered an access to the string index, and a Promise is expected. bag.iAmAPromise; ``` - [#&#8203;7415](https://github.com/biomejs/biome/pull/7415) [`d042f18`](https://github.com/biomejs/biome/commit/d042f18f556edfd4fecff562c8f197dbec81a5e7) Thanks [@&#8203;qraqras](https://github.com/qraqras)! - Fixed [#&#8203;7212](https://github.com/biomejs/biome/issues/7212), now the [`useOptionalChain`](https://biomejs.dev/linter/rules/use-optional-chain/) rule recognizes optional chaining using `typeof` (e.g., `typeof foo !== 'undefined' && foo.bar`). - [#&#8203;7419](https://github.com/biomejs/biome/pull/7419) [`576baf4`](https://github.com/biomejs/biome/commit/576baf4faf568e8b6a295f457f70894235ffdb59) Thanks [@&#8203;Conaclos](https://github.com/Conaclos)! - Fixed [#&#8203;7323](https://github.com/biomejs/biome/issues/7323). [`noUnusedPrivateClassMembers`](https://biomejs.dev/linter/rules/no-unused-private-class-members/) no longer reports as unused TypeScript `private` members if the rule encounters a computed access on `this`. In the following example, `member` as previously reported as unused. It is no longer reported. ```ts class TsBioo { private member: number; set_with_name(name: string, value: number) { this[name] = value; } } ``` - [`351bccd`](https://github.com/biomejs/biome/commit/351bccdfe49a6173cb1446ef2a8a9171c8d78c26) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Added the new nursery lint rule `noJsxLiterals`, which disallows the use of string literals inside JSX. The rule catches these cases: ```jsx <> <div>test</div> {/* test is invalid */} <>test</> <div> {/* this string is invalid */} asdjfl test foo </div> </> ``` - [#&#8203;7406](https://github.com/biomejs/biome/pull/7406) [`b906112`](https://github.com/biomejs/biome/commit/b90611223dbab116c4c1678a374c1a48c29a34a0) Thanks [@&#8203;mdevils](https://github.com/mdevils)! - Fixed an issue ([#&#8203;6393](https://github.com/biomejs/biome/issues/6393)) where the [useHookAtTopLevel](https://biomejs.dev/linter/rules/use-hook-at-top-level/) rule reported excessive diagnostics for nested hook calls. The rule now reports only the offending top-level call site, not sub-hooks of composite hooks. ```js // Before: reported twice (useFoo and useBar). function useFoo() { return useBar(); } function Component() { if (cond) useFoo(); } // After: reported once at the call to useFoo(). ``` - [#&#8203;7461](https://github.com/biomejs/biome/pull/7461) [`ea585a9`](https://github.com/biomejs/biome/commit/ea585a9394a4126370b865f565ad43b757e736ab) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Improved performance of `noPrivateImports` by eliminating allocations. In one repository, the total runtime of Biome with only `noPrivateImports` enabled went from \~3.2s down to \~1.4s. - [`351bccd`](https://github.com/biomejs/biome/commit/351bccdfe49a6173cb1446ef2a8a9171c8d78c26) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;7411](https://github.com/biomejs/biome/issues/7411). The Biome Language Server had a regression where opening an editor with a file already open wouldn't load the project settings correctly. - [#&#8203;7142](https://github.com/biomejs/biome/pull/7142) [`53ff5ae`](https://github.com/biomejs/biome/commit/53ff5ae34428f042bb5b80c19862c9cf69fc6359) Thanks [@&#8203;Netail](https://github.com/Netail)! - Added the new nursery rule [`noDuplicateDependencies`](https://biomejs.dev/linter/rules/no-duplicate-dependencies/), which verifies that no dependencies are duplicated between the `bundledDependencies`, `bundleDependencies`, `dependencies`, `devDependencies`, `overrides`, `optionalDependencies`, and `peerDependencies` sections. For example, the following snippets will trigger the rule: ```json { "dependencies": { "foo": "" }, "devDependencies": { "foo": "" } } ``` ```json { "dependencies": { "foo": "" }, "optionalDependencies": { "foo": "" } } ``` ```json { "dependencies": { "foo": "" }, "peerDependencies": { "foo": "" } } ``` - [`351bccd`](https://github.com/biomejs/biome/commit/351bccdfe49a6173cb1446ef2a8a9171c8d78c26) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;3824](https://github.com/biomejs/biome/issues/3824). Now the option CLI `--color` is correctly applied to logging too. ### [`v2.2.3`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#223) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.2.2...@biomejs/biome@2.2.3) ##### Patch Changes - [#&#8203;7353](https://github.com/biomejs/biome/pull/7353) [`4d2b719`](https://github.com/biomejs/biome/commit/4d2b7190f855a88bdae467a2efc00b81721bee62) Thanks [@&#8203;JeetuSuthar](https://github.com/JeetuSuthar)! - Fixed [#&#8203;7340](https://github.com/biomejs/biome/issues/7340): The linter now allows the `navigation` property for view-transition in CSS. Previously, the linter incorrectly flagged `navigation: auto` as an unknown property. This fix adds `navigation` to the list of known CSS properties, following the [CSS View Transitions spec](https://www.w3.org/TR/css-view-transitions-2/#view-transition-navigation-descriptor). - [#&#8203;7275](https://github.com/biomejs/biome/pull/7275) [`560de1b`](https://github.com/biomejs/biome/commit/560de1bf3f22f4a8a5cdc224256a34dbb9d78481) Thanks [@&#8203;arendjr](https://github.com/arendjr)! - Fixed [#&#8203;7268](https://github.com/biomejs/biome/issues/7268): Files that are explicitly passed as CLI arguments are now correctly ignored if they reside in an ignored folder. - [#&#8203;7358](https://github.com/biomejs/biome/pull/7358) [`963a246`](https://github.com/biomejs/biome/commit/963a24643cbf4d91cca81569b33a8b7e21b4dd0b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;7085](https://github.com/biomejs/biome/issues/7085), now the rule `noDescendingSpecificity` correctly calculates the specificity of selectors when they are included inside a media query. - [#&#8203;7387](https://github.com/biomejs/biome/pull/7387) [`923674d`](https://github.com/biomejs/biome/commit/923674dbf8cc4c23ab569cd00ae0a0cf2a3ab791) Thanks [@&#8203;qraqras](https://github.com/qraqras)! - Fixed [#&#8203;7381](https://github.com/biomejs/biome/issues/7381), now the [`useOptionalChain`](https://biomejs.dev/ja/linter/rules/use-optional-chain/) rule recognizes optional chaining using Yoda expressions (e.g., `undefined !== foo && foo.bar`). - [#&#8203;7316](https://github.com/biomejs/biome/pull/7316) [`f9636d5`](https://github.com/biomejs/biome/commit/f9636d5de1e8aef742d145a886f05a4cd79eca31) Thanks [@&#8203;Conaclos](https://github.com/Conaclos)! - Fixed [#&#8203;7289](https://github.com/biomejs/biome/issues/7289). The rule [`useImportType`](https://biomejs.dev/linter/rules/use-import-type/) now inlines `import type` into `import { type }` when the `style` option is set to `inlineType`. Example: ```ts import type { T } from "mod"; // becomes import { type T } from "mod"; ``` - [#&#8203;7350](https://github.com/biomejs/biome/pull/7350) [`bb4d407`](https://github.com/biomejs/biome/commit/bb4d407747dd29df78776f143ad63657f869be11) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Fixed [#&#8203;7261](https://github.com/biomejs/biome/issues/7261): two characters `・` (KATAKANA MIDDLE DOT, U+30FB) and `・` (HALFWIDTH KATAKANA MIDDLE DOT, U+FF65) are no longer considered as valid characters in identifiers. Property keys containing these character(s) are now preserved as string literals. - [#&#8203;7377](https://github.com/biomejs/biome/pull/7377) [`811f47b`](https://github.com/biomejs/biome/commit/811f47b35163e70dce106f62d0aea4ef9e6b91bb) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a bug where the Biome Language Server didn't correctly compute the diagnostics of a monorepo setting, caused by an incorrect handling of the project status. - [#&#8203;7245](https://github.com/biomejs/biome/pull/7245) [`fad34b9`](https://github.com/biomejs/biome/commit/fad34b9db9778fe964ff7dbc489de0bfad2d3ece) Thanks [@&#8203;kedevked](https://github.com/kedevked)! - Added the new lint rule `useConsistentArrowReturn`. This rule enforces a consistent return style for arrow functions. ##### Invalid ```js const f = () => { return 1; }; ``` This rule is a port of ESLint's [arrow-body-style](https://eslint.org/docs/latest/rules/arrow-body-style) rule. - [#&#8203;7370](https://github.com/biomejs/biome/pull/7370) [`e8032dd`](https://github.com/biomejs/biome/commit/e8032ddfdd734a1441335d82b49db478248e6992) Thanks [@&#8203;fireairforce](https://github.com/fireairforce)! - Support dynamic `import defer` and `import source`. The syntax looks like: ```ts import.source("foo"); import.source("x", { with: { attr: "val" } }); import.defer("foo"); import.defer("x", { with: { attr: "val" } }); ``` - [#&#8203;7369](https://github.com/biomejs/biome/pull/7369) [`b1f8cbd`](https://github.com/biomejs/biome/commit/b1f8cbd88619deb269b2028eb0578657987848c5) Thanks [@&#8203;siketyan](https://github.com/siketyan)! - Range suppressions are now supported for Grit plugins. For JavaScript, you can suppress a plugin as follows: ```js // biome-ignore-start lint/plugin/preferObjectSpread: reason Object.assign({ foo: "bar" }, baz); // biome-ignore-end lint/plugin/preferObjectSpread: reason ``` For CSS, you can suppress a plugin as follows: ```css body { /* biome-ignore-start lint/plugin/useLowercaseColors: reason */ color: #fff; /* biome-ignore-end lint/plugin/useLowercaseColors: reason */ } ``` - [#&#8203;7384](https://github.com/biomejs/biome/pull/7384) [`099507e`](https://github.com/biomejs/biome/commit/099507eb07f14f7d383f848fb6c659b5a6ccfd92) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Reduced the severity of certain diagnostics emitted when Biome deserializes the configuration files. Now these diagnostics are emitted as `Information` severity, which means that they won't interfere when running commands with `--error-on-warnings` - [#&#8203;7302](https://github.com/biomejs/biome/pull/7302) [`2af2380`](https://github.com/biomejs/biome/commit/2af2380b8210e74efea467139a8a4cb4747c8af4) Thanks [@&#8203;unvalley](https://github.com/unvalley)! - Fixed [#&#8203;7301](https://github.com/biomejs/biome/issues/7301): [`useReadonlyClassProperties`](https://biomejs.dev/linter/rules/use-readonly-class-properties/) now correctly skips JavaScript files. - [#&#8203;7288](https://github.com/biomejs/biome/pull/7288) [`94d85f8`](https://github.com/biomejs/biome/commit/94d85f8fe54305e8fa070490bb2f7c86a91c5e92) Thanks [@&#8203;ThiefMaster](https://github.com/ThiefMaster)! - Fixed [#&#8203;7286](https://github.com/biomejs/biome/issues/7286). Files are now formatted with JSX behavior when `javascript.parser.jsxEverywhere` is explicitly set. Previously, this flag was only used for parsing, but not for formatting, which resulted in incorrect formatting of conditional expressions when JSX syntax is used in `.js` files. - [#&#8203;7311](https://github.com/biomejs/biome/pull/7311) [`62154b9`](https://github.com/biomejs/biome/commit/62154b93e0aa1609afb3d2b1f5468b63ab79374a) Thanks [@&#8203;qraqras](https://github.com/qraqras)! - Added the new nursery rule `noUselessCatchBinding`. This rule disallows unnecessary catch bindings. ```diff try { // Do something - } catch (unused) {} + } catch {} ``` - [#&#8203;7349](https://github.com/biomejs/biome/pull/7349) [`45c1dfe`](https://github.com/biomejs/biome/commit/45c1dfe32879f4bbb75cbf9b3ee86e304a02aaa1) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;4298](https://github.com/biomejs/biome/issues/4298). Biome now correctly formats CSS declarations when it contains one single value: ```diff .bar { - --123456789012345678901234567890: var(--1234567890123456789012345678901234567); + --123456789012345678901234567890: var( + --1234567890123456789012345678901234567 + ); } ``` - [#&#8203;7295](https://github.com/biomejs/biome/pull/7295) [`7638e84`](https://github.com/biomejs/biome/commit/7638e84b026c8b008fa1efdd795b8c0bff0733ab) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;7130](https://github.com/biomejs/biome/issues/7130). Removed the emission of a false-positive diagnostic. Biome no longer emits the following diagnostic: ``` lib/main.ts:1:5 suppressions/unused ━━━━━━━━━━━━━━━━━━━━━━━━━ ⚠ Suppression comment has no effect because the tool is not enabled. > 1 │ /** biome-ignore-all assist/source/organizeImports: For the lib root file, we don't want to organize exports */ │ ^^^^^^^^^^^^^^^^ ``` - [#&#8203;7377](https://github.com/biomejs/biome/pull/7377) [`811f47b`](https://github.com/biomejs/biome/commit/811f47b35163e70dce106f62d0aea4ef9e6b91bb) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;7371](https://github.com/biomejs/biome/issues/7371) where the Biome Language Server didn't correctly recompute the diagnostics when updating a nested configuration file. - [#&#8203;7348](https://github.com/biomejs/biome/pull/7348) [`ac27fc5`](https://github.com/biomejs/biome/commit/ac27fc56dbb14c8f8507ffc4b7d6bf27aa3780db) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed [#&#8203;7079](https://github.com/biomejs/biome/issues/7079). Now the rule [`useSemanticElements`](https://biomejs.dev/linter/rules/use-semantic-elements/) doesn't trigger components and custom elements. - [#&#8203;7389](https://github.com/biomejs/biome/pull/7389) [`ab06a7e`](https://github.com/biomejs/biome/commit/ab06a7ea9523ecb39ebf74a14600a02332e9d4e1) Thanks [@&#8203;Conaclos](https://github.com/Conaclos)! - Fixed [#&#8203;7344](https://github.com/biomejs/biome/issues/7344). [`useNamingConvention`](https://biomejs.dev/linter/rules/use-naming-convention/) no longer reports interfaces defined in global declarations. Interfaces declared in global declarations augment existing interfaces. Thus, they must be ignored. In the following example, `useNamingConvention` reported `HTMLElement`. It is now ignored. ```ts export {}; declare global { interface HTMLElement { foo(): void; } } ``` - [#&#8203;7315](https://github.com/biomejs/biome/pull/7315) [`4a2bd2f`](https://github.com/biomejs/biome/commit/4a2bd2f38d1f449e55f88be351fcc1cf1d561e69) Thanks [@&#8203;vladimir-ivanov](https://github.com/vladimir-ivanov)! - Fixed [#&#8203;7310](https://github.com/biomejs/biome/issues/7310): [`useReadonlyClassProperties`](https://biomejs.dev/linter/rules/use-readonly-class-properties/) correctly handles nested assignments, avoiding false positives when a class property is assigned within another assignment expression. Example of code that previously triggered a false positive but is now correctly ignored: ```ts class test { private thing: number = 0; // incorrectly flagged public incrementThing(): void { const temp = { x: 0 }; temp.x = this.thing++; } } ``` </details> --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), 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 [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny40IiwidXBkYXRlZEluVmVyIjoiNDEuMTMxLjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
chore(deps): update dependency @biomejs/biome to v2.2.3
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
359c653420
Author
Collaborator

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: bun.lock
Command failed: bun install --ignore-scripts
/usr/local/bin/bun: line 18:    90 Illegal instruction     (core dumped) /opt/containerbase/tools/bun/1.2.22/bin/bun "$@"

### ⚠️ Artifact update problem Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: bun.lock ``` Command failed: bun install --ignore-scripts /usr/local/bin/bun: line 18: 90 Illegal instruction (core dumped) /opt/containerbase/tools/bun/1.2.22/bin/bun "$@" ```
Renovate force-pushed renovate/biomejs-biome-2.x from 359c653420
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
to 9369bf4350
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
2025-09-08 12:49:43 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 9369bf4350
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
to 292f99787a
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
2025-09-09 17:27:29 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 292f99787a
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
to 3b20c27b07
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
2025-09-10 12:30:36 +02:00
Compare
Renovate changed title from chore(deps): update dependency @biomejs/biome to v2.2.3 to chore(deps): update dependency @biomejs/biome to v2.2.4 2025-09-10 12:30:39 +02:00
Renovate force-pushed renovate/biomejs-biome-2.x from 3b20c27b07
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
to 0d1007a992
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m15s
2025-09-16 00:04:33 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 0d1007a992
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m15s
to e6f8548a57
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m38s
2025-09-20 23:55:01 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from e6f8548a57
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m38s
to b103c65e76
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m7s
2025-09-24 21:24:10 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from b103c65e76
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m7s
to 777cbb887c
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 4m6s
2025-09-25 22:04:39 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 777cbb887c
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 4m6s
to c29742d809
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
2025-09-26 02:54:50 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from c29742d809
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
to c8b26ec8c2
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
2025-09-26 17:42:08 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from c8b26ec8c2
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
to c75765d4ee
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
2025-09-26 17:49:59 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from c75765d4ee
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
to 81aaaaec2d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m0s
2025-09-26 23:17:49 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 81aaaaec2d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m0s
to 6d24d5cf3c
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m3s
2025-09-28 03:49:09 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 6d24d5cf3c
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m3s
to 6617ebc8b5
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m7s
2025-09-28 21:38:14 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 6617ebc8b5
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m7s
to c8dbbce24d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
2025-09-30 00:07:41 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from c8dbbce24d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m2s
to 6977edf968
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
2025-09-30 00:28:45 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 6977edf968
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
to f48b30cd55
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m5s
2025-09-30 19:47:43 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from f48b30cd55
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m5s
to e8112157d0
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m0s
2025-09-30 23:41:47 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from e8112157d0
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m0s
to 972c569f22
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m3s
2025-10-02 23:04:25 +02:00
Compare
Renovate changed title from chore(deps): update dependency @biomejs/biome to v2.2.4 to chore(deps): update dependency @biomejs/biome to v2.2.5 2025-10-02 23:04:28 +02:00
Renovate force-pushed renovate/biomejs-biome-2.x from 972c569f22
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m3s
to 66032db67d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 3m27s
2025-10-06 17:37:10 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 66032db67d
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 3m27s
to d8131036a0
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 2m42s
2025-10-06 18:17:27 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from d8131036a0
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 2m42s
to 1bb14e5871
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 4m24s
2025-10-06 18:34:19 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 1bb14e5871
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 4m24s
to e220093009
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
2025-10-06 18:40:15 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from e220093009
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 59s
to 02af80f43b
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
2025-10-06 18:42:12 +02:00
Compare
Renovate force-pushed renovate/biomejs-biome-2.x from 02af80f43b
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 1m1s
to ef89418281
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
2025-10-06 18:55:45 +02:00
Compare
Renovate changed title from chore(deps): update dependency @biomejs/biome to v2.2.5 to chore(deps): update dependency @biomejs/biome to v2.2.5 - autoclosed 2025-10-06 19:00:52 +02:00
Renovate closed this pull request 2025-10-06 19:00:52 +02:00
Some checks failed
renovate/artifacts Artifact file update failure
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Yumeo/Glorpcha!29
No description provided.