@ttsc/lint 0.13.1 → 0.14.0-dev.20260528.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/README.md +948 -69
  2. package/lib/defaultFormat.d.ts +9 -6
  3. package/lib/defaultFormat.js +9 -6
  4. package/lib/defaultFormat.js.map +1 -1
  5. package/lib/index.d.ts +46 -0
  6. package/lib/index.js +35 -10
  7. package/lib/index.js.map +1 -1
  8. package/lib/structures/ITtscLintConfig.d.ts +12 -6
  9. package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
  10. package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
  11. package/lib/structures/ITtscLintFormat.js.map +1 -0
  12. package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
  13. package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
  14. package/lib/structures/TtscLintRuleSetting.js.map +1 -0
  15. package/lib/structures/index.d.ts +3 -4
  16. package/lib/structures/index.js +3 -4
  17. package/lib/structures/index.js.map +1 -1
  18. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
  19. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
  20. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
  21. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
  22. package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
  23. package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
  24. package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
  25. package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
  26. package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
  27. package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
  28. package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
  29. package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
  30. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
  31. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
  32. package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
  33. package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
  34. package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
  35. package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
  36. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
  37. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
  38. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
  39. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
  40. package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
  41. package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
  42. package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
  43. package/lib/structures/rules/ITtscLintJestRules.js +3 -0
  44. package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
  45. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
  46. package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
  47. package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
  48. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
  49. package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
  50. package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
  51. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
  52. package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
  53. package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
  54. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
  55. package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
  56. package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
  57. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
  58. package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
  59. package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
  60. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
  61. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
  62. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
  63. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
  64. package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
  65. package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
  66. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
  67. package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
  68. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
  69. package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
  70. package/lib/structures/rules/ITtscLintReactRules.js +3 -0
  71. package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
  72. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
  73. package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
  74. package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
  75. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
  76. package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
  77. package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
  78. package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
  79. package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
  80. package/lib/structures/rules/ITtscLintRules.js.map +1 -0
  81. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
  82. package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
  83. package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
  84. package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
  85. package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
  86. package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
  87. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
  88. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
  89. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
  90. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
  91. package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
  92. package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
  93. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
  94. package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
  95. package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
  96. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
  97. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
  98. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
  99. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
  100. package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
  101. package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
  102. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
  103. package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
  104. package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
  105. package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
  106. package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
  107. package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
  108. package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
  109. package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
  110. package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
  111. package/lib/structures/rules/index.d.ts +31 -0
  112. package/lib/structures/rules/index.js +48 -0
  113. package/lib/structures/rules/index.js.map +1 -0
  114. package/linthost/ast_helpers.go +30 -5
  115. package/linthost/config.go +48 -17
  116. package/linthost/config_format.go +9 -9
  117. package/linthost/directives.go +67 -25
  118. package/linthost/dispatch.go +14 -3
  119. package/linthost/engine.go +152 -31
  120. package/linthost/fix.go +2 -2
  121. package/linthost/lsp.go +747 -0
  122. package/linthost/print_dispatch.go +2 -2
  123. package/linthost/print_nodes_function.go +2 -2
  124. package/linthost/print_nodes_object.go +1 -1
  125. package/linthost/rule_names.go +14 -0
  126. package/linthost/rules_arrays.go +2 -2
  127. package/linthost/rules_boundaries.go +532 -0
  128. package/linthost/rules_camelcase.go +133 -0
  129. package/linthost/rules_complexity.go +94 -0
  130. package/linthost/rules_consistent_return.go +130 -0
  131. package/linthost/rules_console.go +1 -1
  132. package/linthost/rules_core_extra.go +739 -0
  133. package/linthost/rules_curly.go +70 -0
  134. package/linthost/rules_cypress.go +608 -0
  135. package/linthost/rules_debugger.go +2 -2
  136. package/linthost/rules_default_case.go +39 -0
  137. package/linthost/rules_default_case_last.go +46 -0
  138. package/linthost/rules_dupes.go +3 -3
  139. package/linthost/rules_empty.go +3 -3
  140. package/linthost/rules_escape.go +44 -24
  141. package/linthost/rules_eval.go +2 -2
  142. package/linthost/rules_finally.go +2 -2
  143. package/linthost/rules_format_jsdoc.go +1 -1
  144. package/linthost/rules_format_print_width.go +9 -9
  145. package/linthost/rules_format_quotes.go +1 -1
  146. package/linthost/rules_format_semi.go +1 -1
  147. package/linthost/rules_format_sort_imports.go +1 -1
  148. package/linthost/rules_format_trailing_comma.go +1 -1
  149. package/linthost/rules_functional.go +967 -0
  150. package/linthost/rules_gap.go +24 -45
  151. package/linthost/rules_grouped_accessor_pairs.go +87 -0
  152. package/linthost/rules_guard_for_in.go +198 -0
  153. package/linthost/rules_id_length.go +77 -0
  154. package/linthost/rules_imports.go +70 -2
  155. package/linthost/rules_init_declarations.go +53 -0
  156. package/linthost/rules_jest.go +618 -0
  157. package/linthost/rules_jsdoc.go +502 -0
  158. package/linthost/rules_jsx_a11y.go +1264 -0
  159. package/linthost/rules_logic.go +12 -12
  160. package/linthost/rules_loops.go +1 -1
  161. package/linthost/rules_max_classes_per_file.go +58 -0
  162. package/linthost/rules_max_depth.go +83 -0
  163. package/linthost/rules_max_lines.go +101 -0
  164. package/linthost/rules_max_lines_per_function.go +57 -0
  165. package/linthost/rules_max_nested_callbacks.go +61 -0
  166. package/linthost/rules_max_params.go +49 -0
  167. package/linthost/rules_max_statements.go +59 -0
  168. package/linthost/rules_misc.go +1 -1
  169. package/linthost/rules_nextjs.go +697 -0
  170. package/linthost/rules_no_else_return.go +75 -0
  171. package/linthost/rules_no_empty_named_blocks.go +91 -0
  172. package/linthost/rules_no_extend_native.go +51 -0
  173. package/linthost/rules_no_import_assign.go +140 -0
  174. package/linthost/rules_no_invalid_this.go +52 -0
  175. package/linthost/rules_no_loop_func.go +85 -0
  176. package/linthost/rules_no_magic_numbers.go +123 -0
  177. package/linthost/rules_no_mixed_operators.go +80 -0
  178. package/linthost/rules_no_param_reassign.go +98 -0
  179. package/linthost/rules_no_redeclare.go +270 -0
  180. package/linthost/rules_no_restricted_imports.go +105 -0
  181. package/linthost/rules_no_restricted_syntax.go +49 -0
  182. package/linthost/rules_no_shadow.go +147 -0
  183. package/linthost/rules_no_unreachable.go +77 -0
  184. package/linthost/rules_no_useless_assignment.go +120 -0
  185. package/linthost/rules_no_useless_constructor.go +245 -0
  186. package/linthost/rules_no_useless_return.go +51 -0
  187. package/linthost/rules_params.go +1 -1
  188. package/linthost/rules_playwright.go +788 -0
  189. package/linthost/rules_prefer_arrow_callback.go +124 -0
  190. package/linthost/rules_prefer_destructuring.go +98 -0
  191. package/linthost/rules_prefer_named_capture_group.go +129 -0
  192. package/linthost/rules_prefer_rest_params.go +94 -0
  193. package/linthost/rules_problems.go +41 -30
  194. package/linthost/rules_promise.go +1128 -73
  195. package/linthost/rules_protos.go +2 -2
  196. package/linthost/rules_react.go +773 -0
  197. package/linthost/rules_react_extras.go +227 -0
  198. package/linthost/rules_react_hooks.go +848 -0
  199. package/linthost/rules_react_perf.go +293 -0
  200. package/linthost/rules_react_refresh.go +583 -0
  201. package/linthost/rules_regexp.go +410 -0
  202. package/linthost/rules_security.go +830 -0
  203. package/linthost/rules_self.go +2 -2
  204. package/linthost/rules_solid.go +1073 -0
  205. package/linthost/rules_sort_imports.go +69 -0
  206. package/linthost/rules_sort_keys.go +134 -0
  207. package/linthost/rules_storybook.go +1176 -0
  208. package/linthost/rules_strings.go +4 -4
  209. package/linthost/rules_suggestions.go +38 -38
  210. package/linthost/rules_tanstack_query.go +844 -0
  211. package/linthost/rules_testing_library.go +1204 -0
  212. package/linthost/rules_throw.go +1 -1
  213. package/linthost/rules_ts.go +19 -19
  214. package/linthost/rules_ts_async.go +399 -0
  215. package/linthost/rules_ts_class_literal_property_style.go +115 -0
  216. package/linthost/rules_ts_consistent_type_exports.go +256 -0
  217. package/linthost/rules_ts_explicit_function_return_type.go +67 -0
  218. package/linthost/rules_ts_extra.go +155 -36
  219. package/linthost/rules_ts_no_base_to_string.go +218 -0
  220. package/linthost/rules_ts_no_confusing_void.go +72 -0
  221. package/linthost/rules_ts_no_deprecated.go +195 -0
  222. package/linthost/rules_ts_no_for_in_array.go +84 -0
  223. package/linthost/rules_ts_no_magic_numbers.go +124 -0
  224. package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
  225. package/linthost/rules_ts_no_misused_spread.go +104 -0
  226. package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
  227. package/linthost/rules_ts_no_restricted_types.go +62 -0
  228. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
  229. package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
  230. package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
  231. package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
  232. package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
  233. package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
  234. package/linthost/rules_ts_no_unsafe_argument.go +82 -0
  235. package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
  236. package/linthost/rules_ts_no_unsafe_call.go +82 -0
  237. package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
  238. package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
  239. package/linthost/rules_ts_no_unsafe_return.go +126 -0
  240. package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
  241. package/linthost/rules_ts_no_useless_constructor.go +52 -0
  242. package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
  243. package/linthost/rules_ts_parameter_properties.go +38 -0
  244. package/linthost/rules_ts_prefer_find.go +178 -0
  245. package/linthost/rules_ts_prefer_includes.go +255 -0
  246. package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
  247. package/linthost/rules_ts_prefer_optional_chain.go +228 -0
  248. package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
  249. package/linthost/rules_ts_prefer_readonly.go +73 -0
  250. package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
  251. package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
  252. package/linthost/rules_ts_prefer_return_this_type.go +135 -0
  253. package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
  254. package/linthost/rules_ts_promise_function_async.go +77 -0
  255. package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
  256. package/linthost/rules_ts_require_array_sort_compare.go +96 -0
  257. package/linthost/rules_ts_restrict_plus_operands.go +127 -0
  258. package/linthost/rules_ts_restrict_template_expressions.go +95 -0
  259. package/linthost/rules_ts_simple.go +387 -0
  260. package/linthost/rules_ts_sort_type_constituents.go +144 -0
  261. package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
  262. package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
  263. package/linthost/rules_ts_unbound_method.go +126 -0
  264. package/linthost/rules_tsdoc.go +136 -0
  265. package/linthost/rules_unicorn_better_regex.go +27 -0
  266. package/linthost/rules_unicorn_catch_error_name.go +46 -0
  267. package/linthost/rules_unicorn_consistent_assert.go +47 -0
  268. package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
  269. package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
  270. package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
  271. package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
  272. package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
  273. package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
  274. package/linthost/rules_unicorn_custom_error_definition.go +138 -0
  275. package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
  276. package/linthost/rules_unicorn_error_message.go +64 -0
  277. package/linthost/rules_unicorn_escape_case.go +51 -0
  278. package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
  279. package/linthost/rules_unicorn_explicit_length_check.go +88 -0
  280. package/linthost/rules_unicorn_filename_case.go +29 -0
  281. package/linthost/rules_unicorn_import_style.go +28 -0
  282. package/linthost/rules_unicorn_isolated_functions.go +29 -0
  283. package/linthost/rules_unicorn_new_for_builtins.go +87 -0
  284. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
  285. package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
  286. package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
  287. package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
  288. package/linthost/rules_unicorn_no_array_for_each.go +40 -0
  289. package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
  290. package/linthost/rules_unicorn_no_array_reduce.go +41 -0
  291. package/linthost/rules_unicorn_no_array_reverse.go +44 -0
  292. package/linthost/rules_unicorn_no_array_sort.go +43 -0
  293. package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
  294. package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
  295. package/linthost/rules_unicorn_no_console_spaces.go +61 -0
  296. package/linthost/rules_unicorn_no_document_cookie.go +41 -0
  297. package/linthost/rules_unicorn_no_empty_file.go +44 -0
  298. package/linthost/rules_unicorn_no_for_loop.go +102 -0
  299. package/linthost/rules_unicorn_no_hex_escape.go +42 -0
  300. package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
  301. package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
  302. package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
  303. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
  304. package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
  305. package/linthost/rules_unicorn_no_lonely_if.go +44 -0
  306. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
  307. package/linthost/rules_unicorn_no_named_default.go +54 -0
  308. package/linthost/rules_unicorn_no_negated_condition.go +85 -0
  309. package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
  310. package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
  311. package/linthost/rules_unicorn_no_new_array.go +30 -0
  312. package/linthost/rules_unicorn_no_new_buffer.go +31 -0
  313. package/linthost/rules_unicorn_no_null.go +24 -0
  314. package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
  315. package/linthost/rules_unicorn_no_process_exit.go +43 -0
  316. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
  317. package/linthost/rules_unicorn_no_static_only_class.go +56 -0
  318. package/linthost/rules_unicorn_no_thenable.go +74 -0
  319. package/linthost/rules_unicorn_no_this_assignment.go +35 -0
  320. package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
  321. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
  322. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
  323. package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
  324. package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
  325. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
  326. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
  327. package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
  328. package/linthost/rules_unicorn_no_unused_properties.go +30 -0
  329. package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
  330. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
  331. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
  332. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
  333. package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
  334. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
  335. package/linthost/rules_unicorn_no_useless_spread.go +67 -0
  336. package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
  337. package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
  338. package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
  339. package/linthost/rules_unicorn_number_literal_case.go +69 -0
  340. package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
  341. package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
  342. package/linthost/rules_unicorn_prefer_array_find.go +51 -0
  343. package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
  344. package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
  345. package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
  346. package/linthost/rules_unicorn_prefer_array_some.go +67 -0
  347. package/linthost/rules_unicorn_prefer_at.go +77 -0
  348. package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
  349. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
  350. package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
  351. package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
  352. package/linthost/rules_unicorn_prefer_code_point.go +49 -0
  353. package/linthost/rules_unicorn_prefer_date_now.go +78 -0
  354. package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
  355. package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
  356. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
  357. package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
  358. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
  359. package/linthost/rules_unicorn_prefer_event_target.go +36 -0
  360. package/linthost/rules_unicorn_prefer_export_from.go +129 -0
  361. package/linthost/rules_unicorn_prefer_global_this.go +127 -0
  362. package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
  363. package/linthost/rules_unicorn_prefer_includes.go +149 -0
  364. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
  365. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
  366. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
  367. package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
  368. package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
  369. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
  370. package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
  371. package/linthost/rules_unicorn_prefer_module.go +50 -0
  372. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
  373. package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
  374. package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
  375. package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
  376. package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
  377. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
  378. package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
  379. package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
  380. package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
  381. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
  382. package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
  383. package/linthost/rules_unicorn_prefer_set_has.go +42 -0
  384. package/linthost/rules_unicorn_prefer_set_size.go +48 -0
  385. package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
  386. package/linthost/rules_unicorn_prefer_single_call.go +96 -0
  387. package/linthost/rules_unicorn_prefer_spread.go +51 -0
  388. package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
  389. package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
  390. package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
  391. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
  392. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
  393. package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
  394. package/linthost/rules_unicorn_prefer_switch.go +103 -0
  395. package/linthost/rules_unicorn_prefer_ternary.go +71 -0
  396. package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
  397. package/linthost/rules_unicorn_prefer_type_error.go +127 -0
  398. package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
  399. package/linthost/rules_unicorn_relative_url_style.go +49 -0
  400. package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
  401. package/linthost/rules_unicorn_require_module_attributes.go +54 -0
  402. package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
  403. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
  404. package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
  405. package/linthost/rules_unicorn_string_content.go +27 -0
  406. package/linthost/rules_unicorn_switch_case_braces.go +42 -0
  407. package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
  408. package/linthost/rules_unicorn_template_indent.go +28 -0
  409. package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
  410. package/linthost/rules_unicorn_throw_new_error.go +61 -0
  411. package/linthost/rules_var.go +4 -4
  412. package/linthost/rules_vitest.go +568 -0
  413. package/package.json +3 -3
  414. package/plugin/main.go +49 -3
  415. package/rule/astutil/astutil.go +10 -3
  416. package/rule/rule.go +12 -10
  417. package/src/defaultFormat.ts +11 -8
  418. package/src/index.ts +40 -16
  419. package/src/structures/ITtscLintConfig.ts +12 -6
  420. package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
  421. package/src/structures/TtscLintRuleSetting.ts +55 -0
  422. package/src/structures/index.ts +3 -4
  423. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
  424. package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
  425. package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
  426. package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
  427. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
  428. package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
  429. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
  430. package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
  431. package/src/structures/rules/ITtscLintJestRules.ts +220 -0
  432. package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
  433. package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
  434. package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
  435. package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
  436. package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
  437. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
  438. package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
  439. package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
  440. package/src/structures/rules/ITtscLintReactRules.ts +321 -0
  441. package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
  442. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
  443. package/src/structures/rules/ITtscLintRules.ts +77 -0
  444. package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
  445. package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
  446. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
  447. package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
  448. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
  449. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
  450. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
  451. package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
  452. package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
  453. package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
  454. package/src/structures/rules/index.ts +31 -0
  455. package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
  456. package/lib/structures/TtscLintRule.d.ts +0 -17
  457. package/lib/structures/TtscLintRule.js.map +0 -1
  458. package/lib/structures/TtscLintRuleMap.d.ts +0 -46
  459. package/lib/structures/TtscLintRuleMap.js.map +0 -1
  460. package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
  461. package/lib/structures/TtscLintRuleOptions.js.map +0 -1
  462. package/src/structures/TtscLintRule.ts +0 -160
  463. package/src/structures/TtscLintRuleMap.ts +0 -55
  464. package/src/structures/TtscLintRuleOptions.ts +0 -151
