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