@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,17 +1,17 @@
|
|
|
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
|
*/
|
|
8
8
|
/** `cypress/unsafe-to-chain-command` rule options. */
|
|
9
9
|
export interface ITtscLintCypressUnsafeToChainCommandRuleOptions {
|
|
10
10
|
/**
|
|
11
|
-
* Additional Cypress command names that should be treated as unsafe
|
|
12
|
-
*
|
|
11
|
+
* Additional Cypress command names that should be treated as unsafe action
|
|
12
|
+
* commands when another command is chained after them.
|
|
13
13
|
*
|
|
14
|
-
* @default []
|
|
14
|
+
* @default [ ]
|
|
15
15
|
*/
|
|
16
16
|
methods?: readonly string[];
|
|
17
17
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* Options shapes for rules in {@link ITtscLintCypressRules} that accept
|
|
4
|
-
* configuration. Only `cypress/unsafe-to-chain-command` is configurable in
|
|
5
|
-
*
|
|
4
|
+
* configuration. Only `cypress/unsafe-to-chain-command` is configurable in the
|
|
5
|
+
* current native subset.
|
|
6
6
|
*
|
|
7
7
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress
|
|
8
8
|
*/
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
|
|
2
1
|
import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
|
|
3
3
|
/**
|
|
4
4
|
* Cypress end-to-end test rules.
|
|
5
5
|
*
|
|
6
|
-
* Apply to TypeScript/TSX sources that use the Cypress runner
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Apply to TypeScript/TSX sources that use the Cypress runner (`cy.*` commands
|
|
7
|
+
* and Mocha-style `describe`/`it` blocks). Mirror the rule set from
|
|
8
|
+
* `eslint-plugin-cypress` and detect Cypress-specific anti-patterns such as
|
|
9
|
+
* async test bodies, missing assertions before screenshots, or deprecated XPath
|
|
10
|
+
* selectors.
|
|
11
11
|
*
|
|
12
12
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress
|
|
13
13
|
*/
|
|
14
14
|
export interface ITtscLintCypressRules {
|
|
15
15
|
/**
|
|
16
|
-
* Require at least one Cypress assertion (e.g. `cy.should(...)`)
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Require at least one Cypress assertion (e.g. `cy.should(...)`) before each
|
|
17
|
+
* `cy.screenshot()` call, so the captured screenshot reflects a stable
|
|
18
|
+
* application state.
|
|
19
19
|
*
|
|
20
20
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/assertion-before-screenshot.md
|
|
21
21
|
*/
|
|
22
22
|
"cypress/assertion-before-screenshot"?: TtscLintRuleSetting;
|
|
23
23
|
/**
|
|
24
|
-
* Prefer `cy.should()` over `.and()` when starting a Cypress
|
|
25
|
-
*
|
|
26
|
-
* `.should()`.
|
|
24
|
+
* Prefer `cy.should()` over `.and()` when starting a Cypress assertion chain
|
|
25
|
+
* — `.and()` only makes sense after a preceding `.should()`.
|
|
27
26
|
*
|
|
28
27
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-and.md
|
|
29
28
|
*/
|
|
@@ -31,8 +30,8 @@ export interface ITtscLintCypressRules {
|
|
|
31
30
|
/**
|
|
32
31
|
* Reject assigning the return value of a Cypress command.
|
|
33
32
|
*
|
|
34
|
-
* Cypress commands are asynchronous wrappers; assignment yields a
|
|
35
|
-
*
|
|
33
|
+
* Cypress commands are asynchronous wrappers; assignment yields a chainer
|
|
34
|
+
* proxy rather than the underlying subject.
|
|
36
35
|
*
|
|
37
36
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-assigning-return-values.md
|
|
38
37
|
*/
|
|
@@ -40,8 +39,8 @@ export interface ITtscLintCypressRules {
|
|
|
40
39
|
/**
|
|
41
40
|
* Reject `async` Cypress `before` / `beforeEach` hooks.
|
|
42
41
|
*
|
|
43
|
-
* Cypress already serializes commands; an `async` hook breaks the
|
|
44
|
-
*
|
|
42
|
+
* Cypress already serializes commands; an `async` hook breaks the runner's
|
|
43
|
+
* ordering.
|
|
45
44
|
*
|
|
46
45
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-async-before.md
|
|
47
46
|
*/
|
|
@@ -49,10 +48,9 @@ export interface ITtscLintCypressRules {
|
|
|
49
48
|
/**
|
|
50
49
|
* Reject `async` Cypress `it`/`specify` test callbacks.
|
|
51
50
|
*
|
|
52
|
-
* Cypress builds a synchronous command queue when the test body
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* has run.
|
|
51
|
+
* Cypress builds a synchronous command queue when the test body runs and
|
|
52
|
+
* replays it later; an `async` body resolves before the queue executes, so
|
|
53
|
+
* the test reports success before any command has run.
|
|
56
54
|
*
|
|
57
55
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-async-tests.md
|
|
58
56
|
*/
|
|
@@ -60,8 +58,8 @@ export interface ITtscLintCypressRules {
|
|
|
60
58
|
/**
|
|
61
59
|
* Reject chained `.get(...).get(...)` calls.
|
|
62
60
|
*
|
|
63
|
-
* Subsequent `.get()` calls do not narrow the previous subject;
|
|
64
|
-
*
|
|
61
|
+
* Subsequent `.get()` calls do not narrow the previous subject; use a single
|
|
62
|
+
* selector or `.find()`.
|
|
65
63
|
*
|
|
66
64
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-chained-get.md
|
|
67
65
|
*/
|
|
@@ -70,15 +68,15 @@ export interface ITtscLintCypressRules {
|
|
|
70
68
|
* Reject `cy.debug()` and chained `.debug()` commands.
|
|
71
69
|
*
|
|
72
70
|
* The helpers drop into the browser debugger and pause the runner
|
|
73
|
-
* indefinitely — fine for local exploration but hangs CI when one
|
|
74
|
-
*
|
|
71
|
+
* indefinitely — fine for local exploration but hangs CI when one slips into
|
|
72
|
+
* a committed test.
|
|
75
73
|
*
|
|
76
74
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-debug.md
|
|
77
75
|
*/
|
|
78
76
|
"cypress/no-debug"?: TtscLintRuleSetting;
|
|
79
77
|
/**
|
|
80
|
-
* Reject `{ force: true }` on Cypress action commands such as
|
|
81
|
-
*
|
|
78
|
+
* Reject `{ force: true }` on Cypress action commands such as `.click({
|
|
79
|
+
* force: true })`. The option masks real UX issues.
|
|
82
80
|
*
|
|
83
81
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-force.md
|
|
84
82
|
*/
|
|
@@ -93,9 +91,9 @@ export interface ITtscLintCypressRules {
|
|
|
93
91
|
*/
|
|
94
92
|
"cypress/no-pause"?: TtscLintRuleSetting;
|
|
95
93
|
/**
|
|
96
|
-
* Reject numeric `cy.wait(ms)` sleeps — they create flaky tests.
|
|
97
|
-
*
|
|
98
|
-
*
|
|
94
|
+
* Reject numeric `cy.wait(ms)` sleeps — they create flaky tests. Wait on a
|
|
95
|
+
* Cypress retry-aware assertion (`should`, `findBy*`, intercepted requests)
|
|
96
|
+
* instead.
|
|
99
97
|
*
|
|
100
98
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-unnecessary-waiting.md
|
|
101
99
|
*/
|
|
@@ -103,25 +101,23 @@ export interface ITtscLintCypressRules {
|
|
|
103
101
|
/**
|
|
104
102
|
* Reject `cy.xpath(...)` selectors.
|
|
105
103
|
*
|
|
106
|
-
* The plugin shipping `cy.xpath` is deprecated, and XPath
|
|
107
|
-
*
|
|
108
|
-
*
|
|
104
|
+
* The plugin shipping `cy.xpath` is deprecated, and XPath expressions tend to
|
|
105
|
+
* encode brittle DOM structure rather than the semantic attributes Cypress
|
|
106
|
+
* otherwise targets.
|
|
109
107
|
*
|
|
110
108
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/no-xpath.md
|
|
111
109
|
*/
|
|
112
110
|
"cypress/no-xpath"?: TtscLintRuleSetting;
|
|
113
111
|
/**
|
|
114
|
-
* Require `cy.get()` selectors to target a `data-*` attribute
|
|
115
|
-
*
|
|
116
|
-
* concerns from styling.
|
|
112
|
+
* Require `cy.get()` selectors to target a `data-*` attribute when the
|
|
113
|
+
* selector is a string literal — separates testing concerns from styling.
|
|
117
114
|
*
|
|
118
115
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/require-data-selectors.md
|
|
119
116
|
*/
|
|
120
117
|
"cypress/require-data-selectors"?: TtscLintRuleSetting;
|
|
121
118
|
/**
|
|
122
|
-
* Reject chaining further Cypress commands after action commands
|
|
123
|
-
*
|
|
124
|
-
* options object.
|
|
119
|
+
* Reject chaining further Cypress commands after action commands (e.g.
|
|
120
|
+
* `.click().then(...)`). Configurable per-command via the options object.
|
|
125
121
|
*
|
|
126
122
|
* @reference https://github.com/cypress-io/eslint-plugin-cypress/blob/master/docs/rules/unsafe-to-chain-command.md
|
|
127
123
|
*/
|
|
@@ -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
|
|
@@ -22,16 +22,16 @@ export interface ITtscLintFunctionalParametersRuleOptions extends ITtscLintFunct
|
|
|
22
22
|
/** Allow the legacy `arguments` object. */
|
|
23
23
|
allowArgumentsKeyword?: boolean;
|
|
24
24
|
/**
|
|
25
|
-
* Require functions to declare parameters. `true` maps to the
|
|
26
|
-
*
|
|
25
|
+
* Require functions to declare parameters. `true` maps to the conservative
|
|
26
|
+
* at-least-one policy.
|
|
27
27
|
*/
|
|
28
28
|
enforceParameterCount?: boolean | "atLeastOne" | "exactlyOne";
|
|
29
29
|
}
|
|
30
30
|
/** `functional/immutable-data` rule options. */
|
|
31
31
|
export interface ITtscLintFunctionalImmutableDataRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
32
32
|
/**
|
|
33
|
-
* Skip mutating `Map` and `Set` methods while still checking arrays
|
|
34
|
-
*
|
|
33
|
+
* Skip mutating `Map` and `Set` methods while still checking arrays and
|
|
34
|
+
* property assignment.
|
|
35
35
|
*/
|
|
36
36
|
ignoreMapsAndSets?: boolean;
|
|
37
37
|
}
|
|
@@ -39,17 +39,14 @@ export interface ITtscLintFunctionalImmutableDataRuleOptions extends ITtscLintFu
|
|
|
39
39
|
export interface ITtscLintFunctionalNoLetRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
40
40
|
/** Permit `let` in a `for` statement initializer. */
|
|
41
41
|
allowInForLoopInit?: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Permit `let` inside functions while still rejecting module-level
|
|
44
|
-
* `let`.
|
|
45
|
-
*/
|
|
42
|
+
/** Permit `let` inside functions while still rejecting module-level `let`. */
|
|
46
43
|
allowInFunctions?: boolean;
|
|
47
44
|
}
|
|
48
45
|
/** `functional/no-conditional-statements` rule options. */
|
|
49
46
|
export interface ITtscLintFunctionalNoConditionalStatementsRuleOptions {
|
|
50
47
|
/**
|
|
51
|
-
* Reserved for upstream-compatible configs; the current native rule
|
|
52
|
-
*
|
|
48
|
+
* Reserved for upstream-compatible configs; the current native rule rejects
|
|
49
|
+
* all `if` / `switch` statements regardless of value.
|
|
53
50
|
*/
|
|
54
51
|
allowReturningBranches?: boolean | "ifExhaustive";
|
|
55
52
|
}
|
|
@@ -63,8 +60,8 @@ export interface ITtscLintFunctionalNoTryStatementsRuleOptions {
|
|
|
63
60
|
/** `functional/no-throw-statements` rule options. */
|
|
64
61
|
export interface ITtscLintFunctionalNoThrowStatementsRuleOptions {
|
|
65
62
|
/**
|
|
66
|
-
* Reserved for upstream-compatible configs; the current native rule
|
|
67
|
-
*
|
|
63
|
+
* Reserved for upstream-compatible configs; the current native rule rejects
|
|
64
|
+
* every `throw` statement regardless of value.
|
|
68
65
|
*/
|
|
69
66
|
allowToRejectPromises?: boolean;
|
|
70
67
|
}
|
|
@@ -82,16 +79,16 @@ export interface ITtscLintFunctionalNoReturnVoidRuleOptions {
|
|
|
82
79
|
/** Permit a function that returns `undefined` to satisfy the rule. */
|
|
83
80
|
allowUndefined?: boolean;
|
|
84
81
|
/**
|
|
85
|
-
* Skip functions whose return type is inferred to be `void` rather
|
|
86
|
-
*
|
|
82
|
+
* Skip functions whose return type is inferred to be `void` rather than
|
|
83
|
+
* declared explicitly.
|
|
87
84
|
*/
|
|
88
85
|
ignoreInferredTypes?: boolean;
|
|
89
86
|
}
|
|
90
87
|
/** `functional/prefer-immutable-types` rule options. */
|
|
91
88
|
export interface ITtscLintFunctionalPreferImmutableTypesRuleOptions extends ITtscLintFunctionalPatternOptions {
|
|
92
89
|
/**
|
|
93
|
-
* Minimum accepted immutability. The native subset treats any
|
|
94
|
-
*
|
|
90
|
+
* Minimum accepted immutability. The native subset treats any configured
|
|
91
|
+
* value as readonly-required.
|
|
95
92
|
*/
|
|
96
93
|
enforcement?: "ReadonlyShallow" | "ReadonlyDeep" | "Immutable" | "None" | false;
|
|
97
94
|
}
|
|
@@ -106,8 +103,8 @@ export interface ITtscLintFunctionalPreferReadonlyTypeRuleOptions extends ITtscL
|
|
|
106
103
|
/** Skip array / tuple / `Map` / `Set` types. */
|
|
107
104
|
ignoreCollections?: boolean;
|
|
108
105
|
/**
|
|
109
|
-
* Skip class fields. `"fieldsOnly"` keeps the rule active for
|
|
110
|
-
*
|
|
106
|
+
* Skip class fields. `"fieldsOnly"` keeps the rule active for non-field class
|
|
107
|
+
* members.
|
|
111
108
|
*/
|
|
112
109
|
ignoreClass?: boolean | "fieldsOnly";
|
|
113
110
|
/** Skip interface members entirely. */
|
|
@@ -132,8 +129,8 @@ export interface ITtscLintFunctionalTypeDeclarationImmutabilityRule {
|
|
|
132
129
|
/** Type / interface name or regex string(s) this policy applies to. */
|
|
133
130
|
identifiers: string | readonly string[];
|
|
134
131
|
/**
|
|
135
|
-
* Reserved for upstream-compatible configs; the current native subset
|
|
136
|
-
*
|
|
132
|
+
* Reserved for upstream-compatible configs; the current native subset treats
|
|
133
|
+
* every value as readonly-required.
|
|
137
134
|
*/
|
|
138
135
|
immutability?: "ReadonlyShallow" | "ReadonlyDeep" | "Immutable" | "Mutable";
|
|
139
136
|
/** Comparator applied to the immutability level above. */
|
|
@@ -150,8 +147,8 @@ export interface ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions exten
|
|
|
150
147
|
* Empty object options accepted by simple `functional/*` policy rules.
|
|
151
148
|
*
|
|
152
149
|
* Present as a named type so plugin authors can write `extends
|
|
153
|
-
* ITtscLintFunctionalEmptyRuleOptions` while still surviving a future
|
|
154
|
-
*
|
|
150
|
+
* ITtscLintFunctionalEmptyRuleOptions` while still surviving a future field
|
|
151
|
+
* addition.
|
|
155
152
|
*/
|
|
156
153
|
export interface ITtscLintFunctionalEmptyRuleOptions {
|
|
157
154
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Options shapes for every configurable rule in
|
|
4
4
|
* {@link ITtscLintFunctionalRules}.
|
|
5
5
|
*
|
|
6
|
-
* Most `functional/*` rules share an ignore-pattern block — exposed below
|
|
7
|
-
*
|
|
6
|
+
* Most `functional/*` rules share an ignore-pattern block — exposed below as
|
|
7
|
+
* {@link ITtscLintFunctionalPatternOptions} — and then extend it with
|
|
8
8
|
* rule-specific knobs.
|
|
9
9
|
*
|
|
10
10
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional
|
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
import type { ITtscLintFunctionalEmptyRuleOptions, ITtscLintFunctionalImmutableDataRuleOptions, ITtscLintFunctionalNoConditionalStatementsRuleOptions, ITtscLintFunctionalNoLetRuleOptions, ITtscLintFunctionalNoMixedTypesRuleOptions, ITtscLintFunctionalNoReturnVoidRuleOptions, ITtscLintFunctionalNoThrowStatementsRuleOptions, ITtscLintFunctionalNoTryStatementsRuleOptions, ITtscLintFunctionalParametersRuleOptions, ITtscLintFunctionalPreferImmutableTypesRuleOptions, ITtscLintFunctionalPreferReadonlyTypeRuleOptions, ITtscLintFunctionalPreferTacitRuleOptions, ITtscLintFunctionalReadonlyTypeRuleOptions, ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions } from "./ITtscLintFunctionalRuleOptions";
|
|
2
1
|
import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
import type { ITtscLintFunctionalEmptyRuleOptions, ITtscLintFunctionalImmutableDataRuleOptions, ITtscLintFunctionalNoConditionalStatementsRuleOptions, ITtscLintFunctionalNoLetRuleOptions, ITtscLintFunctionalNoMixedTypesRuleOptions, ITtscLintFunctionalNoReturnVoidRuleOptions, ITtscLintFunctionalNoThrowStatementsRuleOptions, ITtscLintFunctionalNoTryStatementsRuleOptions, ITtscLintFunctionalParametersRuleOptions, ITtscLintFunctionalPreferImmutableTypesRuleOptions, ITtscLintFunctionalPreferReadonlyTypeRuleOptions, ITtscLintFunctionalPreferTacitRuleOptions, ITtscLintFunctionalReadonlyTypeRuleOptions, ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions } from "./ITtscLintFunctionalRuleOptions";
|
|
3
3
|
/**
|
|
4
|
-
* Functional-programming policy rules from `eslint-plugin-functional`.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Functional-programming policy rules from `eslint-plugin-functional`. Pushes
|
|
5
|
+
* code toward immutability, side-effect-free expressions, and expression-style
|
|
6
|
+
* control flow.
|
|
7
7
|
*
|
|
8
|
-
* Most rules are useful in pieces — projects rarely enable the whole
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Most rules are useful in pieces — projects rarely enable the whole family at
|
|
9
|
+
* `"error"`. Enabling the whole set together expresses a strict functional-core
|
|
10
|
+
* / imperative-shell discipline.
|
|
11
11
|
*
|
|
12
12
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional
|
|
13
13
|
*/
|
|
14
14
|
export interface ITtscLintFunctionalRules {
|
|
15
15
|
/**
|
|
16
|
-
* Enforce functional parameter style: reject `arguments`, reject
|
|
17
|
-
*
|
|
18
|
-
* parameter-count policy.
|
|
16
|
+
* Enforce functional parameter style: reject `arguments`, reject rest
|
|
17
|
+
* parameters, and optionally enforce a per-function parameter-count policy.
|
|
19
18
|
*
|
|
20
19
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/functional-parameters.md
|
|
21
20
|
*/
|
|
22
21
|
"functional/functional-parameters"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalParametersRuleOptions>;
|
|
23
22
|
/**
|
|
24
|
-
* Reject property assignment (`obj.x = ...`), element assignment
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* expressions.
|
|
23
|
+
* Reject property assignment (`obj.x = ...`), element assignment (`arr[0] =
|
|
24
|
+
* ...`), and `Map`/`Set` mutation methods. Configurable to allow mutation
|
|
25
|
+
* inside constructors or initialization expressions.
|
|
28
26
|
*
|
|
29
27
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/immutable-data.md
|
|
30
28
|
*/
|
|
31
29
|
"functional/immutable-data"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalImmutableDataRuleOptions>;
|
|
32
30
|
/**
|
|
33
|
-
* Reject `abstract` classes and `extends` clauses on class
|
|
34
|
-
*
|
|
31
|
+
* Reject `abstract` classes and `extends` clauses on class declarations;
|
|
32
|
+
* prefer composition and structural typing.
|
|
35
33
|
*
|
|
36
34
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-class-inheritance.md
|
|
37
35
|
*/
|
|
@@ -43,123 +41,120 @@ export interface ITtscLintFunctionalRules {
|
|
|
43
41
|
*/
|
|
44
42
|
"functional/no-classes"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
45
43
|
/**
|
|
46
|
-
* Reject `if` and `switch`
|
|
47
|
-
*
|
|
44
|
+
* Reject `if` and `switch` _statements_. The conditional-expression forms
|
|
45
|
+
* (ternary, `&&`, `||`) remain allowed.
|
|
48
46
|
*
|
|
49
47
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-conditional-statements.md
|
|
50
48
|
*/
|
|
51
49
|
"functional/no-conditional-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoConditionalStatementsRuleOptions>;
|
|
52
50
|
/**
|
|
53
|
-
* Reject expression statements that exist purely for their side
|
|
54
|
-
*
|
|
55
|
-
*
|
|
51
|
+
* Reject expression statements that exist purely for their side effects
|
|
52
|
+
* (`mutate(x);`); pure code is built up from expressions with assigned or
|
|
53
|
+
* returned results.
|
|
56
54
|
*
|
|
57
55
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-expression-statements.md
|
|
58
56
|
*/
|
|
59
57
|
"functional/no-expression-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
60
58
|
/**
|
|
61
59
|
* Reject `let` declarations so every binding is `const`. The shared
|
|
62
|
-
* ignore-pattern options can carve out specific identifier shapes
|
|
63
|
-
*
|
|
60
|
+
* ignore-pattern options can carve out specific identifier shapes (test
|
|
61
|
+
* locals, loop counters) when a full ban is too aggressive.
|
|
64
62
|
*
|
|
65
63
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-let.md
|
|
66
64
|
*/
|
|
67
65
|
"functional/no-let"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoLetRuleOptions>;
|
|
68
66
|
/**
|
|
69
|
-
* Reject `for`, `while`, and `do/while` loop statements; use
|
|
70
|
-
*
|
|
67
|
+
* Reject `for`, `while`, and `do/while` loop statements; use recursive
|
|
68
|
+
* helpers or array methods (`map`, `reduce`) instead.
|
|
71
69
|
*
|
|
72
70
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-loop-statements.md
|
|
73
71
|
*/
|
|
74
72
|
"functional/no-loop-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
75
73
|
/**
|
|
76
|
-
* Reject interfaces and type literals that mix property, method,
|
|
77
|
-
*
|
|
78
|
-
* harder.
|
|
74
|
+
* Reject interfaces and type literals that mix property, method, call, and
|
|
75
|
+
* index member kinds; mixed shapes make composition harder.
|
|
79
76
|
*
|
|
80
77
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-mixed-types.md
|
|
81
78
|
*/
|
|
82
79
|
"functional/no-mixed-types"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoMixedTypesRuleOptions>;
|
|
83
80
|
/**
|
|
84
|
-
* Reject any call to `Promise.reject(...)`; resolve with an
|
|
85
|
-
* `
|
|
81
|
+
* Reject any call to `Promise.reject(...)`; resolve with an `Option` /
|
|
82
|
+
* `Result` shape so failures stay in the value channel.
|
|
86
83
|
*
|
|
87
84
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-promise-reject.md
|
|
88
85
|
*/
|
|
89
86
|
"functional/no-promise-reject"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
90
87
|
/**
|
|
91
|
-
* Reject void returns and functions whose declared return type is
|
|
92
|
-
*
|
|
88
|
+
* Reject void returns and functions whose declared return type is `void`;
|
|
89
|
+
* functions should always return a value.
|
|
93
90
|
*
|
|
94
91
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-return-void.md
|
|
95
92
|
*/
|
|
96
93
|
"functional/no-return-void"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoReturnVoidRuleOptions>;
|
|
97
94
|
/**
|
|
98
|
-
* Reject any `this` expression. Combined with
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* modules, and arrow pipelines.
|
|
95
|
+
* Reject any `this` expression. Combined with `functional/no-classes` this
|
|
96
|
+
* leaves no place where `this` is legal; on its own it still forbids `this`
|
|
97
|
+
* in standalone functions, modules, and arrow pipelines.
|
|
102
98
|
*
|
|
103
99
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-this-expressions.md
|
|
104
100
|
*/
|
|
105
101
|
"functional/no-this-expressions"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
106
102
|
/**
|
|
107
|
-
* Reject `throw` statements; functional code surfaces failures
|
|
108
|
-
*
|
|
103
|
+
* Reject `throw` statements; functional code surfaces failures through return
|
|
104
|
+
* values (`Either`, `Result`) instead.
|
|
109
105
|
*
|
|
110
106
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-throw-statements.md
|
|
111
107
|
*/
|
|
112
108
|
"functional/no-throw-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoThrowStatementsRuleOptions>;
|
|
113
109
|
/**
|
|
114
|
-
* Reject `try/catch` and `try/finally` statements as a corollary
|
|
115
|
-
*
|
|
110
|
+
* Reject `try/catch` and `try/finally` statements as a corollary of
|
|
111
|
+
* `functional/no-throw-statements`.
|
|
116
112
|
*
|
|
117
113
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/no-try-statements.md
|
|
118
114
|
*/
|
|
119
115
|
"functional/no-try-statements"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalNoTryStatementsRuleOptions>;
|
|
120
116
|
/**
|
|
121
|
-
* Require declared variable, parameter, and property types to be
|
|
122
|
-
*
|
|
117
|
+
* Require declared variable, parameter, and property types to be `readonly`
|
|
118
|
+
* or otherwise structurally immutable.
|
|
123
119
|
*
|
|
124
120
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-immutable-types.md
|
|
125
121
|
*/
|
|
126
122
|
"functional/prefer-immutable-types"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferImmutableTypesRuleOptions>;
|
|
127
123
|
/**
|
|
128
|
-
* Prefer function-property signatures (`fn: () => T`) over method
|
|
129
|
-
*
|
|
124
|
+
* Prefer function-property signatures (`fn: () => T`) over method shorthand
|
|
125
|
+
* (`fn(): T`) in interfaces and type literals.
|
|
130
126
|
*
|
|
131
|
-
* Only the property form accepts `readonly`, so method shorthand
|
|
132
|
-
*
|
|
133
|
-
* form.
|
|
127
|
+
* Only the property form accepts `readonly`, so method shorthand silently
|
|
128
|
+
* makes the slot mutable; overloads still need the method form.
|
|
134
129
|
*
|
|
135
130
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-property-signatures.md
|
|
136
131
|
*/
|
|
137
132
|
"functional/prefer-property-signatures"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalEmptyRuleOptions>;
|
|
138
133
|
/**
|
|
139
|
-
* Prefer `readonly` array, tuple, collection, and property types
|
|
140
|
-
*
|
|
134
|
+
* Prefer `readonly` array, tuple, collection, and property types over their
|
|
135
|
+
* mutable counterparts.
|
|
141
136
|
*
|
|
142
137
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-readonly-type.md
|
|
143
138
|
*/
|
|
144
139
|
"functional/prefer-readonly-type"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferReadonlyTypeRuleOptions>;
|
|
145
140
|
/**
|
|
146
|
-
* Reject trivial wrappers such as `x => f(x)` in favor of the tacit
|
|
147
|
-
*
|
|
141
|
+
* Reject trivial wrappers such as `x => f(x)` in favor of the tacit form `f`;
|
|
142
|
+
* reduces noise in functional pipelines.
|
|
148
143
|
*
|
|
149
144
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/prefer-tacit.md
|
|
150
145
|
*/
|
|
151
146
|
"functional/prefer-tacit"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalPreferTacitRuleOptions>;
|
|
152
147
|
/**
|
|
153
|
-
* Enforce one consistent spelling for readonly types — `readonly
|
|
154
|
-
*
|
|
148
|
+
* Enforce one consistent spelling for readonly types — `readonly T[]` vs
|
|
149
|
+
* `ReadonlyArray<T>` — across the project.
|
|
155
150
|
*
|
|
156
151
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/readonly-type.md
|
|
157
152
|
*/
|
|
158
153
|
"functional/readonly-type"?: TtscLintRuleOptionsSetting<ITtscLintFunctionalReadonlyTypeRuleOptions>;
|
|
159
154
|
/**
|
|
160
|
-
* Enforce readonly/immutable type declarations by
|
|
161
|
-
*
|
|
162
|
-
*
|
|
155
|
+
* Enforce readonly/immutable type declarations by _declaration name_ policy —
|
|
156
|
+
* for projects that want only types matching certain naming conventions to be
|
|
157
|
+
* locked down.
|
|
163
158
|
*
|
|
164
159
|
* @reference https://github.com/eslint-functional/eslint-plugin-functional/blob/main/docs/rules/type-declaration-immutability.md
|
|
165
160
|
*/
|