@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,39 +1,38 @@
1
- import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
2
1
  import type {
3
2
  TtscLintRuleOptionsSetting,
4
3
  TtscLintRuleSetting,
5
4
  } from "../TtscLintRuleSetting";
5
+ import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
6
6
 
7
7
  /**
8
- * Storybook CSF and configuration rules from
9
- * `eslint-plugin-storybook`.
8
+ * Storybook CSF and configuration rules from `eslint-plugin-storybook`.
10
9
  *
11
- * Checks Component Story Format conventions (default export meta,
12
- * named story exports, play-function shape) and configuration
13
- * pitfalls in `.storybook/main.ts`.
10
+ * Checks Component Story Format conventions (default export meta, named story
11
+ * exports, play-function shape) and configuration pitfalls in
12
+ * `.storybook/main.ts`.
14
13
  *
15
14
  * @reference https://github.com/storybookjs/eslint-plugin-storybook
16
15
  */
17
16
  export interface ITtscLintStorybookRules {
18
17
  /**
19
- * Require `await` on Storybook interaction helpers (`userEvent`,
20
- * `expect`, `waitFor`, ...) inside a `play` function.
18
+ * Require `await` on Storybook interaction helpers (`userEvent`, `expect`,
19
+ * `waitFor`, ...) inside a `play` function.
21
20
  *
22
- * The interactions addon intercepts the awaited promises to record
23
- * steps, so a missing `await` skips that frame in the debugger and
24
- * races the next assertion.
21
+ * The interactions addon intercepts the awaited promises to record steps, so
22
+ * a missing `await` skips that frame in the debugger and races the next
23
+ * assertion.
25
24
  *
26
25
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/await-interactions.md
27
26
  */
28
27
  "storybook/await-interactions"?: TtscLintRuleSetting;
29
28
 
30
29
  /**
31
- * Require forwarding the play-function `context` argument when
32
- * invoking another story's `play` function.
30
+ * Require forwarding the play-function `context` argument when invoking
31
+ * another story's `play` function.
33
32
  *
34
- * Storybook hangs the canvas, step tracker, and interactions addon
35
- * off `context`; omitting it leaves the nested call without the
36
- * runtime hooks it needs to drive the canvas.
33
+ * Storybook hangs the canvas, step tracker, and interactions addon off
34
+ * `context`; omitting it leaves the nested call without the runtime hooks it
35
+ * needs to drive the canvas.
37
36
  *
38
37
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/context-in-play-function.md
39
38
  */
@@ -42,9 +41,8 @@ export interface ITtscLintStorybookRules {
42
41
  /**
43
42
  * Require the CSF default meta object to declare a `component`.
44
43
  *
45
- * The reference unlocks Storybook's auto-generated controls,
46
- * prop-table docs, and CSF3 default render — without it those
47
- * features silently no-op.
44
+ * The reference unlocks Storybook's auto-generated controls, prop-table docs,
45
+ * and CSF3 default render — without it those features silently no-op.
48
46
  *
49
47
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/csf-component.md
50
48
  */
@@ -53,64 +51,61 @@ export interface ITtscLintStorybookRules {
53
51
  /**
54
52
  * Require every story file to provide the CSF default export.
55
53
  *
56
- * Storybook keys all per-file configuration (title, decorators,
57
- * parameters, component) off that default; files without it are
58
- * skipped at indexing time.
54
+ * Storybook keys all per-file configuration (title, decorators, parameters,
55
+ * component) off that default; files without it are skipped at indexing
56
+ * time.
59
57
  *
60
58
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/default-exports.md
61
59
  */
62
60
  "storybook/default-exports"?: TtscLintRuleSetting;
63
61
 
64
62
  /**
65
- * Reject the legacy `|` separator in Storybook story titles
66
- * (`"Foo|Bar"`).
63
+ * Reject the legacy `|` separator in Storybook story titles (`"Foo|Bar"`).
67
64
  *
68
- * Storybook 6 standardized on `/` for hierarchy and treats `|` as
69
- * a literal character, so the title collapses into a single
70
- * sidebar entry instead of nested folders.
65
+ * Storybook 6 standardized on `/` for hierarchy and treats `|` as a literal
66
+ * character, so the title collapses into a single sidebar entry instead of
67
+ * nested folders.
71
68
  *
72
69
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/hierarchy-separator.md
73
70
  */
74
71
  "storybook/hierarchy-separator"?: TtscLintRuleSetting;
75
72
 
76
73
  /**
77
- * Require `title` and `args` in CSF meta to be inline literals,
78
- * not references to outside variables or function calls.
74
+ * Require `title` and `args` in CSF meta to be inline literals, not
75
+ * references to outside variables or function calls.
79
76
  *
80
- * Storybook's indexer and upgrade codemods read these via static
81
- * analysis and skip stories where the value is not literal.
77
+ * Storybook's indexer and upgrade codemods read these via static analysis and
78
+ * skip stories where the value is not literal.
82
79
  *
83
80
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-inline-properties.md
84
81
  */
85
82
  "storybook/meta-inline-properties"?: TtscLintRuleSetting;
86
83
 
87
84
  /**
88
- * Require CSF meta objects to type-check with `satisfies Meta<…>`
89
- * rather than a `: Meta<…>` annotation or `as` cast.
85
+ * Require CSF meta objects to type-check with `satisfies Meta<…>` rather than
86
+ * a `: Meta<…>` annotation or `as` cast.
90
87
  *
91
- * `satisfies` preserves the narrowed literal types so dependent
92
- * `StoryObj` declarations can infer the component's args
93
- * precisely.
88
+ * `satisfies` preserves the narrowed literal types so dependent `StoryObj`
89
+ * declarations can infer the component's args precisely.
94
90
  *
95
91
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/meta-satisfies-type.md
96
92
  */
97
93
  "storybook/meta-satisfies-type"?: TtscLintRuleSetting;
98
94
 
99
95
  /**
100
- * Reject `name` metadata on a story when it matches Storybook's
101
- * auto-derived name from the export identifier.
96
+ * Reject `name` metadata on a story when it matches Storybook's auto-derived
97
+ * name from the export identifier.
102
98
  *
103
- * The explicit value adds boilerplate and drifts from the export
104
- * when one side is renamed without the other.
99
+ * The explicit value adds boilerplate and drifts from the export when one
100
+ * side is renamed without the other.
105
101
  *
106
102
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-redundant-story-name.md
107
103
  */
108
104
  "storybook/no-redundant-story-name"?: TtscLintRuleSetting;
109
105
 
110
106
  /**
111
- * Reject direct imports from Storybook renderer packages
112
- * (`@storybook/react`, etc.); use the user-facing package
113
- * surface.
107
+ * Reject direct imports from Storybook renderer packages (`@storybook/react`,
108
+ * etc.); use the user-facing package surface.
114
109
  *
115
110
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-renderer-packages.md
116
111
  */
@@ -119,29 +114,27 @@ export interface ITtscLintStorybookRules {
119
114
  /**
120
115
  * Reject the legacy `storiesOf(...)` builder API.
121
116
  *
122
- * Storybook 7 removed it in favour of CSF default-export metadata;
123
- * remaining uses block the migration to CSF3 and the modern
124
- * indexer.
117
+ * Storybook 7 removed it in favour of CSF default-export metadata; remaining
118
+ * uses block the migration to CSF3 and the modern indexer.
125
119
  *
126
120
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-stories-of.md
127
121
  */
128
122
  "storybook/no-stories-of"?: TtscLintRuleSetting;
129
123
 
130
124
  /**
131
- * Reject the `title` property in CSF meta when the project uses
132
- * Storybook's auto-title generation.
125
+ * Reject the `title` property in CSF meta when the project uses Storybook's
126
+ * auto-title generation.
133
127
  *
134
- * CSF3 derives the title from the file path, so an explicit
135
- * `title` is redundant and drifts from the on-disk layout when
136
- * files are moved.
128
+ * CSF3 derives the title from the file path, so an explicit `title` is
129
+ * redundant and drifts from the on-disk layout when files are moved.
137
130
  *
138
131
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md
139
132
  */
140
133
  "storybook/no-title-property-in-meta"?: TtscLintRuleSetting;
141
134
 
142
135
  /**
143
- * Validate Storybook addon names against the project's
144
- * dependencies, so misspelled addon ids surface at lint time.
136
+ * Validate Storybook addon names against the project's dependencies, so
137
+ * misspelled addon ids surface at lint time.
145
138
  *
146
139
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md
147
140
  */
@@ -150,42 +143,40 @@ export interface ITtscLintStorybookRules {
150
143
  /**
151
144
  * Require named story exports to use PascalCase.
152
145
  *
153
- * Storybook derives the displayed story name from the export
154
- * identifier and inserts spaces at case boundaries, so
155
- * non-PascalCase exports render with awkward or merged labels in
156
- * the sidebar.
146
+ * Storybook derives the displayed story name from the export identifier and
147
+ * inserts spaces at case boundaries, so non-PascalCase exports render with
148
+ * awkward or merged labels in the sidebar.
157
149
  *
158
150
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/prefer-pascal-case.md
159
151
  */
160
152
  "storybook/prefer-pascal-case"?: TtscLintRuleSetting;
161
153
 
162
154
  /**
163
- * Require every story file to export at least one named story
164
- * alongside the default meta.
155
+ * Require every story file to export at least one named story alongside the
156
+ * default meta.
165
157
  *
166
- * A file with only the default export contributes nothing to the
167
- * sidebar and usually means a story was deleted but the file was
168
- * not.
158
+ * A file with only the default export contributes nothing to the sidebar and
159
+ * usually means a story was deleted but the file was not.
169
160
  *
170
161
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/story-exports.md
171
162
  */
172
163
  "storybook/story-exports"?: TtscLintRuleSetting;
173
164
 
174
165
  /**
175
- * Require `expect` to be imported from `@storybook/test` in play
176
- * functions, not from Jest.
166
+ * Require `expect` to be imported from `@storybook/test` in play functions,
167
+ * not from Jest.
177
168
  *
178
- * The Storybook re-export is built for the browser interactions
179
- * runner; Jest's `expect` ships only Node-only matchers and throws
180
- * when the play function executes in a browser preview.
169
+ * The Storybook re-export is built for the browser interactions runner;
170
+ * Jest's `expect` ships only Node-only matchers and throws when the play
171
+ * function executes in a browser preview.
181
172
  *
182
173
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-expect.md
183
174
  */
184
175
  "storybook/use-storybook-expect"?: TtscLintRuleSetting;
185
176
 
186
177
  /**
187
- * Reject direct Testing Library imports inside story files;
188
- * use the Storybook-bundled re-exports.
178
+ * Reject direct Testing Library imports inside story files; use the
179
+ * Storybook-bundled re-exports.
189
180
  *
190
181
  * @reference https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/use-storybook-testing-library.md
191
182
  */
@@ -3,42 +3,38 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
3
3
  /**
4
4
  * TanStack Query rules from `@tanstack/eslint-plugin-query`.
5
5
  *
6
- * Guards the ergonomic and correctness contracts of TanStack Query
7
- * (`useQuery`, `useMutation`, query-options factories) inside React
8
- * TypeScript sources.
6
+ * Guards the ergonomic and correctness contracts of TanStack Query (`useQuery`,
7
+ * `useMutation`, query-options factories) inside React TypeScript sources.
9
8
  *
10
9
  * @reference https://github.com/TanStack/query/tree/main/packages/eslint-plugin-query
11
10
  */
12
11
  export interface ITtscLintTanstackQueryRules {
13
12
  /**
14
- * Require TanStack Query `queryKey` arrays to include every
15
- * variable read by the `queryFn` body, mirroring React Hooks
16
- * dependency tracking.
13
+ * Require TanStack Query `queryKey` arrays to include every variable read by
14
+ * the `queryFn` body, mirroring React Hooks dependency tracking.
17
15
  *
18
16
  * @reference https://tanstack.com/query/latest/docs/eslint/exhaustive-deps
19
17
  */
20
18
  "tanstack-query/exhaustive-deps"?: TtscLintRuleSetting;
21
19
 
22
20
  /**
23
- * Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam`
24
- * inside `useInfiniteQuery` to appear in the order TanStack Query
25
- * documents.
21
+ * Require `queryFn`, `getPreviousPageParam`, and `getNextPageParam` inside
22
+ * `useInfiniteQuery` to appear in the order TanStack Query documents.
26
23
  *
27
- * Type inference flows through these callbacks in sequence, so a
28
- * reordered options object widens the page-param type to
29
- * `unknown`.
24
+ * Type inference flows through these callbacks in sequence, so a reordered
25
+ * options object widens the page-param type to `unknown`.
30
26
  *
31
27
  * @reference https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order
32
28
  */
33
29
  "tanstack-query/infinite-query-property-order"?: TtscLintRuleSetting;
34
30
 
35
31
  /**
36
- * Require `useMutation` callbacks to declare `onMutate` before
37
- * `onError` and `onSettled`.
32
+ * Require `useMutation` callbacks to declare `onMutate` before `onError` and
33
+ * `onSettled`.
38
34
  *
39
- * The options object's type inference threads the `onMutate`
40
- * return value into the later callbacks' `context` parameter,
41
- * which collapses to `unknown` when the order is wrong.
35
+ * The options object's type inference threads the `onMutate` return value
36
+ * into the later callbacks' `context` parameter, which collapses to `unknown`
37
+ * when the order is wrong.
42
38
  *
43
39
  * @reference https://tanstack.com/query/latest/docs/eslint/mutation-property-order
44
40
  */
@@ -47,22 +43,21 @@ export interface ITtscLintTanstackQueryRules {
47
43
  /**
48
44
  * Reject `...rest` destructuring on TanStack Query hook results.
49
45
  *
50
- * The result object is a tracked proxy that only re-renders for
51
- * the fields you read; rest-destructuring touches every field,
52
- * subscribes the component to all of them, and disables that
53
- * optimization.
46
+ * The result object is a tracked proxy that only re-renders for the fields
47
+ * you read; rest-destructuring touches every field, subscribes the component
48
+ * to all of them, and disables that optimization.
54
49
  *
55
50
  * @reference https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring
56
51
  */
57
52
  "tanstack-query/no-rest-destructuring"?: TtscLintRuleSetting;
58
53
 
59
54
  /**
60
- * Reject passing entire TanStack Query hook results into React
61
- * dependency arrays.
55
+ * Reject passing entire TanStack Query hook results into React dependency
56
+ * arrays.
62
57
  *
63
- * The returned object is a fresh reference on every render, so
64
- * `useEffect` / `useMemo` / `useCallback` would re-run
65
- * unconditionally; depend on the specific fields you read instead.
58
+ * The returned object is a fresh reference on every render, so `useEffect` /
59
+ * `useMemo` / `useCallback` would re-run unconditionally; depend on the
60
+ * specific fields you read instead.
66
61
  *
67
62
  * @reference https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
68
63
  */
@@ -71,30 +66,29 @@ export interface ITtscLintTanstackQueryRules {
71
66
  /**
72
67
  * Reject `queryFn` callbacks that resolve to `void`.
73
68
  *
74
- * The return value is what TanStack Query caches and exposes as
75
- * `data`; a void implementation always populates the cache with
76
- * `undefined` and almost always indicates a forgotten `return`.
69
+ * The return value is what TanStack Query caches and exposes as `data`; a
70
+ * void implementation always populates the cache with `undefined` and almost
71
+ * always indicates a forgotten `return`.
77
72
  *
78
73
  * @reference https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
79
74
  */
80
75
  "tanstack-query/no-void-query-fn"?: TtscLintRuleSetting;
81
76
 
82
77
  /**
83
- * Prefer wrapping query options in the `queryOptions()` helper
84
- * over inline `{ queryKey, queryFn }` literals.
78
+ * Prefer wrapping query options in the `queryOptions()` helper over inline `{
79
+ * queryKey, queryFn }` literals.
85
80
  *
86
- * The helper co-locates key and fetcher, lets
87
- * `queryClient.getQueryData` and `setQueryData` share the same
88
- * typed key, and prevents the same key being paired with two
89
- * different `queryFn`s.
81
+ * The helper co-locates key and fetcher, lets `queryClient.getQueryData` and
82
+ * `setQueryData` share the same typed key, and prevents the same key being
83
+ * paired with two different `queryFn`s.
90
84
  *
91
85
  * @reference https://tanstack.com/query/latest/docs/eslint/prefer-query-options
92
86
  */
93
87
  "tanstack-query/prefer-query-options"?: TtscLintRuleSetting;
94
88
 
95
89
  /**
96
- * Reject creating a `QueryClient` inside a React component or
97
- * hook body — the client must be stable across renders.
90
+ * Reject creating a `QueryClient` inside a React component or hook body — the
91
+ * client must be stable across renders.
98
92
  *
99
93
  * @reference https://tanstack.com/query/latest/docs/eslint/stable-query-client
100
94
  */
@@ -9,9 +9,8 @@
9
9
  /** `testing-library/consistent-data-testid` rule options. */
10
10
  export interface ITtscLintTestingLibraryConsistentDataTestIdRuleOptions {
11
11
  /**
12
- * Regular expression string every configured test-id attribute value
13
- * must match. `{fileName}` is replaced with the basename before the
14
- * first dot.
12
+ * Regular expression string every configured test-id attribute value must
13
+ * match. `{fileName}` is replaced with the basename before the first dot.
15
14
  */
16
15
  testIdPattern: string;
17
16