From 332b78b3b6018eca37258e491e9dcd077a6dd63a Mon Sep 17 00:00:00 2001 From: ematipico Date: Fri, 21 Oct 2022 13:45:27 +0100 Subject: [PATCH] feat(rome_js_analyze): promote rules --- .../src/categories.rs | 63 +-- crates/rome_js_analyze/src/analyzers.rs | 4 +- crates/rome_js_analyze/src/analyzers/a11y.rs | 9 + .../{nursery => a11y}/use_anchor_content.rs | 0 .../{nursery => a11y}/use_blank_target.rs | 0 .../use_key_with_click_events.rs | 0 .../use_key_with_mouse_events.rs | 0 .../{nursery => a11y}/use_valid_anchor.rs | 0 .../src/analyzers/complexity.rs | 5 + .../use_simplified_logic_expression.rs | 0 .../src/analyzers/correctness.rs | 6 +- .../{nursery => correctness}/no_auto_focus.rs | 0 .../{nursery => correctness}/no_new_symbol.rs | 0 .../rome_js_analyze/src/analyzers/nursery.rs | 9 +- crates/rome_js_analyze/src/analyzers/style.rs | 3 +- .../{correctness => style}/use_template.rs | 0 .../rome_js_analyze/src/semantic_analyzers.rs | 3 +- .../src/semantic_analyzers/a11y.rs | 6 + .../{nursery => a11y}/no_positive_tabindex.rs | 0 .../{nursery => a11y}/use_button_type.rs | 0 .../src/semantic_analyzers/correctness.rs | 9 +- .../no_array_index_key.rs | 0 .../no_children_prop.rs | 0 .../no_dangerously_set_inner_html.rs | 0 ...angerously_set_inner_html_with_children.rs | 0 .../no_render_return_value.rs | 0 .../no_useless_fragments.rs | 0 .../no_void_elements_with_children.rs | 0 .../src/semantic_analyzers/nursery.rs | 12 +- .../src/semantic_analyzers/style.rs | 3 +- .../{nursery => style}/use_fragment_syntax.rs | 0 .../noAutofocus/noAutoFocusInvalid.jsx | 0 .../noAutofocus/noAutoFocusInvalid.jsx.snap | 20 + .../noAutofocus/noAutoFocusValid.jsx | 0 .../noAutofocus/noAutoFocusValid.jsx.snap | 0 .../noPositiveTabindex/invalidJsx.jsx | 0 .../noPositiveTabindex/invalidJsx.jsx.snap | 21 +- .../reactCreateElementInvalid.js | 0 .../reactCreateElementInvalid.js.snap | 9 +- .../reactCreateElementValid.js | 0 .../reactCreateElementValid.js.snap | 0 .../noPositiveTabindex/validJsx.jsx | 0 .../noPositiveTabindex/validJsx.jsx.snap | 0 .../{nursery => a11y}/useAnchorContent.jsx | 0 .../useAnchorContent.jsx.snap | 23 +- .../{nursery => a11y}/useBlankTarget.jsx | 0 .../{nursery => a11y}/useBlankTarget.jsx.snap | 12 +- .../{nursery => a11y}/useButtonType/inJsx.jsx | 0 .../useButtonType/inJsx.jsx.snap | 4 +- .../useButtonType/inObject.js | 0 .../useButtonType/inObject.js.snap | 8 +- .../useButtonType/withBindingInvalid.js | 0 .../useButtonType/withBindingInvalid.js.snap | 6 +- .../useButtonType/withBindingValid.js | 0 .../useButtonType/withBindingValid.js.snap | 0 .../withDefaultNamespaceInvalid.js | 0 .../withDefaultNamespaceInvalid.js.snap | 4 +- .../useButtonType/withRenamedImportInvalid.js | 0 .../withRenamedImportInvalid.js.snap | 6 +- .../useKeyWithClickEventsInvalid.jsx | 0 .../useKeyWithClickEventsInvalid.jsx.snap | 6 +- .../useKeyWithClickEventsValid.jsx | 0 .../useKeyWithClickEventsValid.jsx.snap | 0 .../useKeyWithMouseEvents.jsx | 0 .../useKeyWithMouseEvents.jsx.snap | 20 +- .../{nursery => a11y}/useValidAnchor.jsx | 2 +- .../{nursery => a11y}/useValidAnchor.jsx.snap | 51 +-- .../useSimplifiedLogicExpression.js | 0 .../useSimplifiedLogicExpression.js.snap | 14 +- .../noArrayIndexKey.jsx | 0 .../noArrayIndexKey.jsx.snap | 26 +- .../noChildrenProp/noChildrenPropInvalid.jsx | 0 .../noChildrenPropInvalid.jsx.snap | 6 +- .../noChildrenProp/noChildrenPropValid.jsx | 0 .../noChildrenPropValid.jsx.snap | 0 .../createElementBindingInvalid.js | 0 .../createElementBindingInvalid.js.snap | 4 +- .../createElementBindingValid.js | 0 .../createElementBindingValid.js.snap | 0 .../noDangerouslySetInnerHtml/insideJsx.jsx | 0 .../insideJsx.jsx.snap | 2 +- .../reactCreateElement.js | 0 .../reactCreateElement.js.snap | 2 +- .../createElement.js | 0 .../createElement.js.snap | 6 +- .../inJsx.jsx | 0 .../inJsx.jsx.snap | 10 +- .../{nursery => correctness}/noNewSymbol.js | 0 .../noNewSymbol.js.snap | 8 +- .../noRenderReturnValue.jsx | 0 .../noRenderReturnValue.jsx.snap | 14 +- .../noUselessFragments/fromImportInvalid.jsx | 0 .../fromImportInvalid.jsx.snap | 4 +- .../fromImportNamespaceInvalid.jsx | 0 .../fromImportNamespaceInvalid.jsx.snap | 2 +- .../fromImportRenameInvalid.jsx | 0 .../fromImportRenameInvalid.jsx.snap | 4 +- .../fromImportRenameValid.jsx | 0 .../fromImportRenameValid.jsx.snap | 0 .../noUselessFragments/fromImportValid.jsx | 0 .../fromImportValid.jsx.snap | 0 .../noUselessFragments/noChildren.jsx | 0 .../noUselessFragments/noChildren.jsx.snap | 6 +- .../noUselessFragments/userDefinedValid.jsx | 0 .../userDefinedValid.jsx.snap | 0 .../noUselessFragments/valid.jsx | 0 .../noUselessFragments/valid.jsx.snap | 0 .../noUselessFragments/withChildren.jsx | 0 .../noUselessFragments/withChildren.jsx.snap | 6 +- .../withCommentsInvalid.jsx | 0 .../withCommentsInvalid.jsx.snap | 6 +- .../withJsxElementInvalid.jsx | 0 .../withJsxElementInvalid.jsx.snap | 2 +- .../withJsxExpressionChildInvalid.jsx | 0 .../withJsxExpressionChildInvalid.jsx.snap | 2 +- .../noUselessFragments/withJsxTextInvalid.jsx | 0 .../withJsxTextInvalid.jsx.snap | 2 +- .../createElement.js | 0 .../createElement.js.snap | 4 +- .../noVoidElementsWithChildren/inJsx.jsx | 0 .../noVoidElementsWithChildren/inJsx.jsx.snap | 12 +- .../noAutofocus/noAutoFocusInvalid.jsx.snap | 199 --------- .../{nursery => style}/useFragmentSyntax.jsx | 0 .../useFragmentSyntax.jsx.snap | 6 +- .../{correctness => style}/useTemplate.js | 0 .../useTemplate.js.snap | 24 +- .../src/configuration/linter/rules.rs | 331 +++++++++++--- editors/vscode/configuration_schema.json | 410 ++++++++++-------- npm/backend-jsonrpc/src/workspace.ts | 114 +++-- website/src/docs/lint/rules/index.md | 284 ++++++------ .../src/docs/lint/rules/noArrayIndexKey.md | 4 +- website/src/docs/lint/rules/noAutofocus.md | 8 +- website/src/docs/lint/rules/noChildrenProp.md | 4 +- .../lint/rules/noDangerouslySetInnerHtml.md | 4 +- .../noDangerouslySetInnerHtmlWithChildren.md | 6 +- website/src/docs/lint/rules/noNewSymbol.md | 2 +- .../src/docs/lint/rules/noPositiveTabindex.md | 6 +- .../docs/lint/rules/noRenderReturnValue.md | 2 +- .../src/docs/lint/rules/noUselessFragments.md | 8 +- .../lint/rules/noVoidElementsWithChildren.md | 6 +- .../src/docs/lint/rules/useAnchorContent.md | 10 +- website/src/docs/lint/rules/useBlankTarget.md | 6 +- website/src/docs/lint/rules/useButtonType.md | 6 +- .../src/docs/lint/rules/useFragmentSyntax.md | 4 +- .../docs/lint/rules/useKeyWithClickEvents.md | 6 +- .../docs/lint/rules/useKeyWithMouseEvents.md | 4 +- .../rules/useSimplifiedLogicExpression.md | 10 +- website/src/docs/lint/rules/useTemplate.md | 10 +- website/src/docs/lint/rules/useValidAnchor.md | 10 +- xtask/lintdoc/src/main.rs | 13 + 150 files changed, 1045 insertions(+), 918 deletions(-) create mode 100644 crates/rome_js_analyze/src/analyzers/a11y.rs rename crates/rome_js_analyze/src/analyzers/{nursery => a11y}/use_anchor_content.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => a11y}/use_blank_target.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => a11y}/use_key_with_click_events.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => a11y}/use_key_with_mouse_events.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => a11y}/use_valid_anchor.rs (100%) create mode 100644 crates/rome_js_analyze/src/analyzers/complexity.rs rename crates/rome_js_analyze/src/analyzers/{correctness => complexity}/use_simplified_logic_expression.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => correctness}/no_auto_focus.rs (100%) rename crates/rome_js_analyze/src/analyzers/{nursery => correctness}/no_new_symbol.rs (100%) rename crates/rome_js_analyze/src/analyzers/{correctness => style}/use_template.rs (100%) create mode 100644 crates/rome_js_analyze/src/semantic_analyzers/a11y.rs rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => a11y}/no_positive_tabindex.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => a11y}/use_button_type.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_array_index_key.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_children_prop.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_dangerously_set_inner_html.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_dangerously_set_inner_html_with_children.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_render_return_value.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_useless_fragments.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => correctness}/no_void_elements_with_children.rs (100%) rename crates/rome_js_analyze/src/semantic_analyzers/{nursery => style}/use_fragment_syntax.rs (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noAutofocus/noAutoFocusInvalid.jsx (100%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx.snap rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noAutofocus/noAutoFocusValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noAutofocus/noAutoFocusValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/invalidJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/invalidJsx.jsx.snap (89%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/reactCreateElementInvalid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/reactCreateElementInvalid.js.snap (76%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/reactCreateElementValid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/reactCreateElementValid.js.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/validJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/noPositiveTabindex/validJsx.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useAnchorContent.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useAnchorContent.jsx.snap (81%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useBlankTarget.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useBlankTarget.jsx.snap (90%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/inJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/inJsx.jsx.snap (89%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/inObject.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/inObject.js.snap (89%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withBindingInvalid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withBindingInvalid.js.snap (91%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withBindingValid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withBindingValid.js.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withDefaultNamespaceInvalid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withDefaultNamespaceInvalid.js.snap (86%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withRenamedImportInvalid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useButtonType/withRenamedImportInvalid.js.snap (85%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithClickEvents/useKeyWithClickEventsInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithClickEvents/useKeyWithClickEventsInvalid.jsx.snap (77%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithClickEvents/useKeyWithClickEventsValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithClickEvents/useKeyWithClickEventsValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithMouseEvents.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useKeyWithMouseEvents.jsx.snap (78%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useValidAnchor.jsx (91%) rename crates/rome_js_analyze/tests/specs/{nursery => a11y}/useValidAnchor.jsx.snap (81%) rename crates/rome_js_analyze/tests/specs/{correctness => complexity}/useSimplifiedLogicExpression.js (100%) rename crates/rome_js_analyze/tests/specs/{correctness => complexity}/useSimplifiedLogicExpression.js.snap (84%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noArrayIndexKey.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noArrayIndexKey.jsx.snap (84%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noChildrenProp/noChildrenPropInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noChildrenProp/noChildrenPropInvalid.jsx.snap (70%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noChildrenProp/noChildrenPropValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noChildrenProp/noChildrenPropValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/createElementBindingInvalid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/createElementBindingInvalid.js.snap (76%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/createElementBindingValid.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/createElementBindingValid.js.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/insideJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/insideJsx.jsx.snap (75%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/reactCreateElement.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtml/reactCreateElement.js.snap (75%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtmlWithChildren/createElement.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtmlWithChildren/createElement.js.snap (88%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtmlWithChildren/inJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noDangerouslySetInnerHtmlWithChildren/inJsx.jsx.snap (87%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noNewSymbol.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noNewSymbol.js.snap (78%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noRenderReturnValue.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noRenderReturnValue.jsx.snap (79%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportInvalid.jsx.snap (73%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportNamespaceInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportNamespaceInvalid.jsx.snap (81%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportRenameInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportRenameInvalid.jsx.snap (78%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportRenameValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportRenameValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/fromImportValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/noChildren.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/noChildren.jsx.snap (68%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/userDefinedValid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/userDefinedValid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/valid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/valid.jsx.snap (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withChildren.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withChildren.jsx.snap (72%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withCommentsInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withCommentsInvalid.jsx.snap (72%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxElementInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxElementInvalid.jsx.snap (69%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxExpressionChildInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxExpressionChildInvalid.jsx.snap (70%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxTextInvalid.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noUselessFragments/withJsxTextInvalid.jsx.snap (64%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noVoidElementsWithChildren/createElement.js (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noVoidElementsWithChildren/createElement.js.snap (76%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noVoidElementsWithChildren/inJsx.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => correctness}/noVoidElementsWithChildren/inJsx.jsx.snap (80%) delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noAutofocus/noAutoFocusInvalid.jsx.snap rename crates/rome_js_analyze/tests/specs/{nursery => style}/useFragmentSyntax.jsx (100%) rename crates/rome_js_analyze/tests/specs/{nursery => style}/useFragmentSyntax.jsx.snap (87%) rename crates/rome_js_analyze/tests/specs/{correctness => style}/useTemplate.js (100%) rename crates/rome_js_analyze/tests/specs/{correctness => style}/useTemplate.js.snap (85%) diff --git a/crates/rome_diagnostics_categories/src/categories.rs b/crates/rome_diagnostics_categories/src/categories.rs index 7a76f72ab372..6f1da6a0abf6 100644 --- a/crates/rome_diagnostics_categories/src/categories.rs +++ b/crates/rome_diagnostics_categories/src/categories.rs @@ -9,6 +9,7 @@ define_dategories! { // Lint categories + // correctness "lint/correctness/noArguments": "https://rome.tools/docs/lint/rules/noArguments", "lint/correctness/noAsyncPromiseExecutor": "https://rome.tools/docs/lint/rules/noAsyncPromiseExecutor", "lint/correctness/noCatchAssign": "https://rome.tools/docs/lint/rules/noCatchAssign", @@ -31,43 +32,49 @@ define_dategories! { "lint/correctness/noUnsafeNegation": "https://rome.tools/docs/lint/rules/noUnsafeNegation", "lint/correctness/noUnusedTemplateLiteral": "https://rome.tools/docs/lint/rules/noUnusedTemplateLiteral", "lint/correctness/useBlockStatements": "https://rome.tools/docs/lint/rules/useBlockStatements", - "lint/correctness/useSimplifiedLogicExpression": "https://rome.tools/docs/lint/rules/useSimplifiedLogicExpression", "lint/correctness/useSingleCaseStatement": "https://rome.tools/docs/lint/rules/useSingleCaseStatement", "lint/correctness/useSingleVarDeclarator": "https://rome.tools/docs/lint/rules/useSingleVarDeclarator", - "lint/correctness/useTemplate": "https://rome.tools/docs/lint/rules/useTemplate", "lint/correctness/useValidTypeof": "https://rome.tools/docs/lint/rules/useValidTypeof", "lint/correctness/useWhile": "https://rome.tools/docs/lint/rules/useWhile", - "lint/nursery/noDangerouslySetInnerHtml": "https://rome.tools/docs/lint/rules/noDangerouslySetInnerHtml", - "lint/nursery/noNewSymbol": "https://rome.tools/docs/lint/rules/noNewSymbol", - "lint/nursery/noRenderReturnValue": "https://rome.tools/docs/lint/rules/noRenderReturnValue", - "lint/nursery/noUnreachable": "https://rome.tools/docs/lint/rules/noUnreachable", - "lint/nursery/noUnusedVariables": "https://rome.tools/docs/lint/rules/noUnusedVariables", - "lint/nursery/noUselessFragments": "https://rome.tools/docs/lint/rules/noUselessFragments", - "lint/nursery/useButtonType": "https://rome.tools/docs/lint/rules/useButtonType", - "lint/nursery/useCamelCase": "https://rome.tools/docs/lint/rules/useCamelCase", - "lint/nursery/useOptionalChain": "https://rome.tools/docs/lint/rules/useOptionalChain", - "lint/nursery/noUndeclaredVariables": "https://rome.tools/docs/lint/rules/noUndeclaredVariables", - "lint/nursery/noVoidElementsWithChildren": "https://rome.tools/docs/lint/rules/noVoidElementsWithChildren", - "lint/nursery/noChildrenProp": "https://rome.tools/docs/lint/rules/noChildrenProp", - "lint/nursery/useFragmentSyntax": "https://rome.tools/docs/lint/rules/useFragmentSyntax", - "lint/nursery/noArrayIndexKey": "https://rome.tools/docs/lint/rules/noArrayIndexKey", - "lint/nursery/noDangerouslySetInnerHtmlWithChildren": "https://rome.tools/docs/lint/rules/noDangerouslySetInnerHtmlWithChildren", - "lint/nursery/noAutofocus": "https://rome.tools/docs/lint/rules/noAutofocus", - "lint/nursery/useKeyWithMouseEvents": "https://rome.tools/docs/lint/rules/useKeyWithMouseEvents", - "lint/nursery/useAnchorContent": "https://rome.tools/docs/lint/rules/useAnchorContent", - "lint/nursery/useBlankTarget": "https://rome.tools/docs/lint/rules/useBlankTarget", - "lint/nursery/useValidAnchor": "https://rome.tools/docs/lint/rules/useValidAnchor", - "lint/nursery/useKeyWithClickEvents": "https://rome.tools/docs/lint/rules/useKeyWithClickEvents", - "lint/nursery/noRestrictedGlobals": "https://rome.tools/docs/lint/rules/noRestrictedGlobals", - "lint/nursery/useFlatMap": "https://rome.tools/docs/lint/rules/useFlatMap", - "lint/nursery/noPositiveTabindex": "https://rome.tools/docs/lint/rules/noPositiveTabindex", - "lint/nursery/noConstAssign": "https://rome.tools/docs/lint/rules/noConstAssign", - "lint/nursery/noExplicitAny": "https://rome.tools/docs/lint/rules/noExplicitAny", + "lint/correctness/noDangerouslySetInnerHtml": "https://rome.tools/docs/lint/rules/noDangerouslySetInnerHtml", + "lint/correctness/noNewSymbol": "https://rome.tools/docs/lint/rules/noNewSymbol", + "lint/correctness/noRenderReturnValue": "https://rome.tools/docs/lint/rules/noRenderReturnValue", + "lint/correctness/noUselessFragments": "https://rome.tools/docs/lint/rules/noUselessFragments", + "lint/correctness/noVoidElementsWithChildren": "https://rome.tools/docs/lint/rules/noVoidElementsWithChildren", + "lint/correctness/noChildrenProp": "https://rome.tools/docs/lint/rules/noChildrenProp", + "lint/correctness/noArrayIndexKey": "https://rome.tools/docs/lint/rules/noArrayIndexKey", + "lint/correctness/noDangerouslySetInnerHtmlWithChildren": "https://rome.tools/docs/lint/rules/noDangerouslySetInnerHtmlWithChildren", + "lint/correctness/noAutofocus": "https://rome.tools/docs/lint/rules/noAutofocus", + // style category "lint/style/noNegationElse": "https://rome.tools/docs/lint/rules/noNegationElse", "lint/style/noShoutyConstants": "https://rome.tools/docs/lint/rules/noShoutyConstants", "lint/style/useSelfClosingElements": "https://rome.tools/docs/lint/rules/useSelfClosingElements", "lint/style/useShorthandArrayType": "https://rome.tools/docs/lint/rules/useShorthandArrayType", + "lint/style/useFragmentSyntax": "https://rome.tools/docs/lint/rules/useFragmentSyntax", + "lint/style/useTemplate": "https://rome.tools/docs/lint/rules/useTemplate", + // complexity + "lint/complexity/useSimplifiedLogicExpression": "https://rome.tools/docs/lint/rules/useSimplifiedLogicExpression", + + // a11y category + "lint/a11y/noPositiveTabindex": "https://rome.tools/docs/lint/rules/noPositiveTabindex", + "lint/a11y/useKeyWithMouseEvents": "https://rome.tools/docs/lint/rules/useKeyWithMouseEvents", + "lint/a11y/useAnchorContent": "https://rome.tools/docs/lint/rules/useAnchorContent", + "lint/a11y/useBlankTarget": "https://rome.tools/docs/lint/rules/useBlankTarget", + "lint/a11y/useValidAnchor": "https://rome.tools/docs/lint/rules/useValidAnchor", + "lint/a11y/useKeyWithClickEvents": "https://rome.tools/docs/lint/rules/useKeyWithClickEvents", + "lint/a11y/useButtonType": "https://rome.tools/docs/lint/rules/useButtonType", + // nursery + "lint/nursery/noRestrictedGlobals": "https://rome.tools/docs/lint/rules/noRestrictedGlobals", + "lint/nursery/useFlatMap": "https://rome.tools/docs/lint/rules/useFlatMap", + "lint/nursery/noConstAssign": "https://rome.tools/docs/lint/rules/noConstAssign", + "lint/nursery/noExplicitAny": "https://rome.tools/docs/lint/rules/noExplicitAny", + "lint/nursery/useCamelCase": "https://rome.tools/docs/lint/rules/useCamelCase", + "lint/nursery/useOptionalChain": "https://rome.tools/docs/lint/rules/useOptionalChain", + "lint/nursery/noUndeclaredVariables": "https://rome.tools/docs/lint/rules/noUndeclaredVariables", + "lint/nursery/noUnreachable": "https://rome.tools/docs/lint/rules/noUnreachable", + "lint/nursery/noUnusedVariables": "https://rome.tools/docs/lint/rules/noUnusedVariables", ; + // General categories "files/missingHandler", "format", diff --git a/crates/rome_js_analyze/src/analyzers.rs b/crates/rome_js_analyze/src/analyzers.rs index 2a9429f2bfa9..2c96a462ed33 100644 --- a/crates/rome_js_analyze/src/analyzers.rs +++ b/crates/rome_js_analyze/src/analyzers.rs @@ -1,6 +1,8 @@ //! Generated file, do not edit by hand, see `xtask/codegen` +mod a11y; +mod complexity; mod correctness; mod nursery; mod style; -::rome_analyze::declare_category! { pub (crate) Analyzers { kind : Lint , groups : [self :: correctness :: Correctness , self :: nursery :: Nursery , self :: style :: Style ,] } } +::rome_analyze::declare_category! { pub (crate) Analyzers { kind : Lint , groups : [self :: a11y :: A11y , self :: complexity :: Complexity , self :: correctness :: Correctness , self :: nursery :: Nursery , self :: style :: Style ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/a11y.rs b/crates/rome_js_analyze/src/analyzers/a11y.rs new file mode 100644 index 000000000000..5ef16a231540 --- /dev/null +++ b/crates/rome_js_analyze/src/analyzers/a11y.rs @@ -0,0 +1,9 @@ +//! Generated file, do not edit by hand, see `xtask/codegen` + +use rome_analyze::declare_group; +mod use_anchor_content; +mod use_blank_target; +mod use_key_with_click_events; +mod use_key_with_mouse_events; +mod use_valid_anchor; +declare_group! { pub (crate) A11y { name : "a11y" , rules : [self :: use_anchor_content :: UseAnchorContent , self :: use_blank_target :: UseBlankTarget , self :: use_key_with_click_events :: UseKeyWithClickEvents , self :: use_key_with_mouse_events :: UseKeyWithMouseEvents , self :: use_valid_anchor :: UseValidAnchor ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/nursery/use_anchor_content.rs b/crates/rome_js_analyze/src/analyzers/a11y/use_anchor_content.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/use_anchor_content.rs rename to crates/rome_js_analyze/src/analyzers/a11y/use_anchor_content.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery/use_blank_target.rs b/crates/rome_js_analyze/src/analyzers/a11y/use_blank_target.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/use_blank_target.rs rename to crates/rome_js_analyze/src/analyzers/a11y/use_blank_target.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery/use_key_with_click_events.rs b/crates/rome_js_analyze/src/analyzers/a11y/use_key_with_click_events.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/use_key_with_click_events.rs rename to crates/rome_js_analyze/src/analyzers/a11y/use_key_with_click_events.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery/use_key_with_mouse_events.rs b/crates/rome_js_analyze/src/analyzers/a11y/use_key_with_mouse_events.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/use_key_with_mouse_events.rs rename to crates/rome_js_analyze/src/analyzers/a11y/use_key_with_mouse_events.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery/use_valid_anchor.rs b/crates/rome_js_analyze/src/analyzers/a11y/use_valid_anchor.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/use_valid_anchor.rs rename to crates/rome_js_analyze/src/analyzers/a11y/use_valid_anchor.rs diff --git a/crates/rome_js_analyze/src/analyzers/complexity.rs b/crates/rome_js_analyze/src/analyzers/complexity.rs new file mode 100644 index 000000000000..6a6a9d127738 --- /dev/null +++ b/crates/rome_js_analyze/src/analyzers/complexity.rs @@ -0,0 +1,5 @@ +//! Generated file, do not edit by hand, see `xtask/codegen` + +use rome_analyze::declare_group; +mod use_simplified_logic_expression; +declare_group! { pub (crate) Complexity { name : "complexity" , rules : [self :: use_simplified_logic_expression :: UseSimplifiedLogicExpression ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/correctness/use_simplified_logic_expression.rs b/crates/rome_js_analyze/src/analyzers/complexity/use_simplified_logic_expression.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/correctness/use_simplified_logic_expression.rs rename to crates/rome_js_analyze/src/analyzers/complexity/use_simplified_logic_expression.rs diff --git a/crates/rome_js_analyze/src/analyzers/correctness.rs b/crates/rome_js_analyze/src/analyzers/correctness.rs index b367a21a9105..180d8339f46c 100644 --- a/crates/rome_js_analyze/src/analyzers/correctness.rs +++ b/crates/rome_js_analyze/src/analyzers/correctness.rs @@ -2,6 +2,7 @@ use rome_analyze::declare_group; mod no_async_promise_executor; +mod no_auto_focus; mod no_comment_text; mod no_compare_neg_zero; mod no_debugger; @@ -11,16 +12,15 @@ mod no_empty_pattern; mod no_extra_boolean_cast; mod no_implicit_boolean; mod no_multiple_spaces_in_regular_expression_literals; +mod no_new_symbol; mod no_shadow_restricted_names; mod no_sparse_array; mod no_unnecessary_continue; mod no_unsafe_negation; mod no_unused_template_literal; mod use_block_statements; -mod use_simplified_logic_expression; mod use_single_case_statement; mod use_single_var_declarator; -mod use_template; mod use_valid_typeof; mod use_while; -declare_group! { pub (crate) Correctness { name : "correctness" , rules : [self :: no_async_promise_executor :: NoAsyncPromiseExecutor , self :: no_comment_text :: NoCommentText , self :: no_compare_neg_zero :: NoCompareNegZero , self :: no_debugger :: NoDebugger , self :: no_delete :: NoDelete , self :: no_double_equals :: NoDoubleEquals , self :: no_empty_pattern :: NoEmptyPattern , self :: no_extra_boolean_cast :: NoExtraBooleanCast , self :: no_implicit_boolean :: NoImplicitBoolean , self :: no_multiple_spaces_in_regular_expression_literals :: NoMultipleSpacesInRegularExpressionLiterals , self :: no_shadow_restricted_names :: NoShadowRestrictedNames , self :: no_sparse_array :: NoSparseArray , self :: no_unnecessary_continue :: NoUnnecessaryContinue , self :: no_unsafe_negation :: NoUnsafeNegation , self :: no_unused_template_literal :: NoUnusedTemplateLiteral , self :: use_block_statements :: UseBlockStatements , self :: use_simplified_logic_expression :: UseSimplifiedLogicExpression , self :: use_single_case_statement :: UseSingleCaseStatement , self :: use_single_var_declarator :: UseSingleVarDeclarator , self :: use_template :: UseTemplate , self :: use_valid_typeof :: UseValidTypeof , self :: use_while :: UseWhile ,] } } +declare_group! { pub (crate) Correctness { name : "correctness" , rules : [self :: no_async_promise_executor :: NoAsyncPromiseExecutor , self :: no_auto_focus :: NoAutoFocus , self :: no_comment_text :: NoCommentText , self :: no_compare_neg_zero :: NoCompareNegZero , self :: no_debugger :: NoDebugger , self :: no_delete :: NoDelete , self :: no_double_equals :: NoDoubleEquals , self :: no_empty_pattern :: NoEmptyPattern , self :: no_extra_boolean_cast :: NoExtraBooleanCast , self :: no_implicit_boolean :: NoImplicitBoolean , self :: no_multiple_spaces_in_regular_expression_literals :: NoMultipleSpacesInRegularExpressionLiterals , self :: no_new_symbol :: NoNewSymbol , self :: no_shadow_restricted_names :: NoShadowRestrictedNames , self :: no_sparse_array :: NoSparseArray , self :: no_unnecessary_continue :: NoUnnecessaryContinue , self :: no_unsafe_negation :: NoUnsafeNegation , self :: no_unused_template_literal :: NoUnusedTemplateLiteral , self :: use_block_statements :: UseBlockStatements , self :: use_single_case_statement :: UseSingleCaseStatement , self :: use_single_var_declarator :: UseSingleVarDeclarator , self :: use_valid_typeof :: UseValidTypeof , self :: use_while :: UseWhile ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/nursery/no_auto_focus.rs b/crates/rome_js_analyze/src/analyzers/correctness/no_auto_focus.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/no_auto_focus.rs rename to crates/rome_js_analyze/src/analyzers/correctness/no_auto_focus.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery/no_new_symbol.rs b/crates/rome_js_analyze/src/analyzers/correctness/no_new_symbol.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/nursery/no_new_symbol.rs rename to crates/rome_js_analyze/src/analyzers/correctness/no_new_symbol.rs diff --git a/crates/rome_js_analyze/src/analyzers/nursery.rs b/crates/rome_js_analyze/src/analyzers/nursery.rs index 14e014c97c27..76f4414102d2 100644 --- a/crates/rome_js_analyze/src/analyzers/nursery.rs +++ b/crates/rome_js_analyze/src/analyzers/nursery.rs @@ -1,14 +1,7 @@ //! Generated file, do not edit by hand, see `xtask/codegen` use rome_analyze::declare_group; -mod no_auto_focus; -mod no_new_symbol; mod no_unreachable; -mod use_anchor_content; -mod use_blank_target; mod use_flat_map; -mod use_key_with_click_events; -mod use_key_with_mouse_events; mod use_optional_chain; -mod use_valid_anchor; -declare_group! { pub (crate) Nursery { name : "nursery" , rules : [self :: no_auto_focus :: NoAutoFocus , self :: no_new_symbol :: NoNewSymbol , self :: no_unreachable :: NoUnreachable , self :: use_anchor_content :: UseAnchorContent , self :: use_blank_target :: UseBlankTarget , self :: use_flat_map :: UseFlatMap , self :: use_key_with_click_events :: UseKeyWithClickEvents , self :: use_key_with_mouse_events :: UseKeyWithMouseEvents , self :: use_optional_chain :: UseOptionalChain , self :: use_valid_anchor :: UseValidAnchor ,] } } +declare_group! { pub (crate) Nursery { name : "nursery" , rules : [self :: no_unreachable :: NoUnreachable , self :: use_flat_map :: UseFlatMap , self :: use_optional_chain :: UseOptionalChain ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/style.rs b/crates/rome_js_analyze/src/analyzers/style.rs index 61a2608c1cc7..5583302d6714 100644 --- a/crates/rome_js_analyze/src/analyzers/style.rs +++ b/crates/rome_js_analyze/src/analyzers/style.rs @@ -4,4 +4,5 @@ use rome_analyze::declare_group; mod no_negation_else; mod use_self_closing_elements; mod use_shorthand_array_type; -declare_group! { pub (crate) Style { name : "style" , rules : [self :: no_negation_else :: NoNegationElse , self :: use_self_closing_elements :: UseSelfClosingElements , self :: use_shorthand_array_type :: UseShorthandArrayType ,] } } +mod use_template; +declare_group! { pub (crate) Style { name : "style" , rules : [self :: no_negation_else :: NoNegationElse , self :: use_self_closing_elements :: UseSelfClosingElements , self :: use_shorthand_array_type :: UseShorthandArrayType , self :: use_template :: UseTemplate ,] } } diff --git a/crates/rome_js_analyze/src/analyzers/correctness/use_template.rs b/crates/rome_js_analyze/src/analyzers/style/use_template.rs similarity index 100% rename from crates/rome_js_analyze/src/analyzers/correctness/use_template.rs rename to crates/rome_js_analyze/src/analyzers/style/use_template.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers.rs b/crates/rome_js_analyze/src/semantic_analyzers.rs index e75ba2dc4108..53c4e5088d56 100644 --- a/crates/rome_js_analyze/src/semantic_analyzers.rs +++ b/crates/rome_js_analyze/src/semantic_analyzers.rs @@ -1,6 +1,7 @@ //! Generated file, do not edit by hand, see `xtask/codegen` +mod a11y; mod correctness; mod nursery; mod style; -::rome_analyze::declare_category! { pub (crate) SemanticAnalyzers { kind : Lint , groups : [self :: correctness :: Correctness , self :: nursery :: Nursery , self :: style :: Style ,] } } +::rome_analyze::declare_category! { pub (crate) SemanticAnalyzers { kind : Lint , groups : [self :: a11y :: A11y , self :: correctness :: Correctness , self :: nursery :: Nursery , self :: style :: Style ,] } } diff --git a/crates/rome_js_analyze/src/semantic_analyzers/a11y.rs b/crates/rome_js_analyze/src/semantic_analyzers/a11y.rs new file mode 100644 index 000000000000..f000972b0654 --- /dev/null +++ b/crates/rome_js_analyze/src/semantic_analyzers/a11y.rs @@ -0,0 +1,6 @@ +//! Generated file, do not edit by hand, see `xtask/codegen` + +use rome_analyze::declare_group; +mod no_positive_tabindex; +mod use_button_type; +declare_group! { pub (crate) A11y { name : "a11y" , rules : [self :: no_positive_tabindex :: NoPositiveTabindex , self :: use_button_type :: UseButtonType ,] } } diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_positive_tabindex.rs b/crates/rome_js_analyze/src/semantic_analyzers/a11y/no_positive_tabindex.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_positive_tabindex.rs rename to crates/rome_js_analyze/src/semantic_analyzers/a11y/no_positive_tabindex.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/use_button_type.rs b/crates/rome_js_analyze/src/semantic_analyzers/a11y/use_button_type.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/use_button_type.rs rename to crates/rome_js_analyze/src/semantic_analyzers/a11y/use_button_type.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/correctness.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness.rs index 81eab90df8a8..7dfa51376f67 100644 --- a/crates/rome_js_analyze/src/semantic_analyzers/correctness.rs +++ b/crates/rome_js_analyze/src/semantic_analyzers/correctness.rs @@ -2,9 +2,16 @@ use rome_analyze::declare_group; mod no_arguments; +mod no_array_index_key; mod no_catch_assign; +mod no_children_prop; +mod no_dangerously_set_inner_html; +mod no_dangerously_set_inner_html_with_children; mod no_dupe_args; mod no_function_assign; mod no_import_assign; mod no_label_var; -declare_group! { pub (crate) Correctness { name : "correctness" , rules : [self :: no_arguments :: NoArguments , self :: no_catch_assign :: NoCatchAssign , self :: no_dupe_args :: NoDupeArgs , self :: no_function_assign :: NoFunctionAssign , self :: no_import_assign :: NoImportAssign , self :: no_label_var :: NoLabelVar ,] } } +mod no_render_return_value; +mod no_useless_fragments; +mod no_void_elements_with_children; +declare_group! { pub (crate) Correctness { name : "correctness" , rules : [self :: no_arguments :: NoArguments , self :: no_array_index_key :: NoArrayIndexKey , self :: no_catch_assign :: NoCatchAssign , self :: no_children_prop :: NoChildrenProp , self :: no_dangerously_set_inner_html :: NoDangerouslySetInnerHtml , self :: no_dangerously_set_inner_html_with_children :: NoDangerouslySetInnerHtmlWithChildren , self :: no_dupe_args :: NoDupeArgs , self :: no_function_assign :: NoFunctionAssign , self :: no_import_assign :: NoImportAssign , self :: no_label_var :: NoLabelVar , self :: no_render_return_value :: NoRenderReturnValue , self :: no_useless_fragments :: NoUselessFragments , self :: no_void_elements_with_children :: NoVoidElementsWithChildren ,] } } diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_array_index_key.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_array_index_key.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_array_index_key.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_array_index_key.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_children_prop.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_children_prop.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_children_prop.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_children_prop.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_dangerously_set_inner_html.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_dangerously_set_inner_html.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_dangerously_set_inner_html.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_dangerously_set_inner_html.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_dangerously_set_inner_html_with_children.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_dangerously_set_inner_html_with_children.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_dangerously_set_inner_html_with_children.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_dangerously_set_inner_html_with_children.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_render_return_value.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_render_return_value.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_render_return_value.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_render_return_value.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_useless_fragments.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_useless_fragments.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_useless_fragments.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_useless_fragments.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/no_void_elements_with_children.rs b/crates/rome_js_analyze/src/semantic_analyzers/correctness/no_void_elements_with_children.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/no_void_elements_with_children.rs rename to crates/rome_js_analyze/src/semantic_analyzers/correctness/no_void_elements_with_children.rs diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery.rs b/crates/rome_js_analyze/src/semantic_analyzers/nursery.rs index aa9463f3fb0d..f89feef288b5 100644 --- a/crates/rome_js_analyze/src/semantic_analyzers/nursery.rs +++ b/crates/rome_js_analyze/src/semantic_analyzers/nursery.rs @@ -1,20 +1,10 @@ //! Generated file, do not edit by hand, see `xtask/codegen` use rome_analyze::declare_group; -mod no_array_index_key; -mod no_children_prop; mod no_const_assign; -mod no_dangerously_set_inner_html; -mod no_dangerously_set_inner_html_with_children; mod no_explicit_any; -mod no_positive_tabindex; -mod no_render_return_value; mod no_restricted_globals; mod no_undeclared_variables; mod no_unused_variables; -mod no_useless_fragments; -mod no_void_elements_with_children; -mod use_button_type; mod use_camel_case; -mod use_fragment_syntax; -declare_group! { pub (crate) Nursery { name : "nursery" , rules : [self :: no_array_index_key :: NoArrayIndexKey , self :: no_children_prop :: NoChildrenProp , self :: no_const_assign :: NoConstAssign , self :: no_dangerously_set_inner_html :: NoDangerouslySetInnerHtml , self :: no_dangerously_set_inner_html_with_children :: NoDangerouslySetInnerHtmlWithChildren , self :: no_explicit_any :: NoExplicitAny , self :: no_positive_tabindex :: NoPositiveTabindex , self :: no_render_return_value :: NoRenderReturnValue , self :: no_restricted_globals :: NoRestrictedGlobals , self :: no_undeclared_variables :: NoUndeclaredVariables , self :: no_unused_variables :: NoUnusedVariables , self :: no_useless_fragments :: NoUselessFragments , self :: no_void_elements_with_children :: NoVoidElementsWithChildren , self :: use_button_type :: UseButtonType , self :: use_camel_case :: UseCamelCase , self :: use_fragment_syntax :: UseFragmentSyntax ,] } } +declare_group! { pub (crate) Nursery { name : "nursery" , rules : [self :: no_const_assign :: NoConstAssign , self :: no_explicit_any :: NoExplicitAny , self :: no_restricted_globals :: NoRestrictedGlobals , self :: no_undeclared_variables :: NoUndeclaredVariables , self :: no_unused_variables :: NoUnusedVariables , self :: use_camel_case :: UseCamelCase ,] } } diff --git a/crates/rome_js_analyze/src/semantic_analyzers/style.rs b/crates/rome_js_analyze/src/semantic_analyzers/style.rs index bbb21d403ed6..b2759a4cdf1b 100644 --- a/crates/rome_js_analyze/src/semantic_analyzers/style.rs +++ b/crates/rome_js_analyze/src/semantic_analyzers/style.rs @@ -2,4 +2,5 @@ use rome_analyze::declare_group; mod no_shouty_constants; -declare_group! { pub (crate) Style { name : "style" , rules : [self :: no_shouty_constants :: NoShoutyConstants ,] } } +mod use_fragment_syntax; +declare_group! { pub (crate) Style { name : "style" , rules : [self :: no_shouty_constants :: NoShoutyConstants , self :: use_fragment_syntax :: UseFragmentSyntax ,] } } diff --git a/crates/rome_js_analyze/src/semantic_analyzers/nursery/use_fragment_syntax.rs b/crates/rome_js_analyze/src/semantic_analyzers/style/use_fragment_syntax.rs similarity index 100% rename from crates/rome_js_analyze/src/semantic_analyzers/nursery/use_fragment_syntax.rs rename to crates/rome_js_analyze/src/semantic_analyzers/style/use_fragment_syntax.rs diff --git a/crates/rome_js_analyze/tests/specs/nursery/noAutofocus/noAutoFocusInvalid.jsx b/crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx similarity index 100% rename from crates/rome_js_analyze/tests/specs/nursery/noAutofocus/noAutoFocusInvalid.jsx rename to crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx diff --git a/crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx.snap b/crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx.snap new file mode 100644 index 000000000000..4aac215237d4 --- /dev/null +++ b/crates/rome_js_analyze/tests/specs/a11y/noAutofocus/noAutoFocusInvalid.jsx.snap @@ -0,0 +1,20 @@ +--- +source: crates/rome_js_analyze/tests/spec_tests.rs +expression: noAutoFocusInvalid.jsx +--- +# Input +```js +<> + ``` -{% raw %}
nursery/useButtonType.js:1:1 lint/nursery/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useButtonType.js:1:1 lint/a11y/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide an explicit type prop for the button element.
   
@@ -33,7 +33,7 @@ Enforces the usage of the attribute `type` for the element `button`
 
 ```
 
-{% raw %}
nursery/useButtonType.js:1:14 lint/nursery/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useButtonType.js:1:14 lint/a11y/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide a valid type prop for the button element.
   
@@ -51,7 +51,7 @@ Enforces the usage of the attribute `type` for the element `button`
 React.createElement('button');
 ```
 
-{% raw %}
nursery/useButtonType.js:1:21 lint/nursery/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useButtonType.js:1:21 lint/a11y/useButtonType ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide an explicit type prop for the button element.
   
diff --git a/website/src/docs/lint/rules/useFragmentSyntax.md b/website/src/docs/lint/rules/useFragmentSyntax.md
index 8e1b6535c943..450993d5f593 100644
--- a/website/src/docs/lint/rules/useFragmentSyntax.md
+++ b/website/src/docs/lint/rules/useFragmentSyntax.md
@@ -17,7 +17,7 @@ The shorthand fragment syntax saves keystrokes and is only inapplicable when key
 child
 ```
 
-{% raw %}
nursery/useFragmentSyntax.js:1:1 lint/nursery/useFragmentSyntax  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useFragmentSyntax.js:1:1 lint/style/useFragmentSyntax  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use shorthand syntax for Fragment elements instead of standard syntax.
   
@@ -37,7 +37,7 @@ The shorthand fragment syntax saves keystrokes and is only inapplicable when key
 child
 ```
 
-{% raw %}
nursery/useFragmentSyntax.js:1:1 lint/nursery/useFragmentSyntax  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useFragmentSyntax.js:1:1 lint/style/useFragmentSyntax  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use shorthand syntax for Fragment elements instead of standard syntax.
   
diff --git a/website/src/docs/lint/rules/useKeyWithClickEvents.md b/website/src/docs/lint/rules/useKeyWithClickEvents.md
index 1917777c5e46..a87568dbea14 100644
--- a/website/src/docs/lint/rules/useKeyWithClickEvents.md
+++ b/website/src/docs/lint/rules/useKeyWithClickEvents.md
@@ -15,7 +15,7 @@ Enforce to have the `onClick` mouse event with the `onKeyUp`, the `onKeyDown`, o
 
{}} /> ``` -{% raw %}
nursery/useKeyWithClickEvents.js:1:1 lint/nursery/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useKeyWithClickEvents.js:1:1 lint/a11y/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
   
@@ -31,7 +31,7 @@ Enforce to have the `onClick` mouse event with the `onKeyUp`, the `onKeyDown`, o
 
{}} >
``` -{% raw %}
nursery/useKeyWithClickEvents.js:1:1 lint/nursery/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useKeyWithClickEvents.js:1:1 lint/a11y/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
   
@@ -47,7 +47,7 @@ Enforce to have the `onClick` mouse event with the `onKeyUp`, the `onKeyDown`, o
 
{}} >
``` -{% raw %}
nursery/useKeyWithClickEvents.js:1:1 lint/nursery/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useKeyWithClickEvents.js:1:1 lint/a11y/useKeyWithClickEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
   
diff --git a/website/src/docs/lint/rules/useKeyWithMouseEvents.md b/website/src/docs/lint/rules/useKeyWithMouseEvents.md
index b358971ae554..9dd7fd6c1d0b 100644
--- a/website/src/docs/lint/rules/useKeyWithMouseEvents.md
+++ b/website/src/docs/lint/rules/useKeyWithMouseEvents.md
@@ -17,7 +17,7 @@ who use assistive technology or screenreader.
    
{}} /> ``` -{% raw %}
nursery/useKeyWithMouseEvents.js:1:4 lint/nursery/useKeyWithMouseEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useKeyWithMouseEvents.js:1:4 lint/a11y/useKeyWithMouseEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    onMouseOver must be accompanied by onFocus for accessibility.
   
@@ -33,7 +33,7 @@ who use assistive technology or screenreader.
    
{}} /> ``` -{% raw %}
nursery/useKeyWithMouseEvents.js:1:4 lint/nursery/useKeyWithMouseEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useKeyWithMouseEvents.js:1:4 lint/a11y/useKeyWithMouseEvents ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    onMouseOut must be accompanied by onBlur for accessibility.
   
diff --git a/website/src/docs/lint/rules/useSimplifiedLogicExpression.md b/website/src/docs/lint/rules/useSimplifiedLogicExpression.md
index 059dca078915..c5a789c03414 100644
--- a/website/src/docs/lint/rules/useSimplifiedLogicExpression.md
+++ b/website/src/docs/lint/rules/useSimplifiedLogicExpression.md
@@ -18,7 +18,7 @@ const boolExp = true;
 const r = true && boolExp;
 ```
 
-{% raw %}
correctness/useSimplifiedLogicExpression.js:2:11 lint/correctness/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
+{% raw %}
complexity/useSimplifiedLogicExpression.js:2:11 lint/complexity/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
 
    Logical expression contains unnecessary complexity.
   
@@ -38,7 +38,7 @@ const boolExp2 = true;
 const r2 = boolExp || true;
 ```
 
-{% raw %}
correctness/useSimplifiedLogicExpression.js:2:12 lint/correctness/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
+{% raw %}
complexity/useSimplifiedLogicExpression.js:2:12 lint/complexity/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
 
    Logical expression contains unnecessary complexity.
   
@@ -58,7 +58,7 @@ const nonNullExp = 123;
 const r3 = null ?? nonNullExp;
 ```
 
-{% raw %}
correctness/useSimplifiedLogicExpression.js:2:12 lint/correctness/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
+{% raw %}
complexity/useSimplifiedLogicExpression.js:2:12 lint/complexity/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
 
    Logical expression contains unnecessary complexity.
   
@@ -79,7 +79,7 @@ const boolExpr2 = false;
 const r4 = !boolExpr1 || !boolExpr2;
 ```
 
-{% raw %}
correctness/useSimplifiedLogicExpression.js:3:12 lint/correctness/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
+{% raw %}
complexity/useSimplifiedLogicExpression.js:3:12 lint/complexity/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
 
    Logical expression contains unnecessary complexity.
   
@@ -104,7 +104,7 @@ const boolExp2 = true;
 const r2 = !!boolExp2;
 ```
 
-{% raw %}
correctness/useSimplifiedLogicExpression.js:2:12 lint/correctness/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
+{% raw %}
complexity/useSimplifiedLogicExpression.js:2:12 lint/complexity/useSimplifiedLogicExpression  FIXABLE  ━━━━━━━━━━
 
    Logical expression contains unnecessary complexity.
   
diff --git a/website/src/docs/lint/rules/useTemplate.md b/website/src/docs/lint/rules/useTemplate.md
index 746a8969f85d..9cd921661cff 100644
--- a/website/src/docs/lint/rules/useTemplate.md
+++ b/website/src/docs/lint/rules/useTemplate.md
@@ -17,7 +17,7 @@ Template literals are preferred over string concatenation.
 console.log(foo + "baz");
 ```
 
-{% raw %}
correctness/useTemplate.js:1:13 lint/correctness/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useTemplate.js:1:13 lint/style/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Template literals are preferred over string concatenation.
   
@@ -37,7 +37,7 @@ console.log(foo + "baz");
 console.log(1 * 2 + "foo");
 ```
 
-{% raw %}
correctness/useTemplate.js:1:13 lint/correctness/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useTemplate.js:1:13 lint/style/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Template literals are preferred over string concatenation.
   
@@ -57,7 +57,7 @@ console.log(1 * 2 + "foo");
 console.log(1 + "foo" + 2 + "bar" + "baz" + 3);
 ```
 
-{% raw %}
correctness/useTemplate.js:1:13 lint/correctness/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useTemplate.js:1:13 lint/style/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Template literals are preferred over string concatenation.
   
@@ -77,7 +77,7 @@ console.log(1 + "foo" + 2 + "bar" + "baz" + 3);
 console.log((1 + "foo") * 2);
 ```
 
-{% raw %}
correctness/useTemplate.js:1:14 lint/correctness/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useTemplate.js:1:14 lint/style/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Template literals are preferred over string concatenation.
   
@@ -97,7 +97,7 @@ console.log((1 + "foo") * 2);
 console.log("foo" + 1);
 ```
 
-{% raw %}
correctness/useTemplate.js:1:13 lint/correctness/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
style/useTemplate.js:1:13 lint/style/useTemplate  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Template literals are preferred over string concatenation.
   
diff --git a/website/src/docs/lint/rules/useValidAnchor.md b/website/src/docs/lint/rules/useValidAnchor.md
index 5358f117ccec..33cdfa3ce9f6 100644
--- a/website/src/docs/lint/rules/useValidAnchor.md
+++ b/website/src/docs/lint/rules/useValidAnchor.md
@@ -35,7 +35,7 @@ in another tab, but the default "click" behaviour is prevented;
 navigate here
 ```
 
-{% raw %}
nursery/useValidAnchor.js:1:10 lint/nursery/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useValidAnchor.js:1:10 lint/a11y/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide a valid value for the attribute href.
   
@@ -53,7 +53,7 @@ in another tab, but the default "click" behaviour is prevented;
 navigate here
 ```
 
-{% raw %}
nursery/useValidAnchor.js:1:10 lint/nursery/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useValidAnchor.js:1:10 lint/a11y/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide a valid value for the attribute href.
   
@@ -71,7 +71,7 @@ in another tab, but the default "click" behaviour is prevented;
 navigate here
 ```
 
-{% raw %}
nursery/useValidAnchor.js:1:4 lint/nursery/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useValidAnchor.js:1:4 lint/a11y/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    The attribute href has to be assigned to a valid value.
   
@@ -89,7 +89,7 @@ in another tab, but the default "click" behaviour is prevented;
 navigate here
 ```
 
-{% raw %}
nursery/useValidAnchor.js:1:9 lint/nursery/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useValidAnchor.js:1:9 lint/a11y/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Provide a valid value for the attribute href.
   
@@ -107,7 +107,7 @@ in another tab, but the default "click" behaviour is prevented;
 navigate here
 ```
 
-{% raw %}
nursery/useValidAnchor.js:1:1 lint/nursery/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+{% raw %}
a11y/useValidAnchor.js:1:1 lint/a11y/useValidAnchor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
    Use a button element instead of an a element.
   
diff --git a/xtask/lintdoc/src/main.rs b/xtask/lintdoc/src/main.rs
index 957097628a83..bc68111c2242 100644
--- a/xtask/lintdoc/src/main.rs
+++ b/xtask/lintdoc/src/main.rs
@@ -91,6 +91,12 @@ fn main() -> Result<()> {
 
     for (group, rules) in groups {
         let (group_name, description) = match group {
+            "a11y" => (
+                "Accessibility",
+                markup! {
+                    "Rules focused on preventing accessibility problems."
+                },
+            ),
             "correctness" => (
                 "Correctness",
                 markup! {
@@ -98,6 +104,13 @@ fn main() -> Result<()> {
                 },
             ),
 
+            "complexity" => (
+                "Complexity",
+                markup! {
+                    "Rules that focus on inspecting complex code that could be simplified."
+                },
+            ),
+
             "nursery" => (
                 "Nursery",
                 markup! {