+
Skip to content

Releases: biomejs/biome

JavaScript APIs v2.0.3

08 Jul 15:04
9f7ef63
Compare
Choose a tag to compare

2.0.3

Patch Changes

  • #6785 085e3c7 Thanks @siketyan! - Fixed #6722: Missing dist/ files are now included in the @biomejs/js-api package. The previous release haven't fixed the issue properly.

What's Changed

  • ci: use name instead of pattern for downloading artifact by @siketyan in #6785
  • ci: release by @github-actions in #6786

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.1.1...@biomejs/js-api@2.0.3

JavaScript APIs v2.0.2

08 Jul 14:21
cb63f8c
Compare
Choose a tag to compare

2.0.2

Warning

Due to a CI problem, this version is broken and not includes necessary files in the package.

Patch Changes

  • #6780 563f3d5 Thanks @siketyan! - Fixed #6722: Missing dist/ files are now included in the @biomejs/js-api package. The previous release haven't fixed the issue properly.

  • Updated dependencies []:

    • @biomejs/wasm-web@2.1.1
    • @biomejs/wasm-bundler@2.1.1
    • @biomejs/wasm-nodejs@2.1.1

What's Changed

  • ci: correct restore path of the artifact by @siketyan in #6780
  • fix(wasm): serialize map as a plain object by @siketyan in #6781
  • ci: release by @github-actions in #6779
  • docs: update contribution guide and pull request template by @ematipico in #6664

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/js-api@2.0.1...@biomejs/js-api@2.0.2

JavaScript APIs v2.0.1

08 Jul 13:23
cf3c2ce
Compare
Choose a tag to compare

2.0.1

Warning

Due to a CI problem, this version is broken and not includes necessary files in the package.

Patch Changes

What's Changed

  • ci: download js-api artifacts before publish by @siketyan in #6776
  • ci: release by @github-actions in #6778
  • fix(noFocusedTests): fix fit false positive by @dyc3 in #6761

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.1.0...@biomejs/js-api@2.0.1

JavaScript APIs v2.0.0

08 Jul 08:30
dcce75a
Compare
Choose a tag to compare

2.0.0

Warning

Due to a CI problem, this version is broken and not includes necessary files in the package.

Minor Changes

  • #6535 d8c08e1 Thanks @regseb! - Biome's JavaScript Bindings now have specific subpath exports for the three packages:

    • import { Biome } from "@biomejs/js-api/bundler";
    • import { Biome } from "@biomejs/js-api/nodejs";
    • import { Biome } from "@biomejs/js-api/web";

    These new subpath exports load only TypeScript declarations, whereas the default export loads declarations for all three packages. This was a problem if you checked your code with tsc.

    • Old usage with default export (no subpath):

      import { Biome, Distribution } from "@biomejs/js-api";
      
      const biome = await Biome.create({ distribution: Distribution.NODE });
    • New usage with a specific subpath export:

      import { Biome } from "@biomejs/js-api/nodejs";
      
      const biome = new Biome();

Patch Changes

  • Updated dependencies []:
    • @biomejs/wasm-web@2.1.0
    • @biomejs/wasm-bundler@2.1.0
    • @biomejs/wasm-nodejs@2.1.0

What's Changed

Read more

Biome CLI v2.1.1

08 Jul 14:22
cb63f8c
Compare
Choose a tag to compare

2.1.1

Patch Changes

  • #6781 9bbd34f Thanks @siketyan! - Fixed the FileFeaturesResult interface in the WASM API was defined as a mapped object but the actual value was a Map object.

  • #6761 cf3c2ce Thanks @dyc3! - Fixed #6759, a false positive for noFocusedTests that was triggered by calling any function with the name fit on any object.

    The following code will now pass the noFocusedTests rule:

    import foo from "foo";
    foo.fit();

