@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +23 -25
  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 +167 -5
  68. package/linthost/print_nodes_call.go +786 -77
  69. package/linthost/print_nodes_function.go +43 -0
  70. package/linthost/print_nodes_imports.go +64 -14
  71. package/linthost/print_nodes_list.go +214 -8
  72. package/linthost/print_nodes_object.go +14 -6
  73. package/linthost/print_nodes_ternary.go +147 -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 +213 -0
  83. package/linthost/rules_format_bracket_spacing.go +117 -0
  84. package/linthost/rules_format_clause_join.go +179 -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 +180 -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 +517 -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,143 +1,139 @@
1
1
  import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
2
  /**
3
- * JSX accessibility rules from `eslint-plugin-jsx-a11y`, applied to
4
- * TSX (and JSX-in-TS) sources.
3
+ * JSX accessibility rules from `eslint-plugin-jsx-a11y`, applied to TSX (and
4
+ * JSX-in-TS) sources.
5
5
  *
6
- * Checks the static structure of JSX elements against WAI-ARIA
7
- * authoring guidance — interactive controls should be focusable,
8
- * labels should reference a control, ARIA properties should match the
9
- * element role, and so on. Runtime accessibility issues require live
10
- * audits; this family catches the statically-decidable subset.
6
+ * Checks the static structure of JSX elements against WAI-ARIA authoring
7
+ * guidance — interactive controls should be focusable, labels should reference
8
+ * a control, ARIA properties should match the element role, and so on. Runtime
9
+ * accessibility issues require live audits; this family catches the
10
+ * statically-decidable subset.
11
11
  *
12
12
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y
13
13
  */
