@ttsc/lint 0.13.0 → 0.14.0-dev.20250530.1

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