@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,180 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Next.js framework rules from `@next/eslint-plugin-next`, applied to
|
|
4
|
+
* TypeScript and TSX sources inside Next.js apps.
|
|
5
|
+
*
|
|
6
|
+
* Checks Next.js-specific conventions — pages/app routing, `<Head>` placement,
|
|
7
|
+
* font and script loading, image and link components — that the framework's
|
|
8
|
+
* runtime treats as load-bearing.
|
|
9
|
+
*
|
|
10
|
+
* @reference https://nextjs.org/docs/app/api-reference/config/eslint
|
|
11
|
+
*/
|
|
12
|
+
export interface ITtscLintNextjsRules {
|
|
13
|
+
/**
|
|
14
|
+
* Require a non-blocking `display=` value on Google Fonts stylesheet links;
|
|
15
|
+
* reject `auto`, `block`, and `fallback`, which keep text invisible while the
|
|
16
|
+
* font loads and hurt LCP. Prefer `optional` or `swap`.
|
|
17
|
+
*
|
|
18
|
+
* @reference https://nextjs.org/docs/messages/google-font-display
|
|
19
|
+
*/
|
|
20
|
+
"nextjs/google-font-display"?: TtscLintRuleSetting;
|
|
21
|
+
/**
|
|
22
|
+
* Require `rel="preconnect"` for `fonts.gstatic.com` links to shave latency
|
|
23
|
+
* off Google Font fetches.
|
|
24
|
+
*
|
|
25
|
+
* @reference https://nextjs.org/docs/messages/google-font-preconnect
|
|
26
|
+
*/
|
|
27
|
+
"nextjs/google-font-preconnect"?: TtscLintRuleSetting;
|
|
28
|
+
/**
|
|
29
|
+
* Require an `id` attribute on inline `<Script>` components from
|
|
30
|
+
* `next/script`.
|
|
31
|
+
*
|
|
32
|
+
* Next.js uses the id to track the script across client navigations and to
|
|
33
|
+
* satisfy its loading-strategy budget; an inline script without one is
|
|
34
|
+
* silently dropped on subsequent renders.
|
|
35
|
+
*
|
|
36
|
+
* @reference https://nextjs.org/docs/messages/inline-script-id
|
|
37
|
+
*/
|
|
38
|
+
"nextjs/inline-script-id"?: TtscLintRuleSetting;
|
|
39
|
+
/**
|
|
40
|
+
* Prefer the Next.js Google Analytics integration over hand-written `gtag`
|
|
41
|
+
* script tags.
|
|
42
|
+
*
|
|
43
|
+
* @reference https://nextjs.org/docs/messages/next-script-for-ga
|
|
44
|
+
*/
|
|
45
|
+
"nextjs/next-script-for-ga"?: TtscLintRuleSetting;
|
|
46
|
+
/**
|
|
47
|
+
* Reject local declarations named `module`, which shadow the CommonJS
|
|
48
|
+
* `module` binding Next.js relies on.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://nextjs.org/docs/messages/no-assign-module-variable
|
|
51
|
+
*/
|
|
52
|
+
"nextjs/no-assign-module-variable"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Reject `async` function bodies on React Client Components.
|
|
55
|
+
*
|
|
56
|
+
* The client-side React runtime can't await a component's render, so an
|
|
57
|
+
* `async` `"use client"` component returns a pending promise that crashes
|
|
58
|
+
* hydration; do data fetching in a Server Component or in `useEffect`
|
|
59
|
+
* instead.
|
|
60
|
+
*
|
|
61
|
+
* @reference https://nextjs.org/docs/messages/no-async-client-component
|
|
62
|
+
*/
|
|
63
|
+
"nextjs/no-async-client-component"?: TtscLintRuleSetting;
|
|
64
|
+
/**
|
|
65
|
+
* Restrict the `next/script` `strategy="beforeInteractive"` option to
|
|
66
|
+
* `pages/_document.tsx` — anywhere else, the strategy is downgraded
|
|
67
|
+
* silently.
|
|
68
|
+
*
|
|
69
|
+
* @reference https://nextjs.org/docs/messages/no-before-interactive-script-outside-document
|
|
70
|
+
*/
|
|
71
|
+
"nextjs/no-before-interactive-script-outside-document"?: TtscLintRuleSetting;
|
|
72
|
+
/**
|
|
73
|
+
* Reject raw `<link rel="stylesheet">` tags.
|
|
74
|
+
*
|
|
75
|
+
* Next.js handles CSS through its bundler — imported stylesheets, CSS
|
|
76
|
+
* Modules, or `next/font` — and manual stylesheet links skip the runtime's
|
|
77
|
+
* critical-CSS extraction and render-blocking heuristics.
|
|
78
|
+
*
|
|
79
|
+
* @reference https://nextjs.org/docs/messages/no-css-tags
|
|
80
|
+
*/
|
|
81
|
+
"nextjs/no-css-tags"?: TtscLintRuleSetting;
|
|
82
|
+
/**
|
|
83
|
+
* Restrict `next/document` imports to `pages/_document.tsx` — `Document`
|
|
84
|
+
* cannot be used in a regular page.
|
|
85
|
+
*
|
|
86
|
+
* @reference https://nextjs.org/docs/messages/no-document-import-in-page
|
|
87
|
+
*/
|
|
88
|
+
"nextjs/no-document-import-in-page"?: TtscLintRuleSetting;
|
|
89
|
+
/**
|
|
90
|
+
* Reject more than one `<Head>` element from `next/document` in
|
|
91
|
+
* `pages/_document.tsx`.
|
|
92
|
+
*
|
|
93
|
+
* Next.js merges metadata into the single `<Head>` it renders into the HTML
|
|
94
|
+
* shell; additional instances are dropped silently and any tags inside them
|
|
95
|
+
* never reach the page.
|
|
96
|
+
*
|
|
97
|
+
* @reference https://nextjs.org/docs/messages/no-duplicate-head
|
|
98
|
+
*/
|
|
99
|
+
"nextjs/no-duplicate-head"?: TtscLintRuleSetting;
|
|
100
|
+
/**
|
|
101
|
+
* Reject raw `<head>` elements outside the `app/` directory — use `next/head`
|
|
102
|
+
* or the metadata exports.
|
|
103
|
+
*
|
|
104
|
+
* @reference https://nextjs.org/docs/messages/no-head-element
|
|
105
|
+
*/
|
|
106
|
+
"nextjs/no-head-element"?: TtscLintRuleSetting;
|
|
107
|
+
/**
|
|
108
|
+
* Reject `next/head` imports inside `pages/_document.tsx` — use
|
|
109
|
+
* `next/document`'s `Head` there.
|
|
110
|
+
*
|
|
111
|
+
* @reference https://nextjs.org/docs/messages/no-head-import-in-document
|
|
112
|
+
*/
|
|
113
|
+
"nextjs/no-head-import-in-document"?: TtscLintRuleSetting;
|
|
114
|
+
/**
|
|
115
|
+
* Prefer `next/link` for internal anchors with a static `href`, since `Link`
|
|
116
|
+
* performs client-side routing.
|
|
117
|
+
*
|
|
118
|
+
* @reference https://nextjs.org/docs/messages/no-html-link-for-pages
|
|
119
|
+
*/
|
|
120
|
+
"nextjs/no-html-link-for-pages"?: TtscLintRuleSetting;
|
|
121
|
+
/**
|
|
122
|
+
* Prefer `next/image` over raw `<img>` elements so the framework can optimize
|
|
123
|
+
* the asset.
|
|
124
|
+
*
|
|
125
|
+
* @reference https://nextjs.org/docs/messages/no-img-element
|
|
126
|
+
*/
|
|
127
|
+
"nextjs/no-img-element"?: TtscLintRuleSetting;
|
|
128
|
+
/**
|
|
129
|
+
* Reject Google font `<link>` tags inside regular pages files — load fonts in
|
|
130
|
+
* `_document.tsx` (pages router) or via `next/font` (app router).
|
|
131
|
+
*
|
|
132
|
+
* @reference https://nextjs.org/docs/messages/no-page-custom-font
|
|
133
|
+
*/
|
|
134
|
+
"nextjs/no-page-custom-font"?: TtscLintRuleSetting;
|
|
135
|
+
/**
|
|
136
|
+
* Reject `next/script` inside `next/head` — `<Script>` must appear in the JSX
|
|
137
|
+
* tree, not in `<Head>`.
|
|
138
|
+
*
|
|
139
|
+
* @reference https://nextjs.org/docs/messages/no-script-component-in-head
|
|
140
|
+
*/
|
|
141
|
+
"nextjs/no-script-component-in-head"?: TtscLintRuleSetting;
|
|
142
|
+
/**
|
|
143
|
+
* Reject styled-jsx tags inside `pages/_document.tsx`, which the server
|
|
144
|
+
* renders incorrectly.
|
|
145
|
+
*
|
|
146
|
+
* @reference https://nextjs.org/docs/messages/no-styled-jsx-in-document
|
|
147
|
+
*/
|
|
148
|
+
"nextjs/no-styled-jsx-in-document"?: TtscLintRuleSetting;
|
|
149
|
+
/**
|
|
150
|
+
* Require `async` or `defer` on external raw `<script>` tags so loading does
|
|
151
|
+
* not block render.
|
|
152
|
+
*
|
|
153
|
+
* @reference https://nextjs.org/docs/messages/no-sync-scripts
|
|
154
|
+
*/
|
|
155
|
+
"nextjs/no-sync-scripts"?: TtscLintRuleSetting;
|
|
156
|
+
/**
|
|
157
|
+
* Reject `<title>` inside `Head` from `next/document`. Set the title from the
|
|
158
|
+
* metadata exports instead.
|
|
159
|
+
*
|
|
160
|
+
* @reference https://nextjs.org/docs/messages/no-title-in-document-head
|
|
161
|
+
*/
|
|
162
|
+
"nextjs/no-title-in-document-head"?: TtscLintRuleSetting;
|
|
163
|
+
/**
|
|
164
|
+
* Catch near-miss typos in Next.js data-fetching export names
|
|
165
|
+
* (`getStaticProps`, `getStaticPaths`, `getServerSideProps`).
|
|
166
|
+
*
|
|
167
|
+
* A misspelled export is treated as ordinary module state, so the page
|
|
168
|
+
* silently falls back to client-side rendering with no build-time warning.
|
|
169
|
+
*
|
|
170
|
+
* @reference https://nextjs.org/docs/messages/no-typos
|
|
171
|
+
*/
|
|
172
|
+
"nextjs/no-typos"?: TtscLintRuleSetting;
|
|
173
|
+
/**
|
|
174
|
+
* Reject Polyfill.io script URLs — Next.js already polyfills modern browsers,
|
|
175
|
+
* and Polyfill.io has a checkered history.
|
|
176
|
+
*
|
|
177
|
+
* @reference https://nextjs.org/docs/messages/no-unwanted-polyfillio
|
|
178
|
+
*/
|
|
179
|
+
"nextjs/no-unwanted-polyfillio"?: TtscLintRuleSetting;
|
|
180
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintNextjsRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintNextjsRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Playwright end-to-end test rules from `eslint-plugin-playwright`, applied to
|
|
4
|
+
* TypeScript test files driven by the `@playwright/test` runner.
|
|
5
|
+
*
|
|
6
|
+
* Guard Playwright-specific patterns — locator usage, web-first assertions,
|
|
7
|
+
* focused/slowed tests — that would otherwise compile and run silently.
|
|
8
|
+
*
|
|
9
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright
|
|
10
|
+
*/
|
|
11
|
+
export interface ITtscLintPlaywrightRules {
|
|
12
|
+
/**
|
|
13
|
+
* Require every Playwright test body to contain at least one `expect(...)`
|
|
14
|
+
* call. A test with no assertions still passes, giving a false-positive
|
|
15
|
+
* signal.
|
|
16
|
+
*
|
|
17
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/expect-expect.md
|
|
18
|
+
*/
|
|
19
|
+
"playwright/expect-expect"?: TtscLintRuleSetting;
|
|
20
|
+
/**
|
|
21
|
+
* Limit the assertion count inside a single Playwright test body.
|
|
22
|
+
*
|
|
23
|
+
* A test packed with assertions usually verifies several user flows at once,
|
|
24
|
+
* making failures ambiguous — splitting per scenario keeps each case
|
|
25
|
+
* diagnostic.
|
|
26
|
+
*
|
|
27
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/max-expects.md
|
|
28
|
+
*/
|
|
29
|
+
"playwright/max-expects"?: TtscLintRuleSetting;
|
|
30
|
+
/**
|
|
31
|
+
* Reject `expect(...)` calls under `if`/`try`/`catch` or other conditional
|
|
32
|
+
* branches in Playwright tests.
|
|
33
|
+
*
|
|
34
|
+
* A branch that never executes turns the assertion into a silent no-op, so
|
|
35
|
+
* the test passes without verifying anything.
|
|
36
|
+
*
|
|
37
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-expect.md
|
|
38
|
+
*/
|
|
39
|
+
"playwright/no-conditional-expect"?: TtscLintRuleSetting;
|
|
40
|
+
/**
|
|
41
|
+
* Reject conditional logic (`if`/`switch`/ternary) inside Playwright test
|
|
42
|
+
* bodies.
|
|
43
|
+
*
|
|
44
|
+
* Each test should describe a single deterministic user flow; branching hides
|
|
45
|
+
* which path the runner took when reading a passing log.
|
|
46
|
+
*
|
|
47
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-in-test.md
|
|
48
|
+
*/
|
|
49
|
+
"playwright/no-conditional-in-test"?: TtscLintRuleSetting;
|
|
50
|
+
/**
|
|
51
|
+
* Reject duplicate Playwright setup/teardown hook calls
|
|
52
|
+
* (`test.beforeEach`/`test.afterEach`/etc.) in the same `test.describe`.
|
|
53
|
+
*
|
|
54
|
+
* Playwright runs both copies in declaration order, almost always a
|
|
55
|
+
* copy-paste mistake.
|
|
56
|
+
*
|
|
57
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-hooks.md
|
|
58
|
+
*/
|
|
59
|
+
"playwright/no-duplicate-hooks"?: TtscLintRuleSetting;
|
|
60
|
+
/**
|
|
61
|
+
* Reject repeated `test.slow()` calls inside the same test — the first call
|
|
62
|
+
* already marks the test slow.
|
|
63
|
+
*
|
|
64
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-slow.md
|
|
65
|
+
*/
|
|
66
|
+
"playwright/no-duplicate-slow"?: TtscLintRuleSetting;
|
|
67
|
+
/**
|
|
68
|
+
* Reject the legacy `ElementHandle`-style Playwright API (`page.$`,
|
|
69
|
+
* `page.$$`).
|
|
70
|
+
*
|
|
71
|
+
* Handles snapshot the DOM at query time and bypass Playwright's
|
|
72
|
+
* auto-waiting; locators are the modern retry-aware replacement.
|
|
73
|
+
*
|
|
74
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-element-handle.md
|
|
75
|
+
*/
|
|
76
|
+
"playwright/no-element-handle"?: TtscLintRuleSetting;
|
|
77
|
+
/**
|
|
78
|
+
* Reject `page.$eval` and `page.$$eval`.
|
|
79
|
+
*
|
|
80
|
+
* They depend on the legacy handle API and run user-supplied selectors
|
|
81
|
+
* against a frozen snapshot of the DOM — use `locator.evaluate` or inline
|
|
82
|
+
* logic in the test instead.
|
|
83
|
+
*
|
|
84
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-eval.md
|
|
85
|
+
*/
|
|
86
|
+
"playwright/no-eval"?: TtscLintRuleSetting;
|
|
87
|
+
/**
|
|
88
|
+
* Reject `test.only`, `test.describe.only`, and similar focused Playwright
|
|
89
|
+
* tests.
|
|
90
|
+
*
|
|
91
|
+
* A focused test silently skips every other test in the file, so a stray
|
|
92
|
+
* `.only` left from debugging hides the rest of the suite in CI.
|
|
93
|
+
*
|
|
94
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-focused-test.md
|
|
95
|
+
*/
|
|
96
|
+
"playwright/no-focused-test"?: TtscLintRuleSetting;
|
|
97
|
+
/**
|
|
98
|
+
* Reject Playwright `{ force: true }` options on actionable commands
|
|
99
|
+
* (`click`, `fill`, ...).
|
|
100
|
+
*
|
|
101
|
+
* `force` skips the actionability checks Playwright relies on for stability,
|
|
102
|
+
* usually papering over a real UI bug the test should be exposing.
|
|
103
|
+
*
|
|
104
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-force-option.md
|
|
105
|
+
*/
|
|
106
|
+
"playwright/no-force-option"?: TtscLintRuleSetting;
|
|
107
|
+
/**
|
|
108
|
+
* Reject `getByTitle(...)` locators.
|
|
109
|
+
*
|
|
110
|
+
* The `title` attribute is rarely set with testing in mind and often changes
|
|
111
|
+
* for i18n or cosmetic reasons, making title-based selectors among the least
|
|
112
|
+
* stable test targets.
|
|
113
|
+
*
|
|
114
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-get-by-title.md
|
|
115
|
+
*/
|
|
116
|
+
"playwright/no-get-by-title"?: TtscLintRuleSetting;
|
|
117
|
+
/**
|
|
118
|
+
* Reject Playwright `test.beforeEach`/`test.afterEach`/etc. hooks.
|
|
119
|
+
*
|
|
120
|
+
* Promotes the style where each test arranges and tears down its own state
|
|
121
|
+
* inline, so a reader can understand a single case without scrolling to a
|
|
122
|
+
* distant hook.
|
|
123
|
+
*
|
|
124
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-hooks.md
|
|
125
|
+
*/
|
|
126
|
+
"playwright/no-hooks"?: TtscLintRuleSetting;
|
|
127
|
+
/**
|
|
128
|
+
* Reject nested `test.step(...)` calls.
|
|
129
|
+
*
|
|
130
|
+
* Playwright's trace viewer collapses steps into a flat timeline, so nested
|
|
131
|
+
* steps are hard to read and usually signal that the inner step should live
|
|
132
|
+
* in its own top-level entry.
|
|
133
|
+
*
|
|
134
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nested-step.md
|
|
135
|
+
*/
|
|
136
|
+
"playwright/no-nested-step"?: TtscLintRuleSetting;
|
|
137
|
+
/**
|
|
138
|
+
* Reject the `networkidle` load-state in `page.waitForLoadState` and
|
|
139
|
+
* navigation options.
|
|
140
|
+
*
|
|
141
|
+
* Modern apps stream requests on a keep-alive socket so the state is racy;
|
|
142
|
+
* the Playwright team recommends waiting on a locator instead.
|
|
143
|
+
*
|
|
144
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-networkidle.md
|
|
145
|
+
*/
|
|
146
|
+
"playwright/no-networkidle"?: TtscLintRuleSetting;
|
|
147
|
+
/**
|
|
148
|
+
* Reject `.first()`, `.last()`, and `.nth(...)` on locators.
|
|
149
|
+
*
|
|
150
|
+
* Positional access couples the test to current DOM ordering and breaks the
|
|
151
|
+
* moment the layout changes — prefer a more specific locator (role, label,
|
|
152
|
+
* test id) that names the target directly.
|
|
153
|
+
*
|
|
154
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nth-methods.md
|
|
155
|
+
*/
|
|
156
|
+
"playwright/no-nth-methods"?: TtscLintRuleSetting;
|
|
157
|
+
/**
|
|
158
|
+
* Reject `page.pause()` debugging calls.
|
|
159
|
+
*
|
|
160
|
+
* The helper drops the runner into Playwright's inspector, which is useful
|
|
161
|
+
* locally but hangs CI indefinitely if it slips into a committed test.
|
|
162
|
+
*
|
|
163
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-page-pause.md
|
|
164
|
+
*/
|
|
165
|
+
"playwright/no-page-pause"?: TtscLintRuleSetting;
|
|
166
|
+
/**
|
|
167
|
+
* Reject `test.skip`, `test.describe.skip`, and the conditional `test.skip()`
|
|
168
|
+
* annotation.
|
|
169
|
+
*
|
|
170
|
+
* Skipped tests appear green in CI but quietly drop coverage for the feature
|
|
171
|
+
* they were meant to pin.
|
|
172
|
+
*
|
|
173
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-skipped-test.md
|
|
174
|
+
*/
|
|
175
|
+
"playwright/no-skipped-test"?: TtscLintRuleSetting;
|
|
176
|
+
/**
|
|
177
|
+
* Reject `test.slow()` marks on Playwright tests.
|
|
178
|
+
*
|
|
179
|
+
* The annotation triples the per-test timeout, usually masking a real
|
|
180
|
+
* performance regression instead of fixing the underlying wait.
|
|
181
|
+
*
|
|
182
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-slowed-test.md
|
|
183
|
+
*/
|
|
184
|
+
"playwright/no-slowed-test"?: TtscLintRuleSetting;
|
|
185
|
+
/**
|
|
186
|
+
* Reject `expect(...)` calls outside the body of a Playwright test or
|
|
187
|
+
* lifecycle hook.
|
|
188
|
+
*
|
|
189
|
+
* Top-level assertions execute at module load before any test starts, so
|
|
190
|
+
* failures never attach to a named case in the runner's report.
|
|
191
|
+
*
|
|
192
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-standalone-expect.md
|
|
193
|
+
*/
|
|
194
|
+
"playwright/no-standalone-expect"?: TtscLintRuleSetting;
|
|
195
|
+
/**
|
|
196
|
+
* Reject `page.waitForNavigation`.
|
|
197
|
+
*
|
|
198
|
+
* The helper races against navigations triggered by the very command
|
|
199
|
+
* preceding it; use a locator-based wait or the action's own `waitUntil`
|
|
200
|
+
* option to pin the post-navigation state explicitly.
|
|
201
|
+
*
|
|
202
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-navigation.md
|
|
203
|
+
*/
|
|
204
|
+
"playwright/no-wait-for-navigation"?: TtscLintRuleSetting;
|
|
205
|
+
/**
|
|
206
|
+
* Reject `page.waitForSelector`.
|
|
207
|
+
*
|
|
208
|
+
* The helper duplicates locator auto-waiting but does not share its retry
|
|
209
|
+
* semantics — prefer `locator.waitFor()` or a web-first assertion on the same
|
|
210
|
+
* locator.
|
|
211
|
+
*
|
|
212
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-selector.md
|
|
213
|
+
*/
|
|
214
|
+
"playwright/no-wait-for-selector"?: TtscLintRuleSetting;
|
|
215
|
+
/**
|
|
216
|
+
* Reject `page.waitForTimeout(ms)` sleeps.
|
|
217
|
+
*
|
|
218
|
+
* A hardcoded delay is either too short under load (flaky failures) or too
|
|
219
|
+
* long under normal conditions (slow suite); wait on a locator or response
|
|
220
|
+
* that signals readiness directly.
|
|
221
|
+
*
|
|
222
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-timeout.md
|
|
223
|
+
*/
|
|
224
|
+
"playwright/no-wait-for-timeout"?: TtscLintRuleSetting;
|
|
225
|
+
/**
|
|
226
|
+
* Prefer locator-based Playwright APIs (`page.locator(sel).click()`) over
|
|
227
|
+
* page-level convenience methods (`page.click(selector)`).
|
|
228
|
+
*
|
|
229
|
+
* Page methods re-resolve the selector each call and skip the retry semantics
|
|
230
|
+
* that make locators robust under animation.
|
|
231
|
+
*
|
|
232
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-locator.md
|
|
233
|
+
*/
|
|
234
|
+
"playwright/prefer-locator"?: TtscLintRuleSetting;
|
|
235
|
+
/**
|
|
236
|
+
* Prefer `expect(locator).toHaveCount(n)` over asserting on `await
|
|
237
|
+
* locator.count()`.
|
|
238
|
+
*
|
|
239
|
+
* The web-first matcher retries until the count stabilizes, while the awaited
|
|
240
|
+
* value is a one-shot snapshot that races against ongoing renders.
|
|
241
|
+
*
|
|
242
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-count.md
|
|
243
|
+
*/
|
|
244
|
+
"playwright/prefer-to-have-count"?: TtscLintRuleSetting;
|
|
245
|
+
/**
|
|
246
|
+
* Prefer `expect(value).toHaveLength(n)` over asserting on `value.length`
|
|
247
|
+
* directly.
|
|
248
|
+
*
|
|
249
|
+
* The dedicated matcher reports the actual length on failure instead of a
|
|
250
|
+
* bare number mismatch.
|
|
251
|
+
*
|
|
252
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-length.md
|
|
253
|
+
*/
|
|
254
|
+
"playwright/prefer-to-have-length"?: TtscLintRuleSetting;
|
|
255
|
+
/**
|
|
256
|
+
* Prefer Playwright web-first assertions (`expect(locator).toBeVisible()`,
|
|
257
|
+
* `.toHaveText(...)`) over composed manual waits.
|
|
258
|
+
*
|
|
259
|
+
* Web-first matchers retry until the predicate holds, which is how Playwright
|
|
260
|
+
* keeps tests stable under animation and network jitter.
|
|
261
|
+
*
|
|
262
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-web-first-assertions.md
|
|
263
|
+
*/
|
|
264
|
+
"playwright/prefer-web-first-assertions"?: TtscLintRuleSetting;
|
|
265
|
+
/**
|
|
266
|
+
* Require an explicit `timeout` option on `expect(...).toPass(...)`.
|
|
267
|
+
*
|
|
268
|
+
* The matcher otherwise inherits the suite-wide timeout and can strand CI
|
|
269
|
+
* when the underlying assertion never settles.
|
|
270
|
+
*
|
|
271
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-pass-timeout.md
|
|
272
|
+
*/
|
|
273
|
+
"playwright/require-to-pass-timeout"?: TtscLintRuleSetting;
|
|
274
|
+
/**
|
|
275
|
+
* Require a message argument on `expect(...).toThrow(...)`.
|
|
276
|
+
*
|
|
277
|
+
* Without a message the assertion only confirms that something threw, so a
|
|
278
|
+
* regression that throws a different error still looks green.
|
|
279
|
+
*
|
|
280
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-throw-message.md
|
|
281
|
+
*/
|
|
282
|
+
"playwright/require-to-throw-message"?: TtscLintRuleSetting;
|
|
283
|
+
/**
|
|
284
|
+
* Validate the shape of Playwright `test.describe` callbacks.
|
|
285
|
+
*
|
|
286
|
+
* The callback must be synchronous and take no arguments — Playwright ignores
|
|
287
|
+
* returned Promises and stray parameters at the describe level, silently
|
|
288
|
+
* swallowing setup errors.
|
|
289
|
+
*
|
|
290
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-describe-callback.md
|
|
291
|
+
*/
|
|
292
|
+
"playwright/valid-describe-callback"?: TtscLintRuleSetting;
|
|
293
|
+
/**
|
|
294
|
+
* Validate `expect(...)` arity and matcher chaining: exactly one argument,
|
|
295
|
+
* terminated by a matcher call, and async matchers properly awaited.
|
|
296
|
+
*
|
|
297
|
+
* Malformed expects either throw at runtime or pass without asserting
|
|
298
|
+
* anything.
|
|
299
|
+
*
|
|
300
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-expect.md
|
|
301
|
+
*/
|
|
302
|
+
"playwright/valid-expect"?: TtscLintRuleSetting;
|
|
303
|
+
/**
|
|
304
|
+
* Require non-empty static Playwright test and `describe` titles.
|
|
305
|
+
*
|
|
306
|
+
* Empty or dynamically-built titles produce unreadable reports and break
|
|
307
|
+
* filter-by-name flags like `--grep`.
|
|
308
|
+
*
|
|
309
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-title.md
|
|
310
|
+
*/
|
|
311
|
+
"playwright/valid-title"?: TtscLintRuleSetting;
|
|
312
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintPlaywrightRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintPlaywrightRules.ts"],"names":[],"mappings":""}
|