@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -23
- package/lib/defaultFormat.d.ts +10 -6
- package/lib/defaultFormat.js +10 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +5 -5
- package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
- package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
- package/lib/structures/format/ITtscLintFormat.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
- package/lib/structures/format/index.d.ts +3 -0
- package/lib/structures/format/index.js +20 -0
- package/lib/structures/format/index.js.map +1 -0
- package/lib/structures/index.d.ts +1 -1
- package/lib/structures/index.js +1 -1
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
- package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
- package/linthost/config.go +89 -72
- package/linthost/config_format.go +265 -99
- package/linthost/directives.go +5 -1
- package/linthost/display_width.go +72 -0
- package/linthost/fix.go +26 -1
- package/linthost/format.go +222 -25
- package/linthost/format_editor_settings.go +262 -0
- package/linthost/lsp.go +8 -4
- package/linthost/print_dispatch.go +3 -0
- package/linthost/print_doc.go +13 -0
- package/linthost/print_engine.go +68 -11
- package/linthost/print_nodes_array.go +108 -5
- package/linthost/print_nodes_call.go +515 -74
- package/linthost/print_nodes_function.go +25 -0
- package/linthost/print_nodes_imports.go +47 -14
- package/linthost/print_nodes_list.go +191 -8
- package/linthost/print_nodes_object.go +12 -6
- package/linthost/print_nodes_ternary.go +106 -0
- package/linthost/rules_boundaries.go +400 -400
- package/linthost/rules_camelcase.go +81 -81
- package/linthost/rules_complexity.go +52 -51
- package/linthost/rules_consistent_return.go +81 -81
- package/linthost/rules_core_extra.go +472 -472
- package/linthost/rules_curly.go +43 -43
- package/linthost/rules_default_case.go +15 -15
- package/linthost/rules_default_case_last.go +22 -22
- package/linthost/rules_format_arrow_parens.go +167 -0
- package/linthost/rules_format_bracket_spacing.go +117 -0
- package/linthost/rules_format_clause_join.go +172 -0
- package/linthost/rules_format_declaration_header.go +664 -0
- package/linthost/rules_format_indent.go +616 -0
- package/linthost/rules_format_jsdoc.go +4 -4
- package/linthost/rules_format_orphan_semi.go +106 -0
- package/linthost/rules_format_parameter_properties.go +175 -0
- package/linthost/rules_format_print_width.go +185 -69
- package/linthost/rules_format_quote_props.go +169 -0
- package/linthost/rules_format_quotes.go +75 -29
- package/linthost/rules_format_semi.go +185 -10
- package/linthost/rules_format_sort_imports.go +456 -121
- package/linthost/rules_format_statement_split.go +368 -0
- package/linthost/rules_format_ternary_nullish_parens.go +77 -0
- package/linthost/rules_format_trailing_comma.go +21 -2
- package/linthost/rules_format_whitespace.go +336 -0
- package/linthost/rules_functional.go +688 -688
- package/linthost/rules_gap.go +146 -11
- package/linthost/rules_grouped_accessor_pairs.go +60 -60
- package/linthost/rules_guard_for_in.go +122 -122
- package/linthost/rules_id_length.go +44 -44
- package/linthost/rules_imports.go +11 -3
- package/linthost/rules_init_declarations.go +25 -25
- package/linthost/rules_jsx_a11y.go +844 -844
- package/linthost/rules_max_classes_per_file.go +24 -24
- package/linthost/rules_max_depth.go +43 -43
- package/linthost/rules_max_lines.go +53 -53
- package/linthost/rules_max_lines_per_function.go +28 -28
- package/linthost/rules_max_nested_callbacks.go +26 -26
- package/linthost/rules_max_params.go +20 -20
- package/linthost/rules_max_statements.go +29 -29
- package/linthost/rules_nextjs.go +5 -5
- package/linthost/rules_no_else_return.go +38 -38
- package/linthost/rules_no_empty_named_blocks.go +45 -45
- package/linthost/rules_no_import_assign.go +96 -96
- package/linthost/rules_no_invalid_this.go +19 -19
- package/linthost/rules_no_loop_func.go +43 -43
- package/linthost/rules_no_magic_numbers.go +60 -60
- package/linthost/rules_no_mixed_operators.go +44 -44
- package/linthost/rules_no_param_reassign.go +64 -64
- package/linthost/rules_no_restricted_imports.go +45 -45
- package/linthost/rules_no_restricted_syntax.go +17 -17
- package/linthost/rules_no_shadow.go +112 -112
- package/linthost/rules_no_unreachable.go +36 -36
- package/linthost/rules_no_useless_assignment.go +79 -79
- package/linthost/rules_no_useless_constructor.go +167 -167
- package/linthost/rules_no_useless_return.go +28 -28
- package/linthost/rules_prefer_arrow_callback.go +74 -74
- package/linthost/rules_prefer_destructuring.go +61 -61
- package/linthost/rules_prefer_named_capture_group.go +87 -87
- package/linthost/rules_prefer_rest_params.go +61 -61
- package/linthost/rules_promise.go +800 -800
- package/linthost/rules_react.go +600 -600
- package/linthost/rules_react_extras.go +162 -162
- package/linthost/rules_react_hooks.go +2 -2
- package/linthost/rules_react_perf.go +231 -231
- package/linthost/rules_regexp.go +293 -293
- package/linthost/rules_security.go +613 -613
- package/linthost/rules_sort_imports.go +37 -37
- package/linthost/rules_sort_keys.go +88 -88
- package/linthost/rules_suggestions.go +13 -0
- package/linthost/rules_ts.go +2 -2
- package/linthost/rules_ts_async.go +247 -247
- package/linthost/rules_ts_class_literal_property_style.go +64 -64
- package/linthost/rules_ts_consistent_type_exports.go +209 -209
- package/linthost/rules_ts_explicit_function_return_type.go +35 -35
- package/linthost/rules_ts_extra.go +6 -2
- package/linthost/rules_ts_no_base_to_string.go +140 -140
- package/linthost/rules_ts_no_confusing_void.go +28 -28
- package/linthost/rules_ts_no_deprecated.go +110 -110
- package/linthost/rules_ts_no_for_in_array.go +45 -45
- package/linthost/rules_ts_no_magic_numbers.go +67 -67
- package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
- package/linthost/rules_ts_no_misused_spread.go +64 -64
- package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
- package/linthost/rules_ts_no_restricted_types.go +28 -28
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
- package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
- package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
- package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
- package/linthost/rules_ts_no_unsafe_argument.go +50 -50
- package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
- package/linthost/rules_ts_no_unsafe_call.go +40 -40
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
- package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
- package/linthost/rules_ts_no_unsafe_return.go +64 -64
- package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
- package/linthost/rules_ts_no_useless_constructor.go +20 -20
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
- package/linthost/rules_ts_parameter_properties.go +10 -10
- package/linthost/rules_ts_prefer_find.go +116 -116
- package/linthost/rules_ts_prefer_includes.go +173 -173
- package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
- package/linthost/rules_ts_prefer_optional_chain.go +156 -156
- package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
- package/linthost/rules_ts_prefer_readonly.go +31 -31
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
- package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
- package/linthost/rules_ts_prefer_return_this_type.go +79 -79
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
- package/linthost/rules_ts_promise_function_async.go +41 -41
- package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
- package/linthost/rules_ts_require_array_sort_compare.go +58 -58
- package/linthost/rules_ts_restrict_plus_operands.go +82 -82
- package/linthost/rules_ts_restrict_template_expressions.go +50 -50
- package/linthost/rules_ts_simple.go +249 -249
- package/linthost/rules_ts_sort_type_constituents.go +88 -88
- package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
- package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
- package/linthost/rules_ts_unbound_method.go +65 -65
- package/linthost/rules_tsdoc.go +88 -88
- package/linthost/rules_unicorn_better_regex.go +1 -1
- package/linthost/rules_unicorn_catch_error_name.go +19 -19
- package/linthost/rules_unicorn_consistent_assert.go +20 -20
- package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
- package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
- package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
- package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
- package/linthost/rules_unicorn_custom_error_definition.go +92 -92
- package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
- package/linthost/rules_unicorn_error_message.go +34 -34
- package/linthost/rules_unicorn_escape_case.go +14 -14
- package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
- package/linthost/rules_unicorn_explicit_length_check.go +51 -51
- package/linthost/rules_unicorn_filename_case.go +1 -1
- package/linthost/rules_unicorn_import_style.go +1 -1
- package/linthost/rules_unicorn_isolated_functions.go +2 -2
- package/linthost/rules_unicorn_new_for_builtins.go +49 -49
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
- package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
- package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
- package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
- package/linthost/rules_unicorn_no_array_for_each.go +14 -14
- package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
- package/linthost/rules_unicorn_no_array_reduce.go +15 -15
- package/linthost/rules_unicorn_no_array_reverse.go +17 -17
- package/linthost/rules_unicorn_no_array_sort.go +17 -17
- package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
- package/linthost/rules_unicorn_no_console_spaces.go +30 -30
- package/linthost/rules_unicorn_no_document_cookie.go +13 -13
- package/linthost/rules_unicorn_no_empty_file.go +16 -16
- package/linthost/rules_unicorn_no_for_loop.go +58 -58
- package/linthost/rules_unicorn_no_hex_escape.go +11 -11
- package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
- package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
- package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
- package/linthost/rules_unicorn_no_lonely_if.go +21 -21
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
- package/linthost/rules_unicorn_no_named_default.go +25 -25
- package/linthost/rules_unicorn_no_negated_condition.go +54 -54
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
- package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
- package/linthost/rules_unicorn_no_new_array.go +5 -5
- package/linthost/rules_unicorn_no_new_buffer.go +5 -5
- package/linthost/rules_unicorn_no_null.go +2 -2
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
- package/linthost/rules_unicorn_no_process_exit.go +17 -17
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
- package/linthost/rules_unicorn_no_static_only_class.go +27 -27
- package/linthost/rules_unicorn_no_thenable.go +47 -47
- package/linthost/rules_unicorn_no_this_assignment.go +10 -10
- package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
- package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
- package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
- package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
- package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
- package/linthost/rules_unicorn_no_useless_spread.go +38 -38
- package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
- package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
- package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
- package/linthost/rules_unicorn_number_literal_case.go +33 -33
- package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
- package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
- package/linthost/rules_unicorn_prefer_array_find.go +27 -27
- package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
- package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
- package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
- package/linthost/rules_unicorn_prefer_array_some.go +43 -43
- package/linthost/rules_unicorn_prefer_at.go +42 -42
- package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
- package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
- package/linthost/rules_unicorn_prefer_code_point.go +21 -21
- package/linthost/rules_unicorn_prefer_date_now.go +47 -47
- package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
- package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
- package/linthost/rules_unicorn_prefer_event_target.go +10 -10
- package/linthost/rules_unicorn_prefer_export_from.go +99 -99
- package/linthost/rules_unicorn_prefer_global_this.go +91 -91
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
- package/linthost/rules_unicorn_prefer_includes.go +108 -108
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
- package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
- package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
- package/linthost/rules_unicorn_prefer_module.go +22 -22
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
- package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
- package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
- package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
- package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
- package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
- package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
- package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
- package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
- package/linthost/rules_unicorn_prefer_set_has.go +16 -16
- package/linthost/rules_unicorn_prefer_set_size.go +22 -22
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
- package/linthost/rules_unicorn_prefer_single_call.go +59 -59
- package/linthost/rules_unicorn_prefer_spread.go +24 -24
- package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
- package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
- package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
- package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
- package/linthost/rules_unicorn_prefer_switch.go +65 -65
- package/linthost/rules_unicorn_prefer_ternary.go +35 -35
- package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
- package/linthost/rules_unicorn_prefer_type_error.go +84 -84
- package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
- package/linthost/rules_unicorn_relative_url_style.go +19 -19
- package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
- package/linthost/rules_unicorn_require_module_attributes.go +25 -25
- package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
- package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
- package/linthost/rules_unicorn_string_content.go +1 -1
- package/linthost/rules_unicorn_switch_case_braces.go +16 -16
- package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
- package/linthost/rules_unicorn_template_indent.go +1 -1
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
- package/linthost/rules_unicorn_throw_new_error.go +30 -30
- package/linthost/rules_var.go +273 -3
- package/package.json +3 -3
- package/src/defaultFormat.ts +11 -7
- package/src/structures/ITtscLintConfig.ts +5 -5
- package/src/structures/TtscLintRuleSetting.ts +19 -19
- package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
- package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
- package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
- package/src/structures/format/index.ts +3 -0
- package/src/structures/index.ts +1 -1
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
- package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
- package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
- package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
- package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
- package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
- package/src/structures/rules/ITtscLintJestRules.ts +63 -74
- package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
- package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
- package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
- package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
- package/src/structures/rules/ITtscLintReactRules.ts +91 -104
- package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
- package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
- package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
- package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
- package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
- package/lib/structures/ITtscLintFormat.js.map +0 -1
- /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./ITtscLintTestingLibraryRuleOptions";
|
|
2
1
|
import type {
|
|
3
2
|
TtscLintRuleOptionsSetting,
|
|
4
3
|
TtscLintRuleSetting,
|
|
5
4
|
} from "../TtscLintRuleSetting";
|
|
5
|
+
import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./ITtscLintTestingLibraryRuleOptions";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Testing Library test source rules from
|
|
9
|
-
* `eslint-plugin-testing-library`.
|
|
8
|
+
* Testing Library test source rules from `eslint-plugin-testing-library`.
|
|
10
9
|
*
|
|
11
|
-
* Apply to TypeScript test sources that use any `@testing-library/*`
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Apply to TypeScript test sources that use any `@testing-library/*` package
|
|
11
|
+
* and detect Testing Library anti-patterns — `container` access, `ByTestId`
|
|
12
|
+
* overuse, missing `await` on async queries.
|
|
14
13
|
*
|
|
15
14
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library
|
|
16
15
|
*/
|
|
@@ -19,9 +18,8 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
19
18
|
* Require awaiting async user-event methods (`userEvent.click`,
|
|
20
19
|
* `userEvent.type`, ...) under the v14+ Promise-returning API.
|
|
21
20
|
*
|
|
22
|
-
* Without `await` the next assertion runs against the
|
|
23
|
-
*
|
|
24
|
-
* meant to trigger.
|
|
21
|
+
* Without `await` the next assertion runs against the pre-interaction DOM,
|
|
22
|
+
* which masks effects the user action was meant to trigger.
|
|
25
23
|
*
|
|
26
24
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/await-async-events.md
|
|
27
25
|
*/
|
|
@@ -30,32 +28,30 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
30
28
|
/**
|
|
31
29
|
* Require awaiting `findBy*` and `findAllBy*` queries.
|
|
32
30
|
*
|
|
33
|
-
* They return a Promise that resolves once the element appears; an
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
* They return a Promise that resolves once the element appears; an unawaited
|
|
32
|
+
* query yields a pending Promise that no matcher can assert against
|
|
33
|
+
* meaningfully.
|
|
36
34
|
*
|
|
37
35
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/await-async-queries.md
|
|
38
36
|
*/
|
|
39
37
|
"testing-library/await-async-queries"?: TtscLintRuleSetting;
|
|
40
38
|
|
|
41
39
|
/**
|
|
42
|
-
* Require awaiting `waitFor`, `waitForElementToBeRemoved`, and
|
|
43
|
-
*
|
|
40
|
+
* Require awaiting `waitFor`, `waitForElementToBeRemoved`, and the other
|
|
41
|
+
* async Testing Library utilities.
|
|
44
42
|
*
|
|
45
|
-
* Skipping the `await` means the test moves on before the
|
|
46
|
-
*
|
|
47
|
-
* wait.
|
|
43
|
+
* Skipping the `await` means the test moves on before the predicate settles,
|
|
44
|
+
* so subsequent assertions race against the wait.
|
|
48
45
|
*
|
|
49
46
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/await-async-utils.md
|
|
50
47
|
*/
|
|
51
48
|
"testing-library/await-async-utils"?: TtscLintRuleSetting;
|
|
52
49
|
|
|
53
50
|
/**
|
|
54
|
-
* Validate JSX `data-testid` attribute values against a regex
|
|
55
|
-
* pattern.
|
|
51
|
+
* Validate JSX `data-testid` attribute values against a regex pattern.
|
|
56
52
|
*
|
|
57
|
-
* The options object names the attribute and the pattern, keeping
|
|
58
|
-
*
|
|
53
|
+
* The options object names the attribute and the pattern, keeping test ids
|
|
54
|
+
* consistently formed across components.
|
|
59
55
|
*
|
|
60
56
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/consistent-data-testid.md
|
|
61
57
|
*/
|
|
@@ -65,68 +61,65 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
65
61
|
* Reject unnecessary `await` before synchronous event helpers
|
|
66
62
|
* (`fireEvent.click(...)`).
|
|
67
63
|
*
|
|
68
|
-
* The helpers return `boolean` rather than a Promise, so the
|
|
69
|
-
*
|
|
70
|
-
* helper is async.
|
|
64
|
+
* The helpers return `boolean` rather than a Promise, so the `await` is a
|
|
65
|
+
* no-op that misleads readers into thinking the helper is async.
|
|
71
66
|
*
|
|
72
67
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-await-sync-events.md
|
|
73
68
|
*/
|
|
74
69
|
"testing-library/no-await-sync-events"?: TtscLintRuleSetting;
|
|
75
70
|
|
|
76
71
|
/**
|
|
77
|
-
* Reject unnecessary `await` before synchronous queries
|
|
78
|
-
*
|
|
72
|
+
* Reject unnecessary `await` before synchronous queries (`getBy*`,
|
|
73
|
+
* `queryBy*`).
|
|
79
74
|
*
|
|
80
|
-
* These queries return DOM nodes directly, so the `await` misleads
|
|
81
|
-
*
|
|
82
|
-
* `findBy*`.
|
|
75
|
+
* These queries return DOM nodes directly, so the `await` misleads readers
|
|
76
|
+
* and can shadow a genuine missing `await` on an adjacent `findBy*`.
|
|
83
77
|
*
|
|
84
78
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-await-sync-queries.md
|
|
85
79
|
*/
|
|
86
80
|
"testing-library/no-await-sync-queries"?: TtscLintRuleSetting;
|
|
87
81
|
|
|
88
82
|
/**
|
|
89
|
-
* Reject `container` destructuring and DOM query methods on the
|
|
90
|
-
*
|
|
83
|
+
* Reject `container` destructuring and DOM query methods on the render
|
|
84
|
+
* result.
|
|
91
85
|
*
|
|
92
|
-
* `screen` queries the same document but matches how the user sees
|
|
93
|
-
*
|
|
94
|
-
*
|
|
86
|
+
* `screen` queries the same document but matches how the user sees the page,
|
|
87
|
+
* keeping tests accessibility-first and resilient to layout refactors that
|
|
88
|
+
* move nodes inside the tree.
|
|
95
89
|
*
|
|
96
90
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-container.md
|
|
97
91
|
*/
|
|
98
92
|
"testing-library/no-container"?: TtscLintRuleSetting;
|
|
99
93
|
|
|
100
94
|
/**
|
|
101
|
-
* Reject `debug`, `prettyDOM`, `logTestingPlaygroundURL`, and
|
|
102
|
-
*
|
|
95
|
+
* Reject `debug`, `prettyDOM`, `logTestingPlaygroundURL`, and related
|
|
96
|
+
* debugging utilities in committed tests.
|
|
103
97
|
*
|
|
104
|
-
* They print large DOM dumps to CI logs and only exist to help
|
|
105
|
-
*
|
|
98
|
+
* They print large DOM dumps to CI logs and only exist to help during local
|
|
99
|
+
* authoring.
|
|
106
100
|
*
|
|
107
101
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-debugging-utils.md
|
|
108
102
|
*/
|
|
109
103
|
"testing-library/no-debugging-utils"?: TtscLintRuleSetting;
|
|
110
104
|
|
|
111
105
|
/**
|
|
112
|
-
* Reject direct `@testing-library/dom` imports when a
|
|
113
|
-
*
|
|
106
|
+
* Reject direct `@testing-library/dom` imports when a framework-specific
|
|
107
|
+
* package is installed.
|
|
114
108
|
*
|
|
115
|
-
* Framework packages (`@testing-library/react`, ...) re-export the
|
|
116
|
-
*
|
|
117
|
-
*
|
|
109
|
+
* Framework packages (`@testing-library/react`, ...) re-export the same
|
|
110
|
+
* surface plus a `render` that wires the framework's lifecycle — importing
|
|
111
|
+
* `dom` directly skips that wiring.
|
|
118
112
|
*
|
|
119
113
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-dom-import.md
|
|
120
114
|
*/
|
|
121
115
|
"testing-library/no-dom-import"?: TtscLintRuleSetting;
|
|
122
116
|
|
|
123
117
|
/**
|
|
124
|
-
* Reject global RegExp flags (`/foo/g`) inside query text
|
|
125
|
-
* matchers.
|
|
118
|
+
* Reject global RegExp flags (`/foo/g`) inside query text matchers.
|
|
126
119
|
*
|
|
127
|
-
* The matcher reuses the regex across nodes, so a global regex's
|
|
128
|
-
*
|
|
129
|
-
*
|
|
120
|
+
* The matcher reuses the regex across nodes, so a global regex's persistent
|
|
121
|
+
* `lastIndex` state causes the second call to skip matches the first one
|
|
122
|
+
* found.
|
|
130
123
|
*
|
|
131
124
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-global-regexp-flag-in-query.md
|
|
132
125
|
*/
|
|
@@ -135,40 +128,39 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
135
128
|
/**
|
|
136
129
|
* Reject manual `cleanup()` calls.
|
|
137
130
|
*
|
|
138
|
-
* Framework wrappers (`@testing-library/react`, ...) register
|
|
139
|
-
*
|
|
140
|
-
*
|
|
131
|
+
* Framework wrappers (`@testing-library/react`, ...) register automatic
|
|
132
|
+
* cleanup, so explicit calls duplicate the unmount and can race against the
|
|
133
|
+
* runner's between-test reset.
|
|
141
134
|
*
|
|
142
135
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-manual-cleanup.md
|
|
143
136
|
*/
|
|
144
137
|
"testing-library/no-manual-cleanup"?: TtscLintRuleSetting;
|
|
145
138
|
|
|
146
139
|
/**
|
|
147
|
-
* Reject direct DOM node traversal from query results
|
|
148
|
-
*
|
|
140
|
+
* Reject direct DOM node traversal from query results (`.parentElement`,
|
|
141
|
+
* `.firstChild`, `.children`, ...).
|
|
149
142
|
*
|
|
150
|
-
* Traversal couples the test to incidental markup; another
|
|
151
|
-
*
|
|
143
|
+
* Traversal couples the test to incidental markup; another semantic query
|
|
144
|
+
* names what the assertion actually cares about.
|
|
152
145
|
*
|
|
153
146
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-node-access.md
|
|
154
147
|
*/
|
|
155
148
|
"testing-library/no-node-access"?: TtscLintRuleSetting;
|
|
156
149
|
|
|
157
150
|
/**
|
|
158
|
-
* Reject Promise-producing expressions passed to `fireEvent`,
|
|
159
|
-
*
|
|
151
|
+
* Reject Promise-producing expressions passed to `fireEvent`, since
|
|
152
|
+
* `fireEvent` is synchronous and the Promise is dropped.
|
|
160
153
|
*
|
|
161
154
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-promise-in-fire-event.md
|
|
162
155
|
*/
|
|
163
156
|
"testing-library/no-promise-in-fire-event"?: TtscLintRuleSetting;
|
|
164
157
|
|
|
165
158
|
/**
|
|
166
|
-
* Reject `render(...)` inside lifecycle hooks (`beforeEach`,
|
|
167
|
-
* etc.).
|
|
159
|
+
* Reject `render(...)` inside lifecycle hooks (`beforeEach`, etc.).
|
|
168
160
|
*
|
|
169
|
-
* Each test should render its component directly so the arrange
|
|
170
|
-
*
|
|
171
|
-
*
|
|
161
|
+
* Each test should render its component directly so the arrange step is
|
|
162
|
+
* visible in-place and auto-cleanup runs between cases without sharing
|
|
163
|
+
* state.
|
|
172
164
|
*
|
|
173
165
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-render-in-lifecycle.md
|
|
174
166
|
*/
|
|
@@ -177,38 +169,35 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
177
169
|
/**
|
|
178
170
|
* Reject `*ByTestId` queries.
|
|
179
171
|
*
|
|
180
|
-
* Test ids couple the test to incidental markup and skip the
|
|
181
|
-
*
|
|
182
|
-
*
|
|
172
|
+
* Test ids couple the test to incidental markup and skip the accessibility
|
|
173
|
+
* tree that real users navigate; queries by role, label, or text describe the
|
|
174
|
+
* UI in user-visible terms instead.
|
|
183
175
|
*
|
|
184
176
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-test-id-queries.md
|
|
185
177
|
*/
|
|
186
178
|
"testing-library/no-test-id-queries"?: TtscLintRuleSetting;
|
|
187
179
|
|
|
188
180
|
/**
|
|
189
|
-
* Reject unnecessary `act(...)` wrappers around Testing Library
|
|
190
|
-
* helpers.
|
|
181
|
+
* Reject unnecessary `act(...)` wrappers around Testing Library helpers.
|
|
191
182
|
*
|
|
192
|
-
* `render`, `fireEvent`, and `userEvent` already wrap their work
|
|
193
|
-
*
|
|
194
|
-
* real state change.
|
|
183
|
+
* `render`, `fireEvent`, and `userEvent` already wrap their work in `act`, so
|
|
184
|
+
* the extra wrapper is dead code that obscures the real state change.
|
|
195
185
|
*
|
|
196
186
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-unnecessary-act.md
|
|
197
187
|
*/
|
|
198
188
|
"testing-library/no-unnecessary-act"?: TtscLintRuleSetting;
|
|
199
189
|
|
|
200
190
|
/**
|
|
201
|
-
* Reject multiple assertions inside one `waitFor` callback —
|
|
202
|
-
*
|
|
203
|
-
* narrow.
|
|
191
|
+
* Reject multiple assertions inside one `waitFor` callback — split into
|
|
192
|
+
* separate `waitFor`s so each retry boundary is narrow.
|
|
204
193
|
*
|
|
205
194
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-wait-for-multiple-assertions.md
|
|
206
195
|
*/
|
|
207
196
|
"testing-library/no-wait-for-multiple-assertions"?: TtscLintRuleSetting;
|
|
208
197
|
|
|
209
198
|
/**
|
|
210
|
-
* Reject side effects inside `waitFor` callbacks — `waitFor`
|
|
211
|
-
*
|
|
199
|
+
* Reject side effects inside `waitFor` callbacks — `waitFor` retries the
|
|
200
|
+
* callback, so side effects fire repeatedly.
|
|
212
201
|
*
|
|
213
202
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-wait-for-side-effects.md
|
|
214
203
|
*/
|
|
@@ -217,22 +206,20 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
217
206
|
/**
|
|
218
207
|
* Reject snapshot assertions inside `waitFor`.
|
|
219
208
|
*
|
|
220
|
-
* `waitFor` retries until the callback stops throwing, so the
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
* cares about.
|
|
209
|
+
* `waitFor` retries until the callback stops throwing, so the captured
|
|
210
|
+
* snapshot is whichever pass happened to match — usually an intermediate
|
|
211
|
+
* render rather than the settled UI the test cares about.
|
|
224
212
|
*
|
|
225
213
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/no-wait-for-snapshot.md
|
|
226
214
|
*/
|
|
227
215
|
"testing-library/no-wait-for-snapshot"?: TtscLintRuleSetting;
|
|
228
216
|
|
|
229
217
|
/**
|
|
230
|
-
* Require explicit assertions on the result of standalone
|
|
231
|
-
* queries.
|
|
218
|
+
* Require explicit assertions on the result of standalone queries.
|
|
232
219
|
*
|
|
233
|
-
* A bare `screen.getByRole(...)` looks like an assertion but only
|
|
234
|
-
*
|
|
235
|
-
*
|
|
220
|
+
* A bare `screen.getByRole(...)` looks like an assertion but only checks
|
|
221
|
+
* presence (and only for `getBy*`); adding `expect(...)` makes the intent and
|
|
222
|
+
* the matched property obvious.
|
|
236
223
|
*
|
|
237
224
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-explicit-assert.md
|
|
238
225
|
*/
|
|
@@ -241,9 +228,9 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
241
228
|
/**
|
|
242
229
|
* Prefer `findBy*` over `waitFor` wrapping a `getBy*`.
|
|
243
230
|
*
|
|
244
|
-
* `findBy*` is the dedicated retry-aware query; the manual
|
|
245
|
-
*
|
|
246
|
-
*
|
|
231
|
+
* `findBy*` is the dedicated retry-aware query; the manual combination
|
|
232
|
+
* duplicates its semantics and is easy to misconfigure (wrong timeout,
|
|
233
|
+
* missing `await`).
|
|
247
234
|
*
|
|
248
235
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-find-by.md
|
|
249
236
|
*/
|
|
@@ -252,19 +239,18 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
252
239
|
/**
|
|
253
240
|
* Avoid redundant `toBeInTheDocument()` around `getBy*` queries.
|
|
254
241
|
*
|
|
255
|
-
* `getBy*` already throws when nothing is found, so the extra
|
|
256
|
-
*
|
|
257
|
-
* the failure trace.
|
|
242
|
+
* `getBy*` already throws when nothing is found, so the extra matcher only
|
|
243
|
+
* restates what the query promises and adds noise to the failure trace.
|
|
258
244
|
*
|
|
259
245
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-implicit-assert.md
|
|
260
246
|
*/
|
|
261
247
|
"testing-library/prefer-implicit-assert"?: TtscLintRuleSetting;
|
|
262
248
|
|
|
263
249
|
/**
|
|
264
|
-
* Match presence and absence assertions to the query variant
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
250
|
+
* Match presence and absence assertions to the query variant that already
|
|
251
|
+
* encodes the same semantic: `getBy*` for presence (throws when missing),
|
|
252
|
+
* `queryBy*` for absence (returns `null` when missing). Mixing the two yields
|
|
253
|
+
* confusing failure modes.
|
|
268
254
|
*
|
|
269
255
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-presence-queries.md
|
|
270
256
|
*/
|
|
@@ -273,21 +259,20 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
273
259
|
/**
|
|
274
260
|
* Prefer `queryBy*` inside `waitForElementToBeRemoved`.
|
|
275
261
|
*
|
|
276
|
-
* The helper retries the callback against the disappearing
|
|
277
|
-
*
|
|
278
|
-
*
|
|
262
|
+
* The helper retries the callback against the disappearing element, but
|
|
263
|
+
* `getBy*` throws on the very state being waited for, which produces a noisy
|
|
264
|
+
* error in the trace each retry.
|
|
279
265
|
*
|
|
280
266
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-query-by-disappearance.md
|
|
281
267
|
*/
|
|
282
268
|
"testing-library/prefer-query-by-disappearance"?: TtscLintRuleSetting;
|
|
283
269
|
|
|
284
270
|
/**
|
|
285
|
-
* Prefer jest-dom document matchers (`toBeVisible`,
|
|
286
|
-
*
|
|
287
|
-
* Testing Library queries.
|
|
271
|
+
* Prefer jest-dom document matchers (`toBeVisible`, `toHaveTextContent`, ...)
|
|
272
|
+
* over generic equality checks on Testing Library queries.
|
|
288
273
|
*
|
|
289
|
-
* The dedicated matchers explain failures in terms of the DOM
|
|
290
|
-
*
|
|
274
|
+
* The dedicated matchers explain failures in terms of the DOM property they
|
|
275
|
+
* assert on, not a structural diff of nodes.
|
|
291
276
|
*
|
|
292
277
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-query-matchers.md
|
|
293
278
|
*/
|
|
@@ -296,9 +281,9 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
296
281
|
/**
|
|
297
282
|
* Prefer `screen.*` over queries on the render-result object.
|
|
298
283
|
*
|
|
299
|
-
* `screen` is the single global query target, so tests stay
|
|
300
|
-
*
|
|
301
|
-
*
|
|
284
|
+
* `screen` is the single global query target, so tests stay consistent
|
|
285
|
+
* regardless of which component is mounted and the render call's return value
|
|
286
|
+
* rarely needs destructuring.
|
|
302
287
|
*
|
|
303
288
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-screen-queries.md
|
|
304
289
|
*/
|
|
@@ -307,34 +292,32 @@ export interface ITtscLintTestingLibraryRules {
|
|
|
307
292
|
/**
|
|
308
293
|
* Prefer `userEvent` over `fireEvent`.
|
|
309
294
|
*
|
|
310
|
-
* `userEvent` simulates the full sequence of DOM events a real
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
* state.
|
|
295
|
+
* `userEvent` simulates the full sequence of DOM events a real user triggers
|
|
296
|
+
* (focus, keydown, input, change, ...) while `fireEvent` dispatches a single
|
|
297
|
+
* event and skips intermediate state.
|
|
314
298
|
*
|
|
315
299
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-user-event.md
|
|
316
300
|
*/
|
|
317
301
|
"testing-library/prefer-user-event"?: TtscLintRuleSetting;
|
|
318
302
|
|
|
319
303
|
/**
|
|
320
|
-
* Prefer `userEvent.setup()` (the v14+ instance pattern) over
|
|
321
|
-
*
|
|
304
|
+
* Prefer `userEvent.setup()` (the v14+ instance pattern) over the static
|
|
305
|
+
* `userEvent.*` calls.
|
|
322
306
|
*
|
|
323
|
-
* The instance binds fresh pointer state per test, removing the
|
|
324
|
-
*
|
|
325
|
-
* leaks.
|
|
307
|
+
* The instance binds fresh pointer state per test, removing the cross-test
|
|
308
|
+
* focus and click bookkeeping that the static API leaks.
|
|
326
309
|
*
|
|
327
310
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-user-event-setup.md
|
|
328
311
|
*/
|
|
329
312
|
"testing-library/prefer-user-event-setup"?: TtscLintRuleSetting;
|
|
330
313
|
|
|
331
314
|
/**
|
|
332
|
-
* Require the variable assigned from `render(...)` to use one of
|
|
333
|
-
*
|
|
315
|
+
* Require the variable assigned from `render(...)` to use one of the
|
|
316
|
+
* conventional names (`view`, `result`, ...).
|
|
334
317
|
*
|
|
335
|
-
* The name is a reading cue: a non-conventional one usually
|
|
336
|
-
*
|
|
337
|
-
*
|
|
318
|
+
* The name is a reading cue: a non-conventional one usually signals that the
|
|
319
|
+
* destructured queries are being treated as a component surface instead of a
|
|
320
|
+
* render artifact.
|
|
338
321
|
*
|
|
339
322
|
* @reference https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/render-result-naming-convention.md
|
|
340
323
|
*/
|