@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -23
- package/lib/defaultFormat.d.ts +10 -6
- package/lib/defaultFormat.js +10 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +5 -5
- package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
- package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
- package/lib/structures/format/ITtscLintFormat.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
- package/lib/structures/format/index.d.ts +3 -0
- package/lib/structures/format/index.js +20 -0
- package/lib/structures/format/index.js.map +1 -0
- package/lib/structures/index.d.ts +1 -1
- package/lib/structures/index.js +1 -1
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
- package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
- package/linthost/config.go +89 -72
- package/linthost/config_format.go +265 -99
- package/linthost/directives.go +5 -1
- package/linthost/display_width.go +72 -0
- package/linthost/fix.go +26 -1
- package/linthost/format.go +222 -25
- package/linthost/format_editor_settings.go +262 -0
- package/linthost/lsp.go +8 -4
- package/linthost/print_dispatch.go +3 -0
- package/linthost/print_doc.go +13 -0
- package/linthost/print_engine.go +68 -11
- package/linthost/print_nodes_array.go +108 -5
- package/linthost/print_nodes_call.go +515 -74
- package/linthost/print_nodes_function.go +25 -0
- package/linthost/print_nodes_imports.go +47 -14
- package/linthost/print_nodes_list.go +191 -8
- package/linthost/print_nodes_object.go +12 -6
- package/linthost/print_nodes_ternary.go +106 -0
- package/linthost/rules_boundaries.go +400 -400
- package/linthost/rules_camelcase.go +81 -81
- package/linthost/rules_complexity.go +52 -51
- package/linthost/rules_consistent_return.go +81 -81
- package/linthost/rules_core_extra.go +472 -472
- package/linthost/rules_curly.go +43 -43
- package/linthost/rules_default_case.go +15 -15
- package/linthost/rules_default_case_last.go +22 -22
- package/linthost/rules_format_arrow_parens.go +167 -0
- package/linthost/rules_format_bracket_spacing.go +117 -0
- package/linthost/rules_format_clause_join.go +172 -0
- package/linthost/rules_format_declaration_header.go +664 -0
- package/linthost/rules_format_indent.go +616 -0
- package/linthost/rules_format_jsdoc.go +4 -4
- package/linthost/rules_format_orphan_semi.go +106 -0
- package/linthost/rules_format_parameter_properties.go +175 -0
- package/linthost/rules_format_print_width.go +185 -69
- package/linthost/rules_format_quote_props.go +169 -0
- package/linthost/rules_format_quotes.go +75 -29
- package/linthost/rules_format_semi.go +185 -10
- package/linthost/rules_format_sort_imports.go +456 -121
- package/linthost/rules_format_statement_split.go +368 -0
- package/linthost/rules_format_ternary_nullish_parens.go +77 -0
- package/linthost/rules_format_trailing_comma.go +21 -2
- package/linthost/rules_format_whitespace.go +336 -0
- package/linthost/rules_functional.go +688 -688
- package/linthost/rules_gap.go +146 -11
- package/linthost/rules_grouped_accessor_pairs.go +60 -60
- package/linthost/rules_guard_for_in.go +122 -122
- package/linthost/rules_id_length.go +44 -44
- package/linthost/rules_imports.go +11 -3
- package/linthost/rules_init_declarations.go +25 -25
- package/linthost/rules_jsx_a11y.go +844 -844
- package/linthost/rules_max_classes_per_file.go +24 -24
- package/linthost/rules_max_depth.go +43 -43
- package/linthost/rules_max_lines.go +53 -53
- package/linthost/rules_max_lines_per_function.go +28 -28
- package/linthost/rules_max_nested_callbacks.go +26 -26
- package/linthost/rules_max_params.go +20 -20
- package/linthost/rules_max_statements.go +29 -29
- package/linthost/rules_nextjs.go +5 -5
- package/linthost/rules_no_else_return.go +38 -38
- package/linthost/rules_no_empty_named_blocks.go +45 -45
- package/linthost/rules_no_import_assign.go +96 -96
- package/linthost/rules_no_invalid_this.go +19 -19
- package/linthost/rules_no_loop_func.go +43 -43
- package/linthost/rules_no_magic_numbers.go +60 -60
- package/linthost/rules_no_mixed_operators.go +44 -44
- package/linthost/rules_no_param_reassign.go +64 -64
- package/linthost/rules_no_restricted_imports.go +45 -45
- package/linthost/rules_no_restricted_syntax.go +17 -17
- package/linthost/rules_no_shadow.go +112 -112
- package/linthost/rules_no_unreachable.go +36 -36
- package/linthost/rules_no_useless_assignment.go +79 -79
- package/linthost/rules_no_useless_constructor.go +167 -167
- package/linthost/rules_no_useless_return.go +28 -28
- package/linthost/rules_prefer_arrow_callback.go +74 -74
- package/linthost/rules_prefer_destructuring.go +61 -61
- package/linthost/rules_prefer_named_capture_group.go +87 -87
- package/linthost/rules_prefer_rest_params.go +61 -61
- package/linthost/rules_promise.go +800 -800
- package/linthost/rules_react.go +600 -600
- package/linthost/rules_react_extras.go +162 -162
- package/linthost/rules_react_hooks.go +2 -2
- package/linthost/rules_react_perf.go +231 -231
- package/linthost/rules_regexp.go +293 -293
- package/linthost/rules_security.go +613 -613
- package/linthost/rules_sort_imports.go +37 -37
- package/linthost/rules_sort_keys.go +88 -88
- package/linthost/rules_suggestions.go +13 -0
- package/linthost/rules_ts.go +2 -2
- package/linthost/rules_ts_async.go +247 -247
- package/linthost/rules_ts_class_literal_property_style.go +64 -64
- package/linthost/rules_ts_consistent_type_exports.go +209 -209
- package/linthost/rules_ts_explicit_function_return_type.go +35 -35
- package/linthost/rules_ts_extra.go +6 -2
- package/linthost/rules_ts_no_base_to_string.go +140 -140
- package/linthost/rules_ts_no_confusing_void.go +28 -28
- package/linthost/rules_ts_no_deprecated.go +110 -110
- package/linthost/rules_ts_no_for_in_array.go +45 -45
- package/linthost/rules_ts_no_magic_numbers.go +67 -67
- package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
- package/linthost/rules_ts_no_misused_spread.go +64 -64
- package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
- package/linthost/rules_ts_no_restricted_types.go +28 -28
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
- package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
- package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
- package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
- package/linthost/rules_ts_no_unsafe_argument.go +50 -50
- package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
- package/linthost/rules_ts_no_unsafe_call.go +40 -40
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
- package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
- package/linthost/rules_ts_no_unsafe_return.go +64 -64
- package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
- package/linthost/rules_ts_no_useless_constructor.go +20 -20
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
- package/linthost/rules_ts_parameter_properties.go +10 -10
- package/linthost/rules_ts_prefer_find.go +116 -116
- package/linthost/rules_ts_prefer_includes.go +173 -173
- package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
- package/linthost/rules_ts_prefer_optional_chain.go +156 -156
- package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
- package/linthost/rules_ts_prefer_readonly.go +31 -31
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
- package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
- package/linthost/rules_ts_prefer_return_this_type.go +79 -79
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
- package/linthost/rules_ts_promise_function_async.go +41 -41
- package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
- package/linthost/rules_ts_require_array_sort_compare.go +58 -58
- package/linthost/rules_ts_restrict_plus_operands.go +82 -82
- package/linthost/rules_ts_restrict_template_expressions.go +50 -50
- package/linthost/rules_ts_simple.go +249 -249
- package/linthost/rules_ts_sort_type_constituents.go +88 -88
- package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
- package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
- package/linthost/rules_ts_unbound_method.go +65 -65
- package/linthost/rules_tsdoc.go +88 -88
- package/linthost/rules_unicorn_better_regex.go +1 -1
- package/linthost/rules_unicorn_catch_error_name.go +19 -19
- package/linthost/rules_unicorn_consistent_assert.go +20 -20
- package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
- package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
- package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
- package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
- package/linthost/rules_unicorn_custom_error_definition.go +92 -92
- package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
- package/linthost/rules_unicorn_error_message.go +34 -34
- package/linthost/rules_unicorn_escape_case.go +14 -14
- package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
- package/linthost/rules_unicorn_explicit_length_check.go +51 -51
- package/linthost/rules_unicorn_filename_case.go +1 -1
- package/linthost/rules_unicorn_import_style.go +1 -1
- package/linthost/rules_unicorn_isolated_functions.go +2 -2
- package/linthost/rules_unicorn_new_for_builtins.go +49 -49
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
- package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
- package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
- package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
- package/linthost/rules_unicorn_no_array_for_each.go +14 -14
- package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
- package/linthost/rules_unicorn_no_array_reduce.go +15 -15
- package/linthost/rules_unicorn_no_array_reverse.go +17 -17
- package/linthost/rules_unicorn_no_array_sort.go +17 -17
- package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
- package/linthost/rules_unicorn_no_console_spaces.go +30 -30
- package/linthost/rules_unicorn_no_document_cookie.go +13 -13
- package/linthost/rules_unicorn_no_empty_file.go +16 -16
- package/linthost/rules_unicorn_no_for_loop.go +58 -58
- package/linthost/rules_unicorn_no_hex_escape.go +11 -11
- package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
- package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
- package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
- package/linthost/rules_unicorn_no_lonely_if.go +21 -21
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
- package/linthost/rules_unicorn_no_named_default.go +25 -25
- package/linthost/rules_unicorn_no_negated_condition.go +54 -54
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
- package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
- package/linthost/rules_unicorn_no_new_array.go +5 -5
- package/linthost/rules_unicorn_no_new_buffer.go +5 -5
- package/linthost/rules_unicorn_no_null.go +2 -2
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
- package/linthost/rules_unicorn_no_process_exit.go +17 -17
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
- package/linthost/rules_unicorn_no_static_only_class.go +27 -27
- package/linthost/rules_unicorn_no_thenable.go +47 -47
- package/linthost/rules_unicorn_no_this_assignment.go +10 -10
- package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
- package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
- package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
- package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
- package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
- package/linthost/rules_unicorn_no_useless_spread.go +38 -38
- package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
- package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
- package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
- package/linthost/rules_unicorn_number_literal_case.go +33 -33
- package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
- package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
- package/linthost/rules_unicorn_prefer_array_find.go +27 -27
- package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
- package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
- package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
- package/linthost/rules_unicorn_prefer_array_some.go +43 -43
- package/linthost/rules_unicorn_prefer_at.go +42 -42
- package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
- package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
- package/linthost/rules_unicorn_prefer_code_point.go +21 -21
- package/linthost/rules_unicorn_prefer_date_now.go +47 -47
- package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
- package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
- package/linthost/rules_unicorn_prefer_event_target.go +10 -10
- package/linthost/rules_unicorn_prefer_export_from.go +99 -99
- package/linthost/rules_unicorn_prefer_global_this.go +91 -91
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
- package/linthost/rules_unicorn_prefer_includes.go +108 -108
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
- package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
- package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
- package/linthost/rules_unicorn_prefer_module.go +22 -22
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
- package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
- package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
- package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
- package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
- package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
- package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
- package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
- package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
- package/linthost/rules_unicorn_prefer_set_has.go +16 -16
- package/linthost/rules_unicorn_prefer_set_size.go +22 -22
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
- package/linthost/rules_unicorn_prefer_single_call.go +59 -59
- package/linthost/rules_unicorn_prefer_spread.go +24 -24
- package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
- package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
- package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
- package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
- package/linthost/rules_unicorn_prefer_switch.go +65 -65
- package/linthost/rules_unicorn_prefer_ternary.go +35 -35
- package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
- package/linthost/rules_unicorn_prefer_type_error.go +84 -84
- package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
- package/linthost/rules_unicorn_relative_url_style.go +19 -19
- package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
- package/linthost/rules_unicorn_require_module_attributes.go +25 -25
- package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
- package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
- package/linthost/rules_unicorn_string_content.go +1 -1
- package/linthost/rules_unicorn_switch_case_braces.go +16 -16
- package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
- package/linthost/rules_unicorn_template_indent.go +1 -1
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
- package/linthost/rules_unicorn_throw_new_error.go +30 -30
- package/linthost/rules_var.go +273 -3
- package/package.json +3 -3
- package/src/defaultFormat.ts +11 -7
- package/src/structures/ITtscLintConfig.ts +5 -5
- package/src/structures/TtscLintRuleSetting.ts +19 -19
- package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
- package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
- package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
- package/src/structures/format/index.ts +3 -0
- package/src/structures/index.ts +1 -1
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
- package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
- package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
- package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
- package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
- package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
- package/src/structures/rules/ITtscLintJestRules.ts +63 -74
- package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
- package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
- package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
- package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
- package/src/structures/rules/ITtscLintReactRules.ts +91 -104
- package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
- package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
- package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
- package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
- package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
- package/lib/structures/ITtscLintFormat.js.map +0 -1
- /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Options shapes for rules in {@link ITtscLintCypressRules} that accept
|
|
3
|
-
* configuration. Only `cypress/unsafe-to-chain-command` is configurable in
|
|
4
|
-
*
|
|
3
|
+
* configuration. Only `cypress/unsafe-to-chain-command` is configurable in the
|
|
4
|
+
* current native subset.
|
|
5
5
|
*
|
|
6
6
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress
|
|
7
7
|
*/
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
/** `cypress/unsafe-to-chain-command` rule options. */
|
|
10
10
|
export interface ITtscLintCypressUnsafeToChainCommandRuleOptions {
|
|
11
11
|
/**
|
|
12
|
-
* Additional Cypress command names that should be treated as unsafe
|
|
13
|
-
*
|
|
12
|
+
* Additional Cypress command names that should be treated as unsafe action
|
|
13
|
+
* commands when another command is chained after them.
|
|
14
14
|
*
|
|
15
|
-
* @default []
|
|
15
|
+
* @default [ ]
|
|
16
16
|
*/
|
|
17
17
|
methods?: readonly string[];
|
|
18
18
|
}
|
|
@@ -1,34 +1,33 @@
|
|
|
1
|
-
import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
|
|
2
1
|
import type {
|
|
3
2
|
TtscLintRuleOptionsSetting,
|
|
4
3
|
TtscLintRuleSetting,
|
|
5
4
|
} from "../TtscLintRuleSetting";
|
|
5
|
+
import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Cypress end-to-end test rules.
|
|
9
9
|
*
|
|
10
|
-
* Apply to TypeScript/TSX sources that use the Cypress runner
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* Apply to TypeScript/TSX sources that use the Cypress runner (`cy.*` commands
|
|
11
|
+
* and Mocha-style `describe`/`it` blocks). Mirror the rule set from
|
|
12
|
+
* `eslint-plugin-cypress` and detect Cypress-specific anti-patterns such as
|
|
13
|
+
* async test bodies, missing assertions before screenshots, or deprecated XPath
|
|
14
|
+
* selectors.
|
|
15
15
|
*
|
|
16
16
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress
|
|
17
17
|
*/
|
|
18
18
|
export interface ITtscLintCypressRules {
|
|
19
19
|
/**
|
|
20
|
-
* Require at least one Cypress assertion (e.g. `cy.should(...)`)
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Require at least one Cypress assertion (e.g. `cy.should(...)`) before each
|
|
21
|
+
* `cy.screenshot()` call, so the captured screenshot reflects a stable
|
|
22
|
+
* application state.
|
|
23
23
|
*
|
|
24
24
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/assertion-before-screenshot.md
|
|
25
25
|
*/
|
|
26
26
|
"cypress/assertion-before-screenshot"?: TtscLintRuleSetting;
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
* Prefer `cy.should()` over `.and()` when starting a Cypress
|
|
30
|
-
*
|
|
31
|
-
* `.should()`.
|
|
29
|
+
* Prefer `cy.should()` over `.and()` when starting a Cypress assertion chain
|
|
30
|
+
* — `.and()` only makes sense after a preceding `.should()`.
|
|
32
31
|
*
|
|
33
32
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-and.md
|
|
34
33
|
*/
|
|
@@ -37,8 +36,8 @@ export interface ITtscLintCypressRules {
|
|
|
37
36
|
/**
|
|
38
37
|
* Reject assigning the return value of a Cypress command.
|
|
39
38
|
*
|
|
40
|
-
* Cypress commands are asynchronous wrappers; assignment yields a
|
|
41
|
-
*
|
|
39
|
+
* Cypress commands are asynchronous wrappers; assignment yields a chainer
|
|
40
|
+
* proxy rather than the underlying subject.
|
|
42
41
|
*
|
|
43
42
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-assigning-return-values.md
|
|
44
43
|
*/
|
|
@@ -47,8 +46,8 @@ export interface ITtscLintCypressRules {
|
|
|
47
46
|
/**
|
|
48
47
|
* Reject `async` Cypress `before` / `beforeEach` hooks.
|
|
49
48
|
*
|
|
50
|
-
* Cypress already serializes commands; an `async` hook breaks the
|
|
51
|
-
*
|
|
49
|
+
* Cypress already serializes commands; an `async` hook breaks the runner's
|
|
50
|
+
* ordering.
|
|
52
51
|
*
|
|
53
52
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-async-before.md
|
|
54
53
|
*/
|
|
@@ -57,10 +56,9 @@ export interface ITtscLintCypressRules {
|
|
|
57
56
|
/**
|
|
58
57
|
* Reject `async` Cypress `it`/`specify` test callbacks.
|
|
59
58
|
*
|
|
60
|
-
* Cypress builds a synchronous command queue when the test body
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* has run.
|
|
59
|
+
* Cypress builds a synchronous command queue when the test body runs and
|
|
60
|
+
* replays it later; an `async` body resolves before the queue executes, so
|
|
61
|
+
* the test reports success before any command has run.
|
|
64
62
|
*
|
|
65
63
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-async-tests.md
|
|
66
64
|
*/
|
|
@@ -69,8 +67,8 @@ export interface ITtscLintCypressRules {
|
|
|
69
67
|
/**
|
|
70
68
|
* Reject chained `.get(...).get(...)` calls.
|
|
71
69
|
*
|
|
72
|
-
* Subsequent `.get()` calls do not narrow the previous subject;
|
|
73
|
-
*
|
|
70
|
+
* Subsequent `.get()` calls do not narrow the previous subject; use a single
|
|
71
|
+
* selector or `.find()`.
|
|
74
72
|
*
|
|
75
73
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-chained-get.md
|
|
76
74
|
*/
|
|
@@ -80,16 +78,16 @@ export interface ITtscLintCypressRules {
|
|
|
80
78
|
* Reject `cy.debug()` and chained `.debug()` commands.
|
|
81
79
|
*
|
|
82
80
|
* The helpers drop into the browser debugger and pause the runner
|
|
83
|
-
* indefinitely — fine for local exploration but hangs CI when one
|
|
84
|
-
*
|
|
81
|
+
* indefinitely — fine for local exploration but hangs CI when one slips into
|
|
82
|
+
* a committed test.
|
|
85
83
|
*
|
|
86
84
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-debug.md
|
|
87
85
|
*/
|
|
88
86
|
"cypress/no-debug"?: TtscLintRuleSetting;
|
|
89
87
|
|
|
90
88
|
/**
|
|
91
|
-
* Reject `{ force: true }` on Cypress action commands such as
|
|
92
|
-
*
|
|
89
|
+
* Reject `{ force: true }` on Cypress action commands such as `.click({
|
|
90
|
+
* force: true })`. The option masks real UX issues.
|
|
93
91
|
*
|
|
94
92
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-force.md
|
|
95
93
|
*/
|
|
@@ -106,9 +104,9 @@ export interface ITtscLintCypressRules {
|
|
|
106
104
|
"cypress/no-pause"?: TtscLintRuleSetting;
|
|
107
105
|
|
|
108
106
|
/**
|
|
109
|
-
* Reject numeric `cy.wait(ms)` sleeps — they create flaky tests.
|
|
110
|
-
*
|
|
111
|
-
*
|
|
107
|
+
* Reject numeric `cy.wait(ms)` sleeps — they create flaky tests. Wait on a
|
|
108
|
+
* Cypress retry-aware assertion (`should`, `findBy*`, intercepted requests)
|
|
109
|
+
* instead.
|
|
112
110
|
*
|
|
113
111
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-unnecessary-waiting.md
|
|
114
112
|
*/
|
|
@@ -117,27 +115,25 @@ export interface ITtscLintCypressRules {
|
|
|
117
115
|
/**
|
|
118
116
|
* Reject `cy.xpath(...)` selectors.
|
|
119
117
|
*
|
|
120
|
-
* The plugin shipping `cy.xpath` is deprecated, and XPath
|
|
121
|
-
*
|
|
122
|
-
*
|
|
118
|
+
* The plugin shipping `cy.xpath` is deprecated, and XPath expressions tend to
|
|
119
|
+
* encode brittle DOM structure rather than the semantic attributes Cypress
|
|
120
|
+
* otherwise targets.
|
|
123
121
|
*
|
|
124
122
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-xpath.md
|
|
125
123
|
*/
|
|
126
124
|
"cypress/no-xpath"?: TtscLintRuleSetting;
|
|
127
125
|
|
|
128
126
|
/**
|
|
129
|
-
* Require `cy.get()` selectors to target a `data-*` attribute
|
|
130
|
-
*
|
|
131
|
-
* concerns from styling.
|
|
127
|
+
* Require `cy.get()` selectors to target a `data-*` attribute when the
|
|
128
|
+
* selector is a string literal — separates testing concerns from styling.
|
|
132
129
|
*
|
|
133
130
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/require-data-selectors.md
|
|
134
131
|
*/
|
|
135
132
|
"cypress/require-data-selectors"?: TtscLintRuleSetting;
|
|
136
133
|
|
|
137
134
|
/**
|
|
138
|
-
* Reject chaining further Cypress commands after action commands
|
|
139
|
-
*
|
|
140
|
-
* options object.
|
|
135
|
+
* Reject chaining further Cypress commands after action commands (e.g.
|
|
136
|
+
* `.click().then(...)`). Configurable per-command via the options object.
|
|
141
137
|
*
|
|
142
138
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/unsafe-to-chain-command.md
|
|
143
139
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Options shapes for every configurable rule in
|
|
3
3
|
* {@link ITtscLintFunctionalRules}.
|
|
4
4
|
*
|
|
5
|
-
* Most `functional/*` rules share an ignore-pattern block — exposed below
|
|
6
|
-
*
|
|
5
|
+
* Most `functional/*` rules share an ignore-pattern block — exposed below as
|
|
6
|
+
* {@link ITtscLintFunctionalPatternOptions} — and then extend it with
|
|
7
7
|
* rule-specific knobs.
|
|
8
8
|
*
|
|
9
9
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional
|
|
@@ -19,8 +19,7 @@ export interface ITtscLintFunctionalPatternOptions {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/** `functional/functional-parameters` rule options. */
|
|
22
|
-
export interface ITtscLintFunctionalParametersRuleOptions
|
|
23
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
22
|
+
export interface ITtscLintFunctionalParametersRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
24
23
|
/** Allow rest parameters such as `(...args: readonly string[])`. */
|
|
25
24
|
allowRestParameter?: boolean;
|
|
26
25
|
|
|
@@ -28,40 +27,35 @@ export interface ITtscLintFunctionalParametersRuleOptions
|
|
|
28
27
|
allowArgumentsKeyword?: boolean;
|
|
29
28
|
|
|
30
29
|
/**
|
|
31
|
-
* Require functions to declare parameters. `true` maps to the
|
|
32
|
-
*
|
|
30
|
+
* Require functions to declare parameters. `true` maps to the conservative
|
|
31
|
+
* at-least-one policy.
|
|
33
32
|
*/
|
|
34
33
|
enforceParameterCount?: boolean | "atLeastOne" | "exactlyOne";
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
/** `functional/immutable-data` rule options. */
|
|
38
|
-
export interface ITtscLintFunctionalImmutableDataRuleOptions
|
|
39
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
37
|
+
export interface ITtscLintFunctionalImmutableDataRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
40
38
|
/**
|
|
41
|
-
* Skip mutating `Map` and `Set` methods while still checking arrays
|
|
42
|
-
*
|
|
39
|
+
* Skip mutating `Map` and `Set` methods while still checking arrays and
|
|
40
|
+
* property assignment.
|
|
43
41
|
*/
|
|
44
42
|
ignoreMapsAndSets?: boolean;
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
/** `functional/no-let` rule options. */
|
|
48
|
-
export interface ITtscLintFunctionalNoLetRuleOptions
|
|
49
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
46
|
+
export interface ITtscLintFunctionalNoLetRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
50
47
|
/** Permit `let` in a `for` statement initializer. */
|
|
51
48
|
allowInForLoopInit?: boolean;
|
|
52
49
|
|
|
53
|
-
/**
|
|
54
|
-
* Permit `let` inside functions while still rejecting module-level
|
|
55
|
-
* `let`.
|
|
56
|
-
*/
|
|
50
|
+
/** Permit `let` inside functions while still rejecting module-level `let`. */
|
|
57
51
|
allowInFunctions?: boolean;
|
|
58
52
|
}
|
|
59
53
|
|
|
60
54
|
/** `functional/no-conditional-statements` rule options. */
|
|
61
55
|
export interface ITtscLintFunctionalNoConditionalStatementsRuleOptions {
|
|
62
56
|
/**
|
|
63
|
-
* Reserved for upstream-compatible configs; the current native rule
|
|
64
|
-
*
|
|
57
|
+
* Reserved for upstream-compatible configs; the current native rule rejects
|
|
58
|
+
* all `if` / `switch` statements regardless of value.
|
|
65
59
|
*/
|
|
66
60
|
allowReturningBranches?: boolean | "ifExhaustive";
|
|
67
61
|
}
|
|
@@ -78,8 +72,8 @@ export interface ITtscLintFunctionalNoTryStatementsRuleOptions {
|
|
|
78
72
|
/** `functional/no-throw-statements` rule options. */
|
|
79
73
|
export interface ITtscLintFunctionalNoThrowStatementsRuleOptions {
|
|
80
74
|
/**
|
|
81
|
-
* Reserved for upstream-compatible configs; the current native rule
|
|
82
|
-
*
|
|
75
|
+
* Reserved for upstream-compatible configs; the current native rule rejects
|
|
76
|
+
* every `throw` statement regardless of value.
|
|
83
77
|
*/
|
|
84
78
|
allowToRejectPromises?: boolean;
|
|
85
79
|
}
|
|
@@ -102,18 +96,17 @@ export interface ITtscLintFunctionalNoReturnVoidRuleOptions {
|
|
|
102
96
|
allowUndefined?: boolean;
|
|
103
97
|
|
|
104
98
|
/**
|
|
105
|
-
* Skip functions whose return type is inferred to be `void` rather
|
|
106
|
-
*
|
|
99
|
+
* Skip functions whose return type is inferred to be `void` rather than
|
|
100
|
+
* declared explicitly.
|
|
107
101
|
*/
|
|
108
102
|
ignoreInferredTypes?: boolean;
|
|
109
103
|
}
|
|
110
104
|
|
|
111
105
|
/** `functional/prefer-immutable-types` rule options. */
|
|
112
|
-
export interface ITtscLintFunctionalPreferImmutableTypesRuleOptions
|
|
113
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
106
|
+
export interface ITtscLintFunctionalPreferImmutableTypesRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
114
107
|
/**
|
|
115
|
-
* Minimum accepted immutability. The native subset treats any
|
|
116
|
-
*
|
|
108
|
+
* Minimum accepted immutability. The native subset treats any configured
|
|
109
|
+
* value as readonly-required.
|
|
117
110
|
*/
|
|
118
111
|
enforcement?:
|
|
119
112
|
| "ReadonlyShallow"
|
|
@@ -124,8 +117,7 @@ export interface ITtscLintFunctionalPreferImmutableTypesRuleOptions
|
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
/** `functional/prefer-readonly-type` rule options. */
|
|
127
|
-
export interface ITtscLintFunctionalPreferReadonlyTypeRuleOptions
|
|
128
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
120
|
+
export interface ITtscLintFunctionalPreferReadonlyTypeRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
129
121
|
/** Permit mutation of locals while still policing exported types. */
|
|
130
122
|
allowLocalMutation?: boolean;
|
|
131
123
|
|
|
@@ -139,8 +131,8 @@ export interface ITtscLintFunctionalPreferReadonlyTypeRuleOptions
|
|
|
139
131
|
ignoreCollections?: boolean;
|
|
140
132
|
|
|
141
133
|
/**
|
|
142
|
-
* Skip class fields. `"fieldsOnly"` keeps the rule active for
|
|
143
|
-
*
|
|
134
|
+
* Skip class fields. `"fieldsOnly"` keeps the rule active for non-field class
|
|
135
|
+
* members.
|
|
144
136
|
*/
|
|
145
137
|
ignoreClass?: boolean | "fieldsOnly";
|
|
146
138
|
|
|
@@ -170,14 +162,10 @@ export interface ITtscLintFunctionalTypeDeclarationImmutabilityRule {
|
|
|
170
162
|
identifiers: string | readonly string[];
|
|
171
163
|
|
|
172
164
|
/**
|
|
173
|
-
* Reserved for upstream-compatible configs; the current native subset
|
|
174
|
-
*
|
|
165
|
+
* Reserved for upstream-compatible configs; the current native subset treats
|
|
166
|
+
* every value as readonly-required.
|
|
175
167
|
*/
|
|
176
|
-
immutability?:
|
|
177
|
-
| "ReadonlyShallow"
|
|
178
|
-
| "ReadonlyDeep"
|
|
179
|
-
| "Immutable"
|
|
180
|
-
| "Mutable";
|
|
168
|
+
immutability?: "ReadonlyShallow" | "ReadonlyDeep" | "Immutable" | "Mutable";
|
|
181
169
|
|
|
182
170
|
/** Comparator applied to the immutability level above. */
|
|
183
171
|
comparator?:
|
|
@@ -194,8 +182,7 @@ export interface ITtscLintFunctionalTypeDeclarationImmutabilityRule {
|
|
|
194
182
|
}
|
|
195
183
|
|
|
196
184
|
/** `functional/type-declaration-immutability` rule options. */
|
|
197
|
-
export interface ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions
|
|
198
|
-
extends ITtscLintFunctionalPatternOptions {
|
|
185
|
+
export interface ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
199
186
|
/** Declaration-name policies. Empty means all type declarations. */
|
|
200
187
|
rules?: readonly ITtscLintFunctionalTypeDeclarationImmutabilityRule[];
|
|
201
188
|
|
|
@@ -207,7 +194,7 @@ export interface ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions
|
|
|
207
194
|
* Empty object options accepted by simple `functional/*` policy rules.
|
|
208
195
|
*
|
|
209
196
|
* Present as a named type so plugin authors can write `extends
|
|
210
|
-
* ITtscLintFunctionalEmptyRuleOptions` while still surviving a future
|
|
211
|
-
*
|
|
197
|
+
* ITtscLintFunctionalEmptyRuleOptions` while still surviving a future field
|
|
198
|
+
* addition.
|
|
212
199
|
*/
|
|
213
200
|
export interface ITtscLintFunctionalEmptyRuleOptions {}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
|
|
1
2
|
import type {
|
|
2
3
|
ITtscLintFunctionalEmptyRuleOptions,
|
|
3
4
|
ITtscLintFunctionalImmutableDataRuleOptions,
|
|
@@ -14,42 +15,39 @@ import type {
|
|
|
14
15
|
ITtscLintFunctionalReadonlyTypeRuleOptions,
|
|
15
16
|
ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions,
|
|
16
17
|
} from "./ITtscLintFunctionalRuleOptions";
|
|
17
|
-
import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Functional-programming policy rules from `eslint-plugin-functional`.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Functional-programming policy rules from `eslint-plugin-functional`. Pushes
|
|
21
|
+
* code toward immutability, side-effect-free expressions, and expression-style
|
|
22
|
+
* control flow.
|
|
23
23
|
*
|
|
24
|
-
* Most rules are useful in pieces — projects rarely enable the whole
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Most rules are useful in pieces — projects rarely enable the whole family at
|
|
25
|
+
* `"error"`. Enabling the whole set together expresses a strict functional-core
|
|
26
|
+
* / imperative-shell discipline.
|
|
27
27
|
*
|
|
28
28
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional
|
|
29
29
|
*/
|
|
30
30
|
export interface ITtscLintFunctionalRules {
|
|
31
31
|
/**
|
|
32
|
-
* Enforce functional parameter style: reject `arguments`, reject
|
|
33
|
-
*
|
|
34
|
-
* parameter-count policy.
|
|
32
|
+
* Enforce functional parameter style: reject `arguments`, reject rest
|
|
33
|
+
* parameters, and optionally enforce a per-function parameter-count policy.
|
|
35
34
|
*
|
|
36
35
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/functional-parameters.md
|
|
37
36
|
*/
|
|
38
37
|
"functional/functional-parameters"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalParametersRuleOptions>;
|
|
39
38
|
|
|
40
39
|
/**
|
|
41
|
-
* Reject property assignment (`obj.x = ...`), element assignment
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* expressions.
|
|
40
|
+
* Reject property assignment (`obj.x = ...`), element assignment (`arr[0] =
|
|
41
|
+
* ...`), and `Map`/`Set` mutation methods. Configurable to allow mutation
|
|
42
|
+
* inside constructors or initialization expressions.
|
|
45
43
|
*
|
|
46
44
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/immutable-data.md
|
|
47
45
|
*/
|
|
48
46
|
"functional/immutable-data"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalImmutableDataRuleOptions>;
|
|
49
47
|
|
|
50
48
|
/**
|
|
51
|
-
* Reject `abstract` classes and `extends` clauses on class
|
|
52
|
-
*
|
|
49
|
+
* Reject `abstract` classes and `extends` clauses on class declarations;
|
|
50
|
+
* prefer composition and structural typing.
|
|
53
51
|
*
|
|
54
52
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-class-inheritance.md
|
|
55
53
|
*/
|
|
@@ -63,17 +61,17 @@ export interface ITtscLintFunctionalRules {
|
|
|
63
61
|
"functional/no-classes"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
64
62
|
|
|
65
63
|
/**
|
|
66
|
-
* Reject `if` and `switch`
|
|
67
|
-
*
|
|
64
|
+
* Reject `if` and `switch` _statements_. The conditional-expression forms
|
|
65
|
+
* (ternary, `&&`, `||`) remain allowed.
|
|
68
66
|
*
|
|
69
67
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-conditional-statements.md
|
|
70
68
|
*/
|
|
71
69
|
"functional/no-conditional-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoConditionalStatementsRuleOptions>;
|
|
72
70
|
|
|
73
71
|
/**
|
|
74
|
-
* Reject expression statements that exist purely for their side
|
|
75
|
-
*
|
|
76
|
-
*
|
|
72
|
+
* Reject expression statements that exist purely for their side effects
|
|
73
|
+
* (`mutate(x);`); pure code is built up from expressions with assigned or
|
|
74
|
+
* returned results.
|
|
77
75
|
*
|
|
78
76
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-expression-statements.md
|
|
79
77
|
*/
|
|
@@ -81,120 +79,117 @@ export interface ITtscLintFunctionalRules {
|
|
|
81
79
|
|
|
82
80
|
/**
|
|
83
81
|
* Reject `let` declarations so every binding is `const`. The shared
|
|
84
|
-
* ignore-pattern options can carve out specific identifier shapes
|
|
85
|
-
*
|
|
82
|
+
* ignore-pattern options can carve out specific identifier shapes (test
|
|
83
|
+
* locals, loop counters) when a full ban is too aggressive.
|
|
86
84
|
*
|
|
87
85
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-let.md
|
|
88
86
|
*/
|
|
89
87
|
"functional/no-let"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoLetRuleOptions>;
|
|
90
88
|
|
|
91
89
|
/**
|
|
92
|
-
* Reject `for`, `while`, and `do/while` loop statements; use
|
|
93
|
-
*
|
|
90
|
+
* Reject `for`, `while`, and `do/while` loop statements; use recursive
|
|
91
|
+
* helpers or array methods (`map`, `reduce`) instead.
|
|
94
92
|
*
|
|
95
93
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-loop-statements.md
|
|
96
94
|
*/
|
|
97
95
|
"functional/no-loop-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
98
96
|
|
|
99
97
|
/**
|
|
100
|
-
* Reject interfaces and type literals that mix property, method,
|
|
101
|
-
*
|
|
102
|
-
* harder.
|
|
98
|
+
* Reject interfaces and type literals that mix property, method, call, and
|
|
99
|
+
* index member kinds; mixed shapes make composition harder.
|
|
103
100
|
*
|
|
104
101
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-mixed-types.md
|
|
105
102
|
*/
|
|
106
103
|
"functional/no-mixed-types"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoMixedTypesRuleOptions>;
|
|
107
104
|
|
|
108
105
|
/**
|
|
109
|
-
* Reject any call to `Promise.reject(...)`; resolve with an
|
|
110
|
-
* `
|
|
106
|
+
* Reject any call to `Promise.reject(...)`; resolve with an `Option` /
|
|
107
|
+
* `Result` shape so failures stay in the value channel.
|
|
111
108
|
*
|
|
112
109
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-promise-reject.md
|
|
113
110
|
*/
|
|
114
111
|
"functional/no-promise-reject"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
115
112
|
|
|
116
113
|
/**
|
|
117
|
-
* Reject void returns and functions whose declared return type is
|
|
118
|
-
*
|
|
114
|
+
* Reject void returns and functions whose declared return type is `void`;
|
|
115
|
+
* functions should always return a value.
|
|
119
116
|
*
|
|
120
117
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-return-void.md
|
|
121
118
|
*/
|
|
122
119
|
"functional/no-return-void"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoReturnVoidRuleOptions>;
|
|
123
120
|
|
|
124
121
|
/**
|
|
125
|
-
* Reject any `this` expression. Combined with
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* modules, and arrow pipelines.
|
|
122
|
+
* Reject any `this` expression. Combined with `functional/no-classes` this
|
|
123
|
+
* leaves no place where `this` is legal; on its own it still forbids `this`
|
|
124
|
+
* in standalone functions, modules, and arrow pipelines.
|
|
129
125
|
*
|
|
130
126
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-this-expressions.md
|
|
131
127
|
*/
|
|
132
128
|
"functional/no-this-expressions"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
133
129
|
|
|
134
130
|
/**
|
|
135
|
-
* Reject `throw` statements; functional code surfaces failures
|
|
136
|
-
*
|
|
131
|
+
* Reject `throw` statements; functional code surfaces failures through return
|
|
132
|
+
* values (`Either`, `Result`) instead.
|
|
137
133
|
*
|
|
138
134
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-throw-statements.md
|
|
139
135
|
*/
|
|
140
136
|
"functional/no-throw-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoThrowStatementsRuleOptions>;
|
|
141
137
|
|
|
142
138
|
/**
|
|
143
|
-
* Reject `try/catch` and `try/finally` statements as a corollary
|
|
144
|
-
*
|
|
139
|
+
* Reject `try/catch` and `try/finally` statements as a corollary of
|
|
140
|
+
* `functional/no-throw-statements`.
|
|
145
141
|
*
|
|
146
142
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-try-statements.md
|
|
147
143
|
*/
|
|
148
144
|
"functional/no-try-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoTryStatementsRuleOptions>;
|
|
149
145
|
|
|
150
146
|
/**
|
|
151
|
-
* Require declared variable, parameter, and property types to be
|
|
152
|
-
*
|
|
147
|
+
* Require declared variable, parameter, and property types to be `readonly`
|
|
148
|
+
* or otherwise structurally immutable.
|
|
153
149
|
*
|
|
154
150
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-immutable-types.md
|
|
155
151
|
*/
|
|
156
152
|
"functional/prefer-immutable-types"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferImmutableTypesRuleOptions>;
|
|
157
153
|
|
|
158
154
|
/**
|
|
159
|
-
* Prefer function-property signatures (`fn: () => T`) over method
|
|
160
|
-
*
|
|
155
|
+
* Prefer function-property signatures (`fn: () => T`) over method shorthand
|
|
156
|
+
* (`fn(): T`) in interfaces and type literals.
|
|
161
157
|
*
|
|
162
|
-
* Only the property form accepts `readonly`, so method shorthand
|
|
163
|
-
*
|
|
164
|
-
* form.
|
|
158
|
+
* Only the property form accepts `readonly`, so method shorthand silently
|
|
159
|
+
* makes the slot mutable; overloads still need the method form.
|
|
165
160
|
*
|
|
166
161
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-property-signatures.md
|
|
167
162
|
*/
|
|
168
163
|
"functional/prefer-property-signatures"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
169
164
|
|
|
170
165
|
/**
|
|
171
|
-
* Prefer `readonly` array, tuple, collection, and property types
|
|
172
|
-
*
|
|
166
|
+
* Prefer `readonly` array, tuple, collection, and property types over their
|
|
167
|
+
* mutable counterparts.
|
|
173
168
|
*
|
|
174
169
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-readonly-type.md
|
|
175
170
|
*/
|
|
176
171
|
"functional/prefer-readonly-type"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferReadonlyTypeRuleOptions>;
|
|
177
172
|
|
|
178
173
|
/**
|
|
179
|
-
* Reject trivial wrappers such as `x => f(x)` in favor of the tacit
|
|
180
|
-
*
|
|
174
|
+
* Reject trivial wrappers such as `x => f(x)` in favor of the tacit form `f`;
|
|
175
|
+
* reduces noise in functional pipelines.
|
|
181
176
|
*
|
|
182
177
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-tacit.md
|
|
183
178
|
*/
|
|
184
179
|
"functional/prefer-tacit"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferTacitRuleOptions>;
|
|
185
180
|
|
|
186
181
|
/**
|
|
187
|
-
* Enforce one consistent spelling for readonly types — `readonly
|
|
188
|
-
*
|
|
182
|
+
* Enforce one consistent spelling for readonly types — `readonly T[]` vs
|
|
183
|
+
* `ReadonlyArray<T>` — across the project.
|
|
189
184
|
*
|
|
190
185
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/readonly-type.md
|
|
191
186
|
*/
|
|
192
187
|
"functional/readonly-type"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalReadonlyTypeRuleOptions>;
|
|
193
188
|
|
|
194
189
|
/**
|
|
195
|
-
* Enforce readonly/immutable type declarations by
|
|
196
|
-
*
|
|
197
|
-
*
|
|
190
|
+
* Enforce readonly/immutable type declarations by _declaration name_ policy —
|
|
191
|
+
* for projects that want only types matching certain naming conventions to be
|
|
192
|
+
* locked down.
|
|
198
193
|
*
|
|
199
194
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/type-declaration-immutability.md
|
|
200
195
|
*/
|