@@ -0,0 +1,188 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Promise correctness and style rules from `eslint-plugin-promise`.
4
+ *
5
+ * Checks the chain shape of Promise-using code: every chain ends
6
+ * with `catch`, no callback inside a `then`, no nested
7
+ * `.then().then()`, and so on.
8
+ *
9
+ * AST-local only — type-aware Promise checks belong with
10
+ * `typescript/*` checker rules.
11
+ *
12
+ * @reference https://github.com/eslint-community/eslint-plugin-promise
13
+ */
14
+ export interface ITtscLintPromiseRules {
15
+ /**
16
+ * Require every `then()` callback to either `return` a value or
17
+ * `throw`.
18
+ *
19
+ * A callback that does neither breaks the chain by returning
20
+ * `undefined`.
21
+ *
22
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/always-return.md
23
+ */
24
+ "promise/always-return"?: TtscLintRuleSetting;
25
+ /**
26
+ * Reject every `new Promise(...)` construction. Most modern code
27
+ * can use `async`/`await` or existing Promise-returning APIs.
28
+ *
29
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/avoid-new.md
30
+ */
31
+ "promise/avoid-new"?: TtscLintRuleSetting;
32
+ /**
33
+ * Require unreturned promise chains to terminate with `catch()`
34
+ * so unhandled rejections cannot escape.
35
+ *
36
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/catch-or-return.md
37
+ */
38
+ "promise/catch-or-return"?: TtscLintRuleSetting;
39
+ /**
40
+ * Reject direct invocation of an error-first callback inside a
41
+ * `then()` or `catch()` handler.
42
+ *
43
+ * Synchronously calling the callback from a promise handler can
44
+ * re-enter it on both the fulfilled and rejected paths. Upstream
45
+ * guidance: defer via `setImmediate`/`process.nextTick` if a
46
+ * callback bridge is genuinely required.
47
+ *
48
+ * Also flags `.then(callback)` / `.catch(callback)` calls whose
49
+ * handler argument is a bare callback-shaped identifier
50
+ * (`callback`, `cb`, `next`, `done`).
51
+ *
52
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-callback-in-promise.md
53
+ */
54
+ "promise/no-callback-in-promise"?: TtscLintRuleSetting;
55
+ /**
56
+ * Detect Promise executor bodies with more than one resolve/reject
57
+ * call. The native rule does not yet model branch exclusivity —
58
+ * bodies whose calls are split across mutually exclusive branches
59
+ * will be flagged too.
60
+ *
61
+ * The second call is silently ignored, but the surrounding logic
62
+ * almost always assumed short-circuit.
63
+ *
64
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md
65
+ */
66
+ "promise/no-multiple-resolved"?: TtscLintRuleSetting;
67
+ /**
68
+ * Require every file that uses `Promise` to import or require the
69
+ * implementation explicitly, instead of reaching the native global.
70
+ *
71
+ * Useful for projects that substitute Bluebird or another library
72
+ * and want the choice grep-visible per file.
73
+ *
74
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-native.md
75
+ */
76
+ "promise/no-native"?: TtscLintRuleSetting;
77
+ /**
78
+ * Reject nested `then()`/`catch()` calls inside the body of a
79
+ * Promise callback. Use chained `.then()` instead.
80
+ *
81
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-nesting.md
82
+ */
83
+ "promise/no-nesting"?: TtscLintRuleSetting;
84
+ /**
85
+ * Reject `new` applied to Promise statics such as
86
+ * `new Promise.resolve(x)`, `new Promise.all([...])`, or
87
+ * `new Promise.race([...])`.
88
+ *
89
+ * The statics are plain functions, so `new` throws a `TypeError`
90
+ * at runtime — caught here before the call ships.
91
+ *
92
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-new-statics.md
93
+ */
94
+ "promise/no-new-statics"?: TtscLintRuleSetting;
95
+ /**
96
+ * Reject building a promise chain inside the body of an
97
+ * error-first callback.
98
+ *
99
+ * The callback already owns an error channel, so layering
100
+ * `.then()`/`.catch()` on top creates two incompatible failure
101
+ * pipelines. Upstream advice: promisify the outer API instead.
102
+ *
103
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-promise-in-callback.md
104
+ */
105
+ "promise/no-promise-in-callback"?: TtscLintRuleSetting;
106
+ /**
107
+ * Reject `return` from inside a `finally()` callback.
108
+ *
109
+ * The chain's resolved value comes from the prior `then`/`catch`,
110
+ * so any value returned from `finally` is discarded — usually
111
+ * signals confusion about where the chain's value comes from.
112
+ *
113
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-in-finally.md
114
+ */
115
+ "promise/no-return-in-finally"?: TtscLintRuleSetting;
116
+ /**
117
+ * Reject `return Promise.resolve(x)` and `return
118
+ * Promise.reject(x)` inside promise callbacks; return the bare
119
+ * value or `throw` instead.
120
+ *
121
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-return-wrap.md
122
+ */
123
+ "promise/no-return-wrap"?: TtscLintRuleSetting;
124
+ /**
125
+ * Enforce canonical parameter names (`resolve`, `reject`) on
126
+ * Promise executor functions.
127
+ *
128
+ * Consistent names make executor bodies greppable and prevent
129
+ * accidental shadowing of the outer `resolve` symbol.
130
+ *
131
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/param-names.md
132
+ */
133
+ "promise/param-names"?: TtscLintRuleSetting;
134
+ /**
135
+ * Flag continuation-passing callback shapes (last parameter is a
136
+ * function and an error-first invocation pattern is detected),
137
+ * suggesting an `async`/`await` rewrite.
138
+ *
139
+ * Intended for codebases that have already migrated their I/O
140
+ * surface to promises and want to keep callers consistent.
141
+ *
142
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-callbacks.md
143
+ */
144
+ "promise/prefer-await-to-callbacks"?: TtscLintRuleSetting;
145
+ /**
146
+ * Prefer `await` over explicit `.then()`/`.catch()`/`.finally()`
147
+ * chains inside `async` functions.
148
+ *
149
+ * Sequential awaits compose more naturally with try/catch and
150
+ * avoid the indentation creep of deeply nested handlers.
151
+ *
152
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-await-to-then.md
153
+ */
154
+ "promise/prefer-await-to-then"?: TtscLintRuleSetting;
155
+ /**
156
+ * Prefer `.catch(handler)` over the two-argument form
157
+ * `.then(onFulfilled, onRejected)`.
158
+ *
159
+ * The two-argument shape skips rejections raised inside
160
+ * `onFulfilled`, which surprises readers and hides errors from
161
+ * logging middleware.
162
+ *
163
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/prefer-catch.md
164
+ */
165
+ "promise/prefer-catch"?: TtscLintRuleSetting;
166
+ /**
167
+ * Reject non-standard `Promise` statics such as `Promise.done`,
168
+ * `Promise.spread`, or library-specific extensions shimmed onto
169
+ * the global.
170
+ *
171
+ * Sticking to spec methods keeps code portable across Promise
172
+ * implementations.
173
+ *
174
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/spec-only.md
175
+ */
176
+ "promise/spec-only"?: TtscLintRuleSetting;
177
+ /**
178
+ * Enforce the argument counts the Promise spec defines for each
179
+ * method — `Promise.all`/`Promise.race` take exactly one argument,
180
+ * `Promise.resolve`/`Promise.reject` take zero or one, `.then`
181
+ * takes one or two, `.catch`/`.finally` take exactly one.
182
+ *
183
+ * Extra or missing arguments usually indicate a misread of the API.
184
+ *
185
+ * @reference https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/valid-params.md
186
+ */
187
+ "promise/valid-params"?: TtscLintRuleSetting;
188
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintPromiseRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintPromiseRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintPromiseRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared options shape for every rule in {@link ITtscLintReactPerfRules}.
3
+ *
4
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf
5
+ */
6
+ /** `react-perf/*` rule options. */
7
+ export interface ITtscLintReactPerfRuleOptions {
8
+ /**
9
+ * Controls which intrinsic JSX element props are ignored.
10
+ *
11
+ * `"all"` ignores every prop on lowercase / native elements such as
12
+ * `div`. An array ignores only those prop names on native elements,
13
+ * for example `["style"]`. Custom components are still checked.
14
+ *
15
+ * @default [] (native props are checked)
16
+ */
17
+ nativeAllowList?: "all" | readonly string[];
18
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Shared options shape for every rule in {@link ITtscLintReactPerfRules}.
4
+ *
5
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=ITtscLintReactPerfRuleOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintReactPerfRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactPerfRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,51 @@
1
+ import type { ITtscLintReactPerfRuleOptions } from "./ITtscLintReactPerfRuleOptions";
2
+ import type { TtscLintRuleOptionsSetting } from "../TtscLintRuleSetting";
3
+ /**
4
+ * React JSX performance rules from `eslint-plugin-react-perf`.
5
+ *
6
+ * Detects freshly-allocated reference values (arrays, objects,
7
+ * functions, JSX elements) passed as JSX props. A new reference
8
+ * invalidates `React.memo` / `useMemo` shallow checks on every
9
+ * render. Useful for performance-critical render paths; usually
10
+ * unnecessary for top-level pages.
11
+ *
12
+ * Diagnostics only fire on `.tsx` source files — JSX heuristics rely
13
+ * on the file extension, so `.ts` files are skipped even when they
14
+ * contain JSX-like syntax.
15
+ *
16
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf
17
+ */
18
+ export interface ITtscLintReactPerfRules {
19
+ /**
20
+ * Reject array literals (`[...]`) passed inline as a JSX prop.
21
+ * Hoist the array outside the render or stabilize it with
22
+ * `useMemo`.
23
+ *
24
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-array-as-prop.md
25
+ */
26
+ "react-perf/jsx-no-new-array-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
27
+ /**
28
+ * Reject inline `function` expressions / arrow functions passed
29
+ * as a JSX prop. Stabilize with `useCallback`.
30
+ *
31
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-function-as-prop.md
32
+ */
33
+ "react-perf/jsx-no-new-function-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
34
+ /**
35
+ * Reject inline object literals (`{...}`) passed as a JSX prop.
36
+ *
37
+ * A fresh object on every render invalidates the shallow-equal
38
+ * check used by `React.memo` and `useMemo` consumers, so any
39
+ * downstream memoization keyed on that prop is wasted.
40
+ *
41
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-object-as-prop.md
42
+ */
43
+ "react-perf/jsx-no-new-object-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
44
+ /**
45
+ * Reject JSX expressions and fragments passed as a JSX prop —
46
+ * each evaluation creates a new React element.
47
+ *
48
+ * @reference https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-jsx-as-prop.md
49
+ */
50
+ "react-perf/jsx-no-jsx-as-prop"?: TtscLintRuleOptionsSetting<ITtscLintReactPerfRuleOptions>;
51
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintReactPerfRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintReactPerfRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactPerfRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Options shapes for the configurable rules in
3
+ * {@link ITtscLintReactRules}.
4
+ *
5
+ * Currently only `react/only-export-components` (from
6
+ * `eslint-plugin-react-refresh`) accepts options.
7
+ *
8
+ * @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh
9
+ */
10
+ /** `react/only-export-components` rule options. */
11
+ export interface ITtscLintReactOnlyExportComponentsRuleOptions {
12
+ /**
13
+ * Extra higher-order component names that wrap component exports.
14
+ *
15
+ * @default []
16
+ */
17
+ extraHOCs?: readonly string[];
18
+ /**
19
+ * Export names the active framework handles during refresh, such as
20
+ * route metadata exports.
21
+ *
22
+ * @default []
23
+ */
24
+ allowExportNames?: readonly string[];
25
+ /**
26
+ * Permit literal / string / boolean / template / binary constant
27
+ * exports alongside component exports.
28
+ *
29
+ * @default false
30
+ */
31
+ allowConstantExport?: boolean;
32
+ /**
33
+ * Also scan JavaScript files that import React. TSX files are always
34
+ * scanned.
35
+ *
36
+ * @default false
37
+ */
38
+ checkJS?: boolean;
39
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Options shapes for the configurable rules in
4
+ * {@link ITtscLintReactRules}.
5
+ *
6
+ * Currently only `react/only-export-components` (from
7
+ * `eslint-plugin-react-refresh`) accepts options.
8
+ *
9
+ * @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=ITtscLintReactRuleOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintReactRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,289 @@
1
+ import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
2
+ import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
3
+ /**
4
+ * React TSX rules.
5
+ *
6
+ * Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`,
7
+ * and `eslint-plugin-react-refresh` under one namespace, matching
8
+ * Oxlint's `react/*` plugin layout. Performance-only rules live in a
9
+ * separate {@link ITtscLintReactPerfRules} family because they are
10
+ * opt-in toggles rather than correctness checks.
11
+ *
12
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react
13
+ */
14
+ export interface ITtscLintReactRules {
15
+ /**
16
+ * Require explicit, valid `type` values on JSX `<button>` elements
17
+ * (`"button"`, `"submit"`, `"reset"`) — the HTML default of
18
+ * `"submit"` causes accidental form submissions.
19
+ *
20
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md
21
+ */
22
+ "react/button-has-type"?: TtscLintRuleSetting;
23
+ /**
24
+ * Require components wrapped in `React.memo(...)` or
25
+ * `React.forwardRef(...)` to be named — either by passing a named
26
+ * function, assigning the call to a named binding, or setting an
27
+ * explicit `displayName`.
28
+ *
29
+ * Anonymous wrappers leave the resulting component nameless in
30
+ * React DevTools and runtime stack frames.
31
+ *
32
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
33
+ */
34
+ "react/display-name"?: TtscLintRuleSetting;
35
+ /**
36
+ * Detect high-confidence missing identifiers in React Hook
37
+ * dependency arrays (`useEffect`, `useLayoutEffect`,
38
+ * `useInsertionEffect`, `useMemo`, `useCallback`).
39
+ *
40
+ * @reference https://react.dev/reference/react/useEffect#specifying-reactive-dependencies
41
+ */
42
+ "react/exhaustive-deps"?: TtscLintRuleSetting;
43
+ /**
44
+ * Reject declaring a component or custom Hook inside another
45
+ * component or Hook body.
46
+ *
47
+ * Each render rebuilds the inner function, giving it a new
48
+ * identity that discards its state and breaks memoization.
49
+ *
50
+ * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
51
+ */
52
+ "react/component-hook-factories"?: TtscLintRuleSetting;
53
+ /**
54
+ * Require JSX `<iframe>` elements to declare a `sandbox` attribute,
55
+ * which restricts what embedded content can do (scripts, forms,
56
+ * navigation).
57
+ *
58
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md
59
+ */
60
+ "react/iframe-missing-sandbox"?: TtscLintRuleSetting;
61
+ /**
62
+ * Reject mutating props, state, or Hook return values inside a
63
+ * component or Hook.
64
+ *
65
+ * React treats these as read-only; mutating a memoized value can
66
+ * desync renders from the dependencies React tracked it under.
67
+ *
68
+ * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
69
+ */
70
+ "react/immutability"?: TtscLintRuleSetting;
71
+ /**
72
+ * Require `key` props on JSX elements produced from arrays or
73
+ * `.map(...)` calls — React uses the key to track list identity
74
+ * across renders.
75
+ *
76
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md
77
+ */
78
+ "react/jsx-key"?: TtscLintRuleSetting;
79
+ /**
80
+ * Reject duplicate JSX prop names on the same element — later
81
+ * occurrences silently overwrite earlier ones.
82
+ *
83
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md
84
+ */
85
+ "react/jsx-no-duplicate-props"?: TtscLintRuleSetting;
86
+ /**
87
+ * Reject `javascript:` URLs in JSX URL-like props such as `href`
88
+ * and `src`.
89
+ *
90
+ * Such URLs evaluate the URL body as script — the same
91
+ * code-execution surface as `eval`, and a common XSS vector when
92
+ * the value is user-controlled.
93
+ *
94
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md
95
+ */
96
+ "react/jsx-no-script-url"?: TtscLintRuleSetting;
97
+ /**
98
+ * Reject `<a target="_blank">` (or any JSX element with
99
+ * `target="_blank"`) that does not also carry `rel="noreferrer"`
100
+ * (or `rel="noopener noreferrer"`).
101
+ *
102
+ * Without those tokens the opened page can navigate the originating
103
+ * window through `window.opener`, a phishing and tab-nabbing vector.
104
+ *
105
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md
106
+ */
107
+ "react/jsx-no-target-blank"?: TtscLintRuleSetting;
108
+ /**
109
+ * Reject JSX elements whose tag is an uppercase identifier with no
110
+ * value-level declaration anywhere in the source file.
111
+ *
112
+ * Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are
113
+ * skipped because resolving the outer name requires module-level
114
+ * information that belongs to the type checker.
115
+ *
116
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md
117
+ */
118
+ "react/jsx-no-undef"?: TtscLintRuleSetting;
119
+ /**
120
+ * Reject JSX fragments that wrap exactly one element child or have
121
+ * no meaningful content — the child (or nothing) can be returned
122
+ * directly.
123
+ *
124
+ * Covers both the short `<>...</>` form and explicit
125
+ * `<Fragment>` / `<React.Fragment>` elements.
126
+ *
127
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md
128
+ */
129
+ "react/jsx-no-useless-fragment"?: TtscLintRuleSetting;
130
+ /**
131
+ * Reject `key={index}` patterns inside JSX lists — array index
132
+ * keys reorder incorrectly on insertion.
133
+ *
134
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md
135
+ */
136
+ "react/no-array-index-key"?: TtscLintRuleSetting;
137
+ /**
138
+ * Reject passing children through an explicit `children` JSX prop.
139
+ *
140
+ * The nested-tag form is shorter, mirrors HTML, and avoids the
141
+ * double-children footgun where a `children` prop and nested JSX
142
+ * both target the same slot.
143
+ *
144
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md
145
+ */
146
+ "react/no-children-prop"?: TtscLintRuleSetting;
147
+ /**
148
+ * Reject `dangerouslySetInnerHTML` altogether.
149
+ *
150
+ * The prop bypasses React's escaping and injects raw HTML into the
151
+ * DOM — a common XSS vector when the input is not sanitized
152
+ * upstream.
153
+ *
154
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md
155
+ */
156
+ "react/no-danger"?: TtscLintRuleSetting;
157
+ /**
158
+ * Reject combining `dangerouslySetInnerHTML` with JSX children
159
+ * — React throws at runtime in this case.
160
+ *
161
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md
162
+ */
163
+ "react/no-danger-with-children"?: TtscLintRuleSetting;
164
+ /**
165
+ * Reject direct writes to `this.state` outside constructor
166
+ * initialization. Use `this.setState(...)` instead.
167
+ *
168
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md
169
+ */
170
+ "react/no-direct-mutation-state"?: TtscLintRuleSetting;
171
+ /**
172
+ * Reject `findDOMNode(...)` calls.
173
+ *
174
+ * The API is deprecated, blocks future React internals work, and
175
+ * breaks component abstraction by reaching across composition
176
+ * boundaries; attach a `ref` to the target element instead.
177
+ *
178
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md
179
+ */
180
+ "react/no-find-dom-node"?: TtscLintRuleSetting;
181
+ /**
182
+ * Reject `this.isMounted()` calls on class components.
183
+ *
184
+ * The API is deprecated, and anti-patterns around it usually hide
185
+ * a memory leak in async callbacks; cancel the work in
186
+ * `componentWillUnmount` instead.
187
+ *
188
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md
189
+ */
190
+ "react/no-is-mounted"?: TtscLintRuleSetting;
191
+ /**
192
+ * Reject string-form JSX refs (`ref="myInput"`).
193
+ *
194
+ * The API is legacy, slated for removal, and has well-known issues
195
+ * with static typing, owner tracking, and stale references; use
196
+ * `useRef` or a callback ref instead.
197
+ *
198
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md
199
+ */
200
+ "react/no-string-refs"?: TtscLintRuleSetting;
201
+ /**
202
+ * Reject unescaped `>`, `"`, `'`, and `}` characters in JSX
203
+ * text content — they render literally and almost always come
204
+ * from forgotten HTML escaping.
205
+ *
206
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md
207
+ */
208
+ "react/no-unescaped-entities"?: TtscLintRuleSetting;
209
+ /**
210
+ * Keep React Fast Refresh component modules from exporting
211
+ * non-component values. Mixing a component export with a
212
+ * constant or hook in the same file invalidates HMR.
213
+ *
214
+ * @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/README.md
215
+ */
216
+ "react/only-export-components"?: TtscLintRuleOptionsSetting<ITtscLintReactOnlyExportComponentsRuleOptions>;
217
+ /**
218
+ * Reject reading or writing `ref.current` during render.
219
+ *
220
+ * Refs persist mutably across renders without re-rendering, so
221
+ * touching them in render breaks the pure-render contract and
222
+ * produces inconsistent output between render passes.
223
+ *
224
+ * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
225
+ */
226
+ "react/refs"?: TtscLintRuleSetting;
227
+ /**
228
+ * Enforce the Rules of Hooks: only call Hooks at the top level
229
+ * of a component or custom Hook, never inside conditionals,
230
+ * loops, or nested functions.
231
+ *
232
+ * @reference https://react.dev/reference/rules/rules-of-hooks
233
+ */
234
+ "react/rules-of-hooks"?: TtscLintRuleSetting;
235
+ /**
236
+ * Reject unconditional `setState` calls in `useEffect` bodies.
237
+ *
238
+ * The state update schedules another render and re-runs the
239
+ * effect, which usually loops forever; the value almost always
240
+ * belongs in `useMemo` or derived state instead.
241
+ *
242
+ * @reference https://react.dev/learn/you-might-not-need-an-effect
243
+ */
244
+ "react/set-state-in-effect"?: TtscLintRuleSetting;
245
+ /**
246
+ * Reject calling `setState` during render.
247
+ *
248
+ * Render must stay pure; queuing an update from the render body
249
+ * schedules another render that queues another update, producing
250
+ * an infinite render loop unless guarded by an explicit equality
251
+ * check.
252
+ *
253
+ * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
254
+ */
255
+ "react/set-state-in-render"?: TtscLintRuleSetting;
256
+ /**
257
+ * Reject string-form `style` values such as `style="color: red"` or
258
+ * `style={\`...\`}`.
259
+ *
260
+ * React expects a `{ camelCaseProp: value }` object, not the
261
+ * HTML-style CSS string, and the latter is silently coerced and
262
+ * never applied.
263
+ *
264
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md
265
+ */
266
+ "react/style-prop-object"?: TtscLintRuleSetting;
267
+ /**
268
+ * Reject `useMemo` calculation callbacks that do not return a
269
+ * value.
270
+ *
271
+ * A block-bodied callback without `return` memoizes `undefined`,
272
+ * silently discarding the intended computation — a common mistake
273
+ * when wrapping an object literal in `{ ... }` instead of
274
+ * `({ ... })`.
275
+ *
276
+ * @reference https://react.dev/reference/react/useMemo
277
+ */
278
+ "react/use-memo"?: TtscLintRuleSetting;
279
+ /**
280
+ * Reject `children` or `dangerouslySetInnerHTML` on void DOM
281
+ * elements (`<img>`, `<br>`, `<input>`, etc.).
282
+ *
283
+ * Void elements have no content model, so React throws at render
284
+ * time when you try to give them any.
285
+ *
286
+ * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md
287
+ */
288
+ "react/void-dom-elements-no-children"?: TtscLintRuleSetting;
289
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintReactRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintReactRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintReactRules.ts"],"names":[],"mappings":""}