What's Changed
Other changes
- fix(lint): keep comments in noUnusedImports by @ematipico in #5468
- fix(lint/noDestructuredProps): better check when inside a function by @ematipico in #5467
- fix(migrate): push
noVarmember inside existing list by @ematipico in #5470 - fix: report non array literal deps list in useExhaustiveDependencies by @siketyan in #5469
- fix(analyzer): suppression for assist actions by @ematipico in #5482
- fix(migrate): improve error messages when parsing Prettier configuration by @akx in #5479
- fix(lsp): restore available code action by @ematipico in #5492
- fix(core): push ignore matches using their directories by @ematipico in #5494
- fix(migrate): style rules by @ematipico in #5491
- refactor(css_parser): implement error handling for the container at rule by @denbezrukov in #5244
- chore(deps): update @biomejs packages by @renovate in #5510
- chore(deps): update rust docker tag to v1.85.1 by @renovate in #5511
- chore(deps): update dependency eslint to v9.23.0 by @renovate in #5514
- chore(deps): update pnpm to v10.7.0 by @renovate in #5515
- chore(deps): update github-actions (major) by @renovate in #5519
- chore(deps): update typescript-eslint monorepo to v8.28.0 by @renovate in #5517
- chore(deps): update rust crate oxc_resolver to v5 by @renovate in #5520
- fix(core): enhance error message of incorrect suppressions by @ematipico in #5497
- fix: use await now warn function with decorator even if it has a call… by @Xstoudi in #5485
- chore(deps): update rust crate getrandom to 0.3.2 by @renovate in #5516
- fix(plugins): handle invalid spans by @arendjr in #5522
- chore: fix warning in WASM build by @arendjr in #5524
- chore: use dev builds in Node.js pull request check by @arendjr in #5525
- feat(lint): update and move
noBlankTargetby @arendjr in #5527 - chore: set 2024 as default Rustfmt style edition by @jelly in #5528
- feat(lint/useNamingConvention): ignore unused var prefixed with _ by @Conaclos in #5529
- docs: minor typo by @thejackshelton in #5535
- feat(linter): make useImportExtensions check imports with sub extensions by @minht11 in #5532
- feat(linter): implement
noUnresolvedImportsby @arendjr in #5530 - fix(assist/organizeImports): allow suppression comments by @Conaclos in #5504
- docs: include how to use configuration in the js-api README by @bedros-p in #5509
- refactor(migrate): escape squared braces by @Conaclos in #5531
- chore: add ignore entries to scanner by @arendjr in #5546
- chore: add Platinum sponsor by @arendjr in #5547
- fix(docs): update quick test location by @thejackshelton in #5551
- fix(cli): emit error when no extension exist by @ematipico in #5544
- fix(lint/noNoninteractiveElementToInteractiveRole): fix mistakenly flagging
<li role="treeitem">by @dyc3 in #5548 - chore: more ignore entries for the scanner by @arendjr in #5558
- fix(lint/useRegexLiterals): correctly handle escaped anti-slashes by @Conaclos in #5549
- fix(css): align CSS value list format with Prettier by @wanghaoPolar in #5334
- feat(core): add data structures for type info by @arendjr in #5556
- chore(deps): update dependency vite to v5.4.16 [security] by @renovate in #5560
- fix(lint/noParameterAssign): handle unparenthesized arrow functions by @Conaclos in #5559
- chore: rename
DependencyGraphtoModuleGraphby @arendjr in #5561 - fix(syntax/noTypeOnlyImportAttributes): ignore all commonjs files by @Conaclos in #5566
- feat(css): add rule
noImportantStylesby @ematipico in #5555 - refactor: use type info in
noFloatingPromisesby @arendjr in #5576 - fix(lint/noUselessFragments): fix case where code fix would remove more than just the fragment by @dyc3 in #5550
- feat(lint): improve useKeyWithClickEvents by @unvalley in #5507
- chore(deps): update pnpm to v10.7.1 by @renovate in #5583
- chore(deps): update rust crate tokio to 1.44.2 by @renovate in #5584
- chore(deps): update dependency vite to v5.4.17 [security] by @renovate in #5585
- chore(deps): update @biomejs packages by @renovate in #5586
- chore(deps): update dependency eslint to v9.24.0 by @renovate in #5587
- chore(deps): update rust crate indexmap to 2.9.0 by @renovate in #5589
- chore(deps): update rust crate oxc_resolver to 5.1.1 by @renovate in #5590
- chore(deps): update rust crate smallvec to 1.15.0 by @renovate in #5591
- chore(deps): update rust docker tag to v1.86.0 by @renovate in #5592
- chore(deps): update typescript-eslint monorepo to v8.29.0 by @renovate in #5593
- feat(core): add light version of the semantic model to scanner by @arendjr in #5599
- feat(html/formatter): add option to control void elements by @ematipico in #5600
- feat(assist/organizeImports): merge imports and exports by @Conaclos in #5579
- feat(assist/organizeImports): add an option to separate types by @Conaclos in #5582
- chore(html/formatter): better control over spacing by @ematipico in #5604
- fix(assist/useSortedKeys): move comments with the associated key by @Conaclos in #5606
- test(build): fix test build error by @Conaclos in #5607
- chore: remove bronze sponsor by @ematipico in #5612
- feat(linter): implement
noRestrictedElementsby @mdevils in #5578 - chore: add new bronze sponsor by @ematipico in #5613
- refactor: use
biome_js_semantic::SemanticEventExtractorinbiome_module_graphby @arendjr in #5616 - fix(parser): allow excess tokens after expected EOF by @arendjr in #5621
- fix(xtask/codegen): handle languages with no keywords by @vohoanglong0107 in #5625
- chore: add EOF token validator by @arendjr in #5623
- fix(analyzer): suppression by @ematipico in #5611
- perf(lint): remove allocation of strings by @ematipico in #5626
- chore: fix linting issues by @ematipico in #5628
- fix(core): handle
.mjsextension in CommonJS packages by @arendjr in #5630 - feat(core): skip non-root configuration files by @arendjr in #5622
- fix(editorconfig): parse char classes in globs by @Conaclos in #5627
- chore(deps): update dependency vite to v5.4.18 [security] by @renovate in #5640
- fix(analyzer): use binary search to find diagnostics by @ematipico in #5631
- chore(deps): update dependency @types/node to v22.14.1 by @renovate in #5650
- chore(deps): update rust crate anyhow to 1.0.98 by @renovate in #5651
- chore(deps): update pnpm to v10.8.0 by @renovate in #5653
- chore(deps): update typescript-eslint monorepo to v8.29.1 by @renovate in #5652
- chore(deps): update actions/setup-node action to v4.4.0 by @renovate in #5655
- fix(linter): useImportExtensions should not error on valid imports with sub extensions by @minht11 in #5647
- fix(deps): update @biomejs packages (major) by @renovate in #5658
- Revert "fix(deps): update @biomejs packages (major)" by @siketyan in #5659
- ci: use depot runner by @ematipico in #5661
- fix(lint):
noConsolerule now correctly handles indirectconsole.logcalls and references by @mdevils in #5648 - ci(renovate): ignore
randby @ematipico in #5662 - ci(workflow): use depot for all jobs by @ematipico in #5664
- feat(organizeImports): add import matchers by @Conaclos in #5639
- feat(core): implement "thin" type resolution by @arendjr in #5665
- chore: use test for type size verification by @arendjr in #5666
- chore: add gold sponsor by @ematipico in #5668
- chore: fix type in ja translation by @ematipico in #5669
- chore: disable bumping engines on Renovate by @siketyan in #5670
- chore: update
oxc_resolverby @ematipico in #5671 - fix(deps): update @biomejs packages (major) by @renovate in #5660
- refactor(organizeImports): remove the typePlacement option by @Conaclos in #5675
- feat(yaml): update yaml grammar by @vohoanglong0107 in #5615
- fix(lint/noDuplicateObjectKeys): transfer comments by @Conaclos in #5676
- docs: add RELEASES.md document by @ematipico in #5674
- fix(no_focused_tests): detect focused test loops in noFocusedTests rule by @amasotti in #5642
- ci(benchmarks): add code and file to diagnostics by @ematipico in #5672
- fix(yaml): remaining issues with Yaml grammar by @vohoanglong0107 in #5680
- fix(lint): remove false-positives on hooks in a class method by @siketyan in #5681
- fix(deps): update rust crates by @renovate in #5663
- feat(suppression): syntax rules suppression by @hanseltime in #5619
- feat(core): add
Typedservice and updatenoFloatingPromisesby @arendjr in #5685 - fix(lint): correct the source of the rule
noTsIgnoreby @lixiaoyan in #5690 - chore: format module graph by @ematipico in #5689
- refactor: light scanner for formatter by @ematipico in #5692
- chore: use
Selfwhere appropriate by @arendjr in #5699 - feat: pretty print for type info by @ematipico in #5694
- chore: verbatim formatting by @ematipico in #5707
- fix(formatter): do not break properties in object patterns with nested assignment pattern by @siketyan in #5695
- fix(assist): skip sorting specifiers if it contains any bogus nodes by @siketyan in #5711
- feat(yaml): initialize parser by @vohoanglong0107 in #5709
- feat(cli): add advices to no files processed error by @siketyan in #5708
- feat(lint): implement code action for useConsistentObjectDefinition by @siketyan in #5712
- feat(lint): implement
useNumericSeparatorsby @uncenter in #5635 - feat(lint): project domain by @ematipico in #5705
- chore(deps): update pnpm to v10.8.1 by @renovate in #5720
- chore(deps): update softprops/action-gh-release action to v2.2.2 by @renovate in #5722
- chore(deps): update rust crate proc-macro2 to 1.0.95 by @renovate in #5721
- fix(deps): update @biomejs packages by @renovate in #5723
- chore(deps): add engines field for pnpm by @fireairforce in #5718
- chore(deps): update dependency eslint to v9.25.0 by @renovate in #5726
- chore(deps): update dependency @changesets/cli to v2.29.2 by @renovate in #5725
- fix(formatter):
indent_sizecan set to tab in.editorconfigby @fireairforce in #5713 - feat(lint/useImportType): add
styleoption by @Conaclos in #5717 - feat(core): implement type inference for destructuring by @arendjr in #5727
- chore: move @siketyan to the Core Contributors team by @siketyan in #5730
- revert: editorconfig not default by @ematipico in #5733
- feat(lint)!: support custom messages in noRestrictedGlobals rule by @siketyan in #5714
- chore: reduce duplication and add formating of object literals by @ematipico in #5735
- chore: update preview runners by @arendjr in #5734
- fix(lint/useRegexLiterals): handle useless escapes by @Conaclos in #5716
- fix(lint/useNamingConvention): ignore declarations in external modules by @Conaclos in #5741
- chore: add bronze sponsor and alt text by @ematipico in #5744
- fix(cli): fix the link "Biome in IDE" docs in the "Setup an editor extension" CLI doc by @tyndria in #5746
- feat(biome_glob): add NormalizedGlob by @Conaclos in #5742
- chore: update panic error message by @ematipico in #5748
- feat(type_info): parse literals to value for checking equality by @siketyan in #5737
- chore: update contact method in CODE_OF_CONDUCT.md by @dyc3 in #5752
- feat(noExplicitType): cover
constexported variables by @ematipico in #5684 - refactor(core): don't ignore
node_modulesby @ematipico in #5760 - chore: fix rules check for actions by @ematipico in #5751
- fix(cli): only format valid files and skip errors with
--skip-errorsby @unvalley in #5719 - feat(useExplicitType): cover function parameters by @ematipico in #5757
- feat(lint): implement
useIterableCallbackReturnrule by @mdevils in #5754 - test(lint): auto enable module graph for rules in the project domain by @siketyan in #5753
- fix(lint): use correct
node:processimport by @nhedger in #5779 - feat(core): suppression reason by @ematipico in #5776
- fix(core): use deterministic ordering by @ematipico in #5775
- fix(biome_string_case): don't compare numbers with non-numbers by @Conaclos in #5787
- docs(assist/organizeImports): update docs with last changes by @Conaclos in #5602
- chore(deps): update dependency eslint to v9.25.1 by @renovate in #5788
- chore(deps): update @biomejs packages by @renovate in #5789
- fix(lint): respect preferred JSX quote style and escape conflicting inner quotes in class attributes by @Hideyasu-Ozawa in #5781
- chore(deps): update github-actions by @renovate in #5790
- feat(workspace): add
debug_type_infoby @ematipico in #5786 - refactor(biome_string_case): minor change of Collator abstraction by @Conaclos in #5791
- feat(migrate-eslint): migrate useImportType ESLint option by @Conaclos in #5792
- refactor: revisit type-related data structures by @arendjr in #5777
- fix(core): fix incorrect JSDoc detection by @arendjr in #5793
- fix(lsp): related diagnostics by @ematipico in #5769
- chore: type formatting tweaks by @arendjr in #5800
- ci: fix binary path when building on Windows by @siketyan in #5804
- fix(biome_cli): use workspace API to update and format config files by @bushuai in #5795
- chore: rename
--skip-errorsto--skip-parse-errorby @unvalley in #5805 - ci: use depot runners for windows by @ematipico in #5806
- fix(core): diagnostics and scan kind by @ematipico in #5794
- ci: use GitHub hosted runner for publish workflows by @siketyan in #5808
- feat(core): add
ModuleIdtoResolvedTypeIdby @arendjr in #5809
New Contributors
- @akx made their first contribution in #5479
- @Xstoudi made their first contribution in #5485
- @jelly made their first contribution in #5528
- @thejackshelton made their first contribution in #5535
- @bedros-p made their first contribution in #5509
- @mdevils made their first contribution in #5578
- @amasotti made their first contribution in #5642
- @hanseltime made their first contribution in #5619
- @lixiaoyan made their first contribution in #5690
- @tyndria made their first contribution in #5746
- @Hideyasu-Ozawa made their first contribution in #5781
Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/js-api@v0.8.0-beta.1...@biomejs/biome@2.0.0-beta.2