@ttsc/lint 0.13.1 → 0.14.0-dev.20260528

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,201 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Jest test source rules from `eslint-plugin-jest`.
4
+ *
5
+ * Apply to TypeScript test files that use the Jest runner (`describe`,
6
+ * `test`/`it`, `expect`, lifecycle hooks). They guard test-quality
7
+ * patterns the type system cannot detect — unended assertions, focused
8
+ * tests left behind, duplicate hook calls.
9
+ *
10
+ * @reference https://github.com/jest-community/eslint-plugin-jest
11
+ */
12
+ export interface ITtscLintJestRules {
13
+ /**
14
+ * Require every Jest test body to contain at least one
15
+ * `expect(...)` call. A test with no expectations passes silently.
16
+ *
17
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/expect-expect.md
18
+ */
19
+ "jest/expect-expect"?: TtscLintRuleSetting;
20
+ /**
21
+ * Limit the number of `expect(...)` calls inside a single Jest test
22
+ * body.
23
+ *
24
+ * A test packed with assertions usually verifies several behaviors
25
+ * at once, making failures ambiguous — splitting per scenario keeps
26
+ * each case diagnostic.
27
+ *
28
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/max-expects.md
29
+ */
30
+ "jest/max-expects"?: TtscLintRuleSetting;
31
+ /**
32
+ * Reject `expect(...)` calls under `if`/`try`/`catch` or other
33
+ * conditional branches in Jest tests.
34
+ *
35
+ * A branch that never executes turns the assertion into a silent
36
+ * no-op, so the test passes without verifying anything.
37
+ *
38
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-conditional-expect.md
39
+ */
40
+ "jest/no-conditional-expect"?: TtscLintRuleSetting;
41
+ /**
42
+ * Reject conditional logic (`if`/`switch`/ternary) inside Jest
43
+ * test bodies.
44
+ *
45
+ * Each test should describe a single deterministic scenario;
46
+ * branching hides which path the runner took when reading a
47
+ * passing log.
48
+ *
49
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-conditional-in-test.md
50
+ */
51
+ "jest/no-conditional-in-test"?: TtscLintRuleSetting;
52
+ /**
53
+ * Reject `test.skip`, `xit`, `xdescribe`, and other disabled Jest
54
+ * tests.
55
+ *
56
+ * Skipped tests appear green in CI but quietly drop coverage for
57
+ * the feature they were meant to pin, so they rot unseen.
58
+ *
59
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-disabled-tests.md
60
+ */
61
+ "jest/no-disabled-tests"?: TtscLintRuleSetting;
62
+ /**
63
+ * Reject `done` callback parameters in Jest tests and hooks.
64
+ *
65
+ * The callback style predates async/await and makes error
66
+ * propagation easy to miss — forgetting `done()` hangs the test
67
+ * until timeout. Use `async`/`await` or return a Promise instead.
68
+ *
69
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-done-callback.md
70
+ */
71
+ "jest/no-done-callback"?: TtscLintRuleSetting;
72
+ /**
73
+ * Reject duplicate setup/teardown hook calls
74
+ * (`beforeEach`/`beforeAll`/etc.) within the same `describe`
75
+ * block.
76
+ *
77
+ * Jest runs both copies in declaration order, which is almost
78
+ * always a copy-paste mistake.
79
+ *
80
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-duplicate-hooks.md
81
+ */
82
+ "jest/no-duplicate-hooks"?: TtscLintRuleSetting;
83
+ /**
84
+ * Reject `export` declarations in Jest test files.
85
+ *
86
+ * Tests are leaf consumers and should not expose helpers; the
87
+ * runner silently skips test files with any export, so a stray
88
+ * `export` can make a whole file disappear from the suite.
89
+ *
90
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-export.md
91
+ */
92
+ "jest/no-export"?: TtscLintRuleSetting;
93
+ /**
94
+ * Reject `test.only`, `fit`, `fdescribe`, and other focused Jest
95
+ * tests.
96
+ *
97
+ * A focused test silently skips every other test in the file, so
98
+ * a stray `.only` left from debugging hides the rest of the suite
99
+ * in CI.
100
+ *
101
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-focused-tests.md
102
+ */
103
+ "jest/no-focused-tests"?: TtscLintRuleSetting;
104
+ /**
105
+ * Reject Jest setup/teardown hooks altogether.
106
+ *
107
+ * Promotes the style where each test arranges and tears down its
108
+ * own state inline, so a reader can understand it in isolation
109
+ * without scrolling to a distant `beforeEach`.
110
+ *
111
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-hooks.md
112
+ */
113
+ "jest/no-hooks"?: TtscLintRuleSetting;
114
+ /**
115
+ * Reject duplicate test or `describe` titles at the same suite
116
+ * level — the runner cannot distinguish two tests with the same
117
+ * name in error output.
118
+ *
119
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-identical-title.md
120
+ */
121
+ "jest/no-identical-title"?: TtscLintRuleSetting;
122
+ /**
123
+ * Reject `expect(...)` calls outside the body of a Jest test or
124
+ * lifecycle hook.
125
+ *
126
+ * Top-level assertions execute at module load before any test
127
+ * starts, so failures never attach to a named case in the runner's
128
+ * report.
129
+ *
130
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-standalone-expect.md
131
+ */
132
+ "jest/no-standalone-expect"?: TtscLintRuleSetting;
133
+ /**
134
+ * Reject `xit`, `fit`, `xdescribe`, `fdescribe`, and the rest of
135
+ * the single-letter Jest test prefix aliases.
136
+ *
137
+ * They duplicate the `.only`/`.skip` variants but read as typos at
138
+ * a glance, making accidental focus or disable harder to spot in
139
+ * review.
140
+ *
141
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-test-prefixes.md
142
+ */
143
+ "jest/no-test-prefixes"?: TtscLintRuleSetting;
144
+ /**
145
+ * Reject non-Promise `return` statements from Jest test bodies.
146
+ *
147
+ * Jest only awaits returned thenables, so a plain `return` value
148
+ * is dropped and following code becomes dead — usually a symptom
149
+ * of a missing `await` or an accidental early exit.
150
+ *
151
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-test-return-statement.md
152
+ */
153
+ "jest/no-test-return-statement"?: TtscLintRuleSetting;
154
+ /**
155
+ * Prefer `expect(value).toHaveLength(n)` over asserting on
156
+ * `value.length` directly with `toBe`.
157
+ *
158
+ * The dedicated matcher reports the actual length on failure
159
+ * instead of a bare number mismatch with no context.
160
+ *
161
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/prefer-to-have-length.md
162
+ */
163
+ "jest/prefer-to-have-length"?: TtscLintRuleSetting;
164
+ /**
165
+ * Require a message argument on `expect(...).toThrow(...)` so a
166
+ * regression with a different error type still surfaces clearly.
167
+ *
168
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/require-to-throw-message.md
169
+ */
170
+ "jest/require-to-throw-message"?: TtscLintRuleSetting;
171
+ /**
172
+ * Validate the shape of Jest `describe` callbacks.
173
+ *
174
+ * The callback must be synchronous and take no arguments — Jest
175
+ * ignores returned Promises and `done`-style parameters at the
176
+ * describe level, silently swallowing setup errors.
177
+ *
178
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/valid-describe-callback.md
179
+ */
180
+ "jest/valid-describe-callback"?: TtscLintRuleSetting;
181
+ /**
182
+ * Validate `expect(...)` arity and matcher chaining: exactly one
183
+ * argument, terminated by a matcher call, and async matchers
184
+ * properly awaited.
185
+ *
186
+ * Malformed expects either throw at runtime or pass without
187
+ * asserting anything.
188
+ *
189
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/valid-expect.md
190
+ */
191
+ "jest/valid-expect"?: TtscLintRuleSetting;
192
+ /**
193
+ * Require non-empty static Jest test and `describe` titles.
194
+ *
195
+ * Empty or dynamically-built titles produce unreadable failure
196
+ * output and break filter-by-name flags like `--testNamePattern`.
197
+ *
198
+ * @reference https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/valid-title.md
199
+ */
200
+ "jest/valid-title"?: TtscLintRuleSetting;
201
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintJestRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintJestRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintJestRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Documentation-comment validation rules.
4
+ *
5
+ * Bundles `eslint-plugin-jsdoc` content checks (tag names, parameter
6
+ * coverage, descriptions) with the lone `eslint-plugin-tsdoc` syntax
7
+ * check (`jsdoc/tsdoc-syntax`) — both target `/** ... *\/` comments and
8
+ * are too small in upstream-tsdoc's case to justify a dedicated family.
9
+ *
10
+ * Formatting concerns (alignment, indentation) are configured through
11
+ * the top-level `format` block, not here.
12
+ *
13
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc
14
+ */
15
+ export interface ITtscLintJsdocRules {
16
+ /**
17
+ * Reject unknown JSDoc block-tag names. Catches typos like
18
+ * `@returs` or `@parm`.
19
+ *
20
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md
21
+ */
22
+ "jsdoc/check-tag-names"?: TtscLintRuleSetting;
23
+ /**
24
+ * Validate `@access` values against the closed set `public`,
25
+ * `protected`, `private`, `package`. (Upstream extends to
26
+ * `@version`/`@since`/`@license`/`@kind`/`@import` value checks;
27
+ * those shapes are not yet implemented in the native engine.)
28
+ *
29
+ * Catches typos and stale enum members that slip past doc tooling.
30
+ *
31
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md
32
+ */
33
+ "jsdoc/check-values"?: TtscLintRuleSetting;
34
+ /**
35
+ * Reject content on marker-only JSDoc tags (`@async`, `@public`,
36
+ * `@override`, ...) — these tags take no value.
37
+ *
38
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md
39
+ */
40
+ "jsdoc/empty-tags"?: TtscLintRuleSetting;
41
+ /**
42
+ * Reject JSDoc type braces in TypeScript sources, since the
43
+ * surrounding TypeScript already carries the type.
44
+ *
45
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md
46
+ */
47
+ "jsdoc/no-types"?: TtscLintRuleSetting;
48
+ /**
49
+ * Reject `any` and `*` inside JSDoc type braces — these escape
50
+ * the documented type system the same way TypeScript `any` does.
51
+ *
52
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-any-type.md
53
+ */
54
+ "jsdoc/reject-any-type"?: TtscLintRuleSetting;
55
+ /**
56
+ * Reject the unsafe `Function` type inside JSDoc type braces.
57
+ *
58
+ * Mirrors the `typescript/no-unsafe-function-type` rule from
59
+ * {@link ITtscLintTypeScriptRules} for JSDoc comments.
60
+ *
61
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-function-type.md
62
+ */
63
+ "jsdoc/reject-function-type"?: TtscLintRuleSetting;
64
+ /**
65
+ * Require JSDoc blocks to include a leading block-level
66
+ * description — every documented identifier should explain itself.
67
+ *
68
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md
69
+ */
70
+ "jsdoc/require-description"?: TtscLintRuleSetting;
71
+ /**
72
+ * Require every `@param` tag that names a parameter to also
73
+ * carry a description after the name.
74
+ *
75
+ * A name-only `@param` adds nothing beyond the signature, so the
76
+ * rule pushes authors to either describe the parameter or drop
77
+ * the tag.
78
+ *
79
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md
80
+ */
81
+ "jsdoc/require-param-description"?: TtscLintRuleSetting;
82
+ /**
83
+ * Require every `@param` tag to include the parameter name it
84
+ * documents.
85
+ *
86
+ * A bare `@param` cannot be linked to a signature position, so
87
+ * doc tooling silently drops it.
88
+ *
89
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md
90
+ */
91
+ "jsdoc/require-param-name"?: TtscLintRuleSetting;
92
+ /**
93
+ * Require every `@property` tag that names a property to also
94
+ * carry a description.
95
+ *
96
+ * Mirrors `require-param-description` for typedef and object-shape
97
+ * comments, where a name-only entry adds nothing the surrounding
98
+ * type doesn't convey.
99
+ *
100
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md
101
+ */
102
+ "jsdoc/require-property-description"?: TtscLintRuleSetting;
103
+ /**
104
+ * Require every `@property` tag to include the property name it
105
+ * documents.
106
+ *
107
+ * Without the name the tag cannot be linked to a member of the
108
+ * surrounding typedef, and doc generators discard it.
109
+ *
110
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md
111
+ */
112
+ "jsdoc/require-property-name"?: TtscLintRuleSetting;
113
+ /**
114
+ * Require every `@returns` tag to carry a description of the
115
+ * returned value.
116
+ *
117
+ * The TypeScript signature already states the return type, so the
118
+ * tag earns its keep only when it explains what the value means,
119
+ * not its shape.
120
+ *
121
+ * @reference https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md
122
+ */
123
+ "jsdoc/require-returns-description"?: TtscLintRuleSetting;
124
+ /**
125
+ * Detect structural TSDoc problems in documentation comments:
126
+ * malformed top-level block tags (`@` followed by non-letter) and
127
+ * malformed or unclosed inline tags (`{@link ...}`). The broader
128
+ * TSDoc grammar — closed-set tag names, escape sequences,
129
+ * `{Type}`-annotation rejection, fenced-code rules — is not yet
130
+ * implemented.
131
+ *
132
+ * TSDoc is Microsoft's curated dialect that powers API Extractor and
133
+ * the rest of the Microsoft TypeScript documentation pipeline.
134
+ * Upstream `eslint-plugin-tsdoc` ships exactly one rule; it lives
135
+ * here rather than in a one-rule `tsdoc/*` family.
136
+ *
137
+ * @reference https://github.com/microsoft/tsdoc/blob/main/eslint-plugin/README.md
138
+ */
139
+ "jsdoc/tsdoc-syntax"?: TtscLintRuleSetting;
140
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintJsdocRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintJsdocRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintJsdocRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,302 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * JSX accessibility rules from `eslint-plugin-jsx-a11y`, applied to
4
+ * TSX (and JSX-in-TS) sources.
5
+ *
6
+ * Checks the static structure of JSX elements against WAI-ARIA
7
+ * authoring guidance — interactive controls should be focusable,
8
+ * labels should reference a control, ARIA properties should match the
9
+ * element role, and so on. Runtime accessibility issues require live
10
+ * audits; this family catches the statically-decidable subset.
11
+ *
12
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y
13
+ */
14
+ export interface ITtscLintJsxA11yRules {
15
+ /**
16
+ * Require image-like JSX elements (`<img>`, `<input
17
+ * type="image">`, `<object>`, `<area>`) to expose alt text or an
18
+ * ARIA label.
19
+ *
20
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md
21
+ */
22
+ "jsx-a11y/alt-text"?: TtscLintRuleSetting;
23
+ /**
24
+ * Reject `<a>` elements whose visible text is one of a small set of
25
+ * phrases that carry no information out of context. Screen-reader
26
+ * users navigate by listing links — "click here" / "more" / "read
27
+ * more" turn that list into noise.
28
+ *
29
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-ambiguous-text.md
30
+ */
31
+ "jsx-a11y/anchor-ambiguous-text"?: TtscLintRuleSetting;
32
+ /**
33
+ * Reject empty JSX anchors with no accessible content (text,
34
+ * `aria-label`, or labelled child).
35
+ *
36
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md
37
+ */
38
+ "jsx-a11y/anchor-has-content"?: TtscLintRuleSetting;
39
+ /**
40
+ * Reject anchors with missing, `#`-only, empty, or `javascript:`
41
+ * `href` values, all of which break navigation semantics.
42
+ *
43
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md
44
+ */
45
+ "jsx-a11y/anchor-is-valid"?: TtscLintRuleSetting;
46
+ /**
47
+ * Require `tabIndex` on any element carrying `aria-activedescendant`
48
+ * unless the tag is already focusable by default (`<input>`, etc.) —
49
+ * the composite-widget host must keep document focus for the
50
+ * descendant id to do anything.
51
+ *
52
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-activedescendant-has-tabindex.md
53
+ */
54
+ "jsx-a11y/aria-activedescendant-has-tabindex"?: TtscLintRuleSetting;
55
+ /**
56
+ * Reject `aria-*` JSX attribute names that are not part of the
57
+ * WAI-ARIA States and Properties spec — catches typos such as
58
+ * `aria-labeledby` (missing second `l`) that silently disable
59
+ * assistive-tech support.
60
+ *
61
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-props.md
62
+ */
63
+ "jsx-a11y/aria-props"?: TtscLintRuleSetting;
64
+ /**
65
+ * Validate literal values supplied to ARIA properties against the
66
+ * type the spec declares for them — e.g. `aria-checked` must be
67
+ * one of `true`, `false`, `"mixed"`, and `aria-hidden="yes"` is
68
+ * rejected because the type is boolean.
69
+ *
70
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-proptypes.md
71
+ */
72
+ "jsx-a11y/aria-proptypes"?: TtscLintRuleSetting;
73
+ /**
74
+ * Require `role` values to be a concrete, non-abstract WAI-ARIA role
75
+ * (`"button"`, `"checkbox"`, ...). Rejects misspellings and abstract
76
+ * roles like `"range"`; computed values are skipped because the
77
+ * concrete role cannot be checked statically.
78
+ *
79
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md
80
+ */
81
+ "jsx-a11y/aria-role"?: TtscLintRuleSetting;
82
+ /**
83
+ * Reject ARIA roles and attributes on elements that do not
84
+ * support them (e.g. `aria-checked` on a `<meta>` tag).
85
+ *
86
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-unsupported-elements.md
87
+ */
88
+ "jsx-a11y/aria-unsupported-elements"?: TtscLintRuleSetting;
89
+ /**
90
+ * Validate the literal `autocomplete` token against the HTML spec
91
+ * vocabulary and against the `type` of the surrounding input — e.g.
92
+ * `autocomplete="url"` on `<input type="email">` is rejected because
93
+ * the two sets do not overlap.
94
+ *
95
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/autocomplete-valid.md
96
+ */
97
+ "jsx-a11y/autocomplete-valid"?: TtscLintRuleSetting;
98
+ /**
99
+ * Require keyboard handlers alongside `onClick` on non-interactive
100
+ * JSX elements so the element is also reachable by keyboard.
101
+ *
102
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md
103
+ */
104
+ "jsx-a11y/click-events-have-key-events"?: TtscLintRuleSetting;
105
+ /**
106
+ * Require interactive controls to have an accessible label
107
+ * (visible text, `aria-label`, or `aria-labelledby`).
108
+ *
109
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
110
+ */
111
+ "jsx-a11y/control-has-associated-label"?: TtscLintRuleSetting;
112
+ /**
113
+ * Reject empty JSX headings (`<h1>{}</h1>`) — assistive
114
+ * technology cannot announce content that does not exist.
115
+ *
116
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md
117
+ */
118
+ "jsx-a11y/heading-has-content"?: TtscLintRuleSetting;
119
+ /**
120
+ * Require `<html>` JSX elements to declare a non-empty `lang`
121
+ * attribute so screen readers can pick the correct pronunciation.
122
+ * Largely superseded by `jsx-a11y/lang`, which also validates the
123
+ * tag value.
124
+ *
125
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/html-has-lang.md
126
+ */
127
+ "jsx-a11y/html-has-lang"?: TtscLintRuleSetting;
128
+ /**
129
+ * Require every `<iframe>` JSX element to declare a non-empty,
130
+ * unique `title` so assistive tech can announce the embedded
131
+ * content. Empty strings, booleans, numbers, and `{...spread}`
132
+ * without a literal title are all flagged.
133
+ *
134
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/iframe-has-title.md
135
+ */
136
+ "jsx-a11y/iframe-has-title"?: TtscLintRuleSetting;
137
+ /**
138
+ * Reject redundant words such as *image*, *photo*, or *picture*
139
+ * inside the `alt` attribute of an `<img>` — the role already
140
+ * conveys "this is an image".
141
+ *
142
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md
143
+ */
144
+ "jsx-a11y/img-redundant-alt"?: TtscLintRuleSetting;
145
+ /**
146
+ * Require elements with interactive ARIA roles (`role="button"`,
147
+ * `role="link"`, ...) to be focusable.
148
+ *
149
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/interactive-supports-focus.md
150
+ */
151
+ "jsx-a11y/interactive-supports-focus"?: TtscLintRuleSetting;
152
+ /**
153
+ * Require `<label>` elements to either wrap a form control or
154
+ * reference one via `htmlFor`.
155
+ *
156
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
157
+ */
158
+ "jsx-a11y/label-has-associated-control"?: TtscLintRuleSetting;
159
+ /**
160
+ * Deprecated predecessor of `label-has-associated-control`. Checks
161
+ * the same nesting / `htmlFor` association requirement and supports
162
+ * configuring which custom components count as labels. Off in
163
+ * `recommended`; kept only for legacy configs.
164
+ *
165
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-for.md
166
+ */
167
+ "jsx-a11y/label-has-for"?: TtscLintRuleSetting;
168
+ /**
169
+ * Require the `<html lang>` value to be a valid IETF BCP-47 tag
170
+ * (`"en"`, `"en-US"`, ...). Superset of `html-has-lang`, since it
171
+ * also catches present-but-invalid tags like `lang="foo"`.
172
+ *
173
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/lang.md
174
+ */
175
+ "jsx-a11y/lang"?: TtscLintRuleSetting;
176
+ /**
177
+ * Require `<audio>` and `<video>` elements to provide a `<track
178
+ * kind="captions">` child.
179
+ *
180
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/media-has-caption.md
181
+ */
182
+ "jsx-a11y/media-has-caption"?: TtscLintRuleSetting;
183
+ /**
184
+ * Require `onMouseOver` / `onMouseOut` handlers to have
185
+ * `onFocus` / `onBlur` parity so keyboard users get the same
186
+ * interaction.
187
+ *
188
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/mouse-events-have-key-events.md
189
+ */
190
+ "jsx-a11y/mouse-events-have-key-events"?: TtscLintRuleSetting;
191
+ /**
192
+ * Reject the `accessKey` JSX attribute — it conflicts with
193
+ * assistive-technology keyboard shortcuts.
194
+ *
195
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-access-key.md
196
+ */
197
+ "jsx-a11y/no-access-key"?: TtscLintRuleSetting;
198
+ /**
199
+ * Reject `aria-hidden` on focusable JSX elements — focus would
200
+ * land on an element hidden from assistive tech.
201
+ *
202
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-aria-hidden-on-focusable.md
203
+ */
204
+ "jsx-a11y/no-aria-hidden-on-focusable"?: TtscLintRuleSetting;
205
+ /**
206
+ * Reject `autoFocus` / `autofocus` JSX attributes — they steal
207
+ * focus on page load and disorient keyboard users.
208
+ *
209
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-autofocus.md
210
+ */
211
+ "jsx-a11y/no-autofocus"?: TtscLintRuleSetting;
212
+ /**
213
+ * Reject `<blink>` and `<marquee>` — moving content cannot be
214
+ * paused and harms users with cognitive or visual impairments
215
+ * (WCAG 2.2.2). The list is closed: extra elements cannot be added.
216
+ *
217
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-distracting-elements.md
218
+ */
219
+ "jsx-a11y/no-distracting-elements"?: TtscLintRuleSetting;
220
+ /**
221
+ * Reject non-interactive ARIA roles applied to natively
222
+ * interactive elements (e.g. `<button role="presentation">`).
223
+ *
224
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-interactive-element-to-noninteractive-role.md
225
+ */
226
+ "jsx-a11y/no-interactive-element-to-noninteractive-role"?: TtscLintRuleSetting;
227
+ /**
228
+ * Reject interaction event handlers (`onClick`, `onKeyDown`)
229
+ * placed on known non-interactive elements without a role
230
+ * override.
231
+ *
232
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-interactions.md
233
+ */
234
+ "jsx-a11y/no-noninteractive-element-interactions"?: TtscLintRuleSetting;
235
+ /**
236
+ * Reject interactive ARIA roles applied to non-interactive
237
+ * elements (e.g. `<li role="button">`); use the matching
238
+ * interactive tag.
239
+ *
240
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-to-interactive-role.md
241
+ */
242
+ "jsx-a11y/no-noninteractive-element-to-interactive-role"?: TtscLintRuleSetting;
243
+ /**
244
+ * Reject `tabIndex` on non-interactive JSX elements that have
245
+ * no interactive role.
246
+ *
247
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-tabindex.md
248
+ */
249
+ "jsx-a11y/no-noninteractive-tabindex"?: TtscLintRuleSetting;
250
+ /**
251
+ * Reject explicit `role` attributes that duplicate the
252
+ * native semantics of the element (e.g. `<button
253
+ * role="button">`).
254
+ *
255
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-redundant-roles.md
256
+ */
257
+ "jsx-a11y/no-redundant-roles"?: TtscLintRuleSetting;
258
+ /**
259
+ * Require static elements with interaction handlers to declare
260
+ * an interactive `role`.
261
+ *
262
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md
263
+ */
264
+ "jsx-a11y/no-static-element-interactions"?: TtscLintRuleSetting;
265
+ /**
266
+ * Prefer native JSX tags over `div` / `span` plus an equivalent
267
+ * `role` (e.g. `<button>` over `<div role="button">`).
268
+ *
269
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/prefer-tag-over-role.md
270
+ */
271
+ "jsx-a11y/prefer-tag-over-role"?: TtscLintRuleSetting;
272
+ /**
273
+ * Require ARIA properties that the chosen role mandates (e.g.
274
+ * `aria-checked` on `role="checkbox"`).
275
+ *
276
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-has-required-aria-props.md
277
+ */
278
+ "jsx-a11y/role-has-required-aria-props"?: TtscLintRuleSetting;
279
+ /**
280
+ * Reject ARIA properties that the role does not support (e.g.
281
+ * `aria-checked` on `role="link"`).
282
+ *
283
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md
284
+ */
285
+ "jsx-a11y/role-supports-aria-props"?: TtscLintRuleSetting;
286
+ /**
287
+ * Restrict the `scope` attribute to `<th>` cells. On any other tag
288
+ * (`<div scope="col">`, `<td scope="row">`) the attribute is ignored
289
+ * by browsers and confuses table-aware assistive tech.
290
+ *
291
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md
292
+ */
293
+ "jsx-a11y/scope"?: TtscLintRuleSetting;
294
+ /**
295
+ * Reject `tabIndex` values greater than zero. Positive indices jump
296
+ * the keyboard focus order out of document order and almost always
297
+ * desynchronize from later DOM changes; `0` and `-1` remain allowed.
298
+ *
299
+ * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/tabindex-no-positive.md
300
+ */
301
+ "jsx-a11y/tabindex-no-positive"?: TtscLintRuleSetting;
302
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintJsxA11yRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintJsxA11yRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintJsxA11yRules.ts"],"names":[],"mappings":""}