@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.0

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 (380) hide show
  1. package/README.md +21 -23
  2. package/lib/defaultFormat.d.ts +10 -6
  3. package/lib/defaultFormat.js +10 -6
  4. package/lib/defaultFormat.js.map +1 -1
  5. package/lib/structures/ITtscLintConfig.d.ts +5 -5
  6. package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
  7. package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
  8. package/lib/structures/format/ITtscLintFormat.js.map +1 -0
  9. package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
  10. package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
  11. package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
  12. package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
  13. package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
  14. package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
  15. package/lib/structures/format/index.d.ts +3 -0
  16. package/lib/structures/format/index.js +20 -0
  17. package/lib/structures/format/index.js.map +1 -0
  18. package/lib/structures/index.d.ts +1 -1
  19. package/lib/structures/index.js +1 -1
  20. package/lib/structures/index.js.map +1 -1
  21. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
  22. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
  23. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
  24. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
  25. package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
  26. package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
  27. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
  28. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
  29. package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
  30. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
  31. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
  32. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
  33. package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
  34. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
  35. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
  36. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
  37. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
  38. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
  39. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
  40. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
  41. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
  42. package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
  43. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
  44. package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
  45. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
  46. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
  47. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
  48. package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
  49. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
  50. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
  51. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
  52. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
  53. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
  54. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
  55. package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
  56. package/linthost/config.go +89 -72
  57. package/linthost/config_format.go +265 -99
  58. package/linthost/directives.go +5 -1
  59. package/linthost/display_width.go +72 -0
  60. package/linthost/fix.go +26 -1
  61. package/linthost/format.go +222 -25
  62. package/linthost/format_editor_settings.go +262 -0
  63. package/linthost/lsp.go +8 -4
  64. package/linthost/print_dispatch.go +3 -0
  65. package/linthost/print_doc.go +13 -0
  66. package/linthost/print_engine.go +68 -11
  67. package/linthost/print_nodes_array.go +108 -5
  68. package/linthost/print_nodes_call.go +515 -74
  69. package/linthost/print_nodes_function.go +25 -0
  70. package/linthost/print_nodes_imports.go +47 -14
  71. package/linthost/print_nodes_list.go +191 -8
  72. package/linthost/print_nodes_object.go +12 -6
  73. package/linthost/print_nodes_ternary.go +106 -0
  74. package/linthost/rules_boundaries.go +400 -400
  75. package/linthost/rules_camelcase.go +81 -81
  76. package/linthost/rules_complexity.go +52 -51
  77. package/linthost/rules_consistent_return.go +81 -81
  78. package/linthost/rules_core_extra.go +472 -472
  79. package/linthost/rules_curly.go +43 -43
  80. package/linthost/rules_default_case.go +15 -15
  81. package/linthost/rules_default_case_last.go +22 -22
  82. package/linthost/rules_format_arrow_parens.go +167 -0
  83. package/linthost/rules_format_bracket_spacing.go +117 -0
  84. package/linthost/rules_format_clause_join.go +172 -0
  85. package/linthost/rules_format_declaration_header.go +664 -0
  86. package/linthost/rules_format_indent.go +616 -0
  87. package/linthost/rules_format_jsdoc.go +4 -4
  88. package/linthost/rules_format_orphan_semi.go +106 -0
  89. package/linthost/rules_format_parameter_properties.go +175 -0
  90. package/linthost/rules_format_print_width.go +185 -69
  91. package/linthost/rules_format_quote_props.go +169 -0
  92. package/linthost/rules_format_quotes.go +75 -29
  93. package/linthost/rules_format_semi.go +185 -10
  94. package/linthost/rules_format_sort_imports.go +456 -121
  95. package/linthost/rules_format_statement_split.go +368 -0
  96. package/linthost/rules_format_ternary_nullish_parens.go +77 -0
  97. package/linthost/rules_format_trailing_comma.go +21 -2
  98. package/linthost/rules_format_whitespace.go +336 -0
  99. package/linthost/rules_functional.go +688 -688
  100. package/linthost/rules_gap.go +146 -11
  101. package/linthost/rules_grouped_accessor_pairs.go +60 -60
  102. package/linthost/rules_guard_for_in.go +122 -122
  103. package/linthost/rules_id_length.go +44 -44
  104. package/linthost/rules_imports.go +11 -3
  105. package/linthost/rules_init_declarations.go +25 -25
  106. package/linthost/rules_jsx_a11y.go +844 -844
  107. package/linthost/rules_max_classes_per_file.go +24 -24
  108. package/linthost/rules_max_depth.go +43 -43
  109. package/linthost/rules_max_lines.go +53 -53
  110. package/linthost/rules_max_lines_per_function.go +28 -28
  111. package/linthost/rules_max_nested_callbacks.go +26 -26
  112. package/linthost/rules_max_params.go +20 -20
  113. package/linthost/rules_max_statements.go +29 -29
  114. package/linthost/rules_nextjs.go +5 -5
  115. package/linthost/rules_no_else_return.go +38 -38
  116. package/linthost/rules_no_empty_named_blocks.go +45 -45
  117. package/linthost/rules_no_import_assign.go +96 -96
  118. package/linthost/rules_no_invalid_this.go +19 -19
  119. package/linthost/rules_no_loop_func.go +43 -43
  120. package/linthost/rules_no_magic_numbers.go +60 -60
  121. package/linthost/rules_no_mixed_operators.go +44 -44
  122. package/linthost/rules_no_param_reassign.go +64 -64
  123. package/linthost/rules_no_restricted_imports.go +45 -45
  124. package/linthost/rules_no_restricted_syntax.go +17 -17
  125. package/linthost/rules_no_shadow.go +112 -112
  126. package/linthost/rules_no_unreachable.go +36 -36
  127. package/linthost/rules_no_useless_assignment.go +79 -79
  128. package/linthost/rules_no_useless_constructor.go +167 -167
  129. package/linthost/rules_no_useless_return.go +28 -28
  130. package/linthost/rules_prefer_arrow_callback.go +74 -74
  131. package/linthost/rules_prefer_destructuring.go +61 -61
  132. package/linthost/rules_prefer_named_capture_group.go +87 -87
  133. package/linthost/rules_prefer_rest_params.go +61 -61
  134. package/linthost/rules_promise.go +800 -800
  135. package/linthost/rules_react.go +600 -600
  136. package/linthost/rules_react_extras.go +162 -162
  137. package/linthost/rules_react_hooks.go +2 -2
  138. package/linthost/rules_react_perf.go +231 -231
  139. package/linthost/rules_regexp.go +293 -293
  140. package/linthost/rules_security.go +613 -613
  141. package/linthost/rules_sort_imports.go +37 -37
  142. package/linthost/rules_sort_keys.go +88 -88
  143. package/linthost/rules_suggestions.go +13 -0
  144. package/linthost/rules_ts.go +2 -2
  145. package/linthost/rules_ts_async.go +247 -247
  146. package/linthost/rules_ts_class_literal_property_style.go +64 -64
  147. package/linthost/rules_ts_consistent_type_exports.go +209 -209
  148. package/linthost/rules_ts_explicit_function_return_type.go +35 -35
  149. package/linthost/rules_ts_extra.go +6 -2
  150. package/linthost/rules_ts_no_base_to_string.go +140 -140
  151. package/linthost/rules_ts_no_confusing_void.go +28 -28
  152. package/linthost/rules_ts_no_deprecated.go +110 -110
  153. package/linthost/rules_ts_no_for_in_array.go +45 -45
  154. package/linthost/rules_ts_no_magic_numbers.go +67 -67
  155. package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
  156. package/linthost/rules_ts_no_misused_spread.go +64 -64
  157. package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
  158. package/linthost/rules_ts_no_restricted_types.go +28 -28
  159. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
  160. package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
  161. package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
  162. package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
  163. package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
  164. package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
  165. package/linthost/rules_ts_no_unsafe_argument.go +50 -50
  166. package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
  167. package/linthost/rules_ts_no_unsafe_call.go +40 -40
  168. package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
  169. package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
  170. package/linthost/rules_ts_no_unsafe_return.go +64 -64
  171. package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
  172. package/linthost/rules_ts_no_useless_constructor.go +20 -20
  173. package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
  174. package/linthost/rules_ts_parameter_properties.go +10 -10
  175. package/linthost/rules_ts_prefer_find.go +116 -116
  176. package/linthost/rules_ts_prefer_includes.go +173 -173
  177. package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
  178. package/linthost/rules_ts_prefer_optional_chain.go +156 -156
  179. package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
  180. package/linthost/rules_ts_prefer_readonly.go +31 -31
  181. package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
  182. package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
  183. package/linthost/rules_ts_prefer_return_this_type.go +79 -79
  184. package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
  185. package/linthost/rules_ts_promise_function_async.go +41 -41
  186. package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
  187. package/linthost/rules_ts_require_array_sort_compare.go +58 -58
  188. package/linthost/rules_ts_restrict_plus_operands.go +82 -82
  189. package/linthost/rules_ts_restrict_template_expressions.go +50 -50
  190. package/linthost/rules_ts_simple.go +249 -249
  191. package/linthost/rules_ts_sort_type_constituents.go +88 -88
  192. package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
  193. package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
  194. package/linthost/rules_ts_unbound_method.go +65 -65
  195. package/linthost/rules_tsdoc.go +88 -88
  196. package/linthost/rules_unicorn_better_regex.go +1 -1
  197. package/linthost/rules_unicorn_catch_error_name.go +19 -19
  198. package/linthost/rules_unicorn_consistent_assert.go +20 -20
  199. package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
  200. package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
  201. package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
  202. package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
  203. package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
  204. package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
  205. package/linthost/rules_unicorn_custom_error_definition.go +92 -92
  206. package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
  207. package/linthost/rules_unicorn_error_message.go +34 -34
  208. package/linthost/rules_unicorn_escape_case.go +14 -14
  209. package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
  210. package/linthost/rules_unicorn_explicit_length_check.go +51 -51
  211. package/linthost/rules_unicorn_filename_case.go +1 -1
  212. package/linthost/rules_unicorn_import_style.go +1 -1
  213. package/linthost/rules_unicorn_isolated_functions.go +2 -2
  214. package/linthost/rules_unicorn_new_for_builtins.go +49 -49
  215. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
  216. package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
  217. package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
  218. package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
  219. package/linthost/rules_unicorn_no_array_for_each.go +14 -14
  220. package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
  221. package/linthost/rules_unicorn_no_array_reduce.go +15 -15
  222. package/linthost/rules_unicorn_no_array_reverse.go +17 -17
  223. package/linthost/rules_unicorn_no_array_sort.go +17 -17
  224. package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
  225. package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
  226. package/linthost/rules_unicorn_no_console_spaces.go +30 -30
  227. package/linthost/rules_unicorn_no_document_cookie.go +13 -13
  228. package/linthost/rules_unicorn_no_empty_file.go +16 -16
  229. package/linthost/rules_unicorn_no_for_loop.go +58 -58
  230. package/linthost/rules_unicorn_no_hex_escape.go +11 -11
  231. package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
  232. package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
  233. package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
  234. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
  235. package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
  236. package/linthost/rules_unicorn_no_lonely_if.go +21 -21
  237. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
  238. package/linthost/rules_unicorn_no_named_default.go +25 -25
  239. package/linthost/rules_unicorn_no_negated_condition.go +54 -54
  240. package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
  241. package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
  242. package/linthost/rules_unicorn_no_new_array.go +5 -5
  243. package/linthost/rules_unicorn_no_new_buffer.go +5 -5
  244. package/linthost/rules_unicorn_no_null.go +2 -2
  245. package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
  246. package/linthost/rules_unicorn_no_process_exit.go +17 -17
  247. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
  248. package/linthost/rules_unicorn_no_static_only_class.go +27 -27
  249. package/linthost/rules_unicorn_no_thenable.go +47 -47
  250. package/linthost/rules_unicorn_no_this_assignment.go +10 -10
  251. package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
  252. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
  253. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
  254. package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
  255. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
  256. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
  257. package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
  258. package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
  259. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
  260. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
  261. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
  262. package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
  263. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
  264. package/linthost/rules_unicorn_no_useless_spread.go +38 -38
  265. package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
  266. package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
  267. package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
  268. package/linthost/rules_unicorn_number_literal_case.go +33 -33
  269. package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
  270. package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
  271. package/linthost/rules_unicorn_prefer_array_find.go +27 -27
  272. package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
  273. package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
  274. package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
  275. package/linthost/rules_unicorn_prefer_array_some.go +43 -43
  276. package/linthost/rules_unicorn_prefer_at.go +42 -42
  277. package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
  278. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
  279. package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
  280. package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
  281. package/linthost/rules_unicorn_prefer_code_point.go +21 -21
  282. package/linthost/rules_unicorn_prefer_date_now.go +47 -47
  283. package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
  284. package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
  285. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
  286. package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
  287. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
  288. package/linthost/rules_unicorn_prefer_event_target.go +10 -10
  289. package/linthost/rules_unicorn_prefer_export_from.go +99 -99
  290. package/linthost/rules_unicorn_prefer_global_this.go +91 -91
  291. package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
  292. package/linthost/rules_unicorn_prefer_includes.go +108 -108
  293. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
  294. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
  295. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
  296. package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
  297. package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
  298. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
  299. package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
  300. package/linthost/rules_unicorn_prefer_module.go +22 -22
  301. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
  302. package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
  303. package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
  304. package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
  305. package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
  306. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
  307. package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
  308. package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
  309. package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
  310. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
  311. package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
  312. package/linthost/rules_unicorn_prefer_set_has.go +16 -16
  313. package/linthost/rules_unicorn_prefer_set_size.go +22 -22
  314. package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
  315. package/linthost/rules_unicorn_prefer_single_call.go +59 -59
  316. package/linthost/rules_unicorn_prefer_spread.go +24 -24
  317. package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
  318. package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
  319. package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
  320. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
  321. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
  322. package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
  323. package/linthost/rules_unicorn_prefer_switch.go +65 -65
  324. package/linthost/rules_unicorn_prefer_ternary.go +35 -35
  325. package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
  326. package/linthost/rules_unicorn_prefer_type_error.go +84 -84
  327. package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
  328. package/linthost/rules_unicorn_relative_url_style.go +19 -19
  329. package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
  330. package/linthost/rules_unicorn_require_module_attributes.go +25 -25
  331. package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
  332. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
  333. package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
  334. package/linthost/rules_unicorn_string_content.go +1 -1
  335. package/linthost/rules_unicorn_switch_case_braces.go +16 -16
  336. package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
  337. package/linthost/rules_unicorn_template_indent.go +1 -1
  338. package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
  339. package/linthost/rules_unicorn_throw_new_error.go +30 -30
  340. package/linthost/rules_var.go +273 -3
  341. package/package.json +3 -3
  342. package/src/defaultFormat.ts +11 -7
  343. package/src/structures/ITtscLintConfig.ts +5 -5
  344. package/src/structures/TtscLintRuleSetting.ts +19 -19
  345. package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
  346. package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
  347. package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
  348. package/src/structures/format/index.ts +3 -0
  349. package/src/structures/index.ts +1 -1
  350. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
  351. package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
  352. package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
  353. package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
  354. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
  355. package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
  356. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
  357. package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
  358. package/src/structures/rules/ITtscLintJestRules.ts +63 -74
  359. package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
  360. package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
  361. package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
  362. package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
  363. package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
  364. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
  365. package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
  366. package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
  367. package/src/structures/rules/ITtscLintReactRules.ts +91 -104
  368. package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
  369. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
  370. package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
  371. package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
  372. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
  373. package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
  374. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
  375. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
  376. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
  377. package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
  378. package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
  379. package/lib/structures/ITtscLintFormat.js.map +0 -1
  380. /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
