@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,146 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Vitest test source rules from `@vitest/eslint-plugin`.
|
|
5
|
+
*
|
|
6
|
+
* Vitest reuses much of Jest's testing surface but ships its own runner and
|
|
7
|
+
* configuration. These rules mirror the ergonomic subset of
|
|
8
|
+
* `eslint-plugin-jest` adapted for Vitest semantics — focused tests, identical
|
|
9
|
+
* titles, conditional logic, valid `expect` shape.
|
|
10
|
+
*
|
|
11
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest
|
|
12
|
+
*/
|
|
13
|
+
export interface ITtscLintVitestRules {
|
|
14
|
+
/**
|
|
15
|
+
* Require every Vitest test body to contain at least one `expect(...)` call.
|
|
16
|
+
* A test with no assertions still passes, giving a false-positive signal.
|
|
17
|
+
*
|
|
18
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
|
|
19
|
+
*/
|
|
20
|
+
"vitest/expect-expect"?: TtscLintRuleSetting;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Reject `expect(...)` calls under `if`/`try`/`catch` or other conditional
|
|
24
|
+
* branches in Vitest tests.
|
|
25
|
+
*
|
|
26
|
+
* A branch that never runs turns the assertion into a silent no-op rather
|
|
27
|
+
* than a failure.
|
|
28
|
+
*
|
|
29
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md
|
|
30
|
+
*/
|
|
31
|
+
"vitest/no-conditional-expect"?: TtscLintRuleSetting;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Reject `test(...)`/`it(...)` declarations inside loops or `if` branches.
|
|
35
|
+
*
|
|
36
|
+
* Vitest collects tests at module load, so a conditional declaration produces
|
|
37
|
+
* a different suite shape than the file appears to describe.
|
|
38
|
+
*
|
|
39
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md
|
|
40
|
+
*/
|
|
41
|
+
"vitest/no-conditional-tests"?: TtscLintRuleSetting;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Reject `test.skip`, `it.skip`, `describe.skip`, and `.todo` variants.
|
|
45
|
+
*
|
|
46
|
+
* Disabled tests rot in place and quietly drop coverage for the feature they
|
|
47
|
+
* were meant to pin.
|
|
48
|
+
*
|
|
49
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md
|
|
50
|
+
*/
|
|
51
|
+
"vitest/no-disabled-tests"?: TtscLintRuleSetting;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Reject `done` callback parameters in Vitest tests and lifecycle hooks.
|
|
55
|
+
*
|
|
56
|
+
* The callback style predates async/await and makes failure propagation easy
|
|
57
|
+
* to miss; return a Promise or mark the body `async` instead.
|
|
58
|
+
*
|
|
59
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md
|
|
60
|
+
*/
|
|
61
|
+
"vitest/no-done-callback"?: TtscLintRuleSetting;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Reject `test.only`, `it.only`, and `describe.only`.
|
|
65
|
+
*
|
|
66
|
+
* A focused suite silently skips the rest of the file, so a stray `.only`
|
|
67
|
+
* left from debugging hides every other test in CI.
|
|
68
|
+
*
|
|
69
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md
|
|
70
|
+
*/
|
|
71
|
+
"vitest/no-focused-tests"?: TtscLintRuleSetting;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Reject duplicate Vitest test or `describe` titles within the same suite
|
|
75
|
+
* scope.
|
|
76
|
+
*
|
|
77
|
+
* The runner cannot disambiguate two siblings with identical names in its
|
|
78
|
+
* error output or filter flags.
|
|
79
|
+
*
|
|
80
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md
|
|
81
|
+
*/
|
|
82
|
+
"vitest/no-identical-title"?: TtscLintRuleSetting;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Reject `expect(...)` calls outside Vitest tests and hooks.
|
|
86
|
+
*
|
|
87
|
+
* Top-level assertions execute at module load before any test starts, so
|
|
88
|
+
* failures never attach to a named case.
|
|
89
|
+
*
|
|
90
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md
|
|
91
|
+
*/
|
|
92
|
+
"vitest/no-standalone-expect"?: TtscLintRuleSetting;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Reject `return` statements that return non-Promise values from a Vitest
|
|
96
|
+
* test callback.
|
|
97
|
+
*
|
|
98
|
+
* The runner ignores the value and following code is dead, which usually
|
|
99
|
+
* masks a missing `await` or stray early-exit.
|
|
100
|
+
*
|
|
101
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md
|
|
102
|
+
*/
|
|
103
|
+
"vitest/no-test-return-statement"?: TtscLintRuleSetting;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Prefer `expect(value).toHaveLength(n)` over asserting on `value.length`
|
|
107
|
+
* with `toBe`.
|
|
108
|
+
*
|
|
109
|
+
* The dedicated matcher reports the actual length on failure instead of a
|
|
110
|
+
* bare number mismatch.
|
|
111
|
+
*
|
|
112
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md
|
|
113
|
+
*/
|
|
114
|
+
"vitest/prefer-to-have-length"?: TtscLintRuleSetting;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Validate the shape of Vitest `describe` callbacks.
|
|
118
|
+
*
|
|
119
|
+
* The callback must be synchronous and take no arguments — the runner ignores
|
|
120
|
+
* returned Promises and `done`-style parameters at the describe level.
|
|
121
|
+
*
|
|
122
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md
|
|
123
|
+
*/
|
|
124
|
+
"vitest/valid-describe-callback"?: TtscLintRuleSetting;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Validate `expect(...)` arity and matcher chaining: exactly one argument,
|
|
128
|
+
* terminated by a matcher call, and async matchers properly awaited.
|
|
129
|
+
*
|
|
130
|
+
* Malformed expects either throw at runtime or pass without asserting
|
|
131
|
+
* anything.
|
|
132
|
+
*
|
|
133
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md
|
|
134
|
+
*/
|
|
135
|
+
"vitest/valid-expect"?: TtscLintRuleSetting;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Require non-empty static Vitest test and `describe` titles.
|
|
139
|
+
*
|
|
140
|
+
* Empty or dynamically-built titles produce unreadable failure output and
|
|
141
|
+
* break filter-by-name flags.
|
|
142
|
+
*
|
|
143
|
+
* @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md
|
|
144
|
+
*/
|
|
145
|
+
"vitest/valid-title"?: TtscLintRuleSetting;
|
|
146
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export * from "./ITtscLintBoundariesRuleOptions";
|
|
2
|
+
export * from "./ITtscLintBoundariesRules";
|
|
3
|
+
export * from "./ITtscLintContributorRules";
|
|
4
|
+
export * from "./ITtscLintCoreRules";
|
|
5
|
+
export * from "./ITtscLintCypressRuleOptions";
|
|
6
|
+
export * from "./ITtscLintCypressRules";
|
|
7
|
+
export * from "./ITtscLintFunctionalRuleOptions";
|
|
8
|
+
export * from "./ITtscLintFunctionalRules";
|
|
9
|
+
export * from "./ITtscLintJestRules";
|
|
10
|
+
export * from "./ITtscLintJsdocRules";
|
|
11
|
+
export * from "./ITtscLintJsxA11yRules";
|
|
12
|
+
export * from "./ITtscLintNextjsRules";
|
|
13
|
+
export * from "./ITtscLintPlaywrightRules";
|
|
14
|
+
export * from "./ITtscLintPromiseRules";
|
|
15
|
+
export * from "./ITtscLintReactPerfRuleOptions";
|
|
16
|
+
export * from "./ITtscLintReactPerfRules";
|
|
17
|
+
export * from "./ITtscLintReactRuleOptions";
|
|
18
|
+
export * from "./ITtscLintReactRules";
|
|
19
|
+
export * from "./ITtscLintRegexpRules";
|
|
20
|
+
export * from "./ITtscLintRuleOptionsMap";
|
|
21
|
+
export * from "./ITtscLintRules";
|
|
22
|
+
export * from "./ITtscLintSecurityRules";
|
|
23
|
+
export * from "./ITtscLintSolidRules";
|
|
24
|
+
export * from "./ITtscLintStorybookRuleOptions";
|
|
25
|
+
export * from "./ITtscLintStorybookRules";
|
|
26
|
+
export * from "./ITtscLintTanstackQueryRules";
|
|
27
|
+
export * from "./ITtscLintTestingLibraryRuleOptions";
|
|
28
|
+
export * from "./ITtscLintTestingLibraryRules";
|
|
29
|
+
export * from "./ITtscLintTypeScriptRules";
|
|
30
|
+
export * from "./ITtscLintUnicornRules";
|
|
31
|
+
export * from "./ITtscLintVitestRules";
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
2
|
-
/**
|
|
3
|
-
* Prettier-style flat configuration for the `format/*` rules.
|
|
4
|
-
*
|
|
5
|
-
* The `format` block is the recommended way to enable formatting in
|
|
6
|
-
* `@ttsc/lint`. Each key mirrors a Prettier option of the same name — users
|
|
7
|
-
* coming from a `.prettierrc` can copy their config almost verbatim. The block
|
|
8
|
-
* is opt-in by presence: a `lint.config.ts` with no `format` field keeps every
|
|
9
|
-
* format rule off, exactly as before.
|
|
10
|
-
*
|
|
11
|
-
* Once present, the block configures a curated set of format rules at
|
|
12
|
-
* Prettier-aligned defaults. `ttsc format` uses these rules to rewrite source.
|
|
13
|
-
* `ttsc check` does not report format findings unless `severity` is set to a
|
|
14
|
-
* non-off value. Individual rules can be overridden or disabled through the
|
|
15
|
-
* `rules` map (the `rules` entry wins on conflict).
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* import type { ITtscLintConfig } from "@ttsc/lint";
|
|
19
|
-
*
|
|
20
|
-
* export default {
|
|
21
|
-
* rules: { "no-var": "error" },
|
|
22
|
-
* format: {
|
|
23
|
-
* severity: "warning",
|
|
24
|
-
* printWidth: 100,
|
|
25
|
-
* singleQuote: true,
|
|
26
|
-
* importOrder: ["<THIRD_PARTY_MODULES>", "^[./]"],
|
|
27
|
-
* },
|
|
28
|
-
* } satisfies ITtscLintConfig;
|
|
29
|
-
*
|
|
30
|
-
* Deviations from Prettier:
|
|
31
|
-
* - `endOfLine` is restricted to `"lf"` and `"crlf"`. Prettier's
|
|
32
|
-
* `"cr"` and `"auto"` modes are intentionally unsupported — the
|
|
33
|
-
* printer does not auto-detect terminators.
|
|
34
|
-
* - Many Prettier knobs (`bracketSpacing`, `arrowParens`,
|
|
35
|
-
* `quoteProps`, JSX-specific switches) are not yet implemented.
|
|
36
|
-
*
|
|
37
|
-
* Rule enablement matrix (when the `format` block is present):
|
|
38
|
-
*
|
|
39
|
-
* - `format/semi` — always on. `semi: false` flips it to `prefer:
|
|
40
|
-
* "never"`.
|
|
41
|
-
* - `format/quotes` — always on. `singleQuote: true` flips to
|
|
42
|
-
* `prefer: "single"`.
|
|
43
|
-
* - `format/trailing-comma` — always on. `trailingComma: "none"`
|
|
44
|
-
* disables the rule's edits without removing the surface.
|
|
45
|
-
* - `format/print-width` — always on, driven by `printWidth`,
|
|
46
|
-
* `tabWidth`, `useTabs`, `endOfLine`.
|
|
47
|
-
* - `format/sort-imports` — opt-in. Setting `importOrder` enables it.
|
|
48
|
-
* - `format/jsdoc` — opt-in. Setting `jsdoc` enables it.
|
|
49
|
-
*
|
|
50
|
-
* Format findings produced from this block are off by default. Set `severity`
|
|
51
|
-
* only when a project intentionally wants check-time format diagnostics.
|
|
52
|
-
*/
|
|
53
|
-
export interface ITtscLintFormatConfig {
|
|
54
|
-
/**
|
|
55
|
-
* Check-time severity for format findings generated from this block.
|
|
56
|
-
*
|
|
57
|
-
* The default is `"off"` so formatting policy does not affect compilation
|
|
58
|
-
* unless the project opts into that behavior. `ttsc format` can still use the
|
|
59
|
-
* rest of this block to rewrite files.
|
|
60
|
-
*
|
|
61
|
-
* @default "off"
|
|
62
|
-
*/
|
|
63
|
-
severity?: TtscLintSeverity;
|
|
64
|
-
/**
|
|
65
|
-
* Insert trailing semicolons on ASI-terminated statements. Mirrors Prettier's
|
|
66
|
-
* `semi`. `false` flips the rule to require _no_ trailing semicolon (rare;
|
|
67
|
-
* matches prettier's `semi: false`).
|
|
68
|
-
*
|
|
69
|
-
* @default true
|
|
70
|
-
*/
|
|
71
|
-
semi?: boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Prefer single-quoted strings. Mirrors Prettier's `singleQuote`. `false`
|
|
74
|
-
* means double quotes (Prettier's default).
|
|
75
|
-
*
|
|
76
|
-
* @default false
|
|
77
|
-
*/
|
|
78
|
-
singleQuote?: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Trailing-comma policy. Mirrors Prettier's `trailingComma`. The `"none"`
|
|
81
|
-
* mode disables the rule's edits.
|
|
82
|
-
*
|
|
83
|
-
* @default "all"
|
|
84
|
-
*/
|
|
85
|
-
trailingComma?: "all" | "es5" | "none";
|
|
86
|
-
/**
|
|
87
|
-
* Maximum column width before broken-form layout is chosen. Mirrors
|
|
88
|
-
* Prettier's `printWidth`.
|
|
89
|
-
*
|
|
90
|
-
* @default 80
|
|
91
|
-
*/
|
|
92
|
-
printWidth?: number;
|
|
93
|
-
/**
|
|
94
|
-
* Indentation increment in columns. Mirrors Prettier's `tabWidth`.
|
|
95
|
-
*
|
|
96
|
-
* @default 2
|
|
97
|
-
*/
|
|
98
|
-
tabWidth?: number;
|
|
99
|
-
/**
|
|
100
|
-
* Emit indentation as tab characters. Mirrors Prettier's `useTabs`.
|
|
101
|
-
*
|
|
102
|
-
* @default false
|
|
103
|
-
*/
|
|
104
|
-
useTabs?: boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Line terminator the printer emits on reflow. `@ttsc/lint` supports `"lf"`
|
|
107
|
-
* and `"crlf"`. Prettier's `"cr"` and `"auto"` are intentionally unsupported
|
|
108
|
-
* because the printer does not auto-detect line endings.
|
|
109
|
-
*
|
|
110
|
-
* @default "lf"
|
|
111
|
-
*/
|
|
112
|
-
endOfLine?: "lf" | "crlf";
|
|
113
|
-
/**
|
|
114
|
-
* Group order for `format/sort-imports`. Setting this enables the rule;
|
|
115
|
-
* mirrors `@trivago/prettier-plugin-sort-imports`' `importOrder`. The
|
|
116
|
-
* `<THIRD_PARTY_MODULES>` literal is the catch-all placeholder for specifiers
|
|
117
|
-
* that match no other group.
|
|
118
|
-
*/
|
|
119
|
-
importOrder?: readonly ("<THIRD_PARTY_MODULES>" | (string & {}))[];
|
|
120
|
-
/**
|
|
121
|
-
* Insert blank line between sort-imports groups.
|
|
122
|
-
*
|
|
123
|
-
* @default true
|
|
124
|
-
*/
|
|
125
|
-
importOrderSeparation?: boolean;
|
|
126
|
-
/**
|
|
127
|
-
* Sort named import specifiers alphabetically within each declaration.
|
|
128
|
-
*
|
|
129
|
-
* @default true
|
|
130
|
-
*/
|
|
131
|
-
importOrderSortSpecifiers?: boolean;
|
|
132
|
-
/**
|
|
133
|
-
* Case-insensitive comparison for sort-imports.
|
|
134
|
-
*
|
|
135
|
-
* @default false
|
|
136
|
-
*/
|
|
137
|
-
importOrderCaseInsensitive?: boolean;
|
|
138
|
-
/**
|
|
139
|
-
* Enable `format/jsdoc`. Pass `true` to turn it on with built-in defaults, or
|
|
140
|
-
* an object to customize:
|
|
141
|
-
*
|
|
142
|
-
* - `tagSynonyms` — extra `from → to` rewrites layered on the built-in synonym
|
|
143
|
-
* table.
|
|
144
|
-
* - `sortTags` — sort JSDoc tags into canonical order (reserved; today's MVP
|
|
145
|
-
* only rewrites tag names).
|
|
146
|
-
*
|
|
147
|
-
* @default false (off)
|
|
148
|
-
*/
|
|
149
|
-
jsdoc?: boolean | {
|
|
150
|
-
tagSynonyms?: Record<string, string>;
|
|
151
|
-
sortTags?: boolean;
|
|
152
|
-
};
|
|
153
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ITtscLintFormatConfig.js","sourceRoot":"","sources":["../../src/structures/ITtscLintFormatConfig.ts"],"names":[],"mappings":""}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Union of every built-in lint rule name understood by the `@ttsc/lint` native
|
|
3
|
-
* sidecar.
|
|
4
|
-
*
|
|
5
|
-
* These names intentionally mirror familiar ESLint / TypeScript-ESLint rule
|
|
6
|
-
* names so a `compilerOptions.plugins[]` entry can configure native linting
|
|
7
|
-
* without introducing a separate lint config file.
|
|
8
|
-
*
|
|
9
|
-
* The `format/*` members at the bottom of the union are applied by `ttsc
|
|
10
|
-
* format`; their severity also controls whether `ttsc check` surfaces
|
|
11
|
-
* unformatted code as a diagnostic.
|
|
12
|
-
*
|
|
13
|
-
* This type is used as the key constraint in `TtscLintRuleMap` for rules that
|
|
14
|
-
* carry no per-rule options. Rules with typed option objects are additionally
|
|
15
|
-
* listed in `ITtscLintRuleOptionsMap`.
|
|
16
|
-
*/
|
|
17
|
-
export type TtscLintRule = "adjacent-overload-signatures" | "array-type" | "await-thenable" | "ban-ts-comment" | "ban-tslint-comment" | "consistent-indexed-object-style" | "consistent-type-assertions" | "consistent-type-definitions" | "consistent-type-imports" | "default-param-last" | "dot-notation" | "eqeqeq" | "for-direction" | "no-alert" | "no-array-constructor" | "no-array-delete" | "no-async-promise-executor" | "no-bitwise" | "no-caller" | "no-case-declarations" | "no-class-assign" | "no-compare-neg-zero" | "no-cond-assign" | "no-confusing-non-null-assertion" | "no-console" | "no-constant-condition" | "no-continue" | "no-control-regex" | "no-debugger" | "no-delete-var" | "no-dupe-args" | "no-dupe-else-if" | "no-dupe-keys" | "no-duplicate-case" | "no-duplicate-enum-values" | "no-dynamic-delete" | "no-empty" | "no-empty-character-class" | "no-empty-function" | "no-empty-interface" | "no-empty-object-type" | "no-empty-pattern" | "no-empty-static-block" | "no-eq-null" | "no-eval" | "no-ex-assign" | "no-explicit-any" | "no-extra-bind" | "no-extra-boolean-cast" | "no-extra-non-null-assertion" | "no-fallthrough" | "no-func-assign" | "no-import-type-side-effects" | "no-inferrable-types" | "no-inner-declarations" | "no-irregular-whitespace" | "no-iterator" | "no-labels" | "no-lone-blocks" | "no-lonely-if" | "no-loss-of-precision" | "no-misleading-character-class" | "no-misused-new" | "no-mixed-enums" | "no-multi-assign" | "no-multi-str" | "no-namespace" | "no-negated-condition" | "no-nested-ternary" | "no-new" | "no-new-func" | "no-new-wrappers" | "no-non-null-asserted-nullish-coalescing" | "no-non-null-asserted-optional-chain" | "no-non-null-assertion" | "no-obj-calls" | "no-object-constructor" | "no-octal" | "no-octal-escape" | "no-plusplus" | "no-promise-executor-return" | "no-proto" | "no-prototype-builtins" | "no-regex-spaces" | "no-require-imports" | "no-return-assign" | "no-script-url" | "no-self-assign" | "no-self-compare" | "no-sequences" | "no-setter-return" | "no-shadow-restricted-names" | "no-sparse-arrays" | "no-template-curly-in-string" | "no-this-alias" | "no-throw-literal" | "no-undef-init" | "no-undefined" | "no-unnecessary-type-constraint" | "no-unneeded-ternary" | "no-unsafe-declaration-merging" | "no-unsafe-finally" | "no-unsafe-function-type" | "no-unsafe-negation" | "no-unused-expressions" | "no-unused-labels" | "no-useless-call" | "no-useless-catch" | "no-useless-computed-key" | "no-useless-concat" | "no-useless-constructor" | "no-useless-escape" | "no-useless-rename" | "no-var" | "no-with" | "no-wrapper-object-types" | "object-shorthand" | "operator-assignment" | "prefer-as-const" | "prefer-const" | "prefer-enum-initializers" | "prefer-exponentiation-operator" | "prefer-for-of" | "prefer-function-type" | "prefer-literal-enum-member" | "prefer-namespace-keyword" | "prefer-spread" | "prefer-template" | "radix" | "require-yield" | "triple-slash-reference" | "use-isnan" | "valid-typeof" | "vars-on-top" | "yoda" | "format/semi" | "format/quotes" | "format/trailing-comma" | "format/sort-imports" | "format/jsdoc" | "format/print-width";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TtscLintRule.js","sourceRoot":"","sources":["../../src/structures/TtscLintRule.ts"],"names":[],"mappings":""}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { TtscLintRule } from "./TtscLintRule";
|
|
2
|
-
import type { ITtscLintRuleOptionsMap } from "./TtscLintRuleOptions";
|
|
3
|
-
import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
4
|
-
/**
|
|
5
|
-
* Rule-name → severity or severity-tuple map.
|
|
6
|
-
*
|
|
7
|
-
* Built from two independent mapped types intersected together:
|
|
8
|
-
*
|
|
9
|
-
* - Rules listed in `ITtscLintRuleOptionsMap` accept `severity`, `[severity]`, or
|
|
10
|
-
* `[severity, options]`, with the options type picked per rule key.
|
|
11
|
-
* - Every other built-in rule accepts `severity` or `[severity]`.
|
|
12
|
-
* - Namespaced contributor plugin rules accept `severity`, `[severity]`, or
|
|
13
|
-
* `[severity, unknownOptions]` because the host type surface no longer knows
|
|
14
|
-
* contributor rule schemas.
|
|
15
|
-
*
|
|
16
|
-
* Splitting the two halves (instead of folding them into one mapped type with a
|
|
17
|
-
* conditional value) keeps TypeScript's contextual typing intact inside the
|
|
18
|
-
* options object literal: typing
|
|
19
|
-
*
|
|
20
|
-
* ```ts
|
|
21
|
-
* rules: {
|
|
22
|
-
* "format/sort-imports": ["warning", { importOrder: [...] }],
|
|
23
|
-
* "no-var": "error",
|
|
24
|
-
* }
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* Yields exact autocomplete on `importOrder`, `importOrderSeparation`, etc.,
|
|
28
|
-
* while `no-var` rejects any tuple beyond a bare severity.
|
|
29
|
-
*
|
|
30
|
-
* The `(string & {})` widener is intentionally absent: typos in rule names
|
|
31
|
-
* produce a `TS2353` excess-property error when the literal is checked in
|
|
32
|
-
* isolation (e.g. one negative-case-per-const). When the literal also carries
|
|
33
|
-
* other shape-incompatible entries — e.g. `prefre` typo on `format/quotes` next
|
|
34
|
-
* to the rule-name typo — TS sometimes elides the rule-name error after
|
|
35
|
-
* reporting the option-key error first. The test at
|
|
36
|
-
* `tests/test-lint/.../test_lib_index_d_ts_rule_options_autocomplete_per_rule.ts`
|
|
37
|
-
* splits each negative case into its own const to keep every branch
|
|
38
|
-
* load-bearing.
|
|
39
|
-
*/
|
|
40
|
-
export type TtscLintRuleMap = {
|
|
41
|
-
[K in keyof ITtscLintRuleOptionsMap]?: TtscLintSeverity | readonly [TtscLintSeverity] | readonly [TtscLintSeverity, ITtscLintRuleOptionsMap[K]];
|
|
42
|
-
} & {
|
|
43
|
-
[K in Exclude<TtscLintRule, keyof ITtscLintRuleOptionsMap>]?: TtscLintSeverity | readonly [TtscLintSeverity];
|
|
44
|
-
} & {
|
|
45
|
-
[K in `${string}/${string}`]?: TtscLintSeverity | readonly [TtscLintSeverity] | readonly [TtscLintSeverity, unknown];
|
|
46
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TtscLintRuleMap.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleMap.ts"],"names":[],"mappings":""}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/** `format/semi` rule options. */
|
|
2
|
-
export interface ITtscLintSemiRuleOptions {
|
|
3
|
-
/**
|
|
4
|
-
* Whether trailing semicolons must be present on ASI statements.
|
|
5
|
-
*
|
|
6
|
-
* @default "always"
|
|
7
|
-
*/
|
|
8
|
-
prefer?: "always" | "never";
|
|
9
|
-
}
|
|
10
|
-
/** `format/quotes` rule options. */
|
|
11
|
-
export interface ITtscLintQuotesRuleOptions {
|
|
12
|
-
/**
|
|
13
|
-
* Quote style for string literals. Template literals are always preserved
|
|
14
|
-
* regardless of this setting.
|
|
15
|
-
*
|
|
16
|
-
* @default "double"
|
|
17
|
-
*/
|
|
18
|
-
prefer?: "double" | "single";
|
|
19
|
-
}
|
|
20
|
-
/** `format/trailing-comma` rule options. */
|
|
21
|
-
export interface ITtscLintTrailingCommaRuleOptions {
|
|
22
|
-
/**
|
|
23
|
-
* Which multi-line lists receive a trailing comma. `"all"` matches prettier's
|
|
24
|
-
* modern default; `"es5"` skips function calls and type parameter lists;
|
|
25
|
-
* `"none"` disables the rule entirely.
|
|
26
|
-
*
|
|
27
|
-
* @default "all"
|
|
28
|
-
*/
|
|
29
|
-
mode?: "all" | "es5" | "none";
|
|
30
|
-
}
|
|
31
|
-
/** `format/sort-imports` rule options. */
|
|
32
|
-
export interface ITtscLintSortImportsRuleOptions {
|
|
33
|
-
/**
|
|
34
|
-
* Ordered list of regex strings (or the `<THIRD_PARTY_MODULES>` placeholder)
|
|
35
|
-
* defining the group order. Imports matching the first pattern land in group
|
|
36
|
-
* 0, the second in group 1, and so on. The placeholder absorbs any specifier
|
|
37
|
-
* that does not match another pattern. Mirrors trivago's `importOrder`
|
|
38
|
-
* semantics.
|
|
39
|
-
*/
|
|
40
|
-
importOrder?: readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* Insert a blank line between groups.
|
|
43
|
-
*
|
|
44
|
-
* @default true
|
|
45
|
-
*/
|
|
46
|
-
importOrderSeparation?: boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Sort named import specifiers alphabetically within each declaration.
|
|
49
|
-
*
|
|
50
|
-
* @default true
|
|
51
|
-
*/
|
|
52
|
-
importOrderSortSpecifiers?: boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Treat `A` and `a` as equivalent when comparing module specifiers and
|
|
55
|
-
* specifier names. Mirrors trivago's `importOrderCaseInsensitive`.
|
|
56
|
-
*
|
|
57
|
-
* @default false
|
|
58
|
-
*/
|
|
59
|
-
importOrderCaseInsensitive?: boolean;
|
|
60
|
-
}
|
|
61
|
-
/** `format/print-width` rule options. */
|
|
62
|
-
export interface ITtscLintPrintWidthRuleOptions {
|
|
63
|
-
/**
|
|
64
|
-
* Maximum column width before broken-form layout is chosen. Mirrors
|
|
65
|
-
* prettier's `printWidth`.
|
|
66
|
-
*
|
|
67
|
-
* @default 80
|
|
68
|
-
*/
|
|
69
|
-
printWidth?: number;
|
|
70
|
-
/**
|
|
71
|
-
* Indentation increment in columns. Mirrors prettier's `tabWidth`.
|
|
72
|
-
*
|
|
73
|
-
* @default 2
|
|
74
|
-
*/
|
|
75
|
-
tabWidth?: number;
|
|
76
|
-
/**
|
|
77
|
-
* Emit indentation as tab characters rather than spaces. Mirrors prettier's
|
|
78
|
-
* `useTabs`. Continuation alignment beyond the tab boundary still falls back
|
|
79
|
-
* to spaces, matching dprint's "indent with tabs, align with spaces"
|
|
80
|
-
* convention.
|
|
81
|
-
*
|
|
82
|
-
* @default false
|
|
83
|
-
*/
|
|
84
|
-
useTabs?: boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Line-terminator emitted on every newline the printer inserts. Mirrors
|
|
87
|
-
* prettier's `endOfLine` `"lf"` and `"crlf"` modes.
|
|
88
|
-
*
|
|
89
|
-
* @default "lf"
|
|
90
|
-
*/
|
|
91
|
-
endOfLine?: "lf" | "crlf";
|
|
92
|
-
/**
|
|
93
|
-
* Trailing-comma policy the reflow honors when it breaks a list across
|
|
94
|
-
* lines. Mirrors prettier's `trailingComma` and must match the
|
|
95
|
-
* `format/trailing-comma` rule's `mode`; otherwise the two rules
|
|
96
|
-
* disagree on every cascade pass and oscillate against each other.
|
|
97
|
-
*
|
|
98
|
-
* When a `format` block is configured, `format.trailingComma` is mirrored
|
|
99
|
-
* into this option automatically. Set it directly only when overriding
|
|
100
|
-
* the print-width rule via a `rules` tuple — see the conflict-resolution
|
|
101
|
-
* notes in the README.
|
|
102
|
-
*
|
|
103
|
-
* @default "all"
|
|
104
|
-
*/
|
|
105
|
-
trailingComma?: "all" | "es5" | "none";
|
|
106
|
-
}
|
|
107
|
-
/** `format/jsdoc` rule options. */
|
|
108
|
-
export interface ITtscLintJsdocRuleOptions {
|
|
109
|
-
/**
|
|
110
|
-
* Extra `from -> to` tag rewrites layered on top of the built-in synonym
|
|
111
|
-
* table (`@return -> @returns`, `@arg -> @param`, etc.). User-supplied
|
|
112
|
-
* entries win on key collision, so a `{"return": "RETURN"}` entry overrides
|
|
113
|
-
* the built-in default for `@return`.
|
|
114
|
-
*
|
|
115
|
-
* @default {} (use built-in table unchanged)
|
|
116
|
-
*/
|
|
117
|
-
tagSynonyms?: Record<string, string>;
|
|
118
|
-
/**
|
|
119
|
-
* Sort JSDoc tag blocks into the canonical order (`@description`, `@param`,
|
|
120
|
-
* `@returns`, ...).
|
|
121
|
-
*
|
|
122
|
-
* @default false (deferred; MVP only normalizes tag names)
|
|
123
|
-
*/
|
|
124
|
-
sortTags?: boolean;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Index from rule name to its option object. `TtscLintRuleMap` uses this to
|
|
128
|
-
* produce precise tuple types per rule.
|
|
129
|
-
*/
|
|
130
|
-
export interface ITtscLintRuleOptionsMap {
|
|
131
|
-
"format/semi": ITtscLintSemiRuleOptions;
|
|
132
|
-
"format/quotes": ITtscLintQuotesRuleOptions;
|
|
133
|
-
"format/trailing-comma": ITtscLintTrailingCommaRuleOptions;
|
|
134
|
-
"format/sort-imports": ITtscLintSortImportsRuleOptions;
|
|
135
|
-
"format/jsdoc": ITtscLintJsdocRuleOptions;
|
|
136
|
-
"format/print-width": ITtscLintPrintWidthRuleOptions;
|
|
137
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TtscLintRuleOptions.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleOptions.ts"],"names":[],"mappings":""}
|