@ttsc/lint 0.13.1 → 0.14.0-dev.20260528.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +948 -69
- package/lib/defaultFormat.d.ts +9 -6
- package/lib/defaultFormat.js +9 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/index.d.ts +46 -0
- package/lib/index.js +35 -10
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +12 -6
- package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
- package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
- package/lib/structures/ITtscLintFormat.js.map +1 -0
- package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
- package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
- package/lib/structures/TtscLintRuleSetting.js.map +1 -0
- package/lib/structures/index.d.ts +3 -4
- package/lib/structures/index.js +3 -4
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
- package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
- package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
- package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
- package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
- package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
- package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
- package/lib/structures/rules/ITtscLintJestRules.js +3 -0
- package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
- package/lib/structures/rules/ITtscLintReactRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
- package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
- package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
- package/lib/structures/rules/ITtscLintRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
- package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
- package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
- package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
- package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
- package/lib/structures/rules/index.d.ts +31 -0
- package/lib/structures/rules/index.js +48 -0
- package/lib/structures/rules/index.js.map +1 -0
- package/linthost/ast_helpers.go +30 -5
- package/linthost/config.go +48 -17
- package/linthost/config_format.go +9 -9
- package/linthost/directives.go +67 -25
- package/linthost/dispatch.go +14 -3
- package/linthost/engine.go +152 -31
- package/linthost/fix.go +2 -2
- package/linthost/lsp.go +747 -0
- package/linthost/print_dispatch.go +2 -2
- package/linthost/print_nodes_function.go +2 -2
- package/linthost/print_nodes_object.go +1 -1
- package/linthost/rule_names.go +14 -0
- package/linthost/rules_arrays.go +2 -2
- package/linthost/rules_boundaries.go +532 -0
- package/linthost/rules_camelcase.go +133 -0
- package/linthost/rules_complexity.go +94 -0
- package/linthost/rules_consistent_return.go +130 -0
- package/linthost/rules_console.go +1 -1
- package/linthost/rules_core_extra.go +739 -0
- package/linthost/rules_curly.go +70 -0
- package/linthost/rules_cypress.go +608 -0
- package/linthost/rules_debugger.go +2 -2
- package/linthost/rules_default_case.go +39 -0
- package/linthost/rules_default_case_last.go +46 -0
- package/linthost/rules_dupes.go +3 -3
- package/linthost/rules_empty.go +3 -3
- package/linthost/rules_escape.go +44 -24
- package/linthost/rules_eval.go +2 -2
- package/linthost/rules_finally.go +2 -2
- package/linthost/rules_format_jsdoc.go +1 -1
- package/linthost/rules_format_print_width.go +9 -9
- package/linthost/rules_format_quotes.go +1 -1
- package/linthost/rules_format_semi.go +1 -1
- package/linthost/rules_format_sort_imports.go +1 -1
- package/linthost/rules_format_trailing_comma.go +1 -1
- package/linthost/rules_functional.go +967 -0
- package/linthost/rules_gap.go +24 -45
- package/linthost/rules_grouped_accessor_pairs.go +87 -0
- package/linthost/rules_guard_for_in.go +198 -0
- package/linthost/rules_id_length.go +77 -0
- package/linthost/rules_imports.go +70 -2
- package/linthost/rules_init_declarations.go +53 -0
- package/linthost/rules_jest.go +618 -0
- package/linthost/rules_jsdoc.go +502 -0
- package/linthost/rules_jsx_a11y.go +1264 -0
- package/linthost/rules_logic.go +12 -12
- package/linthost/rules_loops.go +1 -1
- package/linthost/rules_max_classes_per_file.go +58 -0
- package/linthost/rules_max_depth.go +83 -0
- package/linthost/rules_max_lines.go +101 -0
- package/linthost/rules_max_lines_per_function.go +57 -0
- package/linthost/rules_max_nested_callbacks.go +61 -0
- package/linthost/rules_max_params.go +49 -0
- package/linthost/rules_max_statements.go +59 -0
- package/linthost/rules_misc.go +1 -1
- package/linthost/rules_nextjs.go +697 -0
- package/linthost/rules_no_else_return.go +75 -0
- package/linthost/rules_no_empty_named_blocks.go +91 -0
- package/linthost/rules_no_extend_native.go +51 -0
- package/linthost/rules_no_import_assign.go +140 -0
- package/linthost/rules_no_invalid_this.go +52 -0
- package/linthost/rules_no_loop_func.go +85 -0
- package/linthost/rules_no_magic_numbers.go +123 -0
- package/linthost/rules_no_mixed_operators.go +80 -0
- package/linthost/rules_no_param_reassign.go +98 -0
- package/linthost/rules_no_redeclare.go +270 -0
- package/linthost/rules_no_restricted_imports.go +105 -0
- package/linthost/rules_no_restricted_syntax.go +49 -0
- package/linthost/rules_no_shadow.go +147 -0
- package/linthost/rules_no_unreachable.go +77 -0
- package/linthost/rules_no_useless_assignment.go +120 -0
- package/linthost/rules_no_useless_constructor.go +245 -0
- package/linthost/rules_no_useless_return.go +51 -0
- package/linthost/rules_params.go +1 -1
- package/linthost/rules_playwright.go +788 -0
- package/linthost/rules_prefer_arrow_callback.go +124 -0
- package/linthost/rules_prefer_destructuring.go +98 -0
- package/linthost/rules_prefer_named_capture_group.go +129 -0
- package/linthost/rules_prefer_rest_params.go +94 -0
- package/linthost/rules_problems.go +41 -30
- package/linthost/rules_promise.go +1128 -73
- package/linthost/rules_protos.go +2 -2
- package/linthost/rules_react.go +773 -0
- package/linthost/rules_react_extras.go +227 -0
- package/linthost/rules_react_hooks.go +848 -0
- package/linthost/rules_react_perf.go +293 -0
- package/linthost/rules_react_refresh.go +583 -0
- package/linthost/rules_regexp.go +410 -0
- package/linthost/rules_security.go +830 -0
- package/linthost/rules_self.go +2 -2
- package/linthost/rules_solid.go +1073 -0
- package/linthost/rules_sort_imports.go +69 -0
- package/linthost/rules_sort_keys.go +134 -0
- package/linthost/rules_storybook.go +1176 -0
- package/linthost/rules_strings.go +4 -4
- package/linthost/rules_suggestions.go +38 -38
- package/linthost/rules_tanstack_query.go +844 -0
- package/linthost/rules_testing_library.go +1204 -0
- package/linthost/rules_throw.go +1 -1
- package/linthost/rules_ts.go +19 -19
- package/linthost/rules_ts_async.go +399 -0
- package/linthost/rules_ts_class_literal_property_style.go +115 -0
- package/linthost/rules_ts_consistent_type_exports.go +256 -0
- package/linthost/rules_ts_explicit_function_return_type.go +67 -0
- package/linthost/rules_ts_extra.go +155 -36
- package/linthost/rules_ts_no_base_to_string.go +218 -0
- package/linthost/rules_ts_no_confusing_void.go +72 -0
- package/linthost/rules_ts_no_deprecated.go +195 -0
- package/linthost/rules_ts_no_for_in_array.go +84 -0
- package/linthost/rules_ts_no_magic_numbers.go +124 -0
- package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
- package/linthost/rules_ts_no_misused_spread.go +104 -0
- package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
- package/linthost/rules_ts_no_restricted_types.go +62 -0
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
- package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
- package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
- package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
- package/linthost/rules_ts_no_unsafe_argument.go +82 -0
- package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
- package/linthost/rules_ts_no_unsafe_call.go +82 -0
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
- package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
- package/linthost/rules_ts_no_unsafe_return.go +126 -0
- package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
- package/linthost/rules_ts_no_useless_constructor.go +52 -0
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
- package/linthost/rules_ts_parameter_properties.go +38 -0
- package/linthost/rules_ts_prefer_find.go +178 -0
- package/linthost/rules_ts_prefer_includes.go +255 -0
- package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
- package/linthost/rules_ts_prefer_optional_chain.go +228 -0
- package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
- package/linthost/rules_ts_prefer_readonly.go +73 -0
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
- package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
- package/linthost/rules_ts_prefer_return_this_type.go +135 -0
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
- package/linthost/rules_ts_promise_function_async.go +77 -0
- package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
- package/linthost/rules_ts_require_array_sort_compare.go +96 -0
- package/linthost/rules_ts_restrict_plus_operands.go +127 -0
- package/linthost/rules_ts_restrict_template_expressions.go +95 -0
- package/linthost/rules_ts_simple.go +387 -0
- package/linthost/rules_ts_sort_type_constituents.go +144 -0
- package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
- package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
- package/linthost/rules_ts_unbound_method.go +126 -0
- package/linthost/rules_tsdoc.go +136 -0
- package/linthost/rules_unicorn_better_regex.go +27 -0
- package/linthost/rules_unicorn_catch_error_name.go +46 -0
- package/linthost/rules_unicorn_consistent_assert.go +47 -0
- package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
- package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
- package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
- package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
- package/linthost/rules_unicorn_custom_error_definition.go +138 -0
- package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
- package/linthost/rules_unicorn_error_message.go +64 -0
- package/linthost/rules_unicorn_escape_case.go +51 -0
- package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
- package/linthost/rules_unicorn_explicit_length_check.go +88 -0
- package/linthost/rules_unicorn_filename_case.go +29 -0
- package/linthost/rules_unicorn_import_style.go +28 -0
- package/linthost/rules_unicorn_isolated_functions.go +29 -0
- package/linthost/rules_unicorn_new_for_builtins.go +87 -0
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
- package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
- package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
- package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
- package/linthost/rules_unicorn_no_array_for_each.go +40 -0
- package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
- package/linthost/rules_unicorn_no_array_reduce.go +41 -0
- package/linthost/rules_unicorn_no_array_reverse.go +44 -0
- package/linthost/rules_unicorn_no_array_sort.go +43 -0
- package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
- package/linthost/rules_unicorn_no_console_spaces.go +61 -0
- package/linthost/rules_unicorn_no_document_cookie.go +41 -0
- package/linthost/rules_unicorn_no_empty_file.go +44 -0
- package/linthost/rules_unicorn_no_for_loop.go +102 -0
- package/linthost/rules_unicorn_no_hex_escape.go +42 -0
- package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
- package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
- package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
- package/linthost/rules_unicorn_no_lonely_if.go +44 -0
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
- package/linthost/rules_unicorn_no_named_default.go +54 -0
- package/linthost/rules_unicorn_no_negated_condition.go +85 -0
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
- package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
- package/linthost/rules_unicorn_no_new_array.go +30 -0
- package/linthost/rules_unicorn_no_new_buffer.go +31 -0
- package/linthost/rules_unicorn_no_null.go +24 -0
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
- package/linthost/rules_unicorn_no_process_exit.go +43 -0
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
- package/linthost/rules_unicorn_no_static_only_class.go +56 -0
- package/linthost/rules_unicorn_no_thenable.go +74 -0
- package/linthost/rules_unicorn_no_this_assignment.go +35 -0
- package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
- package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
- package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
- package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
- package/linthost/rules_unicorn_no_unused_properties.go +30 -0
- package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
- package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
- package/linthost/rules_unicorn_no_useless_spread.go +67 -0
- package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
- package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
- package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
- package/linthost/rules_unicorn_number_literal_case.go +69 -0
- package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
- package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
- package/linthost/rules_unicorn_prefer_array_find.go +51 -0
- package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
- package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
- package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
- package/linthost/rules_unicorn_prefer_array_some.go +67 -0
- package/linthost/rules_unicorn_prefer_at.go +77 -0
- package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
- package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
- package/linthost/rules_unicorn_prefer_code_point.go +49 -0
- package/linthost/rules_unicorn_prefer_date_now.go +78 -0
- package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
- package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
- package/linthost/rules_unicorn_prefer_event_target.go +36 -0
- package/linthost/rules_unicorn_prefer_export_from.go +129 -0
- package/linthost/rules_unicorn_prefer_global_this.go +127 -0
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
- package/linthost/rules_unicorn_prefer_includes.go +149 -0
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
- package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
- package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
- package/linthost/rules_unicorn_prefer_module.go +50 -0
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
- package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
- package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
- package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
- package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
- package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
- package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
- package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
- package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
- package/linthost/rules_unicorn_prefer_set_has.go +42 -0
- package/linthost/rules_unicorn_prefer_set_size.go +48 -0
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
- package/linthost/rules_unicorn_prefer_single_call.go +96 -0
- package/linthost/rules_unicorn_prefer_spread.go +51 -0
- package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
- package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
- package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
- package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
- package/linthost/rules_unicorn_prefer_switch.go +103 -0
- package/linthost/rules_unicorn_prefer_ternary.go +71 -0
- package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
- package/linthost/rules_unicorn_prefer_type_error.go +127 -0
- package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
- package/linthost/rules_unicorn_relative_url_style.go +49 -0
- package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
- package/linthost/rules_unicorn_require_module_attributes.go +54 -0
- package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
- package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
- package/linthost/rules_unicorn_string_content.go +27 -0
- package/linthost/rules_unicorn_switch_case_braces.go +42 -0
- package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
- package/linthost/rules_unicorn_template_indent.go +28 -0
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
- package/linthost/rules_unicorn_throw_new_error.go +61 -0
- package/linthost/rules_var.go +4 -4
- package/linthost/rules_vitest.go +568 -0
- package/package.json +3 -3
- package/plugin/main.go +49 -3
- package/rule/astutil/astutil.go +10 -3
- package/rule/rule.go +12 -10
- package/src/defaultFormat.ts +11 -8
- package/src/index.ts +40 -16
- package/src/structures/ITtscLintConfig.ts +12 -6
- package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
- package/src/structures/TtscLintRuleSetting.ts +55 -0
- package/src/structures/index.ts +3 -4
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
- package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
- package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
- package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
- package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
- package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
- package/src/structures/rules/ITtscLintJestRules.ts +220 -0
- package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
- package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
- package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
- package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
- package/src/structures/rules/ITtscLintReactRules.ts +321 -0
- package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
- package/src/structures/rules/ITtscLintRules.ts +77 -0
- package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
- package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
- package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
- package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
- package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
- package/src/structures/rules/index.ts +31 -0
- package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
- package/lib/structures/TtscLintRule.d.ts +0 -17
- package/lib/structures/TtscLintRule.js.map +0 -1
- package/lib/structures/TtscLintRuleMap.d.ts +0 -46
- package/lib/structures/TtscLintRuleMap.js.map +0 -1
- package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
- package/lib/structures/TtscLintRuleOptions.js.map +0 -1
- package/src/structures/TtscLintRule.ts +0 -160
- package/src/structures/TtscLintRuleMap.ts +0 -55
- package/src/structures/TtscLintRuleOptions.ts +0 -151
|
@@ -0,0 +1,185 @@
|
|
|
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>`
|
|
7
|
+
* placement, font and script loading, image and link components —
|
|
8
|
+
* that the framework's 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
|
|
15
|
+
* stylesheet links; reject `auto`, `block`, and `fallback`, which
|
|
16
|
+
* keep text invisible while the font loads and hurt LCP. Prefer
|
|
17
|
+
* `optional` or `swap`.
|
|
18
|
+
*
|
|
19
|
+
* @reference https://nextjs.org/docs/messages/google-font-display
|
|
20
|
+
*/
|
|
21
|
+
"nextjs/google-font-display"?: TtscLintRuleSetting;
|
|
22
|
+
/**
|
|
23
|
+
* Require `rel="preconnect"` for `fonts.gstatic.com` links to
|
|
24
|
+
* shave latency off Google Font fetches.
|
|
25
|
+
*
|
|
26
|
+
* @reference https://nextjs.org/docs/messages/google-font-preconnect
|
|
27
|
+
*/
|
|
28
|
+
"nextjs/google-font-preconnect"?: TtscLintRuleSetting;
|
|
29
|
+
/**
|
|
30
|
+
* Require an `id` attribute on inline `<Script>` components from
|
|
31
|
+
* `next/script`.
|
|
32
|
+
*
|
|
33
|
+
* Next.js uses the id to track the script across client
|
|
34
|
+
* navigations and to satisfy its loading-strategy budget; an
|
|
35
|
+
* inline script without one is silently dropped on subsequent
|
|
36
|
+
* renders.
|
|
37
|
+
*
|
|
38
|
+
* @reference https://nextjs.org/docs/messages/inline-script-id
|
|
39
|
+
*/
|
|
40
|
+
"nextjs/inline-script-id"?: TtscLintRuleSetting;
|
|
41
|
+
/**
|
|
42
|
+
* Prefer the Next.js Google Analytics integration over
|
|
43
|
+
* hand-written `gtag` script tags.
|
|
44
|
+
*
|
|
45
|
+
* @reference https://nextjs.org/docs/messages/next-script-for-ga
|
|
46
|
+
*/
|
|
47
|
+
"nextjs/next-script-for-ga"?: TtscLintRuleSetting;
|
|
48
|
+
/**
|
|
49
|
+
* Reject local declarations named `module`, which shadow the
|
|
50
|
+
* CommonJS `module` binding Next.js relies on.
|
|
51
|
+
*
|
|
52
|
+
* @reference https://nextjs.org/docs/messages/no-assign-module-variable
|
|
53
|
+
*/
|
|
54
|
+
"nextjs/no-assign-module-variable"?: TtscLintRuleSetting;
|
|
55
|
+
/**
|
|
56
|
+
* Reject `async` function bodies on React Client Components.
|
|
57
|
+
*
|
|
58
|
+
* The client-side React runtime can't await a component's render,
|
|
59
|
+
* so an `async` `"use client"` component returns a pending promise
|
|
60
|
+
* that crashes hydration; do data fetching in a Server Component
|
|
61
|
+
* or in `useEffect` instead.
|
|
62
|
+
*
|
|
63
|
+
* @reference https://nextjs.org/docs/messages/no-async-client-component
|
|
64
|
+
*/
|
|
65
|
+
"nextjs/no-async-client-component"?: TtscLintRuleSetting;
|
|
66
|
+
/**
|
|
67
|
+
* Restrict the `next/script` `strategy="beforeInteractive"` option
|
|
68
|
+
* to `pages/_document.tsx` — anywhere else, the strategy is
|
|
69
|
+
* downgraded silently.
|
|
70
|
+
*
|
|
71
|
+
* @reference https://nextjs.org/docs/messages/no-before-interactive-script-outside-document
|
|
72
|
+
*/
|
|
73
|
+
"nextjs/no-before-interactive-script-outside-document"?: TtscLintRuleSetting;
|
|
74
|
+
/**
|
|
75
|
+
* Reject raw `<link rel="stylesheet">` tags.
|
|
76
|
+
*
|
|
77
|
+
* Next.js handles CSS through its bundler — imported stylesheets,
|
|
78
|
+
* CSS Modules, or `next/font` — and manual stylesheet links skip
|
|
79
|
+
* the runtime's critical-CSS extraction and render-blocking
|
|
80
|
+
* heuristics.
|
|
81
|
+
*
|
|
82
|
+
* @reference https://nextjs.org/docs/messages/no-css-tags
|
|
83
|
+
*/
|
|
84
|
+
"nextjs/no-css-tags"?: TtscLintRuleSetting;
|
|
85
|
+
/**
|
|
86
|
+
* Restrict `next/document` imports to `pages/_document.tsx` —
|
|
87
|
+
* `Document` cannot be used in a regular page.
|
|
88
|
+
*
|
|
89
|
+
* @reference https://nextjs.org/docs/messages/no-document-import-in-page
|
|
90
|
+
*/
|
|
91
|
+
"nextjs/no-document-import-in-page"?: TtscLintRuleSetting;
|
|
92
|
+
/**
|
|
93
|
+
* Reject more than one `<Head>` element from `next/document` in
|
|
94
|
+
* `pages/_document.tsx`.
|
|
95
|
+
*
|
|
96
|
+
* Next.js merges metadata into the single `<Head>` it renders into
|
|
97
|
+
* the HTML shell; additional instances are dropped silently and
|
|
98
|
+
* any tags inside them never reach the page.
|
|
99
|
+
*
|
|
100
|
+
* @reference https://nextjs.org/docs/messages/no-duplicate-head
|
|
101
|
+
*/
|
|
102
|
+
"nextjs/no-duplicate-head"?: TtscLintRuleSetting;
|
|
103
|
+
/**
|
|
104
|
+
* Reject raw `<head>` elements outside the `app/` directory —
|
|
105
|
+
* use `next/head` or the metadata exports.
|
|
106
|
+
*
|
|
107
|
+
* @reference https://nextjs.org/docs/messages/no-head-element
|
|
108
|
+
*/
|
|
109
|
+
"nextjs/no-head-element"?: TtscLintRuleSetting;
|
|
110
|
+
/**
|
|
111
|
+
* Reject `next/head` imports inside `pages/_document.tsx` — use
|
|
112
|
+
* `next/document`'s `Head` there.
|
|
113
|
+
*
|
|
114
|
+
* @reference https://nextjs.org/docs/messages/no-head-import-in-document
|
|
115
|
+
*/
|
|
116
|
+
"nextjs/no-head-import-in-document"?: TtscLintRuleSetting;
|
|
117
|
+
/**
|
|
118
|
+
* Prefer `next/link` for internal anchors with a static `href`,
|
|
119
|
+
* since `Link` performs client-side routing.
|
|
120
|
+
*
|
|
121
|
+
* @reference https://nextjs.org/docs/messages/no-html-link-for-pages
|
|
122
|
+
*/
|
|
123
|
+
"nextjs/no-html-link-for-pages"?: TtscLintRuleSetting;
|
|
124
|
+
/**
|
|
125
|
+
* Prefer `next/image` over raw `<img>` elements so the framework
|
|
126
|
+
* can optimize the asset.
|
|
127
|
+
*
|
|
128
|
+
* @reference https://nextjs.org/docs/messages/no-img-element
|
|
129
|
+
*/
|
|
130
|
+
"nextjs/no-img-element"?: TtscLintRuleSetting;
|
|
131
|
+
/**
|
|
132
|
+
* Reject Google font `<link>` tags inside regular pages files —
|
|
133
|
+
* load fonts in `_document.tsx` (pages router) or via
|
|
134
|
+
* `next/font` (app router).
|
|
135
|
+
*
|
|
136
|
+
* @reference https://nextjs.org/docs/messages/no-page-custom-font
|
|
137
|
+
*/
|
|
138
|
+
"nextjs/no-page-custom-font"?: TtscLintRuleSetting;
|
|
139
|
+
/**
|
|
140
|
+
* Reject `next/script` inside `next/head` — `<Script>` must
|
|
141
|
+
* appear in the JSX tree, not in `<Head>`.
|
|
142
|
+
*
|
|
143
|
+
* @reference https://nextjs.org/docs/messages/no-script-component-in-head
|
|
144
|
+
*/
|
|
145
|
+
"nextjs/no-script-component-in-head"?: TtscLintRuleSetting;
|
|
146
|
+
/**
|
|
147
|
+
* Reject styled-jsx tags inside `pages/_document.tsx`, which the
|
|
148
|
+
* server renders incorrectly.
|
|
149
|
+
*
|
|
150
|
+
* @reference https://nextjs.org/docs/messages/no-styled-jsx-in-document
|
|
151
|
+
*/
|
|
152
|
+
"nextjs/no-styled-jsx-in-document"?: TtscLintRuleSetting;
|
|
153
|
+
/**
|
|
154
|
+
* Require `async` or `defer` on external raw `<script>` tags so
|
|
155
|
+
* loading does not block render.
|
|
156
|
+
*
|
|
157
|
+
* @reference https://nextjs.org/docs/messages/no-sync-scripts
|
|
158
|
+
*/
|
|
159
|
+
"nextjs/no-sync-scripts"?: TtscLintRuleSetting;
|
|
160
|
+
/**
|
|
161
|
+
* Reject `<title>` inside `Head` from `next/document`. Set the
|
|
162
|
+
* title from the metadata exports instead.
|
|
163
|
+
*
|
|
164
|
+
* @reference https://nextjs.org/docs/messages/no-title-in-document-head
|
|
165
|
+
*/
|
|
166
|
+
"nextjs/no-title-in-document-head"?: TtscLintRuleSetting;
|
|
167
|
+
/**
|
|
168
|
+
* Catch near-miss typos in Next.js data-fetching export names
|
|
169
|
+
* (`getStaticProps`, `getStaticPaths`, `getServerSideProps`).
|
|
170
|
+
*
|
|
171
|
+
* A misspelled export is treated as ordinary module state, so the
|
|
172
|
+
* page silently falls back to client-side rendering with no
|
|
173
|
+
* build-time warning.
|
|
174
|
+
*
|
|
175
|
+
* @reference https://nextjs.org/docs/messages/no-typos
|
|
176
|
+
*/
|
|
177
|
+
"nextjs/no-typos"?: TtscLintRuleSetting;
|
|
178
|
+
/**
|
|
179
|
+
* Reject Polyfill.io script URLs — Next.js already polyfills
|
|
180
|
+
* modern browsers, and Polyfill.io has a checkered history.
|
|
181
|
+
*
|
|
182
|
+
* @reference https://nextjs.org/docs/messages/no-unwanted-polyfillio
|
|
183
|
+
*/
|
|
184
|
+
"nextjs/no-unwanted-polyfillio"?: TtscLintRuleSetting;
|
|
185
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintNextjsRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintNextjsRules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
|
|
2
|
+
/**
|
|
3
|
+
* Playwright end-to-end test rules from `eslint-plugin-playwright`,
|
|
4
|
+
* applied to TypeScript test files driven by the `@playwright/test`
|
|
5
|
+
* runner.
|
|
6
|
+
*
|
|
7
|
+
* Guard Playwright-specific patterns — locator usage, web-first
|
|
8
|
+
* assertions, focused/slowed tests — that would otherwise compile
|
|
9
|
+
* and run silently.
|
|
10
|
+
*
|
|
11
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright
|
|
12
|
+
*/
|
|
13
|
+
export interface ITtscLintPlaywrightRules {
|
|
14
|
+
/**
|
|
15
|
+
* Require every Playwright test body to contain at least one
|
|
16
|
+
* `expect(...)` call. A test with no assertions still passes,
|
|
17
|
+
* giving a false-positive signal.
|
|
18
|
+
*
|
|
19
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/expect-expect.md
|
|
20
|
+
*/
|
|
21
|
+
"playwright/expect-expect"?: TtscLintRuleSetting;
|
|
22
|
+
/**
|
|
23
|
+
* Limit the assertion count inside a single Playwright test body.
|
|
24
|
+
*
|
|
25
|
+
* A test packed with assertions usually verifies several user
|
|
26
|
+
* flows at once, making failures ambiguous — splitting per
|
|
27
|
+
* scenario keeps each case diagnostic.
|
|
28
|
+
*
|
|
29
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/max-expects.md
|
|
30
|
+
*/
|
|
31
|
+
"playwright/max-expects"?: TtscLintRuleSetting;
|
|
32
|
+
/**
|
|
33
|
+
* Reject `expect(...)` calls under `if`/`try`/`catch` or other
|
|
34
|
+
* conditional branches in Playwright tests.
|
|
35
|
+
*
|
|
36
|
+
* A branch that never executes turns the assertion into a silent
|
|
37
|
+
* no-op, so the test passes without verifying anything.
|
|
38
|
+
*
|
|
39
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-expect.md
|
|
40
|
+
*/
|
|
41
|
+
"playwright/no-conditional-expect"?: TtscLintRuleSetting;
|
|
42
|
+
/**
|
|
43
|
+
* Reject conditional logic (`if`/`switch`/ternary) inside
|
|
44
|
+
* Playwright test bodies.
|
|
45
|
+
*
|
|
46
|
+
* Each test should describe a single deterministic user flow;
|
|
47
|
+
* branching hides which path the runner took when reading a
|
|
48
|
+
* passing log.
|
|
49
|
+
*
|
|
50
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-conditional-in-test.md
|
|
51
|
+
*/
|
|
52
|
+
"playwright/no-conditional-in-test"?: TtscLintRuleSetting;
|
|
53
|
+
/**
|
|
54
|
+
* Reject duplicate Playwright setup/teardown hook calls
|
|
55
|
+
* (`test.beforeEach`/`test.afterEach`/etc.) in the same
|
|
56
|
+
* `test.describe`.
|
|
57
|
+
*
|
|
58
|
+
* Playwright runs both copies in declaration order, almost always
|
|
59
|
+
* a copy-paste mistake.
|
|
60
|
+
*
|
|
61
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-hooks.md
|
|
62
|
+
*/
|
|
63
|
+
"playwright/no-duplicate-hooks"?: TtscLintRuleSetting;
|
|
64
|
+
/**
|
|
65
|
+
* Reject repeated `test.slow()` calls inside the same test —
|
|
66
|
+
* the first call already marks the test slow.
|
|
67
|
+
*
|
|
68
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-slow.md
|
|
69
|
+
*/
|
|
70
|
+
"playwright/no-duplicate-slow"?: TtscLintRuleSetting;
|
|
71
|
+
/**
|
|
72
|
+
* Reject the legacy `ElementHandle`-style Playwright API
|
|
73
|
+
* (`page.$`, `page.$$`).
|
|
74
|
+
*
|
|
75
|
+
* Handles snapshot the DOM at query time and bypass Playwright's
|
|
76
|
+
* auto-waiting; locators are the modern retry-aware replacement.
|
|
77
|
+
*
|
|
78
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-element-handle.md
|
|
79
|
+
*/
|
|
80
|
+
"playwright/no-element-handle"?: TtscLintRuleSetting;
|
|
81
|
+
/**
|
|
82
|
+
* Reject `page.$eval` and `page.$$eval`.
|
|
83
|
+
*
|
|
84
|
+
* They depend on the legacy handle API and run user-supplied
|
|
85
|
+
* selectors against a frozen snapshot of the DOM — use
|
|
86
|
+
* `locator.evaluate` or inline logic in the test instead.
|
|
87
|
+
*
|
|
88
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-eval.md
|
|
89
|
+
*/
|
|
90
|
+
"playwright/no-eval"?: TtscLintRuleSetting;
|
|
91
|
+
/**
|
|
92
|
+
* Reject `test.only`, `test.describe.only`, and similar focused
|
|
93
|
+
* Playwright tests.
|
|
94
|
+
*
|
|
95
|
+
* A focused test silently skips every other test in the file, so
|
|
96
|
+
* a stray `.only` left from debugging hides the rest of the suite
|
|
97
|
+
* in CI.
|
|
98
|
+
*
|
|
99
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-focused-test.md
|
|
100
|
+
*/
|
|
101
|
+
"playwright/no-focused-test"?: TtscLintRuleSetting;
|
|
102
|
+
/**
|
|
103
|
+
* Reject Playwright `{ force: true }` options on actionable
|
|
104
|
+
* commands (`click`, `fill`, ...).
|
|
105
|
+
*
|
|
106
|
+
* `force` skips the actionability checks Playwright relies on for
|
|
107
|
+
* stability, usually papering over a real UI bug the test should
|
|
108
|
+
* be exposing.
|
|
109
|
+
*
|
|
110
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-force-option.md
|
|
111
|
+
*/
|
|
112
|
+
"playwright/no-force-option"?: TtscLintRuleSetting;
|
|
113
|
+
/**
|
|
114
|
+
* Reject `getByTitle(...)` locators.
|
|
115
|
+
*
|
|
116
|
+
* The `title` attribute is rarely set with testing in mind and
|
|
117
|
+
* often changes for i18n or cosmetic reasons, making title-based
|
|
118
|
+
* selectors among the least stable test targets.
|
|
119
|
+
*
|
|
120
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-get-by-title.md
|
|
121
|
+
*/
|
|
122
|
+
"playwright/no-get-by-title"?: TtscLintRuleSetting;
|
|
123
|
+
/**
|
|
124
|
+
* Reject Playwright `test.beforeEach`/`test.afterEach`/etc.
|
|
125
|
+
* hooks.
|
|
126
|
+
*
|
|
127
|
+
* Promotes the style where each test arranges and tears down its
|
|
128
|
+
* own state inline, so a reader can understand a single case
|
|
129
|
+
* without scrolling to a distant hook.
|
|
130
|
+
*
|
|
131
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-hooks.md
|
|
132
|
+
*/
|
|
133
|
+
"playwright/no-hooks"?: TtscLintRuleSetting;
|
|
134
|
+
/**
|
|
135
|
+
* Reject nested `test.step(...)` calls.
|
|
136
|
+
*
|
|
137
|
+
* Playwright's trace viewer collapses steps into a flat timeline,
|
|
138
|
+
* so nested steps are hard to read and usually signal that the
|
|
139
|
+
* inner step should live in its own top-level entry.
|
|
140
|
+
*
|
|
141
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nested-step.md
|
|
142
|
+
*/
|
|
143
|
+
"playwright/no-nested-step"?: TtscLintRuleSetting;
|
|
144
|
+
/**
|
|
145
|
+
* Reject the `networkidle` load-state in `page.waitForLoadState`
|
|
146
|
+
* and navigation options.
|
|
147
|
+
*
|
|
148
|
+
* Modern apps stream requests on a keep-alive socket so the state
|
|
149
|
+
* is racy; the Playwright team recommends waiting on a locator
|
|
150
|
+
* instead.
|
|
151
|
+
*
|
|
152
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-networkidle.md
|
|
153
|
+
*/
|
|
154
|
+
"playwright/no-networkidle"?: TtscLintRuleSetting;
|
|
155
|
+
/**
|
|
156
|
+
* Reject `.first()`, `.last()`, and `.nth(...)` on locators.
|
|
157
|
+
*
|
|
158
|
+
* Positional access couples the test to current DOM ordering and
|
|
159
|
+
* breaks the moment the layout changes — prefer a more specific
|
|
160
|
+
* locator (role, label, test id) that names the target directly.
|
|
161
|
+
*
|
|
162
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-nth-methods.md
|
|
163
|
+
*/
|
|
164
|
+
"playwright/no-nth-methods"?: TtscLintRuleSetting;
|
|
165
|
+
/**
|
|
166
|
+
* Reject `page.pause()` debugging calls.
|
|
167
|
+
*
|
|
168
|
+
* The helper drops the runner into Playwright's inspector, which
|
|
169
|
+
* is useful locally but hangs CI indefinitely if it slips into a
|
|
170
|
+
* committed test.
|
|
171
|
+
*
|
|
172
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-page-pause.md
|
|
173
|
+
*/
|
|
174
|
+
"playwright/no-page-pause"?: TtscLintRuleSetting;
|
|
175
|
+
/**
|
|
176
|
+
* Reject `test.skip`, `test.describe.skip`, and the conditional
|
|
177
|
+
* `test.skip()` annotation.
|
|
178
|
+
*
|
|
179
|
+
* Skipped tests appear green in CI but quietly drop coverage for
|
|
180
|
+
* the feature they were meant to pin.
|
|
181
|
+
*
|
|
182
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-skipped-test.md
|
|
183
|
+
*/
|
|
184
|
+
"playwright/no-skipped-test"?: TtscLintRuleSetting;
|
|
185
|
+
/**
|
|
186
|
+
* Reject `test.slow()` marks on Playwright tests.
|
|
187
|
+
*
|
|
188
|
+
* The annotation triples the per-test timeout, usually masking a
|
|
189
|
+
* real performance regression instead of fixing the underlying
|
|
190
|
+
* wait.
|
|
191
|
+
*
|
|
192
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-slowed-test.md
|
|
193
|
+
*/
|
|
194
|
+
"playwright/no-slowed-test"?: TtscLintRuleSetting;
|
|
195
|
+
/**
|
|
196
|
+
* Reject `expect(...)` calls outside the body of a Playwright
|
|
197
|
+
* test or lifecycle hook.
|
|
198
|
+
*
|
|
199
|
+
* Top-level assertions execute at module load before any test
|
|
200
|
+
* starts, so failures never attach to a named case in the runner's
|
|
201
|
+
* report.
|
|
202
|
+
*
|
|
203
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-standalone-expect.md
|
|
204
|
+
*/
|
|
205
|
+
"playwright/no-standalone-expect"?: TtscLintRuleSetting;
|
|
206
|
+
/**
|
|
207
|
+
* Reject `page.waitForNavigation`.
|
|
208
|
+
*
|
|
209
|
+
* The helper races against navigations triggered by the very
|
|
210
|
+
* command preceding it; use a locator-based wait or the action's
|
|
211
|
+
* own `waitUntil` option to pin the post-navigation state
|
|
212
|
+
* explicitly.
|
|
213
|
+
*
|
|
214
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-navigation.md
|
|
215
|
+
*/
|
|
216
|
+
"playwright/no-wait-for-navigation"?: TtscLintRuleSetting;
|
|
217
|
+
/**
|
|
218
|
+
* Reject `page.waitForSelector`.
|
|
219
|
+
*
|
|
220
|
+
* The helper duplicates locator auto-waiting but does not share
|
|
221
|
+
* its retry semantics — prefer `locator.waitFor()` or a web-first
|
|
222
|
+
* assertion on the same locator.
|
|
223
|
+
*
|
|
224
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-selector.md
|
|
225
|
+
*/
|
|
226
|
+
"playwright/no-wait-for-selector"?: TtscLintRuleSetting;
|
|
227
|
+
/**
|
|
228
|
+
* Reject `page.waitForTimeout(ms)` sleeps.
|
|
229
|
+
*
|
|
230
|
+
* A hardcoded delay is either too short under load (flaky
|
|
231
|
+
* failures) or too long under normal conditions (slow suite); wait
|
|
232
|
+
* on a locator or response that signals readiness directly.
|
|
233
|
+
*
|
|
234
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-wait-for-timeout.md
|
|
235
|
+
*/
|
|
236
|
+
"playwright/no-wait-for-timeout"?: TtscLintRuleSetting;
|
|
237
|
+
/**
|
|
238
|
+
* Prefer locator-based Playwright APIs (`page.locator(sel).click()`)
|
|
239
|
+
* over page-level convenience methods (`page.click(selector)`).
|
|
240
|
+
*
|
|
241
|
+
* Page methods re-resolve the selector each call and skip the
|
|
242
|
+
* retry semantics that make locators robust under animation.
|
|
243
|
+
*
|
|
244
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-locator.md
|
|
245
|
+
*/
|
|
246
|
+
"playwright/prefer-locator"?: TtscLintRuleSetting;
|
|
247
|
+
/**
|
|
248
|
+
* Prefer `expect(locator).toHaveCount(n)` over asserting on
|
|
249
|
+
* `await locator.count()`.
|
|
250
|
+
*
|
|
251
|
+
* The web-first matcher retries until the count stabilizes, while
|
|
252
|
+
* the awaited value is a one-shot snapshot that races against
|
|
253
|
+
* ongoing renders.
|
|
254
|
+
*
|
|
255
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-count.md
|
|
256
|
+
*/
|
|
257
|
+
"playwright/prefer-to-have-count"?: TtscLintRuleSetting;
|
|
258
|
+
/**
|
|
259
|
+
* Prefer `expect(value).toHaveLength(n)` over asserting on
|
|
260
|
+
* `value.length` directly.
|
|
261
|
+
*
|
|
262
|
+
* The dedicated matcher reports the actual length on failure
|
|
263
|
+
* instead of a bare number mismatch.
|
|
264
|
+
*
|
|
265
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-to-have-length.md
|
|
266
|
+
*/
|
|
267
|
+
"playwright/prefer-to-have-length"?: TtscLintRuleSetting;
|
|
268
|
+
/**
|
|
269
|
+
* Prefer Playwright web-first assertions
|
|
270
|
+
* (`expect(locator).toBeVisible()`, `.toHaveText(...)`) over
|
|
271
|
+
* composed manual waits.
|
|
272
|
+
*
|
|
273
|
+
* Web-first matchers retry until the predicate holds, which is how
|
|
274
|
+
* Playwright keeps tests stable under animation and network
|
|
275
|
+
* jitter.
|
|
276
|
+
*
|
|
277
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-web-first-assertions.md
|
|
278
|
+
*/
|
|
279
|
+
"playwright/prefer-web-first-assertions"?: TtscLintRuleSetting;
|
|
280
|
+
/**
|
|
281
|
+
* Require an explicit `timeout` option on `expect(...).toPass(...)`.
|
|
282
|
+
*
|
|
283
|
+
* The matcher otherwise inherits the suite-wide timeout and can
|
|
284
|
+
* strand CI when the underlying assertion never settles.
|
|
285
|
+
*
|
|
286
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-pass-timeout.md
|
|
287
|
+
*/
|
|
288
|
+
"playwright/require-to-pass-timeout"?: TtscLintRuleSetting;
|
|
289
|
+
/**
|
|
290
|
+
* Require a message argument on `expect(...).toThrow(...)`.
|
|
291
|
+
*
|
|
292
|
+
* Without a message the assertion only confirms that something
|
|
293
|
+
* threw, so a regression that throws a different error still looks
|
|
294
|
+
* green.
|
|
295
|
+
*
|
|
296
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-throw-message.md
|
|
297
|
+
*/
|
|
298
|
+
"playwright/require-to-throw-message"?: TtscLintRuleSetting;
|
|
299
|
+
/**
|
|
300
|
+
* Validate the shape of Playwright `test.describe` callbacks.
|
|
301
|
+
*
|
|
302
|
+
* The callback must be synchronous and take no arguments —
|
|
303
|
+
* Playwright ignores returned Promises and stray parameters at the
|
|
304
|
+
* describe level, silently swallowing setup errors.
|
|
305
|
+
*
|
|
306
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-describe-callback.md
|
|
307
|
+
*/
|
|
308
|
+
"playwright/valid-describe-callback"?: TtscLintRuleSetting;
|
|
309
|
+
/**
|
|
310
|
+
* Validate `expect(...)` arity and matcher chaining: exactly one
|
|
311
|
+
* argument, terminated by a matcher call, and async matchers
|
|
312
|
+
* properly awaited.
|
|
313
|
+
*
|
|
314
|
+
* Malformed expects either throw at runtime or pass without
|
|
315
|
+
* asserting anything.
|
|
316
|
+
*
|
|
317
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-expect.md
|
|
318
|
+
*/
|
|
319
|
+
"playwright/valid-expect"?: TtscLintRuleSetting;
|
|
320
|
+
/**
|
|
321
|
+
* Require non-empty static Playwright test and `describe`
|
|
322
|
+
* titles.
|
|
323
|
+
*
|
|
324
|
+
* Empty or dynamically-built titles produce unreadable reports and
|
|
325
|
+
* break filter-by-name flags like `--grep`.
|
|
326
|
+
*
|
|
327
|
+
* @reference https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/valid-title.md
|
|
328
|
+
*/
|
|
329
|
+
"playwright/valid-title"?: TtscLintRuleSetting;
|
|
330
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintPlaywrightRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintPlaywrightRules.ts"],"names":[],"mappings":""}
|