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