From a03de648cfaf53fb4ada0aea3c476a6672cac140 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 8 Mar 2024 13:30:37 +0000 Subject: [PATCH] release: 1.6.0 (#1969) Co-authored-by: Arend van Beelen jr. Co-authored-by: Victorien Elvinger Co-authored-by: Superchupu <53496941+SuperchupuDev@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/01_formatter_bug.yml | 2 +- .github/ISSUE_TEMPLATE/02_lint_bug.yml | 2 +- CHANGELOG.md | 57 +- CONTRIBUTING.md | 11 +- Cargo.lock | 80 +- Cargo.toml | 80 +- crates/biome_analyze/Cargo.toml | 2 +- crates/biome_aria/Cargo.toml | 2 +- crates/biome_aria_metadata/Cargo.toml | 2 +- .../src/execute/process_file/check.rs | 12 +- .../applies_organize_imports.snap | 2 +- .../main_commands_check/apply_suggested.snap | 2 +- .../main_commands_check/check_help.snap | 4 +- .../fs_files_ignore_symlink.snap | 2 +- ...should_organize_imports_diff_on_check.snap | 2 +- .../snapshots/main_commands_ci/ci_help.snap | 4 +- .../main_commands_format/format_help.snap | 4 +- .../with_linter_configuration.snap | 4 +- .../incorrect_rule_name.snap | 11 + crates/biome_console/Cargo.toml | 2 +- crates/biome_control_flow/Cargo.toml | 2 +- crates/biome_css_analyze/Cargo.toml | 2 +- crates/biome_css_factory/Cargo.toml | 2 +- crates/biome_css_formatter/Cargo.toml | 2 +- crates/biome_css_parser/Cargo.toml | 2 +- crates/biome_css_syntax/Cargo.toml | 2 +- crates/biome_deserialize/Cargo.toml | 2 +- crates/biome_deserialize_macros/Cargo.toml | 2 +- crates/biome_diagnostics/Cargo.toml | 2 +- .../biome_diagnostics_categories/Cargo.toml | 2 +- .../src/categories.rs | 39 +- crates/biome_diagnostics_macros/Cargo.toml | 2 +- crates/biome_formatter/Cargo.toml | 2 +- crates/biome_fs/Cargo.toml | 2 +- crates/biome_grit_factory/Cargo.toml | 2 +- crates/biome_grit_syntax/Cargo.toml | 2 +- crates/biome_html_factory/Cargo.toml | 2 +- crates/biome_html_syntax/Cargo.toml | 2 +- crates/biome_js_analyze/Cargo.toml | 2 +- .../src/analyzers/complexity.rs | 4 + .../no_empty_type_parameters.rs | 0 .../no_useless_lone_block_statements.rs | 2 +- .../src/analyzers/correctness.rs | 2 + .../no_unused_private_class_members.rs | 0 .../biome_js_analyze/src/analyzers/nursery.rs | 20 - .../src/analyzers/nursery/no_barrel_file.rs | 2 +- .../nursery/no_duplicate_test_hooks.rs | 2 +- .../no_excessive_nested_test_suites.rs | 2 +- .../analyzers/nursery/no_exports_in_test.rs | 2 +- .../src/analyzers/nursery/no_focused_tests.rs | 2 +- .../analyzers/nursery/no_namespace_import.rs | 2 +- .../nursery/no_restricted_imports.rs | 2 +- .../src/analyzers/nursery/no_skipped_tests.rs | 2 +- .../nursery/no_undeclared_dependencies.rs | 2 +- .../nursery/use_grouped_type_import.rs | 154 - .../nursery/use_node_assert_strict.rs | 2 +- .../biome_js_analyze/src/analyzers/style.rs | 8 + .../use_consistent_array_type.rs | 0 .../use_filenaming_convention.rs | 0 .../use_nodejs_import_protocol.rs | 2 +- .../style/use_shorthand_array_type.rs | 4 +- .../use_shorthand_function_type.rs | 2 +- .../src/analyzers/suspicious.rs | 4 + .../no_approximative_numeric_constant.rs | 2 +- .../no_empty_block_statements.rs | 0 .../no_misrefactored_shorthand_assign.rs | 2 +- .../{nursery => suspicious}/use_await.rs | 2 +- crates/biome_js_analyze/src/options.rs | 41 +- .../src/semantic_analyzers/correctness.rs | 4 + .../no_invalid_use_before_declaration.rs | 2 +- .../no_unused_imports.rs | 0 .../correctness/no_unused_variables.rs | 41 +- .../src/semantic_analyzers/nursery.rs | 20 - .../semantic_analyzers/nursery/no_console.rs | 2 +- .../nursery/no_re_export_all.rs | 2 +- .../nursery/no_semicolon_in_jsx.rs | 2 +- .../nursery/use_jsx_key_in_iterable.rs | 6 +- .../nursery/use_sorted_classes.rs | 2 +- .../src/semantic_analyzers/security.rs | 2 + .../{nursery => security}/no_global_eval.rs | 0 .../src/semantic_analyzers/style.rs | 8 + .../{nursery => style}/use_export_type.rs | 0 .../{nursery => style}/use_for_of.rs | 0 .../{nursery => style}/use_import_type.rs | 0 .../use_number_namespace.rs | 0 .../src/semantic_analyzers/suspicious.rs | 6 + .../no_global_assign.rs | 0 .../no_misleading_character_class.rs | 2 +- .../no_then_property.rs | 0 .../noEmptyTypeParameters/invalid.ts | 0 .../noEmptyTypeParameters/invalid.ts.snap | 4 +- .../noEmptyTypeParameters/valid.ts | 0 .../noEmptyTypeParameters/valid.ts.snap | 0 .../noUselessLoneBlockStatements/invalid.cjs | 0 .../invalid.cjs.snap | 8 +- .../invalidModule.js | 0 .../invalidModule.js.snap | 12 +- .../noUselessLoneBlockStatements/valid.cjs | 0 .../valid.cjs.snap | 0 .../validModule.js | 0 .../validModule.js.snap | 0 .../noInvalidUseBeforeDeclaration/invalid.js | 0 .../invalid.js.snap | 14 +- .../noInvalidUseBeforeDeclaration/invalid.ts | 0 .../invalid.ts.snap | 2 +- .../invalidBindingPattern.js | 0 .../invalidBindingPattern.js.snap | 14 +- .../noInvalidUseBeforeDeclaration/valid.js | 0 .../valid.js.snap | 0 .../noInvalidUseBeforeDeclaration/valid.ts | 0 .../valid.ts.snap | 0 .../validBindingPattern.js | 0 .../validBindingPattern.js.snap | 0 .../noUnusedImports/invalid.js | 0 .../noUnusedImports/invalid.js.snap | 26 +- .../noUnusedImports/invalid.jsx | 0 .../noUnusedImports/invalid.jsx.snap | 34 +- .../noUnusedImports/invalid.ts | 0 .../noUnusedImports/invalid.ts.snap | 24 +- .../noUnusedImports/issue557.ts | 0 .../noUnusedImports/issue557.ts.snap | 0 .../noUnusedImports/valid.js | 0 .../noUnusedImports/valid.js.snap | 0 .../noUnusedPrivateClassMembers/invalid.js | 0 .../invalid.js.snap | 20 +- .../noUnusedPrivateClassMembers/invalid.ts | 0 .../invalid.ts.snap | 14 +- .../noUnusedPrivateClassMembers/valid.js | 0 .../noUnusedPrivateClassMembers/valid.js.snap | 0 .../noUnusedVariables/invalidImport.ts | 3 - .../noUnusedVariables/invalidImport.ts.snap | 61 - .../noUnusedVariables/validImport.ts | 4 + .../noUnusedVariables/validImport.ts.snap | 4 + .../invalid-kebab-case.js.snap | 22 - .../nursery/useGroupedTypeImport/invalid.ts | 13 - .../useGroupedTypeImport/invalid.ts.snap | 136 - .../nursery/useGroupedTypeImport/valid.ts | 28 - .../useGroupedTypeImport/valid.ts.snap | 38 - .../noGlobalEval/invalid.js | 0 .../noGlobalEval/invalid.js.snap | 32 +- .../noGlobalEval/valid.js | 0 .../noGlobalEval/valid.js.snap | 0 .../noGlobalEval/validtest.cjs | 0 .../noGlobalEval/validtest.cjs.snap | 0 .../useConsistentArrayType/invalid.ts | 0 .../useConsistentArrayType/invalid.ts.snap | 30 +- .../invalidShorthand.options.json | 2 +- .../invalidShorthand.ts | 0 .../invalidShorthand.ts.snap | 28 +- .../useConsistentArrayType/valid.ts | 0 .../useConsistentArrayType/valid.ts.snap | 0 .../validGeneric.options.json | 2 +- .../useConsistentArrayType/validGeneric.ts | 0 .../validGeneric.ts.snap | 0 .../useExportType/invalid.ts | 0 .../useExportType/invalid.ts.snap | 14 +- .../{nursery => style}/useExportType/valid.ts | 0 .../useExportType/valid.ts.snap | 0 .../useFilenamingConvention/.valid.js | 0 .../useFilenamingConvention/.valid.js.snap | 0 .../useFilenamingConvention/INVALID.js | 0 .../useFilenamingConvention/INVALID.js.snap | 2 +- .../InvalidPascalCase.js | 0 .../InvalidPascalCase.js.snap | 2 +- .../useFilenamingConvention/ValidMyClass.js | 0 .../ValidMyClass.js.snap | 0 .../ValidPascalCase.js | 0 .../ValidPascalCase.js.snap | 0 .../ValidPascalCase.options.json | 2 +- .../_UNDERSCOREINVALID.js | 0 .../_UNDERSCOREINVALID.js.snap | 2 +- .../_underscorevalid.js | 0 .../_underscorevalid.js.snap | 0 .../useFilenamingConvention/_valid.js.snap | 0 .../filename.invalid-extension.js | 0 .../filename.invalid-extension.js.snap | 2 +- .../filename.test.invalid-extension.ts | 0 .../filename.test.invalid-extension.ts.snap | 2 +- .../invalid-kebab-case.js | 0 .../invalid-kebab-case.js.snap} | 6 +- .../invalid-kebab-case.options.json | 2 +- .../invalid-non-ascii-caf\303\251.js" | 0 .../invalid-non-ascii-caf\303\251.js.snap" | 2 +- ...nvalid-non-ascii-caf\303\251.options.json" | 2 +- .../invalidCamelCase.js | 0 .../invalidCamelCase.js.snap | 22 + .../invalidCamelCase.options.json | 2 +- .../invalidSTrictCase.js | 0 .../invalidSTrictCase.js.snap | 2 +- .../invalid_snake_case.js | 0 .../invalid_snake_case.js.snap | 2 +- .../invalid_snake_case.options.json | 2 +- .../malformedOptions.js | 0 .../malformedOptions.js.snap | 0 .../malformedOptions.options.json | 2 +- .../malformedOptionsEmptyFilenameCases.js | 0 ...malformedOptionsEmptyFilenameCases.js.snap | 0 ...rmedOptionsEmptyFilenameCases.options.json | 2 +- .../valid-kebab-case.js | 0 .../valid-kebab-case.js.snap | 0 .../valid-non-ascii-caf\303\251.js" | 0 .../valid-non-ascii-caf\303\251.js.snap" | 0 .../valid-non-ascii-caf\303\251.options.json" | 2 +- .../useFilenamingConvention/valid.js | 0 .../useFilenamingConvention/valid.js.snap | 0 .../useFilenamingConvention/validCamelCase.js | 0 .../validCamelCase.js.snap | 0 .../validExportedConst.js | 0 .../validExportedConst.js.snap | 0 .../validExportedConst.options.json | 2 +- .../validSTrictCase.js | 0 .../validSTrictCase.js.snap | 0 .../validSTrictCase.options.json | 2 +- .../valid_snake_case.js | 0 .../valid_snake_case.js.snap | 0 .../{nursery => style}/useForOf/invalid.js | 0 .../useForOf/invalid.js.snap | 38 +- .../{nursery => style}/useForOf/valid.js | 0 .../{nursery => style}/useForOf/valid.js.snap | 0 .../useImportType/invalid-combined.ts | 0 .../useImportType/invalid-combined.ts.snap | 14 +- .../useImportType/invalid-default-imports.ts | 0 .../invalid-default-imports.ts.snap | 2 +- .../useImportType/invalid-named-imports.ts | 0 .../invalid-named-imports.ts.snap | 6 +- .../invalid-namesapce-imports.ts | 0 .../invalid-namesapce-imports.ts.snap | 2 +- .../useImportType/valid-combined.ts | 0 .../useImportType/valid-combined.ts.snap | 0 .../useImportType/valid-default-imports.ts | 0 .../valid-default-imports.ts.snap | 0 .../useImportType/valid-named-imports.ts | 0 .../useImportType/valid-named-imports.ts.snap | 0 .../useImportType/valid-namespace-imports.ts | 0 .../valid-namespace-imports.ts.snap | 0 .../useImportType/valid-unused.ts | 0 .../useImportType/valid-unused.ts.snap | 0 .../useNodejsImportProtocol/invalid.js | 0 .../useNodejsImportProtocol/invalid.js.snap | 118 +- .../useNodejsImportProtocol/valid.js | 0 .../useNodejsImportProtocol/valid.js.snap | 0 .../useNumberNamespace/invalid.js | 0 .../useNumberNamespace/invalid.js.snap | 80 +- .../invalid_properties_value_shorthand.js | 0 ...invalid_properties_value_shorthand.js.snap | 2 +- .../useNumberNamespace/valid.js | 0 .../useNumberNamespace/valid.js.snap | 0 .../useShorthandFunctionType/invalid.ts | 0 .../useShorthandFunctionType/invalid.ts.snap | 16 +- .../useShorthandFunctionType/valid.ts | 0 .../useShorthandFunctionType/valid.ts.snap | 4 +- .../noEmptyBlockStatements/invalid.js | 0 .../noEmptyBlockStatements/invalid.js.snap | 36 +- .../noEmptyBlockStatements/invalid.ts | 0 .../noEmptyBlockStatements/invalid.ts.snap | 36 +- .../noEmptyBlockStatements/valid.cjs | 2 +- .../noEmptyBlockStatements/valid.cjs.snap | 2 +- .../noEmptyBlockStatements/valid.js | 2 +- .../noEmptyBlockStatements/valid.js.snap | 2 +- .../noEmptyBlockStatements/valid.ts | 2 +- .../noEmptyBlockStatements/valid.ts.snap | 2 +- .../noGlobalAssign/invalid.js | 0 .../noGlobalAssign/invalid.js.snap | 18 +- .../noGlobalAssign/valid.js | 0 .../noGlobalAssign/valid.js.snap | 0 .../noMisleadingCharacterClass/invalid.js | 0 .../invalid.js.snap | 146 +- .../noMisleadingCharacterClass/valid.js | 0 .../noMisleadingCharacterClass/valid.js.snap | 0 .../noThenProperty/invalid.js | 0 .../noThenProperty/invalid.js.snap | 132 +- .../noThenProperty/valid.js | 0 .../noThenProperty/valid.js.snap | 0 .../useAwait/invalid.js | 0 .../useAwait/invalid.js.snap | 26 +- .../{nursery => suspicious}/useAwait/valid.js | 0 .../useAwait/valid.js.snap | 0 crates/biome_js_factory/Cargo.toml | 2 +- crates/biome_js_formatter/Cargo.toml | 2 +- crates/biome_js_parser/Cargo.toml | 2 +- crates/biome_js_semantic/Cargo.toml | 2 +- crates/biome_js_syntax/Cargo.toml | 2 +- crates/biome_js_transform/Cargo.toml | 2 +- crates/biome_json_analyze/Cargo.toml | 2 +- crates/biome_json_factory/Cargo.toml | 2 +- crates/biome_json_formatter/Cargo.toml | 2 +- crates/biome_json_parser/Cargo.toml | 2 +- crates/biome_json_syntax/Cargo.toml | 2 +- crates/biome_markup/Cargo.toml | 2 +- crates/biome_parser/Cargo.toml | 2 +- crates/biome_rowan/Cargo.toml | 2 +- .../biome_service/src/configuration/json.rs | 8 +- .../src/configuration/linter/rules.rs | 1315 ++++---- crates/biome_service/src/file_handlers/vue.rs | 2 +- crates/biome_suppression/Cargo.toml | 2 +- crates/biome_text_edit/Cargo.toml | 2 +- crates/biome_text_size/Cargo.toml | 2 +- crates/biome_unicode_table/Cargo.toml | 2 +- package.json | 6 +- .../@biomejs/backend-jsonrpc/src/workspace.ts | 263 +- packages/@biomejs/biome/README.md | 2 +- .../@biomejs/biome/configuration_schema.json | 275 +- packages/@biomejs/biome/package.json | 2 +- website/astro.config.ts | 1 - .../assets/blog/biome-v1-6/astro-linter.png | Bin 0 -> 141021 bytes .../assets/blog/biome-v1-6/svelte-linter.png | Bin 0 -> 147723 bytes .../src/assets/blog/biome-v1-6/vue-linter.png | Bin 0 -> 148542 bytes website/src/components/BlogPostInfo.astro | 2 +- .../components/generated/NumberOfRules.astro | 2 +- .../generated/RecommendedRules.astro | 14 + website/src/content/blog/biome-v1-5.md | 2 +- website/src/content/blog/biome-v1-6.mdx | 285 ++ .../content/docs/guides/getting-started.mdx | 23 +- .../content/docs/guides/how-biome-works.mdx | 9 +- website/src/content/docs/index.mdx | 2 +- .../src/content/docs/internals/changelog.md | 57 +- .../docs/internals/language-support.mdx | 76 +- .../docs/ja/guides/getting-started.mdx | 2 +- .../src/content/docs/linter/rules-sources.mdx | 21 +- .../src/content/docs/linter/rules/index.mdx | 43 +- .../no-approximative-numeric-constant.md | 8 +- .../docs/linter/rules/no-barrel-file.md | 6 +- .../content/docs/linter/rules/no-console.md | 6 +- .../linter/rules/no-duplicate-test-hooks.md | 6 +- .../linter/rules/no-empty-block-statements.md | 12 +- .../linter/rules/no-empty-type-parameters.md | 10 +- .../rules/no-excessive-nested-test-suites.md | 6 +- .../docs/linter/rules/no-exports-in-test.md | 6 +- .../docs/linter/rules/no-focused-tests.md | 6 +- .../docs/linter/rules/no-global-assign.md | 12 +- .../docs/linter/rules/no-global-eval.md | 14 +- .../no-invalid-use-before-declaration.md | 16 +- .../rules/no-misleading-character-class.md | 30 +- .../no-misrefactored-shorthand-assign.md | 10 +- .../docs/linter/rules/no-namespace-import.md | 6 +- .../docs/linter/rules/no-re-export-all.md | 6 +- .../linter/rules/no-restricted-imports.md | 6 +- .../docs/linter/rules/no-semicolon-in-jsx.md | 6 +- .../docs/linter/rules/no-skipped-tests.md | 6 +- .../docs/linter/rules/no-then-property.md | 20 +- .../rules/no-undeclared-dependencies.md | 6 +- .../docs/linter/rules/no-unused-imports.md | 14 +- .../rules/no-unused-private-class-members.md | 12 +- .../docs/linter/rules/no-unused-variables.md | 20 +- .../rules/no-useless-lone-block-statements.md | 14 +- .../content/docs/linter/rules/use-await.md | 10 +- .../linter/rules/use-consistent-array-type.md | 12 +- .../docs/linter/rules/use-export-type.md | 14 +- .../linter/rules/use-filenaming-convention.md | 6 +- .../content/docs/linter/rules/use-for-of.md | 8 +- .../linter/rules/use-grouped-type-import.md | 102 - .../docs/linter/rules/use-import-type.md | 10 +- .../linter/rules/use-jsx-key-in-iterable.md | 29 +- .../linter/rules/use-node-assert-strict.md | 6 +- .../rules/use-nodejs-import-protocol.md | 18 +- .../docs/linter/rules/use-number-namespace.md | 16 +- .../linter/rules/use-shorthand-array-type.md | 2 - .../rules/use-shorthand-function-type.md | 14 +- .../docs/linter/rules/use-sorted-classes.md | 6 +- .../docs/pt-br/guides/getting-started.mdx | 2 +- website/src/content/docs/reference/cli.mdx | 594 ++-- .../content/docs/reference/configuration.mdx | 4 +- .../docs/zh-cn/guides/getting-started.mdx | 2 +- .../docs/zh-cn/reference/configuration.mdx | 8 +- website/src/layouts/Blog.astro | 2 + .../src/pages/schemas/0.1.0/schema.json.js | 4 +- .../src/pages/schemas/1.0.0/schema.json.js | 4 +- .../src/pages/schemas/1.1.0/schema.json.js | 4 +- .../src/pages/schemas/1.1.2/schema.json.js | 4 +- .../src/pages/schemas/1.2.0/schema.json.js | 4 +- .../src/pages/schemas/1.2.1/schema.json.js | 4 +- .../src/pages/schemas/1.6.0/schema.json.js | 2916 +++++++++++++++++ website/src/styles/_card.scss | 7 +- 373 files changed, 5693 insertions(+), 2902 deletions(-) rename crates/biome_js_analyze/src/analyzers/{nursery => complexity}/no_empty_type_parameters.rs (100%) rename crates/biome_js_analyze/src/analyzers/{nursery => complexity}/no_useless_lone_block_statements.rs (99%) rename crates/biome_js_analyze/src/analyzers/{nursery => correctness}/no_unused_private_class_members.rs (100%) delete mode 100644 crates/biome_js_analyze/src/analyzers/nursery/use_grouped_type_import.rs rename crates/biome_js_analyze/src/analyzers/{nursery => style}/use_consistent_array_type.rs (100%) rename crates/biome_js_analyze/src/analyzers/{nursery => style}/use_filenaming_convention.rs (100%) rename crates/biome_js_analyze/src/analyzers/{nursery => style}/use_nodejs_import_protocol.rs (99%) rename crates/biome_js_analyze/src/analyzers/{nursery => style}/use_shorthand_function_type.rs (99%) rename crates/biome_js_analyze/src/analyzers/{nursery => suspicious}/no_empty_block_statements.rs (100%) rename crates/biome_js_analyze/src/analyzers/{nursery => suspicious}/use_await.rs (99%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_invalid_use_before_declaration.rs (99%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_unused_imports.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => security}/no_global_eval.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => style}/use_export_type.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => style}/use_for_of.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => style}/use_import_type.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => style}/use_number_namespace.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => suspicious}/no_global_assign.rs (100%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => suspicious}/no_misleading_character_class.rs (99%) rename crates/biome_js_analyze/src/semantic_analyzers/{nursery => suspicious}/no_then_property.rs (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noEmptyTypeParameters/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noEmptyTypeParameters/invalid.ts.snap (85%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noEmptyTypeParameters/valid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noEmptyTypeParameters/valid.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/invalid.cjs (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/invalid.cjs.snap (78%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/invalidModule.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/invalidModule.js.snap (78%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/valid.cjs (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/valid.cjs.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/validModule.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => complexity}/noUselessLoneBlockStatements/validModule.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalid.js.snap (76%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalid.ts.snap (76%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalidBindingPattern.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/invalidBindingPattern.js.snap (76%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/valid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/valid.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/validBindingPattern.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noInvalidUseBeforeDeclaration/validBindingPattern.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.js.snap (79%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.jsx (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.jsx.snap (81%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/invalid.ts.snap (76%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/issue557.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/issue557.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedImports/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/invalid.js.snap (75%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/invalid.ts.snap (76%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => correctness}/noUnusedPrivateClassMembers/valid.js.snap (100%) delete mode 100644 crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/invalidImport.ts delete mode 100644 crates/biome_js_analyze/tests/specs/correctness/noUnusedVariables/invalidImport.ts.snap delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/invalid-kebab-case.js.snap delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useGroupedTypeImport/invalid.ts delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useGroupedTypeImport/invalid.ts.snap delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useGroupedTypeImport/valid.ts delete mode 100644 crates/biome_js_analyze/tests/specs/nursery/useGroupedTypeImport/valid.ts.snap rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/invalid.js.snap (81%) rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/validtest.cjs (100%) rename crates/biome_js_analyze/tests/specs/{nursery => security}/noGlobalEval/validtest.cjs.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/invalid.ts.snap (84%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/invalidShorthand.options.json (90%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/invalidShorthand.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/invalidShorthand.ts.snap (82%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/valid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/valid.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/validGeneric.options.json (90%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/validGeneric.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useConsistentArrayType/validGeneric.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useExportType/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useExportType/invalid.ts.snap (90%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useExportType/valid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useExportType/valid.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/.valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/.valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/INVALID.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/INVALID.js.snap (72%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/InvalidPascalCase.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/InvalidPascalCase.js.snap (69%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/ValidMyClass.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/ValidMyClass.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/ValidPascalCase.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/ValidPascalCase.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/ValidPascalCase.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/_UNDERSCOREINVALID.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/_UNDERSCOREINVALID.js.snap (66%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/_underscorevalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/_underscorevalid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/_valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/filename.invalid-extension.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/filename.invalid-extension.js.snap (57%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/filename.test.invalid-extension.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/filename.test.invalid-extension.ts.snap (59%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalid-kebab-case.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery/useFilenamingConvention/invalidCamelCase.js.snap => style/useFilenamingConvention/invalid-kebab-case.js.snap} (73%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalid-kebab-case.options.json (93%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/invalid-non-ascii-caf\303\251.js" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/invalid-non-ascii-caf\303\251.js" (100%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/invalid-non-ascii-caf\303\251.js.snap" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/invalid-non-ascii-caf\303\251.js.snap" (66%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/invalid-non-ascii-caf\303\251.options.json" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/invalid-non-ascii-caf\303\251.options.json" (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalidCamelCase.js (100%) create mode 100644 crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/invalidCamelCase.js.snap rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalidCamelCase.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalidSTrictCase.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalidSTrictCase.js.snap (70%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalid_snake_case.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalid_snake_case.js.snap (59%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/invalid_snake_case.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptions.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptions.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptions.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptionsEmptyFilenameCases.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptionsEmptyFilenameCases.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/malformedOptionsEmptyFilenameCases.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid-kebab-case.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid-kebab-case.js.snap (100%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/valid-non-ascii-caf\303\251.js" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/valid-non-ascii-caf\303\251.js" (100%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/valid-non-ascii-caf\303\251.js.snap" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/valid-non-ascii-caf\303\251.js.snap" (100%) rename "crates/biome_js_analyze/tests/specs/nursery/useFilenamingConvention/valid-non-ascii-caf\303\251.options.json" => "crates/biome_js_analyze/tests/specs/style/useFilenamingConvention/valid-non-ascii-caf\303\251.options.json" (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validCamelCase.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validCamelCase.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validExportedConst.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validExportedConst.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validExportedConst.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validSTrictCase.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validSTrictCase.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/validSTrictCase.options.json (93%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid_snake_case.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useFilenamingConvention/valid_snake_case.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useForOf/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useForOf/invalid.js.snap (73%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useForOf/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useForOf/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-combined.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-combined.ts.snap (87%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-default-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-default-imports.ts.snap (78%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-named-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-named-imports.ts.snap (84%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-namesapce-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/invalid-namesapce-imports.ts.snap (80%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-combined.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-combined.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-default-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-default-imports.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-named-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-named-imports.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-namespace-imports.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-namespace-imports.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-unused.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useImportType/valid-unused.ts.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNodejsImportProtocol/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNodejsImportProtocol/invalid.js.snap (83%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNodejsImportProtocol/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNodejsImportProtocol/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/invalid.js.snap (79%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/invalid_properties_value_shorthand.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/invalid_properties_value_shorthand.js.snap (84%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useNumberNamespace/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useShorthandFunctionType/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useShorthandFunctionType/invalid.ts.snap (84%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useShorthandFunctionType/valid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => style}/useShorthandFunctionType/valid.ts.snap (89%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/invalid.js.snap (77%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/invalid.ts (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/invalid.ts.snap (77%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.cjs (89%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.cjs.snap (90%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.js (89%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.js.snap (90%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.ts (90%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noEmptyBlockStatements/valid.ts.snap (91%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noGlobalAssign/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noGlobalAssign/invalid.js.snap (83%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noGlobalAssign/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noGlobalAssign/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noMisleadingCharacterClass/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noMisleadingCharacterClass/invalid.js.snap (78%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noMisleadingCharacterClass/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noMisleadingCharacterClass/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noThenProperty/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noThenProperty/invalid.js.snap (83%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noThenProperty/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/noThenProperty/valid.js.snap (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/useAwait/invalid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/useAwait/invalid.js.snap (90%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/useAwait/valid.js (100%) rename crates/biome_js_analyze/tests/specs/{nursery => suspicious}/useAwait/valid.js.snap (100%) create mode 100644 website/src/assets/blog/biome-v1-6/astro-linter.png create mode 100644 website/src/assets/blog/biome-v1-6/svelte-linter.png create mode 100644 website/src/assets/blog/biome-v1-6/vue-linter.png create mode 100644 website/src/content/blog/biome-v1-6.mdx delete mode 100644 website/src/content/docs/linter/rules/use-grouped-type-import.md create mode 100644 website/src/pages/schemas/1.6.0/schema.json.js diff --git a/.github/ISSUE_TEMPLATE/01_formatter_bug.yml b/.github/ISSUE_TEMPLATE/01_formatter_bug.yml index a1481873634a..e0dbbb54e17f 100644 --- a/.github/ISSUE_TEMPLATE/01_formatter_bug.yml +++ b/.github/ISSUE_TEMPLATE/01_formatter_bug.yml @@ -15,7 +15,7 @@ body: id: environment attributes: label: Environment information - description: Run the command `biome rage` and paste its output here. Please review it, in case there are sensitive information you don't want to share. + description: Run the command `biome rage --formatter` and paste its output here. Please review it, in case there are sensitive information you don't want to share. render: bash validations: required: true diff --git a/.github/ISSUE_TEMPLATE/02_lint_bug.yml b/.github/ISSUE_TEMPLATE/02_lint_bug.yml index b3e32abd7cbb..592637aaac44 100644 --- a/.github/ISSUE_TEMPLATE/02_lint_bug.yml +++ b/.github/ISSUE_TEMPLATE/02_lint_bug.yml @@ -15,7 +15,7 @@ body: id: environment attributes: label: Environment information - description: Run the command `biome rage` and paste its output here. Please review it, in case there are sensitive information you don't want to share. + description: Run the command `biome rage --linter` and paste its output here. Please review it, in case there are sensitive information you don't want to share. render: bash validations: required: true diff --git a/CHANGELOG.md b/CHANGELOG.md index d4eb1eb7cdd3..b91b65cf5573 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ New entries must be placed in a section entitled `Unreleased`. Read our [guidelines for writing a good changelog entry](https://github.com/biomejs/biome/blob/main/CONTRIBUTING.md#changelog). -## Unreleased +## 1.6.0 (TBD) ### Analyzer @@ -22,8 +22,8 @@ our [guidelines for writing a good changelog entry](https://github.com/biomejs/b --- - import { getLocale } from "astro:i18n"; - import { Code } from "astro:components"; - + import { getLocale } from "astro:i18n"; + import { Code } from "astro:components"; + + import { getLocale } from "astro:i18n"; ---
@@ -376,6 +376,45 @@ our [guidelines for writing a good changelog entry](https://github.com/biomejs/b ### Linter +#### Promoted rules + +New rules are incubated in the nursery group. +Once stable, we promote them to a stable group. +The following rules are promoted: + +- [complexity/noEmptyTypeParameters](https://biomejs.dev/linter/rules/no-empty-type-parameters) +- [complexity/noUselessLoneBlockStatements](https://biomejs.dev/linter/rules/no-useless-lone-block-statements) +- [correctness/noInvalidUseBeforeDeclaration](https://biomejs.dev/linter/rules/no-invalid-use-before-declaration) +- [correctness/noUnusedImports](https://biomejs.dev/linter/rules/no-unused-imports) +- [correctness/noUnusedPrivateClassMembers](https://biomejs.dev/linter/rules/no-unused-private-class-members) +- [security/noGlobalEval](https://biomejs.dev/linter/rules/no-global-eval) +- [style/useConsistentArrayType](https://biomejs.dev/linter/rules/use-consistent-array-type) +- [style/useExportType](https://biomejs.dev/linter/rules/use-export-type) +- [style/useFilenamingConvention](https://biomejs.dev/linter/rules/use-filenaming-convention) +- [style/useForOf](https://biomejs.dev/linter/rules/use-for-of) +- [style/useImportType](https://biomejs.dev/linter/rules/use-import-type) +- [style/useNodejsImportProtocol](https://biomejs.dev/linter/rules/use-nodejs-import-protocol) +- [style/useNumberNamespace](https://biomejs.dev/linter/rules/use-number-namespace) +- [style/useShorthandFunctionType](https://biomejs.dev/linter/rules/use-shorthand-function-type) +- [suspicious/noEmptyBlockStatements](https://biomejs.dev/linter/rules/no-empty-block-statements) +- [suspicious/noGlobalAssign](https://biomejs.dev/linter/rules/no-global-assign) +- [suspicious/noMisleadingCharacterClass](https://biomejs.dev/linter/rules/no-misleading-character-class) +- [suspicious/noThenProperty](https://biomejs.dev/linter/rules/no-then-property) +- [suspicious/useAwait](https://biomejs.dev/linter/rules/use-await) + +Additionally, the following rules are now recommended: + +- [suspicious/noApproximativeNumericConstant](https://biomejs.dev/linter/rules/no-approximative-numeric-constant) +- [suspicious/noMisrefactoredShorthandAssign](https://biomejs.dev/linter/rules/no-misrefactored-shorthand-assign) + +#### Removed rules + +- Remove `nursery/useGroupedTypeImport`. The rule [style/useImportType](https://biomejs.dev/linter/rules/use-import-type) covers the behavior of this rule. + + Note that removing a nursery rule is not considered a breaking change according to our [semantic versioning](https://biomejs.dev/internals/versioning). + + Contributed by @Conaclos + #### New features - Add the rule [noSkippedTests](https://biomejs.dev/linter/rules/no-skipped-tests), to disallow skipped tests: @@ -427,8 +466,7 @@ our [guidelines for writing a good changelog entry](https://github.com/biomejs/b
``` -- Add partial support for `.vue` files. Biome is able to lint and fix the script block of the Vue files. Contributed by - @nhedger +- Add partial support for `.vue` files. Biome is able to lint and fix the script block of the Vue files. ```diff + ``` +- When **linting** `.astro` files, you have to add `"Astro"` to `linter.globals`, to avoid possible false positives from some lint rules. + + ```json title="biome.json" + { + "linter": { + "globals": "Astro" + } + } + ``` + +- When **linting** `.svelte` files, it's advised to turn off `useConst` to prevent compiler errors. Use the option `overrides` for that: + + ```json + { + "overrides": [ + { + "include": ["*.svelte"], + "linter": { + "rules": { + "style": { + "useConst": "off" + } + } + } + } + ] + } + ``` diff --git a/website/src/content/docs/ja/guides/getting-started.mdx b/website/src/content/docs/ja/guides/getting-started.mdx index 0a132c41aae4..1d702399d59a 100644 --- a/website/src/content/docs/ja/guides/getting-started.mdx +++ b/website/src/content/docs/ja/guides/getting-started.mdx @@ -44,7 +44,7 @@ Biomeをインストールする際には、バージョン範囲演算子を使 ```json title="biome.json" { - "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", + "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json", "organizeImports": { "enabled": false }, diff --git a/website/src/content/docs/linter/rules-sources.mdx b/website/src/content/docs/linter/rules-sources.mdx index d22f14dc1d05..e158d5936384 100644 --- a/website/src/content/docs/linter/rules-sources.mdx +++ b/website/src/content/docs/linter/rules-sources.mdx @@ -7,6 +7,7 @@ description: A page that maps lint rules from other sources to Biome - [noAccumulatingSpread](/linter/rules/no-accumulating-spread) - [noConstEnum](/linter/rules/no-const-enum) - [noDelete](/linter/rules/no-delete) +- [noEmptyTypeParameters](/linter/rules/no-empty-type-parameters) - [noGlobalIsFinite](/linter/rules/no-global-is-finite) - [noGlobalIsNan](/linter/rules/no-global-is-nan) - [noImplicitAnyLet](/linter/rules/no-implicit-any-let) @@ -15,7 +16,9 @@ description: A page that maps lint rules from other sources to Biome - [noShoutyConstants](/linter/rules/no-shouty-constants) - [noSvgWithoutTitle](/linter/rules/no-svg-without-title) - [noUnnecessaryContinue](/linter/rules/no-unnecessary-continue) +- [noUnusedImports](/linter/rules/no-unused-imports) - [noVoidTypeReturn](/linter/rules/no-void-type-return) +- [useShorthandArrayType](/linter/rules/use-shorthand-array-type) - [useSimpleNumberKeys](/linter/rules/use-simple-number-keys) - [useSimplifiedLogicExpression](/linter/rules/use-simplified-logic-expression) - [useSingleCaseStatement](/linter/rules/use-single-case-statement) @@ -57,19 +60,24 @@ Some **Biome** rules might **not** have options, compared to the original rule. | [no-dupe-keys](https://eslint.org/docs/latest/rules/no-dupe-keys) |[noDuplicateObjectKeys](/linter/rules/no-duplicate-object-keys) | | [no-duplicate-case](https://eslint.org/docs/latest/rules/no-duplicate-case) |[noDuplicateCase](/linter/rules/no-duplicate-case) | | [no-else-return](https://eslint.org/docs/latest/rules/no-else-return) |[noUselessElse](/linter/rules/no-useless-else) (inspired) | +| [no-empty](https://eslint.org/docs/latest/rules/no-empty) |[noEmptyBlockStatements](/linter/rules/no-empty-block-statements) | | [no-empty-character-class](https://eslint.org/docs/latest/rules/no-empty-character-class) |[noEmptyCharacterClassInRegex](/linter/rules/no-empty-character-class-in-regex) | | [no-empty-pattern](https://eslint.org/docs/latest/rules/no-empty-pattern) |[noEmptyPattern](/linter/rules/no-empty-pattern) | +| [no-eval](https://eslint.org/docs/latest/rules/no-eval) |[noGlobalEval](/linter/rules/no-global-eval) | | [no-ex-assign](https://eslint.org/docs/latest/rules/no-ex-assign) |[noCatchAssign](/linter/rules/no-catch-assign) | | [no-extra-boolean-cast](https://eslint.org/docs/latest/rules/no-extra-boolean-cast) |[noExtraBooleanCast](/linter/rules/no-extra-boolean-cast) | | [no-extra-label](https://eslint.org/docs/latest/rules/no-extra-label) |[noUselessLabel](/linter/rules/no-useless-label) | | [no-fallthrough](https://eslint.org/docs/latest/rules/no-fallthrough) |[noFallthroughSwitchClause](/linter/rules/no-fallthrough-switch-clause) | | [no-func-assign](https://eslint.org/docs/latest/rules/no-func-assign) |[noFunctionAssign](/linter/rules/no-function-assign) | +| [no-global-assign](https://eslint.org/docs/latest/rules/no-global-assign) |[noGlobalAssign](/linter/rules/no-global-assign) | | [no-import-assign](https://eslint.org/docs/latest/rules/no-import-assign) |[noImportAssign](/linter/rules/no-import-assign) | | [no-inner-declarations](https://eslint.org/docs/latest/rules/no-inner-declarations) |[noInnerDeclarations](/linter/rules/no-inner-declarations) | | [no-label-var](https://eslint.org/docs/latest/rules/no-label-var) |[noLabelVar](/linter/rules/no-label-var) | | [no-labels](https://eslint.org/docs/latest/rules/no-labels) |[noConfusingLabels](/linter/rules/no-confusing-labels) (inspired) | +| [no-lone-blocks](https://eslint.org/docs/latest/rules/no-lone-blocks) |[noUselessLoneBlockStatements](/linter/rules/no-useless-lone-block-statements) | | [no-lonely-if](https://eslint.org/docs/latest/rules/no-lonely-if) |[useCollapsedElseIf](/linter/rules/use-collapsed-else-if) | | [no-loss-of-precision](https://eslint.org/docs/latest/rules/no-loss-of-precision) |[noPrecisionLoss](/linter/rules/no-precision-loss) | +| [no-misleading-character-class](https://eslint.org/docs/latest/rules/no-misleading-character-class) |[noMisleadingCharacterClass](/linter/rules/no-misleading-character-class) | | [no-negated-condition](https://eslint.org/docs/latest/rules/no-negated-condition) |[noNegationElse](/linter/rules/no-negation-else) | | [no-new-native-nonconstructor](https://eslint.org/docs/latest/rules/no-new-native-nonconstructor) |[noInvalidNewBuiltin](/linter/rules/no-invalid-new-builtin) | | [no-new-symbol](https://eslint.org/docs/latest/rules/no-new-symbol) |[noNewSymbol](/linter/rules/no-new-symbol) | @@ -92,6 +100,7 @@ Some **Biome** rules might **not** have options, compared to the original rule. | [no-unsafe-negation](https://eslint.org/docs/latest/rules/no-unsafe-negation) |[noUnsafeNegation](/linter/rules/no-unsafe-negation) | | [no-unsafe-optional-chaining](https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining) |[noUnsafeOptionalChaining](/linter/rules/no-unsafe-optional-chaining) | | [no-unused-labels](https://eslint.org/docs/latest/rules/no-unused-labels) |[noUnusedLabels](/linter/rules/no-unused-labels) | +| [no-unused-private-class-members](https://eslint.org/docs/latest/rules/no-unused-private-class-members) |[noUnusedPrivateClassMembers](/linter/rules/no-unused-private-class-members) | | [no-unused-vars](https://eslint.org/docs/latest/rules/no-unused-vars) |[noUnusedVariables](/linter/rules/no-unused-variables) | | [no-useless-catch](https://eslint.org/docs/latest/rules/no-useless-catch) |[noUselessCatch](/linter/rules/no-useless-catch) | | [no-useless-rename](https://eslint.org/docs/latest/rules/no-useless-rename) |[noUselessRename](/linter/rules/no-useless-rename) | @@ -107,6 +116,7 @@ Some **Biome** rules might **not** have options, compared to the original rule. | [prefer-regex-literals](https://eslint.org/docs/latest/rules/prefer-regex-literals) |[useRegexLiterals](/linter/rules/use-regex-literals) | | [prefer-rest-params](https://eslint.org/docs/latest/rules/prefer-rest-params) |[noArguments](/linter/rules/no-arguments) (inspired) | | [prefer-template](https://eslint.org/docs/latest/rules/prefer-template) |[useTemplate](/linter/rules/use-template) | +| [require-await](https://eslint.org/docs/latest/rules/require-await) |[useAwait](/linter/rules/use-await) | | [require-yield](https://eslint.org/docs/latest/rules/require-yield) |[useYield](/linter/rules/use-yield) | | [use-isnan](https://eslint.org/docs/latest/rules/use-isnan) |[useIsNan](/linter/rules/use-is-nan) | | [valid-typeof](https://eslint.org/docs/latest/rules/valid-typeof) |[useValidTypeof](/linter/rules/use-valid-typeof) | @@ -178,8 +188,10 @@ Some **Biome** rules might **not** have options, compared to the original rule. ### eslint-plugin-typescript | eslint-plugin-typescript rule name | Biome rule name | | ---- | ---- | -| [array-type](https://typescript-eslint.io/rules/array-type) |[useShorthandArrayType](/linter/rules/use-shorthand-array-type) (inspired) | +| [array-type](https://typescript-eslint.io/rules/array-type) |[useConsistentArrayType](/linter/rules/use-consistent-array-type) | | [ban-types](https://typescript-eslint.io/rules/ban-types) |[noBannedTypes](/linter/rules/no-banned-types) (inspired) | +| [consistent-type-exports](https://typescript-eslint.io/rules/consistent-type-exports) |[useExportType](/linter/rules/use-export-type) (inspired) | +| [consistent-type-imports](https://typescript-eslint.io/rules/consistent-type-imports) |[useImportType](/linter/rules/use-import-type) (inspired) | | [naming-convention](https://typescript-eslint.io/rules/naming-convention) |[useNamingConvention](/linter/rules/use-naming-convention) (inspired) | | [no-empty-interface](https://typescript-eslint.io/rules/no-empty-interface) |[noEmptyInterface](/linter/rules/no-empty-interface) (inspired) | | [no-explicit-any](https://typescript-eslint.io/rules/no-explicit-any) |[noExplicitAny](/linter/rules/no-explicit-any) | @@ -194,19 +206,26 @@ Some **Biome** rules might **not** have options, compared to the original rule. | [no-this-alias](https://typescript-eslint.io/rules/no-this-alias) |[noUselessThisAlias](/linter/rules/no-useless-this-alias) (inspired) | | [no-unnecessary-type-constraint](https://typescript-eslint.io/rules/no-unnecessary-type-constraint) |[noUselessTypeConstraint](/linter/rules/no-useless-type-constraint) | | [no-unsafe-declaration-merging](https://typescript-eslint.io/rules/no-unsafe-declaration-merging) |[noUnsafeDeclarationMerging](/linter/rules/no-unsafe-declaration-merging) | +| [no-use-before-define](https://typescript-eslint.io/rules/no-use-before-define) |[noInvalidUseBeforeDeclaration](/linter/rules/no-invalid-use-before-declaration) | | [no-useless-constructor](https://typescript-eslint.io/rules/no-useless-constructor) |[noUselessConstructor](/linter/rules/no-useless-constructor) | | [no-useless-empty-export](https://typescript-eslint.io/rules/no-useless-empty-export) |[noUselessEmptyExport](/linter/rules/no-useless-empty-export) | | [no-useless-template-literals](https://typescript-eslint.io/rules/no-useless-template-literals) |[noUnusedTemplateLiteral](/linter/rules/no-unused-template-literal) | | [parameter-properties](https://typescript-eslint.io/rules/parameter-properties) |[noParameterProperties](/linter/rules/no-parameter-properties) (inspired) | | [prefer-as-const](https://typescript-eslint.io/rules/prefer-as-const) |[useAsConstAssertion](/linter/rules/use-as-const-assertion) | | [prefer-enum-initializers](https://typescript-eslint.io/rules/prefer-enum-initializers) |[useEnumInitializers](/linter/rules/use-enum-initializers) | +| [prefer-for-of](https://typescript-eslint.io/rules/prefer-for-of) |[useForOf](/linter/rules/use-for-of) | +| [prefer-function-type](https://typescript-eslint.io/rules/prefer-function-type) |[useShorthandFunctionType](/linter/rules/use-shorthand-function-type) | | [prefer-literal-enum-member](https://typescript-eslint.io/rules/prefer-literal-enum-member) |[useLiteralEnumMembers](/linter/rules/use-literal-enum-members) | | [prefer-namespace-keyword](https://typescript-eslint.io/rules/prefer-namespace-keyword) |[useNamespaceKeyword](/linter/rules/use-namespace-keyword) | | [prefer-optional-chain](https://typescript-eslint.io/rules/prefer-optional-chain) |[useOptionalChain](/linter/rules/use-optional-chain) | ### eslint-plugin-unicorn | eslint-plugin-unicorn rule name | Biome rule name | | ---- | ---- | +| [filename-case](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md) |[useFilenamingConvention](/linter/rules/use-filenaming-convention) (inspired) | | [no-array-for-each](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-for-each.md) |[noForEach](/linter/rules/no-for-each) (inspired) | | [no-instanceof-array](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-instanceof-array.md) |[useIsArray](/linter/rules/use-is-array) | +| [no-thenable](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-thenable.md) |[noThenProperty](/linter/rules/no-then-property) | | [no-useless-switch-case](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-switch-case.md) |[noUselessSwitchCase](/linter/rules/no-useless-switch-case) | | [prefer-array-flat-map](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-flat-map.md) |[useFlatMap](/linter/rules/use-flat-map) | +| [prefer-node-protocol](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-node-protocol.md) |[useNodejsImportProtocol](/linter/rules/use-nodejs-import-protocol) | +| [prefer-number-properties](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-number-properties.md) |[useNumberNamespace](/linter/rules/use-number-namespace) | diff --git a/website/src/content/docs/linter/rules/index.mdx b/website/src/content/docs/linter/rules/index.mdx index 60462e5e610f..715282cedc13 100644 --- a/website/src/content/docs/linter/rules/index.mdx +++ b/website/src/content/docs/linter/rules/index.mdx @@ -50,6 +50,7 @@ Rules that focus on inspecting complex code that could be simplified. | Rule name | Description | Properties | | --- | --- | --- | | [noBannedTypes](/linter/rules/no-banned-types) | Disallow primitive type aliases and misleading types. | 🔧 | +| [noEmptyTypeParameters](/linter/rules/no-empty-type-parameters) | Disallow empty type parameters in type aliases and interfaces. | | | [noExcessiveCognitiveComplexity](/linter/rules/no-excessive-cognitive-complexity) | Disallow functions that exceed a given Cognitive Complexity score. | | | [noExtraBooleanCast](/linter/rules/no-extra-boolean-cast) | Disallow unnecessary boolean casts | ⚠️ | | [noForEach](/linter/rules/no-for-each) | Prefer for...of statement instead of Array.forEach. | | @@ -61,6 +62,7 @@ Rules that focus on inspecting complex code that could be simplified. | [noUselessEmptyExport](/linter/rules/no-useless-empty-export) | Disallow empty exports that don't change anything in a module file. | 🔧 | | [noUselessFragments](/linter/rules/no-useless-fragments) | Disallow unnecessary fragments | ⚠️ | | [noUselessLabel](/linter/rules/no-useless-label) | Disallow unnecessary labels. | 🔧 | +| [noUselessLoneBlockStatements](/linter/rules/no-useless-lone-block-statements) | Disallow unnecessary nested block statements. | ⚠️ | | [noUselessRename](/linter/rules/no-useless-rename) | Disallow renaming import, export, and destructured assignments to the same name. | 🔧 | | [noUselessSwitchCase](/linter/rules/no-useless-switch-case) | Disallow useless case in switch statements. | ⚠️ | | [noUselessThisAlias](/linter/rules/no-useless-this-alias) | Disallow useless this aliasing. | 🔧 | @@ -90,6 +92,7 @@ Rules that detect code that is guaranteed to be incorrect or useless. | [noInnerDeclarations](/linter/rules/no-inner-declarations) | Disallow function and var declarations that are accessible outside their block. | | | [noInvalidConstructorSuper](/linter/rules/no-invalid-constructor-super) | Prevents the incorrect use of super() inside classes. It also checks whether a call super() is missing from classes that extends other constructors. | | | [noInvalidNewBuiltin](/linter/rules/no-invalid-new-builtin) | Disallow new operators with global non-constructor functions. | ⚠️ | +| [noInvalidUseBeforeDeclaration](/linter/rules/no-invalid-use-before-declaration) | Disallow the use of variables and function parameters before their declaration | | | [noNewSymbol](/linter/rules/no-new-symbol) | Disallow new operators with the Symbol object. | ⚠️ | | [noNonoctalDecimalEscape](/linter/rules/no-nonoctal-decimal-escape) | Disallow \8 and \9 escape sequences in string literals. | ⚠️ | | [noPrecisionLoss](/linter/rules/no-precision-loss) | Disallow literal numbers that lose precision | | @@ -104,7 +107,9 @@ Rules that detect code that is guaranteed to be incorrect or useless. | [noUnreachableSuper](/linter/rules/no-unreachable-super) | Ensures the super() constructor is called exactly once on every code path in a class constructor before this is accessed if the class has a superclass | | | [noUnsafeFinally](/linter/rules/no-unsafe-finally) | Disallow control flow statements in finally blocks. | | | [noUnsafeOptionalChaining](/linter/rules/no-unsafe-optional-chaining) | Disallow the use of optional chaining in contexts where the undefined value is not allowed. | | +| [noUnusedImports](/linter/rules/no-unused-imports) | Disallow unused imports. | 🔧 | | [noUnusedLabels](/linter/rules/no-unused-labels) | Disallow unused labels. | ⚠️ | +| [noUnusedPrivateClassMembers](/linter/rules/no-unused-private-class-members) | Disallow unused private class members | ⚠️ | | [noUnusedVariables](/linter/rules/no-unused-variables) | Disallow unused variables. | ⚠️ | | [noVoidElementsWithChildren](/linter/rules/no-void-elements-with-children) | This rules prevents void elements (AKA self-closing elements) from having children. | ⚠️ | | [noVoidTypeReturn](/linter/rules/no-void-type-return) | Disallow returning a value from a function with the return type 'void' | | @@ -129,6 +134,7 @@ Rules that detect potential security flaws. | --- | --- | --- | | [noDangerouslySetInnerHtml](/linter/rules/no-dangerously-set-inner-html) | Prevent the usage of dangerous JSX props | | | [noDangerouslySetInnerHtmlWithChildren](/linter/rules/no-dangerously-set-inner-html-with-children) | Report when a DOM element or a component uses both children and dangerouslySetInnerHTML prop. | | +| [noGlobalEval](/linter/rules/no-global-eval) | Disallow the use of global eval(). | | ## Style @@ -153,17 +159,25 @@ Rules enforcing a consistent and idiomatic way of writing your code. | [useAsConstAssertion](/linter/rules/use-as-const-assertion) | Enforce the use of as const over literal type and type annotation. | 🔧 | | [useBlockStatements](/linter/rules/use-block-statements) | Requires following curly brace conventions. | ⚠️ | | [useCollapsedElseIf](/linter/rules/use-collapsed-else-if) | Enforce using else if instead of nested if in else clauses. | 🔧 | +| [useConsistentArrayType](/linter/rules/use-consistent-array-type) | Require consistently using either T[] or Array<T> | ⚠️ | | [useConst](/linter/rules/use-const) | Require const declarations for variables that are never reassigned after declared. | 🔧 | | [useDefaultParameterLast](/linter/rules/use-default-parameter-last) | Enforce default function parameters and optional function parameters to be last. | ⚠️ | | [useEnumInitializers](/linter/rules/use-enum-initializers) | Require that each enum member value be explicitly initialized. | 🔧 | | [useExponentiationOperator](/linter/rules/use-exponentiation-operator) | Disallow the use of Math.pow in favor of the ** operator. | ⚠️ | +| [useExportType](/linter/rules/use-export-type) | Promotes the use of export type for types. | 🔧 | +| [useFilenamingConvention](/linter/rules/use-filenaming-convention) | Enforce naming conventions for JavaScript and TypeScript filenames. | | +| [useForOf](/linter/rules/use-for-of) | This rule recommends a for-of loop when in a for loop, the index used to extract an item from the iterated array. | | | [useFragmentSyntax](/linter/rules/use-fragment-syntax) | This rule enforces the use of <>...</> over <Fragment>...</Fragment>. | ⚠️ | +| [useImportType](/linter/rules/use-import-type) | Promotes the use of import type for types. | 🔧 | | [useLiteralEnumMembers](/linter/rules/use-literal-enum-members) | Require all enum members to be literal values. | | | [useNamingConvention](/linter/rules/use-naming-convention) | Enforce naming conventions for everything across a codebase. | 🔧 | +| [useNodejsImportProtocol](/linter/rules/use-nodejs-import-protocol) | Enforces using the node: protocol for Node.js builtin modules. | ⚠️ | +| [useNumberNamespace](/linter/rules/use-number-namespace) | Use the Number properties instead of global ones. | ⚠️ | | [useNumericLiterals](/linter/rules/use-numeric-literals) | Disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals | ⚠️ | | [useSelfClosingElements](/linter/rules/use-self-closing-elements) | Prevent extra closing tags for components without children | ⚠️ | | [useShorthandArrayType](/linter/rules/use-shorthand-array-type) | When expressing array types, this rule promotes the usage of T[] shorthand instead of Array<T>. | ⚠️ | | [useShorthandAssign](/linter/rules/use-shorthand-assign) | Require assignment operator shorthand where possible. | ⚠️ | +| [useShorthandFunctionType](/linter/rules/use-shorthand-function-type) | Enforce using function types instead of object type with call signatures. | 🔧 | | [useSingleCaseStatement](/linter/rules/use-single-case-statement) | Enforces switch clauses have a single statement, emits a quick fix wrapping the statements in a block. | ⚠️ | | [useSingleVarDeclarator](/linter/rules/use-single-var-declarator) | Disallow multiple variable declarations in the same variable statement | ⚠️ | | [useTemplate](/linter/rules/use-template) | Prefer template literals over string concatenation. | ⚠️ | @@ -174,7 +188,7 @@ Rules enforcing a consistent and idiomatic way of writing your code. Rules that detect code that is likely to be incorrect or useless. | Rule name | Description | Properties | | --- | --- | --- | -| [noApproximativeNumericConstant](/linter/rules/no-approximative-numeric-constant) | Use standard constants instead of approximated literals. | ⚠️ | +| [noApproximativeNumericConstant](/linter/rules/no-approximative-numeric-constant) | Use standard constants instead of approximated literals. | ⚠️ | | [noArrayIndexKey](/linter/rules/no-array-index-key) | Discourage the usage of Array index in keys. | | | [noAssignInExpressions](/linter/rules/no-assign-in-expressions) | Disallow assignments in expressions. | | | [noAsyncPromiseExecutor](/linter/rules/no-async-promise-executor) | Disallows using an async function as a Promise executor. | | @@ -194,26 +208,31 @@ Rules that detect code that is likely to be incorrect or useless. | [noDuplicateJsxProps](/linter/rules/no-duplicate-jsx-props) | Prevents JSX properties to be assigned multiple times. | | | [noDuplicateObjectKeys](/linter/rules/no-duplicate-object-keys) | Prevents object literals having more than one property declaration for the same name. | ⚠️ | | [noDuplicateParameters](/linter/rules/no-duplicate-parameters) | Disallow duplicate function parameter name. | | +| [noEmptyBlockStatements](/linter/rules/no-empty-block-statements) | Disallow empty block statements and static blocks. | | | [noEmptyInterface](/linter/rules/no-empty-interface) | Disallow the declaration of empty interfaces. | 🔧 | | [noExplicitAny](/linter/rules/no-explicit-any) | Disallow the any type usage. | | | [noExtraNonNullAssertion](/linter/rules/no-extra-non-null-assertion) | Prevents the wrong usage of the non-null assertion operator (!) in TypeScript files. | 🔧 | | [noFallthroughSwitchClause](/linter/rules/no-fallthrough-switch-clause) | Disallow fallthrough of switch clauses. | | | [noFunctionAssign](/linter/rules/no-function-assign) | Disallow reassigning function declarations. | | +| [noGlobalAssign](/linter/rules/no-global-assign) | Disallow assignments to native objects and read-only global variables. | | | [noGlobalIsFinite](/linter/rules/no-global-is-finite) | Use Number.isFinite instead of global isFinite. | ⚠️ | | [noGlobalIsNan](/linter/rules/no-global-is-nan) | Use Number.isNaN instead of global isNaN. | ⚠️ | | [noImplicitAnyLet](/linter/rules/no-implicit-any-let) | Disallow use of implicit any type on variable declarations. | | | [noImportAssign](/linter/rules/no-import-assign) | Disallow assigning to imported bindings | | | [noLabelVar](/linter/rules/no-label-var) | Disallow labels that share a name with a variable | | +| [noMisleadingCharacterClass](/linter/rules/no-misleading-character-class) | Disallow characters made with multiple code points in character class syntax. | 🔧 | | [noMisleadingInstantiator](/linter/rules/no-misleading-instantiator) | Enforce proper usage of new and constructor. | | -| [noMisrefactoredShorthandAssign](/linter/rules/no-misrefactored-shorthand-assign) | Disallow shorthand assign when variable appears on both sides. | ⚠️ | +| [noMisrefactoredShorthandAssign](/linter/rules/no-misrefactored-shorthand-assign) | Disallow shorthand assign when variable appears on both sides. | ⚠️ | | [noPrototypeBuiltins](/linter/rules/no-prototype-builtins) | Disallow direct use of Object.prototype builtins. | | | [noRedeclare](/linter/rules/no-redeclare) | Disallow variable, function, class, and type redeclarations in the same scope. | | | [noRedundantUseStrict](/linter/rules/no-redundant-use-strict) | Prevents from having redundant "use strict". | 🔧 | | [noSelfCompare](/linter/rules/no-self-compare) | Disallow comparisons where both sides are exactly the same. | | | [noShadowRestrictedNames](/linter/rules/no-shadow-restricted-names) | Disallow identifiers from shadowing restricted names. | | | [noSparseArray](/linter/rules/no-sparse-array) | Disallow sparse arrays | ⚠️ | +| [noThenProperty](/linter/rules/no-then-property) | Disallow then property. | | | [noUnsafeDeclarationMerging](/linter/rules/no-unsafe-declaration-merging) | Disallow unsafe declaration merging between interfaces and classes. | | | [noUnsafeNegation](/linter/rules/no-unsafe-negation) | Disallow using unsafe negation. | ⚠️ | +| [useAwait](/linter/rules/use-await) | Ensure async functions utilize await. | | | [useDefaultSwitchClauseLast](/linter/rules/use-default-switch-clause-last) | Enforce default clauses in switch statements to be last | | | [useGetterReturn](/linter/rules/use-getter-return) | Enforce get methods to always return a value. | | | [useIsArray](/linter/rules/use-is-array) | Use Array.isArray() instead of instanceof Array. | ⚠️ | @@ -236,38 +255,18 @@ Rules that belong to this group are not subject to semantic versionconsole. | ⚠️ | | [noDuplicateJsonKeys](/linter/rules/no-duplicate-json-keys) | Disallow two keys with the same name inside a JSON object. | | | [noDuplicateTestHooks](/linter/rules/no-duplicate-test-hooks) | A describe block should not contain duplicate hooks. | | -| [noEmptyBlockStatements](/linter/rules/no-empty-block-statements) | Disallow empty block statements and static blocks. | | -| [noEmptyTypeParameters](/linter/rules/no-empty-type-parameters) | Disallow empty type parameters in type aliases and interfaces. | | | [noExcessiveNestedTestSuites](/linter/rules/no-excessive-nested-test-suites) | This rule enforces a maximum depth to nested describe() in test files. | | | [noExportsInTest](/linter/rules/no-exports-in-test) | Disallow using export or module.exports in files containing tests | | | [noFocusedTests](/linter/rules/no-focused-tests) | Disallow focused tests. | ⚠️ | -| [noGlobalAssign](/linter/rules/no-global-assign) | Disallow assignments to native objects and read-only global variables. | | -| [noGlobalEval](/linter/rules/no-global-eval) | Disallow the use of global eval(). | | -| [noInvalidUseBeforeDeclaration](/linter/rules/no-invalid-use-before-declaration) | Disallow the use of variables and function parameters before their declaration | | -| [noMisleadingCharacterClass](/linter/rules/no-misleading-character-class) | Disallow characters made with multiple code points in character class syntax. | 🔧 | | [noNamespaceImport](/linter/rules/no-namespace-import) | Disallow the use of namespace imports. | | | [noNodejsModules](/linter/rules/no-nodejs-modules) | Forbid the use of Node.js builtin modules. | | | [noReExportAll](/linter/rules/no-re-export-all) | Avoid re-export all. | | | [noRestrictedImports](/linter/rules/no-restricted-imports) | Disallow specified modules when loaded by import or require. | | | [noSemicolonInJsx](/linter/rules/no-semicolon-in-jsx) | It detects possible "wrong" semicolons inside JSX elements. | | | [noSkippedTests](/linter/rules/no-skipped-tests) | Disallow disabled tests. | ⚠️ | -| [noThenProperty](/linter/rules/no-then-property) | Disallow then property. | | | [noUndeclaredDependencies](/linter/rules/no-undeclared-dependencies) | Disallow the use of dependencies that aren't specified in the package.json. | | -| [noUnusedImports](/linter/rules/no-unused-imports) | Disallow unused imports. | 🔧 | -| [noUnusedPrivateClassMembers](/linter/rules/no-unused-private-class-members) | Disallow unused private class members | ⚠️ | -| [noUselessLoneBlockStatements](/linter/rules/no-useless-lone-block-statements) | Disallow unnecessary nested block statements. | ⚠️ | | [noUselessTernary](/linter/rules/no-useless-ternary) | Disallow ternary operators when simpler alternatives exist. | ⚠️ | -| [useAwait](/linter/rules/use-await) | Ensure async functions utilize await. | | -| [useConsistentArrayType](/linter/rules/use-consistent-array-type) | Require consistently using either T[] or Array<T> | ⚠️ | -| [useExportType](/linter/rules/use-export-type) | Promotes the use of export type for types. | 🔧 | -| [useFilenamingConvention](/linter/rules/use-filenaming-convention) | Enforce naming conventions for JavaScript and TypeScript filenames. | | -| [useForOf](/linter/rules/use-for-of) | This rule recommends a for-of loop when in a for loop, the index used to extract an item from the iterated array. | | -| [useGroupedTypeImport](/linter/rules/use-grouped-type-import) | Enforce the use of import type when an import only has specifiers with type qualifier. | ⚠️ | | [useImportRestrictions](/linter/rules/use-import-restrictions) | Disallows package private imports. | | -| [useImportType](/linter/rules/use-import-type) | Promotes the use of import type for types. | 🔧 | | [useJsxKeyInIterable](/linter/rules/use-jsx-key-in-iterable) | Disallow missing key props in iterators/collection literals. | | | [useNodeAssertStrict](/linter/rules/use-node-assert-strict) | Promotes the usage of node:assert/strict over node:assert. | 🔧 | -| [useNodejsImportProtocol](/linter/rules/use-nodejs-import-protocol) | Enforces using the node: protocol for Node.js builtin modules. | ⚠️ | -| [useNumberNamespace](/linter/rules/use-number-namespace) | Use the Number properties instead of global ones. | ⚠️ | -| [useShorthandFunctionType](/linter/rules/use-shorthand-function-type) | Enforce using function types instead of object type with call signatures. | 🔧 | | [useSortedClasses](/linter/rules/use-sorted-classes) | Enforce the sorting of CSS utility classes. | ⚠️ | diff --git a/website/src/content/docs/linter/rules/no-approximative-numeric-constant.md b/website/src/content/docs/linter/rules/no-approximative-numeric-constant.md index ea49b5cc28b0..9e7c2b50dcb7 100644 --- a/website/src/content/docs/linter/rules/no-approximative-numeric-constant.md +++ b/website/src/content/docs/linter/rules/no-approximative-numeric-constant.md @@ -4,6 +4,10 @@ title: noApproximativeNumericConstant (since v1.3.0) **Diagnostic Category: `lint/suspicious/noApproximativeNumericConstant`** +:::note +This rule is recommended by Biome. A diagnostic error will appear when linting your code. +::: + Source: approx_constant Use standard constants instead of approximated literals. @@ -21,7 +25,7 @@ let x = 3.141;
suspicious/noApproximativeNumericConstant.js:1:9 lint/suspicious/noApproximativeNumericConstant  FIXABLE  ━━━━━━━━━━
 
-   Prefer constants from the standard library.
+   Prefer constants from the standard library.
   
   > 1 │ let x = 3.141;
            ^^^^^
@@ -41,7 +45,7 @@ let x = 2.302;
 
 
suspicious/noApproximativeNumericConstant.js:1:9 lint/suspicious/noApproximativeNumericConstant  FIXABLE  ━━━━━━━━━━
 
-   Prefer constants from the standard library.
+   Prefer constants from the standard library.
   
   > 1 │ let x = 2.302;
            ^^^^^
diff --git a/website/src/content/docs/linter/rules/no-barrel-file.md b/website/src/content/docs/linter/rules/no-barrel-file.md
index f73590878d2c..8a8282be81a7 100644
--- a/website/src/content/docs/linter/rules/no-barrel-file.md
+++ b/website/src/content/docs/linter/rules/no-barrel-file.md
@@ -1,13 +1,9 @@
 ---
-title: noBarrelFile (not released)
+title: noBarrelFile (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noBarrelFile`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-console.md b/website/src/content/docs/linter/rules/no-console.md
index 17d00747dd92..920ba24333a3 100644
--- a/website/src/content/docs/linter/rules/no-console.md
+++ b/website/src/content/docs/linter/rules/no-console.md
@@ -1,13 +1,9 @@
 ---
-title: noConsole (not released)
+title: noConsole (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noConsole`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-duplicate-test-hooks.md b/website/src/content/docs/linter/rules/no-duplicate-test-hooks.md
index 59451ff58173..89cd0a488cc1 100644
--- a/website/src/content/docs/linter/rules/no-duplicate-test-hooks.md
+++ b/website/src/content/docs/linter/rules/no-duplicate-test-hooks.md
@@ -1,13 +1,9 @@
 ---
-title: noDuplicateTestHooks (not released)
+title: noDuplicateTestHooks (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noDuplicateTestHooks`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-empty-block-statements.md b/website/src/content/docs/linter/rules/no-empty-block-statements.md
index bfb9f8c800a7..2f3449c70a73 100644
--- a/website/src/content/docs/linter/rules/no-empty-block-statements.md
+++ b/website/src/content/docs/linter/rules/no-empty-block-statements.md
@@ -2,11 +2,7 @@
 title: noEmptyBlockStatements (since v1.3.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noEmptyBlockStatements`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/suspicious/noEmptyBlockStatements`**
 
 Source: no-empty
 
@@ -25,7 +21,7 @@ This rule ignores block statements or static blocks which contain a comment (for
 function emptyFunctionBody () {}
 ```
 
-
nursery/noEmptyBlockStatements.js:1:31 lint/nursery/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noEmptyBlockStatements.js:1:31 lint/suspicious/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━
 
    Unexpected empty block.
   
@@ -45,7 +41,7 @@ try {
 }
 ```
 
-
nursery/noEmptyBlockStatements.js:3:13 lint/nursery/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noEmptyBlockStatements.js:3:13 lint/suspicious/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━
 
    Unexpected empty block.
   
@@ -68,7 +64,7 @@ class Foo {
 }
 ```
 
-
nursery/noEmptyBlockStatements.js:2:3 lint/nursery/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noEmptyBlockStatements.js:2:3 lint/suspicious/noEmptyBlockStatements ━━━━━━━━━━━━━━━━━━━━
 
    Unexpected empty block.
   
diff --git a/website/src/content/docs/linter/rules/no-empty-type-parameters.md b/website/src/content/docs/linter/rules/no-empty-type-parameters.md
index f3a577c0044e..b859aae6a986 100644
--- a/website/src/content/docs/linter/rules/no-empty-type-parameters.md
+++ b/website/src/content/docs/linter/rules/no-empty-type-parameters.md
@@ -2,10 +2,10 @@
 title: noEmptyTypeParameters (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noEmptyTypeParameters`**
+**Diagnostic Category: `lint/complexity/noEmptyTypeParameters`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Disallow empty type parameters in type aliases and interfaces.
@@ -22,7 +22,7 @@ This rule disallows empty type parameter lists in type alias and interface decla
 interface Foo<> {}
 ```
 
-
nursery/noEmptyTypeParameters.js:1:14 lint/nursery/noEmptyTypeParameters ━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
complexity/noEmptyTypeParameters.js:1:14 lint/complexity/noEmptyTypeParameters ━━━━━━━━━━━━━━━━━━━━━
 
    Using an empty type parameter list is confusing.
   
@@ -38,7 +38,7 @@ interface Foo<> {}
 type Bar<> = {};
 ```
 
-
nursery/noEmptyTypeParameters.js:1:9 lint/nursery/noEmptyTypeParameters ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
complexity/noEmptyTypeParameters.js:1:9 lint/complexity/noEmptyTypeParameters ━━━━━━━━━━━━━━━━━━━━━━
 
    Using an empty type parameter list is confusing.
   
diff --git a/website/src/content/docs/linter/rules/no-excessive-nested-test-suites.md b/website/src/content/docs/linter/rules/no-excessive-nested-test-suites.md
index 7ea5a92de9ce..ca60175b36d7 100644
--- a/website/src/content/docs/linter/rules/no-excessive-nested-test-suites.md
+++ b/website/src/content/docs/linter/rules/no-excessive-nested-test-suites.md
@@ -1,13 +1,9 @@
 ---
-title: noExcessiveNestedTestSuites (not released)
+title: noExcessiveNestedTestSuites (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noExcessiveNestedTestSuites`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-exports-in-test.md b/website/src/content/docs/linter/rules/no-exports-in-test.md
index 75f92aafe01e..bb990ae77866 100644
--- a/website/src/content/docs/linter/rules/no-exports-in-test.md
+++ b/website/src/content/docs/linter/rules/no-exports-in-test.md
@@ -1,13 +1,9 @@
 ---
-title: noExportsInTest (not released)
+title: noExportsInTest (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noExportsInTest`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-focused-tests.md b/website/src/content/docs/linter/rules/no-focused-tests.md
index cc154fa6b71d..d30e95dcc216 100644
--- a/website/src/content/docs/linter/rules/no-focused-tests.md
+++ b/website/src/content/docs/linter/rules/no-focused-tests.md
@@ -1,13 +1,9 @@
 ---
-title: noFocusedTests (not released)
+title: noFocusedTests (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noFocusedTests`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-global-assign.md b/website/src/content/docs/linter/rules/no-global-assign.md
index 15347dab5390..1beecb35de59 100644
--- a/website/src/content/docs/linter/rules/no-global-assign.md
+++ b/website/src/content/docs/linter/rules/no-global-assign.md
@@ -2,10 +2,10 @@
 title: noGlobalAssign (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noGlobalAssign`**
+**Diagnostic Category: `lint/suspicious/noGlobalAssign`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: no-global-assign
@@ -23,7 +23,7 @@ Assigning values to these global variables can be problematic as it can override
 Object = null;
 ```
 
-
nursery/noGlobalAssign.js:1:1 lint/nursery/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noGlobalAssign.js:1:1 lint/suspicious/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    A global variable should not be reassigned.
   
@@ -39,7 +39,7 @@ Object = null;
 window = {};
 ```
 
-
nursery/noGlobalAssign.js:1:1 lint/nursery/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noGlobalAssign.js:1:1 lint/suspicious/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    A global variable should not be reassigned.
   
@@ -55,7 +55,7 @@ window = {};
 undefined = true;
 ```
 
-
nursery/noGlobalAssign.js:1:1 lint/nursery/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noGlobalAssign.js:1:1 lint/suspicious/noGlobalAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    A global variable should not be reassigned.
   
diff --git a/website/src/content/docs/linter/rules/no-global-eval.md b/website/src/content/docs/linter/rules/no-global-eval.md
index 2a486b651063..a165fbe77e3f 100644
--- a/website/src/content/docs/linter/rules/no-global-eval.md
+++ b/website/src/content/docs/linter/rules/no-global-eval.md
@@ -2,10 +2,10 @@
 title: noGlobalEval (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noGlobalEval`**
+**Diagnostic Category: `lint/security/noGlobalEval`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: no-eval
@@ -28,7 +28,7 @@ Moreover, changing variables in the caller's scope is expensive in modern _JavaS
 eval("var a = 0");
 ```
 
-
nursery/noGlobalEval.js:1:1 lint/nursery/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
security/noGlobalEval.js:1:1 lint/security/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    eval() exposes to security risks and performance issues.
   
@@ -46,7 +46,7 @@ eval("var a = 0");
 (0, globalThis.eval)("var a = 0")
 ```
 
-
nursery/noGlobalEval.js:1:5 lint/nursery/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
security/noGlobalEval.js:1:5 lint/security/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    eval() exposes to security risks and performance issues.
   
@@ -64,7 +64,7 @@ eval("var a = 0");
 f(eval);
 ```
 
-
nursery/noGlobalEval.js:1:3 lint/nursery/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
security/noGlobalEval.js:1:3 lint/security/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    eval() exposes to security risks and performance issues.
   
@@ -82,7 +82,7 @@ f(eval);
 const aliasedEval = eval;
 ```
 
-
nursery/noGlobalEval.js:1:21 lint/nursery/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
security/noGlobalEval.js:1:21 lint/security/noGlobalEval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    eval() exposes to security risks and performance issues.
   
diff --git a/website/src/content/docs/linter/rules/no-invalid-use-before-declaration.md b/website/src/content/docs/linter/rules/no-invalid-use-before-declaration.md
index 01e64eb9096c..c856051c63f6 100644
--- a/website/src/content/docs/linter/rules/no-invalid-use-before-declaration.md
+++ b/website/src/content/docs/linter/rules/no-invalid-use-before-declaration.md
@@ -2,10 +2,10 @@
 title: noInvalidUseBeforeDeclaration (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noInvalidUseBeforeDeclaration`**
+**Diagnostic Category: `lint/correctness/noInvalidUseBeforeDeclaration`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: no-use-before-define
@@ -28,7 +28,7 @@ function f() {
 }
 ```
 
-
nursery/noInvalidUseBeforeDeclaration.js:3:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
correctness/noInvalidUseBeforeDeclaration.js:3:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Const declarations must have an initialized value.
   
@@ -50,9 +50,9 @@ function f() {
 }
 ```
 
-
nursery/noInvalidUseBeforeDeclaration.js:2:17 lint/nursery/noInvalidUseBeforeDeclaration ━━━━━━━━━━━
+
correctness/noInvalidUseBeforeDeclaration.js:2:17 lint/correctness/noInvalidUseBeforeDeclaration ━━━━━━━━━━
 
-   This variable is used before its declaration.
+   This variable is used before its declaration.
   
     1 │ function f() {
   > 2 │     console.log(x);
@@ -75,9 +75,9 @@ function f() {
 function f(a = b, b = 0) {}
 ```
 
-
nursery/noInvalidUseBeforeDeclaration.js:1:16 lint/nursery/noInvalidUseBeforeDeclaration ━━━━━━━━━━━
+
correctness/noInvalidUseBeforeDeclaration.js:1:16 lint/correctness/noInvalidUseBeforeDeclaration ━━━━━━━━━━
 
-   This parameter is used before its declaration.
+   This parameter is used before its declaration.
   
   > 1 │ function f(a = b, b = 0) {}
                   ^
diff --git a/website/src/content/docs/linter/rules/no-misleading-character-class.md b/website/src/content/docs/linter/rules/no-misleading-character-class.md
index 6bf49ecef959..cab3b188328b 100644
--- a/website/src/content/docs/linter/rules/no-misleading-character-class.md
+++ b/website/src/content/docs/linter/rules/no-misleading-character-class.md
@@ -2,10 +2,10 @@
 title: noMisleadingCharacterClass (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noMisleadingCharacterClass`**
+**Diagnostic Category: `lint/suspicious/noMisleadingCharacterClass`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: no-misleading-character-class
@@ -26,9 +26,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[Á]$/u;
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass ━━━━━━━━━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass ━━━━━━━━━━━━
 
-   Unexpected combined character in the character class.
+   Unexpected combined character in the character class.
   
   > 1 │ /^[Á]$/u;
    ^^^^^^^^
@@ -40,9 +40,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[❇️]$/u;
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass ━━━━━━━━━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass ━━━━━━━━━━━━
 
-   Unexpected combined character in the character class.
+   Unexpected combined character in the character class.
   
   > 1 │ /^[❇️]$/u;
    ^^^^^^^^
@@ -54,9 +54,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[👶🏻]$/u;
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass ━━━━━━━━━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass ━━━━━━━━━━━━
 
-   Unexpected modified Emoji in the character class. 
+   Unexpected modified Emoji in the character class. 
   
   > 1 │ /^[👶🏻]$/u;
    ^^^^^^^^^^^
@@ -68,9 +68,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[🇯🇵]$/u;
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass ━━━━━━━━━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass ━━━━━━━━━━━━
 
-   Regional indicator symbol characters should not be used in the character class.
+   Regional indicator symbol characters should not be used in the character class.
   
   > 1 │ /^[🇯🇵]$/u;
    ^^^^^^^^^
@@ -82,9 +82,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[👨‍👩‍👦]$/u;
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass ━━━━━━━━━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass ━━━━━━━━━━━━
 
-   Unexpected joined character sequence in character class.
+   Unexpected joined character sequence in character class.
   
   > 1 │ /^[👨‍👩‍👦]$/u;
    ^^^^^^^^^^^^^
@@ -96,9 +96,9 @@ This rule reports the regular expressions which include multiple code point char
 /^[👍]$/; // surrogate pair without u flag
 ```
 
-
nursery/noMisleadingCharacterClass.js:1:1 lint/nursery/noMisleadingCharacterClass  FIXABLE  ━━━━━━━━━━
+
suspicious/noMisleadingCharacterClass.js:1:1 lint/suspicious/noMisleadingCharacterClass  FIXABLE  ━━━━━━━━━━
 
-   Unexpected surrogate pair in character class. Use the 'u' flag.
+   Unexpected surrogate pair in character class. Use the 'u' flag.
   
   > 1 │ /^[👍]$/; // surrogate pair without u flag
    ^^^^^^^^
diff --git a/website/src/content/docs/linter/rules/no-misrefactored-shorthand-assign.md b/website/src/content/docs/linter/rules/no-misrefactored-shorthand-assign.md
index 67f138149626..7065c6419137 100644
--- a/website/src/content/docs/linter/rules/no-misrefactored-shorthand-assign.md
+++ b/website/src/content/docs/linter/rules/no-misrefactored-shorthand-assign.md
@@ -4,6 +4,10 @@ title: noMisrefactoredShorthandAssign (since v1.3.0)
 
 **Diagnostic Category: `lint/suspicious/noMisrefactoredShorthandAssign`**
 
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
+:::
+
 Source: misrefactored_assign_op
 
 Disallow shorthand assign when variable appears on both sides.
@@ -21,7 +25,7 @@ a += a + b
 
 
suspicious/noMisrefactoredShorthandAssign.js:1:1 lint/suspicious/noMisrefactoredShorthandAssign  FIXABLE  ━━━━━━━━━━
 
-   Variable appears on both sides of an assignment operation.
+   Variable appears on both sides of an assignment operation.
   
   > 1 │ a += a + b
    ^^^^^^^^^^
@@ -41,7 +45,7 @@ a -= a - b
 
 
suspicious/noMisrefactoredShorthandAssign.js:1:1 lint/suspicious/noMisrefactoredShorthandAssign  FIXABLE  ━━━━━━━━━━
 
-   Variable appears on both sides of an assignment operation.
+   Variable appears on both sides of an assignment operation.
   
   > 1 │ a -= a - b
    ^^^^^^^^^^
@@ -61,7 +65,7 @@ a *= a * b
 
 
suspicious/noMisrefactoredShorthandAssign.js:1:1 lint/suspicious/noMisrefactoredShorthandAssign  FIXABLE  ━━━━━━━━━━
 
-   Variable appears on both sides of an assignment operation.
+   Variable appears on both sides of an assignment operation.
   
   > 1 │ a *= a * b
    ^^^^^^^^^^
diff --git a/website/src/content/docs/linter/rules/no-namespace-import.md b/website/src/content/docs/linter/rules/no-namespace-import.md
index 26bd3b432ad5..21ecd87f73d8 100644
--- a/website/src/content/docs/linter/rules/no-namespace-import.md
+++ b/website/src/content/docs/linter/rules/no-namespace-import.md
@@ -1,13 +1,9 @@
 ---
-title: noNamespaceImport (not released)
+title: noNamespaceImport (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noNamespaceImport`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-re-export-all.md b/website/src/content/docs/linter/rules/no-re-export-all.md
index b87596008e95..3344bf92b351 100644
--- a/website/src/content/docs/linter/rules/no-re-export-all.md
+++ b/website/src/content/docs/linter/rules/no-re-export-all.md
@@ -1,13 +1,9 @@
 ---
-title: noReExportAll (not released)
+title: noReExportAll (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noReExportAll`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-restricted-imports.md b/website/src/content/docs/linter/rules/no-restricted-imports.md
index 241866bfe2eb..cfdd336f18a5 100644
--- a/website/src/content/docs/linter/rules/no-restricted-imports.md
+++ b/website/src/content/docs/linter/rules/no-restricted-imports.md
@@ -1,13 +1,9 @@
 ---
-title: noRestrictedImports (not released)
+title: noRestrictedImports (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noRestrictedImports`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-semicolon-in-jsx.md b/website/src/content/docs/linter/rules/no-semicolon-in-jsx.md
index d1834c3e8acd..89f0597b2dcd 100644
--- a/website/src/content/docs/linter/rules/no-semicolon-in-jsx.md
+++ b/website/src/content/docs/linter/rules/no-semicolon-in-jsx.md
@@ -1,13 +1,9 @@
 ---
-title: noSemicolonInJsx (not released)
+title: noSemicolonInJsx (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noSemicolonInJsx`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-skipped-tests.md b/website/src/content/docs/linter/rules/no-skipped-tests.md
index 5d01aa7068bd..593f495f32c0 100644
--- a/website/src/content/docs/linter/rules/no-skipped-tests.md
+++ b/website/src/content/docs/linter/rules/no-skipped-tests.md
@@ -1,13 +1,9 @@
 ---
-title: noSkippedTests (not released)
+title: noSkippedTests (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noSkippedTests`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-then-property.md b/website/src/content/docs/linter/rules/no-then-property.md
index 9dd80fd1ee07..d034b91b9899 100644
--- a/website/src/content/docs/linter/rules/no-then-property.md
+++ b/website/src/content/docs/linter/rules/no-then-property.md
@@ -2,10 +2,10 @@
 title: noThenProperty (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noThenProperty`**
+**Diagnostic Category: `lint/suspicious/noThenProperty`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: no-thenable
@@ -23,7 +23,7 @@ These syntaxes interpret the object's then method as intended for the resolution
 export {then};
 ```
 
-
nursery/noThenProperty.js:1:9 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:1:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not export then.
   
@@ -39,7 +39,7 @@ const foo = {
 };
 ```
 
-
nursery/noThenProperty.js:2:5 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to an object.
   
@@ -57,7 +57,7 @@ const foo = {
 };
 ```
 
-
nursery/noThenProperty.js:2:9 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:2:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to an object.
   
@@ -75,7 +75,7 @@ const foo = {
 };
 ```
 
-
nursery/noThenProperty.js:2:8 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:2:8 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to an object.
   
@@ -91,7 +91,7 @@ const foo = {
 foo.then = function () {}
 ```
 
-
nursery/noThenProperty.js:1:1 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:1:1 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to an object.
   
@@ -107,7 +107,7 @@ class Foo {
 }
 ```
 
-
nursery/noThenProperty.js:2:5 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to a class.
   
@@ -125,7 +125,7 @@ class Foo {
 }
 ```
 
-
nursery/noThenProperty.js:2:12 lint/nursery/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/noThenProperty.js:2:12 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Do not add then to a class.
   
diff --git a/website/src/content/docs/linter/rules/no-undeclared-dependencies.md b/website/src/content/docs/linter/rules/no-undeclared-dependencies.md
index 3ac4010d751c..ef3a7b56c159 100644
--- a/website/src/content/docs/linter/rules/no-undeclared-dependencies.md
+++ b/website/src/content/docs/linter/rules/no-undeclared-dependencies.md
@@ -1,13 +1,9 @@
 ---
-title: noUndeclaredDependencies (not released)
+title: noUndeclaredDependencies (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/noUndeclaredDependencies`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/no-unused-imports.md b/website/src/content/docs/linter/rules/no-unused-imports.md
index 8202985dc5e8..798dacdc6a5d 100644
--- a/website/src/content/docs/linter/rules/no-unused-imports.md
+++ b/website/src/content/docs/linter/rules/no-unused-imports.md
@@ -2,11 +2,7 @@
 title: noUnusedImports (since v1.3.0)
 ---
 
-**Diagnostic Category: `lint/nursery/noUnusedImports`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/correctness/noUnusedImports`**
 
 Disallow unused imports.
 
@@ -22,7 +18,7 @@ See the last invalid example.
 import A from 'mod';
 ```
 
-
nursery/noUnusedImports.js:1:8 lint/nursery/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
correctness/noUnusedImports.js:1:8 lint/correctness/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━
 
    This import is unused.
   
@@ -43,7 +39,7 @@ import A from 'mod';
 import * as A from 'mod';
 ```
 
-
nursery/noUnusedImports.js:1:13 lint/nursery/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
correctness/noUnusedImports.js:1:13 lint/correctness/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━
 
    This import is unused.
   
@@ -66,7 +62,7 @@ import { type A, B } from 'mod';
 export { B }
 ```
 
-
nursery/noUnusedImports.js:1:15 lint/nursery/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
correctness/noUnusedImports.js:1:15 lint/correctness/noUnusedImports  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━
 
    This import is unused.
   
@@ -98,7 +94,7 @@ import {
 export { B }
 ```
 
-
nursery/noUnusedImports.js:7:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
correctness/noUnusedImports.js:7:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    'import { type x ident }' are a TypeScript only feature. Convert your file to a TypeScript file or remove the syntax.
   
diff --git a/website/src/content/docs/linter/rules/no-unused-private-class-members.md b/website/src/content/docs/linter/rules/no-unused-private-class-members.md
index 48f171eb6fee..da344ba5154a 100644
--- a/website/src/content/docs/linter/rules/no-unused-private-class-members.md
+++ b/website/src/content/docs/linter/rules/no-unused-private-class-members.md
@@ -2,11 +2,7 @@
 title: noUnusedPrivateClassMembers (since v1.3.3)
 ---
 
-**Diagnostic Category: `lint/nursery/noUnusedPrivateClassMembers`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/correctness/noUnusedPrivateClassMembers`**
 
 Source: no-unused-private-class-members
 
@@ -29,7 +25,7 @@ class OnlyWrite {
 }
 ```
 
-
nursery/noUnusedPrivateClassMembers.js:2:3 lint/nursery/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
+
correctness/noUnusedPrivateClassMembers.js:2:3 lint/correctness/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
 
    This private class member is defined but never used.
   
@@ -54,7 +50,7 @@ class OnlyWrite {
  }
 ```
 
-
nursery/noUnusedPrivateClassMembers.js:2:12 lint/nursery/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
+
correctness/noUnusedPrivateClassMembers.js:2:12 lint/correctness/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
 
    This private class member is defined but never used.
   
@@ -79,7 +75,7 @@ class OnlyWrite {
  }
 ```
 
-
nursery/noUnusedPrivateClassMembers.js:2:12 lint/nursery/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
+
correctness/noUnusedPrivateClassMembers.js:2:12 lint/correctness/noUnusedPrivateClassMembers  FIXABLE  ━━━━━━━━━━
 
    This private class member is defined but never used.
   
diff --git a/website/src/content/docs/linter/rules/no-unused-variables.md b/website/src/content/docs/linter/rules/no-unused-variables.md
index 066f8f3d7cd1..694bf108950c 100644
--- a/website/src/content/docs/linter/rules/no-unused-variables.md
+++ b/website/src/content/docs/linter/rules/no-unused-variables.md
@@ -8,17 +8,15 @@ Source: no-lone-blocks
@@ -24,9 +24,9 @@ In ES6, code blocks may create a new scope if a block-level binding (let and con
 {}
 ```
 
-
nursery/noUselessLoneBlockStatements.js:1:1 lint/nursery/noUselessLoneBlockStatements ━━━━━━━━━━━━━━
+
complexity/noUselessLoneBlockStatements.js:1:1 lint/complexity/noUselessLoneBlockStatements ━━━━━━━━━━
 
-   This block statement doesn't serve any purpose and can be safely removed.
+   This block statement doesn't serve any purpose and can be safely removed.
   
   > 1 │ {}
    ^^
@@ -45,9 +45,9 @@ if (foo) {
 }
 ```
 
-
nursery/noUselessLoneBlockStatements.js:3:3 lint/nursery/noUselessLoneBlockStatements  FIXABLE  ━━━━━━━━━━
+
complexity/noUselessLoneBlockStatements.js:3:3 lint/complexity/noUselessLoneBlockStatements  FIXABLE  ━━━━━━━━━━
 
-   This block statement doesn't serve any purpose and can be safely removed.
+   This block statement doesn't serve any purpose and can be safely removed.
   
     1 │ if (foo) {
     2 │   bar();
diff --git a/website/src/content/docs/linter/rules/use-await.md b/website/src/content/docs/linter/rules/use-await.md
index 36d9c193171f..e768f9f802dc 100644
--- a/website/src/content/docs/linter/rules/use-await.md
+++ b/website/src/content/docs/linter/rules/use-await.md
@@ -2,11 +2,7 @@
 title: useAwait (since v1.4.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useAwait`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/suspicious/useAwait`**
 
 Source: require-await
 
@@ -29,9 +25,9 @@ async function fetchData() {
 }
 ```
 
-
nursery/useAwait.js:1:1 lint/nursery/useAwait ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
suspicious/useAwait.js:1:1 lint/suspicious/useAwait ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
-   This async function lacks an await expression.
+   This async function lacks an await expression.
   
   > 1 │ async function fetchData() {
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/website/src/content/docs/linter/rules/use-consistent-array-type.md b/website/src/content/docs/linter/rules/use-consistent-array-type.md
index 25164d249a11..1dabf2963ba0 100644
--- a/website/src/content/docs/linter/rules/use-consistent-array-type.md
+++ b/website/src/content/docs/linter/rules/use-consistent-array-type.md
@@ -2,11 +2,7 @@
 title: useConsistentArrayType (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useConsistentArrayType`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/style/useConsistentArrayType`**
 
 Source: array-type
 
@@ -24,7 +20,7 @@ Using the same style consistently across your codebase makes it easier for devel
 let invalid: Array;
 ```
 
-
nursery/useConsistentArrayType.js:1:14 lint/nursery/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━
+
style/useConsistentArrayType.js:1:14 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━
 
    Use shorthand T[] syntax instead of Array<T> syntax.
   
@@ -44,7 +40,7 @@ let invalid: Array;
 let invalid: Promise>;
 ```
 
-
nursery/useConsistentArrayType.js:1:22 lint/nursery/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━
+
style/useConsistentArrayType.js:1:22 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━
 
    Use shorthand T[] syntax instead of Array<T> syntax.
   
@@ -64,7 +60,7 @@ let invalid: Promise>;
 let invalid3: Array>;
 ```
 
-
nursery/useConsistentArrayType.js:1:15 lint/nursery/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━
+
style/useConsistentArrayType.js:1:15 lint/style/useConsistentArrayType  FIXABLE  ━━━━━━━━━━━━━━━━━━━
 
    Use shorthand T[] syntax instead of Array<T> syntax.
   
diff --git a/website/src/content/docs/linter/rules/use-export-type.md b/website/src/content/docs/linter/rules/use-export-type.md
index bc6c97285f95..046caafd2965 100644
--- a/website/src/content/docs/linter/rules/use-export-type.md
+++ b/website/src/content/docs/linter/rules/use-export-type.md
@@ -2,10 +2,10 @@
 title: useExportType (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useExportType`**
+**Diagnostic Category: `lint/style/useExportType`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Inspired from: consistent-type-exports
@@ -27,7 +27,7 @@ interface I {}
 export { I };
 ```
 
-
nursery/useExportType.js:2:8 lint/nursery/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useExportType.js:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All exports are only types and should thus use export type.
   
@@ -49,7 +49,7 @@ type T = number;
 export { T };
 ```
 
-
nursery/useExportType.js:2:8 lint/nursery/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useExportType.js:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All exports are only types and should thus use export type.
   
@@ -71,7 +71,7 @@ import type { T } from "./mod.js";
 export { T };
 ```
 
-
nursery/useExportType.js:2:8 lint/nursery/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useExportType.js:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All exports are only types and should thus use export type.
   
@@ -92,7 +92,7 @@ export { T };
 export { type X, type Y };
 ```
 
-
nursery/useExportType.js:1:8 lint/nursery/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useExportType.js:1:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All exports are only types and should thus use export type.
   
diff --git a/website/src/content/docs/linter/rules/use-filenaming-convention.md b/website/src/content/docs/linter/rules/use-filenaming-convention.md
index 39267a18f34e..6a98e2313511 100644
--- a/website/src/content/docs/linter/rules/use-filenaming-convention.md
+++ b/website/src/content/docs/linter/rules/use-filenaming-convention.md
@@ -2,11 +2,7 @@
 title: useFilenamingConvention (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useFilenamingConvention`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/style/useFilenamingConvention`**
 
 Inspired from: filename-case
 
diff --git a/website/src/content/docs/linter/rules/use-for-of.md b/website/src/content/docs/linter/rules/use-for-of.md
index cd6174c769f0..e0fe5691aca0 100644
--- a/website/src/content/docs/linter/rules/use-for-of.md
+++ b/website/src/content/docs/linter/rules/use-for-of.md
@@ -2,11 +2,7 @@
 title: useForOf (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useForOf`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
+**Diagnostic Category: `lint/style/useForOf`**
 
 Source: prefer-for-of
 
@@ -22,7 +18,7 @@ for (let i = 0; i < array.length; i++) {
 }
 ```
 
-
nursery/useForOf.js:1:1 lint/nursery/useForOf ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useForOf.js:1:1 lint/style/useForOf ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use for-of loop instead of a for loop.
   
diff --git a/website/src/content/docs/linter/rules/use-grouped-type-import.md b/website/src/content/docs/linter/rules/use-grouped-type-import.md
deleted file mode 100644
index 9a15209cb737..000000000000
--- a/website/src/content/docs/linter/rules/use-grouped-type-import.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: useGroupedTypeImport (since v1.0.0)
----
-
-**Diagnostic Category: `lint/nursery/useGroupedTypeImport`**
-
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
-:::
-
-Source: no-import-type-side-effects
-
-Enforce the use of `import type` when an `import` only has specifiers with `type` qualifier.
-
-The [`--verbatimModuleSyntax`](https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax) _TypeScript_'s compiler option causes _TypeScript_ to do simple and predictable transpilation on `import` declarations.
-Namely, it completely removes `import type` and any imported names with the `type` qualifier.
-
-For instance, the following code:
-
-```ts
-import { type A, type B } from "mod-1";
-import type { C, D } from "mod-2";
-```
-
-
nursery/useGroupedTypeImport.js:1:8 lint/nursery/useGroupedTypeImport  FIXABLE  ━━━━━━━━━━━━━━━━━━━━
-
-   The type qualifier can be moved just after import to completely remove the import at compile time.
-  
-  > 1 │ import { type A, type B } from "mod-1";
-          ^^^^^^^^^^^^^^^^^^
-    2 │ import type { C, D } from "mod-2";
-    3 │ 
-  
-   Only import type are removed at compile time.
-  
-   Unsafe fix: Use import type instead.
-  
-    1  - import·{·type·A,·type·B·}·from·"mod-1";
-      1+ import·type·{·A,·B·}·from·"mod-1";
-    2 2  import type { C, D } from "mod-2";
-    3 3  
-  
-
- -is transpiled to: - -```ts -import "mod-1"; -``` - -Note that, an `import` that includes only names qualified with `type` is transpiled to a [side-effect `import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#import_a_module_for_its_side_effects_only). -This can be a surprising behavior: most of developers could expect the deletion of the `import`. - -This behavior may still be desirable for applying the potential side-effects of the imported module. -In most cases you will not want to leave behind an unnecessary side effect `import`. -In teh remaining cases, it is often preferable to explicitly use a side-effect `import` to apply the side-effects of a module: - -```ts -import "mod"; // side-effect import -import type { A, B } from "mod"; -``` - -## Examples - -### Invalid - -```ts -import { type A } from "mod"; -``` - -
nursery/useGroupedTypeImport.js:1:8 lint/nursery/useGroupedTypeImport  FIXABLE  ━━━━━━━━━━━━━━━━━━━━
-
-   The type qualifier can be moved just after import to completely remove the import at compile time.
-  
-  > 1 │ import { type A } from "mod";
-          ^^^^^^^^^^
-    2 │ 
-  
-   Only import type are removed at compile time.
-  
-   Unsafe fix: Use import type instead.
-  
-    1  - import·{·type·A·}·from·"mod";
-      1+ import·type·{·A·}·from·"mod";
-    2 2  
-  
-
- -### Valid - -```ts -import type { A, B } from "mod"; -``` - -```ts -import { A, type B } from "mod"; -``` - -## Related links - -- [Disable a rule](/linter/#disable-a-lint-rule) -- [Rule options](/linter/#rule-options) diff --git a/website/src/content/docs/linter/rules/use-import-type.md b/website/src/content/docs/linter/rules/use-import-type.md index 5bb2609a1d1a..17989fcc0272 100644 --- a/website/src/content/docs/linter/rules/use-import-type.md +++ b/website/src/content/docs/linter/rules/use-import-type.md @@ -2,10 +2,10 @@ title: useImportType (since v1.5.0) --- -**Diagnostic Category: `lint/nursery/useImportType`** +**Diagnostic Category: `lint/style/useImportType`** -:::caution -This rule is part of the [nursery](/linter/rules/#nursery) group. +:::note +This rule is recommended by Biome. A diagnostic error will appear when linting your code. ::: Inspired from: consistent-type-imports @@ -29,7 +29,7 @@ type TypeOfA = typeof A; let a: A; ``` -
nursery/useImportType.js:1:1 lint/nursery/useImportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useImportType.js:1:1 lint/style/useImportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All these imports are only used as types.
   
@@ -50,7 +50,7 @@ let a: A;
 import { type A, type B } from "./mod.js";
 ```
 
-
nursery/useImportType.js:1:1 lint/nursery/useImportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useImportType.js:1:1 lint/style/useImportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    All these imports are only used as types.
   
diff --git a/website/src/content/docs/linter/rules/use-jsx-key-in-iterable.md b/website/src/content/docs/linter/rules/use-jsx-key-in-iterable.md
index d3d97de7db44..977cd4bca2fa 100644
--- a/website/src/content/docs/linter/rules/use-jsx-key-in-iterable.md
+++ b/website/src/content/docs/linter/rules/use-jsx-key-in-iterable.md
@@ -1,13 +1,9 @@
 ---
-title: useJsxKeyInIterable (not released)
+title: useJsxKeyInIterable (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/useJsxKeyInIterable`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
@@ -24,31 +20,34 @@ Check out React documentation for [explanation on the why does React need keys.]
 ### Invalid
 
 ```jsx
-[, , ];
-data.map((x) => {x});
+[];
 ```
 
 
nursery/useJsxKeyInIterable.js:1:2 lint/nursery/useJsxKeyInIterable ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Missing key property for this element in iterable.
   
-  > 1 │ [<Hello />, <Hello />, <Hello />];
+  > 1 │ [<Hello />];
     ^^^^^^^^^
-    2 │ data.map((x) => <Hello>{x}</Hello>);
-    3 │ 
+    2 │ 
   
    The order of the items may change, and having a key can help React identify which item was moved.
   
    Check the React documentation. 
   
-nursery/useJsxKeyInIterable.js:1:13 lint/nursery/useJsxKeyInIterable ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+ +```jsx +data.map((x) => {x}); +``` + +
nursery/useJsxKeyInIterable.js:1:17 lint/nursery/useJsxKeyInIterable ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Missing key property for this element in iterable.
   
-  > 1 │ [<Hello />, <Hello />, <Hello />];
-               ^^^^^^^^^
-    2 │ data.map((x) => <Hello>{x}</Hello>);
-    3 │ 
+  > 1 │ data.map((x) => <Hello>{x}</Hello>);
+                   ^^^^^^^
+    2 │ 
   
    The order of the items may change, and having a key can help React identify which item was moved.
   
diff --git a/website/src/content/docs/linter/rules/use-node-assert-strict.md b/website/src/content/docs/linter/rules/use-node-assert-strict.md
index 46facf03acff..37cf49f348b5 100644
--- a/website/src/content/docs/linter/rules/use-node-assert-strict.md
+++ b/website/src/content/docs/linter/rules/use-node-assert-strict.md
@@ -1,13 +1,9 @@
 ---
-title: useNodeAssertStrict (not released)
+title: useNodeAssertStrict (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/useNodeAssertStrict`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/linter/rules/use-nodejs-import-protocol.md b/website/src/content/docs/linter/rules/use-nodejs-import-protocol.md
index e8a1d2c5b9b7..5e9a1be4dee0 100644
--- a/website/src/content/docs/linter/rules/use-nodejs-import-protocol.md
+++ b/website/src/content/docs/linter/rules/use-nodejs-import-protocol.md
@@ -2,10 +2,10 @@
 title: useNodejsImportProtocol (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useNodejsImportProtocol`**
+**Diagnostic Category: `lint/style/useNodejsImportProtocol`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: prefer-node-protocol
@@ -23,9 +23,9 @@ suggesting the format `import fs from "node:fs";` instead.
 import fs from 'fs';
 ```
 
-
nursery/useNodejsImportProtocol.js:1:16 lint/nursery/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━
+
style/useNodejsImportProtocol.js:1:16 lint/style/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━━━━━
 
-   A Node.js builtin module should be imported with the node: protocol.
+   A Node.js builtin module should be imported with the node: protocol.
   
   > 1 │ import fs from 'fs';
                   ^^^^
@@ -45,9 +45,9 @@ import fs from 'fs';
 import os from 'os';
 ```
 
-
nursery/useNodejsImportProtocol.js:1:16 lint/nursery/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━
+
style/useNodejsImportProtocol.js:1:16 lint/style/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━━━━━
 
-   A Node.js builtin module should be imported with the node: protocol.
+   A Node.js builtin module should be imported with the node: protocol.
   
   > 1 │ import os from 'os';
                   ^^^^
@@ -67,9 +67,9 @@ import os from 'os';
 import path from 'path';
 ```
 
-
nursery/useNodejsImportProtocol.js:1:18 lint/nursery/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━
+
style/useNodejsImportProtocol.js:1:18 lint/style/useNodejsImportProtocol  FIXABLE  ━━━━━━━━━━━━━━━━━
 
-   A Node.js builtin module should be imported with the node: protocol.
+   A Node.js builtin module should be imported with the node: protocol.
   
   > 1 │ import path from 'path';
                     ^^^^^^
diff --git a/website/src/content/docs/linter/rules/use-number-namespace.md b/website/src/content/docs/linter/rules/use-number-namespace.md
index 704054f17bb0..7a1cf4d4876e 100644
--- a/website/src/content/docs/linter/rules/use-number-namespace.md
+++ b/website/src/content/docs/linter/rules/use-number-namespace.md
@@ -2,10 +2,10 @@
 title: useNumberNamespace (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useNumberNamespace`**
+**Diagnostic Category: `lint/style/useNumberNamespace`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: prefer-number-properties
@@ -25,7 +25,7 @@ You can use the dedicated rules [noGlobalIsFinite](https://biomejs.dev/linter/ru
 parseInt("1"); // true
 ```
 
-
nursery/useNumberNamespace.js:1:1 lint/nursery/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useNumberNamespace.js:1:1 lint/style/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use Number.parseInt instead of the equivalent global.
   
@@ -47,7 +47,7 @@ parseInt("1"); // true
 parseFloat("1.1"); // true
 ```
 
-
nursery/useNumberNamespace.js:1:1 lint/nursery/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useNumberNamespace.js:1:1 lint/style/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use Number.parseFloat instead of the equivalent global.
   
@@ -69,7 +69,7 @@ parseFloat("1.1"); // true
 NaN; // true
 ```
 
-
nursery/useNumberNamespace.js:1:1 lint/nursery/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useNumberNamespace.js:1:1 lint/style/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use Number.NaN instead of the equivalent global.
   
@@ -91,7 +91,7 @@ NaN; // true
 Infinity; // true
 ```
 
-
nursery/useNumberNamespace.js:1:1 lint/nursery/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useNumberNamespace.js:1:1 lint/style/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use Number.Infinity instead of the equivalent global.
   
@@ -113,7 +113,7 @@ Infinity; // true
 -Infinity; // true
 ```
 
-
nursery/useNumberNamespace.js:1:2 lint/nursery/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━
+
style/useNumberNamespace.js:1:2 lint/style/useNumberNamespace  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use Number.Infinity instead of the equivalent global.
   
diff --git a/website/src/content/docs/linter/rules/use-shorthand-array-type.md b/website/src/content/docs/linter/rules/use-shorthand-array-type.md
index b7e82c89aae8..d21a288df02e 100644
--- a/website/src/content/docs/linter/rules/use-shorthand-array-type.md
+++ b/website/src/content/docs/linter/rules/use-shorthand-array-type.md
@@ -4,8 +4,6 @@ title: useShorthandArrayType (since v1.0.0)
 
 **Diagnostic Category: `lint/style/useShorthandArrayType`**
 
-Inspired from: array-type
-
 When expressing array types, this rule promotes the usage of `T[]` shorthand instead of `Array`.
 
 ## Examples
diff --git a/website/src/content/docs/linter/rules/use-shorthand-function-type.md b/website/src/content/docs/linter/rules/use-shorthand-function-type.md
index 7909cd1e2284..45325b2f6cf3 100644
--- a/website/src/content/docs/linter/rules/use-shorthand-function-type.md
+++ b/website/src/content/docs/linter/rules/use-shorthand-function-type.md
@@ -2,10 +2,10 @@
 title: useShorthandFunctionType (since v1.5.0)
 ---
 
-**Diagnostic Category: `lint/nursery/useShorthandFunctionType`**
+**Diagnostic Category: `lint/style/useShorthandFunctionType`**
 
-:::caution
-This rule is part of the [nursery](/linter/rules/#nursery) group.
+:::note
+This rule is recommended by Biome. A diagnostic error will appear when linting your code.
 :::
 
 Source: prefer-function-type
@@ -31,9 +31,9 @@ interface Example {
 }
 ```
 
-
nursery/useShorthandFunctionType.js:2:3 lint/nursery/useShorthandFunctionType  FIXABLE  ━━━━━━━━━━━━
+
style/useShorthandFunctionType.js:2:3 lint/style/useShorthandFunctionType  FIXABLE  ━━━━━━━━━━━━━━━━
 
-   Use a function type instead of a call signature.
+   Use a function type instead of a call signature.
   
     1 │ interface Example {
   > 2 │   (): string;
@@ -59,9 +59,9 @@ function foo(example: { (): number }): number {
 }
 ```
 
-
nursery/useShorthandFunctionType.js:1:25 lint/nursery/useShorthandFunctionType  FIXABLE  ━━━━━━━━━━━
+
style/useShorthandFunctionType.js:1:25 lint/style/useShorthandFunctionType  FIXABLE  ━━━━━━━━━━━━━━━
 
-   Use a function type instead of a call signature.
+   Use a function type instead of a call signature.
   
   > 1 │ function foo(example: { (): number }): number {
                            ^^^^^^^^^^
diff --git a/website/src/content/docs/linter/rules/use-sorted-classes.md b/website/src/content/docs/linter/rules/use-sorted-classes.md
index 612f7f3ca484..ea41fc604f18 100644
--- a/website/src/content/docs/linter/rules/use-sorted-classes.md
+++ b/website/src/content/docs/linter/rules/use-sorted-classes.md
@@ -1,13 +1,9 @@
 ---
-title: useSortedClasses (not released)
+title: useSortedClasses (since v1.6.0)
 ---
 
 **Diagnostic Category: `lint/nursery/useSortedClasses`**
 
-:::danger
-This rule hasn't been released yet.
-:::
-
 :::caution
 This rule is part of the [nursery](/linter/rules/#nursery) group.
 :::
diff --git a/website/src/content/docs/pt-br/guides/getting-started.mdx b/website/src/content/docs/pt-br/guides/getting-started.mdx
index 7e6f8ac0cb16..16bd26044f6b 100644
--- a/website/src/content/docs/pt-br/guides/getting-started.mdx
+++ b/website/src/content/docs/pt-br/guides/getting-started.mdx
@@ -46,7 +46,7 @@ Após utilizar o comando, você terá um novo arquivo `biome.json` no seu diret
 
 ```json title="biome.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
   "organizeImports": {
     "enabled": false
   },
diff --git a/website/src/content/docs/reference/cli.mdx b/website/src/content/docs/reference/cli.mdx
index 65fd473fc5fc..bc775de5e0ae 100644
--- a/website/src/content/docs/reference/cli.mdx
+++ b/website/src/content/docs/reference/cli.mdx
@@ -23,6 +23,7 @@ description: Available commands and arguments in the Biome CLI.
   * [`biome init`↴](#biome-init)
   * [`biome lsp-proxy`↴](#biome-lsp-proxy)
   * [`biome migrate`↴](#biome-migrate)
+  * [`biome migrate prettier`↴](#biome-migrate-prettier)
   * [`biome explain`↴](#biome-explain)
 
 ## biome
@@ -32,37 +33,37 @@ Biome official CLI. Use it to check the health of your project or run it to chec
 **Usage**: **`biome`** _`COMMAND ...`_
 
 **Available options:**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
-- **`-V`**, **`--version`** —
+- **`-V`**, **`--version`** — 
   Prints version information
 
 
 
 **Available commands:**
-- **`version`** —
+- **`version`** — 
   Shows the Biome version information and quit
-- **`rage`** —
+- **`rage`** — 
   Prints information for debugging
-- **`start`** —
+- **`start`** — 
   Start the Biome daemon server process
-- **`stop`** —
+- **`stop`** — 
   Stop the Biome daemon server process
-- **`check`** —
+- **`check`** — 
   Runs formatter, linter and import sorting to the requested files.
-- **`lint`** —
+- **`lint`** — 
   Run various checks on a set of files.
-- **`format`** —
+- **`format`** — 
   Run the formatter on a set of files.
-- **`ci`** —
+- **`ci`** — 
   Command to use in CI environments. Runs formatter, linter and import sorting to the requested files.
-- **`init`** —
+- **`init`** — 
   Bootstraps a new biome project. Creates a configuration file with some defaults.
-- **`lsp-proxy`** —
+- **`lsp-proxy`** — 
   Acts as a server for the Language Server Protocol over stdin/stdout
-- **`migrate`** —
+- **`migrate`** — 
   It updates the configuration when there are breaking changes
-- **`explain`** —
+- **`explain`** — 
   A command to retrieve the documentation of various aspects of the CLI.
 
 
@@ -70,46 +71,46 @@ Biome official CLI. Use it to check the health of your project or run it to chec
 
 Shows the Biome version information and quit
 
-**Usage**: **`biome`** **`version`**
+**Usage**: **`biome`** **`version`** 
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available options:**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -117,48 +118,52 @@ Shows the Biome version information and quit
 
 Prints information for debugging
 
-**Usage**: **`biome`** **`rage`** \[**`--daemon-logs`**\]
+**Usage**: **`biome`** **`rage`** \[**`--daemon-logs`**\] \[**`--formatter`**\] \[**`--linter`**\]
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available options:**
-- **`    --daemon-logs`** —
+- **`    --daemon-logs`** — 
   Prints the Biome daemon server logs
-- **`-h`**, **`--help`** —
+- **`    --formatter`** — 
+  Prints the Biome configuration that the applied formatter configuration
+- **`    --linter`** — 
+  Prints the Biome configuration that the applied linter configuration
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -169,11 +174,11 @@ Start the Biome daemon server process
 **Usage**: **`biome`** **`start`** \[**`--config-path`**=_`PATH`_\]
 
 **Available options:**
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Allows to set a custom path when discovering the configuration file `biome.json`
-
+   
   Uses environment variable **`BIOME_CONFIG_PATH`**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -181,10 +186,10 @@ Start the Biome daemon server process
 
 Stop the Biome daemon server process
 
-**Usage**: **`biome`** **`stop`**
+**Usage**: **`biome`** **`stop`** 
 
 **Available options:**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -195,143 +200,145 @@ Runs formatter, linter and import sorting to the requested files.
 **Usage**: **`biome`** **`check`** \[**`--apply`**\] \[**`--apply-unsafe`**\] \[**`--changed`**\] \[**`--since`**=_`REF`_\] \[_`PATH`_\]...
 
 **The configuration that is contained inside the file `biome.json`**
-- **`    --vcs-client-kind`**=_``_ —
+- **`    --vcs-client-kind`**=_``_ — 
   The kind of client.
-- **`    --vcs-enabled`**=_``_ —
+- **`    --vcs-enabled`**=_``_ — 
   Whether Biome should integrate itself with the VCS client
-- **`    --vcs-use-ignore-file`**=_``_ —
+- **`    --vcs-use-ignore-file`**=_``_ — 
   Whether Biome should use the VCS ignore file. When [true], Biome will ignore the files specified in the ignore file.
-- **`    --vcs-root`**=_`PATH`_ —
+- **`    --vcs-root`**=_`PATH`_ — 
   The folder where Biome should check for VCS files. By default, Biome will use the same folder where `biome.json` was found.
 
   If Biome can't find the configuration, it will attempt to use the current working directory. If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted
-- **`    --vcs-default-branch`**=_`BRANCH`_ —
+- **`    --vcs-default-branch`**=_`BRANCH`_ — 
   The main branch of the project
-- **`    --files-max-size`**=_`NUMBER`_ —
+- **`    --files-max-size`**=_`NUMBER`_ — 
   The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB
-- **`    --files-ignore-unknown`**=_``_ —
+- **`    --files-ignore-unknown`**=_``_ — 
   Tells Biome to not emit diagnostics when handling files that doesn't know
-- **`    --indent-style`**=_``_ —
+- **`    --indent-style`**=_``_ — 
   The indent style.
-- **`    --indent-size`**=_`NUMBER`_ —
+- **`    --indent-size`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default (deprecated, use `indent-width`)
-- **`    --indent-width`**=_`NUMBER`_ —
+- **`    --indent-width`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default
-- **`    --line-ending`**=_``_ —
+- **`    --line-ending`**=_``_ — 
   The type of line ending.
-- **`    --line-width`**=_`NUMBER`_ —
+- **`    --line-width`**=_`NUMBER`_ — 
   What's the max width of a line. Defaults to 80.
-- **`    --jsx-quote-style`**=_``_ —
+- **`    --attribute-position`**=_``_ — 
+  The attribute position style. By default auto.
+- **`    --jsx-quote-style`**=_``_ — 
   The type of quotes used in JSX. Defaults to double.
-- **`    --quote-properties`**=_``_ —
+- **`    --quote-properties`**=_``_ — 
   When properties in objects are quoted. Defaults to asNeeded.
-- **`    --trailing-comma`**=_``_ —
+- **`    --trailing-comma`**=_``_ — 
   Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "all".
-- **`    --semicolons`**=_``_ —
+- **`    --semicolons`**=_``_ — 
   Whether the formatter prints semicolons for all statements or only in for statements where it is necessary because of ASI.
-- **`    --arrow-parentheses`**=_``_ —
+- **`    --arrow-parentheses`**=_``_ — 
   Whether to add non-necessary parentheses to arrow functions. Defaults to "always".
-- **`    --attribute-position`**=_``_ —
-  Attribute position style. Defaults to auto.
-- **`    --bracket-spacing`**=_``_ —
+- **`    --bracket-spacing`**=_``_ — 
   Whether to insert spaces around brackets in object literals. Defaults to true.
-- **`    --bracket-same-line`**=_``_ —
+- **`    --bracket-same-line`**=_``_ — 
   Whether to hug the closing bracket of multiline HTML/JSX tags to the end of the last line, rather than being alone on the following line. Defaults to false.
-- **`    --javascript-formatter-enabled`**=_``_ —
+- **`    --javascript-formatter-enabled`**=_``_ — 
   Control the formatter for JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-style`**=_``_ —
+- **`    --javascript-formatter-indent-style`**=_``_ — 
   The indent style applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-line-ending`**=_``_ —
+- **`    --javascript-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-line-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JavaScript (and its super languages) files. Defaults to 80.
-- **`    --quote-style`**=_``_ —
+- **`    --quote-style`**=_``_ — 
   The type of quotes used in JavaScript code. Defaults to double.
-- **`    --javascript-formatter-attribute-position`**=_``_ —
-  Attribute position style. Defaults to auto.
-- **`    --json-formatter-enabled`**=_``_ —
+- **`    --javascript-attribute-position`**=_``_ — 
+  The attribute position style in JavaScript code. Defaults to auto.
+- **`    --json-formatter-enabled`**=_``_ — 
   Control the formatter for JSON (and its super languages) files.
-- **`    --json-formatter-indent-style`**=_``_ —
+- **`    --json-formatter-indent-style`**=_``_ — 
   The indent style applied to JSON (and its super languages) files.
-- **`    --json-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-line-ending`**=_``_ —
+- **`    --json-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JSON (and its super languages) files.
-- **`    --json-formatter-line-width`**=_`NUMBER`_ —
+- **`    --json-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JSON (and its super languages) files. Defaults to 80.
+- **`    --json-formatter-trailing-commas`**=_``_ — 
+  Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "none".
 
 
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available positional items:**
-- _`PATH`_ —
+- _`PATH`_ — 
   Single file, single path or list of paths
 
 
 
 **Available options:**
-- **`    --apply`** —
+- **`    --apply`** — 
   Apply safe fixes, formatting and import sorting
-- **`    --apply-unsafe`** —
+- **`    --apply-unsafe`** — 
   Apply safe fixes and unsafe fixes, formatting and import sorting
-- **`    --formatter-enabled`**=_``_ —
+- **`    --formatter-enabled`**=_``_ — 
   Allow to enable or disable the formatter check.
-- **`    --linter-enabled`**=_``_ —
+- **`    --linter-enabled`**=_``_ — 
   Allow to enable or disable the linter check.
-- **`    --organize-imports-enabled`**=_``_ —
+- **`    --organize-imports-enabled`**=_``_ — 
   Allow to enable or disable the organize imports.
-- **`    --stdin-file-path`**=_`PATH`_ —
+- **`    --stdin-file-path`**=_`PATH`_ — 
   Use this option when you want to format code piped from `stdin`, and print the output to `stdout`.
 
   The file doesn't need to exist on disk, what matters is the extension of the file. Based on the extension, Biome knows how to check the code.
 
   Example: `echo 'let a;' | biome check --stdin-file-path=file.js`
-- **`    --changed`** —
+- **`    --changed`** — 
   When set to true, only the files that have been changed compared to your `defaultBranch` configuration will be linted.
-- **`    --since`**=_`REF`_ —
+- **`    --since`**=_`REF`_ — 
   Use this to specify the base branch to compare against when you're using the --changed flag and the `defaultBranch` is not set in your biome.json
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -342,87 +349,87 @@ Run various checks on a set of files.
 **Usage**: **`biome`** **`lint`** \[**`--apply`**\] \[**`--apply-unsafe`**\] \[**`--changed`**\] \[**`--since`**=_`REF`_\] \[_`PATH`_\]...
 
 **Set of properties to integrate Biome with a VCS software.**
-- **`    --vcs-client-kind`**=_``_ —
+- **`    --vcs-client-kind`**=_``_ — 
   The kind of client.
-- **`    --vcs-enabled`**=_``_ —
+- **`    --vcs-enabled`**=_``_ — 
   Whether Biome should integrate itself with the VCS client
-- **`    --vcs-use-ignore-file`**=_``_ —
+- **`    --vcs-use-ignore-file`**=_``_ — 
   Whether Biome should use the VCS ignore file. When [true], Biome will ignore the files specified in the ignore file.
-- **`    --vcs-root`**=_`PATH`_ —
+- **`    --vcs-root`**=_`PATH`_ — 
   The folder where Biome should check for VCS files. By default, Biome will use the same folder where `biome.json` was found.
 
   If Biome can't find the configuration, it will attempt to use the current working directory. If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted
-- **`    --vcs-default-branch`**=_`BRANCH`_ —
+- **`    --vcs-default-branch`**=_`BRANCH`_ — 
   The main branch of the project
 
 
 
 **The configuration of the filesystem**
-- **`    --files-max-size`**=_`NUMBER`_ —
+- **`    --files-max-size`**=_`NUMBER`_ — 
   The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB
-- **`    --files-ignore-unknown`**=_``_ —
+- **`    --files-ignore-unknown`**=_``_ — 
   Tells Biome to not emit diagnostics when handling files that doesn't know
 
 
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available positional items:**
-- _`PATH`_ —
+- _`PATH`_ — 
   Single file, single path or list of paths
 
 
 
 **Available options:**
-- **`    --apply`** —
+- **`    --apply`** — 
   Apply safe fixes, formatting and import sorting
-- **`    --apply-unsafe`** —
+- **`    --apply-unsafe`** — 
   Apply safe fixes and unsafe fixes, formatting and import sorting
-- **`    --stdin-file-path`**=_`PATH`_ —
+- **`    --stdin-file-path`**=_`PATH`_ — 
   Use this option when you want to format code piped from `stdin`, and print the output to `stdout`.
 
   The file doesn't need to exist on disk, what matters is the extension of the file. Based on the extension, Biome knows how to lint the code.
 
   Example: `echo 'let a;' | biome lint --stdin-file-path=file.js`
-- **`    --changed`** —
+- **`    --changed`** — 
   When set to true, only the files that have been changed compared to your `defaultBranch` configuration will be linted.
-- **`    --since`**=_`REF`_ —
+- **`    --since`**=_`REF`_ — 
   Use this to specify the base branch to compare against when you're using the --changed flag and the `defaultBranch` is not set in your biome.json
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -433,145 +440,149 @@ Run the formatter on a set of files.
 **Usage**: **`biome`** **`format`** \[**`--write`**\] \[**`--changed`**\] \[**`--since`**=_`REF`_\] \[_`PATH`_\]...
 
 **Generic options applied to all files**
-- **`    --indent-style`**=_``_ —
+- **`    --indent-style`**=_``_ — 
   The indent style.
-- **`    --indent-size`**=_`NUMBER`_ —
+- **`    --indent-size`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default (deprecated, use `indent-width`)
-- **`    --indent-width`**=_`NUMBER`_ —
+- **`    --indent-width`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default
-- **`    --line-ending`**=_``_ —
+- **`    --line-ending`**=_``_ — 
   The type of line ending.
-- **`    --line-width`**=_`NUMBER`_ —
+- **`    --line-width`**=_`NUMBER`_ — 
   What's the max width of a line. Defaults to 80.
+- **`    --attribute-position`**=_``_ — 
+  The attribute position style. By default auto.
 
 
 
 **Formatting options specific to the JavaScript files**
-- **`    --jsx-quote-style`**=_``_ —
+- **`    --jsx-quote-style`**=_``_ — 
   The type of quotes used in JSX. Defaults to double.
-- **`    --quote-properties`**=_``_ —
+- **`    --quote-properties`**=_``_ — 
   When properties in objects are quoted. Defaults to asNeeded.
-- **`    --trailing-comma`**=_``_ —
+- **`    --trailing-comma`**=_``_ — 
   Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "all".
-- **`    --semicolons`**=_``_ —
+- **`    --semicolons`**=_``_ — 
   Whether the formatter prints semicolons for all statements or only in for statements where it is necessary because of ASI.
-- **`    --arrow-parentheses`**=_``_ —
+- **`    --arrow-parentheses`**=_``_ — 
   Whether to add non-necessary parentheses to arrow functions. Defaults to "always".
-- **`    --bracket-spacing`**=_``_ —
+- **`    --bracket-spacing`**=_``_ — 
   Whether to insert spaces around brackets in object literals. Defaults to true.
-- **`    --bracket-same-line`**=_``_ —
+- **`    --bracket-same-line`**=_``_ — 
   Whether to hug the closing bracket of multiline HTML/JSX tags to the end of the last line, rather than being alone on the following line. Defaults to false.
-- **`    --javascript-formatter-enabled`**=_``_ —
+- **`    --javascript-formatter-enabled`**=_``_ — 
   Control the formatter for JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-style`**=_``_ —
+- **`    --javascript-formatter-indent-style`**=_``_ — 
   The indent style applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-line-ending`**=_``_ —
+- **`    --javascript-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-line-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JavaScript (and its super languages) files. Defaults to 80.
-- **`    --quote-style`**=_``_ —
+- **`    --quote-style`**=_``_ — 
   The type of quotes used in JavaScript code. Defaults to double.
-- **`    --javascript-formatter-attribute-position`**=_``_ —
-  Attribute position style. Defaults to auto.
+- **`    --javascript-attribute-position`**=_``_ — 
+  The attribute position style in JavaScript code. Defaults to auto.
 
 
 
 **Set of properties to integrate Biome with a VCS software.**
-- **`    --vcs-client-kind`**=_``_ —
+- **`    --vcs-client-kind`**=_``_ — 
   The kind of client.
-- **`    --vcs-enabled`**=_``_ —
+- **`    --vcs-enabled`**=_``_ — 
   Whether Biome should integrate itself with the VCS client
-- **`    --vcs-use-ignore-file`**=_``_ —
+- **`    --vcs-use-ignore-file`**=_``_ — 
   Whether Biome should use the VCS ignore file. When [true], Biome will ignore the files specified in the ignore file.
-- **`    --vcs-root`**=_`PATH`_ —
+- **`    --vcs-root`**=_`PATH`_ — 
   The folder where Biome should check for VCS files. By default, Biome will use the same folder where `biome.json` was found.
 
   If Biome can't find the configuration, it will attempt to use the current working directory. If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted
-- **`    --vcs-default-branch`**=_`BRANCH`_ —
+- **`    --vcs-default-branch`**=_`BRANCH`_ — 
   The main branch of the project
 
 
 
 **The configuration of the filesystem**
-- **`    --files-max-size`**=_`NUMBER`_ —
+- **`    --files-max-size`**=_`NUMBER`_ — 
   The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB
-- **`    --files-ignore-unknown`**=_``_ —
+- **`    --files-ignore-unknown`**=_``_ — 
   Tells Biome to not emit diagnostics when handling files that doesn't know
 
 
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available positional items:**
-- _`PATH`_ —
+- _`PATH`_ — 
   Single file, single path or list of paths.
 
 
 
 **Available options:**
-- **`    --json-formatter-enabled`**=_``_ —
+- **`    --json-formatter-enabled`**=_``_ — 
   Control the formatter for JSON (and its super languages) files.
-- **`    --json-formatter-indent-style`**=_``_ —
+- **`    --json-formatter-indent-style`**=_``_ — 
   The indent style applied to JSON (and its super languages) files.
-- **`    --json-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-line-ending`**=_``_ —
+- **`    --json-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JSON (and its super languages) files.
-- **`    --json-formatter-line-width`**=_`NUMBER`_ —
+- **`    --json-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JSON (and its super languages) files. Defaults to 80.
-- **`    --stdin-file-path`**=_`PATH`_ —
+- **`    --json-formatter-trailing-commas`**=_``_ — 
+  Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "none".
+- **`    --stdin-file-path`**=_`PATH`_ — 
   Use this option when you want to format code piped from `stdin`, and print the output to `stdout`.
 
   The file doesn't need to exist on disk, what matters is the extension of the file. Based on the extension, Biome knows how to format the code.
 
   Example: `echo 'let a;' | biome format --stdin-file-path=file.js`
-- **`    --write`** —
+- **`    --write`** — 
   Writes formatted files to file system.
-- **`    --changed`** —
+- **`    --changed`** — 
   When set to true, only the files that have been changed compared to your `defaultBranch` configuration will be linted.
-- **`    --since`**=_`REF`_ —
+- **`    --since`**=_`REF`_ — 
   Use this to specify the base branch to compare against when you're using the --changed flag and the `defaultBranch` is not set in your biome.json
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -584,131 +595,135 @@ Files won't be modified, the command is a read-only operation.
 **Usage**: **`biome`** **`ci`** \[**`--formatter-enabled`**=_``_\] \[**`--linter-enabled`**=_``_\] \[**`--organize-imports-enabled`**=_``_\] \[**`--changed`**\] \[**`--since`**=_`REF`_\] \[_`PATH`_\]...
 
 **The configuration that is contained inside the file `biome.json`**
-- **`    --vcs-client-kind`**=_``_ —
+- **`    --vcs-client-kind`**=_``_ — 
   The kind of client.
-- **`    --vcs-enabled`**=_``_ —
+- **`    --vcs-enabled`**=_``_ — 
   Whether Biome should integrate itself with the VCS client
-- **`    --vcs-use-ignore-file`**=_``_ —
+- **`    --vcs-use-ignore-file`**=_``_ — 
   Whether Biome should use the VCS ignore file. When [true], Biome will ignore the files specified in the ignore file.
-- **`    --vcs-root`**=_`PATH`_ —
+- **`    --vcs-root`**=_`PATH`_ — 
   The folder where Biome should check for VCS files. By default, Biome will use the same folder where `biome.json` was found.
 
   If Biome can't find the configuration, it will attempt to use the current working directory. If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted
-- **`    --vcs-default-branch`**=_`BRANCH`_ —
+- **`    --vcs-default-branch`**=_`BRANCH`_ — 
   The main branch of the project
-- **`    --files-max-size`**=_`NUMBER`_ —
+- **`    --files-max-size`**=_`NUMBER`_ — 
   The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB
-- **`    --files-ignore-unknown`**=_``_ —
+- **`    --files-ignore-unknown`**=_``_ — 
   Tells Biome to not emit diagnostics when handling files that doesn't know
-- **`    --indent-style`**=_``_ —
+- **`    --indent-style`**=_``_ — 
   The indent style.
-- **`    --indent-size`**=_`NUMBER`_ —
+- **`    --indent-size`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default (deprecated, use `indent-width`)
-- **`    --indent-width`**=_`NUMBER`_ —
+- **`    --indent-width`**=_`NUMBER`_ — 
   The size of the indentation, 2 by default
-- **`    --line-ending`**=_``_ —
+- **`    --line-ending`**=_``_ — 
   The type of line ending.
-- **`    --line-width`**=_`NUMBER`_ —
+- **`    --line-width`**=_`NUMBER`_ — 
   What's the max width of a line. Defaults to 80.
-- **`    --jsx-quote-style`**=_``_ —
+- **`    --attribute-position`**=_``_ — 
+  The attribute position style. By default auto.
+- **`    --jsx-quote-style`**=_``_ — 
   The type of quotes used in JSX. Defaults to double.
-- **`    --quote-properties`**=_``_ —
+- **`    --quote-properties`**=_``_ — 
   When properties in objects are quoted. Defaults to asNeeded.
-- **`    --trailing-comma`**=_``_ —
+- **`    --trailing-comma`**=_``_ — 
   Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "all".
-- **`    --semicolons`**=_``_ —
+- **`    --semicolons`**=_``_ — 
   Whether the formatter prints semicolons for all statements or only in for statements where it is necessary because of ASI.
-- **`    --arrow-parentheses`**=_``_ —
+- **`    --arrow-parentheses`**=_``_ — 
   Whether to add non-necessary parentheses to arrow functions. Defaults to "always".
-- **`    --bracket-spacing`**=_``_ —
+- **`    --bracket-spacing`**=_``_ — 
   Whether to insert spaces around brackets in object literals. Defaults to true.
-- **`    --bracket-same-line`**=_``_ —
+- **`    --bracket-same-line`**=_``_ — 
   Whether to hug the closing bracket of multiline HTML/JSX tags to the end of the last line, rather than being alone on the following line. Defaults to false.
-- **`    --javascript-formatter-enabled`**=_``_ —
+- **`    --javascript-formatter-enabled`**=_``_ — 
   Control the formatter for JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-style`**=_``_ —
+- **`    --javascript-formatter-indent-style`**=_``_ — 
   The indent style applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.
-- **`    --javascript-formatter-line-ending`**=_``_ —
+- **`    --javascript-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JavaScript (and its super languages) files.
-- **`    --javascript-formatter-line-width`**=_`NUMBER`_ —
+- **`    --javascript-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JavaScript (and its super languages) files. Defaults to 80.
-- **`    --quote-style`**=_``_ —
+- **`    --quote-style`**=_``_ — 
   The type of quotes used in JavaScript code. Defaults to double.
-- **`    --javascript-formatter-single-attribute-per-line`**=_``_ —
-  Enforce single attribute per line in JSX.
-- **`    --json-formatter-enabled`**=_``_ —
+- **`    --javascript-attribute-position`**=_``_ — 
+  The attribute position style in JavaScript code. Defaults to auto.
+- **`    --json-formatter-enabled`**=_``_ — 
   Control the formatter for JSON (and its super languages) files.
-- **`    --json-formatter-indent-style`**=_``_ —
+- **`    --json-formatter-indent-style`**=_``_ — 
   The indent style applied to JSON (and its super languages) files.
-- **`    --json-formatter-indent-width`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-width`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-indent-size`**=_`NUMBER`_ —
+- **`    --json-formatter-indent-size`**=_`NUMBER`_ — 
   The size of the indentation applied to JSON (and its super languages) files. Default to 2.
-- **`    --json-formatter-line-ending`**=_``_ —
+- **`    --json-formatter-line-ending`**=_``_ — 
   The type of line ending applied to JSON (and its super languages) files.
-- **`    --json-formatter-line-width`**=_`NUMBER`_ —
+- **`    --json-formatter-line-width`**=_`NUMBER`_ — 
   What's the max width of a line applied to JSON (and its super languages) files. Defaults to 80.
+- **`    --json-formatter-trailing-commas`**=_``_ — 
+  Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "none".
 
 
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available positional items:**
-- _`PATH`_ —
+- _`PATH`_ — 
   Single file, single path or list of paths
 
 
 
 **Available options:**
-- **`    --formatter-enabled`**=_``_ —
+- **`    --formatter-enabled`**=_``_ — 
   Allow to enable or disable the formatter check.
-- **`    --linter-enabled`**=_``_ —
+- **`    --linter-enabled`**=_``_ — 
   Allow to enable or disable the linter check.
-- **`    --organize-imports-enabled`**=_``_ —
+- **`    --organize-imports-enabled`**=_``_ — 
   Allow to enable or disable the organize imports.
-- **`    --changed`** —
+- **`    --changed`** — 
   When set to true, only the files that have been changed compared to your `defaultBranch` configuration will be linted.
-- **`    --since`**=_`REF`_ —
+- **`    --since`**=_`REF`_ — 
   Use this to specify the base branch to compare against when you're using the --changed flag and the `defaultBranch` is not set in your biome.json
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -716,10 +731,12 @@ Files won't be modified, the command is a read-only operation.
 
 Bootstraps a new biome project. Creates a configuration file with some defaults.
 
-**Usage**: **`biome`** **`init`**
+**Usage**: **`biome`** **`init`** \[**`--jsonc`**\]
 
 **Available options:**
-- **`-h`**, **`--help`** —
+- **`    --jsonc`** — 
+  Tells Biome to emit a `biome.jsonc` file.
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -730,11 +747,11 @@ Acts as a server for the Language Server Protocol over stdin/stdout
 **Usage**: **`biome`** **`lsp-proxy`** \[**`--config-path`**=_`PATH`_\]
 
 **Available options:**
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Allows to set a custom path when discovering the configuration file `biome.json`
-
+   
   Uses environment variable **`BIOME_CONFIG_PATH`**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -742,48 +759,65 @@ Acts as a server for the Language Server Protocol over stdin/stdout
 
 It updates the configuration when there are breaking changes
 
-**Usage**: **`biome`** **`migrate`** \[**`--write`**\]
+**Usage**: **`biome`** **`migrate`** \[**`--write`**\] \[_`COMMAND ...`_\]
 
 **Global options applied to all commands**
-- **`    --colors`**=_``_ —
+- **`    --colors`**=_``_ — 
   Set the formatting mode for markup: "off" prints everything as plain text, "force" forces the formatting of markup using ANSI even if the console output is determined to be incompatible
-- **`    --use-server`** —
+- **`    --use-server`** — 
   Connect to a running instance of the Biome daemon server.
-- **`    --verbose`** —
+- **`    --verbose`** — 
   Print additional diagnostics, and some diagnostics show more information.
-- **`    --config-path`**=_`PATH`_ —
+- **`    --config-path`**=_`PATH`_ — 
   Set the directory of the biome.json configuration file and disable default configuration file resolution.
-- **`    --max-diagnostics`**=_`NUMBER`_ —
+- **`    --max-diagnostics`**=_`NUMBER`_ — 
   Cap the amount of diagnostics displayed.
-
+   
   [default: 20]
-- **`    --skip-errors`** —
+- **`    --skip-errors`** — 
   Skip over files containing syntax errors instead of emitting an error diagnostic.
-- **`    --no-errors-on-unmatched`** —
+- **`    --no-errors-on-unmatched`** — 
   Silence errors that would be emitted in case no files were processed during the execution of the command.
-- **`    --error-on-warnings`** —
+- **`    --error-on-warnings`** — 
   Tell Biome to exit with an error code if some diagnostics emit warnings.
-- **`    --log-level`**=_``_ —
+- **`    --log-level`**=_``_ — 
   The level of logging. In order, from the most verbose to the least verbose: debug, info, warn, error.
 
   The value `none` won't show any logging.
-
+   
   [default: none]
-- **`    --log-kind`**=_``_ —
+- **`    --log-kind`**=_``_ — 
   How the log should look like.
-
+   
   [default: pretty]
-- **`    --diagnostic-level`**=_``_ —
+- **`    --diagnostic-level`**=_``_ — 
   The level of diagnostics to show. In order, from the lowest to the most important: info, warn, error. Passing `--diagnostic-level=error` will cause Biome to print only diagnostics that contain only errors.
-
+   
   [default: info]
 
 
 
 **Available options:**
-- **`    --write`** —
+- **`    --write`** — 
   Writes the new configuration file to disk
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
+  Prints help information
+
+
+
+**Available commands:**
+- **`prettier`** — 
+  It attempts to find the files `.prettierrc`/`prettier.json` and `.prettierignore`, and map the Prettier's configuration into Biome's configuration file.
+
+
+## biome migrate prettier
+
+It attempts to find the files `.prettierrc`/`prettier.json` and `.prettierignore`, and map the Prettier's configuration into Biome's configuration file.
+
+**Usage**: **`biome`** **`migrate`** **`prettier`** 
+
+**Available options:**
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
@@ -806,13 +840,13 @@ A command to retrieve the documentation of various aspects of the CLI.
 **Usage**: **`biome`** **`explain`** _`NAME`_
 
 **Available positional items:**
-- _`NAME`_ —
+- _`NAME`_ — 
   Single name to display documentation for.
 
 
 
 **Available options:**
-- **`-h`**, **`--help`** —
+- **`-h`**, **`--help`** — 
   Prints help information
 
 
diff --git a/website/src/content/docs/reference/configuration.mdx b/website/src/content/docs/reference/configuration.mdx
index 6b1739ac452d..1fc6684ba541 100644
--- a/website/src/content/docs/reference/configuration.mdx
+++ b/website/src/content/docs/reference/configuration.mdx
@@ -30,7 +30,7 @@ If you have problems with resolving the physical file, you can use the one publi
 
 ```json title="biome.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json"
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json"
 }
 ```
 
@@ -694,7 +694,7 @@ How many characters can be written on a single line in JSON (and its super langu
 
 > Default: `80`
 
-### `json.formatter.trailingComma`
+### `json.formatter.trailingCommas`
 
 Print trailing commas wherever possible in multi-line comma-separated syntactic structures.
 
diff --git a/website/src/content/docs/zh-cn/guides/getting-started.mdx b/website/src/content/docs/zh-cn/guides/getting-started.mdx
index 5bbaea4ccecf..07e3f5260b62 100644
--- a/website/src/content/docs/zh-cn/guides/getting-started.mdx
+++ b/website/src/content/docs/zh-cn/guides/getting-started.mdx
@@ -43,7 +43,7 @@ import PackageManagerCommand from "@/components/PackageManagerCommand.astro";
 
 ```json title="biome.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
   "organizeImports": {
     "enabled": false
   },
diff --git a/website/src/content/docs/zh-cn/reference/configuration.mdx b/website/src/content/docs/zh-cn/reference/configuration.mdx
index ee250e8265d4..d111f0f59192 100644
--- a/website/src/content/docs/zh-cn/reference/configuration.mdx
+++ b/website/src/content/docs/zh-cn/reference/configuration.mdx
@@ -27,7 +27,7 @@ import LintGroups from "@/components/generated/Groups.astro";
 
 ```json title="biome.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json"
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json"
 }
 ```
 
@@ -37,14 +37,14 @@ import LintGroups from "@/components/generated/Groups.astro";
 
 ```json title="biome.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
   "extends": ["./formatter.json", "./linter.json"]
 }
 ```
 
 ```json title="formatter.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
   "formatter": {
     "indentSize": 2
   },
@@ -58,7 +58,7 @@ import LintGroups from "@/components/generated/Groups.astro";
 
 ```json title="linter.json"
 {
-  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+  "$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
   "linter": {
     "rules": {
       "complexity": {
diff --git a/website/src/layouts/Blog.astro b/website/src/layouts/Blog.astro
index 7e932d50708f..ce6dae21b346 100644
--- a/website/src/layouts/Blog.astro
+++ b/website/src/layouts/Blog.astro
@@ -19,11 +19,13 @@ const { post } = Astro.props;
             alt={post.coverImage.alt}
             src={post.coverImage.lightSrc}
             class="dark:sl-hidden"
+            loading="eager"
           />
           {post.coverImage.alt}
         
 
diff --git a/website/src/pages/schemas/0.1.0/schema.json.js b/website/src/pages/schemas/0.1.0/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/0.1.0/schema.json.js
+++ b/website/src/pages/schemas/0.1.0/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.0.0/schema.json.js b/website/src/pages/schemas/1.0.0/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/1.0.0/schema.json.js
+++ b/website/src/pages/schemas/1.0.0/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.1.0/schema.json.js b/website/src/pages/schemas/1.1.0/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/1.1.0/schema.json.js
+++ b/website/src/pages/schemas/1.1.0/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.1.2/schema.json.js b/website/src/pages/schemas/1.1.2/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/1.1.2/schema.json.js
+++ b/website/src/pages/schemas/1.1.2/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.2.0/schema.json.js b/website/src/pages/schemas/1.2.0/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/1.2.0/schema.json.js
+++ b/website/src/pages/schemas/1.2.0/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.2.1/schema.json.js b/website/src/pages/schemas/1.2.1/schema.json.js
index 78ea351942e3..4cd53977f2e8 100644
--- a/website/src/pages/schemas/1.2.1/schema.json.js
+++ b/website/src/pages/schemas/1.2.1/schema.json.js
@@ -1,7 +1,7 @@
 // Run `BIOME_VERSION= cargo codegen-website
 // to generate a new schema
-import { readFileSync } from "fs";
-import { join, resolve } from "path";
+import { readFileSync } from "node:fs";
+import { join, resolve } from "node:path";
 
 export function get() {
 	const schemaPath = resolve(
diff --git a/website/src/pages/schemas/1.6.0/schema.json.js b/website/src/pages/schemas/1.6.0/schema.json.js
new file mode 100644
index 000000000000..ae64de79fec9
--- /dev/null
+++ b/website/src/pages/schemas/1.6.0/schema.json.js
@@ -0,0 +1,2916 @@
+// Run `BIOME_VERSION= cargo codegen-website
+// to generate a new schema
+export function GET() {
+	const schema = {
+		$schema: "http://json-schema.org/draft-07/schema#",
+		title: "Configuration",
+		description:
+			"The configuration that is contained inside the file `biome.json`",
+		type: "object",
+		properties: {
+			$schema: {
+				description:
+					"A field for the [JSON schema](https://json-schema.org/) specification",
+				type: ["string", "null"],
+			},
+			css: {
+				description: "Specific configuration for the Css language",
+				anyOf: [{ $ref: "#/definitions/CssConfiguration" }, { type: "null" }],
+			},
+			extends: {
+				description:
+					"A list of paths to other JSON files, used to extends the current configuration.",
+				anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+			},
+			files: {
+				description: "The configuration of the filesystem",
+				anyOf: [{ $ref: "#/definitions/FilesConfiguration" }, { type: "null" }],
+			},
+			formatter: {
+				description: "The configuration of the formatter",
+				anyOf: [
+					{ $ref: "#/definitions/FormatterConfiguration" },
+					{ type: "null" },
+				],
+			},
+			javascript: {
+				description: "Specific configuration for the JavaScript language",
+				anyOf: [
+					{ $ref: "#/definitions/JavascriptConfiguration" },
+					{ type: "null" },
+				],
+			},
+			json: {
+				description: "Specific configuration for the Json language",
+				anyOf: [{ $ref: "#/definitions/JsonConfiguration" }, { type: "null" }],
+			},
+			linter: {
+				description: "The configuration for the linter",
+				anyOf: [
+					{ $ref: "#/definitions/LinterConfiguration" },
+					{ type: "null" },
+				],
+			},
+			organizeImports: {
+				description: "The configuration of the import sorting",
+				anyOf: [{ $ref: "#/definitions/OrganizeImports" }, { type: "null" }],
+			},
+			overrides: {
+				description:
+					"A list of granular patterns that should be applied only to a sub set of files",
+				anyOf: [{ $ref: "#/definitions/Overrides" }, { type: "null" }],
+			},
+			vcs: {
+				description: "The configuration of the VCS integration",
+				anyOf: [{ $ref: "#/definitions/VcsConfiguration" }, { type: "null" }],
+			},
+		},
+		additionalProperties: false,
+		definitions: {
+			A11y: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noAccessKey: {
+						description:
+							"Enforce that the accessKey attribute is not used on any HTML element.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noAriaHiddenOnFocusable: {
+						description:
+							'Enforce that aria-hidden="true" is not set on focusable elements.',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noAriaUnsupportedElements: {
+						description:
+							"Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noAutofocus: {
+						description: "Enforce that autoFocus prop is not used on elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noBlankTarget: {
+						description:
+							'Disallow target="_blank" attribute without rel="noreferrer"',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDistractingElements: {
+						description: "Enforces that no distracting elements are used.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noHeaderScope: {
+						description: "The scope prop should be used only on  elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInteractiveElementToNoninteractiveRole: {
+						description:
+							"Enforce that non-interactive ARIA roles are not assigned to interactive HTML elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNoninteractiveElementToInteractiveRole: {
+						description:
+							"Enforce that interactive ARIA roles are not assigned to non-interactive HTML elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNoninteractiveTabindex: {
+						description:
+							"Enforce that tabIndex is not assigned to non-interactive HTML elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noPositiveTabindex: {
+						description:
+							"Prevent the usage of positive integers on tabIndex property",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRedundantAlt: {
+						description:
+							'Enforce img alt prop does not contain the word "image", "picture", or "photo".',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRedundantRoles: {
+						description:
+							"Enforce explicit role property is not the same as implicit/default role property on an element.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSvgWithoutTitle: {
+						description:
+							"Enforces the usage of the title element for the svg element.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useAltText: {
+						description:
+							"Enforce that all elements that require alternative text have meaningful information to relay back to the end user.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useAnchorContent: {
+						description:
+							"Enforce that anchors have content and that the content is accessible to screen readers.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useAriaActivedescendantWithTabindex: {
+						description:
+							"Enforce that tabIndex is assigned to non-interactive HTML elements with aria-activedescendant.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useAriaPropsForRole: {
+						description:
+							"Enforce that elements with ARIA roles must have all required ARIA attributes for that role.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useButtonType: {
+						description:
+							"Enforces the usage of the attribute type for the element button",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useHeadingContent: {
+						description:
+							"Enforce that heading elements (h1, h2, etc.) have content and that the content is accessible to screen readers. Accessible means that it is not hidden using the aria-hidden prop.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useHtmlLang: {
+						description: "Enforce that html element has lang attribute.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useIframeTitle: {
+						description:
+							"Enforces the usage of the attribute title for the element iframe.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useKeyWithClickEvents: {
+						description:
+							"Enforce onClick is accompanied by at least one of the following: onKeyUp, onKeyDown, onKeyPress.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useKeyWithMouseEvents: {
+						description:
+							"Enforce onMouseOver / onMouseOut are accompanied by onFocus / onBlur.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useMediaCaption: {
+						description:
+							"Enforces that audio and video elements must have a track for captions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidAnchor: {
+						description:
+							"Enforce that all anchors are valid, and they are navigable elements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidAriaProps: {
+						description: "Ensures that ARIA properties aria-* are all valid.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidAriaRole: {
+						description:
+							"Elements with ARIA roles must use a valid, non-abstract ARIA role.",
+						anyOf: [
+							{ $ref: "#/definitions/ValidAriaRoleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidAriaValues: {
+						description:
+							"Enforce that ARIA state and property values are valid.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidLang: {
+						description:
+							"Ensure that the attribute passed to the lang attribute is a correct ISO language and/or country.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			ArrowParentheses: { type: "string", enum: ["always", "asNeeded"] },
+			AttributePosition: { type: "string", enum: ["auto", "multiline"] },
+			Complexity: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noBannedTypes: {
+						description:
+							"Disallow primitive type aliases and misleading types.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noEmptyTypeParameters: {
+						description:
+							"Disallow empty type parameters in type aliases and interfaces.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExcessiveCognitiveComplexity: {
+						description:
+							"Disallow functions that exceed a given Cognitive Complexity score.",
+						anyOf: [
+							{ $ref: "#/definitions/ComplexityConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExtraBooleanCast: {
+						description: "Disallow unnecessary boolean casts",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noForEach: {
+						description: "Prefer for...of statement instead of Array.forEach.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noMultipleSpacesInRegularExpressionLiterals: {
+						description:
+							"Disallow unclear usage of consecutive space characters in regular expression literals",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noStaticOnlyClass: {
+						description:
+							"This rule reports when a class has no non-static members, such as for a class used exclusively as a static namespace.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noThisInStatic: {
+						description: "Disallow this and super in static contexts.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessCatch: {
+						description: "Disallow unnecessary catch clauses.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessConstructor: {
+						description: "Disallow unnecessary constructors.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessEmptyExport: {
+						description:
+							"Disallow empty exports that don't change anything in a module file.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessFragments: {
+						description: "Disallow unnecessary fragments",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessLabel: {
+						description: "Disallow unnecessary labels.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessLoneBlockStatements: {
+						description: "Disallow unnecessary nested block statements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessRename: {
+						description:
+							"Disallow renaming import, export, and destructured assignments to the same name.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessSwitchCase: {
+						description: "Disallow useless case in switch statements.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessThisAlias: {
+						description: "Disallow useless this aliasing.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessTypeConstraint: {
+						description: "Disallow using any or unknown as type constraint.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noVoid: {
+						description:
+							"Disallow the use of void operators, which is not a familiar operator.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noWith: {
+						description: "Disallow with statements in non-strict contexts.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useArrowFunction: {
+						description: "Use arrow functions over function expressions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useFlatMap: {
+						description:
+							"Promotes the use of .flatMap() when map().flat() are used together.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useLiteralKeys: {
+						description:
+							"Enforce the usage of a literal access to properties over computed property access.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useOptionalChain: {
+						description:
+							"Enforce using concise optional chain instead of chained logical expressions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useRegexLiterals: {
+						description:
+							"Enforce the use of the regular expression literals instead of the RegExp constructor if possible.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSimpleNumberKeys: {
+						description:
+							"Disallow number literal object member names which are not base10 or uses underscore as separator",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSimplifiedLogicExpression: {
+						description: "Discard redundant terms from logical expressions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			ComplexityConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithComplexityOptions" },
+				],
+			},
+			ComplexityOptions: {
+				description: "Options for the rule `noExcessiveCognitiveComplexity`.",
+				type: "object",
+				required: ["maxAllowedComplexity"],
+				properties: {
+					maxAllowedComplexity: {
+						description:
+							"The maximum complexity score that we allow. Anything higher is considered excessive.",
+						type: "integer",
+						format: "uint8",
+						minimum: 1.0,
+					},
+				},
+				additionalProperties: false,
+			},
+			ConsistentArrayType: {
+				oneOf: [
+					{
+						description: "`ItemType[]`",
+						type: "string",
+						enum: ["shorthand"],
+					},
+					{
+						description: "`Array`",
+						type: "string",
+						enum: ["generic"],
+					},
+				],
+			},
+			ConsistentArrayTypeConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithConsistentArrayTypeOptions" },
+				],
+			},
+			ConsistentArrayTypeOptions: {
+				type: "object",
+				required: ["syntax"],
+				properties: {
+					syntax: { $ref: "#/definitions/ConsistentArrayType" },
+				},
+				additionalProperties: false,
+			},
+			Correctness: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noChildrenProp: {
+						description: "Prevent passing of children as props.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConstAssign: {
+						description:
+							"Prevents from having const variables being re-assigned.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConstantCondition: {
+						description: "Disallow constant expressions in conditions",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConstructorReturn: {
+						description: "Disallow returning a value from a constructor.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noEmptyCharacterClassInRegex: {
+						description:
+							"Disallow empty character classes in regular expression literals.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noEmptyPattern: {
+						description: "Disallows empty destructuring patterns.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noGlobalObjectCalls: {
+						description:
+							"Disallow calling global object properties as functions",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInnerDeclarations: {
+						description:
+							"Disallow function and var declarations that are accessible outside their block.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInvalidConstructorSuper: {
+						description:
+							"Prevents the incorrect use of super() inside classes. It also checks whether a call super() is missing from classes that extends other constructors.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInvalidNewBuiltin: {
+						description:
+							"Disallow new operators with global non-constructor functions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInvalidUseBeforeDeclaration: {
+						description:
+							"Disallow the use of variables and function parameters before their declaration",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNewSymbol: {
+						description: "Disallow new operators with the Symbol object.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNonoctalDecimalEscape: {
+						description:
+							"Disallow \\8 and \\9 escape sequences in string literals.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noPrecisionLoss: {
+						description: "Disallow literal numbers that lose precision",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRenderReturnValue: {
+						description:
+							"Prevent the usage of the return value of React.render.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSelfAssign: {
+						description:
+							"Disallow assignments where both sides are exactly the same.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSetterReturn: {
+						description: "Disallow returning a value from a setter",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noStringCaseMismatch: {
+						description:
+							"Disallow comparison of expressions modifying the string case with non-compliant value.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSwitchDeclarations: {
+						description: "Disallow lexical declarations in switch clauses.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUndeclaredVariables: {
+						description:
+							"Prevents the usage of variables that haven't been declared inside the document.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnnecessaryContinue: {
+						description: "Avoid using unnecessary continue.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnreachable: {
+						description: "Disallow unreachable code",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnreachableSuper: {
+						description:
+							"Ensures the super() constructor is called exactly once on every code  path in a class constructor before this is accessed if the class has a superclass",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnsafeFinally: {
+						description: "Disallow control flow statements in finally blocks.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnsafeOptionalChaining: {
+						description:
+							"Disallow the use of optional chaining in contexts where the undefined value is not allowed.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnusedImports: {
+						description: "Disallow unused imports.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnusedLabels: {
+						description: "Disallow unused labels.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnusedPrivateClassMembers: {
+						description: "Disallow unused private class members",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnusedVariables: {
+						description: "Disallow unused variables.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noVoidElementsWithChildren: {
+						description:
+							"This rules prevents void elements (AKA self-closing elements) from having children.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noVoidTypeReturn: {
+						description:
+							"Disallow returning a value from a function with the return type 'void'",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useExhaustiveDependencies: {
+						description:
+							"Enforce all dependencies are correctly specified in a React hook.",
+						anyOf: [
+							{ $ref: "#/definitions/HooksConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useHookAtTopLevel: {
+						description:
+							"Enforce that all React hooks are being called from the Top Level component functions.",
+						anyOf: [
+							{ $ref: "#/definitions/DeprecatedHooksConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useIsNan: {
+						description: "Require calls to isNaN() when checking for NaN.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidForDirection: {
+						description:
+							'Enforce "for" loop update clause moving the counter in the right direction.',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useYield: {
+						description: "Require generator functions to contain yield.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			CssConfiguration: {
+				description: "Options applied to CSS files",
+				type: "object",
+				properties: {
+					formatter: {
+						description: "Formatting options",
+						anyOf: [{ $ref: "#/definitions/CssFormatter" }, { type: "null" }],
+					},
+					parser: {
+						description: "Parsing options",
+						anyOf: [{ $ref: "#/definitions/CssParser" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			CssFormatter: {
+				type: "object",
+				properties: {
+					enabled: {
+						description:
+							"Control the formatter for CSS (and its super languages) files.",
+						type: ["boolean", "null"],
+					},
+					indentSize: {
+						description:
+							"The size of the indentation applied to CSS (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					indentStyle: {
+						description:
+							"The indent style applied to CSS (and its super languages) files.",
+						anyOf: [
+							{ $ref: "#/definitions/PlainIndentStyle" },
+							{ type: "null" },
+						],
+					},
+					indentWidth: {
+						description:
+							"The size of the indentation applied to CSS (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					lineEnding: {
+						description:
+							"The type of line ending applied to CSS (and its super languages) files.",
+						anyOf: [{ $ref: "#/definitions/LineEnding" }, { type: "null" }],
+					},
+					lineWidth: {
+						description:
+							"What's the max width of a line applied to CSS (and its super languages) files. Defaults to 80.",
+						anyOf: [{ $ref: "#/definitions/LineWidth" }, { type: "null" }],
+					},
+					quoteStyle: {
+						anyOf: [{ $ref: "#/definitions/QuoteStyle" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			CssParser: {
+				description: "Options that changes how the CSS parser behaves",
+				type: "object",
+				properties: {
+					allowWrongLineComments: {
+						description:
+							"Allow comments to appear on incorrect lines in `.css` files",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			DeprecatedHooksConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithDeprecatedHooksOptions" },
+				],
+			},
+			DeprecatedHooksOptions: {
+				description:
+					"Options for the `useHookAtTopLevel` rule have been deprecated, since we now use the React hook naming convention to determine whether a function is a hook.",
+				type: "object",
+				additionalProperties: false,
+			},
+			EnumMemberCase: {
+				description: "Supported cases for TypeScript `enum` member names.",
+				oneOf: [
+					{
+						description: "PascalCase",
+						type: "string",
+						enum: ["PascalCase"],
+					},
+					{
+						description: "CONSTANT_CASE",
+						type: "string",
+						enum: ["CONSTANT_CASE"],
+					},
+					{ description: "camelCase", type: "string", enum: ["camelCase"] },
+				],
+			},
+			FilenameCase: {
+				description: "Supported cases for TypeScript `enum` member names.",
+				oneOf: [
+					{ description: "camelCase", type: "string", enum: ["camelCase"] },
+					{
+						description: "Match an export name",
+						type: "string",
+						enum: ["export"],
+					},
+					{
+						description: "kebab-case",
+						type: "string",
+						enum: ["kebab-case"],
+					},
+					{
+						description: "PascalCase",
+						type: "string",
+						enum: ["PascalCase"],
+					},
+					{
+						description: "snake_case",
+						type: "string",
+						enum: ["snake_case"],
+					},
+				],
+			},
+			FilenameCases: {
+				type: "array",
+				items: { $ref: "#/definitions/FilenameCase" },
+				uniqueItems: true,
+			},
+			FilenamingConventionConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithFilenamingConventionOptions" },
+				],
+			},
+			FilenamingConventionOptions: {
+				description: "Rule's options.",
+				type: "object",
+				properties: {
+					filenameCases: {
+						description: "Allowed cases for _TypeScript_ `enum` member names.",
+						allOf: [{ $ref: "#/definitions/FilenameCases" }],
+					},
+					requireAscii: {
+						description: "If `false`, then non-ASCII characters are allowed.",
+						type: "boolean",
+					},
+					strictCase: {
+						description:
+							"If `false`, then consecutive uppercase are allowed in _camel_ and _pascal_ cases. This does not affect other [Case].",
+						type: "boolean",
+					},
+				},
+				additionalProperties: false,
+			},
+			FilesConfiguration: {
+				description: "The configuration of the filesystem",
+				type: "object",
+				properties: {
+					ignore: {
+						description:
+							"A list of Unix shell style patterns. Biome will ignore files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					ignoreUnknown: {
+						description:
+							"Tells Biome to not emit diagnostics when handling files that doesn't know",
+						type: ["boolean", "null"],
+					},
+					include: {
+						description:
+							"A list of Unix shell style patterns. Biome will handle only those files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					maxSize: {
+						description:
+							"The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons. Defaults to 1 MiB",
+						type: ["integer", "null"],
+						format: "uint64",
+						minimum: 1.0,
+					},
+				},
+				additionalProperties: false,
+			},
+			FormatterConfiguration: {
+				description: "Generic options applied to all files",
+				type: "object",
+				properties: {
+					attributePosition: {
+						description: "The attribute position style. By default auto.",
+						anyOf: [
+							{ $ref: "#/definitions/AttributePosition" },
+							{ type: "null" },
+						],
+					},
+					enabled: { type: ["boolean", "null"] },
+					formatWithErrors: {
+						description:
+							"Stores whether formatting should be allowed to proceed if a given file has syntax errors",
+						type: ["boolean", "null"],
+					},
+					ignore: {
+						description:
+							"A list of Unix shell style patterns. The formatter will ignore files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					include: {
+						description:
+							"A list of Unix shell style patterns. The formatter will include files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					indentSize: {
+						description:
+							"The size of the indentation, 2 by default (deprecated, use `indent-width`)",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					indentStyle: {
+						description: "The indent style.",
+						anyOf: [
+							{ $ref: "#/definitions/PlainIndentStyle" },
+							{ type: "null" },
+						],
+					},
+					indentWidth: {
+						description: "The size of the indentation, 2 by default",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					lineEnding: {
+						description: "The type of line ending.",
+						anyOf: [{ $ref: "#/definitions/LineEnding" }, { type: "null" }],
+					},
+					lineWidth: {
+						description: "What's the max width of a line. Defaults to 80.",
+						anyOf: [{ $ref: "#/definitions/LineWidth" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			Hook: {
+				type: "object",
+				required: ["name", "stableResult"],
+				properties: {
+					closureIndex: {
+						description:
+							'The "position" of the closure function, starting from zero.\n\nFor example, for React\'s `useEffect()` hook, the closure index is 0.',
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					dependenciesIndex: {
+						description:
+							'The "position" of the array of dependencies, starting from zero.\n\nFor example, for React\'s `useEffect()` hook, the dependencies index is 1.',
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					name: { description: "The name of the hook.", type: "string" },
+					stableResult: {
+						description:
+							"Whether the result of the hook is stable.\n\nSet to `true` to mark the identity of the hook's return value as stable, or use a number/an array of numbers to mark the \"positions\" in the return array as stable.\n\nFor example, for React's `useRef()` hook the value would be `true`, while for `useState()` it would be `[1]`.",
+						allOf: [{ $ref: "#/definitions/StableHookResult" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			HooksConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithHooksOptions" },
+				],
+			},
+			HooksOptions: {
+				description: "Options for the rule `useExhaustiveDependencies`",
+				type: "object",
+				required: ["hooks"],
+				properties: {
+					hooks: {
+						description:
+							"List of hooks of which the dependencies should be validated.",
+						type: "array",
+						items: { $ref: "#/definitions/Hook" },
+					},
+				},
+				additionalProperties: false,
+			},
+			JavascriptConfiguration: {
+				description: "A set of options applied to the JavaScript files",
+				type: "object",
+				properties: {
+					formatter: {
+						description: "Formatting options",
+						anyOf: [
+							{ $ref: "#/definitions/JavascriptFormatter" },
+							{ type: "null" },
+						],
+					},
+					globals: {
+						description:
+							"A list of global bindings that should be ignored by the analyzers\n\nIf defined here, they should not emit diagnostics.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					organize_imports: {
+						anyOf: [
+							{ $ref: "#/definitions/JavascriptOrganizeImports" },
+							{ type: "null" },
+						],
+					},
+					parser: {
+						description: "Parsing options",
+						anyOf: [
+							{ $ref: "#/definitions/JavascriptParser" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			JavascriptFormatter: {
+				description: "Formatting options specific to the JavaScript files",
+				type: "object",
+				properties: {
+					arrowParentheses: {
+						description:
+							'Whether to add non-necessary parentheses to arrow functions. Defaults to "always".',
+						anyOf: [
+							{ $ref: "#/definitions/ArrowParentheses" },
+							{ type: "null" },
+						],
+					},
+					attributePosition: {
+						description:
+							"The attribute position style in JavaScript code. Defaults to auto.",
+						anyOf: [
+							{ $ref: "#/definitions/AttributePosition" },
+							{ type: "null" },
+						],
+					},
+					bracketSameLine: {
+						description:
+							"Whether to hug the closing bracket of multiline HTML/JSX tags to the end of the last line, rather than being alone on the following line. Defaults to false.",
+						type: ["boolean", "null"],
+					},
+					bracketSpacing: {
+						description:
+							"Whether to insert spaces around brackets in object literals. Defaults to true.",
+						type: ["boolean", "null"],
+					},
+					enabled: {
+						description:
+							"Control the formatter for JavaScript (and its super languages) files.",
+						type: ["boolean", "null"],
+					},
+					indentSize: {
+						description:
+							"The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					indentStyle: {
+						description:
+							"The indent style applied to JavaScript (and its super languages) files.",
+						anyOf: [
+							{ $ref: "#/definitions/PlainIndentStyle" },
+							{ type: "null" },
+						],
+					},
+					indentWidth: {
+						description:
+							"The size of the indentation applied to JavaScript (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					jsxQuoteStyle: {
+						description: "The type of quotes used in JSX. Defaults to double.",
+						anyOf: [{ $ref: "#/definitions/QuoteStyle" }, { type: "null" }],
+					},
+					lineEnding: {
+						description:
+							"The type of line ending applied to JavaScript (and its super languages) files.",
+						anyOf: [{ $ref: "#/definitions/LineEnding" }, { type: "null" }],
+					},
+					lineWidth: {
+						description:
+							"What's the max width of a line applied to JavaScript (and its super languages) files. Defaults to 80.",
+						anyOf: [{ $ref: "#/definitions/LineWidth" }, { type: "null" }],
+					},
+					quoteProperties: {
+						description:
+							"When properties in objects are quoted. Defaults to asNeeded.",
+						anyOf: [
+							{ $ref: "#/definitions/QuoteProperties" },
+							{ type: "null" },
+						],
+					},
+					quoteStyle: {
+						description:
+							"The type of quotes used in JavaScript code. Defaults to double.",
+						anyOf: [{ $ref: "#/definitions/QuoteStyle" }, { type: "null" }],
+					},
+					semicolons: {
+						description:
+							"Whether the formatter prints semicolons for all statements or only in for statements where it is necessary because of ASI.",
+						anyOf: [{ $ref: "#/definitions/Semicolons" }, { type: "null" }],
+					},
+					trailingComma: {
+						description:
+							'Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "all".',
+						anyOf: [{ $ref: "#/definitions/TrailingComma" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			JavascriptOrganizeImports: {
+				type: "object",
+				additionalProperties: false,
+			},
+			JavascriptParser: {
+				description: "Options that changes how the JavaScript parser behaves",
+				type: "object",
+				properties: {
+					unsafeParameterDecoratorsEnabled: {
+						description:
+							"It enables the experimental and unsafe parsing of parameter decorators\n\nThese decorators belong to an old proposal, and they are subject to change.",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			JsonConfiguration: {
+				description: "Options applied to JSON files",
+				type: "object",
+				properties: {
+					formatter: {
+						description: "Formatting options",
+						anyOf: [{ $ref: "#/definitions/JsonFormatter" }, { type: "null" }],
+					},
+					parser: {
+						description: "Parsing options",
+						anyOf: [{ $ref: "#/definitions/JsonParser" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			JsonFormatter: {
+				type: "object",
+				properties: {
+					enabled: {
+						description:
+							"Control the formatter for JSON (and its super languages) files.",
+						type: ["boolean", "null"],
+					},
+					indentSize: {
+						description:
+							"The size of the indentation applied to JSON (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					indentStyle: {
+						description:
+							"The indent style applied to JSON (and its super languages) files.",
+						anyOf: [
+							{ $ref: "#/definitions/PlainIndentStyle" },
+							{ type: "null" },
+						],
+					},
+					indentWidth: {
+						description:
+							"The size of the indentation applied to JSON (and its super languages) files. Default to 2.",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					lineEnding: {
+						description:
+							"The type of line ending applied to JSON (and its super languages) files.",
+						anyOf: [{ $ref: "#/definitions/LineEnding" }, { type: "null" }],
+					},
+					lineWidth: {
+						description:
+							"What's the max width of a line applied to JSON (and its super languages) files. Defaults to 80.",
+						anyOf: [{ $ref: "#/definitions/LineWidth" }, { type: "null" }],
+					},
+					trailingCommas: {
+						description:
+							'Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Defaults to "none".',
+						anyOf: [{ $ref: "#/definitions/TrailingCommas" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			JsonParser: {
+				description: "Options that changes how the JSON parser behaves",
+				type: "object",
+				properties: {
+					allowComments: {
+						description: "Allow parsing comments in `.json` files",
+						type: ["boolean", "null"],
+					},
+					allowTrailingCommas: {
+						description: "Allow parsing trailing commas in `.json` files",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			LineEnding: {
+				oneOf: [
+					{
+						description:
+							"Line Feed only (\\n), common on Linux and macOS as well as inside git repos",
+						type: "string",
+						enum: ["lf"],
+					},
+					{
+						description:
+							"Carriage Return + Line Feed characters (\\r\\n), common on Windows",
+						type: "string",
+						enum: ["crlf"],
+					},
+					{
+						description:
+							"Carriage Return character only (\\r), used very rarely",
+						type: "string",
+						enum: ["cr"],
+					},
+				],
+			},
+			LineWidth: {
+				description:
+					"Validated value for the `line_width` formatter options\n\nThe allowed range of values is 1..=320",
+				type: "integer",
+				format: "uint16",
+				minimum: 0.0,
+			},
+			LinterConfiguration: {
+				type: "object",
+				properties: {
+					enabled: {
+						description:
+							"if `false`, it disables the feature and the linter won't be executed. `true` by default",
+						type: ["boolean", "null"],
+					},
+					ignore: {
+						description:
+							"A list of Unix shell style patterns. The formatter will ignore files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					include: {
+						description:
+							"A list of Unix shell style patterns. The formatter will include files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					rules: {
+						description: "List of rules",
+						anyOf: [{ $ref: "#/definitions/Rules" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			NamingConventionConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithNamingConventionOptions" },
+				],
+			},
+			NamingConventionOptions: {
+				description: "Rule's options.",
+				type: "object",
+				properties: {
+					enumMemberCase: {
+						description: "Allowed cases for _TypeScript_ `enum` member names.",
+						allOf: [{ $ref: "#/definitions/EnumMemberCase" }],
+					},
+					requireAscii: {
+						description: "If `false`, then non-ASCII characters are allowed.",
+						type: "boolean",
+					},
+					strictCase: {
+						description:
+							"If `false`, then consecutive uppercase are allowed in _camel_ and _pascal_ cases. This does not affect other [Case].",
+						type: "boolean",
+					},
+				},
+				additionalProperties: false,
+			},
+			Nursery: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noBarrelFile: {
+						description: "Disallow the use of barrel file.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConsole: {
+						description: "Disallow the use of console.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateJsonKeys: {
+						description:
+							"Disallow two keys with the same name inside a JSON object.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateTestHooks: {
+						description: "A describe block should not contain duplicate hooks.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExcessiveNestedTestSuites: {
+						description:
+							"This rule enforces a maximum depth to nested describe() in test files.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExportsInTest: {
+						description:
+							"Disallow using export or module.exports in files containing tests",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noFocusedTests: {
+						description: "Disallow focused tests.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNamespaceImport: {
+						description: "Disallow the use of namespace imports.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNodejsModules: {
+						description: "Forbid the use of Node.js builtin modules.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noReExportAll: {
+						description: "Avoid re-export all.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRestrictedImports: {
+						description:
+							"Disallow specified modules when loaded by import or require.",
+						anyOf: [
+							{ $ref: "#/definitions/RestrictedImportsConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSemicolonInJsx: {
+						description:
+							'It detects possible "wrong" semicolons inside JSX elements.',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSkippedTests: {
+						description: "Disallow disabled tests.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUndeclaredDependencies: {
+						description:
+							"Disallow the use of dependencies that aren't specified in the package.json.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessTernary: {
+						description:
+							"Disallow ternary operators when simpler alternatives exist.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useImportRestrictions: {
+						description: "Disallows package private imports.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useJsxKeyInIterable: {
+						description:
+							"Disallow missing key props in iterators/collection literals.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNodeAssertStrict: {
+						description:
+							"Promotes the usage of node:assert/strict over node:assert.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSortedClasses: {
+						description: "Enforce the sorting of CSS utility classes.",
+						anyOf: [
+							{ $ref: "#/definitions/UtilityClassSortingConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			OrganizeImports: {
+				type: "object",
+				properties: {
+					enabled: {
+						description: "Enables the organization of imports",
+						type: ["boolean", "null"],
+					},
+					ignore: {
+						description:
+							"A list of Unix shell style patterns. The formatter will ignore files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					include: {
+						description:
+							"A list of Unix shell style patterns. The formatter will include files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			OverrideFormatterConfiguration: {
+				type: "object",
+				properties: {
+					attributePosition: {
+						description: "The attribute position style.",
+						default: null,
+						anyOf: [
+							{ $ref: "#/definitions/AttributePosition" },
+							{ type: "null" },
+						],
+					},
+					enabled: { default: null, type: ["boolean", "null"] },
+					formatWithErrors: {
+						description:
+							"Stores whether formatting should be allowed to proceed if a given file has syntax errors",
+						default: null,
+						type: ["boolean", "null"],
+					},
+					indentSize: {
+						description:
+							"The size of the indentation, 2 by default (deprecated, use `indent-width`)",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					indentStyle: {
+						description: "The indent style.",
+						anyOf: [
+							{ $ref: "#/definitions/PlainIndentStyle" },
+							{ type: "null" },
+						],
+					},
+					indentWidth: {
+						description: "The size of the indentation, 2 by default",
+						type: ["integer", "null"],
+						format: "uint8",
+						minimum: 0.0,
+					},
+					lineEnding: {
+						description: "The type of line ending.",
+						anyOf: [{ $ref: "#/definitions/LineEnding" }, { type: "null" }],
+					},
+					lineWidth: {
+						description: "What's the max width of a line. Defaults to 80.",
+						default: 80,
+						anyOf: [{ $ref: "#/definitions/LineWidth" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			OverrideLinterConfiguration: {
+				type: "object",
+				properties: {
+					enabled: {
+						description:
+							"if `false`, it disables the feature and the linter won't be executed. `true` by default",
+						type: ["boolean", "null"],
+					},
+					rules: {
+						description: "List of rules",
+						anyOf: [{ $ref: "#/definitions/Rules" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			OverrideOrganizeImportsConfiguration: {
+				type: "object",
+				properties: {
+					enabled: {
+						description:
+							"if `false`, it disables the feature and the linter won't be executed. `true` by default",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			OverridePattern: {
+				type: "object",
+				properties: {
+					css: {
+						description: "Specific configuration for the Css language",
+						anyOf: [
+							{ $ref: "#/definitions/CssConfiguration" },
+							{ type: "null" },
+						],
+					},
+					formatter: {
+						description: "Specific configuration for the Json language",
+						anyOf: [
+							{ $ref: "#/definitions/OverrideFormatterConfiguration" },
+							{ type: "null" },
+						],
+					},
+					ignore: {
+						description:
+							"A list of Unix shell style patterns. The formatter will ignore files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					include: {
+						description:
+							"A list of Unix shell style patterns. The formatter will include files/folders that will match these patterns.",
+						anyOf: [{ $ref: "#/definitions/StringSet" }, { type: "null" }],
+					},
+					javascript: {
+						description: "Specific configuration for the JavaScript language",
+						anyOf: [
+							{ $ref: "#/definitions/JavascriptConfiguration" },
+							{ type: "null" },
+						],
+					},
+					json: {
+						description: "Specific configuration for the Json language",
+						anyOf: [
+							{ $ref: "#/definitions/JsonConfiguration" },
+							{ type: "null" },
+						],
+					},
+					linter: {
+						description: "Specific configuration for the Json language",
+						anyOf: [
+							{ $ref: "#/definitions/OverrideLinterConfiguration" },
+							{ type: "null" },
+						],
+					},
+					organizeImports: {
+						description: "Specific configuration for the Json language",
+						anyOf: [
+							{ $ref: "#/definitions/OverrideOrganizeImportsConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			Overrides: {
+				type: "array",
+				items: { $ref: "#/definitions/OverridePattern" },
+			},
+			Performance: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noAccumulatingSpread: {
+						description:
+							"Disallow the use of spread (...) syntax on accumulators.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDelete: {
+						description: "Disallow the use of the delete operator.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			PlainIndentStyle: {
+				oneOf: [
+					{ description: "Tab", type: "string", enum: ["tab"] },
+					{ description: "Space", type: "string", enum: ["space"] },
+				],
+			},
+			QuoteProperties: { type: "string", enum: ["asNeeded", "preserve"] },
+			QuoteStyle: { type: "string", enum: ["double", "single"] },
+			RestrictedGlobalsConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithRestrictedGlobalsOptions" },
+				],
+			},
+			RestrictedGlobalsOptions: {
+				description: "Options for the rule `noRestrictedGlobals`.",
+				type: "object",
+				required: ["deniedGlobals"],
+				properties: {
+					deniedGlobals: {
+						description: "A list of names that should trigger the rule",
+						type: "array",
+						items: { type: "string" },
+					},
+				},
+				additionalProperties: false,
+			},
+			RestrictedImportsConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithRestrictedImportsOptions" },
+				],
+			},
+			RestrictedImportsOptions: {
+				description: "Options for the rule `noRestrictedImports`.",
+				type: "object",
+				required: ["paths"],
+				properties: {
+					paths: {
+						description: "A list of names that should trigger the rule",
+						type: "object",
+						additionalProperties: { type: "string" },
+					},
+				},
+				additionalProperties: false,
+			},
+			RuleConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithNoOptions" },
+				],
+			},
+			RulePlainConfiguration: {
+				type: "string",
+				enum: ["warn", "error", "off"],
+			},
+			RuleWithComplexityOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/ComplexityOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithConsistentArrayTypeOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/ConsistentArrayTypeOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithDeprecatedHooksOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/DeprecatedHooksOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithFilenamingConventionOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/FilenamingConventionOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithHooksOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/HooksOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithNamingConventionOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/NamingConventionOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithNoOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { type: "null" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithRestrictedGlobalsOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/RestrictedGlobalsOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithRestrictedImportsOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/RestrictedImportsOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithUtilityClassSortingOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/UtilityClassSortingOptions" },
+				},
+				additionalProperties: false,
+			},
+			RuleWithValidAriaRoleOptions: {
+				type: "object",
+				required: ["level", "options"],
+				properties: {
+					level: { $ref: "#/definitions/RulePlainConfiguration" },
+					options: { $ref: "#/definitions/ValidAriaRoleOptions" },
+				},
+				additionalProperties: false,
+			},
+			Rules: {
+				type: "object",
+				properties: {
+					a11y: {
+						anyOf: [{ $ref: "#/definitions/A11y" }, { type: "null" }],
+					},
+					all: {
+						description:
+							"It enables ALL rules. The rules that belong to `nursery` won't be enabled.",
+						type: ["boolean", "null"],
+					},
+					complexity: {
+						anyOf: [{ $ref: "#/definitions/Complexity" }, { type: "null" }],
+					},
+					correctness: {
+						anyOf: [{ $ref: "#/definitions/Correctness" }, { type: "null" }],
+					},
+					nursery: {
+						anyOf: [{ $ref: "#/definitions/Nursery" }, { type: "null" }],
+					},
+					performance: {
+						anyOf: [{ $ref: "#/definitions/Performance" }, { type: "null" }],
+					},
+					recommended: {
+						description:
+							"It enables the lint rules recommended by Biome. `true` by default.",
+						type: ["boolean", "null"],
+					},
+					security: {
+						anyOf: [{ $ref: "#/definitions/Security" }, { type: "null" }],
+					},
+					style: {
+						anyOf: [{ $ref: "#/definitions/Style" }, { type: "null" }],
+					},
+					suspicious: {
+						anyOf: [{ $ref: "#/definitions/Suspicious" }, { type: "null" }],
+					},
+				},
+				additionalProperties: false,
+			},
+			Security: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noDangerouslySetInnerHtml: {
+						description: "Prevent the usage of dangerous JSX props",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDangerouslySetInnerHtmlWithChildren: {
+						description:
+							"Report when a DOM element or a component uses both children and dangerouslySetInnerHTML prop.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noGlobalEval: {
+						description: "Disallow the use of global eval().",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+			Semicolons: { type: "string", enum: ["always", "asNeeded"] },
+			StableHookResult: {
+				oneOf: [
+					{
+						description:
+							"Used to indicate the hook does not have a stable result.",
+						type: "string",
+						enum: ["None"],
+					},
+					{
+						description:
+							"Used to indicate the identity of the result value is stable.\n\nNote this does not imply internal stability. For instance, the ref objects returned by React's `useRef()` always have a stable identity, but their internal value may be mutable.",
+						type: "string",
+						enum: ["Identity"],
+					},
+					{
+						description:
+							"Used to indicate the hook returns an array and some of its indices have stable identities.\n\nFor example, React's `useState()` hook returns a stable function at index 1.",
+						type: "object",
+						required: ["Indices"],
+						properties: {
+							Indices: {
+								type: "array",
+								items: { type: "integer", format: "uint8", minimum: 0.0 },
+							},
+						},
+						additionalProperties: false,
+					},
+				],
+			},
+			StringSet: {
+				type: "array",
+				items: { type: "string" },
+				uniqueItems: true,
+			},
+			Style: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noArguments: {
+						description: "Disallow the use of arguments.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noCommaOperator: {
+						description: "Disallow comma operator.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDefaultExport: {
+						description: "Disallow default exports.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noImplicitBoolean: {
+						description:
+							"Disallow implicit true values on JSX boolean attributes",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noInferrableTypes: {
+						description:
+							"Disallow type annotations for variables, parameters, and class properties initialized with a literal expression.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNamespace: {
+						description: "Disallow the use of TypeScript's namespaces.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNegationElse: {
+						description:
+							"Disallow negation in the condition of an if statement if it has an else clause.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noNonNullAssertion: {
+						description:
+							"Disallow non-null assertions using the ! postfix operator.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noParameterAssign: {
+						description: "Disallow reassigning function parameters.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noParameterProperties: {
+						description:
+							"Disallow the use of parameter properties in class constructors.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRestrictedGlobals: {
+						description:
+							"This rule allows you to specify global variable names that you don’t want to use in your application.",
+						anyOf: [
+							{ $ref: "#/definitions/RestrictedGlobalsConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noShoutyConstants: {
+						description:
+							"Disallow the use of constants which its value is the upper-case version of its name.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnusedTemplateLiteral: {
+						description:
+							"Disallow template literals if interpolation and special-character handling are not needed",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUselessElse: {
+						description: "Disallow else block when the if block breaks early.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noVar: {
+						description: "Disallow the use of var",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useAsConstAssertion: {
+						description:
+							"Enforce the use of as const over literal type and type annotation.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useBlockStatements: {
+						description: "Requires following curly brace conventions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useCollapsedElseIf: {
+						description:
+							"Enforce using else if instead of nested if in else clauses.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useConsistentArrayType: {
+						description: "Require consistently using either T[] or Array",
+						anyOf: [
+							{ $ref: "#/definitions/ConsistentArrayTypeConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useConst: {
+						description:
+							"Require const declarations for variables that are never reassigned after declared.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useDefaultParameterLast: {
+						description:
+							"Enforce default function parameters and optional function parameters to be last.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useEnumInitializers: {
+						description:
+							"Require that each enum member value be explicitly initialized.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useExponentiationOperator: {
+						description:
+							"Disallow the use of Math.pow in favor of the ** operator.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useExportType: {
+						description: "Promotes the use of export type for types.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useFilenamingConvention: {
+						description:
+							"Enforce naming conventions for JavaScript and TypeScript filenames.",
+						anyOf: [
+							{ $ref: "#/definitions/FilenamingConventionConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useForOf: {
+						description:
+							"This rule recommends a for-of loop when in a for loop, the index used to extract an item from the iterated array.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useFragmentSyntax: {
+						description:
+							"This rule enforces the use of <>... over ....",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useImportType: {
+						description: "Promotes the use of import type for types.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useLiteralEnumMembers: {
+						description: "Require all enum members to be literal values.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNamingConvention: {
+						description:
+							"Enforce naming conventions for everything across a codebase.",
+						anyOf: [
+							{ $ref: "#/definitions/NamingConventionConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNodejsImportProtocol: {
+						description:
+							"Enforces using the node: protocol for Node.js builtin modules.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNumberNamespace: {
+						description: "Use the Number properties instead of global ones.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNumericLiterals: {
+						description:
+							"Disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSelfClosingElements: {
+						description:
+							"Prevent extra closing tags for components without children",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useShorthandArrayType: {
+						description:
+							"When expressing array types, this rule promotes the usage of T[] shorthand instead of Array.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useShorthandAssign: {
+						description:
+							"Require assignment operator shorthand where possible.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useShorthandFunctionType: {
+						description:
+							"Enforce using function types instead of object type with call signatures.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSingleCaseStatement: {
+						description:
+							"Enforces switch clauses have a single statement, emits a quick fix wrapping the statements in a block.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useSingleVarDeclarator: {
+						description:
+							"Disallow multiple variable declarations in the same variable statement",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useTemplate: {
+						description: "Prefer template literals over string concatenation.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useWhile: {
+						description:
+							"Enforce the use of while loops instead of for loops when the initializer and update expressions are not needed.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			Suspicious: {
+				description: "A list of rules that belong to this group",
+				type: "object",
+				properties: {
+					all: {
+						description: "It enables ALL rules for this group.",
+						type: ["boolean", "null"],
+					},
+					noApproximativeNumericConstant: {
+						description:
+							"Use standard constants instead of approximated literals.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noArrayIndexKey: {
+						description: "Discourage the usage of Array index in keys.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noAssignInExpressions: {
+						description: "Disallow assignments in expressions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noAsyncPromiseExecutor: {
+						description:
+							"Disallows using an async function as a Promise executor.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noCatchAssign: {
+						description: "Disallow reassigning exceptions in catch clauses.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noClassAssign: {
+						description: "Disallow reassigning class members.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noCommentText: {
+						description: "Prevent comments from being inserted as text nodes",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noCompareNegZero: {
+						description: "Disallow comparing against -0",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConfusingLabels: {
+						description: "Disallow labeled statements that are not loops.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConfusingVoidType: {
+						description:
+							"Disallow void type outside of generic or return types.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConsoleLog: {
+						description: "Disallow the use of console.log",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noConstEnum: {
+						description: "Disallow TypeScript const enum",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noControlCharactersInRegex: {
+						description:
+							"Prevents from having control characters and some escape sequences that match control characters in regular expressions.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDebugger: {
+						description: "Disallow the use of debugger",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDoubleEquals: {
+						description: "Require the use of === and !==",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateCase: {
+						description: "Disallow duplicate case labels.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateClassMembers: {
+						description: "Disallow duplicate class members.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateJsxProps: {
+						description:
+							"Prevents JSX properties to be assigned multiple times.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateObjectKeys: {
+						description:
+							"Prevents object literals having more than one property declaration for the same name.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noDuplicateParameters: {
+						description: "Disallow duplicate function parameter name.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noEmptyBlockStatements: {
+						description: "Disallow empty block statements and static blocks.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noEmptyInterface: {
+						description: "Disallow the declaration of empty interfaces.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExplicitAny: {
+						description: "Disallow the any type usage.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noExtraNonNullAssertion: {
+						description:
+							"Prevents the wrong usage of the non-null assertion operator (!) in TypeScript files.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noFallthroughSwitchClause: {
+						description: "Disallow fallthrough of switch clauses.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noFunctionAssign: {
+						description: "Disallow reassigning function declarations.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noGlobalAssign: {
+						description:
+							"Disallow assignments to native objects and read-only global variables.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noGlobalIsFinite: {
+						description: "Use Number.isFinite instead of global isFinite.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noGlobalIsNan: {
+						description: "Use Number.isNaN instead of global isNaN.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noImplicitAnyLet: {
+						description:
+							"Disallow use of implicit any type on variable declarations.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noImportAssign: {
+						description: "Disallow assigning to imported bindings",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noLabelVar: {
+						description: "Disallow labels that share a name with a variable",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noMisleadingCharacterClass: {
+						description:
+							"Disallow characters made with multiple code points in character class syntax.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noMisleadingInstantiator: {
+						description: "Enforce proper usage of new and constructor.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noMisrefactoredShorthandAssign: {
+						description:
+							"Disallow shorthand assign when variable appears on both sides.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noPrototypeBuiltins: {
+						description: "Disallow direct use of Object.prototype builtins.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRedeclare: {
+						description:
+							"Disallow variable, function, class, and type redeclarations in the same scope.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noRedundantUseStrict: {
+						description: 'Prevents from having redundant "use strict".',
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSelfCompare: {
+						description:
+							"Disallow comparisons where both sides are exactly the same.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noShadowRestrictedNames: {
+						description:
+							"Disallow identifiers from shadowing restricted names.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noSparseArray: {
+						description: "Disallow sparse arrays",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noThenProperty: {
+						description: "Disallow then property.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnsafeDeclarationMerging: {
+						description:
+							"Disallow unsafe declaration merging between interfaces and classes.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					noUnsafeNegation: {
+						description: "Disallow using unsafe negation.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					recommended: {
+						description: "It enables the recommended rules for this group",
+						type: ["boolean", "null"],
+					},
+					useAwait: {
+						description: "Ensure async functions utilize await.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useDefaultSwitchClauseLast: {
+						description:
+							"Enforce default clauses in switch statements to be last",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useGetterReturn: {
+						description: "Enforce get methods to always return a value.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useIsArray: {
+						description: "Use Array.isArray() instead of instanceof Array.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useNamespaceKeyword: {
+						description:
+							"Require using the namespace keyword over the module keyword to declare TypeScript namespaces.",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+					useValidTypeof: {
+						description:
+							"This rule verifies the result of typeof $expr unary expressions is being compared to valid values, either string literals containing valid type names or other typeof expressions",
+						anyOf: [
+							{ $ref: "#/definitions/RuleConfiguration" },
+							{ type: "null" },
+						],
+					},
+				},
+				additionalProperties: false,
+			},
+			TrailingComma: {
+				description:
+					"Print trailing commas wherever possible in multi-line comma-separated syntactic structures.",
+				oneOf: [
+					{
+						description:
+							"Trailing commas wherever possible (including function parameters and calls).",
+						type: "string",
+						enum: ["all"],
+					},
+					{
+						description:
+							"Trailing commas where valid in ES5 (objects, arrays, etc.). No trailing commas in type parameters in TypeScript.",
+						type: "string",
+						enum: ["es5"],
+					},
+					{
+						description: "No trailing commas.",
+						type: "string",
+						enum: ["none"],
+					},
+				],
+			},
+			TrailingCommas: {
+				oneOf: [
+					{
+						description: "The formatter will remove the trailing comma",
+						type: "string",
+						enum: ["none"],
+					},
+					{
+						description: "The trailing comma is allowed and advised",
+						type: "string",
+						enum: ["all"],
+					},
+				],
+			},
+			UtilityClassSortingConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithUtilityClassSortingOptions" },
+				],
+			},
+			UtilityClassSortingOptions: {
+				type: "object",
+				properties: {
+					attributes: {
+						description: "Additional attributes that will be sorted.",
+						type: ["array", "null"],
+						items: { type: "string" },
+					},
+					functions: {
+						description:
+							"Names of the functions or tagged templates that will be sorted.",
+						type: ["array", "null"],
+						items: { type: "string" },
+					},
+				},
+				additionalProperties: false,
+			},
+			ValidAriaRoleConfiguration: {
+				anyOf: [
+					{ $ref: "#/definitions/RulePlainConfiguration" },
+					{ $ref: "#/definitions/RuleWithValidAriaRoleOptions" },
+				],
+			},
+			ValidAriaRoleOptions: {
+				type: "object",
+				required: ["allowInvalidRoles", "ignoreNonDom"],
+				properties: {
+					allowInvalidRoles: { type: "array", items: { type: "string" } },
+					ignoreNonDom: { type: "boolean" },
+				},
+				additionalProperties: false,
+			},
+			VcsClientKind: {
+				oneOf: [
+					{
+						description: "Integration with the git client as VCS",
+						type: "string",
+						enum: ["git"],
+					},
+				],
+			},
+			VcsConfiguration: {
+				description:
+					"Set of properties to integrate Biome with a VCS software.",
+				type: "object",
+				properties: {
+					clientKind: {
+						description: "The kind of client.",
+						anyOf: [{ $ref: "#/definitions/VcsClientKind" }, { type: "null" }],
+					},
+					defaultBranch: {
+						description: "The main branch of the project",
+						type: ["string", "null"],
+					},
+					enabled: {
+						description:
+							"Whether Biome should integrate itself with the VCS client",
+						type: ["boolean", "null"],
+					},
+					root: {
+						description:
+							"The folder where Biome should check for VCS files. By default, Biome will use the same folder where `biome.json` was found.\n\nIf Biome can't find the configuration, it will attempt to use the current working directory. If no current working directory can't be found, Biome won't use the VCS integration, and a diagnostic will be emitted",
+						type: ["string", "null"],
+					},
+					useIgnoreFile: {
+						description:
+							"Whether Biome should use the VCS ignore file. When [true], Biome will ignore the files specified in the ignore file.",
+						type: ["boolean", "null"],
+					},
+				},
+				additionalProperties: false,
+			},
+		},
+	};
+	return new Response(JSON.stringify(schema), {
+		status: 200,
+		headers: {
+			"content-type": "application/json",
+		},
+	});
+}
diff --git a/website/src/styles/_card.scss b/website/src/styles/_card.scss
index 52a1526b8dbc..5353a8608b49 100644
--- a/website/src/styles/_card.scss
+++ b/website/src/styles/_card.scss
@@ -26,7 +26,7 @@
         margin-bottom: 30px;
 
 
-        .column {
+        .card-column {
             border-right: none !important;
             border-bottom: 1px solid #E9ECEF;
         }
@@ -41,9 +41,10 @@
         padding: 0;
     }
 
-    .column {
+    .card-column {
+        margin-top: 0;
         min-width: 100px;
-        padding: 8px 24px;
+        padding: 8px 24px 24px;
         flex-basis: 0px;
         flex-grow: 1;
         display: flex;