@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,361 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Playwright end-to-end test rules from `eslint-plugin-playwright`,
|
|
5
|
+
* applied to TypeScript test files driven by the `@playwright/test`
|
|
6
|
+
* runner.
|
|
7
|
+
*
|
|
8
|
+
* Guard Playwright-specific patterns — locator usage, web-first
|
|
9
|
+
* assertions, focused/slowed tests — that would otherwise compile
|
|
10
|
+
* and run silently.
|
|
11
|
+
*
|
|
12
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright
|
|
13
|
+
*/
|
|
14
|
+
export interface ITtscLintPlaywrightRules {
|
|
15
|
+
/**
|
|
16
|
+
* Require every Playwright test body to contain at least one
|
|
17
|
+
* `expect(...)` call. A test with no assertions still passes,
|
|
18
|
+
* giving a false-positive signal.
|
|
19
|
+
*
|
|
20
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/expect-expect.md
|
|
21
|
+
*/
|
|
22
|
+
"playwright/expect-expect"?: TtscLintRuleSetting;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Limit the assertion count inside a single Playwright test body.
|
|
26
|
+
*
|
|
27
|
+
* A test packed with assertions usually verifies several user
|
|
28
|
+
* flows at once, making failures ambiguous — splitting per
|
|
29
|
+
* scenario keeps each case diagnostic.
|
|
30
|
+
*
|
|
31
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/max-expects.md
|
|
32
|
+
*/
|
|
33
|
+
"playwright/max-expects"?: TtscLintRuleSetting;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Reject `expect(...)` calls under `if`/`try`/`catch` or other
|
|
37
|
+
* conditional branches in Playwright tests.
|
|
38
|
+
*
|
|
39
|
+
* A branch that never executes turns the assertion into a silent
|
|
40
|
+
* no-op, so the test passes without verifying anything.
|
|
41
|
+
*
|
|
42
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-expect.md
|
|
43
|
+
*/
|
|
44
|
+
"playwright/no-conditional-expect"?: TtscLintRuleSetting;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Reject conditional logic (`if`/`switch`/ternary) inside
|
|
48
|
+
* Playwright test bodies.
|
|
49
|
+
*
|
|
50
|
+
* Each test should describe a single deterministic user flow;
|
|
51
|
+
* branching hides which path the runner took when reading a
|
|
52
|
+
* passing log.
|
|
53
|
+
*
|
|
54
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-in-test.md
|
|
55
|
+
*/
|
|
56
|
+
"playwright/no-conditional-in-test"?: TtscLintRuleSetting;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Reject duplicate Playwright setup/teardown hook calls
|
|
60
|
+
* (`test.beforeEach`/`test.afterEach`/etc.) in the same
|
|
61
|
+
* `test.describe`.
|
|
62
|
+
*
|
|
63
|
+
* Playwright runs both copies in declaration order, almost always
|
|
64
|
+
* a copy-paste mistake.
|
|
65
|
+
*
|
|
66
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-hooks.md
|
|
67
|
+
*/
|
|
68
|
+
"playwright/no-duplicate-hooks"?: TtscLintRuleSetting;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Reject repeated `test.slow()` calls inside the same test —
|
|
72
|
+
* the first call already marks the test slow.
|
|
73
|
+
*
|
|
74
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-slow.md
|
|
75
|
+
*/
|
|
76
|
+
"playwright/no-duplicate-slow"?: TtscLintRuleSetting;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Reject the legacy `ElementHandle`-style Playwright API
|
|
80
|
+
* (`page.$`, `page.$$`).
|
|
81
|
+
*
|
|
82
|
+
* Handles snapshot the DOM at query time and bypass Playwright's
|
|
83
|
+
* auto-waiting; locators are the modern retry-aware replacement.
|
|
84
|
+
*
|
|
85
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-element-handle.md
|
|
86
|
+
*/
|
|
87
|
+
"playwright/no-element-handle"?: TtscLintRuleSetting;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Reject `page.$eval` and `page.$$eval`.
|
|
91
|
+
*
|
|
92
|
+
* They depend on the legacy handle API and run user-supplied
|
|
93
|
+
* selectors against a frozen snapshot of the DOM — use
|
|
94
|
+
* `locator.evaluate` or inline logic in the test instead.
|
|
95
|
+
*
|
|
96
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-eval.md
|
|
97
|
+
*/
|
|
98
|
+
"playwright/no-eval"?: TtscLintRuleSetting;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Reject `test.only`, `test.describe.only`, and similar focused
|
|
102
|
+
* Playwright tests.
|
|
103
|
+
*
|
|
104
|
+
* A focused test silently skips every other test in the file, so
|
|
105
|
+
* a stray `.only` left from debugging hides the rest of the suite
|
|
106
|
+
* in CI.
|
|
107
|
+
*
|
|
108
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-focused-test.md
|
|
109
|
+
*/
|
|
110
|
+
"playwright/no-focused-test"?: TtscLintRuleSetting;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Reject Playwright `{ force: true }` options on actionable
|
|
114
|
+
* commands (`click`, `fill`, ...).
|
|
115
|
+
*
|
|
116
|
+
* `force` skips the actionability checks Playwright relies on for
|
|
117
|
+
* stability, usually papering over a real UI bug the test should
|
|
118
|
+
* be exposing.
|
|
119
|
+
*
|
|
120
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-force-option.md
|
|
121
|
+
*/
|
|
122
|
+
"playwright/no-force-option"?: TtscLintRuleSetting;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Reject `getByTitle(...)` locators.
|
|
126
|
+
*
|
|
127
|
+
* The `title` attribute is rarely set with testing in mind and
|
|
128
|
+
* often changes for i18n or cosmetic reasons, making title-based
|
|
129
|
+
* selectors among the least stable test targets.
|
|
130
|
+
*
|
|
131
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-get-by-title.md
|
|
132
|
+
*/
|
|
133
|
+
"playwright/no-get-by-title"?: TtscLintRuleSetting;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Reject Playwright `test.beforeEach`/`test.afterEach`/etc.
|
|
137
|
+
* hooks.
|
|
138
|
+
*
|
|
139
|
+
* Promotes the style where each test arranges and tears down its
|
|
140
|
+
* own state inline, so a reader can understand a single case
|
|
141
|
+
* without scrolling to a distant hook.
|
|
142
|
+
*
|
|
143
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-hooks.md
|
|
144
|
+
*/
|
|
145
|
+
"playwright/no-hooks"?: TtscLintRuleSetting;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Reject nested `test.step(...)` calls.
|
|
149
|
+
*
|
|
150
|
+
* Playwright's trace viewer collapses steps into a flat timeline,
|
|
151
|
+
* so nested steps are hard to read and usually signal that the
|
|
152
|
+
* inner step should live in its own top-level entry.
|
|
153
|
+
*
|
|
154
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nested-step.md
|
|
155
|
+
*/
|
|
156
|
+
"playwright/no-nested-step"?: TtscLintRuleSetting;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Reject the `networkidle` load-state in `page.waitForLoadState`
|
|
160
|
+
* and navigation options.
|
|
161
|
+
*
|
|
162
|
+
* Modern apps stream requests on a keep-alive socket so the state
|
|
163
|
+
* is racy; the Playwright team recommends waiting on a locator
|
|
164
|
+
* instead.
|
|
165
|
+
*
|
|
166
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-networkidle.md
|
|
167
|
+
*/
|
|
168
|
+
"playwright/no-networkidle"?: TtscLintRuleSetting;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Reject `.first()`, `.last()`, and `.nth(...)` on locators.
|
|
172
|
+
*
|
|
173
|
+
* Positional access couples the test to current DOM ordering and
|
|
174
|
+
* breaks the moment the layout changes — prefer a more specific
|
|
175
|
+
* locator (role, label, test id) that names the target directly.
|
|
176
|
+
*
|
|
177
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nth-methods.md
|
|
178
|
+
*/
|
|
179
|
+
"playwright/no-nth-methods"?: TtscLintRuleSetting;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Reject `page.pause()` debugging calls.
|
|
183
|
+
*
|
|
184
|
+
* The helper drops the runner into Playwright's inspector, which
|
|
185
|
+
* is useful locally but hangs CI indefinitely if it slips into a
|
|
186
|
+
* committed test.
|
|
187
|
+
*
|
|
188
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-page-pause.md
|
|
189
|
+
*/
|
|
190
|
+
"playwright/no-page-pause"?: TtscLintRuleSetting;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Reject `test.skip`, `test.describe.skip`, and the conditional
|
|
194
|
+
* `test.skip()` annotation.
|
|
195
|
+
*
|
|
196
|
+
* Skipped tests appear green in CI but quietly drop coverage for
|
|
197
|
+
* the feature they were meant to pin.
|
|
198
|
+
*
|
|
199
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-skipped-test.md
|
|
200
|
+
*/
|
|
201
|
+
"playwright/no-skipped-test"?: TtscLintRuleSetting;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Reject `test.slow()` marks on Playwright tests.
|
|
205
|
+
*
|
|
206
|
+
* The annotation triples the per-test timeout, usually masking a
|
|
207
|
+
* real performance regression instead of fixing the underlying
|
|
208
|
+
* wait.
|
|
209
|
+
*
|
|
210
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-slowed-test.md
|
|
211
|
+
*/
|
|
212
|
+
"playwright/no-slowed-test"?: TtscLintRuleSetting;
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Reject `expect(...)` calls outside the body of a Playwright
|
|
216
|
+
* test or lifecycle hook.
|
|
217
|
+
*
|
|
218
|
+
* Top-level assertions execute at module load before any test
|
|
219
|
+
* starts, so failures never attach to a named case in the runner's
|
|
220
|
+
* report.
|
|
221
|
+
*
|
|
222
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-standalone-expect.md
|
|
223
|
+
*/
|
|
224
|
+
"playwright/no-standalone-expect"?: TtscLintRuleSetting;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Reject `page.waitForNavigation`.
|
|
228
|
+
*
|
|
229
|
+
* The helper races against navigations triggered by the very
|
|
230
|
+
* command preceding it; use a locator-based wait or the action's
|
|
231
|
+
* own `waitUntil` option to pin the post-navigation state
|
|
232
|
+
* explicitly.
|
|
233
|
+
*
|
|
234
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-navigation.md
|
|
235
|
+
*/
|
|
236
|
+
"playwright/no-wait-for-navigation"?: TtscLintRuleSetting;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Reject `page.waitForSelector`.
|
|
240
|
+
*
|
|
241
|
+
* The helper duplicates locator auto-waiting but does not share
|
|
242
|
+
* its retry semantics — prefer `locator.waitFor()` or a web-first
|
|
243
|
+
* assertion on the same locator.
|
|
244
|
+
*
|
|
245
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-selector.md
|
|
246
|
+
*/
|
|
247
|
+
"playwright/no-wait-for-selector"?: TtscLintRuleSetting;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Reject `page.waitForTimeout(ms)` sleeps.
|
|
251
|
+
*
|
|
252
|
+
* A hardcoded delay is either too short under load (flaky
|
|
253
|
+
* failures) or too long under normal conditions (slow suite); wait
|
|
254
|
+
* on a locator or response that signals readiness directly.
|
|
255
|
+
*
|
|
256
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-timeout.md
|
|
257
|
+
*/
|
|
258
|
+
"playwright/no-wait-for-timeout"?: TtscLintRuleSetting;
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Prefer locator-based Playwright APIs (`page.locator(sel).click()`)
|
|
262
|
+
* over page-level convenience methods (`page.click(selector)`).
|
|
263
|
+
*
|
|
264
|
+
* Page methods re-resolve the selector each call and skip the
|
|
265
|
+
* retry semantics that make locators robust under animation.
|
|
266
|
+
*
|
|
267
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-locator.md
|
|
268
|
+
*/
|
|
269
|
+
"playwright/prefer-locator"?: TtscLintRuleSetting;
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Prefer `expect(locator).toHaveCount(n)` over asserting on
|
|
273
|
+
* `await locator.count()`.
|
|
274
|
+
*
|
|
275
|
+
* The web-first matcher retries until the count stabilizes, while
|
|
276
|
+
* the awaited value is a one-shot snapshot that races against
|
|
277
|
+
* ongoing renders.
|
|
278
|
+
*
|
|
279
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-count.md
|
|
280
|
+
*/
|
|
281
|
+
"playwright/prefer-to-have-count"?: TtscLintRuleSetting;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Prefer `expect(value).toHaveLength(n)` over asserting on
|
|
285
|
+
* `value.length` directly.
|
|
286
|
+
*
|
|
287
|
+
* The dedicated matcher reports the actual length on failure
|
|
288
|
+
* instead of a bare number mismatch.
|
|
289
|
+
*
|
|
290
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-length.md
|
|
291
|
+
*/
|
|
292
|
+
"playwright/prefer-to-have-length"?: TtscLintRuleSetting;
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Prefer Playwright web-first assertions
|
|
296
|
+
* (`expect(locator).toBeVisible()`, `.toHaveText(...)`) over
|
|
297
|
+
* composed manual waits.
|
|
298
|
+
*
|
|
299
|
+
* Web-first matchers retry until the predicate holds, which is how
|
|
300
|
+
* Playwright keeps tests stable under animation and network
|
|
301
|
+
* jitter.
|
|
302
|
+
*
|
|
303
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-web-first-assertions.md
|
|
304
|
+
*/
|
|
305
|
+
"playwright/prefer-web-first-assertions"?: TtscLintRuleSetting;
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Require an explicit `timeout` option on `expect(...).toPass(...)`.
|
|
309
|
+
*
|
|
310
|
+
* The matcher otherwise inherits the suite-wide timeout and can
|
|
311
|
+
* strand CI when the underlying assertion never settles.
|
|
312
|
+
*
|
|
313
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-pass-timeout.md
|
|
314
|
+
*/
|
|
315
|
+
"playwright/require-to-pass-timeout"?: TtscLintRuleSetting;
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Require a message argument on `expect(...).toThrow(...)`.
|
|
319
|
+
*
|
|
320
|
+
* Without a message the assertion only confirms that something
|
|
321
|
+
* threw, so a regression that throws a different error still looks
|
|
322
|
+
* green.
|
|
323
|
+
*
|
|
324
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-throw-message.md
|
|
325
|
+
*/
|
|
326
|
+
"playwright/require-to-throw-message"?: TtscLintRuleSetting;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Validate the shape of Playwright `test.describe` callbacks.
|
|
330
|
+
*
|
|
331
|
+
* The callback must be synchronous and take no arguments —
|
|
332
|
+
* Playwright ignores returned Promises and stray parameters at the
|
|
333
|
+
* describe level, silently swallowing setup errors.
|
|
334
|
+
*
|
|
335
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-describe-callback.md
|
|
336
|
+
*/
|
|
337
|
+
"playwright/valid-describe-callback"?: TtscLintRuleSetting;
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Validate `expect(...)` arity and matcher chaining: exactly one
|
|
341
|
+
* argument, terminated by a matcher call, and async matchers
|
|
342
|
+
* properly awaited.
|
|
343
|
+
*
|
|
344
|
+
* Malformed expects either throw at runtime or pass without
|
|
345
|
+
* asserting anything.
|
|
346
|
+
*
|
|
347
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-expect.md
|
|
348
|
+
*/
|
|
349
|
+
"playwright/valid-expect"?: TtscLintRuleSetting;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Require non-empty static Playwright test and `describe`
|
|
353
|
+
* titles.
|
|
354
|
+
*
|
|
355
|
+
* Empty or dynamically-built titles produce unreadable reports and
|
|
356
|
+
* break filter-by-name flags like `--grep`.
|
|
357
|
+
*
|
|
358
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-title.md
|
|
359
|
+
*/
|
|
360
|
+
"playwright/valid-title"?: TtscLintRuleSetting;
|
|
361
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Promise correctness and style rules from `eslint-plugin-promise`.
|
|
5
|
+
*
|
|
6
|
+
* Checks the chain shape of Promise-using code: every chain ends
|
|
7
|
+
* with `catch`, no callback inside a `then`, no nested
|
|
8
|
+
* `.then().then()`, and so on.
|
|
9
|
+
*
|
|
10
|
+
* AST-local only — type-aware Promise checks belong with
|
|
11
|
+
* `typescript/*` checker rules.
|
|
12
|
+
*
|
|
13
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise
|
|
14
|
+
*/
|
|
15
|
+
export interface ITtscLintPromiseRules {
|
|
16
|
+
/**
|
|
17
|
+
* Require every `then()` callback to either `return` a value or
|
|
18
|
+
* `throw`.
|
|
19
|
+
*
|
|
20
|
+
* A callback that does neither breaks the chain by returning
|
|
21
|
+
* `undefined`.
|
|
22
|
+
*
|
|
23
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md
|
|
24
|
+
*/
|
|
25
|
+
"promise/always-return"?: TtscLintRuleSetting;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Reject every `new Promise(...)` construction. Most modern code
|
|
29
|
+
* can use `async`/`await` or existing Promise-returning APIs.
|
|
30
|
+
*
|
|
31
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md
|
|
32
|
+
*/
|
|
33
|
+
"promise/avoid-new"?: TtscLintRuleSetting;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Require unreturned promise chains to terminate with `catch()`
|
|
37
|
+
* so unhandled rejections cannot escape.
|
|
38
|
+
*
|
|
39
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md
|
|
40
|
+
*/
|
|
41
|
+
"promise/catch-or-return"?: TtscLintRuleSetting;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Reject direct invocation of an error-first callback inside a
|
|
45
|
+
* `then()` or `catch()` handler.
|
|
46
|
+
*
|
|
47
|
+
* Synchronously calling the callback from a promise handler can
|
|
48
|
+
* re-enter it on both the fulfilled and rejected paths. Upstream
|
|
49
|
+
* guidance: defer via `setImmediate`/`process.nextTick` if a
|
|
50
|
+
* callback bridge is genuinely required.
|
|
51
|
+
*
|
|
52
|
+
* Also flags `.then(callback)` / `.catch(callback)` calls whose
|
|
53
|
+
* handler argument is a bare callback-shaped identifier
|
|
54
|
+
* (`callback`, `cb`, `next`, `done`).
|
|
55
|
+
*
|
|
56
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md
|
|
57
|
+
*/
|
|
58
|
+
"promise/no-callback-in-promise"?: TtscLintRuleSetting;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Detect Promise executor bodies with more than one resolve/reject
|
|
62
|
+
* call. The native rule does not yet model branch exclusivity —
|
|
63
|
+
* bodies whose calls are split across mutually exclusive branches
|
|
64
|
+
* will be flagged too.
|
|
65
|
+
*
|
|
66
|
+
* The second call is silently ignored, but the surrounding logic
|
|
67
|
+
* almost always assumed short-circuit.
|
|
68
|
+
*
|
|
69
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md
|
|
70
|
+
*/
|
|
71
|
+
"promise/no-multiple-resolved"?: TtscLintRuleSetting;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Require every file that uses `Promise` to import or require the
|
|
75
|
+
* implementation explicitly, instead of reaching the native global.
|
|
76
|
+
*
|
|
77
|
+
* Useful for projects that substitute Bluebird or another library
|
|
78
|
+
* and want the choice grep-visible per file.
|
|
79
|
+
*
|
|
80
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md
|
|
81
|
+
*/
|
|
82
|
+
"promise/no-native"?: TtscLintRuleSetting;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Reject nested `then()`/`catch()` calls inside the body of a
|
|
86
|
+
* Promise callback. Use chained `.then()` instead.
|
|
87
|
+
*
|
|
88
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md
|
|
89
|
+
*/
|
|
90
|
+
"promise/no-nesting"?: TtscLintRuleSetting;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Reject `new` applied to Promise statics such as
|
|
94
|
+
* `new Promise.resolve(x)`, `new Promise.all([...])`, or
|
|
95
|
+
* `new Promise.race([...])`.
|
|
96
|
+
*
|
|
97
|
+
* The statics are plain functions, so `new` throws a `TypeError`
|
|
98
|
+
* at runtime — caught here before the call ships.
|
|
99
|
+
*
|
|
100
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md
|
|
101
|
+
*/
|
|
102
|
+
"promise/no-new-statics"?: TtscLintRuleSetting;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Reject building a promise chain inside the body of an
|
|
106
|
+
* error-first callback.
|
|
107
|
+
*
|
|
108
|
+
* The callback already owns an error channel, so layering
|
|
109
|
+
* `.then()`/`.catch()` on top creates two incompatible failure
|
|
110
|
+
* pipelines. Upstream advice: promisify the outer API instead.
|
|
111
|
+
*
|
|
112
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md
|
|
113
|
+
*/
|
|
114
|
+
"promise/no-promise-in-callback"?: TtscLintRuleSetting;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Reject `return` from inside a `finally()` callback.
|
|
118
|
+
*
|
|
119
|
+
* The chain's resolved value comes from the prior `then`/`catch`,
|
|
120
|
+
* so any value returned from `finally` is discarded — usually
|
|
121
|
+
* signals confusion about where the chain's value comes from.
|
|
122
|
+
*
|
|
123
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md
|
|
124
|
+
*/
|
|
125
|
+
"promise/no-return-in-finally"?: TtscLintRuleSetting;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Reject `return Promise.resolve(x)` and `return
|
|
129
|
+
* Promise.reject(x)` inside promise callbacks; return the bare
|
|
130
|
+
* value or `throw` instead.
|
|
131
|
+
*
|
|
132
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md
|
|
133
|
+
*/
|
|
134
|
+
"promise/no-return-wrap"?: TtscLintRuleSetting;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Enforce canonical parameter names (`resolve`, `reject`) on
|
|
138
|
+
* Promise executor functions.
|
|
139
|
+
*
|
|
140
|
+
* Consistent names make executor bodies greppable and prevent
|
|
141
|
+
* accidental shadowing of the outer `resolve` symbol.
|
|
142
|
+
*
|
|
143
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md
|
|
144
|
+
*/
|
|
145
|
+
"promise/param-names"?: TtscLintRuleSetting;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Flag continuation-passing callback shapes (last parameter is a
|
|
149
|
+
* function and an error-first invocation pattern is detected),
|
|
150
|
+
* suggesting an `async`/`await` rewrite.
|
|
151
|
+
*
|
|
152
|
+
* Intended for codebases that have already migrated their I/O
|
|
153
|
+
* surface to promises and want to keep callers consistent.
|
|
154
|
+
*
|
|
155
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md
|
|
156
|
+
*/
|
|
157
|
+
"promise/prefer-await-to-callbacks"?: TtscLintRuleSetting;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Prefer `await` over explicit `.then()`/`.catch()`/`.finally()`
|
|
161
|
+
* chains inside `async` functions.
|
|
162
|
+
*
|
|
163
|
+
* Sequential awaits compose more naturally with try/catch and
|
|
164
|
+
* avoid the indentation creep of deeply nested handlers.
|
|
165
|
+
*
|
|
166
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md
|
|
167
|
+
*/
|
|
168
|
+
"promise/prefer-await-to-then"?: TtscLintRuleSetting;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Prefer `.catch(handler)` over the two-argument form
|
|
172
|
+
* `.then(onFulfilled, onRejected)`.
|
|
173
|
+
*
|
|
174
|
+
* The two-argument shape skips rejections raised inside
|
|
175
|
+
* `onFulfilled`, which surprises readers and hides errors from
|
|
176
|
+
* logging middleware.
|
|
177
|
+
*
|
|
178
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md
|
|
179
|
+
*/
|
|
180
|
+
"promise/prefer-catch"?: TtscLintRuleSetting;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Reject non-standard `Promise` statics such as `Promise.done`,
|
|
184
|
+
* `Promise.spread`, or library-specific extensions shimmed onto
|
|
185
|
+
* the global.
|
|
186
|
+
*
|
|
187
|
+
* Sticking to spec methods keeps code portable across Promise
|
|
188
|
+
* implementations.
|
|
189
|
+
*
|
|
190
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md
|
|
191
|
+
*/
|
|
192
|
+
"promise/spec-only"?: TtscLintRuleSetting;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Enforce the argument counts the Promise spec defines for each
|
|
196
|
+
* method — `Promise.all`/`Promise.race` take exactly one argument,
|
|
197
|
+
* `Promise.resolve`/`Promise.reject` take zero or one, `.then`
|
|
198
|
+
* takes one or two, `.catch`/`.finally` take exactly one.
|
|
199
|
+
*
|
|
200
|
+
* Extra or missing arguments usually indicate a misread of the API.
|
|
201
|
+
*
|
|
202
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md
|
|
203
|
+
*/
|
|
204
|
+
"promise/valid-params"?: TtscLintRuleSetting;
|
|
205
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared options shape for every rule in {@link ITtscLintReactPerfRules}.
|
|
3
|
+
*
|
|
4
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** `react-perf/*` rule options. */
|
|
8
|
+
export interface ITtscLintReactPerfRuleOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Controls which intrinsic JSX element props are ignored.
|
|
11
|
+
*
|
|
12
|
+
* `"all"` ignores every prop on lowercase / native elements such as
|
|
13
|
+
* `div`. An array ignores only those prop names on native elements,
|
|
14
|
+
* for example `["style"]`. Custom components are still checked.
|
|
15
|
+
*
|
|
16
|
+
* @default [] (native props are checked)
|
|
17
|
+
*/
|
|
18
|
+
nativeAllowList?: "all" | readonly string[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ITtscLintReactPerfRuleOptions } from "./ITtscLintReactPerfRuleOptions";
|
|
2
|
+
import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* React JSX performance rules from `eslint-plugin-react-perf`.
|
|
6
|
+
*
|
|
7
|
+
* Detects freshly-allocated reference values (arrays, objects,
|
|
8
|
+
* functions, JSX elements) passed as JSX props. A new reference
|
|
9
|
+
* invalidates `React.memo` / `useMemo` shallow checks on every
|
|
10
|
+
* render. Useful for performance-critical render paths; usually
|
|
11
|
+
* unnecessary for top-level pages.
|
|
12
|
+
*
|
|
13
|
+
* Diagnostics only fire on `.tsx` source files — JSX heuristics rely
|
|
14
|
+
* on the file extension, so `.ts` files are skipped even when they
|
|
15
|
+
* contain JSX-like syntax.
|
|
16
|
+
*
|
|
17
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf
|
|
18
|
+
*/
|
|
19
|
+
export interface ITtscLintReactPerfRules {
|
|
20
|
+
/**
|
|
21
|
+
* Reject array literals (`[...]`) passed inline as a JSX prop.
|
|
22
|
+
* Hoist the array outside the render or stabilize it with
|
|
23
|
+
* `useMemo`.
|
|
24
|
+
*
|
|
25
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-array-as-prop.md
|
|
26
|
+
*/
|
|
27
|
+
"react-perf/jsx-no-new-array-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Reject inline `function` expressions / arrow functions passed
|
|
31
|
+
* as a JSX prop. Stabilize with `useCallback`.
|
|
32
|
+
*
|
|
33
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-function-as-prop.md
|
|
34
|
+
*/
|
|
35
|
+
"react-perf/jsx-no-new-function-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Reject inline object literals (`{...}`) passed as a JSX prop.
|
|
39
|
+
*
|
|
40
|
+
* A fresh object on every render invalidates the shallow-equal
|
|
41
|
+
* check used by `React.memo` and `useMemo` consumers, so any
|
|
42
|
+
* downstream memoization keyed on that prop is wasted.
|
|
43
|
+
*
|
|
44
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-object-as-prop.md
|
|
45
|
+
*/
|
|
46
|
+
"react-perf/jsx-no-new-object-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Reject JSX expressions and fragments passed as a JSX prop —
|
|
50
|
+
* each evaluation creates a new React element.
|
|
51
|
+
*
|
|
52
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-jsx-as-prop.md
|
|
53
|
+
*/
|
|
54
|
+
"react-perf/jsx-no-jsx-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options shapes for the configurable rules in
|
|
3
|
+
* {@link ITtscLintReactRules}.
|
|
4
|
+
*
|
|
5
|
+
* Currently only `react/only-export-components` (from
|
|
6
|
+
* `eslint-plugin-react-refresh`) accepts options.
|
|
7
|
+
*
|
|
8
|
+
* @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** `react/only-export-components` rule options. */
|
|
12
|
+
export interface ITtscLintReactOnlyExportComponentsRuleOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Extra higher-order component names that wrap component exports.
|
|
15
|
+
*
|
|
16
|
+
* @default []
|
|
17
|
+
*/
|
|
18
|
+
extraHOCs?: readonly string[];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Export names the active framework handles during refresh, such as
|
|
22
|
+
* route metadata exports.
|
|
23
|
+
*
|
|
24
|
+
* @default []
|
|
25
|
+
*/
|
|
26
|
+
allowExportNames?: readonly string[];
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Permit literal / string / boolean / template / binary constant
|
|
30
|
+
* exports alongside component exports.
|
|
31
|
+
*
|
|
32
|
+
* @default false
|
|
33
|
+
*/
|
|
34
|
+
allowConstantExport?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Also scan JavaScript files that import React. TSX files are always
|
|
38
|
+
* scanned.
|
|
39
|
+
*
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
checkJS?: boolean;
|
|
43
|
+
}
|