@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,106 +1,101 @@
1
- import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
2
1
  import type { TtscLintRuleOptionsSetting, TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
3
3
  /**
4
4
  * React TSX rules.
5
5
  *
6
- * Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`,
7
- * and `eslint-plugin-react-refresh` under one namespace, matching
8
- * Oxlint's `react/*` plugin layout. Performance-only rules live in a
9
- * separate {@link ITtscLintReactPerfRules} family because they are
10
- * opt-in toggles rather than correctness checks.
6
+ * Bundles rules from `eslint-plugin-react`, `eslint-plugin-react-hooks`, and
7
+ * `eslint-plugin-react-refresh` under one namespace, matching Oxlint's
8
+ * `react/*` plugin layout. Performance-only rules live in a separate
9
+ * {@link ITtscLintReactPerfRules} family because they are opt-in toggles rather
10
+ * than correctness checks.
11
11
  *
12
12
  * @reference https://github.com/jsx-eslint/eslint-plugin-react
13
13
  */
14
14
  export interface ITtscLintReactRules {
15
15
  /**
16
16
  * Require explicit, valid `type` values on JSX `<button>` elements
17
- * (`"button"`, `"submit"`, `"reset"`) — the HTML default of
18
- * `"submit"` causes accidental form submissions.
17
+ * (`"button"`, `"submit"`, `"reset"`) — the HTML default of `"submit"` causes
18
+ * accidental form submissions.
19
19
  *
20
20
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md
21
21
  */
22
22
  "react/button-has-type"?: TtscLintRuleSetting;
23
23
  /**
24
- * Require components wrapped in `React.memo(...)` or
25
- * `React.forwardRef(...)` to be named — either by passing a named
26
- * function, assigning the call to a named binding, or setting an
27
- * explicit `displayName`.
24
+ * Require components wrapped in `React.memo(...)` or `React.forwardRef(...)`
25
+ * to be named — either by passing a named function, assigning the call to a
26
+ * named binding, or setting an explicit `displayName`.
28
27
  *
29
- * Anonymous wrappers leave the resulting component nameless in
30
- * React DevTools and runtime stack frames.
28
+ * Anonymous wrappers leave the resulting component nameless in React DevTools
29
+ * and runtime stack frames.
31
30
  *
32
31
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
33
32
  */
34
33
  "react/display-name"?: TtscLintRuleSetting;
35
34
  /**
36
- * Detect high-confidence missing identifiers in React Hook
37
- * dependency arrays (`useEffect`, `useLayoutEffect`,
38
- * `useInsertionEffect`, `useMemo`, `useCallback`).
35
+ * Detect high-confidence missing identifiers in React Hook dependency arrays
36
+ * (`useEffect`, `useLayoutEffect`, `useInsertionEffect`, `useMemo`,
37
+ * `useCallback`).
39
38
  *
40
39
  * @reference https://react.dev/reference/react/useEffect#specifying-reactive-dependencies
41
40
  */
42
41
  "react/exhaustive-deps"?: TtscLintRuleSetting;
43
42
  /**
44
- * Reject declaring a component or custom Hook inside another
45
- * component or Hook body.
43
+ * Reject declaring a component or custom Hook inside another component or
44
+ * Hook body.
46
45
  *
47
- * Each render rebuilds the inner function, giving it a new
48
- * identity that discards its state and breaks memoization.
46
+ * Each render rebuilds the inner function, giving it a new identity that
47
+ * discards its state and breaks memoization.
49
48
  *
50
49
  * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
51
50
  */
52
51
  "react/component-hook-factories"?: TtscLintRuleSetting;
53
52
  /**
54
- * Require JSX `<iframe>` elements to declare a `sandbox` attribute,
55
- * which restricts what embedded content can do (scripts, forms,
56
- * navigation).
53
+ * Require JSX `<iframe>` elements to declare a `sandbox` attribute, which
54
+ * restricts what embedded content can do (scripts, forms, navigation).
57
55
  *
58
56
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md
59
57
  */
60
58
  "react/iframe-missing-sandbox"?: TtscLintRuleSetting;
61
59
  /**
62
- * Reject mutating props, state, or Hook return values inside a
63
- * component or Hook.
60
+ * Reject mutating props, state, or Hook return values inside a component or
61
+ * Hook.
64
62
  *
65
- * React treats these as read-only; mutating a memoized value can
66
- * desync renders from the dependencies React tracked it under.
63
+ * React treats these as read-only; mutating a memoized value can desync
64
+ * renders from the dependencies React tracked it under.
67
65
  *
68
66
  * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
69
67
  */
70
68
  "react/immutability"?: TtscLintRuleSetting;
71
69
  /**
72
- * Require `key` props on JSX elements produced from arrays or
73
- * `.map(...)` calls — React uses the key to track list identity
74
- * across renders.
70
+ * Require `key` props on JSX elements produced from arrays or `.map(...)`
71
+ * calls — React uses the key to track list identity across renders.
75
72
  *
76
73
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md
77
74
  */
78
75
  "react/jsx-key"?: TtscLintRuleSetting;
79
76
  /**
80
- * Reject duplicate JSX prop names on the same element — later
81
- * occurrences silently overwrite earlier ones.
77
+ * Reject duplicate JSX prop names on the same element — later occurrences
78
+ * silently overwrite earlier ones.
82
79
  *
83
80
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md
84
81
  */
85
82
  "react/jsx-no-duplicate-props"?: TtscLintRuleSetting;
86
83
  /**
87
- * Reject `javascript:` URLs in JSX URL-like props such as `href`
88
- * and `src`.
84
+ * Reject `javascript:` URLs in JSX URL-like props such as `href` and `src`.
89
85
  *
90
- * Such URLs evaluate the URL body as script — the same
91
- * code-execution surface as `eval`, and a common XSS vector when
92
- * the value is user-controlled.
86
+ * Such URLs evaluate the URL body as script — the same code-execution surface
87
+ * as `eval`, and a common XSS vector when the value is user-controlled.
93
88
  *
94
89
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md
95
90
  */
96
91
  "react/jsx-no-script-url"?: TtscLintRuleSetting;
97
92
  /**
98
- * Reject `<a target="_blank">` (or any JSX element with
99
- * `target="_blank"`) that does not also carry `rel="noreferrer"`
100
- * (or `rel="noopener noreferrer"`).
93
+ * Reject `<a target="_blank">` (or any JSX element with `target="_blank"`)
94
+ * that does not also carry `rel="noreferrer"` (or `rel="noopener
95
+ * noreferrer"`).
101
96
  *
102
- * Without those tokens the opened page can navigate the originating
103
- * window through `window.opener`, a phishing and tab-nabbing vector.
97
+ * Without those tokens the opened page can navigate the originating window
98
+ * through `window.opener`, a phishing and tab-nabbing vector.
104
99
  *
105
100
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md
106
101
  */
@@ -109,27 +104,26 @@ export interface ITtscLintReactRules {
109
104
  * Reject JSX elements whose tag is an uppercase identifier with no
110
105
  * value-level declaration anywhere in the source file.
111
106
  *
112
- * Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are
113
- * skipped because resolving the outer name requires module-level
114
- * information that belongs to the type checker.
107
+ * Lowercase tags are intrinsic HTML; qualified `<Foo.Bar>` forms are skipped
108
+ * because resolving the outer name requires module-level information that
109
+ * belongs to the type checker.
115
110
  *
116
111
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md
117
112
  */
118
113
  "react/jsx-no-undef"?: TtscLintRuleSetting;
119
114
  /**
120
- * Reject JSX fragments that wrap exactly one element child or have
121
- * no meaningful content — the child (or nothing) can be returned
122
- * directly.
115
+ * Reject JSX fragments that wrap exactly one element child or have no
116
+ * meaningful content — the child (or nothing) can be returned directly.
123
117
  *
124
- * Covers both the short `<>...</>` form and explicit
125
- * `<Fragment>` / `<React.Fragment>` elements.
118
+ * Covers both the short `<>...</>` form and explicit `<Fragment>` /
119
+ * `<React.Fragment>` elements.
126
120
  *
127
121
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md
128
122
  */
129
123
  "react/jsx-no-useless-fragment"?: TtscLintRuleSetting;
130
124
  /**
131
- * Reject `key={index}` patterns inside JSX lists — array index
132
- * keys reorder incorrectly on insertion.
125
+ * Reject `key={index}` patterns inside JSX lists — array index keys reorder
126
+ * incorrectly on insertion.
133
127
  *
134
128
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md
135
129
  */
@@ -138,8 +132,8 @@ export interface ITtscLintReactRules {
138
132
  * Reject passing children through an explicit `children` JSX prop.
139
133
  *
140
134
  * The nested-tag form is shorter, mirrors HTML, and avoids the
141
- * double-children footgun where a `children` prop and nested JSX
142
- * both target the same slot.
135
+ * double-children footgun where a `children` prop and nested JSX both target
136
+ * the same slot.
143
137
  *
144
138
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md
145
139
  */
@@ -147,23 +141,22 @@ export interface ITtscLintReactRules {
147
141
  /**
148
142
  * Reject `dangerouslySetInnerHTML` altogether.
149
143
  *
150
- * The prop bypasses React's escaping and injects raw HTML into the
151
- * DOM — a common XSS vector when the input is not sanitized
152
- * upstream.
144
+ * The prop bypasses React's escaping and injects raw HTML into the DOM — a
145
+ * common XSS vector when the input is not sanitized upstream.
153
146
  *
154
147
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md
155
148
  */
156
149
  "react/no-danger"?: TtscLintRuleSetting;
157
150
  /**
158
- * Reject combining `dangerouslySetInnerHTML` with JSX children
159
- * — React throws at runtime in this case.
151
+ * Reject combining `dangerouslySetInnerHTML` with JSX children — React throws
152
+ * at runtime in this case.
160
153
  *
161
154
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md
162
155
  */
163
156
  "react/no-danger-with-children"?: TtscLintRuleSetting;
164
157
  /**
165
- * Reject direct writes to `this.state` outside constructor
166
- * initialization. Use `this.setState(...)` instead.
158
+ * Reject direct writes to `this.state` outside constructor initialization.
159
+ * Use `this.setState(...)` instead.
167
160
  *
168
161
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md
169
162
  */
@@ -171,9 +164,9 @@ export interface ITtscLintReactRules {
171
164
  /**
172
165
  * Reject `findDOMNode(...)` calls.
173
166
  *
174
- * The API is deprecated, blocks future React internals work, and
175
- * breaks component abstraction by reaching across composition
176
- * boundaries; attach a `ref` to the target element instead.
167
+ * The API is deprecated, blocks future React internals work, and breaks
168
+ * component abstraction by reaching across composition boundaries; attach a
169
+ * `ref` to the target element instead.
177
170
  *
178
171
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md
179
172
  */
@@ -181,9 +174,9 @@ export interface ITtscLintReactRules {
181
174
  /**
182
175
  * Reject `this.isMounted()` calls on class components.
183
176
  *
184
- * The API is deprecated, and anti-patterns around it usually hide
185
- * a memory leak in async callbacks; cancel the work in
186
- * `componentWillUnmount` instead.
177
+ * The API is deprecated, and anti-patterns around it usually hide a memory
178
+ * leak in async callbacks; cancel the work in `componentWillUnmount`
179
+ * instead.
187
180
  *
188
181
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md
189
182
  */
@@ -191,25 +184,24 @@ export interface ITtscLintReactRules {
191
184
  /**
192
185
  * Reject string-form JSX refs (`ref="myInput"`).
193
186
  *
194
- * The API is legacy, slated for removal, and has well-known issues
195
- * with static typing, owner tracking, and stale references; use
196
- * `useRef` or a callback ref instead.
187
+ * The API is legacy, slated for removal, and has well-known issues with
188
+ * static typing, owner tracking, and stale references; use `useRef` or a
189
+ * callback ref instead.
197
190
  *
198
191
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md
199
192
  */
200
193
  "react/no-string-refs"?: TtscLintRuleSetting;
201
194
  /**
202
- * Reject unescaped `>`, `"`, `'`, and `}` characters in JSX
203
- * text content — they render literally and almost always come
204
- * from forgotten HTML escaping.
195
+ * Reject unescaped `>`, `"`, `'`, and `}` characters in JSX text content —
196
+ * they render literally and almost always come from forgotten HTML escaping.
205
197
  *
206
198
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md
207
199
  */
208
200
  "react/no-unescaped-entities"?: TtscLintRuleSetting;
209
201
  /**
210
- * Keep React Fast Refresh component modules from exporting
211
- * non-component values. Mixing a component export with a
212
- * constant or hook in the same file invalidates HMR.
202
+ * Keep React Fast Refresh component modules from exporting non-component
203
+ * values. Mixing a component export with a constant or hook in the same file
204
+ * invalidates HMR.
213
205
  *
214
206
  * @reference https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/README.md
215
207
  */
@@ -217,17 +209,16 @@ export interface ITtscLintReactRules {
217
209
  /**
218
210
  * Reject reading or writing `ref.current` during render.
219
211
  *
220
- * Refs persist mutably across renders without re-rendering, so
221
- * touching them in render breaks the pure-render contract and
222
- * produces inconsistent output between render passes.
212
+ * Refs persist mutably across renders without re-rendering, so touching them
213
+ * in render breaks the pure-render contract and produces inconsistent output
214
+ * between render passes.
223
215
  *
224
216
  * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
225
217
  */
226
218
  "react/refs"?: TtscLintRuleSetting;
227
219
  /**
228
- * Enforce the Rules of Hooks: only call Hooks at the top level
229
- * of a component or custom Hook, never inside conditionals,
230
- * loops, or nested functions.
220
+ * Enforce the Rules of Hooks: only call Hooks at the top level of a component
221
+ * or custom Hook, never inside conditionals, loops, or nested functions.
231
222
  *
232
223
  * @reference https://react.dev/reference/rules/rules-of-hooks
233
224
  */
@@ -235,9 +226,9 @@ export interface ITtscLintReactRules {
235
226
  /**
236
227
  * Reject unconditional `setState` calls in `useEffect` bodies.
237
228
  *
238
- * The state update schedules another render and re-runs the
239
- * effect, which usually loops forever; the value almost always
240
- * belongs in `useMemo` or derived state instead.
229
+ * The state update schedules another render and re-runs the effect, which
230
+ * usually loops forever; the value almost always belongs in `useMemo` or
231
+ * derived state instead.
241
232
  *
242
233
  * @reference https://react.dev/learn/you-might-not-need-an-effect
243
234
  */
@@ -245,43 +236,39 @@ export interface ITtscLintReactRules {
245
236
  /**
246
237
  * Reject calling `setState` during render.
247
238
  *
248
- * Render must stay pure; queuing an update from the render body
249
- * schedules another render that queues another update, producing
250
- * an infinite render loop unless guarded by an explicit equality
251
- * check.
239
+ * Render must stay pure; queuing an update from the render body schedules
240
+ * another render that queues another update, producing an infinite render
241
+ * loop unless guarded by an explicit equality check.
252
242
  *
253
243
  * @reference https://react.dev/reference/rules/components-and-hooks-must-be-pure
254
244
  */
255
245
  "react/set-state-in-render"?: TtscLintRuleSetting;
256
246
  /**
257
247
  * Reject string-form `style` values such as `style="color: red"` or
258
- * `style={\`...\`}`.
248
+ * `style={\`...`}`.
259
249
  *
260
- * React expects a `{ camelCaseProp: value }` object, not the
261
- * HTML-style CSS string, and the latter is silently coerced and
262
- * never applied.
250
+ * React expects a `{ camelCaseProp: value }` object, not the HTML-style CSS
251
+ * string, and the latter is silently coerced and never applied.
263
252
  *
264
253
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md
265
254
  */
266
255
  "react/style-prop-object"?: TtscLintRuleSetting;
267
256
  /**
268
- * Reject `useMemo` calculation callbacks that do not return a
269
- * value.
257
+ * Reject `useMemo` calculation callbacks that do not return a value.
270
258
  *
271
- * A block-bodied callback without `return` memoizes `undefined`,
272
- * silently discarding the intended computation — a common mistake
273
- * when wrapping an object literal in `{ ... }` instead of
274
- * `({ ... })`.
259
+ * A block-bodied callback without `return` memoizes `undefined`, silently
260
+ * discarding the intended computation — a common mistake when wrapping an
261
+ * object literal in `{ ... }` instead of `({ ... })`.
275
262
  *
276
263
  * @reference https://react.dev/reference/react/useMemo
277
264
  */
278
265
  "react/use-memo"?: TtscLintRuleSetting;
279
266
  /**
280
- * Reject `children` or `dangerouslySetInnerHTML` on void DOM
281
- * elements (`<img>`, `<br>`, `<input>`, etc.).
267
+ * Reject `children` or `dangerouslySetInnerHTML` on void DOM elements
268
+ * (`<img>`, `<br>`, `<input>`, etc.).
282
269
  *
283
- * Void elements have no content model, so React throws at render
284
- * time when you try to give them any.
270
+ * Void elements have no content model, so React throws at render time when
271
+ * you try to give them any.
285
272
  *
286
273
  * @reference https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md
287
274
  */
@@ -2,33 +2,33 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
2
  /**
3
3
  * Regular-expression rules from `eslint-plugin-regexp`.
4
4
  *
5
- * These rules check the structure of regex literals — emptiness,
6
- * uselessness, flag ordering, shorthand classes, Unicode support.
5
+ * These rules check the structure of regex literals — emptiness, uselessness,
6
+ * flag ordering, shorthand classes, Unicode support.
7
7
  *
8
8
  * Some rules duplicate (and supersede) the regex-related rules in
9
- * {@link ITtscLintCoreRules}; both ids exist so projects can keep
10
- * the legacy ESLint names alongside the regexp-plugin variants.
9
+ * {@link ITtscLintCoreRules}; both ids exist so projects can keep the legacy
10
+ * ESLint names alongside the regexp-plugin variants.
11
11
  *
12
12
  * @reference https://github.com/ota-meshi/eslint-plugin-regexp
13
13
  */
14
14
  export interface ITtscLintRegexpRules {
15
15
  /**
16
- * Reject ASCII control characters in regex literals. Alias of
17
- * the bare core check.
16
+ * Reject ASCII control characters in regex literals. Alias of the bare core
17
+ * check.
18
18
  *
19
19
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html
20
20
  */
21
21
  "regexp/no-control-character"?: TtscLintRuleSetting;
22
22
  /**
23
- * Reject duplicate literal characters inside simple regex
24
- * character classes (`/[aa]/`).
23
+ * Reject duplicate literal characters inside simple regex character classes
24
+ * (`/[aa]/`).
25
25
  *
26
26
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html
27
27
  */
28
28
  "regexp/no-dupe-characters-character-class"?: TtscLintRuleSetting;
29
29
  /**
30
- * Reject empty alternatives in a disjunction (`/a||b/`), which
31
- * silently match the empty string.
30
+ * Reject empty alternatives in a disjunction (`/a||b/`), which silently match
31
+ * the empty string.
32
32
  *
33
33
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html
34
34
  */
@@ -36,16 +36,15 @@ export interface ITtscLintRegexpRules {
36
36
  /**
37
37
  * Reject empty capturing groups such as `/()/`.
38
38
  *
39
- * The group shifts the numbering of every later backreference and
40
- * capture slot while only ever capturing the empty string — almost
41
- * always a leftover from an unfinished edit.
39
+ * The group shifts the numbering of every later backreference and capture
40
+ * slot while only ever capturing the empty string — almost always a leftover
41
+ * from an unfinished edit.
42
42
  *
43
43
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html
44
44
  */
45
45
  "regexp/no-empty-capturing-group"?: TtscLintRuleSetting;
46
46
  /**
47
- * Reject empty regex character classes (`[]`). Alias of the
48
- * bare core check.
47
+ * Reject empty regex character classes (`[]`). Alias of the bare core check.
49
48
  *
50
49
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
51
50
  */
@@ -53,8 +52,8 @@ export interface ITtscLintRegexpRules {
53
52
  /**
54
53
  * Reject empty non-capturing groups such as `/(?:)/`.
55
54
  *
56
- * The group contributes nothing to the match and is virtually always
57
- * a leftover from a deleted inner pattern.
55
+ * The group contributes nothing to the match and is virtually always a
56
+ * leftover from a deleted inner pattern.
58
57
  *
59
58
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
60
59
  */
@@ -62,68 +61,63 @@ export interface ITtscLintRegexpRules {
62
61
  /**
63
62
  * Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
64
63
  *
65
- * An empty positive lookaround always matches; an empty negative
66
- * lookaround never matches. The assertion either collapses to a
67
- * no-op or breaks the surrounding pattern.
64
+ * An empty positive lookaround always matches; an empty negative lookaround
65
+ * never matches. The assertion either collapses to a no-op or breaks the
66
+ * surrounding pattern.
68
67
  *
69
68
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
70
69
  */
71
70
  "regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
72
71
  /**
73
- * Reject misleading Unicode characters in regex classes. Alias
74
- * of the bare misleading-character check.
72
+ * Reject misleading Unicode characters in regex classes. Alias of the bare
73
+ * misleading-character check.
75
74
  *
76
75
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
77
76
  */
78
77
  "regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
79
78
  /**
80
- * Reject single-character character classes such as `/[x]/`
81
- * — `/x/` is equivalent.
79
+ * Reject single-character character classes such as `/[x]/` — `/x/` is
80
+ * equivalent.
82
81
  *
83
82
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
84
83
  */
85
84
  "regexp/no-useless-character-class"?: TtscLintRuleSetting;
86
85
  /**
87
- * Reject unnecessary escapes inside regex literals. Alias of
88
- * core `no-useless-escape` for regex contexts.
86
+ * Reject unnecessary escapes inside regex literals. Alias of core
87
+ * `no-useless-escape` for regex contexts.
89
88
  *
90
89
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
91
90
  */
92
91
  "regexp/no-useless-escape"?: TtscLintRuleSetting;
93
92
  /**
94
- * Reject regex flags that the literal does not exercise — `i` on
95
- * a pattern without case-variable characters, `m` without `^`/`$`,
96
- * `s` without `.`, and similar dead flags on `g`/`y`.
93
+ * Reject regex flags that the literal does not exercise — `i` on a pattern
94
+ * without case-variable characters, `m` without `^`/`$`, `s` without `.`, and
95
+ * similar dead flags on `g`/`y`.
97
96
  *
98
- * Cleans up flag combos that suggest behavior the pattern can never
99
- * trigger.
97
+ * Cleans up flag combos that suggest behavior the pattern can never trigger.
100
98
  *
101
99
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
102
100
  */
103
101
  "regexp/no-useless-flag"?: TtscLintRuleSetting;
104
102
  /**
105
- * Reject quantifiers that do not change the match — constant-one
106
- * counts (`/a{1}/`), `?` on patterns already matching the empty
107
- * string (`/(?:a+|b*)?/`), and quantifiers on non-consuming
108
- * atoms (`/(?:\b)+/`).
103
+ * Reject quantifiers that do not change the match — constant-one counts
104
+ * (`/a{1}/`), `?` on patterns already matching the empty string
105
+ * (`/(?:a+|b*)?/`), and quantifiers on non-consuming atoms (`/(?:\b)+/`).
109
106
  *
110
107
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
111
108
  */
112
109
  "regexp/no-useless-quantifier"?: TtscLintRuleSetting;
113
110
  /**
114
- * Reject equal min/max quantifiers (`/a{2,2}/`) in favor of
115
- * `/a{2}/`.
111
+ * Reject equal min/max quantifiers (`/a{2,2}/`) in favor of `/a{2}/`.
116
112
  *
117
113
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
118
114
  */
119
115
  "regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
120
116
  /**
121
- * Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom
122
- * never matches, so the quantifier is either dead code or a typo
123
- * for `{1,…}`.
117
+ * Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom never
118
+ * matches, so the quantifier is either dead code or a typo for `{1,…}`.
124
119
  *
125
- * The fix is normally to delete the atom or correct the upper
126
- * bound.
120
+ * The fix is normally to delete the atom or correct the upper bound.
127
121
  *
128
122
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
129
123
  */
@@ -159,30 +153,28 @@ export interface ITtscLintRegexpRules {
159
153
  */
160
154
  "regexp/prefer-w"?: TtscLintRuleSetting;
161
155
  /**
162
- * Require regex literals to use the `u` or `v` flag, so
163
- * Unicode-property escapes and surrogate-pair handling stay
164
- * predictable.
156
+ * Require regex literals to use the `u` or `v` flag, so Unicode-property
157
+ * escapes and surrogate-pair handling stay predictable.
165
158
  *
166
159
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
167
160
  */
168
161
  "regexp/require-unicode-regexp"?: TtscLintRuleSetting;
169
162
  /**
170
- * Require regex literals to use the `v` flag specifically — the
171
- * stricter Unicode-sets mode that enables set notation, string
172
- * properties, and stricter escape rules on top of `u`.
163
+ * Require regex literals to use the `v` flag specifically — the stricter
164
+ * Unicode-sets mode that enables set notation, string properties, and
165
+ * stricter escape rules on top of `u`.
173
166
  *
174
- * Choose this over `require-unicode-regexp` only on engines that
175
- * ship ES2024-era regex.
167
+ * Choose this over `require-unicode-regexp` only on engines that ship
168
+ * ES2024-era regex.
176
169
  *
177
170
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
178
171
  */
179
172
  "regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
180
173
  /**
181
- * Require regex flags to appear in canonical alphabetical order
182
- * (`dgimsuvy`).
174
+ * Require regex flags to appear in canonical alphabetical order (`dgimsuvy`).
183
175
  *
184
- * Stable ordering keeps diffs small and lets readers compare flag
185
- * sets at a glance.
176
+ * Stable ordering keeps diffs small and lets readers compare flag sets at a
177
+ * glance.
186
178
  *
187
179
  * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
188
180
  */
@@ -8,9 +8,8 @@ import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./I
8
8
  /**
9
9
  * Index from typed rule name to its options object.
10
10
  *
11
- * Built-in rule families with configurable options are listed here.
12
- * Contributor plugins extend the map by augmenting it from their own
13
- * package:
11
+ * Built-in rule families with configurable options are listed here. Contributor
12
+ * plugins extend the map by augmenting it from their own package:
14
13
  *
15
14
  * ```ts
16
15
  * declare module "@ttsc/lint" {
@@ -21,12 +20,12 @@ import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./I
21
20
  * ```
22
21
  *
23
22
  * After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
24
- * `defineConfig`-style helpers in plugin packages can type-check the
25
- * options object against the contributor's declared shape.
23
+ * `defineConfig`-style helpers in plugin packages can type-check the options
24
+ * object against the contributor's declared shape.
26
25
  *
27
- * `format/*` is **not** listed: formatter behavior is configured through
28
- * the top-level `format` block ({@link ITtscLintFormat}), not through the
29
- * `rules` surface.
26
+ * `format/*` is **not** listed: formatter behavior is configured through the
27
+ * top-level `format` block ({@link ITtscLintFormat}), not through the `rules`
28
+ * surface.
30
29
  */
31
30
  export interface ITtscLintRuleOptionsMap {
32
31
  "testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;