@ttsc/lint 0.13.1 → 0.14.0-dev.20260528.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +35 -10
- 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/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 +152 -31
- package/linthost/fix.go +2 -2
- 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 +4 -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 +40 -16
- 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,188 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Promise correctness and style rules from `eslint-plugin-promise`.
|
|
4
|
+
*
|
|
5
|
+
* Checks the chain shape of Promise-using code: every chain ends
|
|
6
|
+
* with `catch`, no callback inside a `then`, no nested
|
|
7
|
+
* `.then().then()`, and so on.
|
|
8
|
+
*
|
|
9
|
+
* AST-local only — type-aware Promise checks belong with
|
|
10
|
+
* `typescript/*` checker rules.
|
|
11
|
+
*
|
|
12
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise
|
|
13
|
+
*/
|
|
14
|
+
export interface ITtscLintPromiseRules {
|
|
15
|
+
/**
|
|
16
|
+
* Require every `then()` callback to either `return` a value or
|
|
17
|
+
* `throw`.
|
|
18
|
+
*
|
|
19
|
+
* A callback that does neither breaks the chain by returning
|
|
20
|
+
* `undefined`.
|
|
21
|
+
*
|
|
22
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md
|
|
23
|
+
*/
|
|
24
|
+
"promise/always-return"?: TtscLintRuleSetting;
|
|
25
|
+
/**
|
|
26
|
+
* Reject every `new Promise(...)` construction. Most modern code
|
|
27
|
+
* can use `async`/`await` or existing Promise-returning APIs.
|
|
28
|
+
*
|
|
29
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md
|
|
30
|
+
*/
|
|
31
|
+
"promise/avoid-new"?: TtscLintRuleSetting;
|
|
32
|
+
/**
|
|
33
|
+
* Require unreturned promise chains to terminate with `catch()`
|
|
34
|
+
* so unhandled rejections cannot escape.
|
|
35
|
+
*
|
|
36
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md
|
|
37
|
+
*/
|
|
38
|
+
"promise/catch-or-return"?: TtscLintRuleSetting;
|
|
39
|
+
/**
|
|
40
|
+
* Reject direct invocation of an error-first callback inside a
|
|
41
|
+
* `then()` or `catch()` handler.
|
|
42
|
+
*
|
|
43
|
+
* Synchronously calling the callback from a promise handler can
|
|
44
|
+
* re-enter it on both the fulfilled and rejected paths. Upstream
|
|
45
|
+
* guidance: defer via `setImmediate`/`process.nextTick` if a
|
|
46
|
+
* callback bridge is genuinely required.
|
|
47
|
+
*
|
|
48
|
+
* Also flags `.then(callback)` / `.catch(callback)` calls whose
|
|
49
|
+
* handler argument is a bare callback-shaped identifier
|
|
50
|
+
* (`callback`, `cb`, `next`, `done`).
|
|
51
|
+
*
|
|
52
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md
|
|
53
|
+
*/
|
|
54
|
+
"promise/no-callback-in-promise"?: TtscLintRuleSetting;
|
|
55
|
+
/**
|
|
56
|
+
* Detect Promise executor bodies with more than one resolve/reject
|
|
57
|
+
* call. The native rule does not yet model branch exclusivity —
|
|
58
|
+
* bodies whose calls are split across mutually exclusive branches
|
|
59
|
+
* will be flagged too.
|
|
60
|
+
*
|
|
61
|
+
* The second call is silently ignored, but the surrounding logic
|
|
62
|
+
* almost always assumed short-circuit.
|
|
63
|
+
*
|
|
64
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md
|
|
65
|
+
*/
|
|
66
|
+
"promise/no-multiple-resolved"?: TtscLintRuleSetting;
|
|
67
|
+
/**
|
|
68
|
+
* Require every file that uses `Promise` to import or require the
|
|
69
|
+
* implementation explicitly, instead of reaching the native global.
|
|
70
|
+
*
|
|
71
|
+
* Useful for projects that substitute Bluebird or another library
|
|
72
|
+
* and want the choice grep-visible per file.
|
|
73
|
+
*
|
|
74
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md
|
|
75
|
+
*/
|
|
76
|
+
"promise/no-native"?: TtscLintRuleSetting;
|
|
77
|
+
/**
|
|
78
|
+
* Reject nested `then()`/`catch()` calls inside the body of a
|
|
79
|
+
* Promise callback. Use chained `.then()` instead.
|
|
80
|
+
*
|
|
81
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md
|
|
82
|
+
*/
|
|
83
|
+
"promise/no-nesting"?: TtscLintRuleSetting;
|
|
84
|
+
/**
|
|
85
|
+
* Reject `new` applied to Promise statics such as
|
|
86
|
+
* `new Promise.resolve(x)`, `new Promise.all([...])`, or
|
|
87
|
+
* `new Promise.race([...])`.
|
|
88
|
+
*
|
|
89
|
+
* The statics are plain functions, so `new` throws a `TypeError`
|
|
90
|
+
* at runtime — caught here before the call ships.
|
|
91
|
+
*
|
|
92
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md
|
|
93
|
+
*/
|
|
94
|
+
"promise/no-new-statics"?: TtscLintRuleSetting;
|
|
95
|
+
/**
|
|
96
|
+
* Reject building a promise chain inside the body of an
|
|
97
|
+
* error-first callback.
|
|
98
|
+
*
|
|
99
|
+
* The callback already owns an error channel, so layering
|
|
100
|
+
* `.then()`/`.catch()` on top creates two incompatible failure
|
|
101
|
+
* pipelines. Upstream advice: promisify the outer API instead.
|
|
102
|
+
*
|
|
103
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md
|
|
104
|
+
*/
|
|
105
|
+
"promise/no-promise-in-callback"?: TtscLintRuleSetting;
|
|
106
|
+
/**
|
|
107
|
+
* Reject `return` from inside a `finally()` callback.
|
|
108
|
+
*
|
|
109
|
+
* The chain's resolved value comes from the prior `then`/`catch`,
|
|
110
|
+
* so any value returned from `finally` is discarded — usually
|
|
111
|
+
* signals confusion about where the chain's value comes from.
|
|
112
|
+
*
|
|
113
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md
|
|
114
|
+
*/
|
|
115
|
+
"promise/no-return-in-finally"?: TtscLintRuleSetting;
|
|
116
|
+
/**
|
|
117
|
+
* Reject `return Promise.resolve(x)` and `return
|
|
118
|
+
* Promise.reject(x)` inside promise callbacks; return the bare
|
|
119
|
+
* value or `throw` instead.
|
|
120
|
+
*
|
|
121
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md
|
|
122
|
+
*/
|
|
123
|
+
"promise/no-return-wrap"?: TtscLintRuleSetting;
|
|
124
|
+
/**
|
|
125
|
+
* Enforce canonical parameter names (`resolve`, `reject`) on
|
|
126
|
+
* Promise executor functions.
|
|
127
|
+
*
|
|
128
|
+
* Consistent names make executor bodies greppable and prevent
|
|
129
|
+
* accidental shadowing of the outer `resolve` symbol.
|
|
130
|
+
*
|
|
131
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md
|
|
132
|
+
*/
|
|
133
|
+
"promise/param-names"?: TtscLintRuleSetting;
|
|
134
|
+
/**
|
|
135
|
+
* Flag continuation-passing callback shapes (last parameter is a
|
|
136
|
+
* function and an error-first invocation pattern is detected),
|
|
137
|
+
* suggesting an `async`/`await` rewrite.
|
|
138
|
+
*
|
|
139
|
+
* Intended for codebases that have already migrated their I/O
|
|
140
|
+
* surface to promises and want to keep callers consistent.
|
|
141
|
+
*
|
|
142
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md
|
|
143
|
+
*/
|
|
144
|
+
"promise/prefer-await-to-callbacks"?: TtscLintRuleSetting;
|
|
145
|
+
/**
|
|
146
|
+
* Prefer `await` over explicit `.then()`/`.catch()`/`.finally()`
|
|
147
|
+
* chains inside `async` functions.
|
|
148
|
+
*
|
|
149
|
+
* Sequential awaits compose more naturally with try/catch and
|
|
150
|
+
* avoid the indentation creep of deeply nested handlers.
|
|
151
|
+
*
|
|
152
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md
|
|
153
|
+
*/
|
|
154
|
+
"promise/prefer-await-to-then"?: TtscLintRuleSetting;
|
|
155
|
+
/**
|
|
156
|
+
* Prefer `.catch(handler)` over the two-argument form
|
|
157
|
+
* `.then(onFulfilled, onRejected)`.
|
|
158
|
+
*
|
|
159
|
+
* The two-argument shape skips rejections raised inside
|
|
160
|
+
* `onFulfilled`, which surprises readers and hides errors from
|
|
161
|
+
* logging middleware.
|
|
162
|
+
*
|
|
163
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md
|
|
164
|
+
*/
|
|
165
|
+
"promise/prefer-catch"?: TtscLintRuleSetting;
|
|
166
|
+
/**
|
|
167
|
+
* Reject non-standard `Promise` statics such as `Promise.done`,
|
|
168
|
+
* `Promise.spread`, or library-specific extensions shimmed onto
|
|
169
|
+
* the global.
|
|
170
|
+
*
|
|
171
|
+
* Sticking to spec methods keeps code portable across Promise
|
|
172
|
+
* implementations.
|
|
173
|
+
*
|
|
174
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md
|
|
175
|
+
*/
|
|
176
|
+
"promise/spec-only"?: TtscLintRuleSetting;
|
|
177
|
+
/**
|
|
178
|
+
* Enforce the argument counts the Promise spec defines for each
|
|
179
|
+
* method — `Promise.all`/`Promise.race` take exactly one argument,
|
|
180
|
+
* `Promise.resolve`/`Promise.reject` take zero or one, `.then`
|
|
181
|
+
* takes one or two, `.catch`/`.finally` take exactly one.
|
|
182
|
+
*
|
|
183
|
+
* Extra or missing arguments usually indicate a misread of the API.
|
|
184
|
+
*
|
|
185
|
+
* @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md
|
|
186
|
+
*/
|
|
187
|
+
"promise/valid-params"?: TtscLintRuleSetting;
|
|
188
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintPromiseRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintPromiseRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared options shape for every rule in {@link ITtscLintReactPerfRules}.
|
|
3
|
+
*
|
|
4
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf
|
|
5
|
+
*/
|
|
6
|
+
/** `react-perf/*` rule options. */
|
|
7
|
+
export interface ITtscLintReactPerfRuleOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Controls which intrinsic JSX element props are ignored.
|
|
10
|
+
*
|
|
11
|
+
* `"all"` ignores every prop on lowercase / native elements such as
|
|
12
|
+
* `div`. An array ignores only those prop names on native elements,
|
|
13
|
+
* for example `["style"]`. Custom components are still checked.
|
|
14
|
+
*
|
|
15
|
+
* @default [] (native props are checked)
|
|
16
|
+
*/
|
|
17
|
+
nativeAllowList?: "all" | readonly string[];
|
|
18
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared options shape for every rule in {@link ITtscLintReactPerfRules}.
|
|
4
|
+
*
|
|
5
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=ITtscLintReactPerfRuleOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintReactPerfRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactPerfRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ITtscLintReactPerfRuleOptions } from "./ITtscLintReactPerfRuleOptions";
|
|
2
|
+
import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
|
|
3
|
+
/**
|
|
4
|
+
* React JSX performance rules from `eslint-plugin-react-perf`.
|
|
5
|
+
*
|
|
6
|
+
* Detects freshly-allocated reference values (arrays, objects,
|
|
7
|
+
* functions, JSX elements) passed as JSX props. A new reference
|
|
8
|
+
* invalidates `React.memo` / `useMemo` shallow checks on every
|
|
9
|
+
* render. Useful for performance-critical render paths; usually
|
|
10
|
+
* unnecessary for top-level pages.
|
|
11
|
+
*
|
|
12
|
+
* Diagnostics only fire on `.tsx` source files — JSX heuristics rely
|
|
13
|
+
* on the file extension, so `.ts` files are skipped even when they
|
|
14
|
+
* contain JSX-like syntax.
|
|
15
|
+
*
|
|
16
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf
|
|
17
|
+
*/
|
|
18
|
+
export interface ITtscLintReactPerfRules {
|
|
19
|
+
/**
|
|
20
|
+
* Reject array literals (`[...]`) passed inline as a JSX prop.
|
|
21
|
+
* Hoist the array outside the render or stabilize it with
|
|
22
|
+
* `useMemo`.
|
|
23
|
+
*
|
|
24
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-array-as-prop.md
|
|
25
|
+
*/
|
|
26
|
+
"react-perf/jsx-no-new-array-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
27
|
+
/**
|
|
28
|
+
* Reject inline `function` expressions / arrow functions passed
|
|
29
|
+
* as a JSX prop. Stabilize with `useCallback`.
|
|
30
|
+
*
|
|
31
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-function-as-prop.md
|
|
32
|
+
*/
|
|
33
|
+
"react-perf/jsx-no-new-function-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
34
|
+
/**
|
|
35
|
+
* Reject inline object literals (`{...}`) passed as a JSX prop.
|
|
36
|
+
*
|
|
37
|
+
* A fresh object on every render invalidates the shallow-equal
|
|
38
|
+
* check used by `React.memo` and `useMemo` consumers, so any
|
|
39
|
+
* downstream memoization keyed on that prop is wasted.
|
|
40
|
+
*
|
|
41
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-object-as-prop.md
|
|
42
|
+
*/
|
|
43
|
+
"react-perf/jsx-no-new-object-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
44
|
+
/**
|
|
45
|
+
* Reject JSX expressions and fragments passed as a JSX prop —
|
|
46
|
+
* each evaluation creates a new React element.
|
|
47
|
+
*
|
|
48
|
+
* @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-jsx-as-prop.md
|
|
49
|
+
*/
|
|
50
|
+
"react-perf/jsx-no-jsx-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintReactPerfRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactPerfRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options shapes for the configurable rules in
|
|
3
|
+
* {@link ITtscLintReactRules}.
|
|
4
|
+
*
|
|
5
|
+
* Currently only `react/only-export-components` (from
|
|
6
|
+
* `eslint-plugin-react-refresh`) accepts options.
|
|
7
|
+
*
|
|
8
|
+
* @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh
|
|
9
|
+
*/
|
|
10
|
+
/** `react/only-export-components` rule options. */
|
|
11
|
+
export interface ITtscLintReactOnlyExportComponentsRuleOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Extra higher-order component names that wrap component exports.
|
|
14
|
+
*
|
|
15
|
+
* @default []
|
|
16
|
+
*/
|
|
17
|
+
extraHOCs?: readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* Export names the active framework handles during refresh, such as
|
|
20
|
+
* route metadata exports.
|
|
21
|
+
*
|
|
22
|
+
* @default []
|
|
23
|
+
*/
|
|
24
|
+
allowExportNames?: readonly string[];
|
|
25
|
+
/**
|
|
26
|
+
* Permit literal / string / boolean / template / binary constant
|
|
27
|
+
* exports alongside component exports.
|
|
28
|
+
*
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
allowConstantExport?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Also scan JavaScript files that import React. TSX files are always
|
|
34
|
+
* scanned.
|
|
35
|
+
*
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
checkJS?: boolean;
|
|
39
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Options shapes for the configurable rules in
|
|
4
|
+
* {@link ITtscLintReactRules}.
|
|
5
|
+
*
|
|
6
|
+
* Currently only `react/only-export-components` (from
|
|
7
|
+
* `eslint-plugin-react-refresh`) accepts options.
|
|
8
|
+
*
|
|
9
|
+
* @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=ITtscLintReactRuleOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintReactRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
|
|
2
|
+
import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
3
|
+
/**
|
|
4
|
+
* React TSX rules.
|
|
5
|
+
*
|
|
6
|
+
* Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`,
|
|
7
|
+
* and `eslint-plugin-react-refresh` under one namespace, matching
|
|
8
|
+
* Oxlint's `react/*` plugin layout. Performance-only rules live in a
|
|
9
|
+
* separate {@link ITtscLintReactPerfRules} family because they are
|
|
10
|
+
* opt-in toggles rather than correctness checks.
|
|
11
|
+
*
|
|
12
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react
|
|
13
|
+
*/
|
|
14
|
+
export interface ITtscLintReactRules {
|
|
15
|
+
/**
|
|
16
|
+
* Require explicit, valid `type` values on JSX `<button>` elements
|
|
17
|
+
* (`"button"`, `"submit"`, `"reset"`) — the HTML default of
|
|
18
|
+
* `"submit"` causes accidental form submissions.
|
|
19
|
+
*
|
|
20
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md
|
|
21
|
+
*/
|
|
22
|
+
"react/button-has-type"?: TtscLintRuleSetting;
|
|
23
|
+
/**
|
|
24
|
+
* Require components wrapped in `React.memo(...)` or
|
|
25
|
+
* `React.forwardRef(...)` to be named — either by passing a named
|
|
26
|
+
* function, assigning the call to a named binding, or setting an
|
|
27
|
+
* explicit `displayName`.
|
|
28
|
+
*
|
|
29
|
+
* Anonymous wrappers leave the resulting component nameless in
|
|
30
|
+
* React DevTools and runtime stack frames.
|
|
31
|
+
*
|
|
32
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
|
|
33
|
+
*/
|
|
34
|
+
"react/display-name"?: TtscLintRuleSetting;
|
|
35
|
+
/**
|
|
36
|
+
* Detect high-confidence missing identifiers in React Hook
|
|
37
|
+
* dependency arrays (`useEffect`, `useLayoutEffect`,
|
|
38
|
+
* `useInsertionEffect`, `useMemo`, `useCallback`).
|
|
39
|
+
*
|
|
40
|
+
* @reference https://react.dev/reference/react/useEffect#specifying-reactive-dependencies
|
|
41
|
+
*/
|
|
42
|
+
"react/exhaustive-deps"?: TtscLintRuleSetting;
|
|
43
|
+
/**
|
|
44
|
+
* Reject declaring a component or custom Hook inside another
|
|
45
|
+
* component or Hook body.
|
|
46
|
+
*
|
|
47
|
+
* Each render rebuilds the inner function, giving it a new
|
|
48
|
+
* identity that discards its state and breaks memoization.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
51
|
+
*/
|
|
52
|
+
"react/component-hook-factories"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Require JSX `<iframe>` elements to declare a `sandbox` attribute,
|
|
55
|
+
* which restricts what embedded content can do (scripts, forms,
|
|
56
|
+
* navigation).
|
|
57
|
+
*
|
|
58
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md
|
|
59
|
+
*/
|
|
60
|
+
"react/iframe-missing-sandbox"?: TtscLintRuleSetting;
|
|
61
|
+
/**
|
|
62
|
+
* Reject mutating props, state, or Hook return values inside a
|
|
63
|
+
* component or Hook.
|
|
64
|
+
*
|
|
65
|
+
* React treats these as read-only; mutating a memoized value can
|
|
66
|
+
* desync renders from the dependencies React tracked it under.
|
|
67
|
+
*
|
|
68
|
+
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
69
|
+
*/
|
|
70
|
+
"react/immutability"?: TtscLintRuleSetting;
|
|
71
|
+
/**
|
|
72
|
+
* Require `key` props on JSX elements produced from arrays or
|
|
73
|
+
* `.map(...)` calls — React uses the key to track list identity
|
|
74
|
+
* across renders.
|
|
75
|
+
*
|
|
76
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md
|
|
77
|
+
*/
|
|
78
|
+
"react/jsx-key"?: TtscLintRuleSetting;
|
|
79
|
+
/**
|
|
80
|
+
* Reject duplicate JSX prop names on the same element — later
|
|
81
|
+
* occurrences silently overwrite earlier ones.
|
|
82
|
+
*
|
|
83
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md
|
|
84
|
+
*/
|
|
85
|
+
"react/jsx-no-duplicate-props"?: TtscLintRuleSetting;
|
|
86
|
+
/**
|
|
87
|
+
* Reject `javascript:` URLs in JSX URL-like props such as `href`
|
|
88
|
+
* and `src`.
|
|
89
|
+
*
|
|
90
|
+
* Such URLs evaluate the URL body as script — the same
|
|
91
|
+
* code-execution surface as `eval`, and a common XSS vector when
|
|
92
|
+
* the value is user-controlled.
|
|
93
|
+
*
|
|
94
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md
|
|
95
|
+
*/
|
|
96
|
+
"react/jsx-no-script-url"?: TtscLintRuleSetting;
|
|
97
|
+
/**
|
|
98
|
+
* Reject `<a target="_blank">` (or any JSX element with
|
|
99
|
+
* `target="_blank"`) that does not also carry `rel="noreferrer"`
|
|
100
|
+
* (or `rel="noopener noreferrer"`).
|
|
101
|
+
*
|
|
102
|
+
* Without those tokens the opened page can navigate the originating
|
|
103
|
+
* window through `window.opener`, a phishing and tab-nabbing vector.
|
|
104
|
+
*
|
|
105
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md
|
|
106
|
+
*/
|
|
107
|
+
"react/jsx-no-target-blank"?: TtscLintRuleSetting;
|
|
108
|
+
/**
|
|
109
|
+
* Reject JSX elements whose tag is an uppercase identifier with no
|
|
110
|
+
* value-level declaration anywhere in the source file.
|
|
111
|
+
*
|
|
112
|
+
* Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are
|
|
113
|
+
* skipped because resolving the outer name requires module-level
|
|
114
|
+
* information that belongs to the type checker.
|
|
115
|
+
*
|
|
116
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md
|
|
117
|
+
*/
|
|
118
|
+
"react/jsx-no-undef"?: TtscLintRuleSetting;
|
|
119
|
+
/**
|
|
120
|
+
* Reject JSX fragments that wrap exactly one element child or have
|
|
121
|
+
* no meaningful content — the child (or nothing) can be returned
|
|
122
|
+
* directly.
|
|
123
|
+
*
|
|
124
|
+
* Covers both the short `<>...</>` form and explicit
|
|
125
|
+
* `<Fragment>` / `<React.Fragment>` elements.
|
|
126
|
+
*
|
|
127
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md
|
|
128
|
+
*/
|
|
129
|
+
"react/jsx-no-useless-fragment"?: TtscLintRuleSetting;
|
|
130
|
+
/**
|
|
131
|
+
* Reject `key={index}` patterns inside JSX lists — array index
|
|
132
|
+
* keys reorder incorrectly on insertion.
|
|
133
|
+
*
|
|
134
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md
|
|
135
|
+
*/
|
|
136
|
+
"react/no-array-index-key"?: TtscLintRuleSetting;
|
|
137
|
+
/**
|
|
138
|
+
* Reject passing children through an explicit `children` JSX prop.
|
|
139
|
+
*
|
|
140
|
+
* The nested-tag form is shorter, mirrors HTML, and avoids the
|
|
141
|
+
* double-children footgun where a `children` prop and nested JSX
|
|
142
|
+
* both target the same slot.
|
|
143
|
+
*
|
|
144
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md
|
|
145
|
+
*/
|
|
146
|
+
"react/no-children-prop"?: TtscLintRuleSetting;
|
|
147
|
+
/**
|
|
148
|
+
* Reject `dangerouslySetInnerHTML` altogether.
|
|
149
|
+
*
|
|
150
|
+
* The prop bypasses React's escaping and injects raw HTML into the
|
|
151
|
+
* DOM — a common XSS vector when the input is not sanitized
|
|
152
|
+
* upstream.
|
|
153
|
+
*
|
|
154
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md
|
|
155
|
+
*/
|
|
156
|
+
"react/no-danger"?: TtscLintRuleSetting;
|
|
157
|
+
/**
|
|
158
|
+
* Reject combining `dangerouslySetInnerHTML` with JSX children
|
|
159
|
+
* — React throws at runtime in this case.
|
|
160
|
+
*
|
|
161
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md
|
|
162
|
+
*/
|
|
163
|
+
"react/no-danger-with-children"?: TtscLintRuleSetting;
|
|
164
|
+
/**
|
|
165
|
+
* Reject direct writes to `this.state` outside constructor
|
|
166
|
+
* initialization. Use `this.setState(...)` instead.
|
|
167
|
+
*
|
|
168
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md
|
|
169
|
+
*/
|
|
170
|
+
"react/no-direct-mutation-state"?: TtscLintRuleSetting;
|
|
171
|
+
/**
|
|
172
|
+
* Reject `findDOMNode(...)` calls.
|
|
173
|
+
*
|
|
174
|
+
* The API is deprecated, blocks future React internals work, and
|
|
175
|
+
* breaks component abstraction by reaching across composition
|
|
176
|
+
* boundaries; attach a `ref` to the target element instead.
|
|
177
|
+
*
|
|
178
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md
|
|
179
|
+
*/
|
|
180
|
+
"react/no-find-dom-node"?: TtscLintRuleSetting;
|
|
181
|
+
/**
|
|
182
|
+
* Reject `this.isMounted()` calls on class components.
|
|
183
|
+
*
|
|
184
|
+
* The API is deprecated, and anti-patterns around it usually hide
|
|
185
|
+
* a memory leak in async callbacks; cancel the work in
|
|
186
|
+
* `componentWillUnmount` instead.
|
|
187
|
+
*
|
|
188
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md
|
|
189
|
+
*/
|
|
190
|
+
"react/no-is-mounted"?: TtscLintRuleSetting;
|
|
191
|
+
/**
|
|
192
|
+
* Reject string-form JSX refs (`ref="myInput"`).
|
|
193
|
+
*
|
|
194
|
+
* The API is legacy, slated for removal, and has well-known issues
|
|
195
|
+
* with static typing, owner tracking, and stale references; use
|
|
196
|
+
* `useRef` or a callback ref instead.
|
|
197
|
+
*
|
|
198
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md
|
|
199
|
+
*/
|
|
200
|
+
"react/no-string-refs"?: TtscLintRuleSetting;
|
|
201
|
+
/**
|
|
202
|
+
* Reject unescaped `>`, `"`, `'`, and `}` characters in JSX
|
|
203
|
+
* text content — they render literally and almost always come
|
|
204
|
+
* from forgotten HTML escaping.
|
|
205
|
+
*
|
|
206
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md
|
|
207
|
+
*/
|
|
208
|
+
"react/no-unescaped-entities"?: TtscLintRuleSetting;
|
|
209
|
+
/**
|
|
210
|
+
* Keep React Fast Refresh component modules from exporting
|
|
211
|
+
* non-component values. Mixing a component export with a
|
|
212
|
+
* constant or hook in the same file invalidates HMR.
|
|
213
|
+
*
|
|
214
|
+
* @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/README.md
|
|
215
|
+
*/
|
|
216
|
+
"react/only-export-components"?: TtscLintRuleOptionsSetting<ITtscLintReactOnlyExportComponentsRuleOptions>;
|
|
217
|
+
/**
|
|
218
|
+
* Reject reading or writing `ref.current` during render.
|
|
219
|
+
*
|
|
220
|
+
* Refs persist mutably across renders without re-rendering, so
|
|
221
|
+
* touching them in render breaks the pure-render contract and
|
|
222
|
+
* produces inconsistent output between render passes.
|
|
223
|
+
*
|
|
224
|
+
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
225
|
+
*/
|
|
226
|
+
"react/refs"?: TtscLintRuleSetting;
|
|
227
|
+
/**
|
|
228
|
+
* Enforce the Rules of Hooks: only call Hooks at the top level
|
|
229
|
+
* of a component or custom Hook, never inside conditionals,
|
|
230
|
+
* loops, or nested functions.
|
|
231
|
+
*
|
|
232
|
+
* @reference https://react.dev/reference/rules/rules-of-hooks
|
|
233
|
+
*/
|
|
234
|
+
"react/rules-of-hooks"?: TtscLintRuleSetting;
|
|
235
|
+
/**
|
|
236
|
+
* Reject unconditional `setState` calls in `useEffect` bodies.
|
|
237
|
+
*
|
|
238
|
+
* The state update schedules another render and re-runs the
|
|
239
|
+
* effect, which usually loops forever; the value almost always
|
|
240
|
+
* belongs in `useMemo` or derived state instead.
|
|
241
|
+
*
|
|
242
|
+
* @reference https://react.dev/learn/you-might-not-need-an-effect
|
|
243
|
+
*/
|
|
244
|
+
"react/set-state-in-effect"?: TtscLintRuleSetting;
|
|
245
|
+
/**
|
|
246
|
+
* Reject calling `setState` during render.
|
|
247
|
+
*
|
|
248
|
+
* Render must stay pure; queuing an update from the render body
|
|
249
|
+
* schedules another render that queues another update, producing
|
|
250
|
+
* an infinite render loop unless guarded by an explicit equality
|
|
251
|
+
* check.
|
|
252
|
+
*
|
|
253
|
+
* @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
|
|
254
|
+
*/
|
|
255
|
+
"react/set-state-in-render"?: TtscLintRuleSetting;
|
|
256
|
+
/**
|
|
257
|
+
* Reject string-form `style` values such as `style="color: red"` or
|
|
258
|
+
* `style={\`...\`}`.
|
|
259
|
+
*
|
|
260
|
+
* React expects a `{ camelCaseProp: value }` object, not the
|
|
261
|
+
* HTML-style CSS string, and the latter is silently coerced and
|
|
262
|
+
* never applied.
|
|
263
|
+
*
|
|
264
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md
|
|
265
|
+
*/
|
|
266
|
+
"react/style-prop-object"?: TtscLintRuleSetting;
|
|
267
|
+
/**
|
|
268
|
+
* Reject `useMemo` calculation callbacks that do not return a
|
|
269
|
+
* value.
|
|
270
|
+
*
|
|
271
|
+
* A block-bodied callback without `return` memoizes `undefined`,
|
|
272
|
+
* silently discarding the intended computation — a common mistake
|
|
273
|
+
* when wrapping an object literal in `{ ... }` instead of
|
|
274
|
+
* `({ ... })`.
|
|
275
|
+
*
|
|
276
|
+
* @reference https://react.dev/reference/react/useMemo
|
|
277
|
+
*/
|
|
278
|
+
"react/use-memo"?: TtscLintRuleSetting;
|
|
279
|
+
/**
|
|
280
|
+
* Reject `children` or `dangerouslySetInnerHTML` on void DOM
|
|
281
|
+
* elements (`<img>`, `<br>`, `<input>`, etc.).
|
|
282
|
+
*
|
|
283
|
+
* Void elements have no content model, so React throws at render
|
|
284
|
+
* time when you try to give them any.
|
|
285
|
+
*
|
|
286
|
+
* @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md
|
|
287
|
+
*/
|
|
288
|
+
"react/void-dom-elements-no-children"?: TtscLintRuleSetting;
|
|
289
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintReactRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactRules.ts"],"names":[],"mappings":""}
|