@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,53 +1,51 @@
|
|
|
1
1
|
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Security-focused TypeScript source rules from
|
|
5
|
-
* `eslint-plugin-security`.
|
|
4
|
+
* Security-focused TypeScript source rules from `eslint-plugin-security`.
|
|
6
5
|
*
|
|
7
|
-
* Reports likely security smells — non-literal sinks for eval, file
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* statically provable.
|
|
6
|
+
* Reports likely security smells — non-literal sinks for eval, file I/O, regex
|
|
7
|
+
* construction, child-process spawning, cryptographic primitives — that warrant
|
|
8
|
+
* human review even if no exploit is statically provable.
|
|
11
9
|
*
|
|
12
|
-
* Treat findings as
|
|
10
|
+
* Treat findings as _hints_, not proofs.
|
|
13
11
|
*
|
|
14
12
|
* @reference https://github.com/eslint-community/eslint-plugin-security
|
|
15
13
|
*/
|
|
16
14
|
export interface ITtscLintSecurityRules {
|
|
17
15
|
/**
|
|
18
|
-
* Detect Trojan-Source bidi control characters (U+202A, U+202E,
|
|
19
|
-
*
|
|
16
|
+
* Detect Trojan-Source bidi control characters (U+202A, U+202E, ...) hidden
|
|
17
|
+
* inside source.
|
|
20
18
|
*
|
|
21
19
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-bidi-characters.md
|
|
22
20
|
*/
|
|
23
21
|
"security/detect-bidi-characters"?: TtscLintRuleSetting;
|
|
24
22
|
|
|
25
23
|
/**
|
|
26
|
-
* Detect Buffer reads/writes called with `noAssert = true`, which
|
|
27
|
-
*
|
|
24
|
+
* Detect Buffer reads/writes called with `noAssert = true`, which skips
|
|
25
|
+
* Node's offset/length bounds checks.
|
|
28
26
|
*
|
|
29
|
-
* The flag lets the offset slide past the buffer end and read
|
|
30
|
-
*
|
|
27
|
+
* The flag lets the offset slide past the buffer end and read unrelated
|
|
28
|
+
* memory, so production code should never set it.
|
|
31
29
|
*
|
|
32
30
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-buffer-noassert.md
|
|
33
31
|
*/
|
|
34
32
|
"security/detect-buffer-noassert"?: TtscLintRuleSetting;
|
|
35
33
|
|
|
36
34
|
/**
|
|
37
|
-
* Detect any import of `child_process` and any `exec`/`execSync`
|
|
38
|
-
*
|
|
35
|
+
* Detect any import of `child_process` and any `exec`/`execSync` call whose
|
|
36
|
+
* command argument is not a string literal.
|
|
39
37
|
*
|
|
40
|
-
* Non-literal commands are the canonical shell-injection sink in
|
|
41
|
-
*
|
|
38
|
+
* Non-literal commands are the canonical shell-injection sink in Node
|
|
39
|
+
* services.
|
|
42
40
|
*
|
|
43
41
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-child-process.md
|
|
44
42
|
*/
|
|
45
43
|
"security/detect-child-process"?: TtscLintRuleSetting;
|
|
46
44
|
|
|
47
45
|
/**
|
|
48
|
-
* Detect assignments setting `escapeMarkup = false` (or the
|
|
49
|
-
*
|
|
50
|
-
*
|
|
46
|
+
* Detect assignments setting `escapeMarkup = false` (or the equivalent option
|
|
47
|
+
* on Handlebars/Mustache-style engines), which turns off HTML entity escaping
|
|
48
|
+
* in template output.
|
|
51
49
|
*
|
|
52
50
|
* Result: an unguarded XSS sink for caller-controlled strings.
|
|
53
51
|
*
|
|
@@ -59,16 +57,15 @@ export interface ITtscLintSecurityRules {
|
|
|
59
57
|
* Detect `eval(...)` calls whose argument is not a string literal.
|
|
60
58
|
*
|
|
61
59
|
* Any expression argument means caller-controlled data can reach a
|
|
62
|
-
* code-execution sink. The rule flags the call shape, not proven
|
|
63
|
-
* taint.
|
|
60
|
+
* code-execution sink. The rule flags the call shape, not proven taint.
|
|
64
61
|
*
|
|
65
62
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-eval-with-expression.md
|
|
66
63
|
*/
|
|
67
64
|
"security/detect-eval-with-expression"?: TtscLintRuleSetting;
|
|
68
65
|
|
|
69
66
|
/**
|
|
70
|
-
* Detect `new Buffer(input)` constructions with non-literal
|
|
71
|
-
*
|
|
67
|
+
* Detect `new Buffer(input)` constructions with non-literal input —
|
|
68
|
+
* historical source of allocation-disclosure bugs.
|
|
72
69
|
*
|
|
73
70
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-new-buffer.md
|
|
74
71
|
*/
|
|
@@ -83,43 +80,41 @@ export interface ITtscLintSecurityRules {
|
|
|
83
80
|
"security/detect-no-csrf-before-method-override"?: TtscLintRuleSetting;
|
|
84
81
|
|
|
85
82
|
/**
|
|
86
|
-
* Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`,
|
|
87
|
-
*
|
|
83
|
+
* Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`, ...) whose
|
|
84
|
+
* filename argument is not a string literal.
|
|
88
85
|
*
|
|
89
|
-
* Dynamic filenames are the standard path-traversal sink; sanitise
|
|
90
|
-
*
|
|
86
|
+
* Dynamic filenames are the standard path-traversal sink; sanitise or
|
|
87
|
+
* allow-list before the call.
|
|
91
88
|
*
|
|
92
89
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-fs-filename.md
|
|
93
90
|
*/
|
|
94
91
|
"security/detect-non-literal-fs-filename"?: TtscLintRuleSetting;
|
|
95
92
|
|
|
96
93
|
/**
|
|
97
|
-
* Detect `new RegExp(...)` construction whose pattern argument is
|
|
98
|
-
*
|
|
94
|
+
* Detect `new RegExp(...)` construction whose pattern argument is not a
|
|
95
|
+
* string literal.
|
|
99
96
|
*
|
|
100
|
-
* Caller-controlled patterns can both trigger catastrophic
|
|
101
|
-
*
|
|
102
|
-
* intended validation.
|
|
97
|
+
* Caller-controlled patterns can both trigger catastrophic backtracking and
|
|
98
|
+
* let an attacker reshape the matcher to bypass intended validation.
|
|
103
99
|
*
|
|
104
100
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-regexp.md
|
|
105
101
|
*/
|
|
106
102
|
"security/detect-non-literal-regexp"?: TtscLintRuleSetting;
|
|
107
103
|
|
|
108
104
|
/**
|
|
109
|
-
* Detect `require(...)` calls whose specifier is computed at
|
|
110
|
-
* runtime.
|
|
105
|
+
* Detect `require(...)` calls whose specifier is computed at runtime.
|
|
111
106
|
*
|
|
112
|
-
* A dynamic specifier lets caller-controlled data choose the module
|
|
113
|
-
*
|
|
107
|
+
* A dynamic specifier lets caller-controlled data choose the module to load,
|
|
108
|
+
* bypassing any module allow-list on Node.
|
|
114
109
|
*
|
|
115
110
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-require.md
|
|
116
111
|
*/
|
|
117
112
|
"security/detect-non-literal-require"?: TtscLintRuleSetting;
|
|
118
113
|
|
|
119
114
|
/**
|
|
120
|
-
* Detect dynamic bracket-access such as `obj[req.body.x] = ...`,
|
|
121
|
-
*
|
|
122
|
-
*
|
|
115
|
+
* Detect dynamic bracket-access such as `obj[req.body.x] = ...`, which can
|
|
116
|
+
* let caller-controlled keys overwrite prototype-shaped properties or pull
|
|
117
|
+
* out unintended fields.
|
|
123
118
|
*
|
|
124
119
|
* Fires on virtually any computed property access; expect a high
|
|
125
120
|
* false-positive rate in normal application code.
|
|
@@ -129,32 +124,30 @@ export interface ITtscLintSecurityRules {
|
|
|
129
124
|
"security/detect-object-injection"?: TtscLintRuleSetting;
|
|
130
125
|
|
|
131
126
|
/**
|
|
132
|
-
* Detect direct equality comparisons involving secret-like
|
|
133
|
-
*
|
|
134
|
-
* `crypto.timingSafeEqual` instead.
|
|
127
|
+
* Detect direct equality comparisons involving secret-like identifiers (`if
|
|
128
|
+
* (token === expected)`) — use `crypto.timingSafeEqual` instead.
|
|
135
129
|
*
|
|
136
130
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-possible-timing-attacks.md
|
|
137
131
|
*/
|
|
138
132
|
"security/detect-possible-timing-attacks"?: TtscLintRuleSetting;
|
|
139
133
|
|
|
140
134
|
/**
|
|
141
|
-
* Detect `crypto.pseudoRandomBytes`, which produces values that
|
|
142
|
-
*
|
|
135
|
+
* Detect `crypto.pseudoRandomBytes`, which produces values that are not
|
|
136
|
+
* cryptographically secure.
|
|
143
137
|
*
|
|
144
|
-
* Tokens, session ids, and key material must use
|
|
145
|
-
*
|
|
138
|
+
* Tokens, session ids, and key material must use `crypto.randomBytes` (or Web
|
|
139
|
+
* Crypto's `getRandomValues`) instead.
|
|
146
140
|
*
|
|
147
141
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-pseudoRandomBytes.md
|
|
148
142
|
*/
|
|
149
143
|
"security/detect-pseudoRandomBytes"?: TtscLintRuleSetting;
|
|
150
144
|
|
|
151
145
|
/**
|
|
152
|
-
* Detect regex literals with catastrophic backtracking potential
|
|
153
|
-
*
|
|
154
|
-
* same character set.
|
|
146
|
+
* Detect regex literals with catastrophic backtracking potential (ReDoS) —
|
|
147
|
+
* typically nested or overlapping quantifiers over the same character set.
|
|
155
148
|
*
|
|
156
|
-
* Matching caller-controlled input against such a pattern can
|
|
157
|
-
*
|
|
149
|
+
* Matching caller-controlled input against such a pattern can block the event
|
|
150
|
+
* loop for seconds.
|
|
158
151
|
*
|
|
159
152
|
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-unsafe-regex.md
|
|
160
153
|
*/
|
|
@@ -3,27 +3,27 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
|
3
3
|
/**
|
|
4
4
|
* Solid TSX rules from `eslint-plugin-solid`.
|
|
5
5
|
*
|
|
6
|
-
* Solid components compile to fine-grained reactivity, so patterns
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Solid components compile to fine-grained reactivity, so patterns that look
|
|
7
|
+
* correct in React (destructuring props, calling `useEffect`-style hooks with
|
|
8
|
+
* array deps) silently break reactivity in Solid. This family captures the
|
|
9
|
+
* common Solid-only pitfalls.
|
|
10
10
|
*
|
|
11
11
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid
|
|
12
12
|
*/
|
|
13
13
|
export interface ITtscLintSolidRules {
|
|
14
14
|
/**
|
|
15
|
-
* Reject early and conditional `return` from a Solid component
|
|
16
|
-
*
|
|
15
|
+
* Reject early and conditional `return` from a Solid component — Solid
|
|
16
|
+
* components must return exactly once at the top level.
|
|
17
17
|
*
|
|
18
18
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/components-return-once.md
|
|
19
19
|
*/
|
|
20
20
|
"solid/components-return-once"?: TtscLintRuleSetting;
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Require DOM event handler props to use canonical Solid casing
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
23
|
+
* Require DOM event handler props to use canonical Solid casing (`onClick`,
|
|
24
|
+
* not `onclick` / `onClIcK`) so the compiler recognizes them as events. Also
|
|
25
|
+
* flags `on*`-named props bound to non-function values, which look like
|
|
26
|
+
* handlers but are not.
|
|
27
27
|
*
|
|
28
28
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/event-handlers.md
|
|
29
29
|
*/
|
|
@@ -31,42 +31,41 @@ export interface ITtscLintSolidRules {
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Route each Solid export to the correct entry point (`solid-js`,
|
|
34
|
-
* `solid-js/web`, or `solid-js/store`) and merge duplicate imports
|
|
35
|
-
*
|
|
34
|
+
* `solid-js/web`, or `solid-js/store`) and merge duplicate imports from the
|
|
35
|
+
* same entry.
|
|
36
36
|
*
|
|
37
37
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/imports.md
|
|
38
38
|
*/
|
|
39
39
|
"solid/imports"?: TtscLintRuleSetting;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
* Reject duplicate JSX props on the same Solid element. Unlike
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
* Reject duplicate JSX props on the same Solid element. Unlike React, Solid
|
|
43
|
+
* silently keeps the first value, so the duplicate is dead code and almost
|
|
44
|
+
* always a typo.
|
|
45
45
|
*
|
|
46
46
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-duplicate-props.md
|
|
47
47
|
*/
|
|
48
48
|
"solid/jsx-no-duplicate-props"?: TtscLintRuleSetting;
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Reject `javascript:` URLs in Solid JSX attributes (`href`, `src`,
|
|
52
|
-
*
|
|
53
|
-
*
|
|
51
|
+
* Reject `javascript:` URLs in Solid JSX attributes (`href`, `src`, ...) —
|
|
52
|
+
* they evaluate the suffix as code in the page context and are a
|
|
53
|
+
* long-standing XSS vector.
|
|
54
54
|
*
|
|
55
55
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-script-url.md
|
|
56
56
|
*/
|
|
57
57
|
"solid/jsx-no-script-url"?: TtscLintRuleSetting;
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
* Reject Solid JSX component names that are not declared or
|
|
61
|
-
*
|
|
60
|
+
* Reject Solid JSX component names that are not declared or imported in
|
|
61
|
+
* scope.
|
|
62
62
|
*
|
|
63
63
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-undef.md
|
|
64
64
|
*/
|
|
65
65
|
"solid/jsx-no-undef"?: TtscLintRuleSetting;
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Scope-marker compatibility rule (mirrors ESLint's
|
|
69
|
-
* `react/jsx-uses-vars`).
|
|
68
|
+
* Scope-marker compatibility rule (mirrors ESLint's `react/jsx-uses-vars`).
|
|
70
69
|
*
|
|
71
70
|
* The native engine emits no diagnostics for this id.
|
|
72
71
|
*
|
|
@@ -75,25 +74,25 @@ export interface ITtscLintSolidRules {
|
|
|
75
74
|
"solid/jsx-uses-vars"?: TtscLintRuleSetting;
|
|
76
75
|
|
|
77
76
|
/**
|
|
78
|
-
* Reject array values passed as Solid event handlers — Solid
|
|
79
|
-
*
|
|
77
|
+
* Reject array values passed as Solid event handlers — Solid does not unwrap
|
|
78
|
+
* the array form React supports.
|
|
80
79
|
*
|
|
81
80
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-array-handlers.md
|
|
82
81
|
*/
|
|
83
82
|
"solid/no-array-handlers"?: TtscLintRuleSetting;
|
|
84
83
|
|
|
85
84
|
/**
|
|
86
|
-
* Reject destructured Solid component props — destructuring breaks
|
|
87
|
-
*
|
|
85
|
+
* Reject destructured Solid component props — destructuring breaks reactivity
|
|
86
|
+
* by reading the property eagerly.
|
|
88
87
|
*
|
|
89
88
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-destructure.md
|
|
90
89
|
*/
|
|
91
90
|
"solid/no-destructure"?: TtscLintRuleSetting;
|
|
92
91
|
|
|
93
92
|
/**
|
|
94
|
-
* Reject `innerHTML` JSX attributes because they bypass sanitization
|
|
95
|
-
*
|
|
96
|
-
*
|
|
93
|
+
* Reject `innerHTML` JSX attributes because they bypass sanitization and are
|
|
94
|
+
* a common XSS sink. A static string literal is still allowed by default;
|
|
95
|
+
* flip `allowStatic` off to ban that form too.
|
|
97
96
|
*
|
|
98
97
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-innerhtml.md
|
|
99
98
|
*/
|
|
@@ -101,9 +100,9 @@ export interface ITtscLintSolidRules {
|
|
|
101
100
|
|
|
102
101
|
/**
|
|
103
102
|
* Reject Solid APIs that rely on ES6 `Proxy` (including `new Proxy`,
|
|
104
|
-
* `Proxy.revocable`, imports from `solid-js/store`, and dynamic
|
|
105
|
-
*
|
|
106
|
-
*
|
|
103
|
+
* `Proxy.revocable`, imports from `solid-js/store`, and dynamic spread shapes
|
|
104
|
+
* through `mergeProps`). For shipping to runtimes without `Proxy` support;
|
|
105
|
+
* off by default.
|
|
107
106
|
*
|
|
108
107
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-proxy-apis.md
|
|
109
108
|
*/
|
|
@@ -118,26 +117,26 @@ export interface ITtscLintSolidRules {
|
|
|
118
117
|
"solid/no-react-deps"?: TtscLintRuleSetting;
|
|
119
118
|
|
|
120
119
|
/**
|
|
121
|
-
* Reject React-specific JSX props such as `className` and
|
|
122
|
-
*
|
|
120
|
+
* Reject React-specific JSX props such as `className` and `htmlFor` — Solid
|
|
121
|
+
* uses `class` and `for`.
|
|
123
122
|
*
|
|
124
123
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-react-specific-props.md
|
|
125
124
|
*/
|
|
126
125
|
"solid/no-react-specific-props"?: TtscLintRuleSetting;
|
|
127
126
|
|
|
128
127
|
/**
|
|
129
|
-
* Restrict namespaced JSX attributes (`ns:name={...}`) to the
|
|
130
|
-
*
|
|
131
|
-
* `
|
|
132
|
-
*
|
|
128
|
+
* Restrict namespaced JSX attributes (`ns:name={...}`) to the built-in Solid
|
|
129
|
+
* namespaces (`on:`, `oncapture:`, `use:`, `prop:`, `attr:`, `bool:`,
|
|
130
|
+
* `style:`, `class:`). Extra names can be allowed through the
|
|
131
|
+
* `allowedNamespaces` option.
|
|
133
132
|
*
|
|
134
133
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-unknown-namespaces.md
|
|
135
134
|
*/
|
|
136
135
|
"solid/no-unknown-namespaces"?: TtscLintRuleSetting;
|
|
137
136
|
|
|
138
137
|
/**
|
|
139
|
-
* Rewrite `class={cn({ ... })}` / `clsx(...)` / `classnames(...)`
|
|
140
|
-
*
|
|
138
|
+
* Rewrite `class={cn({ ... })}` / `clsx(...)` / `classnames(...)` calls to
|
|
139
|
+
* the reactive `classlist={{ ... }}` prop.
|
|
141
140
|
*
|
|
142
141
|
* Deprecated and off by default upstream.
|
|
143
142
|
*
|
|
@@ -146,9 +145,9 @@ export interface ITtscLintSolidRules {
|
|
|
146
145
|
"solid/prefer-classlist"?: TtscLintRuleSetting;
|
|
147
146
|
|
|
148
147
|
/**
|
|
149
|
-
* Replace inline `array.map(item => <JSX />)` with Solid's `<For>`
|
|
150
|
-
*
|
|
151
|
-
*
|
|
148
|
+
* Replace inline `array.map(item => <JSX />)` with Solid's `<For>` component
|
|
149
|
+
* so the iteration stays keyed and reactive instead of re-creating every
|
|
150
|
+
* child on each update.
|
|
152
151
|
*
|
|
153
152
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-for.md
|
|
154
153
|
*/
|
|
@@ -156,16 +155,16 @@ export interface ITtscLintSolidRules {
|
|
|
156
155
|
|
|
157
156
|
/**
|
|
158
157
|
* Rewrite `{cond && <JSX />}` short-circuits in JSX to `<Show
|
|
159
|
-
* when={cond}>...</Show>`. Stylistic only — Solid's compiler
|
|
160
|
-
*
|
|
158
|
+
* when={cond}>...</Show>`. Stylistic only — Solid's compiler already handles
|
|
159
|
+
* the boolean form — so it is off by default.
|
|
161
160
|
*
|
|
162
161
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-show.md
|
|
163
162
|
*/
|
|
164
163
|
"solid/prefer-show"?: TtscLintRuleSetting;
|
|
165
164
|
|
|
166
165
|
/**
|
|
167
|
-
* Reject common Solid reactivity breakages — reading a signal
|
|
168
|
-
*
|
|
166
|
+
* Reject common Solid reactivity breakages — reading a signal outside a
|
|
167
|
+
* tracking scope, destructuring a `Store`, etc.
|
|
169
168
|
*
|
|
170
169
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/reactivity.md
|
|
171
170
|
*/
|
|
@@ -173,9 +172,8 @@ export interface ITtscLintSolidRules {
|
|
|
173
172
|
|
|
174
173
|
/**
|
|
175
174
|
* Collapse JSX elements with no children to the self-closing form
|
|
176
|
-
* (`<Foo></Foo>` to `<Foo />`). Configurable per component vs HTML
|
|
177
|
-
*
|
|
178
|
-
* tags.
|
|
175
|
+
* (`<Foo></Foo>` to `<Foo />`). Configurable per component vs HTML element,
|
|
176
|
+
* including a `"void"` mode that only enforces it for void tags.
|
|
179
177
|
*
|
|
180
178
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/self-closing-comp.md
|
|
181
179
|
*/
|
|
@@ -183,18 +181,17 @@ export interface ITtscLintSolidRules {
|
|
|
183
181
|
|
|
184
182
|
/**
|
|
185
183
|
* Require `style={{...}}` keys to be valid kebab-case CSS properties
|
|
186
|
-
* (`"font-size"`, not React's `fontSize`) and dimensioned values to
|
|
187
|
-
*
|
|
184
|
+
* (`"font-size"`, not React's `fontSize`) and dimensioned values to be
|
|
185
|
+
* strings — Solid does not append implicit `px`.
|
|
188
186
|
*
|
|
189
187
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/style-prop.md
|
|
190
188
|
*/
|
|
191
189
|
"solid/style-prop"?: TtscLintRuleSetting;
|
|
192
190
|
|
|
193
191
|
/**
|
|
194
|
-
* Reject JSX nestings that the HTML parser would silently restructure
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
* interactive elements.
|
|
192
|
+
* Reject JSX nestings that the HTML parser would silently restructure at
|
|
193
|
+
* runtime — `<p>` cannot contain block-level children, `<a>` cannot contain
|
|
194
|
+
* another `<a>`, and `<button>` cannot contain other interactive elements.
|
|
198
195
|
*
|
|
199
196
|
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/validate-jsx-nesting.md
|
|
200
197
|
*/
|
|
@@ -8,16 +8,15 @@
|
|
|
8
8
|
/** `storybook/no-uninstalled-addons` rule options. */
|
|
9
9
|
export interface ITtscLintStorybookNoUninstalledAddonsRuleOptions {
|
|
10
10
|
/**
|
|
11
|
-
* Explicit `package.json` path used to validate configured Storybook
|
|
12
|
-
*
|
|
13
|
-
* file.
|
|
11
|
+
* Explicit `package.json` path used to validate configured Storybook addons.
|
|
12
|
+
* When omitted, the rule walks upward from the linted config file.
|
|
14
13
|
*/
|
|
15
14
|
packageJsonLocation?: string;
|
|
16
15
|
|
|
17
16
|
/**
|
|
18
17
|
* Addon package names to skip when checking installation status.
|
|
19
18
|
*
|
|
20
|
-
* @default []
|
|
19
|
+
* @default [ ]
|
|
21
20
|
*/
|
|
22
21
|
ignore?: readonly string[];
|
|
23
22
|
}
|