@ttsc/lint 0.13.0 → 0.14.0-dev.20250530.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 +955 -85
- package/lib/defaultFormat.d.ts +15 -8
- package/lib/defaultFormat.js +15 -8
- package/lib/defaultFormat.js.map +1 -1
- package/lib/index.d.ts +46 -0
- package/lib/index.js +60 -37
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +12 -6
- package/lib/structures/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/format/ITtscLintFormat.d.ts +128 -0
- package/lib/structures/{TtscLintRuleMap.js → format/ITtscLintFormat.js} +1 -1
- package/lib/structures/format/ITtscLintFormat.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +17 -0
- package/lib/structures/{ITtscLintFormatConfig.js → format/ITtscLintFormatJsDoc.js} +1 -1
- package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
- package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
- package/lib/structures/format/index.d.ts +3 -0
- package/lib/structures/format/index.js +20 -0
- package/lib/structures/format/index.js.map +1 -0
- package/lib/structures/index.d.ts +3 -4
- package/lib/structures/index.js +3 -4
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +95 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +13 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +75 -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 +16 -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 +1229 -0
- package/lib/structures/rules/ITtscLintCoreRules.js +3 -0
- 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 +125 -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 +154 -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 +162 -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 +190 -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 +133 -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 +294 -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 +180 -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 +312 -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 +179 -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 +49 -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 +37 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +11 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRules.d.ts +276 -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 +182 -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 +65 -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 +141 -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 +178 -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 +20 -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 +165 -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 +88 -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 +21 -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 +293 -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 +1074 -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 +133 -0
- package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
- package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
- package/lib/structures/rules/index.d.ts +31 -0
- package/lib/structures/rules/index.js +48 -0
- package/lib/structures/rules/index.js.map +1 -0
- package/linthost/ast_helpers.go +30 -5
- package/linthost/compile.go +33 -2
- package/linthost/config.go +118 -71
- package/linthost/config_format.go +270 -104
- package/linthost/directives.go +67 -25
- package/linthost/dispatch.go +14 -3
- package/linthost/engine.go +160 -40
- package/linthost/fix.go +10 -3
- package/linthost/flags_gen.go +17 -15
- package/linthost/format.go +222 -25
- package/linthost/format_editor_settings.go +262 -0
- package/linthost/host.go +40 -3
- package/linthost/lsp.go +898 -0
- package/linthost/print_dispatch.go +5 -2
- package/linthost/print_engine.go +5 -5
- package/linthost/print_nodes_call.go +149 -67
- package/linthost/print_nodes_function.go +27 -2
- package/linthost/print_nodes_list.go +40 -5
- package/linthost/print_nodes_object.go +1 -1
- package/linthost/print_nodes_ternary.go +86 -0
- 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 +95 -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_arrow_parens.go +167 -0
- package/linthost/rules_format_bracket_spacing.go +117 -0
- package/linthost/rules_format_clause_join.go +172 -0
- package/linthost/rules_format_declaration_header.go +595 -0
- package/linthost/rules_format_indent.go +372 -0
- package/linthost/rules_format_jsdoc.go +5 -5
- package/linthost/rules_format_orphan_semi.go +106 -0
- package/linthost/rules_format_parameter_properties.go +175 -0
- package/linthost/rules_format_print_width.go +66 -55
- package/linthost/rules_format_quote_props.go +169 -0
- package/linthost/rules_format_quotes.go +76 -30
- package/linthost/rules_format_semi.go +186 -11
- package/linthost/rules_format_sort_imports.go +437 -118
- package/linthost/rules_format_statement_split.go +343 -0
- package/linthost/rules_format_ternary_nullish_parens.go +77 -0
- package/linthost/rules_format_trailing_comma.go +22 -3
- package/linthost/rules_format_whitespace.go +336 -0
- 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 +1057 -2
- 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 +159 -36
- package/linthost/rules_ts_no_base_to_string.go +218 -0
- package/linthost/rules_ts_no_confusing_void.go +72 -0
- package/linthost/rules_ts_no_deprecated.go +195 -0
- package/linthost/rules_ts_no_for_in_array.go +84 -0
- package/linthost/rules_ts_no_magic_numbers.go +124 -0
- package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
- package/linthost/rules_ts_no_misused_spread.go +104 -0
- package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
- package/linthost/rules_ts_no_restricted_types.go +62 -0
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
- package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
- package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
- package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
- package/linthost/rules_ts_no_unsafe_argument.go +82 -0
- package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
- package/linthost/rules_ts_no_unsafe_call.go +82 -0
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
- package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
- package/linthost/rules_ts_no_unsafe_return.go +126 -0
- package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
- package/linthost/rules_ts_no_useless_constructor.go +52 -0
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
- package/linthost/rules_ts_parameter_properties.go +38 -0
- package/linthost/rules_ts_prefer_find.go +178 -0
- package/linthost/rules_ts_prefer_includes.go +255 -0
- package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
- package/linthost/rules_ts_prefer_optional_chain.go +228 -0
- package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
- package/linthost/rules_ts_prefer_readonly.go +73 -0
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
- package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
- package/linthost/rules_ts_prefer_return_this_type.go +135 -0
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
- package/linthost/rules_ts_promise_function_async.go +77 -0
- package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
- package/linthost/rules_ts_require_array_sort_compare.go +96 -0
- package/linthost/rules_ts_restrict_plus_operands.go +127 -0
- package/linthost/rules_ts_restrict_template_expressions.go +95 -0
- package/linthost/rules_ts_simple.go +387 -0
- package/linthost/rules_ts_sort_type_constituents.go +144 -0
- package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
- package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
- package/linthost/rules_ts_unbound_method.go +126 -0
- package/linthost/rules_tsdoc.go +136 -0
- package/linthost/rules_unicorn_better_regex.go +27 -0
- package/linthost/rules_unicorn_catch_error_name.go +46 -0
- package/linthost/rules_unicorn_consistent_assert.go +47 -0
- package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
- package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
- package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
- package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
- package/linthost/rules_unicorn_custom_error_definition.go +138 -0
- package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
- package/linthost/rules_unicorn_error_message.go +64 -0
- package/linthost/rules_unicorn_escape_case.go +51 -0
- package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
- package/linthost/rules_unicorn_explicit_length_check.go +88 -0
- package/linthost/rules_unicorn_filename_case.go +29 -0
- package/linthost/rules_unicorn_import_style.go +28 -0
- package/linthost/rules_unicorn_isolated_functions.go +29 -0
- package/linthost/rules_unicorn_new_for_builtins.go +87 -0
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
- package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
- package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
- package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
- package/linthost/rules_unicorn_no_array_for_each.go +40 -0
- package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
- package/linthost/rules_unicorn_no_array_reduce.go +41 -0
- package/linthost/rules_unicorn_no_array_reverse.go +44 -0
- package/linthost/rules_unicorn_no_array_sort.go +43 -0
- package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
- package/linthost/rules_unicorn_no_console_spaces.go +61 -0
- package/linthost/rules_unicorn_no_document_cookie.go +41 -0
- package/linthost/rules_unicorn_no_empty_file.go +44 -0
- package/linthost/rules_unicorn_no_for_loop.go +102 -0
- package/linthost/rules_unicorn_no_hex_escape.go +42 -0
- package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
- package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
- package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
- package/linthost/rules_unicorn_no_lonely_if.go +44 -0
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
- package/linthost/rules_unicorn_no_named_default.go +54 -0
- package/linthost/rules_unicorn_no_negated_condition.go +85 -0
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
- package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
- package/linthost/rules_unicorn_no_new_array.go +30 -0
- package/linthost/rules_unicorn_no_new_buffer.go +31 -0
- package/linthost/rules_unicorn_no_null.go +24 -0
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
- package/linthost/rules_unicorn_no_process_exit.go +43 -0
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
- package/linthost/rules_unicorn_no_static_only_class.go +56 -0
- package/linthost/rules_unicorn_no_thenable.go +74 -0
- package/linthost/rules_unicorn_no_this_assignment.go +35 -0
- package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
- package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
- package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
- package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
- package/linthost/rules_unicorn_no_unused_properties.go +30 -0
- package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
- package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
- package/linthost/rules_unicorn_no_useless_spread.go +67 -0
- package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
- package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
- package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
- package/linthost/rules_unicorn_number_literal_case.go +69 -0
- package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
- package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
- package/linthost/rules_unicorn_prefer_array_find.go +51 -0
- package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
- package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
- package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
- package/linthost/rules_unicorn_prefer_array_some.go +67 -0
- package/linthost/rules_unicorn_prefer_at.go +77 -0
- package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
- package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
- package/linthost/rules_unicorn_prefer_code_point.go +49 -0
- package/linthost/rules_unicorn_prefer_date_now.go +78 -0
- package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
- package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
- package/linthost/rules_unicorn_prefer_event_target.go +36 -0
- package/linthost/rules_unicorn_prefer_export_from.go +129 -0
- package/linthost/rules_unicorn_prefer_global_this.go +127 -0
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
- package/linthost/rules_unicorn_prefer_includes.go +149 -0
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
- package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
- package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
- package/linthost/rules_unicorn_prefer_module.go +50 -0
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
- package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
- package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
- package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
- package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
- package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
- package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
- package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
- package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
- package/linthost/rules_unicorn_prefer_set_has.go +42 -0
- package/linthost/rules_unicorn_prefer_set_size.go +48 -0
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
- package/linthost/rules_unicorn_prefer_single_call.go +96 -0
- package/linthost/rules_unicorn_prefer_spread.go +51 -0
- package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
- package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
- package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
- package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
- package/linthost/rules_unicorn_prefer_switch.go +103 -0
- package/linthost/rules_unicorn_prefer_ternary.go +71 -0
- package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
- package/linthost/rules_unicorn_prefer_type_error.go +127 -0
- package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
- package/linthost/rules_unicorn_relative_url_style.go +49 -0
- package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
- package/linthost/rules_unicorn_require_module_attributes.go +54 -0
- package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
- package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
- package/linthost/rules_unicorn_string_content.go +27 -0
- package/linthost/rules_unicorn_switch_case_braces.go +42 -0
- package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
- package/linthost/rules_unicorn_template_indent.go +28 -0
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
- package/linthost/rules_unicorn_throw_new_error.go +61 -0
- package/linthost/rules_var.go +10 -4
- package/linthost/rules_vitest.go +568 -0
- package/package.json +3 -3
- package/plugin/main.go +49 -3
- package/rule/astutil/astutil.go +10 -3
- package/rule/rule.go +12 -10
- package/src/defaultFormat.ts +17 -10
- package/src/index.ts +65 -43
- package/src/structures/ITtscLintConfig.ts +14 -8
- package/src/structures/TtscLintRuleSetting.ts +55 -0
- package/src/structures/format/ITtscLintFormat.ts +141 -0
- package/src/structures/format/ITtscLintFormatJsDoc.ts +18 -0
- package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
- package/src/structures/format/index.ts +3 -0
- package/src/structures/index.ts +3 -4
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +117 -0
- package/src/structures/rules/ITtscLintBoundariesRules.ts +91 -0
- package/src/structures/rules/ITtscLintContributorRules.ts +20 -0
- package/src/structures/rules/ITtscLintCoreRules.ts +1378 -0
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
- package/src/structures/rules/ITtscLintCypressRules.ts +141 -0
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +200 -0
- package/src/structures/rules/ITtscLintFunctionalRules.ts +197 -0
- package/src/structures/rules/ITtscLintJestRules.ts +209 -0
- package/src/structures/rules/ITtscLintJsdocRules.ts +146 -0
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +331 -0
- package/src/structures/rules/ITtscLintNextjsRules.ts +201 -0
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +343 -0
- package/src/structures/rules/ITtscLintPromiseRules.ts +196 -0
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
- package/src/structures/rules/ITtscLintReactPerfRules.ts +53 -0
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +41 -0
- package/src/structures/rules/ITtscLintReactRules.ts +308 -0
- package/src/structures/rules/ITtscLintRegexpRules.ts +204 -0
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +88 -0
- package/src/structures/rules/ITtscLintRules.ts +77 -0
- package/src/structures/rules/ITtscLintSecurityRules.ts +155 -0
- package/src/structures/rules/ITtscLintSolidRules.ts +199 -0
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +22 -0
- package/src/structures/rules/ITtscLintStorybookRules.ts +184 -0
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +96 -0
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +23 -0
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +325 -0
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +1172 -0
- package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
- package/src/structures/rules/ITtscLintVitestRules.ts +146 -0
- package/src/structures/rules/index.ts +31 -0
- package/lib/structures/ITtscLintFormatConfig.d.ts +0 -153
- 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/ITtscLintFormatConfig.ts +0 -168
- package/src/structures/TtscLintRule.ts +0 -160
- package/src/structures/TtscLintRuleMap.ts +0 -55
- package/src/structures/TtscLintRuleOptions.ts +0 -151
|
@@ -0,0 +1,182 @@
|
|
|
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, uselessness,
|
|
6
|
+
* 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 the legacy
|
|
10
|
+
* 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 the bare core
|
|
17
|
+
* 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 character classes
|
|
24
|
+
* (`/[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 silently match
|
|
31
|
+
* 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 capture
|
|
40
|
+
* slot while only ever capturing the empty string — almost always a leftover
|
|
41
|
+
* 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 bare core check.
|
|
48
|
+
*
|
|
49
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
|
|
50
|
+
*/
|
|
51
|
+
"regexp/no-empty-character-class"?: TtscLintRuleSetting;
|
|
52
|
+
/**
|
|
53
|
+
* Reject empty non-capturing groups such as `/(?:)/`.
|
|
54
|
+
*
|
|
55
|
+
* The group contributes nothing to the match and is virtually always a
|
|
56
|
+
* leftover from a deleted inner pattern.
|
|
57
|
+
*
|
|
58
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
|
|
59
|
+
*/
|
|
60
|
+
"regexp/no-empty-group"?: TtscLintRuleSetting;
|
|
61
|
+
/**
|
|
62
|
+
* Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
|
|
63
|
+
*
|
|
64
|
+
* An empty positive lookaround always matches; an empty negative lookaround
|
|
65
|
+
* never matches. The assertion either collapses to a no-op or breaks the
|
|
66
|
+
* surrounding pattern.
|
|
67
|
+
*
|
|
68
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
|
|
69
|
+
*/
|
|
70
|
+
"regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
|
|
71
|
+
/**
|
|
72
|
+
* Reject misleading Unicode characters in regex classes. Alias of the bare
|
|
73
|
+
* misleading-character check.
|
|
74
|
+
*
|
|
75
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
|
|
76
|
+
*/
|
|
77
|
+
"regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
|
|
78
|
+
/**
|
|
79
|
+
* Reject single-character character classes such as `/[x]/` — `/x/` is
|
|
80
|
+
* equivalent.
|
|
81
|
+
*
|
|
82
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
|
|
83
|
+
*/
|
|
84
|
+
"regexp/no-useless-character-class"?: TtscLintRuleSetting;
|
|
85
|
+
/**
|
|
86
|
+
* Reject unnecessary escapes inside regex literals. Alias of core
|
|
87
|
+
* `no-useless-escape` for regex contexts.
|
|
88
|
+
*
|
|
89
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
|
|
90
|
+
*/
|
|
91
|
+
"regexp/no-useless-escape"?: TtscLintRuleSetting;
|
|
92
|
+
/**
|
|
93
|
+
* Reject regex flags that the literal does not exercise — `i` on a pattern
|
|
94
|
+
* without case-variable characters, `m` without `^`/`$`, `s` without `.`, and
|
|
95
|
+
* similar dead flags on `g`/`y`.
|
|
96
|
+
*
|
|
97
|
+
* Cleans up flag combos that suggest behavior the pattern can never trigger.
|
|
98
|
+
*
|
|
99
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
|
|
100
|
+
*/
|
|
101
|
+
"regexp/no-useless-flag"?: TtscLintRuleSetting;
|
|
102
|
+
/**
|
|
103
|
+
* Reject quantifiers that do not change the match — constant-one counts
|
|
104
|
+
* (`/a{1}/`), `?` on patterns already matching the empty string
|
|
105
|
+
* (`/(?:a+|b*)?/`), and quantifiers on non-consuming atoms (`/(?:\b)+/`).
|
|
106
|
+
*
|
|
107
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
|
|
108
|
+
*/
|
|
109
|
+
"regexp/no-useless-quantifier"?: TtscLintRuleSetting;
|
|
110
|
+
/**
|
|
111
|
+
* Reject equal min/max quantifiers (`/a{2,2}/`) in favor of `/a{2}/`.
|
|
112
|
+
*
|
|
113
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
|
|
114
|
+
*/
|
|
115
|
+
"regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
|
|
116
|
+
/**
|
|
117
|
+
* Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom never
|
|
118
|
+
* matches, so the quantifier is either dead code or a typo for `{1,…}`.
|
|
119
|
+
*
|
|
120
|
+
* The fix is normally to delete the atom or correct the upper bound.
|
|
121
|
+
*
|
|
122
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
|
|
123
|
+
*/
|
|
124
|
+
"regexp/no-zero-quantifier"?: TtscLintRuleSetting;
|
|
125
|
+
/**
|
|
126
|
+
* Prefer `\d` over `[0-9]` in regex literals.
|
|
127
|
+
*
|
|
128
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html
|
|
129
|
+
*/
|
|
130
|
+
"regexp/prefer-d"?: TtscLintRuleSetting;
|
|
131
|
+
/**
|
|
132
|
+
* Prefer `+` over `{1,}` in regex literals.
|
|
133
|
+
*
|
|
134
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html
|
|
135
|
+
*/
|
|
136
|
+
"regexp/prefer-plus-quantifier"?: TtscLintRuleSetting;
|
|
137
|
+
/**
|
|
138
|
+
* Prefer `?` over `{0,1}` in regex literals.
|
|
139
|
+
*
|
|
140
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html
|
|
141
|
+
*/
|
|
142
|
+
"regexp/prefer-question-quantifier"?: TtscLintRuleSetting;
|
|
143
|
+
/**
|
|
144
|
+
* Prefer `*` over `{0,}` in regex literals.
|
|
145
|
+
*
|
|
146
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html
|
|
147
|
+
*/
|
|
148
|
+
"regexp/prefer-star-quantifier"?: TtscLintRuleSetting;
|
|
149
|
+
/**
|
|
150
|
+
* Prefer `\w` over `[A-Za-z0-9_]` in regex literals.
|
|
151
|
+
*
|
|
152
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html
|
|
153
|
+
*/
|
|
154
|
+
"regexp/prefer-w"?: TtscLintRuleSetting;
|
|
155
|
+
/**
|
|
156
|
+
* Require regex literals to use the `u` or `v` flag, so Unicode-property
|
|
157
|
+
* escapes and surrogate-pair handling stay predictable.
|
|
158
|
+
*
|
|
159
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
|
|
160
|
+
*/
|
|
161
|
+
"regexp/require-unicode-regexp"?: TtscLintRuleSetting;
|
|
162
|
+
/**
|
|
163
|
+
* Require regex literals to use the `v` flag specifically — the stricter
|
|
164
|
+
* Unicode-sets mode that enables set notation, string properties, and
|
|
165
|
+
* stricter escape rules on top of `u`.
|
|
166
|
+
*
|
|
167
|
+
* Choose this over `require-unicode-regexp` only on engines that ship
|
|
168
|
+
* ES2024-era regex.
|
|
169
|
+
*
|
|
170
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
|
|
171
|
+
*/
|
|
172
|
+
"regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
|
|
173
|
+
/**
|
|
174
|
+
* Require regex flags to appear in canonical alphabetical order (`dgimsuvy`).
|
|
175
|
+
*
|
|
176
|
+
* Stable ordering keeps diffs small and lets readers compare flag sets at a
|
|
177
|
+
* glance.
|
|
178
|
+
*
|
|
179
|
+
* @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
|
|
180
|
+
*/
|
|
181
|
+
"regexp/sort-flags"?: TtscLintRuleSetting;
|
|
182
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintRegexpRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRegexpRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
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. Contributor
|
|
12
|
+
* plugins extend the map by augmenting it from their own package:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* declare module "@ttsc/lint" {
|
|
16
|
+
* interface ITtscLintRuleOptionsMap {
|
|
17
|
+
* "demo/no-marker-comment": { marker: string };
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
|
|
23
|
+
* `defineConfig`-style helpers in plugin packages can type-check the options
|
|
24
|
+
* object against the contributor's declared shape.
|
|
25
|
+
*
|
|
26
|
+
* `format/*` is **not** listed: formatter behavior is configured through the
|
|
27
|
+
* top-level `format` block ({@link ITtscLintFormat}), not through the `rules`
|
|
28
|
+
* surface.
|
|
29
|
+
*/
|
|
30
|
+
export interface ITtscLintRuleOptionsMap {
|
|
31
|
+
"testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;
|
|
32
|
+
"functional/functional-parameters": ITtscLintFunctionalParametersRuleOptions;
|
|
33
|
+
"functional/immutable-data": ITtscLintFunctionalImmutableDataRuleOptions;
|
|
34
|
+
"functional/no-class-inheritance": ITtscLintFunctionalEmptyRuleOptions;
|
|
35
|
+
"functional/no-classes": ITtscLintFunctionalEmptyRuleOptions;
|
|
36
|
+
"functional/no-conditional-statements": ITtscLintFunctionalNoConditionalStatementsRuleOptions;
|
|
37
|
+
"functional/no-expression-statements": ITtscLintFunctionalEmptyRuleOptions;
|
|
38
|
+
"functional/no-let": ITtscLintFunctionalNoLetRuleOptions;
|
|
39
|
+
"functional/no-loop-statements": ITtscLintFunctionalEmptyRuleOptions;
|
|
40
|
+
"functional/no-mixed-types": ITtscLintFunctionalNoMixedTypesRuleOptions;
|
|
41
|
+
"functional/no-promise-reject": ITtscLintFunctionalEmptyRuleOptions;
|
|
42
|
+
"functional/no-return-void": ITtscLintFunctionalNoReturnVoidRuleOptions;
|
|
43
|
+
"functional/no-this-expressions": ITtscLintFunctionalEmptyRuleOptions;
|
|
44
|
+
"functional/no-throw-statements": ITtscLintFunctionalNoThrowStatementsRuleOptions;
|
|
45
|
+
"functional/no-try-statements": ITtscLintFunctionalNoTryStatementsRuleOptions;
|
|
46
|
+
"functional/prefer-immutable-types": ITtscLintFunctionalPreferImmutableTypesRuleOptions;
|
|
47
|
+
"functional/prefer-property-signatures": ITtscLintFunctionalEmptyRuleOptions;
|
|
48
|
+
"functional/prefer-readonly-type": ITtscLintFunctionalPreferReadonlyTypeRuleOptions;
|
|
49
|
+
"functional/prefer-tacit": ITtscLintFunctionalPreferTacitRuleOptions;
|
|
50
|
+
"functional/readonly-type": ITtscLintFunctionalReadonlyTypeRuleOptions;
|
|
51
|
+
"functional/type-declaration-immutability": ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions;
|
|
52
|
+
"cypress/unsafe-to-chain-command": ITtscLintCypressUnsafeToChainCommandRuleOptions;
|
|
53
|
+
"boundaries/dependencies": ITtscLintBoundariesDependenciesRuleOptions;
|
|
54
|
+
"boundaries/element-types": ITtscLintBoundariesElementTypesRuleOptions;
|
|
55
|
+
"boundaries/entry-point": ITtscLintBoundariesEntryPointRuleOptions;
|
|
56
|
+
"boundaries/external": ITtscLintBoundariesExternalRuleOptions;
|
|
57
|
+
"boundaries/no-private": ITtscLintBoundariesNoPrivateRuleOptions;
|
|
58
|
+
"boundaries/no-unknown": ITtscLintBoundariesNoUnknownRuleOptions;
|
|
59
|
+
"react-perf/jsx-no-new-array-as-prop": ITtscLintReactPerfRuleOptions;
|
|
60
|
+
"react-perf/jsx-no-new-function-as-prop": ITtscLintReactPerfRuleOptions;
|
|
61
|
+
"react-perf/jsx-no-new-object-as-prop": ITtscLintReactPerfRuleOptions;
|
|
62
|
+
"react-perf/jsx-no-jsx-as-prop": ITtscLintReactPerfRuleOptions;
|
|
63
|
+
"storybook/no-uninstalled-addons": ITtscLintStorybookNoUninstalledAddonsRuleOptions;
|
|
64
|
+
"react/only-export-components": ITtscLintReactOnlyExportComponentsRuleOptions;
|
|
65
|
+
}
|
|
@@ -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,141 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Security-focused TypeScript source rules from `eslint-plugin-security`.
|
|
4
|
+
*
|
|
5
|
+
* Reports likely security smells — non-literal sinks for eval, file I/O, regex
|
|
6
|
+
* construction, child-process spawning, cryptographic primitives — that warrant
|
|
7
|
+
* human review even if no exploit is statically provable.
|
|
8
|
+
*
|
|
9
|
+
* Treat findings as _hints_, not proofs.
|
|
10
|
+
*
|
|
11
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security
|
|
12
|
+
*/
|
|
13
|
+
export interface ITtscLintSecurityRules {
|
|
14
|
+
/**
|
|
15
|
+
* Detect Trojan-Source bidi control characters (U+202A, U+202E, ...) hidden
|
|
16
|
+
* inside source.
|
|
17
|
+
*
|
|
18
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-bidi-characters.md
|
|
19
|
+
*/
|
|
20
|
+
"security/detect-bidi-characters"?: TtscLintRuleSetting;
|
|
21
|
+
/**
|
|
22
|
+
* Detect Buffer reads/writes called with `noAssert = true`, which skips
|
|
23
|
+
* Node's offset/length bounds checks.
|
|
24
|
+
*
|
|
25
|
+
* The flag lets the offset slide past the buffer end and read unrelated
|
|
26
|
+
* memory, so production code should never set it.
|
|
27
|
+
*
|
|
28
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-buffer-noassert.md
|
|
29
|
+
*/
|
|
30
|
+
"security/detect-buffer-noassert"?: TtscLintRuleSetting;
|
|
31
|
+
/**
|
|
32
|
+
* Detect any import of `child_process` and any `exec`/`execSync` call whose
|
|
33
|
+
* command argument is not a string literal.
|
|
34
|
+
*
|
|
35
|
+
* Non-literal commands are the canonical shell-injection sink in Node
|
|
36
|
+
* services.
|
|
37
|
+
*
|
|
38
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-child-process.md
|
|
39
|
+
*/
|
|
40
|
+
"security/detect-child-process"?: TtscLintRuleSetting;
|
|
41
|
+
/**
|
|
42
|
+
* Detect assignments setting `escapeMarkup = false` (or the equivalent option
|
|
43
|
+
* on Handlebars/Mustache-style engines), which turns off HTML entity escaping
|
|
44
|
+
* in template output.
|
|
45
|
+
*
|
|
46
|
+
* Result: an unguarded XSS sink for caller-controlled strings.
|
|
47
|
+
*
|
|
48
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-disable-mustache-escape.md
|
|
49
|
+
*/
|
|
50
|
+
"security/detect-disable-mustache-escape"?: TtscLintRuleSetting;
|
|
51
|
+
/**
|
|
52
|
+
* Detect `eval(...)` calls whose argument is not a string literal.
|
|
53
|
+
*
|
|
54
|
+
* Any expression argument means caller-controlled data can reach a
|
|
55
|
+
* code-execution sink. The rule flags the call shape, not proven taint.
|
|
56
|
+
*
|
|
57
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-eval-with-expression.md
|
|
58
|
+
*/
|
|
59
|
+
"security/detect-eval-with-expression"?: TtscLintRuleSetting;
|
|
60
|
+
/**
|
|
61
|
+
* Detect `new Buffer(input)` constructions with non-literal input —
|
|
62
|
+
* historical source of allocation-disclosure bugs.
|
|
63
|
+
*
|
|
64
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-new-buffer.md
|
|
65
|
+
*/
|
|
66
|
+
"security/detect-new-buffer"?: TtscLintRuleSetting;
|
|
67
|
+
/**
|
|
68
|
+
* Detect Express applications mounting `csrf` middleware before
|
|
69
|
+
* `methodOverride`, which lets the CSRF token be bypassed.
|
|
70
|
+
*
|
|
71
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-no-csrf-before-method-override.md
|
|
72
|
+
*/
|
|
73
|
+
"security/detect-no-csrf-before-method-override"?: TtscLintRuleSetting;
|
|
74
|
+
/**
|
|
75
|
+
* Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`, ...) whose
|
|
76
|
+
* filename argument is not a string literal.
|
|
77
|
+
*
|
|
78
|
+
* Dynamic filenames are the standard path-traversal sink; sanitise or
|
|
79
|
+
* allow-list before the call.
|
|
80
|
+
*
|
|
81
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-fs-filename.md
|
|
82
|
+
*/
|
|
83
|
+
"security/detect-non-literal-fs-filename"?: TtscLintRuleSetting;
|
|
84
|
+
/**
|
|
85
|
+
* Detect `new RegExp(...)` construction whose pattern argument is not a
|
|
86
|
+
* string literal.
|
|
87
|
+
*
|
|
88
|
+
* Caller-controlled patterns can both trigger catastrophic backtracking and
|
|
89
|
+
* let an attacker reshape the matcher to bypass intended validation.
|
|
90
|
+
*
|
|
91
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-regexp.md
|
|
92
|
+
*/
|
|
93
|
+
"security/detect-non-literal-regexp"?: TtscLintRuleSetting;
|
|
94
|
+
/**
|
|
95
|
+
* Detect `require(...)` calls whose specifier is computed at runtime.
|
|
96
|
+
*
|
|
97
|
+
* A dynamic specifier lets caller-controlled data choose the module to load,
|
|
98
|
+
* bypassing any module allow-list on Node.
|
|
99
|
+
*
|
|
100
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-require.md
|
|
101
|
+
*/
|
|
102
|
+
"security/detect-non-literal-require"?: TtscLintRuleSetting;
|
|
103
|
+
/**
|
|
104
|
+
* Detect dynamic bracket-access such as `obj[req.body.x] = ...`, which can
|
|
105
|
+
* let caller-controlled keys overwrite prototype-shaped properties or pull
|
|
106
|
+
* out unintended fields.
|
|
107
|
+
*
|
|
108
|
+
* Fires on virtually any computed property access; expect a high
|
|
109
|
+
* false-positive rate in normal application code.
|
|
110
|
+
*
|
|
111
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-object-injection.md
|
|
112
|
+
*/
|
|
113
|
+
"security/detect-object-injection"?: TtscLintRuleSetting;
|
|
114
|
+
/**
|
|
115
|
+
* Detect direct equality comparisons involving secret-like identifiers (`if
|
|
116
|
+
* (token === expected)`) — use `crypto.timingSafeEqual` instead.
|
|
117
|
+
*
|
|
118
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-possible-timing-attacks.md
|
|
119
|
+
*/
|
|
120
|
+
"security/detect-possible-timing-attacks"?: TtscLintRuleSetting;
|
|
121
|
+
/**
|
|
122
|
+
* Detect `crypto.pseudoRandomBytes`, which produces values that are not
|
|
123
|
+
* cryptographically secure.
|
|
124
|
+
*
|
|
125
|
+
* Tokens, session ids, and key material must use `crypto.randomBytes` (or Web
|
|
126
|
+
* Crypto's `getRandomValues`) instead.
|
|
127
|
+
*
|
|
128
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-pseudoRandomBytes.md
|
|
129
|
+
*/
|
|
130
|
+
"security/detect-pseudoRandomBytes"?: TtscLintRuleSetting;
|
|
131
|
+
/**
|
|
132
|
+
* Detect regex literals with catastrophic backtracking potential (ReDoS) —
|
|
133
|
+
* typically nested or overlapping quantifiers over the same character set.
|
|
134
|
+
*
|
|
135
|
+
* Matching caller-controlled input against such a pattern can block the event
|
|
136
|
+
* loop for seconds.
|
|
137
|
+
*
|
|
138
|
+
* @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-unsafe-regex.md
|
|
139
|
+
*/
|
|
140
|
+
"security/detect-unsafe-regex"?: TtscLintRuleSetting;
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintSecurityRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintSecurityRules.ts"],"names":[],"mappings":""}
|