Skip to content

CLI v1.9.4

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 17 Oct 17:49
· 160 commits to main since this release
fa93a14

Analyzer

Bug fixes

  • Improved the message for unused suppression comments. Contributed by @dyc3

  • Fix #4228, where the rule a11y/noInteractiveElementToNoninteractiveRole incorrectly reports a role for non-interactive elements. Contributed by @eryue0220

  • noSuspiciousSemicolonInJsx now catches suspicious semicolons in React fragments. Contributed by @vasucp1207

CLI

Enhancements

  • The --summary reporter now reports parsing diagnostics too. Contributed by @ematipico

  • Improved performance of GritQL queries by roughly 25-30%. Contributed by @arendjr

Configuration

Bug fixes

  • Fix an issue where the JSON schema marked lint rules options as mandatory. Contributed by @ematipico

Formatter

Bug fixes

  • Fix #4121. Respect line width when printing multiline strings. Contributed by @ah-yu

Linter

New features

Bug Fixes

  • Biome no longer crashes when it encounters a string that contains a multibyte character (#4181).

    This fixes a regression introduced in Biome 1.9.3
    The regression affected the following linter rules:

    • nursery/useSortedClasses
    • nursery/useTrimStartEnd
    • style/useTemplate
    • suspicious/noMisleadingCharacterClass

    Contributed by @Conaclos

  • Fix #4190, where the rule noMissingVarFunction wrongly reported a variable as missing when used inside a var() function that was a newline. Contributed by @ematipico

  • Fix #4041. Now the rule useSortedClasses won't be triggered if className is composed only by inlined variables. Contributed by @ematipico

  • useImportType and useExportType now report useless inline type qualifiers (#4178).

    The following fix is now proposed:

    - import type { type A, B } from "";
    + import type { A, B } from "";
    
    - export type { type C, D };
    + export type { C, D };

    Contributed by @Conaclos

  • useExportType now reports ungrouped export from.

    The following fix is now proposed:

    - export { type A, type B } from "";
    + export type { A, B } from "";

    Contributed by @Conaclos

  • noVoidTypeReturn now accepts void expressions in return position (#4173).

    The following code is now accepted:

    function f(): void {
      return void 0;
    }

    Contributed by @Conaclos

  • noUselessFragments now correctly handles fragments containing HTML escapes (e.g.  ) inside expression escapes { ... } (#4059).

    The following code is no longer reported:

    function Component() {
      return (
        <div key={index}>{line || <>&nbsp;</>}</div>
      )
    }

    Contributed by @fireairforce

  • noUnusedFunctionParameters and noUnusedVariables no longer reports a parameter as unused when another parameter has a constructor type with the same parameter name (#4227).

    In the following code, the name parameter is no longer reported as unused.

    export class Foo {
      bar(name: string, _class: new (name: string) => any) {
        return name
      }
    }

    Contributed by @Conaclos

  • noUndeclaredDependencies now accepts dependency names with dots. Contributed by @Conaclos

  • useFilenamingConvention now correctly handles renamed exports (#4254).

    The rule allows the filename to be named as one of the exports of the module.
    For instance, the file containing the following export can be named Button.

    class Button {}
    export { Button }

    The rule now correctly handles the renaming of an export.
    For example, the file containing the following export can only be named Button.
    Previously the rule expected the file to be named A.

    class A {}
    export { A as Button }

    Contributed by @Conaclos

  • useConsistentMemberAccessibility now ignores private class members such as #property (#4276). Contributed by @Conaclos

  • noUnknownFunction correctly handles calc-size function (#4212).

    The following code calc-size is no longer reported as unknown:

    .a { height: calc-size(0px); }

    Contributed by @fireairforce

  • useNamingConvention now allows configuring conventions for readonly index signatures. Contributed by @sepruko

  • noDuplicateCustomProperties now correctly handles custom properties and ignores non-custom properties.
    Previously, the rule incorrectly reported duplicates for all properties, including non-custom ones. Contributed by @togami2864

Parser

Bug Fixes

  • The CSS parser now accepts more emoji in identifiers (#3627).

    Browsers accept more emoji than the standard allows.
    Biome now accepts these additional emojis.

    The following code is now correctly parsed:

    p {
      ---color: red;
      color: var(--✨-color);
    }

    Contributed by @Conaclos

  • Add support for parsing typescript's resolution-mode in Import Types(#2115)

    export type Fs = typeof import('fs', { with: { 'resolution-mode': 'import' } });
    export type TypeFromRequire =
      import("pkg", { with: { "resolution-mode": "require" } }).TypeFromRequire;
    export type TypeFromImport =
      import("pkg", { with: { "resolution-mode": "import" } }).TypeFromImport;

    Contributed by @fireairforce

What's Changed

Other changes

  • chore: correct options name (ignoreNonDom) in the examples by @dwaneivan in #4157
  • test: update workspace test by @ematipico in #4158
  • test: update snapshots for js-api by @ematipico in #4162
  • docs: use code blocks to avoid rendering issue on the website by @ematipico in #4167
  • chore: change noBarrelFile language to js from ts by @dwaneivan in #4169
  • docs: use the new /chat link by @ematipico in #4171
  • feat(lint): add no-head-element from eslint-plugin-next by @kaioduarte in #4136
  • feat(lint): add noImgElement rule by @kaioduarte in #4155
  • refactor(cli): use command runner to run predictable logic by @ematipico in #4176
  • refactor(cli): command runner by @ematipico in #4198
  • feat(noSecrets): refine the entropy computation to avoid some false positives by @SaadBazaz in #4118
  • feat(useExplicitFunctionReturnType): support typed function expressions by @kaykdm in #4174
  • chore: deduplicate GritQL snippets by @arendjr in #4153
  • chore(grit): don't use im::Vector where we don't have to by @arendjr in #4203
  • feat(format/grit): add basic formatting for where pattern by @branberry in #4095
  • perf(js_analyze): use Box/Box<[_]> to reduce memory usage by @Conaclos in #4211
  • ci: automatic issue closer by @ematipico in #4213
  • feat(lint): add noHeadImportInDocument rule by @kaioduarte in #4184
  • docs(useNamingConvention): fix typo cas eof -> case of by @sepruko in #4222
  • refactor(aria): don't use macros by @ematipico in #4235
  • feat(format/grit): add formatting for predicate assignment and predicate and by @branberry in #4238
  • chore: run CI workflows on and against next branch by @arendjr in #4250
  • feat(lint): add variable assignment tracking to noDocumentCookie rule by @tunamaguro in #4255
  • chore(linter): rename useExplicitFunctionReturnType to `useExplicit… by @kaykdm in #4261
  • refactor(useFilenamingConvention): use the Cases bit flags for filename cases by @Conaclos in #4316
  • fix(useCollapsedIf): ignore if with else clause by @Conaclos in #4322

New Contributors

Full Changelog: js-api/v0.7.1...cli/v1.9.4