@ttsc/lint 0.13.1 → 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 +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,190 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Regular-expression rules from `eslint-plugin-regexp`.
|
|
4
|
+
*
|
|
5
|
+
* These rules check the structure of regex literals — emptiness,
|
|
6
|
+
* uselessness, flag ordering, shorthand classes, Unicode support.
|
|
7
|
+
*
|
|
8
|
+
* Some rules duplicate (and supersede) the regex-related rules in
|
|
9
|
+
* {@link ITtscLintCoreRules}; both ids exist so projects can keep
|
|
10
|
+
* the legacy ESLint names alongside the regexp-plugin variants.
|
|
11
|
+
*
|
|
12
|
+
* @reference https://github.com/ota-meshi/eslint-plugin-regexp
|
|
13
|
+
*/
|
|
14
|
+
export interface ITtscLintRegexpRules {
|
|
15
|
+
/**
|
|
16
|
+
* Reject ASCII control characters in regex literals. Alias of
|
|
17
|
+
* the bare core check.
|
|
18
|
+
*
|
|
19
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html
|
|
20
|
+
*/
|
|
21
|
+
"regexp/no-control-character"?: TtscLintRuleSetting;
|
|
22
|
+
/**
|
|
23
|
+
* Reject duplicate literal characters inside simple regex
|
|
24
|
+
* character classes (`/[aa]/`).
|
|
25
|
+
*
|
|
26
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html
|
|
27
|
+
*/
|
|
28
|
+
"regexp/no-dupe-characters-character-class"?: TtscLintRuleSetting;
|
|
29
|
+
/**
|
|
30
|
+
* Reject empty alternatives in a disjunction (`/a||b/`), which
|
|
31
|
+
* silently match the empty string.
|
|
32
|
+
*
|
|
33
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html
|
|
34
|
+
*/
|
|
35
|
+
"regexp/no-empty-alternative"?: TtscLintRuleSetting;
|
|
36
|
+
/**
|
|
37
|
+
* Reject empty capturing groups such as `/()/`.
|
|
38
|
+
*
|
|
39
|
+
* The group shifts the numbering of every later backreference and
|
|
40
|
+
* capture slot while only ever capturing the empty string — almost
|
|
41
|
+
* always a leftover from an unfinished edit.
|
|
42
|
+
*
|
|
43
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html
|
|
44
|
+
*/
|
|
45
|
+
"regexp/no-empty-capturing-group"?: TtscLintRuleSetting;
|
|
46
|
+
/**
|
|
47
|
+
* Reject empty regex character classes (`[]`). Alias of the
|
|
48
|
+
* bare core check.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
|
|
51
|
+
*/
|
|
52
|
+
"regexp/no-empty-character-class"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Reject empty non-capturing groups such as `/(?:)/`.
|
|
55
|
+
*
|
|
56
|
+
* The group contributes nothing to the match and is virtually always
|
|
57
|
+
* a leftover from a deleted inner pattern.
|
|
58
|
+
*
|
|
59
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
|
|
60
|
+
*/
|
|
61
|
+
"regexp/no-empty-group"?: TtscLintRuleSetting;
|
|
62
|
+
/**
|
|
63
|
+
* Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
|
|
64
|
+
*
|
|
65
|
+
* An empty positive lookaround always matches; an empty negative
|
|
66
|
+
* lookaround never matches. The assertion either collapses to a
|
|
67
|
+
* no-op or breaks the surrounding pattern.
|
|
68
|
+
*
|
|
69
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
|
|
70
|
+
*/
|
|
71
|
+
"regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
|
|
72
|
+
/**
|
|
73
|
+
* Reject misleading Unicode characters in regex classes. Alias
|
|
74
|
+
* of the bare misleading-character check.
|
|
75
|
+
*
|
|
76
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
|
|
77
|
+
*/
|
|
78
|
+
"regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
|
|
79
|
+
/**
|
|
80
|
+
* Reject single-character character classes such as `/[x]/`
|
|
81
|
+
* — `/x/` is equivalent.
|
|
82
|
+
*
|
|
83
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
|
|
84
|
+
*/
|
|
85
|
+
"regexp/no-useless-character-class"?: TtscLintRuleSetting;
|
|
86
|
+
/**
|
|
87
|
+
* Reject unnecessary escapes inside regex literals. Alias of
|
|
88
|
+
* core `no-useless-escape` for regex contexts.
|
|
89
|
+
*
|
|
90
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
|
|
91
|
+
*/
|
|
92
|
+
"regexp/no-useless-escape"?: TtscLintRuleSetting;
|
|
93
|
+
/**
|
|
94
|
+
* Reject regex flags that the literal does not exercise — `i` on
|
|
95
|
+
* a pattern without case-variable characters, `m` without `^`/`$`,
|
|
96
|
+
* `s` without `.`, and similar dead flags on `g`/`y`.
|
|
97
|
+
*
|
|
98
|
+
* Cleans up flag combos that suggest behavior the pattern can never
|
|
99
|
+
* trigger.
|
|
100
|
+
*
|
|
101
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
|
|
102
|
+
*/
|
|
103
|
+
"regexp/no-useless-flag"?: TtscLintRuleSetting;
|
|
104
|
+
/**
|
|
105
|
+
* Reject quantifiers that do not change the match — constant-one
|
|
106
|
+
* counts (`/a{1}/`), `?` on patterns already matching the empty
|
|
107
|
+
* string (`/(?:a+|b*)?/`), and quantifiers on non-consuming
|
|
108
|
+
* atoms (`/(?:\b)+/`).
|
|
109
|
+
*
|
|
110
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
|
|
111
|
+
*/
|
|
112
|
+
"regexp/no-useless-quantifier"?: TtscLintRuleSetting;
|
|
113
|
+
/**
|
|
114
|
+
* Reject equal min/max quantifiers (`/a{2,2}/`) in favor of
|
|
115
|
+
* `/a{2}/`.
|
|
116
|
+
*
|
|
117
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
|
|
118
|
+
*/
|
|
119
|
+
"regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
|
|
120
|
+
/**
|
|
121
|
+
* Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom
|
|
122
|
+
* never matches, so the quantifier is either dead code or a typo
|
|
123
|
+
* for `{1,…}`.
|
|
124
|
+
*
|
|
125
|
+
* The fix is normally to delete the atom or correct the upper
|
|
126
|
+
* bound.
|
|
127
|
+
*
|
|
128
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
|
|
129
|
+
*/
|
|
130
|
+
"regexp/no-zero-quantifier"?: TtscLintRuleSetting;
|
|
131
|
+
/**
|
|
132
|
+
* Prefer `\d` over `[0-9]` in regex literals.
|
|
133
|
+
*
|
|
134
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html
|
|
135
|
+
*/
|
|
136
|
+
"regexp/prefer-d"?: TtscLintRuleSetting;
|
|
137
|
+
/**
|
|
138
|
+
* Prefer `+` over `{1,}` in regex literals.
|
|
139
|
+
*
|
|
140
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html
|
|
141
|
+
*/
|
|
142
|
+
"regexp/prefer-plus-quantifier"?: TtscLintRuleSetting;
|
|
143
|
+
/**
|
|
144
|
+
* Prefer `?` over `{0,1}` in regex literals.
|
|
145
|
+
*
|
|
146
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html
|
|
147
|
+
*/
|
|
148
|
+
"regexp/prefer-question-quantifier"?: TtscLintRuleSetting;
|
|
149
|
+
/**
|
|
150
|
+
* Prefer `*` over `{0,}` in regex literals.
|
|
151
|
+
*
|
|
152
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html
|
|
153
|
+
*/
|
|
154
|
+
"regexp/prefer-star-quantifier"?: TtscLintRuleSetting;
|
|
155
|
+
/**
|
|
156
|
+
* Prefer `\w` over `[A-Za-z0-9_]` in regex literals.
|
|
157
|
+
*
|
|
158
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html
|
|
159
|
+
*/
|
|
160
|
+
"regexp/prefer-w"?: TtscLintRuleSetting;
|
|
161
|
+
/**
|
|
162
|
+
* Require regex literals to use the `u` or `v` flag, so
|
|
163
|
+
* Unicode-property escapes and surrogate-pair handling stay
|
|
164
|
+
* predictable.
|
|
165
|
+
*
|
|
166
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
|
|
167
|
+
*/
|
|
168
|
+
"regexp/require-unicode-regexp"?: TtscLintRuleSetting;
|
|
169
|
+
/**
|
|
170
|
+
* Require regex literals to use the `v` flag specifically — the
|
|
171
|
+
* stricter Unicode-sets mode that enables set notation, string
|
|
172
|
+
* properties, and stricter escape rules on top of `u`.
|
|
173
|
+
*
|
|
174
|
+
* Choose this over `require-unicode-regexp` only on engines that
|
|
175
|
+
* ship ES2024-era regex.
|
|
176
|
+
*
|
|
177
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
|
|
178
|
+
*/
|
|
179
|
+
"regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
|
|
180
|
+
/**
|
|
181
|
+
* Require regex flags to appear in canonical alphabetical order
|
|
182
|
+
* (`dgimsuvy`).
|
|
183
|
+
*
|
|
184
|
+
* Stable ordering keeps diffs small and lets readers compare flag
|
|
185
|
+
* sets at a glance.
|
|
186
|
+
*
|
|
187
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
|
|
188
|
+
*/
|
|
189
|
+
"regexp/sort-flags"?: TtscLintRuleSetting;
|
|
190
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintRegexpRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRegexpRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ITtscLintBoundariesDependenciesRuleOptions, ITtscLintBoundariesElementTypesRuleOptions, ITtscLintBoundariesEntryPointRuleOptions, ITtscLintBoundariesExternalRuleOptions, ITtscLintBoundariesNoPrivateRuleOptions, ITtscLintBoundariesNoUnknownRuleOptions } from "./ITtscLintBoundariesRuleOptions";
|
|
2
|
+
import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
|
|
3
|
+
import type { ITtscLintFunctionalEmptyRuleOptions, ITtscLintFunctionalImmutableDataRuleOptions, ITtscLintFunctionalNoConditionalStatementsRuleOptions, ITtscLintFunctionalNoLetRuleOptions, ITtscLintFunctionalNoMixedTypesRuleOptions, ITtscLintFunctionalNoReturnVoidRuleOptions, ITtscLintFunctionalNoThrowStatementsRuleOptions, ITtscLintFunctionalNoTryStatementsRuleOptions, ITtscLintFunctionalParametersRuleOptions, ITtscLintFunctionalPreferImmutableTypesRuleOptions, ITtscLintFunctionalPreferReadonlyTypeRuleOptions, ITtscLintFunctionalPreferTacitRuleOptions, ITtscLintFunctionalReadonlyTypeRuleOptions, ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions } from "./ITtscLintFunctionalRuleOptions";
|
|
4
|
+
import type { ITtscLintReactPerfRuleOptions } from "./ITtscLintReactPerfRuleOptions";
|
|
5
|
+
import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
|
|
6
|
+
import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
|
|
7
|
+
import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./ITtscLintTestingLibraryRuleOptions";
|
|
8
|
+
/**
|
|
9
|
+
* Index from typed rule name to its options object.
|
|
10
|
+
*
|
|
11
|
+
* Built-in rule families with configurable options are listed here.
|
|
12
|
+
* Contributor plugins extend the map by augmenting it from their own
|
|
13
|
+
* package:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* declare module "@ttsc/lint" {
|
|
17
|
+
* interface ITtscLintRuleOptionsMap {
|
|
18
|
+
* "demo/no-marker-comment": { marker: string };
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
|
|
24
|
+
* `defineConfig`-style helpers in plugin packages can type-check the
|
|
25
|
+
* options object against the contributor's declared shape.
|
|
26
|
+
*
|
|
27
|
+
* `format/*` is **not** listed: formatter behavior is configured through
|
|
28
|
+
* the top-level `format` block ({@link ITtscLintFormat}), not through the
|
|
29
|
+
* `rules` surface.
|
|
30
|
+
*/
|
|
31
|
+
export interface ITtscLintRuleOptionsMap {
|
|
32
|
+
"testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;
|
|
33
|
+
"functional/functional-parameters": ITtscLintFunctionalParametersRuleOptions;
|
|
34
|
+
"functional/immutable-data": ITtscLintFunctionalImmutableDataRuleOptions;
|
|
35
|
+
"functional/no-class-inheritance": ITtscLintFunctionalEmptyRuleOptions;
|
|
36
|
+
"functional/no-classes": ITtscLintFunctionalEmptyRuleOptions;
|
|
37
|
+
"functional/no-conditional-statements": ITtscLintFunctionalNoConditionalStatementsRuleOptions;
|
|
38
|
+
"functional/no-expression-statements": ITtscLintFunctionalEmptyRuleOptions;
|
|
39
|
+
"functional/no-let": ITtscLintFunctionalNoLetRuleOptions;
|
|
40
|
+
"functional/no-loop-statements": ITtscLintFunctionalEmptyRuleOptions;
|
|
41
|
+
"functional/no-mixed-types": ITtscLintFunctionalNoMixedTypesRuleOptions;
|
|
42
|
+
"functional/no-promise-reject": ITtscLintFunctionalEmptyRuleOptions;
|
|
43
|
+
"functional/no-return-void": ITtscLintFunctionalNoReturnVoidRuleOptions;
|
|
44
|
+
"functional/no-this-expressions": ITtscLintFunctionalEmptyRuleOptions;
|
|
45
|
+
"functional/no-throw-statements": ITtscLintFunctionalNoThrowStatementsRuleOptions;
|
|
46
|
+
"functional/no-try-statements": ITtscLintFunctionalNoTryStatementsRuleOptions;
|
|
47
|
+
"functional/prefer-immutable-types": ITtscLintFunctionalPreferImmutableTypesRuleOptions;
|
|
48
|
+
"functional/prefer-property-signatures": ITtscLintFunctionalEmptyRuleOptions;
|
|
49
|
+
"functional/prefer-readonly-type": ITtscLintFunctionalPreferReadonlyTypeRuleOptions;
|
|
50
|
+
"functional/prefer-tacit": ITtscLintFunctionalPreferTacitRuleOptions;
|
|
51
|
+
"functional/readonly-type": ITtscLintFunctionalReadonlyTypeRuleOptions;
|
|
52
|
+
"functional/type-declaration-immutability": ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions;
|
|
53
|
+
"cypress/unsafe-to-chain-command": ITtscLintCypressUnsafeToChainCommandRuleOptions;
|
|
54
|
+
"boundaries/dependencies": ITtscLintBoundariesDependenciesRuleOptions;
|
|
55
|
+
"boundaries/element-types": ITtscLintBoundariesElementTypesRuleOptions;
|
|
56
|
+
"boundaries/entry-point": ITtscLintBoundariesEntryPointRuleOptions;
|
|
57
|
+
"boundaries/external": ITtscLintBoundariesExternalRuleOptions;
|
|
58
|
+
"boundaries/no-private": ITtscLintBoundariesNoPrivateRuleOptions;
|
|
59
|
+
"boundaries/no-unknown": ITtscLintBoundariesNoUnknownRuleOptions;
|
|
60
|
+
"react-perf/jsx-no-new-array-as-prop": ITtscLintReactPerfRuleOptions;
|
|
61
|
+
"react-perf/jsx-no-new-function-as-prop": ITtscLintReactPerfRuleOptions;
|
|
62
|
+
"react-perf/jsx-no-new-object-as-prop": ITtscLintReactPerfRuleOptions;
|
|
63
|
+
"react-perf/jsx-no-jsx-as-prop": ITtscLintReactPerfRuleOptions;
|
|
64
|
+
"storybook/no-uninstalled-addons": ITtscLintStorybookNoUninstalledAddonsRuleOptions;
|
|
65
|
+
"react/only-export-components": ITtscLintReactOnlyExportComponentsRuleOptions;
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintRuleOptionsMap.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRuleOptionsMap.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ITtscLintBoundariesRules } from "./ITtscLintBoundariesRules";
|
|
2
|
+
import type { ITtscLintContributorRules } from "./ITtscLintContributorRules";
|
|
3
|
+
import type { ITtscLintCoreRules } from "./ITtscLintCoreRules";
|
|
4
|
+
import type { ITtscLintCypressRules } from "./ITtscLintCypressRules";
|
|
5
|
+
import type { ITtscLintFunctionalRules } from "./ITtscLintFunctionalRules";
|
|
6
|
+
import type { ITtscLintJestRules } from "./ITtscLintJestRules";
|
|
7
|
+
import type { ITtscLintJsdocRules } from "./ITtscLintJsdocRules";
|
|
8
|
+
import type { ITtscLintJsxA11yRules } from "./ITtscLintJsxA11yRules";
|
|
9
|
+
import type { ITtscLintNextjsRules } from "./ITtscLintNextjsRules";
|
|
10
|
+
import type { ITtscLintPlaywrightRules } from "./ITtscLintPlaywrightRules";
|
|
11
|
+
import type { ITtscLintPromiseRules } from "./ITtscLintPromiseRules";
|
|
12
|
+
import type { ITtscLintReactPerfRules } from "./ITtscLintReactPerfRules";
|
|
13
|
+
import type { ITtscLintReactRules } from "./ITtscLintReactRules";
|
|
14
|
+
import type { ITtscLintRegexpRules } from "./ITtscLintRegexpRules";
|
|
15
|
+
import type { ITtscLintSecurityRules } from "./ITtscLintSecurityRules";
|
|
16
|
+
import type { ITtscLintSolidRules } from "./ITtscLintSolidRules";
|
|
17
|
+
import type { ITtscLintStorybookRules } from "./ITtscLintStorybookRules";
|
|
18
|
+
import type { ITtscLintTanstackQueryRules } from "./ITtscLintTanstackQueryRules";
|
|
19
|
+
import type { ITtscLintTestingLibraryRules } from "./ITtscLintTestingLibraryRules";
|
|
20
|
+
import type { ITtscLintTypeScriptRules } from "./ITtscLintTypeScriptRules";
|
|
21
|
+
import type { ITtscLintUnicornRules } from "./ITtscLintUnicornRules";
|
|
22
|
+
import type { ITtscLintVitestRules } from "./ITtscLintVitestRules";
|
|
23
|
+
/**
|
|
24
|
+
* Rule severity map accepted by `ITtscLintConfig.rules`.
|
|
25
|
+
*
|
|
26
|
+
* Built-in rule families are exposed as separate interfaces under this
|
|
27
|
+
* directory so users can import a narrow family type when composing configs.
|
|
28
|
+
* `ITtscLintRules` is the intersection of every built-in family plus the
|
|
29
|
+
* open-ended contributor plugin signature.
|
|
30
|
+
*
|
|
31
|
+
* Rule id conventions:
|
|
32
|
+
*
|
|
33
|
+
* - Bare kebab-case ids (`eqeqeq`, `no-console`) belong to
|
|
34
|
+
* {@link ITtscLintCoreRules} — generic ESLint-compatible rules that apply to
|
|
35
|
+
* both JS and TS source.
|
|
36
|
+
* - `typescript/*` ids belong to {@link ITtscLintTypeScriptRules} —
|
|
37
|
+
* TypeScript-only and `@typescript-eslint` plugin rules. `@ttsc/lint` does
|
|
38
|
+
* not accept legacy bare names or `@typescript-eslint/*` aliases for these
|
|
39
|
+
* rules.
|
|
40
|
+
* - `react/*` ids in {@link ITtscLintReactRules} bundle `eslint-plugin-react`,
|
|
41
|
+
* `eslint-plugin-react-hooks`, and `eslint-plugin-react-refresh`.
|
|
42
|
+
* Performance-only React rules live separately in
|
|
43
|
+
* {@link ITtscLintReactPerfRules} because they are opt-in toggles rather than
|
|
44
|
+
* correctness checks (matching Oxlint).
|
|
45
|
+
* - Every other namespaced id (`boundaries/*`, `cypress/*`, `functional/*`, ...)
|
|
46
|
+
* is a built-in family with a matching interface in this directory.
|
|
47
|
+
* - Formatter behavior is **not** configured here. Use the top-level `format`
|
|
48
|
+
* block (typed as `ITtscLintFormat`); `format/*` is an internal
|
|
49
|
+
* implementation detail of `ttsc format` and is deliberately absent from the
|
|
50
|
+
* public rules surface.
|
|
51
|
+
* - Any other `"<namespace>/<rule>"` key is accepted via
|
|
52
|
+
* {@link ITtscLintContributorRules} so plugin-shipped rules compose cleanly
|
|
53
|
+
* without ambient module augmentation.
|
|
54
|
+
*/
|
|
55
|
+
export type ITtscLintRules = ITtscLintCoreRules & ITtscLintTypeScriptRules & ITtscLintBoundariesRules & ITtscLintCypressRules & ITtscLintFunctionalRules & ITtscLintJestRules & ITtscLintJsdocRules & ITtscLintJsxA11yRules & ITtscLintNextjsRules & ITtscLintPlaywrightRules & ITtscLintPromiseRules & ITtscLintReactRules & ITtscLintReactPerfRules & ITtscLintRegexpRules & ITtscLintSecurityRules & ITtscLintSolidRules & ITtscLintStorybookRules & ITtscLintTanstackQueryRules & ITtscLintTestingLibraryRules & ITtscLintUnicornRules & ITtscLintVitestRules & ITtscLintContributorRules;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Security-focused TypeScript source rules from
|
|
4
|
+
* `eslint-plugin-security`.
|
|
5
|
+
*
|
|
6
|
+
* Reports likely security smells — non-literal sinks for eval, file
|
|
7
|
+
* I/O, regex construction, child-process spawning, cryptographic
|
|
8
|
+
* primitives — that warrant human review even if no exploit is
|
|
9
|
+
* statically provable.
|
|
10
|
+
*
|
|
11
|
+
* Treat findings as *hints*, not proofs.
|
|
12
|
+
*
|
|
13
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security
|
|
14
|
+
*/
|
|
15
|
+
export interface ITtscLintSecurityRules {
|
|
16
|
+
/**
|
|
17
|
+
* Detect Trojan-Source bidi control characters (U+202A, U+202E,
|
|
18
|
+
* ...) hidden inside source.
|
|
19
|
+
*
|
|
20
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-bidi-characters.md
|
|
21
|
+
*/
|
|
22
|
+
"security/detect-bidi-characters"?: TtscLintRuleSetting;
|
|
23
|
+
/**
|
|
24
|
+
* Detect Buffer reads/writes called with `noAssert = true`, which
|
|
25
|
+
* skips Node's offset/length bounds checks.
|
|
26
|
+
*
|
|
27
|
+
* The flag lets the offset slide past the buffer end and read
|
|
28
|
+
* unrelated memory, so production code should never set it.
|
|
29
|
+
*
|
|
30
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-buffer-noassert.md
|
|
31
|
+
*/
|
|
32
|
+
"security/detect-buffer-noassert"?: TtscLintRuleSetting;
|
|
33
|
+
/**
|
|
34
|
+
* Detect any import of `child_process` and any `exec`/`execSync`
|
|
35
|
+
* call whose command argument is not a string literal.
|
|
36
|
+
*
|
|
37
|
+
* Non-literal commands are the canonical shell-injection sink in
|
|
38
|
+
* Node services.
|
|
39
|
+
*
|
|
40
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-child-process.md
|
|
41
|
+
*/
|
|
42
|
+
"security/detect-child-process"?: TtscLintRuleSetting;
|
|
43
|
+
/**
|
|
44
|
+
* Detect assignments setting `escapeMarkup = false` (or the
|
|
45
|
+
* equivalent option on Handlebars/Mustache-style engines), which
|
|
46
|
+
* turns off HTML entity escaping in template output.
|
|
47
|
+
*
|
|
48
|
+
* Result: an unguarded XSS sink for caller-controlled strings.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-disable-mustache-escape.md
|
|
51
|
+
*/
|
|
52
|
+
"security/detect-disable-mustache-escape"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Detect `eval(...)` calls whose argument is not a string literal.
|
|
55
|
+
*
|
|
56
|
+
* Any expression argument means caller-controlled data can reach a
|
|
57
|
+
* code-execution sink. The rule flags the call shape, not proven
|
|
58
|
+
* taint.
|
|
59
|
+
*
|
|
60
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-eval-with-expression.md
|
|
61
|
+
*/
|
|
62
|
+
"security/detect-eval-with-expression"?: TtscLintRuleSetting;
|
|
63
|
+
/**
|
|
64
|
+
* Detect `new Buffer(input)` constructions with non-literal
|
|
65
|
+
* input — historical source of allocation-disclosure bugs.
|
|
66
|
+
*
|
|
67
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-new-buffer.md
|
|
68
|
+
*/
|
|
69
|
+
"security/detect-new-buffer"?: TtscLintRuleSetting;
|
|
70
|
+
/**
|
|
71
|
+
* Detect Express applications mounting `csrf` middleware before
|
|
72
|
+
* `methodOverride`, which lets the CSRF token be bypassed.
|
|
73
|
+
*
|
|
74
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-no-csrf-before-method-override.md
|
|
75
|
+
*/
|
|
76
|
+
"security/detect-no-csrf-before-method-override"?: TtscLintRuleSetting;
|
|
77
|
+
/**
|
|
78
|
+
* Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`,
|
|
79
|
+
* ...) whose filename argument is not a string literal.
|
|
80
|
+
*
|
|
81
|
+
* Dynamic filenames are the standard path-traversal sink; sanitise
|
|
82
|
+
* or allow-list before the call.
|
|
83
|
+
*
|
|
84
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-fs-filename.md
|
|
85
|
+
*/
|
|
86
|
+
"security/detect-non-literal-fs-filename"?: TtscLintRuleSetting;
|
|
87
|
+
/**
|
|
88
|
+
* Detect `new RegExp(...)` construction whose pattern argument is
|
|
89
|
+
* not a string literal.
|
|
90
|
+
*
|
|
91
|
+
* Caller-controlled patterns can both trigger catastrophic
|
|
92
|
+
* backtracking and let an attacker reshape the matcher to bypass
|
|
93
|
+
* intended validation.
|
|
94
|
+
*
|
|
95
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-regexp.md
|
|
96
|
+
*/
|
|
97
|
+
"security/detect-non-literal-regexp"?: TtscLintRuleSetting;
|
|
98
|
+
/**
|
|
99
|
+
* Detect `require(...)` calls whose specifier is computed at
|
|
100
|
+
* runtime.
|
|
101
|
+
*
|
|
102
|
+
* A dynamic specifier lets caller-controlled data choose the module
|
|
103
|
+
* to load, bypassing any module allow-list on Node.
|
|
104
|
+
*
|
|
105
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-require.md
|
|
106
|
+
*/
|
|
107
|
+
"security/detect-non-literal-require"?: TtscLintRuleSetting;
|
|
108
|
+
/**
|
|
109
|
+
* Detect dynamic bracket-access such as `obj[req.body.x] = ...`,
|
|
110
|
+
* which can let caller-controlled keys overwrite prototype-shaped
|
|
111
|
+
* properties or pull out unintended fields.
|
|
112
|
+
*
|
|
113
|
+
* Fires on virtually any computed property access; expect a high
|
|
114
|
+
* false-positive rate in normal application code.
|
|
115
|
+
*
|
|
116
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-object-injection.md
|
|
117
|
+
*/
|
|
118
|
+
"security/detect-object-injection"?: TtscLintRuleSetting;
|
|
119
|
+
/**
|
|
120
|
+
* Detect direct equality comparisons involving secret-like
|
|
121
|
+
* identifiers (`if (token === expected)`) — use
|
|
122
|
+
* `crypto.timingSafeEqual` instead.
|
|
123
|
+
*
|
|
124
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-possible-timing-attacks.md
|
|
125
|
+
*/
|
|
126
|
+
"security/detect-possible-timing-attacks"?: TtscLintRuleSetting;
|
|
127
|
+
/**
|
|
128
|
+
* Detect `crypto.pseudoRandomBytes`, which produces values that
|
|
129
|
+
* are not cryptographically secure.
|
|
130
|
+
*
|
|
131
|
+
* Tokens, session ids, and key material must use
|
|
132
|
+
* `crypto.randomBytes` (or Web Crypto's `getRandomValues`) instead.
|
|
133
|
+
*
|
|
134
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-pseudoRandomBytes.md
|
|
135
|
+
*/
|
|
136
|
+
"security/detect-pseudoRandomBytes"?: TtscLintRuleSetting;
|
|
137
|
+
/**
|
|
138
|
+
* Detect regex literals with catastrophic backtracking potential
|
|
139
|
+
* (ReDoS) — typically nested or overlapping quantifiers over the
|
|
140
|
+
* same character set.
|
|
141
|
+
*
|
|
142
|
+
* Matching caller-controlled input against such a pattern can
|
|
143
|
+
* block the event loop for seconds.
|
|
144
|
+
*
|
|
145
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-unsafe-regex.md
|
|
146
|
+
*/
|
|
147
|
+
"security/detect-unsafe-regex"?: TtscLintRuleSetting;
|
|
148
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintSecurityRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintSecurityRules.ts"],"names":[],"mappings":""}
|