@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.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 +23 -25
- package/lib/defaultFormat.d.ts +10 -6
- package/lib/defaultFormat.js +10 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +5 -5
- package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
- package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
- package/lib/structures/format/ITtscLintFormat.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
- package/lib/structures/format/index.d.ts +3 -0
- package/lib/structures/format/index.js +20 -0
- package/lib/structures/format/index.js.map +1 -0
- package/lib/structures/index.d.ts +1 -1
- package/lib/structures/index.js +1 -1
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
- package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
- package/linthost/config.go +89 -72
- package/linthost/config_format.go +265 -99
- package/linthost/directives.go +5 -1
- package/linthost/display_width.go +72 -0
- package/linthost/fix.go +26 -1
- package/linthost/format.go +222 -25
- package/linthost/format_editor_settings.go +262 -0
- package/linthost/lsp.go +8 -4
- package/linthost/print_dispatch.go +3 -0
- package/linthost/print_doc.go +13 -0
- package/linthost/print_engine.go +68 -11
- package/linthost/print_nodes_array.go +167 -5
- package/linthost/print_nodes_call.go +786 -77
- package/linthost/print_nodes_function.go +43 -0
- package/linthost/print_nodes_imports.go +64 -14
- package/linthost/print_nodes_list.go +214 -8
- package/linthost/print_nodes_object.go +14 -6
- package/linthost/print_nodes_ternary.go +147 -0
- package/linthost/rules_boundaries.go +400 -400
- package/linthost/rules_camelcase.go +81 -81
- package/linthost/rules_complexity.go +52 -51
- package/linthost/rules_consistent_return.go +81 -81
- package/linthost/rules_core_extra.go +472 -472
- package/linthost/rules_curly.go +43 -43
- package/linthost/rules_default_case.go +15 -15
- package/linthost/rules_default_case_last.go +22 -22
- package/linthost/rules_format_arrow_parens.go +213 -0
- package/linthost/rules_format_bracket_spacing.go +117 -0
- package/linthost/rules_format_clause_join.go +179 -0
- package/linthost/rules_format_declaration_header.go +664 -0
- package/linthost/rules_format_indent.go +616 -0
- package/linthost/rules_format_jsdoc.go +4 -4
- package/linthost/rules_format_orphan_semi.go +106 -0
- package/linthost/rules_format_parameter_properties.go +175 -0
- package/linthost/rules_format_print_width.go +180 -69
- package/linthost/rules_format_quote_props.go +169 -0
- package/linthost/rules_format_quotes.go +75 -29
- package/linthost/rules_format_semi.go +185 -10
- package/linthost/rules_format_sort_imports.go +517 -121
- package/linthost/rules_format_statement_split.go +368 -0
- package/linthost/rules_format_ternary_nullish_parens.go +77 -0
- package/linthost/rules_format_trailing_comma.go +21 -2
- package/linthost/rules_format_whitespace.go +336 -0
- package/linthost/rules_functional.go +688 -688
- package/linthost/rules_gap.go +146 -11
- package/linthost/rules_grouped_accessor_pairs.go +60 -60
- package/linthost/rules_guard_for_in.go +122 -122
- package/linthost/rules_id_length.go +44 -44
- package/linthost/rules_imports.go +11 -3
- package/linthost/rules_init_declarations.go +25 -25
- package/linthost/rules_jsx_a11y.go +844 -844
- package/linthost/rules_max_classes_per_file.go +24 -24
- package/linthost/rules_max_depth.go +43 -43
- package/linthost/rules_max_lines.go +53 -53
- package/linthost/rules_max_lines_per_function.go +28 -28
- package/linthost/rules_max_nested_callbacks.go +26 -26
- package/linthost/rules_max_params.go +20 -20
- package/linthost/rules_max_statements.go +29 -29
- package/linthost/rules_nextjs.go +5 -5
- package/linthost/rules_no_else_return.go +38 -38
- package/linthost/rules_no_empty_named_blocks.go +45 -45
- package/linthost/rules_no_import_assign.go +96 -96
- package/linthost/rules_no_invalid_this.go +19 -19
- package/linthost/rules_no_loop_func.go +43 -43
- package/linthost/rules_no_magic_numbers.go +60 -60
- package/linthost/rules_no_mixed_operators.go +44 -44
- package/linthost/rules_no_param_reassign.go +64 -64
- package/linthost/rules_no_restricted_imports.go +45 -45
- package/linthost/rules_no_restricted_syntax.go +17 -17
- package/linthost/rules_no_shadow.go +112 -112
- package/linthost/rules_no_unreachable.go +36 -36
- package/linthost/rules_no_useless_assignment.go +79 -79
- package/linthost/rules_no_useless_constructor.go +167 -167
- package/linthost/rules_no_useless_return.go +28 -28
- package/linthost/rules_prefer_arrow_callback.go +74 -74
- package/linthost/rules_prefer_destructuring.go +61 -61
- package/linthost/rules_prefer_named_capture_group.go +87 -87
- package/linthost/rules_prefer_rest_params.go +61 -61
- package/linthost/rules_promise.go +800 -800
- package/linthost/rules_react.go +600 -600
- package/linthost/rules_react_extras.go +162 -162
- package/linthost/rules_react_hooks.go +2 -2
- package/linthost/rules_react_perf.go +231 -231
- package/linthost/rules_regexp.go +293 -293
- package/linthost/rules_security.go +613 -613
- package/linthost/rules_sort_imports.go +37 -37
- package/linthost/rules_sort_keys.go +88 -88
- package/linthost/rules_suggestions.go +13 -0
- package/linthost/rules_ts.go +2 -2
- package/linthost/rules_ts_async.go +247 -247
- package/linthost/rules_ts_class_literal_property_style.go +64 -64
- package/linthost/rules_ts_consistent_type_exports.go +209 -209
- package/linthost/rules_ts_explicit_function_return_type.go +35 -35
- package/linthost/rules_ts_extra.go +6 -2
- package/linthost/rules_ts_no_base_to_string.go +140 -140
- package/linthost/rules_ts_no_confusing_void.go +28 -28
- package/linthost/rules_ts_no_deprecated.go +110 -110
- package/linthost/rules_ts_no_for_in_array.go +45 -45
- package/linthost/rules_ts_no_magic_numbers.go +67 -67
- package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
- package/linthost/rules_ts_no_misused_spread.go +64 -64
- package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
- package/linthost/rules_ts_no_restricted_types.go +28 -28
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
- package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
- package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
- package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
- package/linthost/rules_ts_no_unsafe_argument.go +50 -50
- package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
- package/linthost/rules_ts_no_unsafe_call.go +40 -40
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
- package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
- package/linthost/rules_ts_no_unsafe_return.go +64 -64
- package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
- package/linthost/rules_ts_no_useless_constructor.go +20 -20
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
- package/linthost/rules_ts_parameter_properties.go +10 -10
- package/linthost/rules_ts_prefer_find.go +116 -116
- package/linthost/rules_ts_prefer_includes.go +173 -173
- package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
- package/linthost/rules_ts_prefer_optional_chain.go +156 -156
- package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
- package/linthost/rules_ts_prefer_readonly.go +31 -31
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
- package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
- package/linthost/rules_ts_prefer_return_this_type.go +79 -79
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
- package/linthost/rules_ts_promise_function_async.go +41 -41
- package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
- package/linthost/rules_ts_require_array_sort_compare.go +58 -58
- package/linthost/rules_ts_restrict_plus_operands.go +82 -82
- package/linthost/rules_ts_restrict_template_expressions.go +50 -50
- package/linthost/rules_ts_simple.go +249 -249
- package/linthost/rules_ts_sort_type_constituents.go +88 -88
- package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
- package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
- package/linthost/rules_ts_unbound_method.go +65 -65
- package/linthost/rules_tsdoc.go +88 -88
- package/linthost/rules_unicorn_better_regex.go +1 -1
- package/linthost/rules_unicorn_catch_error_name.go +19 -19
- package/linthost/rules_unicorn_consistent_assert.go +20 -20
- package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
- package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
- package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
- package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
- package/linthost/rules_unicorn_custom_error_definition.go +92 -92
- package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
- package/linthost/rules_unicorn_error_message.go +34 -34
- package/linthost/rules_unicorn_escape_case.go +14 -14
- package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
- package/linthost/rules_unicorn_explicit_length_check.go +51 -51
- package/linthost/rules_unicorn_filename_case.go +1 -1
- package/linthost/rules_unicorn_import_style.go +1 -1
- package/linthost/rules_unicorn_isolated_functions.go +2 -2
- package/linthost/rules_unicorn_new_for_builtins.go +49 -49
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
- package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
- package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
- package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
- package/linthost/rules_unicorn_no_array_for_each.go +14 -14
- package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
- package/linthost/rules_unicorn_no_array_reduce.go +15 -15
- package/linthost/rules_unicorn_no_array_reverse.go +17 -17
- package/linthost/rules_unicorn_no_array_sort.go +17 -17
- package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
- package/linthost/rules_unicorn_no_console_spaces.go +30 -30
- package/linthost/rules_unicorn_no_document_cookie.go +13 -13
- package/linthost/rules_unicorn_no_empty_file.go +16 -16
- package/linthost/rules_unicorn_no_for_loop.go +58 -58
- package/linthost/rules_unicorn_no_hex_escape.go +11 -11
- package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
- package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
- package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
- package/linthost/rules_unicorn_no_lonely_if.go +21 -21
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
- package/linthost/rules_unicorn_no_named_default.go +25 -25
- package/linthost/rules_unicorn_no_negated_condition.go +54 -54
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
- package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
- package/linthost/rules_unicorn_no_new_array.go +5 -5
- package/linthost/rules_unicorn_no_new_buffer.go +5 -5
- package/linthost/rules_unicorn_no_null.go +2 -2
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
- package/linthost/rules_unicorn_no_process_exit.go +17 -17
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
- package/linthost/rules_unicorn_no_static_only_class.go +27 -27
- package/linthost/rules_unicorn_no_thenable.go +47 -47
- package/linthost/rules_unicorn_no_this_assignment.go +10 -10
- package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
- package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
- package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
- package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
- package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
- package/linthost/rules_unicorn_no_useless_spread.go +38 -38
- package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
- package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
- package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
- package/linthost/rules_unicorn_number_literal_case.go +33 -33
- package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
- package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
- package/linthost/rules_unicorn_prefer_array_find.go +27 -27
- package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
- package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
- package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
- package/linthost/rules_unicorn_prefer_array_some.go +43 -43
- package/linthost/rules_unicorn_prefer_at.go +42 -42
- package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
- package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
- package/linthost/rules_unicorn_prefer_code_point.go +21 -21
- package/linthost/rules_unicorn_prefer_date_now.go +47 -47
- package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
- package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
- package/linthost/rules_unicorn_prefer_event_target.go +10 -10
- package/linthost/rules_unicorn_prefer_export_from.go +99 -99
- package/linthost/rules_unicorn_prefer_global_this.go +91 -91
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
- package/linthost/rules_unicorn_prefer_includes.go +108 -108
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
- package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
- package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
- package/linthost/rules_unicorn_prefer_module.go +22 -22
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
- package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
- package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
- package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
- package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
- package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
- package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
- package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
- package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
- package/linthost/rules_unicorn_prefer_set_has.go +16 -16
- package/linthost/rules_unicorn_prefer_set_size.go +22 -22
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
- package/linthost/rules_unicorn_prefer_single_call.go +59 -59
- package/linthost/rules_unicorn_prefer_spread.go +24 -24
- package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
- package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
- package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
- package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
- package/linthost/rules_unicorn_prefer_switch.go +65 -65
- package/linthost/rules_unicorn_prefer_ternary.go +35 -35
- package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
- package/linthost/rules_unicorn_prefer_type_error.go +84 -84
- package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
- package/linthost/rules_unicorn_relative_url_style.go +19 -19
- package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
- package/linthost/rules_unicorn_require_module_attributes.go +25 -25
- package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
- package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
- package/linthost/rules_unicorn_string_content.go +1 -1
- package/linthost/rules_unicorn_switch_case_braces.go +16 -16
- package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
- package/linthost/rules_unicorn_template_indent.go +1 -1
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
- package/linthost/rules_unicorn_throw_new_error.go +30 -30
- package/linthost/rules_var.go +273 -3
- package/package.json +3 -3
- package/src/defaultFormat.ts +11 -7
- package/src/structures/ITtscLintConfig.ts +5 -5
- package/src/structures/TtscLintRuleSetting.ts +19 -19
- package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
- package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
- package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
- package/src/structures/format/index.ts +3 -0
- package/src/structures/index.ts +1 -1
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
- package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
- package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
- package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
- package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
- package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
- package/src/structures/rules/ITtscLintJestRules.ts +63 -74
- package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
- package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
- package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
- package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
- package/src/structures/rules/ITtscLintReactRules.ts +91 -104
- package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
- package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
- package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
- package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
- package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
- package/lib/structures/ITtscLintFormat.js.map +0 -1
- /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
|
@@ -1,106 +1,101 @@
|
|
|
1
|
-
import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
|
|
2
1
|
import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
|
|
3
3
|
/**
|
|
4
4
|
* React TSX rules.
|
|
5
5
|
*
|
|
6
|
-
* Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`,
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`, and
|
|
7
|
+
* `eslint-plugin-react-refresh` under one namespace, matching Oxlint's
|
|
8
|
+
* `react/*` plugin layout. Performance-only rules live in a separate
|
|
9
|
+
* {@link ITtscLintReactPerfRules} family because they are opt-in toggles rather
|
|
10
|
+
* than correctness checks.
|
|
11
11
|
*
|
|
12
12
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react
|
|
13
13
|
*/
|
|
14
14
|
export interface ITtscLintReactRules {
|
|
15
15
|
/**
|
|
16
16
|
* Require explicit, valid `type` values on JSX `<button>` elements
|
|
17
|
-
* (`"button"`, `"submit"`, `"reset"`) — the HTML default of
|
|
18
|
-
*
|
|
17
|
+
* (`"button"`, `"submit"`, `"reset"`) — the HTML default of `"submit"` causes
|
|
18
|
+
* accidental form submissions.
|
|
19
19
|
*
|
|
20
20
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md
|
|
21
21
|
*/
|
|
22
22
|
"react/button-has-type"?: TtscLintRuleSetting;
|
|
23
23
|
/**
|
|
24
|
-
* Require components wrapped in `React.memo(...)` or
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* explicit `displayName`.
|
|
24
|
+
* Require components wrapped in `React.memo(...)` or `React.forwardRef(...)`
|
|
25
|
+
* to be named — either by passing a named function, assigning the call to a
|
|
26
|
+
* named binding, or setting an explicit `displayName`.
|
|
28
27
|
*
|
|
29
|
-
* Anonymous wrappers leave the resulting component nameless in
|
|
30
|
-
*
|
|
28
|
+
* Anonymous wrappers leave the resulting component nameless in React DevTools
|
|
29
|
+
* and runtime stack frames.
|
|
31
30
|
*
|
|
32
31
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
|
|
33
32
|
*/
|
|
34
33
|
"react/display-name"?: TtscLintRuleSetting;
|
|
35
34
|
/**
|
|
36
|
-
* Detect high-confidence missing identifiers in React Hook
|
|
37
|
-
*
|
|
38
|
-
* `
|
|
35
|
+
* Detect high-confidence missing identifiers in React Hook dependency arrays
|
|
36
|
+
* (`useEffect`, `useLayoutEffect`, `useInsertionEffect`, `useMemo`,
|
|
37
|
+
* `useCallback`).
|
|
39
38
|
*
|
|
40
39
|
* @reference https://react.dev/reference/react/useEffect#specifying-reactive-dependencies
|
|
41
40
|
*/
|
|
42
41
|
"react/exhaustive-deps"?: TtscLintRuleSetting;
|
|
43
42
|
/**
|
|
44
|
-
* Reject declaring a component or custom Hook inside another
|
|
45
|
-
*
|
|
43
|
+
* Reject declaring a component or custom Hook inside another component or
|
|
44
|
+
* Hook body.
|
|
46
45
|
*
|
|
47
|
-
* Each render rebuilds the inner function, giving it a new
|
|
48
|
-
*
|
|
46
|
+
* Each render rebuilds the inner function, giving it a new identity that
|
|
47
|
+
* discards its state and breaks memoization.
|
|
49
48
|
*
|
|
50
49
|
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
51
50
|
*/
|
|
52
51
|
"react/component-hook-factories"?: TtscLintRuleSetting;
|
|
53
52
|
/**
|
|
54
|
-
* Require JSX `<iframe>` elements to declare a `sandbox` attribute,
|
|
55
|
-
*
|
|
56
|
-
* navigation).
|
|
53
|
+
* Require JSX `<iframe>` elements to declare a `sandbox` attribute, which
|
|
54
|
+
* restricts what embedded content can do (scripts, forms, navigation).
|
|
57
55
|
*
|
|
58
56
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md
|
|
59
57
|
*/
|
|
60
58
|
"react/iframe-missing-sandbox"?: TtscLintRuleSetting;
|
|
61
59
|
/**
|
|
62
|
-
* Reject mutating props, state, or Hook return values inside a
|
|
63
|
-
*
|
|
60
|
+
* Reject mutating props, state, or Hook return values inside a component or
|
|
61
|
+
* Hook.
|
|
64
62
|
*
|
|
65
|
-
* React treats these as read-only; mutating a memoized value can
|
|
66
|
-
*
|
|
63
|
+
* React treats these as read-only; mutating a memoized value can desync
|
|
64
|
+
* renders from the dependencies React tracked it under.
|
|
67
65
|
*
|
|
68
66
|
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
69
67
|
*/
|
|
70
68
|
"react/immutability"?: TtscLintRuleSetting;
|
|
71
69
|
/**
|
|
72
|
-
* Require `key` props on JSX elements produced from arrays or
|
|
73
|
-
*
|
|
74
|
-
* across renders.
|
|
70
|
+
* Require `key` props on JSX elements produced from arrays or `.map(...)`
|
|
71
|
+
* calls — React uses the key to track list identity across renders.
|
|
75
72
|
*
|
|
76
73
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md
|
|
77
74
|
*/
|
|
78
75
|
"react/jsx-key"?: TtscLintRuleSetting;
|
|
79
76
|
/**
|
|
80
|
-
* Reject duplicate JSX prop names on the same element — later
|
|
81
|
-
*
|
|
77
|
+
* Reject duplicate JSX prop names on the same element — later occurrences
|
|
78
|
+
* silently overwrite earlier ones.
|
|
82
79
|
*
|
|
83
80
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md
|
|
84
81
|
*/
|
|
85
82
|
"react/jsx-no-duplicate-props"?: TtscLintRuleSetting;
|
|
86
83
|
/**
|
|
87
|
-
* Reject `javascript:` URLs in JSX URL-like props such as `href`
|
|
88
|
-
* and `src`.
|
|
84
|
+
* Reject `javascript:` URLs in JSX URL-like props such as `href` and `src`.
|
|
89
85
|
*
|
|
90
|
-
* Such URLs evaluate the URL body as script — the same
|
|
91
|
-
*
|
|
92
|
-
* the value is user-controlled.
|
|
86
|
+
* Such URLs evaluate the URL body as script — the same code-execution surface
|
|
87
|
+
* as `eval`, and a common XSS vector when the value is user-controlled.
|
|
93
88
|
*
|
|
94
89
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md
|
|
95
90
|
*/
|
|
96
91
|
"react/jsx-no-script-url"?: TtscLintRuleSetting;
|
|
97
92
|
/**
|
|
98
|
-
* Reject `<a target="_blank">` (or any JSX element with
|
|
99
|
-
*
|
|
100
|
-
*
|
|
93
|
+
* Reject `<a target="_blank">` (or any JSX element with `target="_blank"`)
|
|
94
|
+
* that does not also carry `rel="noreferrer"` (or `rel="noopener
|
|
95
|
+
* noreferrer"`).
|
|
101
96
|
*
|
|
102
|
-
* Without those tokens the opened page can navigate the originating
|
|
103
|
-
*
|
|
97
|
+
* Without those tokens the opened page can navigate the originating window
|
|
98
|
+
* through `window.opener`, a phishing and tab-nabbing vector.
|
|
104
99
|
*
|
|
105
100
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md
|
|
106
101
|
*/
|
|
@@ -109,27 +104,26 @@ export interface ITtscLintReactRules {
|
|
|
109
104
|
* Reject JSX elements whose tag is an uppercase identifier with no
|
|
110
105
|
* value-level declaration anywhere in the source file.
|
|
111
106
|
*
|
|
112
|
-
* Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are
|
|
113
|
-
*
|
|
114
|
-
*
|
|
107
|
+
* Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are skipped
|
|
108
|
+
* because resolving the outer name requires module-level information that
|
|
109
|
+
* belongs to the type checker.
|
|
115
110
|
*
|
|
116
111
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md
|
|
117
112
|
*/
|
|
118
113
|
"react/jsx-no-undef"?: TtscLintRuleSetting;
|
|
119
114
|
/**
|
|
120
|
-
* Reject JSX fragments that wrap exactly one element child or have
|
|
121
|
-
*
|
|
122
|
-
* directly.
|
|
115
|
+
* Reject JSX fragments that wrap exactly one element child or have no
|
|
116
|
+
* meaningful content — the child (or nothing) can be returned directly.
|
|
123
117
|
*
|
|
124
|
-
* Covers both the short `<>...</>` form and explicit
|
|
125
|
-
* `<
|
|
118
|
+
* Covers both the short `<>...</>` form and explicit `<Fragment>` /
|
|
119
|
+
* `<React.Fragment>` elements.
|
|
126
120
|
*
|
|
127
121
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md
|
|
128
122
|
*/
|
|
129
123
|
"react/jsx-no-useless-fragment"?: TtscLintRuleSetting;
|
|
130
124
|
/**
|
|
131
|
-
* Reject `key={index}` patterns inside JSX lists — array index
|
|
132
|
-
*
|
|
125
|
+
* Reject `key={index}` patterns inside JSX lists — array index keys reorder
|
|
126
|
+
* incorrectly on insertion.
|
|
133
127
|
*
|
|
134
128
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md
|
|
135
129
|
*/
|
|
@@ -138,8 +132,8 @@ export interface ITtscLintReactRules {
|
|
|
138
132
|
* Reject passing children through an explicit `children` JSX prop.
|
|
139
133
|
*
|
|
140
134
|
* The nested-tag form is shorter, mirrors HTML, and avoids the
|
|
141
|
-
* double-children footgun where a `children` prop and nested JSX
|
|
142
|
-
*
|
|
135
|
+
* double-children footgun where a `children` prop and nested JSX both target
|
|
136
|
+
* the same slot.
|
|
143
137
|
*
|
|
144
138
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md
|
|
145
139
|
*/
|
|
@@ -147,23 +141,22 @@ export interface ITtscLintReactRules {
|
|
|
147
141
|
/**
|
|
148
142
|
* Reject `dangerouslySetInnerHTML` altogether.
|
|
149
143
|
*
|
|
150
|
-
* The prop bypasses React's escaping and injects raw HTML into the
|
|
151
|
-
*
|
|
152
|
-
* upstream.
|
|
144
|
+
* The prop bypasses React's escaping and injects raw HTML into the DOM — a
|
|
145
|
+
* common XSS vector when the input is not sanitized upstream.
|
|
153
146
|
*
|
|
154
147
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md
|
|
155
148
|
*/
|
|
156
149
|
"react/no-danger"?: TtscLintRuleSetting;
|
|
157
150
|
/**
|
|
158
|
-
* Reject combining `dangerouslySetInnerHTML` with JSX children
|
|
159
|
-
*
|
|
151
|
+
* Reject combining `dangerouslySetInnerHTML` with JSX children — React throws
|
|
152
|
+
* at runtime in this case.
|
|
160
153
|
*
|
|
161
154
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md
|
|
162
155
|
*/
|
|
163
156
|
"react/no-danger-with-children"?: TtscLintRuleSetting;
|
|
164
157
|
/**
|
|
165
|
-
* Reject direct writes to `this.state` outside constructor
|
|
166
|
-
*
|
|
158
|
+
* Reject direct writes to `this.state` outside constructor initialization.
|
|
159
|
+
* Use `this.setState(...)` instead.
|
|
167
160
|
*
|
|
168
161
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md
|
|
169
162
|
*/
|
|
@@ -171,9 +164,9 @@ export interface ITtscLintReactRules {
|
|
|
171
164
|
/**
|
|
172
165
|
* Reject `findDOMNode(...)` calls.
|
|
173
166
|
*
|
|
174
|
-
* The API is deprecated, blocks future React internals work, and
|
|
175
|
-
*
|
|
176
|
-
*
|
|
167
|
+
* The API is deprecated, blocks future React internals work, and breaks
|
|
168
|
+
* component abstraction by reaching across composition boundaries; attach a
|
|
169
|
+
* `ref` to the target element instead.
|
|
177
170
|
*
|
|
178
171
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md
|
|
179
172
|
*/
|
|
@@ -181,9 +174,9 @@ export interface ITtscLintReactRules {
|
|
|
181
174
|
/**
|
|
182
175
|
* Reject `this.isMounted()` calls on class components.
|
|
183
176
|
*
|
|
184
|
-
* The API is deprecated, and anti-patterns around it usually hide
|
|
185
|
-
*
|
|
186
|
-
*
|
|
177
|
+
* The API is deprecated, and anti-patterns around it usually hide a memory
|
|
178
|
+
* leak in async callbacks; cancel the work in `componentWillUnmount`
|
|
179
|
+
* instead.
|
|
187
180
|
*
|
|
188
181
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md
|
|
189
182
|
*/
|
|
@@ -191,25 +184,24 @@ export interface ITtscLintReactRules {
|
|
|
191
184
|
/**
|
|
192
185
|
* Reject string-form JSX refs (`ref="myInput"`).
|
|
193
186
|
*
|
|
194
|
-
* The API is legacy, slated for removal, and has well-known issues
|
|
195
|
-
*
|
|
196
|
-
*
|
|
187
|
+
* The API is legacy, slated for removal, and has well-known issues with
|
|
188
|
+
* static typing, owner tracking, and stale references; use `useRef` or a
|
|
189
|
+
* callback ref instead.
|
|
197
190
|
*
|
|
198
191
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md
|
|
199
192
|
*/
|
|
200
193
|
"react/no-string-refs"?: TtscLintRuleSetting;
|
|
201
194
|
/**
|
|
202
|
-
* Reject unescaped `>`, `"`, `'`, and `}` characters in JSX
|
|
203
|
-
*
|
|
204
|
-
* from forgotten HTML escaping.
|
|
195
|
+
* Reject unescaped `>`, `"`, `'`, and `}` characters in JSX text content —
|
|
196
|
+
* they render literally and almost always come from forgotten HTML escaping.
|
|
205
197
|
*
|
|
206
198
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md
|
|
207
199
|
*/
|
|
208
200
|
"react/no-unescaped-entities"?: TtscLintRuleSetting;
|
|
209
201
|
/**
|
|
210
|
-
* Keep React Fast Refresh component modules from exporting
|
|
211
|
-
*
|
|
212
|
-
*
|
|
202
|
+
* Keep React Fast Refresh component modules from exporting non-component
|
|
203
|
+
* values. Mixing a component export with a constant or hook in the same file
|
|
204
|
+
* invalidates HMR.
|
|
213
205
|
*
|
|
214
206
|
* @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/README.md
|
|
215
207
|
*/
|
|
@@ -217,17 +209,16 @@ export interface ITtscLintReactRules {
|
|
|
217
209
|
/**
|
|
218
210
|
* Reject reading or writing `ref.current` during render.
|
|
219
211
|
*
|
|
220
|
-
* Refs persist mutably across renders without re-rendering, so
|
|
221
|
-
*
|
|
222
|
-
*
|
|
212
|
+
* Refs persist mutably across renders without re-rendering, so touching them
|
|
213
|
+
* in render breaks the pure-render contract and produces inconsistent output
|
|
214
|
+
* between render passes.
|
|
223
215
|
*
|
|
224
216
|
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
225
217
|
*/
|
|
226
218
|
"react/refs"?: TtscLintRuleSetting;
|
|
227
219
|
/**
|
|
228
|
-
* Enforce the Rules of Hooks: only call Hooks at the top level
|
|
229
|
-
*
|
|
230
|
-
* loops, or nested functions.
|
|
220
|
+
* Enforce the Rules of Hooks: only call Hooks at the top level of a component
|
|
221
|
+
* or custom Hook, never inside conditionals, loops, or nested functions.
|
|
231
222
|
*
|
|
232
223
|
* @reference https://react.dev/reference/rules/rules-of-hooks
|
|
233
224
|
*/
|
|
@@ -235,9 +226,9 @@ export interface ITtscLintReactRules {
|
|
|
235
226
|
/**
|
|
236
227
|
* Reject unconditional `setState` calls in `useEffect` bodies.
|
|
237
228
|
*
|
|
238
|
-
* The state update schedules another render and re-runs the
|
|
239
|
-
*
|
|
240
|
-
*
|
|
229
|
+
* The state update schedules another render and re-runs the effect, which
|
|
230
|
+
* usually loops forever; the value almost always belongs in `useMemo` or
|
|
231
|
+
* derived state instead.
|
|
241
232
|
*
|
|
242
233
|
* @reference https://react.dev/learn/you-might-not-need-an-effect
|
|
243
234
|
*/
|
|
@@ -245,43 +236,39 @@ export interface ITtscLintReactRules {
|
|
|
245
236
|
/**
|
|
246
237
|
* Reject calling `setState` during render.
|
|
247
238
|
*
|
|
248
|
-
* Render must stay pure; queuing an update from the render body
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
* check.
|
|
239
|
+
* Render must stay pure; queuing an update from the render body schedules
|
|
240
|
+
* another render that queues another update, producing an infinite render
|
|
241
|
+
* loop unless guarded by an explicit equality check.
|
|
252
242
|
*
|
|
253
243
|
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
254
244
|
*/
|
|
255
245
|
"react/set-state-in-render"?: TtscLintRuleSetting;
|
|
256
246
|
/**
|
|
257
247
|
* Reject string-form `style` values such as `style="color: red"` or
|
|
258
|
-
* `style={
|
|
248
|
+
* `style={\`...`}`.
|
|
259
249
|
*
|
|
260
|
-
* React expects a `{ camelCaseProp: value }` object, not the
|
|
261
|
-
*
|
|
262
|
-
* never applied.
|
|
250
|
+
* React expects a `{ camelCaseProp: value }` object, not the HTML-style CSS
|
|
251
|
+
* string, and the latter is silently coerced and never applied.
|
|
263
252
|
*
|
|
264
253
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md
|
|
265
254
|
*/
|
|
266
255
|
"react/style-prop-object"?: TtscLintRuleSetting;
|
|
267
256
|
/**
|
|
268
|
-
* Reject `useMemo` calculation callbacks that do not return a
|
|
269
|
-
* value.
|
|
257
|
+
* Reject `useMemo` calculation callbacks that do not return a value.
|
|
270
258
|
*
|
|
271
|
-
* A block-bodied callback without `return` memoizes `undefined`,
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
* `({ ... })`.
|
|
259
|
+
* A block-bodied callback without `return` memoizes `undefined`, silently
|
|
260
|
+
* discarding the intended computation — a common mistake when wrapping an
|
|
261
|
+
* object literal in `{ ... }` instead of `({ ... })`.
|
|
275
262
|
*
|
|
276
263
|
* @reference https://react.dev/reference/react/useMemo
|
|
277
264
|
*/
|
|
278
265
|
"react/use-memo"?: TtscLintRuleSetting;
|
|
279
266
|
/**
|
|
280
|
-
* Reject `children` or `dangerouslySetInnerHTML` on void DOM
|
|
281
|
-
*
|
|
267
|
+
* Reject `children` or `dangerouslySetInnerHTML` on void DOM elements
|
|
268
|
+
* (`<img>`, `<br>`, `<input>`, etc.).
|
|
282
269
|
*
|
|
283
|
-
* Void elements have no content model, so React throws at render
|
|
284
|
-
*
|
|
270
|
+
* Void elements have no content model, so React throws at render time when
|
|
271
|
+
* you try to give them any.
|
|
285
272
|
*
|
|
286
273
|
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md
|
|
287
274
|
*/
|
|
@@ -2,33 +2,33 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
|
2
2
|
/**
|
|
3
3
|
* Regular-expression rules from `eslint-plugin-regexp`.
|
|
4
4
|
*
|
|
5
|
-
* These rules check the structure of regex literals — emptiness,
|
|
6
|
-
*
|
|
5
|
+
* These rules check the structure of regex literals — emptiness, uselessness,
|
|
6
|
+
* flag ordering, shorthand classes, Unicode support.
|
|
7
7
|
*
|
|
8
8
|
* Some rules duplicate (and supersede) the regex-related rules in
|
|
9
|
-
* {@link ITtscLintCoreRules}; both ids exist so projects can keep
|
|
10
|
-
*
|
|
9
|
+
* {@link ITtscLintCoreRules}; both ids exist so projects can keep the legacy
|
|
10
|
+
* ESLint names alongside the regexp-plugin variants.
|
|
11
11
|
*
|
|
12
12
|
* @reference https://github.com/ota-meshi/eslint-plugin-regexp
|
|
13
13
|
*/
|
|
14
14
|
export interface ITtscLintRegexpRules {
|
|
15
15
|
/**
|
|
16
|
-
* Reject ASCII control characters in regex literals. Alias of
|
|
17
|
-
*
|
|
16
|
+
* Reject ASCII control characters in regex literals. Alias of the bare core
|
|
17
|
+
* check.
|
|
18
18
|
*
|
|
19
19
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html
|
|
20
20
|
*/
|
|
21
21
|
"regexp/no-control-character"?: TtscLintRuleSetting;
|
|
22
22
|
/**
|
|
23
|
-
* Reject duplicate literal characters inside simple regex
|
|
24
|
-
*
|
|
23
|
+
* Reject duplicate literal characters inside simple regex character classes
|
|
24
|
+
* (`/[aa]/`).
|
|
25
25
|
*
|
|
26
26
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html
|
|
27
27
|
*/
|
|
28
28
|
"regexp/no-dupe-characters-character-class"?: TtscLintRuleSetting;
|
|
29
29
|
/**
|
|
30
|
-
* Reject empty alternatives in a disjunction (`/a||b/`), which
|
|
31
|
-
*
|
|
30
|
+
* Reject empty alternatives in a disjunction (`/a||b/`), which silently match
|
|
31
|
+
* the empty string.
|
|
32
32
|
*
|
|
33
33
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html
|
|
34
34
|
*/
|
|
@@ -36,16 +36,15 @@ export interface ITtscLintRegexpRules {
|
|
|
36
36
|
/**
|
|
37
37
|
* Reject empty capturing groups such as `/()/`.
|
|
38
38
|
*
|
|
39
|
-
* The group shifts the numbering of every later backreference and
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* The group shifts the numbering of every later backreference and capture
|
|
40
|
+
* slot while only ever capturing the empty string — almost always a leftover
|
|
41
|
+
* from an unfinished edit.
|
|
42
42
|
*
|
|
43
43
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html
|
|
44
44
|
*/
|
|
45
45
|
"regexp/no-empty-capturing-group"?: TtscLintRuleSetting;
|
|
46
46
|
/**
|
|
47
|
-
* Reject empty regex character classes (`[]`). Alias of the
|
|
48
|
-
* bare core check.
|
|
47
|
+
* Reject empty regex character classes (`[]`). Alias of the bare core check.
|
|
49
48
|
*
|
|
50
49
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
|
|
51
50
|
*/
|
|
@@ -53,8 +52,8 @@ export interface ITtscLintRegexpRules {
|
|
|
53
52
|
/**
|
|
54
53
|
* Reject empty non-capturing groups such as `/(?:)/`.
|
|
55
54
|
*
|
|
56
|
-
* The group contributes nothing to the match and is virtually always
|
|
57
|
-
*
|
|
55
|
+
* The group contributes nothing to the match and is virtually always a
|
|
56
|
+
* leftover from a deleted inner pattern.
|
|
58
57
|
*
|
|
59
58
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
|
|
60
59
|
*/
|
|
@@ -62,68 +61,63 @@ export interface ITtscLintRegexpRules {
|
|
|
62
61
|
/**
|
|
63
62
|
* Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
|
|
64
63
|
*
|
|
65
|
-
* An empty positive lookaround always matches; an empty negative
|
|
66
|
-
*
|
|
67
|
-
*
|
|
64
|
+
* An empty positive lookaround always matches; an empty negative lookaround
|
|
65
|
+
* never matches. The assertion either collapses to a no-op or breaks the
|
|
66
|
+
* surrounding pattern.
|
|
68
67
|
*
|
|
69
68
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
|
|
70
69
|
*/
|
|
71
70
|
"regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
|
|
72
71
|
/**
|
|
73
|
-
* Reject misleading Unicode characters in regex classes. Alias
|
|
74
|
-
*
|
|
72
|
+
* Reject misleading Unicode characters in regex classes. Alias of the bare
|
|
73
|
+
* misleading-character check.
|
|
75
74
|
*
|
|
76
75
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
|
|
77
76
|
*/
|
|
78
77
|
"regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
|
|
79
78
|
/**
|
|
80
|
-
* Reject single-character character classes such as `/[x]/`
|
|
81
|
-
*
|
|
79
|
+
* Reject single-character character classes such as `/[x]/` — `/x/` is
|
|
80
|
+
* equivalent.
|
|
82
81
|
*
|
|
83
82
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
|
|
84
83
|
*/
|
|
85
84
|
"regexp/no-useless-character-class"?: TtscLintRuleSetting;
|
|
86
85
|
/**
|
|
87
|
-
* Reject unnecessary escapes inside regex literals. Alias of
|
|
88
|
-
*
|
|
86
|
+
* Reject unnecessary escapes inside regex literals. Alias of core
|
|
87
|
+
* `no-useless-escape` for regex contexts.
|
|
89
88
|
*
|
|
90
89
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
|
|
91
90
|
*/
|
|
92
91
|
"regexp/no-useless-escape"?: TtscLintRuleSetting;
|
|
93
92
|
/**
|
|
94
|
-
* Reject regex flags that the literal does not exercise — `i` on
|
|
95
|
-
*
|
|
96
|
-
*
|
|
93
|
+
* Reject regex flags that the literal does not exercise — `i` on a pattern
|
|
94
|
+
* without case-variable characters, `m` without `^`/`$`, `s` without `.`, and
|
|
95
|
+
* similar dead flags on `g`/`y`.
|
|
97
96
|
*
|
|
98
|
-
* Cleans up flag combos that suggest behavior the pattern can never
|
|
99
|
-
* trigger.
|
|
97
|
+
* Cleans up flag combos that suggest behavior the pattern can never trigger.
|
|
100
98
|
*
|
|
101
99
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
|
|
102
100
|
*/
|
|
103
101
|
"regexp/no-useless-flag"?: TtscLintRuleSetting;
|
|
104
102
|
/**
|
|
105
|
-
* Reject quantifiers that do not change the match — constant-one
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* atoms (`/(?:\b)+/`).
|
|
103
|
+
* Reject quantifiers that do not change the match — constant-one counts
|
|
104
|
+
* (`/a{1}/`), `?` on patterns already matching the empty string
|
|
105
|
+
* (`/(?:a+|b*)?/`), and quantifiers on non-consuming atoms (`/(?:\b)+/`).
|
|
109
106
|
*
|
|
110
107
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
|
|
111
108
|
*/
|
|
112
109
|
"regexp/no-useless-quantifier"?: TtscLintRuleSetting;
|
|
113
110
|
/**
|
|
114
|
-
* Reject equal min/max quantifiers (`/a{2,2}/`) in favor of
|
|
115
|
-
* `/a{2}/`.
|
|
111
|
+
* Reject equal min/max quantifiers (`/a{2,2}/`) in favor of `/a{2}/`.
|
|
116
112
|
*
|
|
117
113
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
|
|
118
114
|
*/
|
|
119
115
|
"regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
|
|
120
116
|
/**
|
|
121
|
-
* Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom
|
|
122
|
-
*
|
|
123
|
-
* for `{1,…}`.
|
|
117
|
+
* Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom never
|
|
118
|
+
* matches, so the quantifier is either dead code or a typo for `{1,…}`.
|
|
124
119
|
*
|
|
125
|
-
* The fix is normally to delete the atom or correct the upper
|
|
126
|
-
* bound.
|
|
120
|
+
* The fix is normally to delete the atom or correct the upper bound.
|
|
127
121
|
*
|
|
128
122
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
|
|
129
123
|
*/
|
|
@@ -159,30 +153,28 @@ export interface ITtscLintRegexpRules {
|
|
|
159
153
|
*/
|
|
160
154
|
"regexp/prefer-w"?: TtscLintRuleSetting;
|
|
161
155
|
/**
|
|
162
|
-
* Require regex literals to use the `u` or `v` flag, so
|
|
163
|
-
*
|
|
164
|
-
* predictable.
|
|
156
|
+
* Require regex literals to use the `u` or `v` flag, so Unicode-property
|
|
157
|
+
* escapes and surrogate-pair handling stay predictable.
|
|
165
158
|
*
|
|
166
159
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
|
|
167
160
|
*/
|
|
168
161
|
"regexp/require-unicode-regexp"?: TtscLintRuleSetting;
|
|
169
162
|
/**
|
|
170
|
-
* Require regex literals to use the `v` flag specifically — the
|
|
171
|
-
*
|
|
172
|
-
*
|
|
163
|
+
* Require regex literals to use the `v` flag specifically — the stricter
|
|
164
|
+
* Unicode-sets mode that enables set notation, string properties, and
|
|
165
|
+
* stricter escape rules on top of `u`.
|
|
173
166
|
*
|
|
174
|
-
* Choose this over `require-unicode-regexp` only on engines that
|
|
175
|
-
*
|
|
167
|
+
* Choose this over `require-unicode-regexp` only on engines that ship
|
|
168
|
+
* ES2024-era regex.
|
|
176
169
|
*
|
|
177
170
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
|
|
178
171
|
*/
|
|
179
172
|
"regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
|
|
180
173
|
/**
|
|
181
|
-
* Require regex flags to appear in canonical alphabetical order
|
|
182
|
-
* (`dgimsuvy`).
|
|
174
|
+
* Require regex flags to appear in canonical alphabetical order (`dgimsuvy`).
|
|
183
175
|
*
|
|
184
|
-
* Stable ordering keeps diffs small and lets readers compare flag
|
|
185
|
-
*
|
|
176
|
+
* Stable ordering keeps diffs small and lets readers compare flag sets at a
|
|
177
|
+
* glance.
|
|
186
178
|
*
|
|
187
179
|
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
|
|
188
180
|
*/
|
|
@@ -8,9 +8,8 @@ import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./I
|
|
|
8
8
|
/**
|
|
9
9
|
* Index from typed rule name to its options object.
|
|
10
10
|
*
|
|
11
|
-
* Built-in rule families with configurable options are listed here.
|
|
12
|
-
*
|
|
13
|
-
* package:
|
|
11
|
+
* Built-in rule families with configurable options are listed here. Contributor
|
|
12
|
+
* plugins extend the map by augmenting it from their own package:
|
|
14
13
|
*
|
|
15
14
|
* ```ts
|
|
16
15
|
* declare module "@ttsc/lint" {
|
|
@@ -21,12 +20,12 @@ import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./I
|
|
|
21
20
|
* ```
|
|
22
21
|
*
|
|
23
22
|
* After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
|
|
24
|
-
* `defineConfig`-style helpers in plugin packages can type-check the
|
|
25
|
-
*
|
|
23
|
+
* `defineConfig`-style helpers in plugin packages can type-check the options
|
|
24
|
+
* object against the contributor's declared shape.
|
|
26
25
|
*
|
|
27
|
-
* `format/*` is **not** listed: formatter behavior is configured through
|
|
28
|
-
*
|
|
29
|
-
*
|
|
26
|
+
* `format/*` is **not** listed: formatter behavior is configured through the
|
|
27
|
+
* top-level `format` block ({@link ITtscLintFormat}), not through the `rules`
|
|
28
|
+
* surface.
|
|
30
29
|
*/
|
|
31
30
|
export interface ITtscLintRuleOptionsMap {
|
|
32
31
|
"testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;
|