What's Changed

  • ci: correct restore path of the artifact by @siketyan in #6780
  • fix(wasm): serialize map as a plain object by @siketyan in #6781
  • ci: release by @github-actions in #6779
  • docs: update contribution guide and pull request template by @ematipico in #6664

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/js-api@2.0.1...@biomejs/biome@2.1.1

Biome CLI v2.1.0

08 Jul 08:31
dcce75a
Compare
Choose a tag to compare

2.1.0

Minor Changes

  • #6512 0c0bf82 Thanks @arendjr! - The rule noFloatingPromises can now detect floating arrays of Promises.

    Invalid examples

    // This gets flagged because the Promises are not handled.
    [1, 2, 3].map(async (x) => x + 1);

    Valid examples

    await Promise.all([1, 2, 3].map(async (x) => x + 1));
  • #6637 6918085 Thanks @arendjr! - Type inference is now able to handle the sequence operator (,), as well as post- and pre-update operators: ++.

    Example

    let x = 5;
    
    // We now infer that `x++` resolves to a number, while the expression as a whole
    // becomes a Promise:
    x++, new Promise((resolve) => resolve("comma"));
  • #6752 c9eaca4 Thanks @arendjr! - Fixed #6646: .gitignore files are now picked up even when running Biome from a nested directory, or when the ignore file itself is ignored through files.includes.

  • #6746 90aeead Thanks @arendjr! - biome migrate no longer enables style rules that were recommended in v1, because that would be undesirable for users upgrading from 2.0.

    Users who are upgrading from Biome 1.x are therefore advised to first upgrade to Biome 2.0, and run the migration, before continuing to Biome 2.1 or later.

  • #6583 d415a3f Thanks @arendjr! - Added the nursery rule noMisusedPromises.

    It signals Promises in places where conditionals or iterables are expected.

    Invalid examples

    const promise = Promise.resolve("value");
    
    // Using a `Promise` as conditional is always truthy:
    if (promise) {
      /* ... */
    }
    
    // Spreading a `Promise` has no effect:
    console.log({ foo: 42, ...promise });
    
    // This does not `await` the `Promise`s from the callbacks,
    // so it does not behave as you may expect:
    [1, 2, 3].forEach(async (value) => {
      await fetch(`/${value}`);
    });

    Valid examples

    const promise = Promise.resolve("value");
    
    if (await promise) {
      /* ... */
    }
    
    console.log({ foo: 42, ...(await promise) });
  • #6405 cd4a9bb Thanks @vladimir-ivanov! - Added the ignoreRestSiblings option to the noUnusedFunctionParameters rule.

    This option is used to ignore unused function parameters that are siblings of the rest parameter.

    The default is false, which means that unused function parameters that are siblings of the rest parameter will be reported.

    Example

    {
      "rules": {
        "noUnusedFunctionParameters": ["error", { "ignoreRestSiblings": true }]
      }
    }
  • #6614 0840021 Thanks @arendjr! - We have implemented a more targeted version of the scanner, which ensures that if you provide file paths to handle on the CLI, the scanner will exclude directories that are not relevant to those paths.

    Note that for many commands, such as biome check and biome format, the file paths to handle are implicitly set to the current working directory if you do not provide any path explicitly. The targeted scanner also works with such implicit paths, which means that if you run Biome from a subfolder, other folders that are part of the project are automatically exempted.

    Use cases where you invoke Biome from the root of the project without providing a path, as well as those where project rules are enabled, are not expected to see performance benefits from this.

    Implemented #6234, and fixed #6483 and #6563.

  • #6488 c5ee385 Thanks @ianzone! - nx.json and project.json have been added to the list of well-known files.

  • #6720 52e36ae Thanks @minht11! - Added # @biomejs/biome symbol to [organizeImports](https://biomejs.dev/assist/actions/organize-imports) :ALIAS:` group.

    import { action } from '$lib' will be treated as alias import.

