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