14
14
  export interface ITtscLintJsxA11yRules {
15
15
  /**
16
- * Require image-like JSX elements (`<img>`, `<input
17
- * type="image">`, `<object>`, `<area>`) to expose alt text or an
18
- * ARIA label.
16
+ * Require image-like JSX elements (`<img>`, `<input type="image">`,
17
+ * `<object>`, `<area>`) to expose alt text or an ARIA label.
19
18
  *
20
19
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md
21
20
  */
22
21
  "jsx-a11y/alt-text"?: TtscLintRuleSetting;
23
22
  /**
24
- * Reject `<a>` elements whose visible text is one of a small set of
25
- * phrases that carry no information out of context. Screen-reader
26
- * users navigate by listing links — "click here" / "more" / "read
27
- * more" turn that list into noise.
23
+ * Reject `<a>` elements whose visible text is one of a small set of phrases
24
+ * that carry no information out of context. Screen-reader users navigate by
25
+ * listing links — "click here" / "more" / "read more" turn that list into
26
+ * noise.
28
27
  *
29
28
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-ambiguous-text.md
30
29
  */
31
30
  "jsx-a11y/anchor-ambiguous-text"?: TtscLintRuleSetting;
32
31
  /**
33
- * Reject empty JSX anchors with no accessible content (text,
34
- * `aria-label`, or labelled child).
32
+ * Reject empty JSX anchors with no accessible content (text, `aria-label`, or
33
+ * labelled child).
35
34
  *
36
35
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md
37
36
  */
38
37
  "jsx-a11y/anchor-has-content"?: TtscLintRuleSetting;
39
38
  /**
40
- * Reject anchors with missing, `#`-only, empty, or `javascript:`
41
- * `href` values, all of which break navigation semantics.
39
+ * Reject anchors with missing, `#`-only, empty, or `javascript:` `href`
40
+ * values, all of which break navigation semantics.
42
41
  *
43
42
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md
44
43
  */
45
44
  "jsx-a11y/anchor-is-valid"?: TtscLintRuleSetting;
46
45
  /**
47
- * Require `tabIndex` on any element carrying `aria-activedescendant`
48
- * unless the tag is already focusable by default (`<input>`, etc.) —
49
- * the composite-widget host must keep document focus for the
50
- * descendant id to do anything.
46
+ * Require `tabIndex` on any element carrying `aria-activedescendant` unless
47
+ * the tag is already focusable by default (`<input>`, etc.) — the
48
+ * composite-widget host must keep document focus for the descendant id to do
49
+ * anything.
51
50
  *
52
51
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-activedescendant-has-tabindex.md
53
52
  */
54
53
  "jsx-a11y/aria-activedescendant-has-tabindex"?: TtscLintRuleSetting;
55
54
  /**
56
- * Reject `aria-*` JSX attribute names that are not part of the
57
- * WAI-ARIA States and Properties spec — catches typos such as
58
- * `aria-labeledby` (missing second `l`) that silently disable
59
- * assistive-tech support.
55
+ * Reject `aria-*` JSX attribute names that are not part of the WAI-ARIA
56
+ * States and Properties spec — catches typos such as `aria-labeledby`
57
+ * (missing second `l`) that silently disable assistive-tech support.
60
58
  *
61
59
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-props.md
62
60
  */
63
61
  "jsx-a11y/aria-props"?: TtscLintRuleSetting;
64
62
  /**
65
- * Validate literal values supplied to ARIA properties against the
66
- * type the spec declares for them — e.g. `aria-checked` must be
67
- * one of `true`, `false`, `"mixed"`, and `aria-hidden="yes"` is
68
- * rejected because the type is boolean.
63
+ * Validate literal values supplied to ARIA properties against the type the
64
+ * spec declares for them — e.g. `aria-checked` must be one of `true`,
65
+ * `false`, `"mixed"`, and `aria-hidden="yes"` is rejected because the type is
66
+ * boolean.
69
67
  *
70
68
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-proptypes.md
71
69
  */
72
70
  "jsx-a11y/aria-proptypes"?: TtscLintRuleSetting;
73
71
  /**
74
72
  * Require `role` values to be a concrete, non-abstract WAI-ARIA role
75
- * (`"button"`, `"checkbox"`, ...). Rejects misspellings and abstract
76
- * roles like `"range"`; computed values are skipped because the
77
- * concrete role cannot be checked statically.
73
+ * (`"button"`, `"checkbox"`, ...). Rejects misspellings and abstract roles
74
+ * like `"range"`; computed values are skipped because the concrete role
75
+ * cannot be checked statically.
78
76
  *
79
77
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md
80
78
  */
81
79
  "jsx-a11y/aria-role"?: TtscLintRuleSetting;
82
80
  /**
83
- * Reject ARIA roles and attributes on elements that do not
84
- * support them (e.g. `aria-checked` on a `<meta>` tag).
81
+ * Reject ARIA roles and attributes on elements that do not support them (e.g.
82
+ * `aria-checked` on a `<meta>` tag).
85
83
  *
86
84
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-unsupported-elements.md
87
85
  */
88
86
  "jsx-a11y/aria-unsupported-elements"?: TtscLintRuleSetting;
89
87
  /**
90
- * Validate the literal `autocomplete` token against the HTML spec
91
- * vocabulary and against the `type` of the surrounding input — e.g.
92
- * `autocomplete="url"` on `<input type="email">` is rejected because
93
- * the two sets do not overlap.
88
+ * Validate the literal `autocomplete` token against the HTML spec vocabulary
89
+ * and against the `type` of the surrounding input — e.g. `autocomplete="url"`
90
+ * on `<input type="email">` is rejected because the two sets do not overlap.
94
91
  *
95
92
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/autocomplete-valid.md
96
93
  */
97
94
  "jsx-a11y/autocomplete-valid"?: TtscLintRuleSetting;
98
95
  /**
99
- * Require keyboard handlers alongside `onClick` on non-interactive
100
- * JSX elements so the element is also reachable by keyboard.
96
+ * Require keyboard handlers alongside `onClick` on non-interactive JSX
97
+ * elements so the element is also reachable by keyboard.
101
98
  *
102
99
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md
103
100
  */
104
101
  "jsx-a11y/click-events-have-key-events"?: TtscLintRuleSetting;
105
102
  /**
106
- * Require interactive controls to have an accessible label
107
- * (visible text, `aria-label`, or `aria-labelledby`).
103
+ * Require interactive controls to have an accessible label (visible text,
104
+ * `aria-label`, or `aria-labelledby`).
108
105
  *
109
106
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
110
107
  */
111
108
  "jsx-a11y/control-has-associated-label"?: TtscLintRuleSetting;
112
109
  /**
113
- * Reject empty JSX headings (`<h1>{}</h1>`) — assistive
114
- * technology cannot announce content that does not exist.
110
+ * Reject empty JSX headings (`<h1>{}</h1>`) — assistive technology cannot
111
+ * announce content that does not exist.
115
112
  *
116
113
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md
117
114
  */
118
115
  "jsx-a11y/heading-has-content"?: TtscLintRuleSetting;
119
116
  /**
120
- * Require `<html>` JSX elements to declare a non-empty `lang`
121
- * attribute so screen readers can pick the correct pronunciation.
122
- * Largely superseded by `jsx-a11y/lang`, which also validates the
123
- * tag value.
117
+ * Require `<html>` JSX elements to declare a non-empty `lang` attribute so
118
+ * screen readers can pick the correct pronunciation. Largely superseded by
119
+ * `jsx-a11y/lang`, which also validates the tag value.
124
120
  *
125
121
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/html-has-lang.md
126
122
  */
127
123
  "jsx-a11y/html-has-lang"?: TtscLintRuleSetting;
128
124
  /**
129
- * Require every `<iframe>` JSX element to declare a non-empty,
130
- * unique `title` so assistive tech can announce the embedded
131
- * content. Empty strings, booleans, numbers, and `{...spread}`
132
- * without a literal title are all flagged.
125
+ * Require every `<iframe>` JSX element to declare a non-empty, unique `title`
126
+ * so assistive tech can announce the embedded content. Empty strings,
127
+ * booleans, numbers, and `{...spread}` without a literal title are all
128
+ * flagged.
133
129
  *
134
130
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/iframe-has-title.md
135
131
  */
136
132
  "jsx-a11y/iframe-has-title"?: TtscLintRuleSetting;
137
133
  /**
138
- * Reject redundant words such as *image*, *photo*, or *picture*
139
- * inside the `alt` attribute of an `<img>` — the role already
140
- * conveys "this is an image".
134
+ * Reject redundant words such as _image_, _photo_, or _picture_ inside the
135
+ * `alt` attribute of an `<img>` — the role already conveys "this is an
136
+ * image".
141
137
  *
142
138
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md
143
139
  */
@@ -150,25 +146,25 @@ export interface ITtscLintJsxA11yRules {
150
146
  */
151
147
  "jsx-a11y/interactive-supports-focus"?: TtscLintRuleSetting;
152
148
  /**
153
- * Require `<label>` elements to either wrap a form control or
154
- * reference one via `htmlFor`.
149
+ * Require `<label>` elements to either wrap a form control or reference one
150
+ * via `htmlFor`.
155
151
  *
156
152
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
157
153
  */
158
154
  "jsx-a11y/label-has-associated-control"?: TtscLintRuleSetting;
159
155
  /**
160
- * Deprecated predecessor of `label-has-associated-control`. Checks
161
- * the same nesting / `htmlFor` association requirement and supports
162
- * configuring which custom components count as labels. Off in
163
- * `recommended`; kept only for legacy configs.
156
+ * Deprecated predecessor of `label-has-associated-control`. Checks the same
157
+ * nesting / `htmlFor` association requirement and supports configuring which
158
+ * custom components count as labels. Off in `recommended`; kept only for
159
+ * legacy configs.
164
160
  *
165
161
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-for.md
166
162
  */
167
163
  "jsx-a11y/label-has-for"?: TtscLintRuleSetting;
168
164
  /**
169
- * Require the `<html lang>` value to be a valid IETF BCP-47 tag
170
- * (`"en"`, `"en-US"`, ...). Superset of `html-has-lang`, since it
171
- * also catches present-but-invalid tags like `lang="foo"`.
165
+ * Require the `<html lang>` value to be a valid IETF BCP-47 tag (`"en"`,
166
+ * `"en-US"`, ...). Superset of `html-has-lang`, since it also catches
167
+ * present-but-invalid tags like `lang="foo"`.
172
168
  *
173
169
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/lang.md
174
170
  */
@@ -181,9 +177,8 @@ export interface ITtscLintJsxA11yRules {
181
177
  */
182
178
  "jsx-a11y/media-has-caption"?: TtscLintRuleSetting;
183
179
  /**
184
- * Require `onMouseOver` / `onMouseOut` handlers to have
185
- * `onFocus` / `onBlur` parity so keyboard users get the same
186
- * interaction.
180
+ * Require `onMouseOver` / `onMouseOut` handlers to have `onFocus` / `onBlur`
181
+ * parity so keyboard users get the same interaction.
187
182
  *
188
183
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/mouse-events-have-key-events.md
189
184
  */
@@ -196,105 +191,102 @@ export interface ITtscLintJsxA11yRules {
196
191
  */
197
192
  "jsx-a11y/no-access-key"?: TtscLintRuleSetting;
198
193
  /**
199
- * Reject `aria-hidden` on focusable JSX elements — focus would
200
- * land on an element hidden from assistive tech.
194
+ * Reject `aria-hidden` on focusable JSX elements — focus would land on an
195
+ * element hidden from assistive tech.
201
196
  *
202
197
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-aria-hidden-on-focusable.md
203
198
  */
204
199
  "jsx-a11y/no-aria-hidden-on-focusable"?: TtscLintRuleSetting;
205
200
  /**
206
- * Reject `autoFocus` / `autofocus` JSX attributes — they steal
207
- * focus on page load and disorient keyboard users.
201
+ * Reject `autoFocus` / `autofocus` JSX attributes — they steal focus on page
202
+ * load and disorient keyboard users.
208
203
  *
209
204
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-autofocus.md
210
205
  */
211
206
  "jsx-a11y/no-autofocus"?: TtscLintRuleSetting;
212
207
  /**
213
- * Reject `<blink>` and `<marquee>` — moving content cannot be
214
- * paused and harms users with cognitive or visual impairments
215
- * (WCAG 2.2.2). The list is closed: extra elements cannot be added.
208
+ * Reject `<blink>` and `<marquee>` — moving content cannot be paused and
209
+ * harms users with cognitive or visual impairments (WCAG 2.2.2). The list is
210
+ * closed: extra elements cannot be added.
216
211
  *
217
212
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-distracting-elements.md
218
213
  */
219
214
  "jsx-a11y/no-distracting-elements"?: TtscLintRuleSetting;
220
215
  /**
221
- * Reject non-interactive ARIA roles applied to natively
222
- * interactive elements (e.g. `<button role="presentation">`).
216
+ * Reject non-interactive ARIA roles applied to natively interactive elements
217
+ * (e.g. `<button role="presentation">`).
223
218
  *
224
219
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-interactive-element-to-noninteractive-role.md
225
220
  */
226
221
  "jsx-a11y/no-interactive-element-to-noninteractive-role"?: TtscLintRuleSetting;
227
222
  /**
228
- * Reject interaction event handlers (`onClick`, `onKeyDown`)
229
- * placed on known non-interactive elements without a role
230
- * override.
223
+ * Reject interaction event handlers (`onClick`, `onKeyDown`) placed on known
224
+ * non-interactive elements without a role override.
231
225
  *
232
226
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-interactions.md
233
227
  */
234
228
  "jsx-a11y/no-noninteractive-element-interactions"?: TtscLintRuleSetting;
235
229
  /**
236
- * Reject interactive ARIA roles applied to non-interactive
237
- * elements (e.g. `<li role="button">`); use the matching
238
- * interactive tag.
230
+ * Reject interactive ARIA roles applied to non-interactive elements (e.g.
231
+ * `<li role="button">`); use the matching interactive tag.
239
232
  *
240
233
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-to-interactive-role.md
241
234
  */
242
235
  "jsx-a11y/no-noninteractive-element-to-interactive-role"?: TtscLintRuleSetting;
243
236
  /**
244
- * Reject `tabIndex` on non-interactive JSX elements that have
245
- * no interactive role.
237
+ * Reject `tabIndex` on non-interactive JSX elements that have no interactive
238
+ * role.
246
239
  *
247
240
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-tabindex.md
248
241
  */
249
242
  "jsx-a11y/no-noninteractive-tabindex"?: TtscLintRuleSetting;
250
243
  /**
251
- * Reject explicit `role` attributes that duplicate the
252
- * native semantics of the element (e.g. `<button
253
- * role="button">`).
244
+ * Reject explicit `role` attributes that duplicate the native semantics of
245
+ * the element (e.g. `<button role="button">`).
254
246
  *
255
247
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-redundant-roles.md
256
248
  */
257
249
  "jsx-a11y/no-redundant-roles"?: TtscLintRuleSetting;
258
250
  /**
259
- * Require static elements with interaction handlers to declare
260
- * an interactive `role`.
251
+ * Require static elements with interaction handlers to declare an interactive
252
+ * `role`.
261
253
  *
262
254
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md
263
255
  */
264
256
  "jsx-a11y/no-static-element-interactions"?: TtscLintRuleSetting;
265
257
  /**
266
- * Prefer native JSX tags over `div` / `span` plus an equivalent
267
- * `role` (e.g. `<button>` over `<div role="button">`).
258
+ * Prefer native JSX tags over `div` / `span` plus an equivalent `role` (e.g.
259
+ * `<button>` over `<div role="button">`).
268
260
  *
269
261
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/prefer-tag-over-role.md
270
262
  */
271
263
  "jsx-a11y/prefer-tag-over-role"?: TtscLintRuleSetting;
272
264
  /**
273
- * Require ARIA properties that the chosen role mandates (e.g.
274
- * `aria-checked` on `role="checkbox"`).
265
+ * Require ARIA properties that the chosen role mandates (e.g. `aria-checked`
266
+ * on `role="checkbox"`).
275
267
  *
276
268
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-has-required-aria-props.md
277
269
  */
278
270
  "jsx-a11y/role-has-required-aria-props"?: TtscLintRuleSetting;
279
271
  /**
280
- * Reject ARIA properties that the role does not support (e.g.
281
- * `aria-checked` on `role="link"`).
272
+ * Reject ARIA properties that the role does not support (e.g. `aria-checked`
273
+ * on `role="link"`).
282
274
  *
283
275
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md
284
276
  */
285
277
  "jsx-a11y/role-supports-aria-props"?: TtscLintRuleSetting;
286
278
  /**
287
- * Restrict the `scope` attribute to `<th>` cells. On any other tag
288
- * (`<div scope="col">`, `<td scope="row">`) the attribute is ignored
289
- * by browsers and confuses table-aware assistive tech.
279
+ * Restrict the `scope` attribute to `<th>` cells. On any other tag (`<div
280
+ * scope="col">`, `<td scope="row">`) the attribute is ignored by browsers and
281
+ * confuses table-aware assistive tech.
290
282
  *
291
283
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md
292
284
  */
293
285
  "jsx-a11y/scope"?: TtscLintRuleSetting;
294
286
  /**
295
- * Reject `tabIndex` values greater than zero. Positive indices jump
296
- * the keyboard focus order out of document order and almost always
297
- * desynchronize from later DOM changes; `0` and `-1` remain allowed.
287
+ * Reject `tabIndex` values greater than zero. Positive indices jump the
288
+ * keyboard focus order out of document order and almost always desynchronize
289
+ * from later DOM changes; `0` and `-1` remain allowed.
298
290
  *
299
291
  * @reference https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/tabindex-no-positive.md
300
292
  */
@@ -3,25 +3,24 @@ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
3
3
  * Next.js framework rules from `@next/eslint-plugin-next`, applied to
4
4
  * TypeScript and TSX sources inside Next.js apps.
5
5
  *
6
- * Checks Next.js-specific conventions — pages/app routing, `<Head>`
7
- * placement, font and script loading, image and link components —
8
- * that the framework's runtime treats as load-bearing.
6
+ * Checks Next.js-specific conventions — pages/app routing, `<Head>` placement,
7
+ * font and script loading, image and link components — that the framework's
8
+ * runtime treats as load-bearing.
9
9
  *
10
10
  * @reference https://nextjs.org/docs/app/api-reference/config/eslint
11
11
  */
12
12
  export interface ITtscLintNextjsRules {
13
13
  /**
14
- * Require a non-blocking `display=` value on Google Fonts
15
- * stylesheet links; reject `auto`, `block`, and `fallback`, which
16
- * keep text invisible while the font loads and hurt LCP. Prefer
17
- * `optional` or `swap`.
14
+ * Require a non-blocking `display=` value on Google Fonts stylesheet links;
15
+ * reject `auto`, `block`, and `fallback`, which keep text invisible while the
16
+ * font loads and hurt LCP. Prefer `optional` or `swap`.
18
17
  *
19
18
  * @reference https://nextjs.org/docs/messages/google-font-display
20
19
  */
21
20
  "nextjs/google-font-display"?: TtscLintRuleSetting;
22
21
  /**
23
- * Require `rel="preconnect"` for `fonts.gstatic.com` links to
24
- * shave latency off Google Font fetches.
22
+ * Require `rel="preconnect"` for `fonts.gstatic.com` links to shave latency
23
+ * off Google Font fetches.
25
24
  *
26
25
  * @reference https://nextjs.org/docs/messages/google-font-preconnect
27
26
  */
@@ -30,24 +29,23 @@ export interface ITtscLintNextjsRules {
30
29
  * Require an `id` attribute on inline `<Script>` components from
31
30
  * `next/script`.
32
31
  *
33
- * Next.js uses the id to track the script across client
34
- * navigations and to satisfy its loading-strategy budget; an
35
- * inline script without one is silently dropped on subsequent
36
- * renders.
32
+ * Next.js uses the id to track the script across client navigations and to
33
+ * satisfy its loading-strategy budget; an inline script without one is
34
+ * silently dropped on subsequent renders.
37
35
  *
38
36
  * @reference https://nextjs.org/docs/messages/inline-script-id
39
37
  */
40
38
  "nextjs/inline-script-id"?: TtscLintRuleSetting;
41
39
  /**
42
- * Prefer the Next.js Google Analytics integration over
43
- * hand-written `gtag` script tags.
40
+ * Prefer the Next.js Google Analytics integration over hand-written `gtag`
41
+ * script tags.
44
42
  *
45
43
  * @reference https://nextjs.org/docs/messages/next-script-for-ga
46
44
  */
47
45
  "nextjs/next-script-for-ga"?: TtscLintRuleSetting;
48
46
  /**
49
- * Reject local declarations named `module`, which shadow the
50
- * CommonJS `module` binding Next.js relies on.
47
+ * Reject local declarations named `module`, which shadow the CommonJS
48
+ * `module` binding Next.js relies on.
51
49
  *
52
50
  * @reference https://nextjs.org/docs/messages/no-assign-module-variable
53
51
  */
@@ -55,18 +53,18 @@ export interface ITtscLintNextjsRules {
55
53
  /**
56
54
  * Reject `async` function bodies on React Client Components.
57
55
  *
58
- * The client-side React runtime can't await a component's render,
59
- * so an `async` `"use client"` component returns a pending promise
60
- * that crashes hydration; do data fetching in a Server Component
61
- * or in `useEffect` instead.
56
+ * The client-side React runtime can't await a component's render, so an
57
+ * `async` `"use client"` component returns a pending promise that crashes
58
+ * hydration; do data fetching in a Server Component or in `useEffect`
59
+ * instead.
62
60
  *
63
61
  * @reference https://nextjs.org/docs/messages/no-async-client-component
64
62
  */
65
63
  "nextjs/no-async-client-component"?: TtscLintRuleSetting;
66
64
  /**
67
- * Restrict the `next/script` `strategy="beforeInteractive"` option
68
- * to `pages/_document.tsx` — anywhere else, the strategy is
69
- * downgraded silently.
65
+ * Restrict the `next/script` `strategy="beforeInteractive"` option to
66
+ * `pages/_document.tsx` — anywhere else, the strategy is downgraded
67
+ * silently.
70
68
  *
71
69
  * @reference https://nextjs.org/docs/messages/no-before-interactive-script-outside-document
72
70
  */
@@ -74,17 +72,16 @@ export interface ITtscLintNextjsRules {
74
72
  /**
75
73
  * Reject raw `<link rel="stylesheet">` tags.
76
74
  *
77
- * Next.js handles CSS through its bundler — imported stylesheets,
78
- * CSS Modules, or `next/font` — and manual stylesheet links skip
79
- * the runtime's critical-CSS extraction and render-blocking
80
- * heuristics.
75
+ * Next.js handles CSS through its bundler — imported stylesheets, CSS
76
+ * Modules, or `next/font` — and manual stylesheet links skip the runtime's
77
+ * critical-CSS extraction and render-blocking heuristics.
81
78
  *
82
79
  * @reference https://nextjs.org/docs/messages/no-css-tags
83
80
  */
84
81
  "nextjs/no-css-tags"?: TtscLintRuleSetting;
85
82
  /**
86
- * Restrict `next/document` imports to `pages/_document.tsx` —
87
- * `Document` cannot be used in a regular page.
83
+ * Restrict `next/document` imports to `pages/_document.tsx` — `Document`
84
+ * cannot be used in a regular page.
88
85
  *
89
86
  * @reference https://nextjs.org/docs/messages/no-document-import-in-page
90
87
  */
@@ -93,16 +90,16 @@ export interface ITtscLintNextjsRules {
93
90
  * Reject more than one `<Head>` element from `next/document` in
94
91
  * `pages/_document.tsx`.
95
92
  *
96
- * Next.js merges metadata into the single `<Head>` it renders into
97
- * the HTML shell; additional instances are dropped silently and
98
- * any tags inside them never reach the page.
93
+ * Next.js merges metadata into the single `<Head>` it renders into the HTML
94
+ * shell; additional instances are dropped silently and any tags inside them
95
+ * never reach the page.
99
96
  *
100
97
  * @reference https://nextjs.org/docs/messages/no-duplicate-head
101
98
  */
102
99
  "nextjs/no-duplicate-head"?: TtscLintRuleSetting;
103
100
  /**
104
- * Reject raw `<head>` elements outside the `app/` directory —
105
- * use `next/head` or the metadata exports.
101
+ * Reject raw `<head>` elements outside the `app/` directory — use `next/head`
102
+ * or the metadata exports.
106
103
  *
107
104
  * @reference https://nextjs.org/docs/messages/no-head-element
108
105
  */
@@ -115,51 +112,50 @@ export interface ITtscLintNextjsRules {
115
112
  */
116
113
  "nextjs/no-head-import-in-document"?: TtscLintRuleSetting;
117
114
  /**
118
- * Prefer `next/link` for internal anchors with a static `href`,
119
- * since `Link` performs client-side routing.
115
+ * Prefer `next/link` for internal anchors with a static `href`, since `Link`
116
+ * performs client-side routing.
120
117
  *
121
118
  * @reference https://nextjs.org/docs/messages/no-html-link-for-pages
122
119
  */
123
120
  "nextjs/no-html-link-for-pages"?: TtscLintRuleSetting;
124
121
  /**
125
- * Prefer `next/image` over raw `<img>` elements so the framework
126
- * can optimize the asset.
122
+ * Prefer `next/image` over raw `<img>` elements so the framework can optimize
123
+ * the asset.
127
124
  *
128
125
  * @reference https://nextjs.org/docs/messages/no-img-element
129
126
  */
130
127
  "nextjs/no-img-element"?: TtscLintRuleSetting;
131
128
  /**
132
- * Reject Google font `<link>` tags inside regular pages files —
133
- * load fonts in `_document.tsx` (pages router) or via
134
- * `next/font` (app router).
129
+ * Reject Google font `<link>` tags inside regular pages files — load fonts in
130
+ * `_document.tsx` (pages router) or via `next/font` (app router).
135
131
  *
136
132
  * @reference https://nextjs.org/docs/messages/no-page-custom-font
137
133
  */
138
134
  "nextjs/no-page-custom-font"?: TtscLintRuleSetting;
139
135
  /**
140
- * Reject `next/script` inside `next/head` — `<Script>` must
141
- * appear in the JSX tree, not in `<Head>`.
136
+ * Reject `next/script` inside `next/head` — `<Script>` must appear in the JSX
137
+ * tree, not in `<Head>`.
142
138
  *
143
139
  * @reference https://nextjs.org/docs/messages/no-script-component-in-head
144
140
  */
145
141
  "nextjs/no-script-component-in-head"?: TtscLintRuleSetting;
146
142
  /**
147
- * Reject styled-jsx tags inside `pages/_document.tsx`, which the
148
- * server renders incorrectly.
143
+ * Reject styled-jsx tags inside `pages/_document.tsx`, which the server
144
+ * renders incorrectly.
149
145
  *
150
146
  * @reference https://nextjs.org/docs/messages/no-styled-jsx-in-document
151
147
  */
152
148
  "nextjs/no-styled-jsx-in-document"?: TtscLintRuleSetting;
153
149
  /**
154
- * Require `async` or `defer` on external raw `<script>` tags so
155
- * loading does not block render.
150
+ * Require `async` or `defer` on external raw `<script>` tags so loading does
151
+ * not block render.
156
152
  *
157
153
  * @reference https://nextjs.org/docs/messages/no-sync-scripts
158
154
  */
159
155
  "nextjs/no-sync-scripts"?: TtscLintRuleSetting;
160
156
  /**
161
- * Reject `<title>` inside `Head` from `next/document`. Set the
162
- * title from the metadata exports instead.
157
+ * Reject `<title>` inside `Head` from `next/document`. Set the title from the
158
+ * metadata exports instead.
163
159
  *
164
160
  * @reference https://nextjs.org/docs/messages/no-title-in-document-head
165
161
  */
@@ -168,16 +164,15 @@ export interface ITtscLintNextjsRules {
168
164
  * Catch near-miss typos in Next.js data-fetching export names
169
165
  * (`getStaticProps`, `getStaticPaths`, `getServerSideProps`).
170
166
  *
171
- * A misspelled export is treated as ordinary module state, so the
172
- * page silently falls back to client-side rendering with no
173
- * build-time warning.
167
+ * A misspelled export is treated as ordinary module state, so the page
168
+ * silently falls back to client-side rendering with no build-time warning.
174
169
  *
175
170
  * @reference https://nextjs.org/docs/messages/no-typos
176
171
  */
177
172
  "nextjs/no-typos"?: TtscLintRuleSetting;
178
173
  /**
179
- * Reject Polyfill.io script URLs — Next.js already polyfills
180
- * modern browsers, and Polyfill.io has a checkered history.
174
+ * Reject Polyfill.io script URLs — Next.js already polyfills modern browsers,
175
+ * and Polyfill.io has a checkered history.
181
176
  *
182
177
  * @reference https://nextjs.org/docs/messages/no-unwanted-polyfillio
183
178
  */