Patch Changes

  • #6712 2649ac6 Thanks @sterliakov! - Fixed #6595: Biome now supports // biome-ignore-all file-level suppressions in files that start with a shebang (#!).

  • #6758 28dc49e Thanks @arendjr! - Fixed #6573: Grit plugins can now match bare imports.

    Example

    The following snippet:

    `import $source`
    

    will now match:

    import "main.css";
  • #6550 b424f46 Thanks @arendjr! - Type inference is now able to handle logical expressions: &&, ||, and ??.

    Examples

    // We can now infer that because `true` is truthy, the entire expression
    // evaluates to a `Promise`.
    true && Promise.reject("logical operator bypass");
    
    // And we know that this doesn't:
    false && Promise.reject("logical operator bypass");
    
    // Truthiness, falsiness, and non-nullishness can all be determined on more
    // complex expressions as well. So the following also works:
    type Nullish = null | undefined;
    
    type Params = {
      booleanOption: boolean | Nullish;
      falsyOption: false | Nullish;
    };
    
    function foo({ booleanOption, falsyOption }: Params) {
      // This may be a Promise:
      booleanOption ?? Promise.reject("logical operator bypass");
    
      // But this never is:
      falsyOption && Promise.reject("logical operator bypass");
    }
  • #6413 4aa0e50 Thanks @wojtekmaj! - Improved error message in useDateNow rule.

  • #6673 341e062 Thanks @dyc3! - Fixed a case where the HTML formatter would mangle embedded language tags if whitespaceSensitivity was set to strict

  • #6642 a991229 Thanks @unvalley! - Fixed #4494: The noSecrets rule now correctly uses the entropyThreshold option to detect secret like strings.

  • #6520 0c43545 Thanks @arendjr! - Type inference is now able to handle ternary conditions in type aliases.

    Note that we don't attempt to evaluate the condition itself. The resulting type is simply a union of both conditional outcomes.

    Example

    type MaybeResult<T> = T extends Function ? Promise<string> : undefined;
    
    // We can now detect this function _might_ return a `Promise`:
    function doStuff<T>(input: T): MaybeResult<T> {
      /* ... */
    }
  • #6711 1937691 Thanks @sterliakov! - Fixed #6654: Fixed range highlighting of <explanation> placeholder in inline suppression block comments.

  • #6756 d12b26f Thanks @dyc3! - Fixed #6669: Added an exception to noUnusedImports to allow type augmentation imports.

    import type {} from "@mui/lab/themeAugmentation";
  • #6643 df15ad6 Thanks @skewb1k! - Fixed [#4994]([https://github.co...

Read more

Biome CLI v2.0.6

27 Jun 08:02
a69bbe8
Compare
Choose a tag to compare

2.0.6

