@ttsc/lint 0.13.0 → 0.14.0-dev.20250530.1

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