@ttsc/lint 0.13.0 → 0.14.0-dev.20260528
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 +948 -69
- package/lib/defaultFormat.d.ts +9 -6
- package/lib/defaultFormat.js +9 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/index.d.ts +46 -0
- package/lib/index.js +60 -37
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +12 -6
- package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
- package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
- package/lib/structures/ITtscLintFormat.js.map +1 -0
- package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
- package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
- package/lib/structures/TtscLintRuleSetting.js.map +1 -0
- package/lib/structures/index.d.ts +3 -4
- package/lib/structures/index.js +3 -4
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
- package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
- package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
- package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
- package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
- package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
- package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
- package/lib/structures/rules/ITtscLintJestRules.js +3 -0
- package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
- package/lib/structures/rules/ITtscLintReactRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
- package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
- package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
- package/lib/structures/rules/ITtscLintRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
- package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
- package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
- package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
- package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
- package/lib/structures/rules/index.d.ts +31 -0
- package/lib/structures/rules/index.js +48 -0
- package/lib/structures/rules/index.js.map +1 -0
- package/linthost/ast_helpers.go +30 -5
- package/linthost/compile.go +33 -2
- package/linthost/config.go +48 -17
- package/linthost/config_format.go +9 -9
- package/linthost/directives.go +67 -25
- package/linthost/dispatch.go +14 -3
- package/linthost/engine.go +160 -40
- package/linthost/fix.go +2 -2
- package/linthost/flags_gen.go +17 -15
- package/linthost/host.go +40 -3
- package/linthost/lsp.go +747 -0
- package/linthost/print_dispatch.go +2 -2
- package/linthost/print_nodes_function.go +2 -2
- package/linthost/print_nodes_object.go +1 -1
- package/linthost/rule_names.go +14 -0
- package/linthost/rules_arrays.go +2 -2
- package/linthost/rules_boundaries.go +532 -0
- package/linthost/rules_camelcase.go +133 -0
- package/linthost/rules_complexity.go +94 -0
- package/linthost/rules_consistent_return.go +130 -0
- package/linthost/rules_console.go +1 -1
- package/linthost/rules_core_extra.go +739 -0
- package/linthost/rules_curly.go +70 -0
- package/linthost/rules_cypress.go +608 -0
- package/linthost/rules_debugger.go +2 -2
- package/linthost/rules_default_case.go +39 -0
- package/linthost/rules_default_case_last.go +46 -0
- package/linthost/rules_dupes.go +3 -3
- package/linthost/rules_empty.go +3 -3
- package/linthost/rules_escape.go +44 -24
- package/linthost/rules_eval.go +2 -2
- package/linthost/rules_finally.go +2 -2
- package/linthost/rules_format_jsdoc.go +1 -1
- package/linthost/rules_format_print_width.go +9 -9
- package/linthost/rules_format_quotes.go +1 -1
- package/linthost/rules_format_semi.go +1 -1
- package/linthost/rules_format_sort_imports.go +1 -1
- package/linthost/rules_format_trailing_comma.go +1 -1
- package/linthost/rules_functional.go +967 -0
- package/linthost/rules_gap.go +24 -45
- package/linthost/rules_grouped_accessor_pairs.go +87 -0
- package/linthost/rules_guard_for_in.go +198 -0
- package/linthost/rules_id_length.go +77 -0
- package/linthost/rules_imports.go +70 -2
- package/linthost/rules_init_declarations.go +53 -0
- package/linthost/rules_jest.go +618 -0
- package/linthost/rules_jsdoc.go +502 -0
- package/linthost/rules_jsx_a11y.go +1264 -0
- package/linthost/rules_logic.go +12 -12
- package/linthost/rules_loops.go +1 -1
- package/linthost/rules_max_classes_per_file.go +58 -0
- package/linthost/rules_max_depth.go +83 -0
- package/linthost/rules_max_lines.go +101 -0
- package/linthost/rules_max_lines_per_function.go +57 -0
- package/linthost/rules_max_nested_callbacks.go +61 -0
- package/linthost/rules_max_params.go +49 -0
- package/linthost/rules_max_statements.go +59 -0
- package/linthost/rules_misc.go +1 -1
- package/linthost/rules_nextjs.go +697 -0
- package/linthost/rules_no_else_return.go +75 -0
- package/linthost/rules_no_empty_named_blocks.go +91 -0
- package/linthost/rules_no_extend_native.go +51 -0
- package/linthost/rules_no_import_assign.go +140 -0
- package/linthost/rules_no_invalid_this.go +52 -0
- package/linthost/rules_no_loop_func.go +85 -0
- package/linthost/rules_no_magic_numbers.go +123 -0
- package/linthost/rules_no_mixed_operators.go +80 -0
- package/linthost/rules_no_param_reassign.go +98 -0
- package/linthost/rules_no_redeclare.go +270 -0
- package/linthost/rules_no_restricted_imports.go +105 -0
- package/linthost/rules_no_restricted_syntax.go +49 -0
- package/linthost/rules_no_shadow.go +147 -0
- package/linthost/rules_no_unreachable.go +77 -0
- package/linthost/rules_no_useless_assignment.go +120 -0
- package/linthost/rules_no_useless_constructor.go +245 -0
- package/linthost/rules_no_useless_return.go +51 -0
- package/linthost/rules_params.go +1 -1
- package/linthost/rules_playwright.go +788 -0
- package/linthost/rules_prefer_arrow_callback.go +124 -0
- package/linthost/rules_prefer_destructuring.go +98 -0
- package/linthost/rules_prefer_named_capture_group.go +129 -0
- package/linthost/rules_prefer_rest_params.go +94 -0
- package/linthost/rules_problems.go +41 -30
- package/linthost/rules_promise.go +1128 -73
- package/linthost/rules_protos.go +2 -2
- package/linthost/rules_react.go +773 -0
- package/linthost/rules_react_extras.go +227 -0
- package/linthost/rules_react_hooks.go +848 -0
- package/linthost/rules_react_perf.go +293 -0
- package/linthost/rules_react_refresh.go +583 -0
- package/linthost/rules_regexp.go +410 -0
- package/linthost/rules_security.go +830 -0
- package/linthost/rules_self.go +2 -2
- package/linthost/rules_solid.go +1073 -0
- package/linthost/rules_sort_imports.go +69 -0
- package/linthost/rules_sort_keys.go +134 -0
- package/linthost/rules_storybook.go +1176 -0
- package/linthost/rules_strings.go +4 -4
- package/linthost/rules_suggestions.go +38 -38
- package/linthost/rules_tanstack_query.go +844 -0
- package/linthost/rules_testing_library.go +1204 -0
- package/linthost/rules_throw.go +1 -1
- package/linthost/rules_ts.go +19 -19
- package/linthost/rules_ts_async.go +399 -0
- package/linthost/rules_ts_class_literal_property_style.go +115 -0
- package/linthost/rules_ts_consistent_type_exports.go +256 -0
- package/linthost/rules_ts_explicit_function_return_type.go +67 -0
- package/linthost/rules_ts_extra.go +155 -36
- package/linthost/rules_ts_no_base_to_string.go +218 -0
- package/linthost/rules_ts_no_confusing_void.go +72 -0
- package/linthost/rules_ts_no_deprecated.go +195 -0
- package/linthost/rules_ts_no_for_in_array.go +84 -0
- package/linthost/rules_ts_no_magic_numbers.go +124 -0
- package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
- package/linthost/rules_ts_no_misused_spread.go +104 -0
- package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
- package/linthost/rules_ts_no_restricted_types.go +62 -0
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
- package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
- package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
- package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
- package/linthost/rules_ts_no_unsafe_argument.go +82 -0
- package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
- package/linthost/rules_ts_no_unsafe_call.go +82 -0
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
- package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
- package/linthost/rules_ts_no_unsafe_return.go +126 -0
- package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
- package/linthost/rules_ts_no_useless_constructor.go +52 -0
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
- package/linthost/rules_ts_parameter_properties.go +38 -0
- package/linthost/rules_ts_prefer_find.go +178 -0
- package/linthost/rules_ts_prefer_includes.go +255 -0
- package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
- package/linthost/rules_ts_prefer_optional_chain.go +228 -0
- package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
- package/linthost/rules_ts_prefer_readonly.go +73 -0
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
- package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
- package/linthost/rules_ts_prefer_return_this_type.go +135 -0
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
- package/linthost/rules_ts_promise_function_async.go +77 -0
- package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
- package/linthost/rules_ts_require_array_sort_compare.go +96 -0
- package/linthost/rules_ts_restrict_plus_operands.go +127 -0
- package/linthost/rules_ts_restrict_template_expressions.go +95 -0
- package/linthost/rules_ts_simple.go +387 -0
- package/linthost/rules_ts_sort_type_constituents.go +144 -0
- package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
- package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
- package/linthost/rules_ts_unbound_method.go +126 -0
- package/linthost/rules_tsdoc.go +136 -0
- package/linthost/rules_unicorn_better_regex.go +27 -0
- package/linthost/rules_unicorn_catch_error_name.go +46 -0
- package/linthost/rules_unicorn_consistent_assert.go +47 -0
- package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
- package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
- package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
- package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
- package/linthost/rules_unicorn_custom_error_definition.go +138 -0
- package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
- package/linthost/rules_unicorn_error_message.go +64 -0
- package/linthost/rules_unicorn_escape_case.go +51 -0
- package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
- package/linthost/rules_unicorn_explicit_length_check.go +88 -0
- package/linthost/rules_unicorn_filename_case.go +29 -0
- package/linthost/rules_unicorn_import_style.go +28 -0
- package/linthost/rules_unicorn_isolated_functions.go +29 -0
- package/linthost/rules_unicorn_new_for_builtins.go +87 -0
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
- package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
- package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
- package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
- package/linthost/rules_unicorn_no_array_for_each.go +40 -0
- package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
- package/linthost/rules_unicorn_no_array_reduce.go +41 -0
- package/linthost/rules_unicorn_no_array_reverse.go +44 -0
- package/linthost/rules_unicorn_no_array_sort.go +43 -0
- package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
- package/linthost/rules_unicorn_no_console_spaces.go +61 -0
- package/linthost/rules_unicorn_no_document_cookie.go +41 -0
- package/linthost/rules_unicorn_no_empty_file.go +44 -0
- package/linthost/rules_unicorn_no_for_loop.go +102 -0
- package/linthost/rules_unicorn_no_hex_escape.go +42 -0
- package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
- package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
- package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
- package/linthost/rules_unicorn_no_lonely_if.go +44 -0
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
- package/linthost/rules_unicorn_no_named_default.go +54 -0
- package/linthost/rules_unicorn_no_negated_condition.go +85 -0
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
- package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
- package/linthost/rules_unicorn_no_new_array.go +30 -0
- package/linthost/rules_unicorn_no_new_buffer.go +31 -0
- package/linthost/rules_unicorn_no_null.go +24 -0
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
- package/linthost/rules_unicorn_no_process_exit.go +43 -0
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
- package/linthost/rules_unicorn_no_static_only_class.go +56 -0
- package/linthost/rules_unicorn_no_thenable.go +74 -0
- package/linthost/rules_unicorn_no_this_assignment.go +35 -0
- package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
- package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
- package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
- package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
- package/linthost/rules_unicorn_no_unused_properties.go +30 -0
- package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
- package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
- package/linthost/rules_unicorn_no_useless_spread.go +67 -0
- package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
- package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
- package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
- package/linthost/rules_unicorn_number_literal_case.go +69 -0
- package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
- package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
- package/linthost/rules_unicorn_prefer_array_find.go +51 -0
- package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
- package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
- package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
- package/linthost/rules_unicorn_prefer_array_some.go +67 -0
- package/linthost/rules_unicorn_prefer_at.go +77 -0
- package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
- package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
- package/linthost/rules_unicorn_prefer_code_point.go +49 -0
- package/linthost/rules_unicorn_prefer_date_now.go +78 -0
- package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
- package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
- package/linthost/rules_unicorn_prefer_event_target.go +36 -0
- package/linthost/rules_unicorn_prefer_export_from.go +129 -0
- package/linthost/rules_unicorn_prefer_global_this.go +127 -0
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
- package/linthost/rules_unicorn_prefer_includes.go +149 -0
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
- package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
- package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
- package/linthost/rules_unicorn_prefer_module.go +50 -0
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
- package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
- package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
- package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
- package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
- package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
- package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
- package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
- package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
- package/linthost/rules_unicorn_prefer_set_has.go +42 -0
- package/linthost/rules_unicorn_prefer_set_size.go +48 -0
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
- package/linthost/rules_unicorn_prefer_single_call.go +96 -0
- package/linthost/rules_unicorn_prefer_spread.go +51 -0
- package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
- package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
- package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
- package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
- package/linthost/rules_unicorn_prefer_switch.go +103 -0
- package/linthost/rules_unicorn_prefer_ternary.go +71 -0
- package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
- package/linthost/rules_unicorn_prefer_type_error.go +127 -0
- package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
- package/linthost/rules_unicorn_relative_url_style.go +49 -0
- package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
- package/linthost/rules_unicorn_require_module_attributes.go +54 -0
- package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
- package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
- package/linthost/rules_unicorn_string_content.go +27 -0
- package/linthost/rules_unicorn_switch_case_braces.go +42 -0
- package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
- package/linthost/rules_unicorn_template_indent.go +28 -0
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
- package/linthost/rules_unicorn_throw_new_error.go +61 -0
- package/linthost/rules_var.go +10 -4
- package/linthost/rules_vitest.go +568 -0
- package/package.json +3 -3
- package/plugin/main.go +49 -3
- package/rule/astutil/astutil.go +10 -3
- package/rule/rule.go +12 -10
- package/src/defaultFormat.ts +11 -8
- package/src/index.ts +65 -43
- package/src/structures/ITtscLintConfig.ts +12 -6
- package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
- package/src/structures/TtscLintRuleSetting.ts +55 -0
- package/src/structures/index.ts +3 -4
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
- package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
- package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
- package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
- package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
- package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
- package/src/structures/rules/ITtscLintJestRules.ts +220 -0
- package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
- package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
- package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
- package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
- package/src/structures/rules/ITtscLintReactRules.ts +321 -0
- package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
- package/src/structures/rules/ITtscLintRules.ts +77 -0
- package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
- package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
- package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
- package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
- package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
- package/src/structures/rules/index.ts +31 -0
- package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
- package/lib/structures/TtscLintRule.d.ts +0 -17
- package/lib/structures/TtscLintRule.js.map +0 -1
- package/lib/structures/TtscLintRuleMap.d.ts +0 -46
- package/lib/structures/TtscLintRuleMap.js.map +0 -1
- package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
- package/lib/structures/TtscLintRuleOptions.js.map +0 -1
- package/src/structures/TtscLintRule.ts +0 -160
- package/src/structures/TtscLintRuleMap.ts +0 -55
- package/src/structures/TtscLintRuleOptions.ts +0 -151
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Solid TSX rules from `eslint-plugin-solid`.
|
|
4
|
+
*
|
|
5
|
+
* Solid components compile to fine-grained reactivity, so patterns
|
|
6
|
+
* that look correct in React (destructuring props, calling
|
|
7
|
+
* `useEffect`-style hooks with array deps) silently break reactivity
|
|
8
|
+
* in Solid. This family captures the common Solid-only pitfalls.
|
|
9
|
+
*
|
|
10
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid
|
|
11
|
+
*/
|
|
12
|
+
export interface ITtscLintSolidRules {
|
|
13
|
+
/**
|
|
14
|
+
* Reject early and conditional `return` from a Solid component
|
|
15
|
+
* — Solid components must return exactly once at the top level.
|
|
16
|
+
*
|
|
17
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/components-return-once.md
|
|
18
|
+
*/
|
|
19
|
+
"solid/components-return-once"?: TtscLintRuleSetting;
|
|
20
|
+
/**
|
|
21
|
+
* Require DOM event handler props to use canonical Solid casing
|
|
22
|
+
* (`onClick`, not `onclick` / `onClIcK`) so the compiler recognizes
|
|
23
|
+
* them as events. Also flags `on*`-named props bound to non-function
|
|
24
|
+
* values, which look like handlers but are not.
|
|
25
|
+
*
|
|
26
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/event-handlers.md
|
|
27
|
+
*/
|
|
28
|
+
"solid/event-handlers"?: TtscLintRuleSetting;
|
|
29
|
+
/**
|
|
30
|
+
* Route each Solid export to the correct entry point (`solid-js`,
|
|
31
|
+
* `solid-js/web`, or `solid-js/store`) and merge duplicate imports
|
|
32
|
+
* from the same entry.
|
|
33
|
+
*
|
|
34
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/imports.md
|
|
35
|
+
*/
|
|
36
|
+
"solid/imports"?: TtscLintRuleSetting;
|
|
37
|
+
/**
|
|
38
|
+
* Reject duplicate JSX props on the same Solid element. Unlike
|
|
39
|
+
* React, Solid silently keeps the first value, so the duplicate is
|
|
40
|
+
* dead code and almost always a typo.
|
|
41
|
+
*
|
|
42
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-duplicate-props.md
|
|
43
|
+
*/
|
|
44
|
+
"solid/jsx-no-duplicate-props"?: TtscLintRuleSetting;
|
|
45
|
+
/**
|
|
46
|
+
* Reject `javascript:` URLs in Solid JSX attributes (`href`, `src`,
|
|
47
|
+
* ...) — they evaluate the suffix as code in the page context and
|
|
48
|
+
* are a long-standing XSS vector.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-script-url.md
|
|
51
|
+
*/
|
|
52
|
+
"solid/jsx-no-script-url"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Reject Solid JSX component names that are not declared or
|
|
55
|
+
* imported in scope.
|
|
56
|
+
*
|
|
57
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-undef.md
|
|
58
|
+
*/
|
|
59
|
+
"solid/jsx-no-undef"?: TtscLintRuleSetting;
|
|
60
|
+
/**
|
|
61
|
+
* Scope-marker compatibility rule (mirrors ESLint's
|
|
62
|
+
* `react/jsx-uses-vars`).
|
|
63
|
+
*
|
|
64
|
+
* The native engine emits no diagnostics for this id.
|
|
65
|
+
*
|
|
66
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-uses-vars.md
|
|
67
|
+
*/
|
|
68
|
+
"solid/jsx-uses-vars"?: TtscLintRuleSetting;
|
|
69
|
+
/**
|
|
70
|
+
* Reject array values passed as Solid event handlers — Solid
|
|
71
|
+
* does not unwrap the array form React supports.
|
|
72
|
+
*
|
|
73
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-array-handlers.md
|
|
74
|
+
*/
|
|
75
|
+
"solid/no-array-handlers"?: TtscLintRuleSetting;
|
|
76
|
+
/**
|
|
77
|
+
* Reject destructured Solid component props — destructuring breaks
|
|
78
|
+
* reactivity by reading the property eagerly.
|
|
79
|
+
*
|
|
80
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-destructure.md
|
|
81
|
+
*/
|
|
82
|
+
"solid/no-destructure"?: TtscLintRuleSetting;
|
|
83
|
+
/**
|
|
84
|
+
* Reject `innerHTML` JSX attributes because they bypass sanitization
|
|
85
|
+
* and are a common XSS sink. A static string literal is still
|
|
86
|
+
* allowed by default; flip `allowStatic` off to ban that form too.
|
|
87
|
+
*
|
|
88
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-innerhtml.md
|
|
89
|
+
*/
|
|
90
|
+
"solid/no-innerhtml"?: TtscLintRuleSetting;
|
|
91
|
+
/**
|
|
92
|
+
* Reject Solid APIs that rely on ES6 `Proxy` (including `new Proxy`,
|
|
93
|
+
* `Proxy.revocable`, imports from `solid-js/store`, and dynamic
|
|
94
|
+
* spread shapes through `mergeProps`). For shipping to runtimes
|
|
95
|
+
* without `Proxy` support; off by default.
|
|
96
|
+
*
|
|
97
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-proxy-apis.md
|
|
98
|
+
*/
|
|
99
|
+
"solid/no-proxy-apis"?: TtscLintRuleSetting;
|
|
100
|
+
/**
|
|
101
|
+
* Reject React-style dependency arrays in Solid tracked scopes
|
|
102
|
+
* (`createEffect(() => ..., [deps])`).
|
|
103
|
+
*
|
|
104
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-react-deps.md
|
|
105
|
+
*/
|
|
106
|
+
"solid/no-react-deps"?: TtscLintRuleSetting;
|
|
107
|
+
/**
|
|
108
|
+
* Reject React-specific JSX props such as `className` and
|
|
109
|
+
* `htmlFor` — Solid uses `class` and `for`.
|
|
110
|
+
*
|
|
111
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-react-specific-props.md
|
|
112
|
+
*/
|
|
113
|
+
"solid/no-react-specific-props"?: TtscLintRuleSetting;
|
|
114
|
+
/**
|
|
115
|
+
* Restrict namespaced JSX attributes (`ns:name={...}`) to the
|
|
116
|
+
* built-in Solid namespaces (`on:`, `oncapture:`, `use:`, `prop:`,
|
|
117
|
+
* `attr:`, `bool:`, `style:`, `class:`). Extra names can be allowed
|
|
118
|
+
* through the `allowedNamespaces` option.
|
|
119
|
+
*
|
|
120
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-unknown-namespaces.md
|
|
121
|
+
*/
|
|
122
|
+
"solid/no-unknown-namespaces"?: TtscLintRuleSetting;
|
|
123
|
+
/**
|
|
124
|
+
* Rewrite `class={cn({ ... })}` / `clsx(...)` / `classnames(...)`
|
|
125
|
+
* calls to the reactive `classlist={{ ... }}` prop.
|
|
126
|
+
*
|
|
127
|
+
* Deprecated and off by default upstream.
|
|
128
|
+
*
|
|
129
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-classlist.md
|
|
130
|
+
*/
|
|
131
|
+
"solid/prefer-classlist"?: TtscLintRuleSetting;
|
|
132
|
+
/**
|
|
133
|
+
* Replace inline `array.map(item => <JSX />)` with Solid's `<For>`
|
|
134
|
+
* component so the iteration stays keyed and reactive instead of
|
|
135
|
+
* re-creating every child on each update.
|
|
136
|
+
*
|
|
137
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-for.md
|
|
138
|
+
*/
|
|
139
|
+
"solid/prefer-for"?: TtscLintRuleSetting;
|
|
140
|
+
/**
|
|
141
|
+
* Rewrite `{cond && <JSX />}` short-circuits in JSX to `<Show
|
|
142
|
+
* when={cond}>...</Show>`. Stylistic only — Solid's compiler
|
|
143
|
+
* already handles the boolean form — so it is off by default.
|
|
144
|
+
*
|
|
145
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-show.md
|
|
146
|
+
*/
|
|
147
|
+
"solid/prefer-show"?: TtscLintRuleSetting;
|
|
148
|
+
/**
|
|
149
|
+
* Reject common Solid reactivity breakages — reading a signal
|
|
150
|
+
* outside a tracking scope, destructuring a `Store`, etc.
|
|
151
|
+
*
|
|
152
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/reactivity.md
|
|
153
|
+
*/
|
|
154
|
+
"solid/reactivity"?: TtscLintRuleSetting;
|
|
155
|
+
/**
|
|
156
|
+
* Collapse JSX elements with no children to the self-closing form
|
|
157
|
+
* (`<Foo></Foo>` to `<Foo />`). Configurable per component vs HTML
|
|
158
|
+
* element, including a `"void"` mode that only enforces it for void
|
|
159
|
+
* tags.
|
|
160
|
+
*
|
|
161
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/self-closing-comp.md
|
|
162
|
+
*/
|
|
163
|
+
"solid/self-closing-comp"?: TtscLintRuleSetting;
|
|
164
|
+
/**
|
|
165
|
+
* Require `style={{...}}` keys to be valid kebab-case CSS properties
|
|
166
|
+
* (`"font-size"`, not React's `fontSize`) and dimensioned values to
|
|
167
|
+
* be strings — Solid does not append implicit `px`.
|
|
168
|
+
*
|
|
169
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/style-prop.md
|
|
170
|
+
*/
|
|
171
|
+
"solid/style-prop"?: TtscLintRuleSetting;
|
|
172
|
+
/**
|
|
173
|
+
* Reject JSX nestings that the HTML parser would silently restructure
|
|
174
|
+
* at runtime — `<p>` cannot contain block-level children, `<a>` cannot
|
|
175
|
+
* contain another `<a>`, and `<button>` cannot contain other
|
|
176
|
+
* interactive elements.
|
|
177
|
+
*
|
|
178
|
+
* @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/validate-jsx-nesting.md
|
|
179
|
+
*/
|
|
180
|
+
"solid/validate-jsx-nesting"?: TtscLintRuleSetting;
|
|
181
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintSolidRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintSolidRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options shape for rules in {@link ITtscLintStorybookRules} that accept
|
|
3
|
+
* configuration. Only `storybook/no-uninstalled-addons` is configurable.
|
|
4
|
+
*
|
|
5
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook
|
|
6
|
+
*/
|
|
7
|
+
/** `storybook/no-uninstalled-addons` rule options. */
|
|
8
|
+
export interface ITtscLintStorybookNoUninstalledAddonsRuleOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Explicit `package.json` path used to validate configured Storybook
|
|
11
|
+
* addons. When omitted, the rule walks upward from the linted config
|
|
12
|
+
* file.
|
|
13
|
+
*/
|
|
14
|
+
packageJsonLocation?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Addon package names to skip when checking installation status.
|
|
17
|
+
*
|
|
18
|
+
* @default []
|
|
19
|
+
*/
|
|
20
|
+
ignore?: readonly string[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Options shape for rules in {@link ITtscLintStorybookRules} that accept
|
|
4
|
+
* configuration. Only `storybook/no-uninstalled-addons` is configurable.
|
|
5
|
+
*
|
|
6
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=ITtscLintStorybookRuleOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintStorybookRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintStorybookRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
|
|
2
|
+
import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
3
|
+
/**
|
|
4
|
+
* Storybook CSF and configuration rules from
|
|
5
|
+
* `eslint-plugin-storybook`.
|
|
6
|
+
*
|
|
7
|
+
* Checks Component Story Format conventions (default export meta,
|
|
8
|
+
* named story exports, play-function shape) and configuration
|
|
9
|
+
* pitfalls in `.storybook/main.ts`.
|
|
10
|
+
*
|
|
11
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook
|
|
12
|
+
*/
|
|
13
|
+
export interface ITtscLintStorybookRules {
|
|
14
|
+
/**
|
|
15
|
+
* Require `await` on Storybook interaction helpers (`userEvent`,
|
|
16
|
+
* `expect`, `waitFor`, ...) inside a `play` function.
|
|
17
|
+
*
|
|
18
|
+
* The interactions addon intercepts the awaited promises to record
|
|
19
|
+
* steps, so a missing `await` skips that frame in the debugger and
|
|
20
|
+
* races the next assertion.
|
|
21
|
+
*
|
|
22
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md
|
|
23
|
+
*/
|
|
24
|
+
"storybook/await-interactions"?: TtscLintRuleSetting;
|
|
25
|
+
/**
|
|
26
|
+
* Require forwarding the play-function `context` argument when
|
|
27
|
+
* invoking another story's `play` function.
|
|
28
|
+
*
|
|
29
|
+
* Storybook hangs the canvas, step tracker, and interactions addon
|
|
30
|
+
* off `context`; omitting it leaves the nested call without the
|
|
31
|
+
* runtime hooks it needs to drive the canvas.
|
|
32
|
+
*
|
|
33
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md
|
|
34
|
+
*/
|
|
35
|
+
"storybook/context-in-play-function"?: TtscLintRuleSetting;
|
|
36
|
+
/**
|
|
37
|
+
* Require the CSF default meta object to declare a `component`.
|
|
38
|
+
*
|
|
39
|
+
* The reference unlocks Storybook's auto-generated controls,
|
|
40
|
+
* prop-table docs, and CSF3 default render — without it those
|
|
41
|
+
* features silently no-op.
|
|
42
|
+
*
|
|
43
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md
|
|
44
|
+
*/
|
|
45
|
+
"storybook/csf-component"?: TtscLintRuleSetting;
|
|
46
|
+
/**
|
|
47
|
+
* Require every story file to provide the CSF default export.
|
|
48
|
+
*
|
|
49
|
+
* Storybook keys all per-file configuration (title, decorators,
|
|
50
|
+
* parameters, component) off that default; files without it are
|
|
51
|
+
* skipped at indexing time.
|
|
52
|
+
*
|
|
53
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md
|
|
54
|
+
*/
|
|
55
|
+
"storybook/default-exports"?: TtscLintRuleSetting;
|
|
56
|
+
/**
|
|
57
|
+
* Reject the legacy `|` separator in Storybook story titles
|
|
58
|
+
* (`"Foo|Bar"`).
|
|
59
|
+
*
|
|
60
|
+
* Storybook 6 standardized on `/` for hierarchy and treats `|` as
|
|
61
|
+
* a literal character, so the title collapses into a single
|
|
62
|
+
* sidebar entry instead of nested folders.
|
|
63
|
+
*
|
|
64
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md
|
|
65
|
+
*/
|
|
66
|
+
"storybook/hierarchy-separator"?: TtscLintRuleSetting;
|
|
67
|
+
/**
|
|
68
|
+
* Require `title` and `args` in CSF meta to be inline literals,
|
|
69
|
+
* not references to outside variables or function calls.
|
|
70
|
+
*
|
|
71
|
+
* Storybook's indexer and upgrade codemods read these via static
|
|
72
|
+
* analysis and skip stories where the value is not literal.
|
|
73
|
+
*
|
|
74
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md
|
|
75
|
+
*/
|
|
76
|
+
"storybook/meta-inline-properties"?: TtscLintRuleSetting;
|
|
77
|
+
/**
|
|
78
|
+
* Require CSF meta objects to type-check with `satisfies Meta<…>`
|
|
79
|
+
* rather than a `: Meta<…>` annotation or `as` cast.
|
|
80
|
+
*
|
|
81
|
+
* `satisfies` preserves the narrowed literal types so dependent
|
|
82
|
+
* `StoryObj` declarations can infer the component's args
|
|
83
|
+
* precisely.
|
|
84
|
+
*
|
|
85
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md
|
|
86
|
+
*/
|
|
87
|
+
"storybook/meta-satisfies-type"?: TtscLintRuleSetting;
|
|
88
|
+
/**
|
|
89
|
+
* Reject `name` metadata on a story when it matches Storybook's
|
|
90
|
+
* auto-derived name from the export identifier.
|
|
91
|
+
*
|
|
92
|
+
* The explicit value adds boilerplate and drifts from the export
|
|
93
|
+
* when one side is renamed without the other.
|
|
94
|
+
*
|
|
95
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md
|
|
96
|
+
*/
|
|
97
|
+
"storybook/no-redundant-story-name"?: TtscLintRuleSetting;
|
|
98
|
+
/**
|
|
99
|
+
* Reject direct imports from Storybook renderer packages
|
|
100
|
+
* (`@storybook/react`, etc.); use the user-facing package
|
|
101
|
+
* surface.
|
|
102
|
+
*
|
|
103
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-renderer-packages.md
|
|
104
|
+
*/
|
|
105
|
+
"storybook/no-renderer-packages"?: TtscLintRuleSetting;
|
|
106
|
+
/**
|
|
107
|
+
* Reject the legacy `storiesOf(...)` builder API.
|
|
108
|
+
*
|
|
109
|
+
* Storybook 7 removed it in favour of CSF default-export metadata;
|
|
110
|
+
* remaining uses block the migration to CSF3 and the modern
|
|
111
|
+
* indexer.
|
|
112
|
+
*
|
|
113
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md
|
|
114
|
+
*/
|
|
115
|
+
"storybook/no-stories-of"?: TtscLintRuleSetting;
|
|
116
|
+
/**
|
|
117
|
+
* Reject the `title` property in CSF meta when the project uses
|
|
118
|
+
* Storybook's auto-title generation.
|
|
119
|
+
*
|
|
120
|
+
* CSF3 derives the title from the file path, so an explicit
|
|
121
|
+
* `title` is redundant and drifts from the on-disk layout when
|
|
122
|
+
* files are moved.
|
|
123
|
+
*
|
|
124
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md
|
|
125
|
+
*/
|
|
126
|
+
"storybook/no-title-property-in-meta"?: TtscLintRuleSetting;
|
|
127
|
+
/**
|
|
128
|
+
* Validate Storybook addon names against the project's
|
|
129
|
+
* dependencies, so misspelled addon ids surface at lint time.
|
|
130
|
+
*
|
|
131
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md
|
|
132
|
+
*/
|
|
133
|
+
"storybook/no-uninstalled-addons"?: TtscLintRuleOptionsSetting<ITtscLintStorybookNoUninstalledAddonsRuleOptions>;
|
|
134
|
+
/**
|
|
135
|
+
* Require named story exports to use PascalCase.
|
|
136
|
+
*
|
|
137
|
+
* Storybook derives the displayed story name from the export
|
|
138
|
+
* identifier and inserts spaces at case boundaries, so
|
|
139
|
+
* non-PascalCase exports render with awkward or merged labels in
|
|
140
|
+
* the sidebar.
|
|
141
|
+
*
|
|
142
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md
|
|
143
|
+
*/
|
|
144
|
+
"storybook/prefer-pascal-case"?: TtscLintRuleSetting;
|
|
145
|
+
/**
|
|
146
|
+
* Require every story file to export at least one named story
|
|
147
|
+
* alongside the default meta.
|
|
148
|
+
*
|
|
149
|
+
* A file with only the default export contributes nothing to the
|
|
150
|
+
* sidebar and usually means a story was deleted but the file was
|
|
151
|
+
* not.
|
|
152
|
+
*
|
|
153
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md
|
|
154
|
+
*/
|
|
155
|
+
"storybook/story-exports"?: TtscLintRuleSetting;
|
|
156
|
+
/**
|
|
157
|
+
* Require `expect` to be imported from `@storybook/test` in play
|
|
158
|
+
* functions, not from Jest.
|
|
159
|
+
*
|
|
160
|
+
* The Storybook re-export is built for the browser interactions
|
|
161
|
+
* runner; Jest's `expect` ships only Node-only matchers and throws
|
|
162
|
+
* when the play function executes in a browser preview.
|
|
163
|
+
*
|
|
164
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md
|
|
165
|
+
*/
|
|
166
|
+
"storybook/use-storybook-expect"?: TtscLintRuleSetting;
|
|
167
|
+
/**
|
|
168
|
+
* Reject direct Testing Library imports inside story files;
|
|
169
|
+
* use the Storybook-bundled re-exports.
|
|
170
|
+
*
|
|
171
|
+
* @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md
|
|
172
|
+
*/
|
|
173
|
+
"storybook/use-storybook-testing-library"?: TtscLintRuleSetting;
|
|
174
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintStorybookRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintStorybookRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* TanStack Query rules from `@tanstack/eslint-plugin-query`.
|
|
4
|
+
*
|
|
5
|
+
* Guards the ergonomic and correctness contracts of TanStack Query
|
|
6
|
+
* (`useQuery`, `useMutation`, query-options factories) inside React
|
|
7
|
+
* TypeScript sources.
|
|
8
|
+
*
|
|
9
|
+
* @reference https://github.com/TanStack/query/tree/main/packages/eslint-plugin-query
|
|
10
|
+
*/
|
|
11
|
+
export interface ITtscLintTanstackQueryRules {
|
|
12
|
+
/**
|
|
13
|
+
* Require TanStack Query `queryKey` arrays to include every
|
|
14
|
+
* variable read by the `queryFn` body, mirroring React Hooks
|
|
15
|
+
* dependency tracking.
|
|
16
|
+
*
|
|
17
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/exhaustive-deps
|
|
18
|
+
*/
|
|
19
|
+
"tanstack-query/exhaustive-deps"?: TtscLintRuleSetting;
|
|
20
|
+
/**
|
|
21
|
+
* Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam`
|
|
22
|
+
* inside `useInfiniteQuery` to appear in the order TanStack Query
|
|
23
|
+
* documents.
|
|
24
|
+
*
|
|
25
|
+
* Type inference flows through these callbacks in sequence, so a
|
|
26
|
+
* reordered options object widens the page-param type to
|
|
27
|
+
* `unknown`.
|
|
28
|
+
*
|
|
29
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order
|
|
30
|
+
*/
|
|
31
|
+
"tanstack-query/infinite-query-property-order"?: TtscLintRuleSetting;
|
|
32
|
+
/**
|
|
33
|
+
* Require `useMutation` callbacks to declare `onMutate` before
|
|
34
|
+
* `onError` and `onSettled`.
|
|
35
|
+
*
|
|
36
|
+
* The options object's type inference threads the `onMutate`
|
|
37
|
+
* return value into the later callbacks' `context` parameter,
|
|
38
|
+
* which collapses to `unknown` when the order is wrong.
|
|
39
|
+
*
|
|
40
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/mutation-property-order
|
|
41
|
+
*/
|
|
42
|
+
"tanstack-query/mutation-property-order"?: TtscLintRuleSetting;
|
|
43
|
+
/**
|
|
44
|
+
* Reject `...rest` destructuring on TanStack Query hook results.
|
|
45
|
+
*
|
|
46
|
+
* The result object is a tracked proxy that only re-renders for
|
|
47
|
+
* the fields you read; rest-destructuring touches every field,
|
|
48
|
+
* subscribes the component to all of them, and disables that
|
|
49
|
+
* optimization.
|
|
50
|
+
*
|
|
51
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring
|
|
52
|
+
*/
|
|
53
|
+
"tanstack-query/no-rest-destructuring"?: TtscLintRuleSetting;
|
|
54
|
+
/**
|
|
55
|
+
* Reject passing entire TanStack Query hook results into React
|
|
56
|
+
* dependency arrays.
|
|
57
|
+
*
|
|
58
|
+
* The returned object is a fresh reference on every render, so
|
|
59
|
+
* `useEffect` / `useMemo` / `useCallback` would re-run
|
|
60
|
+
* unconditionally; depend on the specific fields you read instead.
|
|
61
|
+
*
|
|
62
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
|
|
63
|
+
*/
|
|
64
|
+
"tanstack-query/no-unstable-deps"?: TtscLintRuleSetting;
|
|
65
|
+
/**
|
|
66
|
+
* Reject `queryFn` callbacks that resolve to `void`.
|
|
67
|
+
*
|
|
68
|
+
* The return value is what TanStack Query caches and exposes as
|
|
69
|
+
* `data`; a void implementation always populates the cache with
|
|
70
|
+
* `undefined` and almost always indicates a forgotten `return`.
|
|
71
|
+
*
|
|
72
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
|
|
73
|
+
*/
|
|
74
|
+
"tanstack-query/no-void-query-fn"?: TtscLintRuleSetting;
|
|
75
|
+
/**
|
|
76
|
+
* Prefer wrapping query options in the `queryOptions()` helper
|
|
77
|
+
* over inline `{ queryKey, queryFn }` literals.
|
|
78
|
+
*
|
|
79
|
+
* The helper co-locates key and fetcher, lets
|
|
80
|
+
* `queryClient.getQueryData` and `setQueryData` share the same
|
|
81
|
+
* typed key, and prevents the same key being paired with two
|
|
82
|
+
* different `queryFn`s.
|
|
83
|
+
*
|
|
84
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/prefer-query-options
|
|
85
|
+
*/
|
|
86
|
+
"tanstack-query/prefer-query-options"?: TtscLintRuleSetting;
|
|
87
|
+
/**
|
|
88
|
+
* Reject creating a `QueryClient` inside a React component or
|
|
89
|
+
* hook body — the client must be stable across renders.
|
|
90
|
+
*
|
|
91
|
+
* @reference https://tanstack.com/query/latest/docs/eslint/stable-query-client
|
|
92
|
+
*/
|
|
93
|
+
"tanstack-query/stable-query-client"?: TtscLintRuleSetting;
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintTanstackQueryRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintTanstackQueryRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options shape for the configurable rules in
|
|
3
|
+
* {@link ITtscLintTestingLibraryRules}. Only
|
|
4
|
+
* `testing-library/consistent-data-testid` accepts options today.
|
|
5
|
+
*
|
|
6
|
+
* @reference https://github.com/testing-library/eslint-plugin-testing-library
|
|
7
|
+
*/
|
|
8
|
+
/** `testing-library/consistent-data-testid` rule options. */
|
|
9
|
+
export interface ITtscLintTestingLibraryConsistentDataTestIdRuleOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Regular expression string every configured test-id attribute value
|
|
12
|
+
* must match. `{fileName}` is replaced with the basename before the
|
|
13
|
+
* first dot.
|
|
14
|
+
*/
|
|
15
|
+
testIdPattern: string;
|
|
16
|
+
/**
|
|
17
|
+
* Test-id attribute name, or names, to validate.
|
|
18
|
+
*
|
|
19
|
+
* @default "data-testid"
|
|
20
|
+
*/
|
|
21
|
+
testIdAttribute?: string | readonly string[];
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Options shape for the configurable rules in
|
|
4
|
+
* {@link ITtscLintTestingLibraryRules}. Only
|
|
5
|
+
* `testing-library/consistent-data-testid` accepts options today.
|
|
6
|
+
*
|
|
7
|
+
* @reference https://github.com/testing-library/eslint-plugin-testing-library
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=ITtscLintTestingLibraryRuleOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintTestingLibraryRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|