Patch Changes

  • #6557 fd68458 Thanks @ematipico! - Fixed a bug where Biome didn't provide all the available code actions when requested by the editor.

  • #6511 72623fa Thanks @Conaclos! - Fixed #6492. The
    organizeImports assist action no longer duplicates a comment at the start of
    the file when :BLANK_LINE: precedes the first import group.

  • #6557 fd68458 Thanks @ematipico! - Fixed #6287 where Biome Language Server didn't adhere to the settings.requireConfiguration option when pulling diagnostics and code actions.
    Note that for this configuration be correctly applied, your editor must support dynamic registration capabilities.

  • #6551 0b63b1d Thanks @Conaclos! - Fixed #6536. useSortedKeys no longer panics in some edge cases where object spreads are involved.

  • #6503 9a8fe0f Thanks @ematipico! - Fixed #6482 where nursery rules that belonged to a domain were incorrectly enabled.

  • #6565 e85761c Thanks @daivinhtran! - Fixed #4677: Now the noUnusedImports rule won't produce diagnostics for types used in JSDoc comment of exports.

  • #6166 b8cbd83 Thanks @mehm8128! - Added the nursery rule noExcessiveLinesPerFunction.
    This rule restrict a maximum number of lines of code in a function body.

    The following code is now reported as invalid when the limit of maximum lines is set to 2:

    function foo() {
      const x = 0;
      const y = 1;
      const z = 2;
    }

    The following code is now reported as valid when the limit of maximum lines is set to 3:

    const bar = () => {
      const x = 0;
      const z = 2;
    };
  • #6553 5f42630 Thanks @denbezrukov! - Fixed #6547. Now the Biome CSS parser correctly parses @starting-style when it's used inside other at-rules. The following example doesn't raise an error anymore:

    @layer my-demo-layer {
      @starting-style {
        div.showing {
          background-color: red;
        }
      }
    }
  • #6458 05402e3 Thanks @ematipico! - Fixed an issue where the rule useSemanticElements used the incorrect range when positioning suppression comments.

  • #6560 6d8a6b9 Thanks @siketyan! - Fixed #6559: the error message on detected a large file was outdated and referred a removed configuration option files.ignore.

  • #6458 05402e3 Thanks @ematipico! - Fixed #6384. The rule useAltText now emits a diagnostic with a correct range, so suppression comments can work correctly.

  • #6518 7a56288 Thanks @wojtekmaj! - Fixed #6508, where the rule noUselessFragments incorrectly flagged Fragments containing HTML entities as unnecessary.

  • #6517 c5217cf Thanks @arendjr! - Fixed #6515. When using the
    extends field to extend a configuration from an NPM package, we now accept the
    condition names "biome" and "default" for exporting the configuration in
    the package.json.

    This means that where previously your package.json had to contain an export
    declaration similar to this:

    {
      "exports": {
        ".": "./biome.json"
      }
    }

    You may now use one of these as well:

    {
      "exports": {
        ".": {
          "biome": "./biome.json"
        }
      }
    }

    Or:

    {
      "exports": {
        ".": {
          "default": "./biome.json"
        }
      }
    }
  • #6219 a3a3715 Thanks @huangtiandi1999! - Added new nursery rule noUnassignedVariables, which disallows let or var variables that are read but never assigned.

    The following code is now reported as invalid:

    let x;
    if (x) {
      console.log(1);
    }

    The following code is now reported as valid:

    let x = 1;
    if (x) {
      console.log(1);
    }
  • #6395 f62e748 Thanks @mdevils! - Added the new nursery rule noImplicitCoercion, which disallows shorthand type conversions in favor of explicit type conversion functions.

    Example (Invalid): Boolean conversion using double negation:

    !!foo;
    !!(foo + bar);

    Example (Invalid): Number conversion using unary operators:

    +foo;
    -(-foo);
    foo - 0;
    foo * 1;
    foo / 1;

    Example (Invalid): String conversion using concatenation:

    "" + foo;
    foo + "";
    `` + foo;
    foo += "";

    Example (Invalid): Index checking using bitwise NOT:

    ~foo.indexOf(1);
    ~foo.bar.indexOf(2);

    Example (Valid): Using explicit type conversion functions:

    Boolean(foo);
    Number(foo);
    String(foo);
    foo.indexOf(1) !== -1;
  • #6544 f28b075 Thanks @daivinhtran! - Fixed #6536. Now the rule noUselessFragments produces diagnostics for a top-level useless fragment that is in a return statement.

  • #6320 5705f1a Thanks @mdevils! - Added the new nursery rule useUnifiedTypeSignature, which disallows overload signatures that can be unified into a single signature.

    Overload signatures that can be merged into a single signature are redundant and should be avoided. This rule helps simplify function signatures by combining overloads by making parameters optional and/or using type unions.

    Example (Invalid): Overload signatures that can be unified:

    function f(a: number): void;
    function f(a: string): void;
    interface I {
      a(): void;
      a(x: number): void;
    }

    Example (Valid): Unified signatures:

    function f(a: number | string): void {}
    interface I {
      a(x?: number): void;
    }

    Example (Valid): Different return types cannot be merged:

    interface I {
      f(): void;
      f(x: number): number;
    }
  • #6545 2782175 Thanks @ematipico! - Fixed #6529, where the Biome Language Server would emit an error when the user would open a file that isn't part of its workspace (node_modules or external files).
    Now the language server doesn't emit any errors and it exits gracefully.

  • #6524 a27b825 Thanks @vladimir-ivanov! - Fixed #6500: The useReadonlyClassProperties rule now correctly marks class properties as readonly when they are assigned ...

