@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,181 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Solid TSX rules from `eslint-plugin-solid`.
4
+ *
5
+ * Solid components compile to fine-grained reactivity, so patterns
6
+ * that look correct in React (destructuring props, calling
7
+ * `useEffect`-style hooks with array deps) silently break reactivity
8
+ * in Solid. This family captures the common Solid-only pitfalls.
9
+ *
10
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid
11
+ */
12
+ export interface ITtscLintSolidRules {
13
+ /**
14
+ * Reject early and conditional `return` from a Solid component
15
+ * — Solid components must return exactly once at the top level.
16
+ *
17
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/components-return-once.md
18
+ */
19
+ "solid/components-return-once"?: TtscLintRuleSetting;
20
+ /**
21
+ * Require DOM event handler props to use canonical Solid casing
22
+ * (`onClick`, not `onclick` / `onClIcK`) so the compiler recognizes
23
+ * them as events. Also flags `on*`-named props bound to non-function
24
+ * values, which look like handlers but are not.
25
+ *
26
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/event-handlers.md
27
+ */
28
+ "solid/event-handlers"?: TtscLintRuleSetting;
29
+ /**
30
+ * Route each Solid export to the correct entry point (`solid-js`,
31
+ * `solid-js/web`, or `solid-js/store`) and merge duplicate imports
32
+ * from the same entry.
33
+ *
34
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/imports.md
35
+ */
36
+ "solid/imports"?: TtscLintRuleSetting;
37
+ /**
38
+ * Reject duplicate JSX props on the same Solid element. Unlike
39
+ * React, Solid silently keeps the first value, so the duplicate is
40
+ * dead code and almost always a typo.
41
+ *
42
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-duplicate-props.md
43
+ */
44
+ "solid/jsx-no-duplicate-props"?: TtscLintRuleSetting;
45
+ /**
46
+ * Reject `javascript:` URLs in Solid JSX attributes (`href`, `src`,
47
+ * ...) — they evaluate the suffix as code in the page context and
48
+ * are a long-standing XSS vector.
49
+ *
50
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-script-url.md
51
+ */
52
+ "solid/jsx-no-script-url"?: TtscLintRuleSetting;
53
+ /**
54
+ * Reject Solid JSX component names that are not declared or
55
+ * imported in scope.
56
+ *
57
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-no-undef.md
58
+ */
59
+ "solid/jsx-no-undef"?: TtscLintRuleSetting;
60
+ /**
61
+ * Scope-marker compatibility rule (mirrors ESLint's
62
+ * `react/jsx-uses-vars`).
63
+ *
64
+ * The native engine emits no diagnostics for this id.
65
+ *
66
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/jsx-uses-vars.md
67
+ */
68
+ "solid/jsx-uses-vars"?: TtscLintRuleSetting;
69
+ /**
70
+ * Reject array values passed as Solid event handlers — Solid
71
+ * does not unwrap the array form React supports.
72
+ *
73
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-array-handlers.md
74
+ */
75
+ "solid/no-array-handlers"?: TtscLintRuleSetting;
76
+ /**
77
+ * Reject destructured Solid component props — destructuring breaks
78
+ * reactivity by reading the property eagerly.
79
+ *
80
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-destructure.md
81
+ */
82
+ "solid/no-destructure"?: TtscLintRuleSetting;
83
+ /**
84
+ * Reject `innerHTML` JSX attributes because they bypass sanitization
85
+ * and are a common XSS sink. A static string literal is still
86
+ * allowed by default; flip `allowStatic` off to ban that form too.
87
+ *
88
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-innerhtml.md
89
+ */
90
+ "solid/no-innerhtml"?: TtscLintRuleSetting;
91
+ /**
92
+ * Reject Solid APIs that rely on ES6 `Proxy` (including `new Proxy`,
93
+ * `Proxy.revocable`, imports from `solid-js/store`, and dynamic
94
+ * spread shapes through `mergeProps`). For shipping to runtimes
95
+ * without `Proxy` support; off by default.
96
+ *
97
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-proxy-apis.md
98
+ */
99
+ "solid/no-proxy-apis"?: TtscLintRuleSetting;
100
+ /**
101
+ * Reject React-style dependency arrays in Solid tracked scopes
102
+ * (`createEffect(() => ..., [deps])`).
103
+ *
104
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-react-deps.md
105
+ */
106
+ "solid/no-react-deps"?: TtscLintRuleSetting;
107
+ /**
108
+ * Reject React-specific JSX props such as `className` and
109
+ * `htmlFor` — Solid uses `class` and `for`.
110
+ *
111
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-react-specific-props.md
112
+ */
113
+ "solid/no-react-specific-props"?: TtscLintRuleSetting;
114
+ /**
115
+ * Restrict namespaced JSX attributes (`ns:name={...}`) to the
116
+ * built-in Solid namespaces (`on:`, `oncapture:`, `use:`, `prop:`,
117
+ * `attr:`, `bool:`, `style:`, `class:`). Extra names can be allowed
118
+ * through the `allowedNamespaces` option.
119
+ *
120
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/no-unknown-namespaces.md
121
+ */
122
+ "solid/no-unknown-namespaces"?: TtscLintRuleSetting;
123
+ /**
124
+ * Rewrite `class={cn({ ... })}` / `clsx(...)` / `classnames(...)`
125
+ * calls to the reactive `classlist={{ ... }}` prop.
126
+ *
127
+ * Deprecated and off by default upstream.
128
+ *
129
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-classlist.md
130
+ */
131
+ "solid/prefer-classlist"?: TtscLintRuleSetting;
132
+ /**
133
+ * Replace inline `array.map(item => <JSX />)` with Solid's `<For>`
134
+ * component so the iteration stays keyed and reactive instead of
135
+ * re-creating every child on each update.
136
+ *
137
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-for.md
138
+ */
139
+ "solid/prefer-for"?: TtscLintRuleSetting;
140
+ /**
141
+ * Rewrite `{cond && <JSX />}` short-circuits in JSX to `<Show
142
+ * when={cond}>...</Show>`. Stylistic only — Solid's compiler
143
+ * already handles the boolean form — so it is off by default.
144
+ *
145
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/prefer-show.md
146
+ */
147
+ "solid/prefer-show"?: TtscLintRuleSetting;
148
+ /**
149
+ * Reject common Solid reactivity breakages — reading a signal
150
+ * outside a tracking scope, destructuring a `Store`, etc.
151
+ *
152
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/reactivity.md
153
+ */
154
+ "solid/reactivity"?: TtscLintRuleSetting;
155
+ /**
156
+ * Collapse JSX elements with no children to the self-closing form
157
+ * (`<Foo></Foo>` to `<Foo />`). Configurable per component vs HTML
158
+ * element, including a `"void"` mode that only enforces it for void
159
+ * tags.
160
+ *
161
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/self-closing-comp.md
162
+ */
163
+ "solid/self-closing-comp"?: TtscLintRuleSetting;
164
+ /**
165
+ * Require `style={{...}}` keys to be valid kebab-case CSS properties
166
+ * (`"font-size"`, not React's `fontSize`) and dimensioned values to
167
+ * be strings — Solid does not append implicit `px`.
168
+ *
169
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/style-prop.md
170
+ */
171
+ "solid/style-prop"?: TtscLintRuleSetting;
172
+ /**
173
+ * Reject JSX nestings that the HTML parser would silently restructure
174
+ * at runtime — `<p>` cannot contain block-level children, `<a>` cannot
175
+ * contain another `<a>`, and `<button>` cannot contain other
176
+ * interactive elements.
177
+ *
178
+ * @reference https://github.com/solidjs-community/eslint-plugin-solid/blob/main/packages/eslint-plugin-solid/docs/validate-jsx-nesting.md
179
+ */
180
+ "solid/validate-jsx-nesting"?: TtscLintRuleSetting;
181
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintSolidRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintSolidRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintSolidRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Options shape for rules in {@link ITtscLintStorybookRules} that accept
3
+ * configuration. Only `storybook/no-uninstalled-addons` is configurable.
4
+ *
5
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook
6
+ */
7
+ /** `storybook/no-uninstalled-addons` rule options. */
8
+ export interface ITtscLintStorybookNoUninstalledAddonsRuleOptions {
9
+ /**
10
+ * Explicit `package.json` path used to validate configured Storybook
11
+ * addons. When omitted, the rule walks upward from the linted config
12
+ * file.
13
+ */
14
+ packageJsonLocation?: string;
15
+ /**
16
+ * Addon package names to skip when checking installation status.
17
+ *
18
+ * @default []
19
+ */
20
+ ignore?: readonly string[];
21
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Options shape for rules in {@link ITtscLintStorybookRules} that accept
4
+ * configuration. Only `storybook/no-uninstalled-addons` is configurable.
5
+ *
6
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=ITtscLintStorybookRuleOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintStorybookRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintStorybookRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,174 @@
1
+ import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
2
+ import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
3
+ /**
4
+ * Storybook CSF and configuration rules from
5
+ * `eslint-plugin-storybook`.
6
+ *
7
+ * Checks Component Story Format conventions (default export meta,
8
+ * named story exports, play-function shape) and configuration
9
+ * pitfalls in `.storybook/main.ts`.
10
+ *
11
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook
12
+ */
13
+ export interface ITtscLintStorybookRules {
14
+ /**
15
+ * Require `await` on Storybook interaction helpers (`userEvent`,
16
+ * `expect`, `waitFor`, ...) inside a `play` function.
17
+ *
18
+ * The interactions addon intercepts the awaited promises to record
19
+ * steps, so a missing `await` skips that frame in the debugger and
20
+ * races the next assertion.
21
+ *
22
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md
23
+ */
24
+ "storybook/await-interactions"?: TtscLintRuleSetting;
25
+ /**
26
+ * Require forwarding the play-function `context` argument when
27
+ * invoking another story's `play` function.
28
+ *
29
+ * Storybook hangs the canvas, step tracker, and interactions addon
30
+ * off `context`; omitting it leaves the nested call without the
31
+ * runtime hooks it needs to drive the canvas.
32
+ *
33
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md
34
+ */
35
+ "storybook/context-in-play-function"?: TtscLintRuleSetting;
36
+ /**
37
+ * Require the CSF default meta object to declare a `component`.
38
+ *
39
+ * The reference unlocks Storybook's auto-generated controls,
40
+ * prop-table docs, and CSF3 default render — without it those
41
+ * features silently no-op.
42
+ *
43
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md
44
+ */
45
+ "storybook/csf-component"?: TtscLintRuleSetting;
46
+ /**
47
+ * Require every story file to provide the CSF default export.
48
+ *
49
+ * Storybook keys all per-file configuration (title, decorators,
50
+ * parameters, component) off that default; files without it are
51
+ * skipped at indexing time.
52
+ *
53
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md
54
+ */
55
+ "storybook/default-exports"?: TtscLintRuleSetting;
56
+ /**
57
+ * Reject the legacy `|` separator in Storybook story titles
58
+ * (`"Foo|Bar"`).
59
+ *
60
+ * Storybook 6 standardized on `/` for hierarchy and treats `|` as
61
+ * a literal character, so the title collapses into a single
62
+ * sidebar entry instead of nested folders.
63
+ *
64
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md
65
+ */
66
+ "storybook/hierarchy-separator"?: TtscLintRuleSetting;
67
+ /**
68
+ * Require `title` and `args` in CSF meta to be inline literals,
69
+ * not references to outside variables or function calls.
70
+ *
71
+ * Storybook's indexer and upgrade codemods read these via static
72
+ * analysis and skip stories where the value is not literal.
73
+ *
74
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md
75
+ */
76
+ "storybook/meta-inline-properties"?: TtscLintRuleSetting;
77
+ /**
78
+ * Require CSF meta objects to type-check with `satisfies Meta<…>`
79
+ * rather than a `: Meta<…>` annotation or `as` cast.
80
+ *
81
+ * `satisfies` preserves the narrowed literal types so dependent
82
+ * `StoryObj` declarations can infer the component's args
83
+ * precisely.
84
+ *
85
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md
86
+ */
87
+ "storybook/meta-satisfies-type"?: TtscLintRuleSetting;
88
+ /**
89
+ * Reject `name` metadata on a story when it matches Storybook's
90
+ * auto-derived name from the export identifier.
91
+ *
92
+ * The explicit value adds boilerplate and drifts from the export
93
+ * when one side is renamed without the other.
94
+ *
95
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md
96
+ */
97
+ "storybook/no-redundant-story-name"?: TtscLintRuleSetting;
98
+ /**
99
+ * Reject direct imports from Storybook renderer packages
100
+ * (`@storybook/react`, etc.); use the user-facing package
101
+ * surface.
102
+ *
103
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-renderer-packages.md
104
+ */
105
+ "storybook/no-renderer-packages"?: TtscLintRuleSetting;
106
+ /**
107
+ * Reject the legacy `storiesOf(...)` builder API.
108
+ *
109
+ * Storybook 7 removed it in favour of CSF default-export metadata;
110
+ * remaining uses block the migration to CSF3 and the modern
111
+ * indexer.
112
+ *
113
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md
114
+ */
115
+ "storybook/no-stories-of"?: TtscLintRuleSetting;
116
+ /**
117
+ * Reject the `title` property in CSF meta when the project uses
118
+ * Storybook's auto-title generation.
119
+ *
120
+ * CSF3 derives the title from the file path, so an explicit
121
+ * `title` is redundant and drifts from the on-disk layout when
122
+ * files are moved.
123
+ *
124
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md
125
+ */
126
+ "storybook/no-title-property-in-meta"?: TtscLintRuleSetting;
127
+ /**
128
+ * Validate Storybook addon names against the project's
129
+ * dependencies, so misspelled addon ids surface at lint time.
130
+ *
131
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md
132
+ */
133
+ "storybook/no-uninstalled-addons"?: TtscLintRuleOptionsSetting<ITtscLintStorybookNoUninstalledAddonsRuleOptions>;
134
+ /**
135
+ * Require named story exports to use PascalCase.
136
+ *
137
+ * Storybook derives the displayed story name from the export
138
+ * identifier and inserts spaces at case boundaries, so
139
+ * non-PascalCase exports render with awkward or merged labels in
140
+ * the sidebar.
141
+ *
142
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md
143
+ */
144
+ "storybook/prefer-pascal-case"?: TtscLintRuleSetting;
145
+ /**
146
+ * Require every story file to export at least one named story
147
+ * alongside the default meta.
148
+ *
149
+ * A file with only the default export contributes nothing to the
150
+ * sidebar and usually means a story was deleted but the file was
151
+ * not.
152
+ *
153
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md
154
+ */
155
+ "storybook/story-exports"?: TtscLintRuleSetting;
156
+ /**
157
+ * Require `expect` to be imported from `@storybook/test` in play
158
+ * functions, not from Jest.
159
+ *
160
+ * The Storybook re-export is built for the browser interactions
161
+ * runner; Jest's `expect` ships only Node-only matchers and throws
162
+ * when the play function executes in a browser preview.
163
+ *
164
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md
165
+ */
166
+ "storybook/use-storybook-expect"?: TtscLintRuleSetting;
167
+ /**
168
+ * Reject direct Testing Library imports inside story files;
169
+ * use the Storybook-bundled re-exports.
170
+ *
171
+ * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md
172
+ */
173
+ "storybook/use-storybook-testing-library"?: TtscLintRuleSetting;
174
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintStorybookRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintStorybookRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintStorybookRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * TanStack Query rules from `@tanstack/eslint-plugin-query`.
4
+ *
5
+ * Guards the ergonomic and correctness contracts of TanStack Query
6
+ * (`useQuery`, `useMutation`, query-options factories) inside React
7
+ * TypeScript sources.
8
+ *
9
+ * @reference https://github.com/TanStack/query/tree/main/packages/eslint-plugin-query
10
+ */
11
+ export interface ITtscLintTanstackQueryRules {
12
+ /**
13
+ * Require TanStack Query `queryKey` arrays to include every
14
+ * variable read by the `queryFn` body, mirroring React Hooks
15
+ * dependency tracking.
16
+ *
17
+ * @reference https://tanstack.com/query/latest/docs/eslint/exhaustive-deps
18
+ */
19
+ "tanstack-query/exhaustive-deps"?: TtscLintRuleSetting;
20
+ /**
21
+ * Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam`
22
+ * inside `useInfiniteQuery` to appear in the order TanStack Query
23
+ * documents.
24
+ *
25
+ * Type inference flows through these callbacks in sequence, so a
26
+ * reordered options object widens the page-param type to
27
+ * `unknown`.
28
+ *
29
+ * @reference https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order
30
+ */
31
+ "tanstack-query/infinite-query-property-order"?: TtscLintRuleSetting;
32
+ /**
33
+ * Require `useMutation` callbacks to declare `onMutate` before
34
+ * `onError` and `onSettled`.
35
+ *
36
+ * The options object's type inference threads the `onMutate`
37
+ * return value into the later callbacks' `context` parameter,
38
+ * which collapses to `unknown` when the order is wrong.
39
+ *
40
+ * @reference https://tanstack.com/query/latest/docs/eslint/mutation-property-order
41
+ */
42
+ "tanstack-query/mutation-property-order"?: TtscLintRuleSetting;
43
+ /**
44
+ * Reject `...rest` destructuring on TanStack Query hook results.
45
+ *
46
+ * The result object is a tracked proxy that only re-renders for
47
+ * the fields you read; rest-destructuring touches every field,
48
+ * subscribes the component to all of them, and disables that
49
+ * optimization.
50
+ *
51
+ * @reference https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring
52
+ */
53
+ "tanstack-query/no-rest-destructuring"?: TtscLintRuleSetting;
54
+ /**
55
+ * Reject passing entire TanStack Query hook results into React
56
+ * dependency arrays.
57
+ *
58
+ * The returned object is a fresh reference on every render, so
59
+ * `useEffect` / `useMemo` / `useCallback` would re-run
60
+ * unconditionally; depend on the specific fields you read instead.
61
+ *
62
+ * @reference https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
63
+ */
64
+ "tanstack-query/no-unstable-deps"?: TtscLintRuleSetting;
65
+ /**
66
+ * Reject `queryFn` callbacks that resolve to `void`.
67
+ *
68
+ * The return value is what TanStack Query caches and exposes as
69
+ * `data`; a void implementation always populates the cache with
70
+ * `undefined` and almost always indicates a forgotten `return`.
71
+ *
72
+ * @reference https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
73
+ */
74
+ "tanstack-query/no-void-query-fn"?: TtscLintRuleSetting;
75
+ /**
76
+ * Prefer wrapping query options in the `queryOptions()` helper
77
+ * over inline `{ queryKey, queryFn }` literals.
78
+ *
79
+ * The helper co-locates key and fetcher, lets
80
+ * `queryClient.getQueryData` and `setQueryData` share the same
81
+ * typed key, and prevents the same key being paired with two
82
+ * different `queryFn`s.
83
+ *
84
+ * @reference https://tanstack.com/query/latest/docs/eslint/prefer-query-options
85
+ */
86
+ "tanstack-query/prefer-query-options"?: TtscLintRuleSetting;
87
+ /**
88
+ * Reject creating a `QueryClient` inside a React component or
89
+ * hook body — the client must be stable across renders.
90
+ *
91
+ * @reference https://tanstack.com/query/latest/docs/eslint/stable-query-client
92
+ */
93
+ "tanstack-query/stable-query-client"?: TtscLintRuleSetting;
94
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintTanstackQueryRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintTanstackQueryRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintTanstackQueryRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Options shape for the configurable rules in
3
+ * {@link ITtscLintTestingLibraryRules}. Only
4
+ * `testing-library/consistent-data-testid` accepts options today.
5
+ *
6
+ * @reference https://github.com/testing-library/eslint-plugin-testing-library
7
+ */
8
+ /** `testing-library/consistent-data-testid` rule options. */
9
+ export interface ITtscLintTestingLibraryConsistentDataTestIdRuleOptions {
10
+ /**
11
+ * Regular expression string every configured test-id attribute value
12
+ * must match. `{fileName}` is replaced with the basename before the
13
+ * first dot.
14
+ */
15
+ testIdPattern: string;
16
+ /**
17
+ * Test-id attribute name, or names, to validate.
18
+ *
19
+ * @default "data-testid"
20
+ */
21
+ testIdAttribute?: string | readonly string[];
22
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Options shape for the configurable rules in
4
+ * {@link ITtscLintTestingLibraryRules}. Only
5
+ * `testing-library/consistent-data-testid` accepts options today.
6
+ *
7
+ * @reference https://github.com/testing-library/eslint-plugin-testing-library
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=ITtscLintTestingLibraryRuleOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintTestingLibraryRuleOptions.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}