@@ -1,34 +1,33 @@
1
- import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
2
1
  import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
3
3
  /**
4
- * Storybook CSF and configuration rules from
5
- * `eslint-plugin-storybook`.
4
+ * Storybook CSF and configuration rules from `eslint-plugin-storybook`.
6
5
  *
7
- * Checks Component Story Format conventions (default export meta,
8
- * named story exports, play-function shape) and configuration
9
- * pitfalls in `.storybook/main.ts`.
6
+ * Checks Component Story Format conventions (default export meta, named story
7
+ * exports, play-function shape) and configuration pitfalls in
8
+ * `.storybook/main.ts`.
10
9
  *
11
10
  * @reference https://github.com/storybookjs/eslint-plugin-storybook
12
11
  */
13
12
  export interface ITtscLintStorybookRules {
14
13
  /**
15
- * Require `await` on Storybook interaction helpers (`userEvent`,
16
- * `expect`, `waitFor`, ...) inside a `play` function.
14
+ * Require `await` on Storybook interaction helpers (`userEvent`, `expect`,
15
+ * `waitFor`, ...) inside a `play` function.
17
16
  *
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.
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.
21
20
  *
22
21
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md
23
22
  */
24
23
  "storybook/await-interactions"?: TtscLintRuleSetting;
25
24
  /**
26
- * Require forwarding the play-function `context` argument when
27
- * invoking another story's `play` function.
25
+ * Require forwarding the play-function `context` argument when invoking
26
+ * another story's `play` function.
28
27
  *
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.
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.
32
31
  *
33
32
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md
34
33
  */
@@ -36,9 +35,8 @@ export interface ITtscLintStorybookRules {
36
35
  /**
37
36
  * Require the CSF default meta object to declare a `component`.
38
37
  *
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.
38
+ * The reference unlocks Storybook's auto-generated controls, prop-table docs,
39
+ * and CSF3 default render — without it those features silently no-op.
42
40
  *
43
41
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md
44
42
  */
@@ -46,59 +44,56 @@ export interface ITtscLintStorybookRules {
46
44
  /**
47
45
  * Require every story file to provide the CSF default export.
48
46
  *
49
- * Storybook keys all per-file configuration (title, decorators,
50
- * parameters, component) off that default; files without it are
51
- * skipped at indexing time.
47
+ * Storybook keys all per-file configuration (title, decorators, parameters,
48
+ * component) off that default; files without it are skipped at indexing
49
+ * time.
52
50
  *
53
51
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md
54
52
  */
55
53
  "storybook/default-exports"?: TtscLintRuleSetting;
56
54
  /**
57
- * Reject the legacy `|` separator in Storybook story titles
58
- * (`"Foo|Bar"`).
55
+ * Reject the legacy `|` separator in Storybook story titles (`"Foo|Bar"`).
59
56
  *
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.
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.
63
60
  *
64
61
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md
65
62
  */
66
63
  "storybook/hierarchy-separator"?: TtscLintRuleSetting;
67
64
  /**
68
- * Require `title` and `args` in CSF meta to be inline literals,
69
- * not references to outside variables or function calls.
65
+ * Require `title` and `args` in CSF meta to be inline literals, not
66
+ * references to outside variables or function calls.
70
67
  *
71
- * Storybook's indexer and upgrade codemods read these via static
72
- * analysis and skip stories where the value is not literal.
68
+ * Storybook's indexer and upgrade codemods read these via static analysis and
69
+ * skip stories where the value is not literal.
73
70
  *
74
71
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md
75
72
  */
76
73
  "storybook/meta-inline-properties"?: TtscLintRuleSetting;
77
74
  /**
78
- * Require CSF meta objects to type-check with `satisfies Meta<…>`
79
- * rather than a `: Meta<…>` annotation or `as` cast.
75
+ * Require CSF meta objects to type-check with `satisfies Meta<…>` rather than
76
+ * a `: Meta<…>` annotation or `as` cast.
80
77
  *
81
- * `satisfies` preserves the narrowed literal types so dependent
82
- * `StoryObj` declarations can infer the component's args
83
- * precisely.
78
+ * `satisfies` preserves the narrowed literal types so dependent `StoryObj`
79
+ * declarations can infer the component's args precisely.
84
80
  *
85
81
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md
86
82
  */
87
83
  "storybook/meta-satisfies-type"?: TtscLintRuleSetting;
88
84
  /**
89
- * Reject `name` metadata on a story when it matches Storybook's
90
- * auto-derived name from the export identifier.
85
+ * Reject `name` metadata on a story when it matches Storybook's auto-derived
86
+ * name from the export identifier.
91
87
  *
92
- * The explicit value adds boilerplate and drifts from the export
93
- * when one side is renamed without the other.
88
+ * The explicit value adds boilerplate and drifts from the export when one
89
+ * side is renamed without the other.
94
90
  *
95
91
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md
96
92
  */
97
93
  "storybook/no-redundant-story-name"?: TtscLintRuleSetting;
98
94
  /**
99
- * Reject direct imports from Storybook renderer packages
100
- * (`@storybook/react`, etc.); use the user-facing package
101
- * surface.
95
+ * Reject direct imports from Storybook renderer packages (`@storybook/react`,
96
+ * etc.); use the user-facing package surface.
102
97
  *
103
98
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-renderer-packages.md
104
99
  */
@@ -106,27 +101,25 @@ export interface ITtscLintStorybookRules {
106
101
  /**
107
102
  * Reject the legacy `storiesOf(...)` builder API.
108
103
  *
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.
104
+ * Storybook 7 removed it in favour of CSF default-export metadata; remaining
105
+ * uses block the migration to CSF3 and the modern indexer.
112
106
  *
113
107
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md
114
108
  */
115
109
  "storybook/no-stories-of"?: TtscLintRuleSetting;
116
110
  /**
117
- * Reject the `title` property in CSF meta when the project uses
118
- * Storybook's auto-title generation.
111
+ * Reject the `title` property in CSF meta when the project uses Storybook's
112
+ * auto-title generation.
119
113
  *
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.
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.
123
116
  *
124
117
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md
125
118
  */
126
119
  "storybook/no-title-property-in-meta"?: TtscLintRuleSetting;
127
120
  /**
128
- * Validate Storybook addon names against the project's
129
- * dependencies, so misspelled addon ids surface at lint time.
121
+ * Validate Storybook addon names against the project's dependencies, so
122
+ * misspelled addon ids surface at lint time.
130
123
  *
131
124
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md
132
125
  */
@@ -134,39 +127,37 @@ export interface ITtscLintStorybookRules {
134
127
  /**
135
128
  * Require named story exports to use PascalCase.
136
129
  *
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.
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.
141
133
  *
142
134
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md
143
135
  */
144
136
  "storybook/prefer-pascal-case"?: TtscLintRuleSetting;
145
137
  /**
146
- * Require every story file to export at least one named story
147
- * alongside the default meta.
138
+ * Require every story file to export at least one named story alongside the
139
+ * default meta.
148
140
  *
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.
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.
152
143
  *
153
144
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md
154
145
  */
155
146
  "storybook/story-exports"?: TtscLintRuleSetting;
156
147
  /**
157
- * Require `expect` to be imported from `@storybook/test` in play
158
- * functions, not from Jest.
148
+ * Require `expect` to be imported from `@storybook/test` in play functions,
149
+ * not from Jest.
159
150
  *
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.
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.
163
154
  *
164
155
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md
165
156
  */
166
157
  "storybook/use-storybook-expect"?: TtscLintRuleSetting;
167
158
  /**
168
- * Reject direct Testing Library imports inside story files;
169
- * use the Storybook-bundled re-exports.
159
+ * Reject direct Testing Library imports inside story files; use the
160
+ * Storybook-bundled re-exports.
170
161
  *
171
162
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md
172
163
  */
@@ -2,40 +2,36 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
2
  /**
3
3
  * TanStack Query rules from `@tanstack/eslint-plugin-query`.
4
4
  *
5
- * Guards the ergonomic and correctness contracts of TanStack Query
6
- * (`useQuery`, `useMutation`, query-options factories) inside React
7
- * TypeScript sources.
5
+ * Guards the ergonomic and correctness contracts of TanStack Query (`useQuery`,
6
+ * `useMutation`, query-options factories) inside React TypeScript sources.
8
7
  *
9
8
  * @reference https://github.com/TanStack/query/tree/main/packages/eslint-plugin-query
10
9
  */
11
10
  export interface ITtscLintTanstackQueryRules {
12
11
  /**
13
- * Require TanStack Query `queryKey` arrays to include every
14
- * variable read by the `queryFn` body, mirroring React Hooks
15
- * dependency tracking.
12
+ * Require TanStack Query `queryKey` arrays to include every variable read by
13
+ * the `queryFn` body, mirroring React Hooks dependency tracking.
16
14
  *
17
15
  * @reference https://tanstack.com/query/latest/docs/eslint/exhaustive-deps
18
16
  */
19
17
  "tanstack-query/exhaustive-deps"?: TtscLintRuleSetting;
20
18
  /**
21
- * Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam`
22
- * inside `useInfiniteQuery` to appear in the order TanStack Query
23
- * documents.
19
+ * Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam` inside
20
+ * `useInfiniteQuery` to appear in the order TanStack Query documents.
24
21
  *
25
- * Type inference flows through these callbacks in sequence, so a
26
- * reordered options object widens the page-param type to
27
- * `unknown`.
22
+ * Type inference flows through these callbacks in sequence, so a reordered
23
+ * options object widens the page-param type to `unknown`.
28
24
  *
29
25
  * @reference https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order
30
26
  */
31
27
  "tanstack-query/infinite-query-property-order"?: TtscLintRuleSetting;
32
28
  /**
33
- * Require `useMutation` callbacks to declare `onMutate` before
34
- * `onError` and `onSettled`.
29
+ * Require `useMutation` callbacks to declare `onMutate` before `onError` and
30
+ * `onSettled`.
35
31
  *
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.
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.
39
35
  *
40
36
  * @reference https://tanstack.com/query/latest/docs/eslint/mutation-property-order
41
37
  */
@@ -43,21 +39,20 @@ export interface ITtscLintTanstackQueryRules {
43
39
  /**
44
40
  * Reject `...rest` destructuring on TanStack Query hook results.
45
41
  *
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.
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.
50
45
  *
51
46
  * @reference https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring
52
47
  */
53
48
  "tanstack-query/no-rest-destructuring"?: TtscLintRuleSetting;
54
49
  /**
55
- * Reject passing entire TanStack Query hook results into React
56
- * dependency arrays.
50
+ * Reject passing entire TanStack Query hook results into React dependency
51
+ * arrays.
57
52
  *
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.
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.
61
56
  *
62
57
  * @reference https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
63
58
  */
@@ -65,28 +60,27 @@ export interface ITtscLintTanstackQueryRules {
65
60
  /**
66
61
  * Reject `queryFn` callbacks that resolve to `void`.
67
62
  *
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`.
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`.
71
66
  *
72
67
  * @reference https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
73
68
  */
74
69
  "tanstack-query/no-void-query-fn"?: TtscLintRuleSetting;
75
70
  /**
76
- * Prefer wrapping query options in the `queryOptions()` helper
77
- * over inline `{ queryKey, queryFn }` literals.
71
+ * Prefer wrapping query options in the `queryOptions()` helper over inline `{
72
+ * queryKey, queryFn }` literals.
78
73
  *
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.
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.
83
77
  *
84
78
  * @reference https://tanstack.com/query/latest/docs/eslint/prefer-query-options
85
79
  */
86
80
  "tanstack-query/prefer-query-options"?: TtscLintRuleSetting;
87
81
  /**
88
- * Reject creating a `QueryClient` inside a React component or
89
- * hook body — the client must be stable across renders.
82
+ * Reject creating a `QueryClient` inside a React component or hook body — the
83
+ * client must be stable across renders.
90
84
  *
91
85
  * @reference https://tanstack.com/query/latest/docs/eslint/stable-query-client
92
86
  */
@@ -8,9 +8,8 @@
8
8
  /** `testing-library/consistent-data-testid` rule options. */
9
9
  export interface ITtscLintTestingLibraryConsistentDataTestIdRuleOptions {
10
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.
11
+ * Regular expression string every configured test-id attribute value must
12
+ * match. `{fileName}` is replaced with the basename before the first dot.
14
13
  */
15
14
  testIdPattern: string;
16
15
  /**