Read more

Biome CLI v2.0.5

23 Jun 12:55
09f49ba
Compare
Choose a tag to compare

2.0.5

Patch Changes

  • #6461 38862e6 Thanks @ematipico! - Fixed #6419, a regression where stdin mode would create a temporary new file instead of using the one provided by the user. This was an intended regression.

    Now Biome will use the file path passed via --std-file-path, and apply the configuration that matches it.

  • #6480 050047f Thanks @Conaclos! - Fixed #6371.
    useNamingConvention now checks the string case of objects' property shorthand.

  • #6477 b98379d Thanks @ematipico! - Fixed an issue where Biome formatter didn't format consistently CSS value separated by commas.

    .font-heading {
    - font-feature-settings: var(--heading-salt), var(--heading-ss06),
    -   var(--heading-ss11), var(--heading-cv09), var(--heading-liga),
    -   var(--heading-calt);
    
    +  font-feature-settings:
    +    var(--heading-salt), var(--heading-ss06), var(--heading-ss11),
    +    var(--heading-cv09), var(--heading-liga), var(--heading-calt);
    }
    
  • #6248 ec7126c Thanks @fireairforce! - Fixed grit pattern matching for different kinds of import statements.

    The grit pattern import $imports from "foo" will match the following code:

    import bar from "foo";
    import { bar } from "foo";
    import { bar, baz } from "foo";

What's Changed

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.0.4...@biomejs/biome@2.0.5

@biomejs/biome@2.0.4

21 Jun 09:02
4595a7c
Compare
Choose a tag to compare

2.0.4

Patch Changes

What's Changed

Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.0.1...@biomejs/biome@v2.0.4

@biomejs/biome@2.0.1

20 Jun 12:54
Compare
Choose a tag to compare

Warning

Biome v2.0.1 and v2.0.2 are currently broken, please use v2.0.0 in the meantime. See #6435 for details.

Patch Changes

  • #6425 00e97ad Thanks @siketyan! - Fixed #6391: the rule noUselessFragments no longer reports a fragment that contains whitespaces which aren't trimmed by the runtime.

  • #6417 dd88565 Thanks @ematipico! - Fixed #6360: The following pseudo classes and elements are no longer reported by noUnknownPseudoClass or noUnknownPseudoElement rules.

    • :open
    • ::details-content
    • ::prefix
    • ::search-text
    • ::suffix
  • #6417 dd88565 Thanks @ematipico! - Fixed #6357, where the boolean values weren't correctly merged when using the extends functionality. Now Biome correctly merges the values.

  • #6417 dd88565 Thanks @ematipico! - Fixed #6341: Fixed an issue where Biome would throw an error for the language tags nb and nn.

  • #6385 94142dd Thanks @siketyan! - Fixed #6377: The rule noSelfCompare now correctly compares two function calls with different arguments.

  • #6417 dd88565 Thanks @ematipico! - Fixed #6278: useExhaustiveDependencies no longer adds duplicated dependencies into the list.

  • #6417 dd88565 Thanks @ematipico! - Fix #6396, where vi.useFakeTimers() and vi.useRealTimers() incorrectly triggered React Hooks-related rules

  • #6417 dd88565 Thanks @ematipico! - Fixed a bug where Biome didn't correctly discover nested configuration files when using the lint command and the linter is disabled in the root configuration.

  • #6422 594ec50 Thanks @ematipico! - Removed the experimental rename feature from Biome LSP, which caused some issues inside existing editors such as Zed.

  • #6388 c6942d2 Thanks @siketyan! - Fixed #6375: the formatter no longer inserts an extra empty line before a semicolon when it has leading comments.

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载