@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.
Files changed (464) hide show
  1. package/README.md +948 -69
  2. package/lib/defaultFormat.d.ts +9 -6
  3. package/lib/defaultFormat.js +9 -6
  4. package/lib/defaultFormat.js.map +1 -1
  5. package/lib/index.d.ts +46 -0
  6. package/lib/index.js +35 -10
  7. package/lib/index.js.map +1 -1
  8. package/lib/structures/ITtscLintConfig.d.ts +12 -6
  9. package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
  10. package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
  11. package/lib/structures/ITtscLintFormat.js.map +1 -0
  12. package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
  13. package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
  14. package/lib/structures/TtscLintRuleSetting.js.map +1 -0
  15. package/lib/structures/index.d.ts +3 -4
  16. package/lib/structures/index.js +3 -4
  17. package/lib/structures/index.js.map +1 -1
  18. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
  19. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
  20. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
  21. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
  22. package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
  23. package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
  24. package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
  25. package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
  26. package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
  27. package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
  28. package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
  29. package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
  30. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
  31. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
  32. package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
  33. package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
  34. package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
  35. package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
  36. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
  37. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
  38. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
  39. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
  40. package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
  41. package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
  42. package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
  43. package/lib/structures/rules/ITtscLintJestRules.js +3 -0
  44. package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
  45. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
  46. package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
  47. package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
  48. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
  49. package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
  50. package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
  51. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
  52. package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
  53. package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
  54. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
  55. package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
  56. package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
  57. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
  58. package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
  59. package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
  60. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
  61. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
  62. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
  63. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
  64. package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
  65. package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
  66. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
  67. package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
  68. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
  69. package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
  70. package/lib/structures/rules/ITtscLintReactRules.js +3 -0
  71. package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
  72. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
  73. package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
  74. package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
  75. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
  76. package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
  77. package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
  78. package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
  79. package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
  80. package/lib/structures/rules/ITtscLintRules.js.map +1 -0
  81. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
  82. package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
  83. package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
  84. package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
  85. package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
  86. package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
  87. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
  88. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
  89. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
  90. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
  91. package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
  92. package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
  93. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
  94. package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
  95. package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
  96. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
  97. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
  98. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
  99. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
  100. package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
  101. package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
  102. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
  103. package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
  104. package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
  105. package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
  106. package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
  107. package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
  108. package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
  109. package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
  110. package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
  111. package/lib/structures/rules/index.d.ts +31 -0
  112. package/lib/structures/rules/index.js +48 -0
  113. package/lib/structures/rules/index.js.map +1 -0
  114. package/linthost/ast_helpers.go +30 -5
  115. package/linthost/config.go +48 -17
  116. package/linthost/config_format.go +9 -9
  117. package/linthost/directives.go +67 -25
  118. package/linthost/dispatch.go +14 -3
  119. package/linthost/engine.go +152 -31
  120. package/linthost/fix.go +2 -2
  121. package/linthost/lsp.go +747 -0
  122. package/linthost/print_dispatch.go +2 -2
  123. package/linthost/print_nodes_function.go +2 -2
  124. package/linthost/print_nodes_object.go +1 -1
  125. package/linthost/rule_names.go +14 -0
  126. package/linthost/rules_arrays.go +2 -2
  127. package/linthost/rules_boundaries.go +532 -0
  128. package/linthost/rules_camelcase.go +133 -0
  129. package/linthost/rules_complexity.go +94 -0
  130. package/linthost/rules_consistent_return.go +130 -0
  131. package/linthost/rules_console.go +1 -1
  132. package/linthost/rules_core_extra.go +739 -0
  133. package/linthost/rules_curly.go +70 -0
  134. package/linthost/rules_cypress.go +608 -0
  135. package/linthost/rules_debugger.go +2 -2
  136. package/linthost/rules_default_case.go +39 -0
  137. package/linthost/rules_default_case_last.go +46 -0
  138. package/linthost/rules_dupes.go +3 -3
  139. package/linthost/rules_empty.go +3 -3
  140. package/linthost/rules_escape.go +44 -24
  141. package/linthost/rules_eval.go +2 -2
  142. package/linthost/rules_finally.go +2 -2
  143. package/linthost/rules_format_jsdoc.go +1 -1
  144. package/linthost/rules_format_print_width.go +9 -9
  145. package/linthost/rules_format_quotes.go +1 -1
  146. package/linthost/rules_format_semi.go +1 -1
  147. package/linthost/rules_format_sort_imports.go +1 -1
  148. package/linthost/rules_format_trailing_comma.go +1 -1
  149. package/linthost/rules_functional.go +967 -0
  150. package/linthost/rules_gap.go +24 -45
  151. package/linthost/rules_grouped_accessor_pairs.go +87 -0
  152. package/linthost/rules_guard_for_in.go +198 -0
  153. package/linthost/rules_id_length.go +77 -0
  154. package/linthost/rules_imports.go +70 -2
  155. package/linthost/rules_init_declarations.go +53 -0
  156. package/linthost/rules_jest.go +618 -0
  157. package/linthost/rules_jsdoc.go +502 -0
  158. package/linthost/rules_jsx_a11y.go +1264 -0
  159. package/linthost/rules_logic.go +12 -12
  160. package/linthost/rules_loops.go +1 -1
  161. package/linthost/rules_max_classes_per_file.go +58 -0
  162. package/linthost/rules_max_depth.go +83 -0
  163. package/linthost/rules_max_lines.go +101 -0
  164. package/linthost/rules_max_lines_per_function.go +57 -0
  165. package/linthost/rules_max_nested_callbacks.go +61 -0
  166. package/linthost/rules_max_params.go +49 -0
  167. package/linthost/rules_max_statements.go +59 -0
  168. package/linthost/rules_misc.go +1 -1
  169. package/linthost/rules_nextjs.go +697 -0
  170. package/linthost/rules_no_else_return.go +75 -0
  171. package/linthost/rules_no_empty_named_blocks.go +91 -0
  172. package/linthost/rules_no_extend_native.go +51 -0
  173. package/linthost/rules_no_import_assign.go +140 -0
  174. package/linthost/rules_no_invalid_this.go +52 -0
  175. package/linthost/rules_no_loop_func.go +85 -0
  176. package/linthost/rules_no_magic_numbers.go +123 -0
  177. package/linthost/rules_no_mixed_operators.go +80 -0
  178. package/linthost/rules_no_param_reassign.go +98 -0
  179. package/linthost/rules_no_redeclare.go +270 -0
  180. package/linthost/rules_no_restricted_imports.go +105 -0
  181. package/linthost/rules_no_restricted_syntax.go +49 -0
  182. package/linthost/rules_no_shadow.go +147 -0
  183. package/linthost/rules_no_unreachable.go +77 -0
  184. package/linthost/rules_no_useless_assignment.go +120 -0
  185. package/linthost/rules_no_useless_constructor.go +245 -0
  186. package/linthost/rules_no_useless_return.go +51 -0
  187. package/linthost/rules_params.go +1 -1
  188. package/linthost/rules_playwright.go +788 -0
  189. package/linthost/rules_prefer_arrow_callback.go +124 -0
  190. package/linthost/rules_prefer_destructuring.go +98 -0
  191. package/linthost/rules_prefer_named_capture_group.go +129 -0
  192. package/linthost/rules_prefer_rest_params.go +94 -0
  193. package/linthost/rules_problems.go +41 -30
  194. package/linthost/rules_promise.go +1128 -73
  195. package/linthost/rules_protos.go +2 -2
  196. package/linthost/rules_react.go +773 -0
  197. package/linthost/rules_react_extras.go +227 -0
  198. package/linthost/rules_react_hooks.go +848 -0
  199. package/linthost/rules_react_perf.go +293 -0
  200. package/linthost/rules_react_refresh.go +583 -0
  201. package/linthost/rules_regexp.go +410 -0
  202. package/linthost/rules_security.go +830 -0
  203. package/linthost/rules_self.go +2 -2
  204. package/linthost/rules_solid.go +1073 -0
  205. package/linthost/rules_sort_imports.go +69 -0
  206. package/linthost/rules_sort_keys.go +134 -0
  207. package/linthost/rules_storybook.go +1176 -0
  208. package/linthost/rules_strings.go +4 -4
  209. package/linthost/rules_suggestions.go +38 -38
  210. package/linthost/rules_tanstack_query.go +844 -0
  211. package/linthost/rules_testing_library.go +1204 -0
  212. package/linthost/rules_throw.go +1 -1
  213. package/linthost/rules_ts.go +19 -19
  214. package/linthost/rules_ts_async.go +399 -0
  215. package/linthost/rules_ts_class_literal_property_style.go +115 -0
  216. package/linthost/rules_ts_consistent_type_exports.go +256 -0
  217. package/linthost/rules_ts_explicit_function_return_type.go +67 -0
  218. package/linthost/rules_ts_extra.go +155 -36
  219. package/linthost/rules_ts_no_base_to_string.go +218 -0
  220. package/linthost/rules_ts_no_confusing_void.go +72 -0
  221. package/linthost/rules_ts_no_deprecated.go +195 -0
  222. package/linthost/rules_ts_no_for_in_array.go +84 -0
  223. package/linthost/rules_ts_no_magic_numbers.go +124 -0
  224. package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
  225. package/linthost/rules_ts_no_misused_spread.go +104 -0
  226. package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
  227. package/linthost/rules_ts_no_restricted_types.go +62 -0
  228. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
  229. package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
  230. package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
  231. package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
  232. package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
  233. package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
  234. package/linthost/rules_ts_no_unsafe_argument.go +82 -0
  235. package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
  236. package/linthost/rules_ts_no_unsafe_call.go +82 -0
  237. package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
  238. package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
  239. package/linthost/rules_ts_no_unsafe_return.go +126 -0
  240. package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
  241. package/linthost/rules_ts_no_useless_constructor.go +52 -0
  242. package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
  243. package/linthost/rules_ts_parameter_properties.go +38 -0
  244. package/linthost/rules_ts_prefer_find.go +178 -0
  245. package/linthost/rules_ts_prefer_includes.go +255 -0
  246. package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
  247. package/linthost/rules_ts_prefer_optional_chain.go +228 -0
  248. package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
  249. package/linthost/rules_ts_prefer_readonly.go +73 -0
  250. package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
  251. package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
  252. package/linthost/rules_ts_prefer_return_this_type.go +135 -0
  253. package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
  254. package/linthost/rules_ts_promise_function_async.go +77 -0
  255. package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
  256. package/linthost/rules_ts_require_array_sort_compare.go +96 -0
  257. package/linthost/rules_ts_restrict_plus_operands.go +127 -0
  258. package/linthost/rules_ts_restrict_template_expressions.go +95 -0
  259. package/linthost/rules_ts_simple.go +387 -0
  260. package/linthost/rules_ts_sort_type_constituents.go +144 -0
  261. package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
  262. package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
  263. package/linthost/rules_ts_unbound_method.go +126 -0
  264. package/linthost/rules_tsdoc.go +136 -0
  265. package/linthost/rules_unicorn_better_regex.go +27 -0
  266. package/linthost/rules_unicorn_catch_error_name.go +46 -0
  267. package/linthost/rules_unicorn_consistent_assert.go +47 -0
  268. package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
  269. package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
  270. package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
  271. package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
  272. package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
  273. package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
  274. package/linthost/rules_unicorn_custom_error_definition.go +138 -0
  275. package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
  276. package/linthost/rules_unicorn_error_message.go +64 -0
  277. package/linthost/rules_unicorn_escape_case.go +51 -0
  278. package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
  279. package/linthost/rules_unicorn_explicit_length_check.go +88 -0
  280. package/linthost/rules_unicorn_filename_case.go +29 -0
  281. package/linthost/rules_unicorn_import_style.go +28 -0
  282. package/linthost/rules_unicorn_isolated_functions.go +29 -0
  283. package/linthost/rules_unicorn_new_for_builtins.go +87 -0
  284. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
  285. package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
  286. package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
  287. package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
  288. package/linthost/rules_unicorn_no_array_for_each.go +40 -0
  289. package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
  290. package/linthost/rules_unicorn_no_array_reduce.go +41 -0
  291. package/linthost/rules_unicorn_no_array_reverse.go +44 -0
  292. package/linthost/rules_unicorn_no_array_sort.go +43 -0
  293. package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
  294. package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
  295. package/linthost/rules_unicorn_no_console_spaces.go +61 -0
  296. package/linthost/rules_unicorn_no_document_cookie.go +41 -0
  297. package/linthost/rules_unicorn_no_empty_file.go +44 -0
  298. package/linthost/rules_unicorn_no_for_loop.go +102 -0
  299. package/linthost/rules_unicorn_no_hex_escape.go +42 -0
  300. package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
  301. package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
  302. package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
  303. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
  304. package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
  305. package/linthost/rules_unicorn_no_lonely_if.go +44 -0
  306. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
  307. package/linthost/rules_unicorn_no_named_default.go +54 -0
  308. package/linthost/rules_unicorn_no_negated_condition.go +85 -0
  309. package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
  310. package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
  311. package/linthost/rules_unicorn_no_new_array.go +30 -0
  312. package/linthost/rules_unicorn_no_new_buffer.go +31 -0
  313. package/linthost/rules_unicorn_no_null.go +24 -0
  314. package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
  315. package/linthost/rules_unicorn_no_process_exit.go +43 -0
  316. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
  317. package/linthost/rules_unicorn_no_static_only_class.go +56 -0
  318. package/linthost/rules_unicorn_no_thenable.go +74 -0
  319. package/linthost/rules_unicorn_no_this_assignment.go +35 -0
  320. package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
  321. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
  322. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
  323. package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
  324. package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
  325. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
  326. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
  327. package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
  328. package/linthost/rules_unicorn_no_unused_properties.go +30 -0
  329. package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
  330. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
  331. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
  332. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
  333. package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
  334. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
  335. package/linthost/rules_unicorn_no_useless_spread.go +67 -0
  336. package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
  337. package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
  338. package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
  339. package/linthost/rules_unicorn_number_literal_case.go +69 -0
  340. package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
  341. package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
  342. package/linthost/rules_unicorn_prefer_array_find.go +51 -0
  343. package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
  344. package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
  345. package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
  346. package/linthost/rules_unicorn_prefer_array_some.go +67 -0
  347. package/linthost/rules_unicorn_prefer_at.go +77 -0
  348. package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
  349. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
  350. package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
  351. package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
  352. package/linthost/rules_unicorn_prefer_code_point.go +49 -0
  353. package/linthost/rules_unicorn_prefer_date_now.go +78 -0
  354. package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
  355. package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
  356. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
  357. package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
  358. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
  359. package/linthost/rules_unicorn_prefer_event_target.go +36 -0
  360. package/linthost/rules_unicorn_prefer_export_from.go +129 -0
  361. package/linthost/rules_unicorn_prefer_global_this.go +127 -0
  362. package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
  363. package/linthost/rules_unicorn_prefer_includes.go +149 -0
  364. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
  365. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
  366. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
  367. package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
  368. package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
  369. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
  370. package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
  371. package/linthost/rules_unicorn_prefer_module.go +50 -0
  372. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
  373. package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
  374. package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
  375. package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
  376. package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
  377. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
  378. package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
  379. package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
  380. package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
  381. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
  382. package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
  383. package/linthost/rules_unicorn_prefer_set_has.go +42 -0
  384. package/linthost/rules_unicorn_prefer_set_size.go +48 -0
  385. package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
  386. package/linthost/rules_unicorn_prefer_single_call.go +96 -0
  387. package/linthost/rules_unicorn_prefer_spread.go +51 -0
  388. package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
  389. package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
  390. package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
  391. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
  392. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
  393. package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
  394. package/linthost/rules_unicorn_prefer_switch.go +103 -0
  395. package/linthost/rules_unicorn_prefer_ternary.go +71 -0
  396. package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
  397. package/linthost/rules_unicorn_prefer_type_error.go +127 -0
  398. package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
  399. package/linthost/rules_unicorn_relative_url_style.go +49 -0
  400. package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
  401. package/linthost/rules_unicorn_require_module_attributes.go +54 -0
  402. package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
  403. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
  404. package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
  405. package/linthost/rules_unicorn_string_content.go +27 -0
  406. package/linthost/rules_unicorn_switch_case_braces.go +42 -0
  407. package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
  408. package/linthost/rules_unicorn_template_indent.go +28 -0
  409. package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
  410. package/linthost/rules_unicorn_throw_new_error.go +61 -0
  411. package/linthost/rules_var.go +4 -4
  412. package/linthost/rules_vitest.go +568 -0
  413. package/package.json +3 -3
  414. package/plugin/main.go +49 -3
  415. package/rule/astutil/astutil.go +10 -3
  416. package/rule/rule.go +12 -10
  417. package/src/defaultFormat.ts +11 -8
  418. package/src/index.ts +40 -16
  419. package/src/structures/ITtscLintConfig.ts +12 -6
  420. package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
  421. package/src/structures/TtscLintRuleSetting.ts +55 -0
  422. package/src/structures/index.ts +3 -4
  423. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
  424. package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
  425. package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
  426. package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
  427. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
  428. package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
  429. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
  430. package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
  431. package/src/structures/rules/ITtscLintJestRules.ts +220 -0
  432. package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
  433. package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
  434. package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
  435. package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
  436. package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
  437. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
  438. package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
  439. package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
  440. package/src/structures/rules/ITtscLintReactRules.ts +321 -0
  441. package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
  442. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
  443. package/src/structures/rules/ITtscLintRules.ts +77 -0
  444. package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
  445. package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
  446. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
  447. package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
  448. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
  449. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
  450. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
  451. package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
  452. package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
  453. package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
  454. package/src/structures/rules/index.ts +31 -0
  455. package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
  456. package/lib/structures/TtscLintRule.d.ts +0 -17
  457. package/lib/structures/TtscLintRule.js.map +0 -1
  458. package/lib/structures/TtscLintRuleMap.d.ts +0 -46
  459. package/lib/structures/TtscLintRuleMap.js.map +0 -1
  460. package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
  461. package/lib/structures/TtscLintRuleOptions.js.map +0 -1
  462. package/src/structures/TtscLintRule.ts +0 -160
  463. package/src/structures/TtscLintRuleMap.ts +0 -55
  464. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintNextjsRules.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintPlaywrightRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintPlaywrightRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintPlaywrightRules.ts"],"names":[],"mappings":""}