@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -25
- package/lib/defaultFormat.d.ts +10 -6
- package/lib/defaultFormat.js +10 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +5 -5
- package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
- package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
- package/lib/structures/format/ITtscLintFormat.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
- package/lib/structures/format/index.d.ts +3 -0
- package/lib/structures/format/index.js +20 -0
- package/lib/structures/format/index.js.map +1 -0
- package/lib/structures/index.d.ts +1 -1
- package/lib/structures/index.js +1 -1
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
- package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
- package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
- package/linthost/config.go +89 -72
- package/linthost/config_format.go +265 -99
- package/linthost/directives.go +5 -1
- package/linthost/display_width.go +72 -0
- package/linthost/fix.go +26 -1
- package/linthost/format.go +222 -25
- package/linthost/format_editor_settings.go +262 -0
- package/linthost/lsp.go +8 -4
- package/linthost/print_dispatch.go +3 -0
- package/linthost/print_doc.go +13 -0
- package/linthost/print_engine.go +68 -11
- package/linthost/print_nodes_array.go +167 -5
- package/linthost/print_nodes_call.go +786 -77
- package/linthost/print_nodes_function.go +43 -0
- package/linthost/print_nodes_imports.go +64 -14
- package/linthost/print_nodes_list.go +214 -8
- package/linthost/print_nodes_object.go +14 -6
- package/linthost/print_nodes_ternary.go +147 -0
- package/linthost/rules_boundaries.go +400 -400
- package/linthost/rules_camelcase.go +81 -81
- package/linthost/rules_complexity.go +52 -51
- package/linthost/rules_consistent_return.go +81 -81
- package/linthost/rules_core_extra.go +472 -472
- package/linthost/rules_curly.go +43 -43
- package/linthost/rules_default_case.go +15 -15
- package/linthost/rules_default_case_last.go +22 -22
- package/linthost/rules_format_arrow_parens.go +213 -0
- package/linthost/rules_format_bracket_spacing.go +117 -0
- package/linthost/rules_format_clause_join.go +179 -0
- package/linthost/rules_format_declaration_header.go +664 -0
- package/linthost/rules_format_indent.go +616 -0
- package/linthost/rules_format_jsdoc.go +4 -4
- package/linthost/rules_format_orphan_semi.go +106 -0
- package/linthost/rules_format_parameter_properties.go +175 -0
- package/linthost/rules_format_print_width.go +180 -69
- package/linthost/rules_format_quote_props.go +169 -0
- package/linthost/rules_format_quotes.go +75 -29
- package/linthost/rules_format_semi.go +185 -10
- package/linthost/rules_format_sort_imports.go +517 -121
- package/linthost/rules_format_statement_split.go +368 -0
- package/linthost/rules_format_ternary_nullish_parens.go +77 -0
- package/linthost/rules_format_trailing_comma.go +21 -2
- package/linthost/rules_format_whitespace.go +336 -0
- package/linthost/rules_functional.go +688 -688
- package/linthost/rules_gap.go +146 -11
- package/linthost/rules_grouped_accessor_pairs.go +60 -60
- package/linthost/rules_guard_for_in.go +122 -122
- package/linthost/rules_id_length.go +44 -44
- package/linthost/rules_imports.go +11 -3
- package/linthost/rules_init_declarations.go +25 -25
- package/linthost/rules_jsx_a11y.go +844 -844
- package/linthost/rules_max_classes_per_file.go +24 -24
- package/linthost/rules_max_depth.go +43 -43
- package/linthost/rules_max_lines.go +53 -53
- package/linthost/rules_max_lines_per_function.go +28 -28
- package/linthost/rules_max_nested_callbacks.go +26 -26
- package/linthost/rules_max_params.go +20 -20
- package/linthost/rules_max_statements.go +29 -29
- package/linthost/rules_nextjs.go +5 -5
- package/linthost/rules_no_else_return.go +38 -38
- package/linthost/rules_no_empty_named_blocks.go +45 -45
- package/linthost/rules_no_import_assign.go +96 -96
- package/linthost/rules_no_invalid_this.go +19 -19
- package/linthost/rules_no_loop_func.go +43 -43
- package/linthost/rules_no_magic_numbers.go +60 -60
- package/linthost/rules_no_mixed_operators.go +44 -44
- package/linthost/rules_no_param_reassign.go +64 -64
- package/linthost/rules_no_restricted_imports.go +45 -45
- package/linthost/rules_no_restricted_syntax.go +17 -17
- package/linthost/rules_no_shadow.go +112 -112
- package/linthost/rules_no_unreachable.go +36 -36
- package/linthost/rules_no_useless_assignment.go +79 -79
- package/linthost/rules_no_useless_constructor.go +167 -167
- package/linthost/rules_no_useless_return.go +28 -28
- package/linthost/rules_prefer_arrow_callback.go +74 -74
- package/linthost/rules_prefer_destructuring.go +61 -61
- package/linthost/rules_prefer_named_capture_group.go +87 -87
- package/linthost/rules_prefer_rest_params.go +61 -61
- package/linthost/rules_promise.go +800 -800
- package/linthost/rules_react.go +600 -600
- package/linthost/rules_react_extras.go +162 -162
- package/linthost/rules_react_hooks.go +2 -2
- package/linthost/rules_react_perf.go +231 -231
- package/linthost/rules_regexp.go +293 -293
- package/linthost/rules_security.go +613 -613
- package/linthost/rules_sort_imports.go +37 -37
- package/linthost/rules_sort_keys.go +88 -88
- package/linthost/rules_suggestions.go +13 -0
- package/linthost/rules_ts.go +2 -2
- package/linthost/rules_ts_async.go +247 -247
- package/linthost/rules_ts_class_literal_property_style.go +64 -64
- package/linthost/rules_ts_consistent_type_exports.go +209 -209
- package/linthost/rules_ts_explicit_function_return_type.go +35 -35
- package/linthost/rules_ts_extra.go +6 -2
- package/linthost/rules_ts_no_base_to_string.go +140 -140
- package/linthost/rules_ts_no_confusing_void.go +28 -28
- package/linthost/rules_ts_no_deprecated.go +110 -110
- package/linthost/rules_ts_no_for_in_array.go +45 -45
- package/linthost/rules_ts_no_magic_numbers.go +67 -67
- package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
- package/linthost/rules_ts_no_misused_spread.go +64 -64
- package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
- package/linthost/rules_ts_no_restricted_types.go +28 -28
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
- package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
- package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
- package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
- package/linthost/rules_ts_no_unsafe_argument.go +50 -50
- package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
- package/linthost/rules_ts_no_unsafe_call.go +40 -40
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
- package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
- package/linthost/rules_ts_no_unsafe_return.go +64 -64
- package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
- package/linthost/rules_ts_no_useless_constructor.go +20 -20
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
- package/linthost/rules_ts_parameter_properties.go +10 -10
- package/linthost/rules_ts_prefer_find.go +116 -116
- package/linthost/rules_ts_prefer_includes.go +173 -173
- package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
- package/linthost/rules_ts_prefer_optional_chain.go +156 -156
- package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
- package/linthost/rules_ts_prefer_readonly.go +31 -31
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
- package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
- package/linthost/rules_ts_prefer_return_this_type.go +79 -79
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
- package/linthost/rules_ts_promise_function_async.go +41 -41
- package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
- package/linthost/rules_ts_require_array_sort_compare.go +58 -58
- package/linthost/rules_ts_restrict_plus_operands.go +82 -82
- package/linthost/rules_ts_restrict_template_expressions.go +50 -50
- package/linthost/rules_ts_simple.go +249 -249
- package/linthost/rules_ts_sort_type_constituents.go +88 -88
- package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
- package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
- package/linthost/rules_ts_unbound_method.go +65 -65
- package/linthost/rules_tsdoc.go +88 -88
- package/linthost/rules_unicorn_better_regex.go +1 -1
- package/linthost/rules_unicorn_catch_error_name.go +19 -19
- package/linthost/rules_unicorn_consistent_assert.go +20 -20
- package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
- package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
- package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
- package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
- package/linthost/rules_unicorn_custom_error_definition.go +92 -92
- package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
- package/linthost/rules_unicorn_error_message.go +34 -34
- package/linthost/rules_unicorn_escape_case.go +14 -14
- package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
- package/linthost/rules_unicorn_explicit_length_check.go +51 -51
- package/linthost/rules_unicorn_filename_case.go +1 -1
- package/linthost/rules_unicorn_import_style.go +1 -1
- package/linthost/rules_unicorn_isolated_functions.go +2 -2
- package/linthost/rules_unicorn_new_for_builtins.go +49 -49
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
- package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
- package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
- package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
- package/linthost/rules_unicorn_no_array_for_each.go +14 -14
- package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
- package/linthost/rules_unicorn_no_array_reduce.go +15 -15
- package/linthost/rules_unicorn_no_array_reverse.go +17 -17
- package/linthost/rules_unicorn_no_array_sort.go +17 -17
- package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
- package/linthost/rules_unicorn_no_console_spaces.go +30 -30
- package/linthost/rules_unicorn_no_document_cookie.go +13 -13
- package/linthost/rules_unicorn_no_empty_file.go +16 -16
- package/linthost/rules_unicorn_no_for_loop.go +58 -58
- package/linthost/rules_unicorn_no_hex_escape.go +11 -11
- package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
- package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
- package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
- package/linthost/rules_unicorn_no_lonely_if.go +21 -21
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
- package/linthost/rules_unicorn_no_named_default.go +25 -25
- package/linthost/rules_unicorn_no_negated_condition.go +54 -54
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
- package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
- package/linthost/rules_unicorn_no_new_array.go +5 -5
- package/linthost/rules_unicorn_no_new_buffer.go +5 -5
- package/linthost/rules_unicorn_no_null.go +2 -2
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
- package/linthost/rules_unicorn_no_process_exit.go +17 -17
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
- package/linthost/rules_unicorn_no_static_only_class.go +27 -27
- package/linthost/rules_unicorn_no_thenable.go +47 -47
- package/linthost/rules_unicorn_no_this_assignment.go +10 -10
- package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
- package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
- package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
- package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
- package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
- package/linthost/rules_unicorn_no_useless_spread.go +38 -38
- package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
- package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
- package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
- package/linthost/rules_unicorn_number_literal_case.go +33 -33
- package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
- package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
- package/linthost/rules_unicorn_prefer_array_find.go +27 -27
- package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
- package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
- package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
- package/linthost/rules_unicorn_prefer_array_some.go +43 -43
- package/linthost/rules_unicorn_prefer_at.go +42 -42
- package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
- package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
- package/linthost/rules_unicorn_prefer_code_point.go +21 -21
- package/linthost/rules_unicorn_prefer_date_now.go +47 -47
- package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
- package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
- package/linthost/rules_unicorn_prefer_event_target.go +10 -10
- package/linthost/rules_unicorn_prefer_export_from.go +99 -99
- package/linthost/rules_unicorn_prefer_global_this.go +91 -91
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
- package/linthost/rules_unicorn_prefer_includes.go +108 -108
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
- package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
- package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
- package/linthost/rules_unicorn_prefer_module.go +22 -22
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
- package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
- package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
- package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
- package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
- package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
- package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
- package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
- package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
- package/linthost/rules_unicorn_prefer_set_has.go +16 -16
- package/linthost/rules_unicorn_prefer_set_size.go +22 -22
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
- package/linthost/rules_unicorn_prefer_single_call.go +59 -59
- package/linthost/rules_unicorn_prefer_spread.go +24 -24
- package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
- package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
- package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
- package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
- package/linthost/rules_unicorn_prefer_switch.go +65 -65
- package/linthost/rules_unicorn_prefer_ternary.go +35 -35
- package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
- package/linthost/rules_unicorn_prefer_type_error.go +84 -84
- package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
- package/linthost/rules_unicorn_relative_url_style.go +19 -19
- package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
- package/linthost/rules_unicorn_require_module_attributes.go +25 -25
- package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
- package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
- package/linthost/rules_unicorn_string_content.go +1 -1
- package/linthost/rules_unicorn_switch_case_braces.go +16 -16
- package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
- package/linthost/rules_unicorn_template_indent.go +1 -1
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
- package/linthost/rules_unicorn_throw_new_error.go +30 -30
- package/linthost/rules_var.go +273 -3
- package/package.json +3 -3
- package/src/defaultFormat.ts +11 -7
- package/src/structures/ITtscLintConfig.ts +5 -5
- package/src/structures/TtscLintRuleSetting.ts +19 -19
- package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
- package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
- package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
- package/src/structures/format/index.ts +3 -0
- package/src/structures/index.ts +1 -1
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
- package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
- package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
- package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
- package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
- package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
- package/src/structures/rules/ITtscLintJestRules.ts +63 -74
- package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
- package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
- package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
- package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
- package/src/structures/rules/ITtscLintReactRules.ts +91 -104
- package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
- package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
- package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
- package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
- package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
- package/lib/structures/ITtscLintFormat.js.map +0 -1
- /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { TtscLintSeverity } from "
|
|
1
|
+
import type { TtscLintSeverity } from "../TtscLintSeverity";
|
|
2
|
+
import type { ITtscLintFormatJsDoc } from "./ITtscLintFormatJsDoc";
|
|
3
|
+
import type { ITtscLintFormatSortImports } from "./ITtscLintFormatSortImports";
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Prettier-style flat configuration for the format rules.
|
|
5
7
|
*
|
|
6
8
|
* The `format` block is the recommended way to enable formatting in
|
|
7
|
-
* `@ttsc/lint`. Each key mirrors a Prettier option of the same name
|
|
9
|
+
* `@ttsc/lint`. Each key mirrors a Prettier option of the same name, users
|
|
8
10
|
* coming from a `.prettierrc` can copy their config almost verbatim. The block
|
|
9
11
|
* is opt-in by presence: a `lint.config.ts` with no `format` field keeps every
|
|
10
12
|
* format rule off, exactly as before.
|
|
@@ -14,42 +16,6 @@ import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
|
14
16
|
* `ttsc check` does not report format findings unless `severity` is set to a
|
|
15
17
|
* non-off value. Individual rules can be overridden or disabled through the
|
|
16
18
|
* `rules` map (the `rules` entry wins on conflict).
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* import type { ITtscLintConfig } from "@ttsc/lint";
|
|
20
|
-
*
|
|
21
|
-
* export default {
|
|
22
|
-
* rules: { "no-var": "error" },
|
|
23
|
-
* format: {
|
|
24
|
-
* severity: "warning",
|
|
25
|
-
* printWidth: 100,
|
|
26
|
-
* singleQuote: true,
|
|
27
|
-
* importOrder: ["<THIRD_PARTY_MODULES>", "^[./]"],
|
|
28
|
-
* },
|
|
29
|
-
* } satisfies ITtscLintConfig;
|
|
30
|
-
*
|
|
31
|
-
* Deviations from Prettier:
|
|
32
|
-
* - `endOfLine` is restricted to `"lf"` and `"crlf"`. Prettier's
|
|
33
|
-
* `"cr"` and `"auto"` modes are intentionally unsupported — the
|
|
34
|
-
* printer does not auto-detect terminators.
|
|
35
|
-
* - Many Prettier knobs (`bracketSpacing`, `arrowParens`,
|
|
36
|
-
* `quoteProps`, JSX-specific switches) are not yet implemented.
|
|
37
|
-
*
|
|
38
|
-
* Rule enablement matrix (when the `format` block is present):
|
|
39
|
-
*
|
|
40
|
-
* - `format/semi` — always on. `semi: false` flips it to `prefer:
|
|
41
|
-
* "never"`.
|
|
42
|
-
* - `format/quotes` — always on. `singleQuote: true` flips to
|
|
43
|
-
* `prefer: "single"`.
|
|
44
|
-
* - `format/trailing-comma` — always on. `trailingComma: "none"`
|
|
45
|
-
* disables the rule's edits without removing the surface.
|
|
46
|
-
* - `format/print-width` — always on, driven by `printWidth`,
|
|
47
|
-
* `tabWidth`, `useTabs`, `endOfLine`.
|
|
48
|
-
* - `format/sort-imports` — opt-in. Setting `importOrder` enables it.
|
|
49
|
-
* - `format/jsdoc` — opt-in. Setting `jsdoc` enables it.
|
|
50
|
-
*
|
|
51
|
-
* Format findings produced from this block are off by default. Set `severity`
|
|
52
|
-
* only when a project intentionally wants check-time format diagnostics.
|
|
53
19
|
*/
|
|
54
20
|
export interface ITtscLintFormat {
|
|
55
21
|
/**
|
|
@@ -80,6 +46,40 @@ export interface ITtscLintFormat {
|
|
|
80
46
|
*/
|
|
81
47
|
singleQuote?: boolean;
|
|
82
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Parenthesize a single arrow-function parameter. Mirrors Prettier's
|
|
51
|
+
* `arrowParens`. `"always"` (the default) keeps `(x) => x`; `"avoid"` strips
|
|
52
|
+
* the parentheses of a single bare-identifier parameter, giving `x => x`. A
|
|
53
|
+
* typed, destructured, rest, optional, defaulted, or multi-parameter list
|
|
54
|
+
* keeps its parentheses in both modes.
|
|
55
|
+
*
|
|
56
|
+
* @default "always"
|
|
57
|
+
*/
|
|
58
|
+
arrowParens?: "always" | "avoid";
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Pad the inside of single-line braces with one space. Mirrors Prettier's
|
|
62
|
+
* `bracketSpacing`. `true` (the default) gives `{ x: 1 }`, `import { foo }`;
|
|
63
|
+
* `false` gives `{x: 1}`, `import {foo}`. Applies to object literals, object
|
|
64
|
+
* destructuring patterns, named imports/exports, and type literals; block,
|
|
65
|
+
* class, interface, and enum braces are unaffected.
|
|
66
|
+
*
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
bracketSpacing?: boolean;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Quoting policy for object-literal property keys. Mirrors Prettier's
|
|
73
|
+
* `quoteProps`. `"as-needed"` (the default) removes quotes from a key that is
|
|
74
|
+
* a valid identifier (`{ "foo": 1 }` becomes `{ foo: 1 }`), keeping them on
|
|
75
|
+
* non-identifier or numeric keys (`"bar-baz"`, `"123"`). `"consistent"` keeps
|
|
76
|
+
* every key quoted when any one of them requires quotes. `"preserve"` never
|
|
77
|
+
* changes quoting.
|
|
78
|
+
*
|
|
79
|
+
* @default "as-needed"
|
|
80
|
+
*/
|
|
81
|
+
quoteProps?: "as-needed" | "consistent" | "preserve";
|
|
82
|
+
|
|
83
83
|
/**
|
|
84
84
|
* Trailing-comma policy. Mirrors Prettier's `trailingComma`. The `"none"`
|
|
85
85
|
* mode disables the rule's edits.
|
|
@@ -120,49 +120,22 @@ export interface ITtscLintFormat {
|
|
|
120
120
|
endOfLine?: "lf" | "crlf";
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* `<THIRD_PARTY_MODULES>` literal is the catch-all placeholder for specifiers
|
|
126
|
-
* that match no other group.
|
|
127
|
-
*/
|
|
128
|
-
importOrder?: readonly ("<THIRD_PARTY_MODULES>" | (string & {}))[];
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Insert blank line between sort-imports groups.
|
|
132
|
-
*
|
|
133
|
-
* @default true
|
|
134
|
-
*/
|
|
135
|
-
importOrderSeparation?: boolean;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Sort named import specifiers alphabetically within each declaration.
|
|
139
|
-
*
|
|
140
|
-
* @default true
|
|
141
|
-
*/
|
|
142
|
-
importOrderSortSpecifiers?: boolean;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Case-insensitive comparison for sort-imports.
|
|
123
|
+
* Import sorting & merging. Off unless present; `true` enables it with
|
|
124
|
+
* defaults, an object customizes.
|
|
146
125
|
*
|
|
147
126
|
* @default false
|
|
148
127
|
*/
|
|
149
|
-
|
|
128
|
+
sortImports?: boolean | ITtscLintFormatSortImports;
|
|
150
129
|
|
|
151
130
|
/**
|
|
152
|
-
*
|
|
153
|
-
* an object to customize
|
|
131
|
+
* JSDoc tag normalization. On by default like the rest of the format set;
|
|
132
|
+
* pass `false` to disable, or an object to customize.
|
|
154
133
|
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* only rewrites tag names).
|
|
134
|
+
* Today it only rewrites tag synonyms (`@return` → `@returns`, `@arg` →
|
|
135
|
+
* `@param`, ...); tag sorting, `@param` column alignment, and description
|
|
136
|
+
* wrapping are on the roadmap.
|
|
159
137
|
*
|
|
160
|
-
* @default
|
|
138
|
+
* @default true
|
|
161
139
|
*/
|
|
162
|
-
|
|
163
|
-
| boolean
|
|
164
|
-
| {
|
|
165
|
-
tagSynonyms?: Record<string, string>;
|
|
166
|
-
sortTags?: boolean;
|
|
167
|
-
};
|
|
140
|
+
jsDoc?: boolean | ITtscLintFormatJsDoc;
|
|
168
141
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Object form of {@link ITtscLintFormat.jsDoc}. */
|
|
2
|
+
export interface ITtscLintFormatJsDoc {
|
|
3
|
+
/**
|
|
4
|
+
* Extra `from → to` tag rewrites layered on the built-in synonym table
|
|
5
|
+
* (`@return` → `@returns`, `@arg` → `@param`, ...).
|
|
6
|
+
*/
|
|
7
|
+
tagSynonyms?: Record<string, string>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Sort JSDoc tags into canonical order. Reserved; the current MVP only
|
|
11
|
+
* rewrites tag names.
|
|
12
|
+
*
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
sortTags?: boolean;
|
|
16
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object form of {@link ITtscLintFormat.sortImports}.
|
|
3
|
+
*
|
|
4
|
+
* The declarative {@link order} array expresses group order, blank-line
|
|
5
|
+
* separation, and special groups all by position. Multiple imports of the same
|
|
6
|
+
* module are always merged into one declaration; merging a value import with a
|
|
7
|
+
* type-only import additionally requires {@link combineTypeAndValue}.
|
|
8
|
+
*/
|
|
9
|
+
export interface ITtscLintFormatSortImports {
|
|
10
|
+
/**
|
|
11
|
+
* Group order. Each entry is a regular expression matched against a
|
|
12
|
+
* declaration's module specifier, or one of these placeholders:
|
|
13
|
+
*
|
|
14
|
+
* - `<BUILTIN_MODULES>` — Node built-in modules (`fs`, `node:path`, ...).
|
|
15
|
+
* - `<THIRD_PARTY_MODULES>` — catch-all for specifiers that match no other
|
|
16
|
+
* group. Injected implicitly at the front when omitted.
|
|
17
|
+
* - `<TYPES>` — `import type` declarations. Combine with a regex to scope it,
|
|
18
|
+
* e.g. `<TYPES>^[.]` groups type-only relative imports.
|
|
19
|
+
* - `""` (empty string) — emit one blank line at this position. An array with
|
|
20
|
+
* no `""` entry produces no blank lines between groups.
|
|
21
|
+
*
|
|
22
|
+
* Named specifiers inside each declaration are always sorted. Omit for the
|
|
23
|
+
* default grouping. Example:
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* order: [
|
|
27
|
+
* "<BUILTIN_MODULES>",
|
|
28
|
+
* "",
|
|
29
|
+
* "<THIRD_PARTY_MODULES>",
|
|
30
|
+
* "",
|
|
31
|
+
* "<TYPES>^[.]",
|
|
32
|
+
* "^[.]",
|
|
33
|
+
* ];
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
order?: readonly (
|
|
37
|
+
| "<BUILTIN_MODULES>"
|
|
38
|
+
| "<THIRD_PARTY_MODULES>"
|
|
39
|
+
| "<TYPES>"
|
|
40
|
+
| ""
|
|
41
|
+
| (string & {})
|
|
42
|
+
)[];
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Case-sensitive comparison. `false` (the default) sorts case-insensitively,
|
|
46
|
+
* so `React` and `react` order together; `true` uses raw ASCII order
|
|
47
|
+
* (uppercase before lowercase).
|
|
48
|
+
*
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
caseSensitive?: boolean;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Merge a value import and a type-only import of the same module into one
|
|
55
|
+
* declaration with inline `type` specifiers: `import { foo } from "m"` plus
|
|
56
|
+
* `import type { Bar } from "m"` collapse to `import { foo, type Bar } from
|
|
57
|
+
* "m"`.
|
|
58
|
+
*
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
combineTypeAndValue?: boolean;
|
|
62
|
+
}
|
package/src/structures/index.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Options shapes for every rule in {@link ITtscLintBoundariesRules}.
|
|
3
3
|
*
|
|
4
|
-
* The `boundaries/*` family classifies each source file as belonging to a
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* per-rule options on top.
|
|
4
|
+
* The `boundaries/*` family classifies each source file as belonging to a named
|
|
5
|
+
* _element_ (a layer, feature, or app within the project). Every rule below
|
|
6
|
+
* shares the same element-declaration block, so the helper interfaces in this
|
|
7
|
+
* file describe that block first and then layer the per-rule options on top.
|
|
9
8
|
*
|
|
10
9
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries
|
|
11
10
|
*/
|
|
@@ -16,31 +15,28 @@ export interface ITtscLintBoundariesElement {
|
|
|
16
15
|
type: string;
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
|
-
* Glob-like source path pattern. Relative patterns are matched against
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* Glob-like source path pattern. Relative patterns are matched against any
|
|
19
|
+
* project-path suffix, so `src/app/**` works in temporary and monorepo roots
|
|
20
|
+
* alike.
|
|
22
21
|
*/
|
|
23
22
|
pattern: string;
|
|
24
23
|
|
|
25
24
|
/**
|
|
26
|
-
* File(s) inside the element that may be imported from outside that
|
|
27
|
-
*
|
|
25
|
+
* File(s) inside the element that may be imported from outside that element.
|
|
26
|
+
* Used by `boundaries/entry-point`.
|
|
28
27
|
*/
|
|
29
28
|
entry?: string | readonly string[];
|
|
30
29
|
|
|
31
30
|
/**
|
|
32
|
-
* File(s) inside the element that may only be imported by the same
|
|
33
|
-
*
|
|
31
|
+
* File(s) inside the element that may only be imported by the same element.
|
|
32
|
+
* Used by `boundaries/no-private`.
|
|
34
33
|
*/
|
|
35
34
|
private?: string | readonly string[];
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
/** Dependency policy used by `boundaries/element-types`. */
|
|
39
38
|
export interface ITtscLintBoundariesElementTypesRule {
|
|
40
|
-
/**
|
|
41
|
-
* Source element type(s) the policy applies to. Omit to match all
|
|
42
|
-
* sources.
|
|
43
|
-
*/
|
|
39
|
+
/** Source element type(s) the policy applies to. Omit to match all sources. */
|
|
44
40
|
from?: string | readonly string[];
|
|
45
41
|
|
|
46
42
|
/** Target element type(s) allowed from the matching source. */
|
|
@@ -58,15 +54,12 @@ export interface ITtscLintBoundariesElementTypesRule {
|
|
|
58
54
|
* `boundaries/*` rule.
|
|
59
55
|
*/
|
|
60
56
|
export interface ITtscLintBoundariesElementsOptions {
|
|
61
|
-
/**
|
|
62
|
-
* Source path elements used to classify importers and imported files.
|
|
63
|
-
*/
|
|
57
|
+
/** Source path elements used to classify importers and imported files. */
|
|
64
58
|
elements?: readonly ITtscLintBoundariesElement[];
|
|
65
59
|
}
|
|
66
60
|
|
|
67
61
|
/** `boundaries/element-types` rule options. */
|
|
68
|
-
export interface ITtscLintBoundariesElementTypesRuleOptions
|
|
69
|
-
extends ITtscLintBoundariesElementsOptions {
|
|
62
|
+
export interface ITtscLintBoundariesElementTypesRuleOptions extends ITtscLintBoundariesElementsOptions {
|
|
70
63
|
/**
|
|
71
64
|
* Fallback policy when no rule matches.
|
|
72
65
|
*
|
|
@@ -80,10 +73,7 @@ export interface ITtscLintBoundariesElementTypesRuleOptions
|
|
|
80
73
|
|
|
81
74
|
/** `boundaries/external` rule options. */
|
|
82
75
|
export interface ITtscLintBoundariesExternalRuleOptions {
|
|
83
|
-
/**
|
|
84
|
-
* External package/specifier patterns that are allowed. Empty means
|
|
85
|
-
* all.
|
|
86
|
-
*/
|
|
76
|
+
/** External package/specifier patterns that are allowed. Empty means all. */
|
|
87
77
|
allow?: string | readonly string[];
|
|
88
78
|
|
|
89
79
|
/** External package/specifier patterns that are rejected. */
|
|
@@ -109,13 +99,12 @@ export type ITtscLintBoundariesNoUnknownRuleOptions =
|
|
|
109
99
|
* `boundaries/dependencies` rule options.
|
|
110
100
|
*
|
|
111
101
|
* The upstream unified rule subsumes `element-types`, `entry-point`,
|
|
112
|
-
* `external`, `no-private`, and `no-unknown` behind a single
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
102
|
+
* `external`, `no-private`, and `no-unknown` behind a single direction-aware
|
|
103
|
+
* policy block. The v1 native port registers the rule name and decodes this
|
|
104
|
+
* config shape but does not yet emit diagnostics (`v1 stub; full validation
|
|
105
|
+
* deferred` — see `rules_boundaries.go`).
|
|
116
106
|
*/
|
|
117
|
-
export interface ITtscLintBoundariesDependenciesRuleOptions
|
|
118
|
-
extends ITtscLintBoundariesElementsOptions {
|
|
107
|
+
export interface ITtscLintBoundariesDependenciesRuleOptions extends ITtscLintBoundariesElementsOptions {
|
|
119
108
|
/**
|
|
120
109
|
* Fallback policy when no rule matches.
|
|
121
110
|
*
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TtscLintRuleOptionsSetting,
|
|
3
|
+
TtscLintRuleSetting,
|
|
4
|
+
} from "../TtscLintRuleSetting";
|
|
1
5
|
import type {
|
|
2
6
|
ITtscLintBoundariesDependenciesRuleOptions,
|
|
3
7
|
ITtscLintBoundariesElementTypesRuleOptions,
|
|
@@ -6,29 +10,25 @@ import type {
|
|
|
6
10
|
ITtscLintBoundariesNoPrivateRuleOptions,
|
|
7
11
|
ITtscLintBoundariesNoUnknownRuleOptions,
|
|
8
12
|
} from "./ITtscLintBoundariesRuleOptions";
|
|
9
|
-
import type {
|
|
10
|
-
TtscLintRuleOptionsSetting,
|
|
11
|
-
TtscLintRuleSetting,
|
|
12
|
-
} from "../TtscLintRuleSetting";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Architecture-boundary rules that enforce import direction and
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* Architecture-boundary rules that enforce import direction and module
|
|
16
|
+
* visibility between configured source-path _elements_ (layers, features, apps
|
|
17
|
+
* in a monorepo).
|
|
18
18
|
*
|
|
19
|
-
* Every rule operates on the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Every rule operates on the _resolved source file_ of an import — relative
|
|
20
|
+
* imports are followed to the real `.ts`/`.tsx`/`.d.ts` file before
|
|
21
|
+
* classification.
|
|
22
22
|
*
|
|
23
23
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries
|
|
24
24
|
*/
|
|
25
25
|
export interface ITtscLintBoundariesRules {
|
|
26
26
|
/**
|
|
27
|
-
* Enforce allowed dependency directions between configured
|
|
28
|
-
*
|
|
27
|
+
* Enforce allowed dependency directions between configured source-path
|
|
28
|
+
* element types.
|
|
29
29
|
*
|
|
30
|
-
* Each `element` entry declares a name, a matching glob, and the
|
|
31
|
-
*
|
|
30
|
+
* Each `element` entry declares a name, a matching glob, and the other
|
|
31
|
+
* element types it is allowed to import.
|
|
32
32
|
*
|
|
33
33
|
* Imports that fall outside the allow-list are reported.
|
|
34
34
|
*
|
|
@@ -37,39 +37,37 @@ export interface ITtscLintBoundariesRules {
|
|
|
37
37
|
"boundaries/element-types"?: TtscLintRuleOptionsSetting<ITtscLintBoundariesElementTypesRuleOptions>;
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* Require imports that cross element boundaries to target the
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* Require imports that cross element boundaries to target the importee
|
|
41
|
+
* element's configured public entry files (typically `index.ts`), so the
|
|
42
|
+
* public surface of each element is explicit.
|
|
43
43
|
*
|
|
44
44
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries/blob/master/docs/rules/entry-point.md
|
|
45
45
|
*/
|
|
46
46
|
"boundaries/entry-point"?: TtscLintRuleOptionsSetting<ITtscLintBoundariesEntryPointRuleOptions>;
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
* Restrict external package imports by package or specifier
|
|
50
|
-
* pattern.
|
|
49
|
+
* Restrict external package imports by package or specifier pattern.
|
|
51
50
|
*
|
|
52
|
-
* Useful for forbidding direct imports of an underlying library
|
|
53
|
-
*
|
|
51
|
+
* Useful for forbidding direct imports of an underlying library when a
|
|
52
|
+
* project-local facade exists.
|
|
54
53
|
*
|
|
55
54
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries/blob/master/docs/rules/external.md
|
|
56
55
|
*/
|
|
57
56
|
"boundaries/external"?: TtscLintRuleOptionsSetting<ITtscLintBoundariesExternalRuleOptions>;
|
|
58
57
|
|
|
59
58
|
/**
|
|
60
|
-
* Reject imports of files declared
|
|
61
|
-
*
|
|
59
|
+
* Reject imports of files declared _private_ by a parent element from outside
|
|
60
|
+
* that element.
|
|
62
61
|
*
|
|
63
|
-
* Combines with `element-types` to keep implementation details
|
|
64
|
-
* hidden.
|
|
62
|
+
* Combines with `element-types` to keep implementation details hidden.
|
|
65
63
|
*
|
|
66
64
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries/blob/master/docs/rules/no-private.md
|
|
67
65
|
*/
|
|
68
66
|
"boundaries/no-private"?: TtscLintRuleOptionsSetting<ITtscLintBoundariesNoPrivateRuleOptions>;
|
|
69
67
|
|
|
70
68
|
/**
|
|
71
|
-
* Reject relative imports whose resolved source file falls under
|
|
72
|
-
*
|
|
69
|
+
* Reject relative imports whose resolved source file falls under no
|
|
70
|
+
* configured element.
|
|
73
71
|
*
|
|
74
72
|
* Catches stray files that escape the project's boundary map.
|
|
75
73
|
*
|
|
@@ -78,16 +76,14 @@ export interface ITtscLintBoundariesRules {
|
|
|
78
76
|
"boundaries/no-unknown"?: TtscLintRuleOptionsSetting<ITtscLintBoundariesNoUnknownRuleOptions>;
|
|
79
77
|
|
|
80
78
|
/**
|
|
81
|
-
* Unified dependency-direction rule from upstream
|
|
82
|
-
* `
|
|
83
|
-
* `
|
|
84
|
-
* `no-unknown` with a single policy block.
|
|
79
|
+
* Unified dependency-direction rule from upstream `eslint-plugin-boundaries`,
|
|
80
|
+
* intended to replace `element-types` / `entry-point` / `external` /
|
|
81
|
+
* `no-private` / `no-unknown` with a single policy block.
|
|
85
82
|
*
|
|
86
|
-
* The native port registers the rule name and accepts the same
|
|
87
|
-
* `
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* legacy split rules continue to enforce policy.
|
|
83
|
+
* The native port registers the rule name and accepts the same `elements` +
|
|
84
|
+
* `rules` config shape as `element-types`, but does not emit diagnostics yet
|
|
85
|
+
* (v1 stub; full direction validation deferred). Configure it today to claim
|
|
86
|
+
* the upstream rule id; the legacy split rules continue to enforce policy.
|
|
91
87
|
*
|
|
92
88
|
* @reference https://github.com/javierbrea/eslint-plugin-boundaries/blob/master/docs/rules/dependencies.md
|
|
93
89
|
*/
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type { TtscLintSeverity } from "../TtscLintSeverity";
|
|
2
1
|
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
import type { TtscLintSeverity } from "../TtscLintSeverity";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Catch-all index signature for contributor plugin rules.
|
|
6
6
|
*
|
|
7
|
-
* Plugin authors expose rules under their own namespace prefix
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* severity
|
|
11
|
-
*
|
|
12
|
-
* tighten the options shape per rule.
|
|
7
|
+
* Plugin authors expose rules under their own namespace prefix (`demo/no-demo`,
|
|
8
|
+
* `myplugin/foo-bar`). The signature here accepts any `"<namespace>/<rule>"`
|
|
9
|
+
* key with either the bare severity form, the severity tuple, or the
|
|
10
|
+
* severity-plus-options tuple. Plugins ship their own typings to tighten the
|
|
11
|
+
* options shape per rule.
|
|
13
12
|
*
|
|
14
13
|
* @reference https://ttsc.dev/lint/development/rules
|
|
15
14
|
*/
|