@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,7 +1,7 @@
1
1
  package linthost
2
2
 
3
3
  import (
4
- shimast "github.com/microsoft/typescript-go/shim/ast"
4
+ shimast "github.com/microsoft/typescript-go/shim/ast"
5
5
  )
6
6
 
7
7
  // reactJSXNoUndef rejects JSX elements whose tag is a bare uppercase
@@ -15,27 +15,27 @@ type reactJSXNoUndef struct{}
15
15
 
16
16
  func (reactJSXNoUndef) Name() string { return "react/jsx-no-undef" }
17
17
  func (reactJSXNoUndef) Visits() []shimast.Kind {
18
- return []shimast.Kind{shimast.KindJsxElement, shimast.KindJsxSelfClosingElement}
18
+ return []shimast.Kind{shimast.KindJsxElement, shimast.KindJsxSelfClosingElement}
19
19
  }
20
20
 
21
21
  func (reactJSXNoUndef) Check(ctx *Context, node *shimast.Node) {
22
- info := reactJSXElementFromNode(node)
23
- if info.opening == nil {
24
- return
25
- }
26
- tagNode := reactExtrasOpeningTagNameNode(info.opening)
27
- name := identifierText(tagNode)
28
- if name == "" {
29
- return
30
- }
31
- first := name[0]
32
- if first < 'A' || first > 'Z' {
33
- return
34
- }
35
- if reactExtrasFileHasDeclaration(ctx.File.AsNode(), name) {
36
- return
37
- }
38
- ctx.Report(info.opening, "'"+name+"' is not defined.")
22
+ info := reactJSXElementFromNode(node)
23
+ if info.opening == nil {
24
+ return
25
+ }
26
+ tagNode := reactExtrasOpeningTagNameNode(info.opening)
27
+ name := identifierText(tagNode)
28
+ if name == "" {
29
+ return
30
+ }
31
+ first := name[0]
32
+ if first < 'A' || first > 'Z' {
33
+ return
34
+ }
35
+ if reactExtrasFileHasDeclaration(ctx.File.AsNode(), name) {
36
+ return
37
+ }
38
+ ctx.Report(info.opening, "'"+name+"' is not defined.")
39
39
  }
40
40
 
41
41
  // reactDisplayName rejects `React.memo(...)` / `forwardRef(...)`
@@ -46,60 +46,60 @@ func (reactJSXNoUndef) Check(ctx *Context, node *shimast.Node) {
46
46
  // Reference: https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md
47
47
  type reactDisplayName struct{}
48
48
 
49
- func (reactDisplayName) Name() string { return "react/display-name" }
50
- func (reactDisplayName) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindCallExpression} }
49
+ func (reactDisplayName) Name() string { return "react/display-name" }
50
+ func (reactDisplayName) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindCallExpression} }
51
51
 
52
52
  func (reactDisplayName) Check(ctx *Context, node *shimast.Node) {
53
- call := node.AsCallExpression()
54
- if call == nil || call.Arguments == nil || len(call.Arguments.Nodes) == 0 {
55
- return
56
- }
57
- if !reactExtrasIsDisplayNameWrapperCall(call) {
58
- return
59
- }
60
- arg := stripParens(call.Arguments.Nodes[0])
61
- if arg == nil {
62
- return
63
- }
64
- switch arg.Kind {
65
- case shimast.KindArrowFunction:
66
- // arrow functions never carry an own name
67
- case shimast.KindFunctionExpression:
68
- fn := arg.AsFunctionExpression()
69
- if fn != nil && identifierText(fn.Name()) != "" {
70
- return
71
- }
72
- default:
73
- return
74
- }
75
- if reactExtrasCallHasNamedHost(node) {
76
- return
77
- }
78
- ctx.Report(node, "Component definition is missing display name.")
53
+ call := node.AsCallExpression()
54
+ if call == nil || call.Arguments == nil || len(call.Arguments.Nodes) == 0 {
55
+ return
56
+ }
57
+ if !reactExtrasIsDisplayNameWrapperCall(call) {
58
+ return
59
+ }
60
+ arg := stripParens(call.Arguments.Nodes[0])
61
+ if arg == nil {
62
+ return
63
+ }
64
+ switch arg.Kind {
65
+ case shimast.KindArrowFunction:
66
+ // arrow functions never carry an own name
67
+ case shimast.KindFunctionExpression:
68
+ fn := arg.AsFunctionExpression()
69
+ if fn != nil && identifierText(fn.Name()) != "" {
70
+ return
71
+ }
72
+ default:
73
+ return
74
+ }
75
+ if reactExtrasCallHasNamedHost(node) {
76
+ return
77
+ }
78
+ ctx.Report(node, "Component definition is missing display name.")
79
79
  }
80
80
 
81
81
  // reactExtrasOpeningTagNameNode returns the TagName node from either a
82
82
  // JsxOpeningElement (the node on a paired JsxElement) or a
83
83
  // JsxSelfClosingElement directly.
84
84
  func reactExtrasOpeningTagNameNode(opening *shimast.Node) *shimast.Node {
85
- if opening == nil {
86
- return nil
87
- }
88
- switch opening.Kind {
89
- case shimast.KindJsxOpeningElement:
90
- el := opening.AsJsxOpeningElement()
91
- if el == nil {
92
- return nil
93
- }
94
- return el.TagName
95
- case shimast.KindJsxSelfClosingElement:
96
- el := opening.AsJsxSelfClosingElement()
97
- if el == nil {
98
- return nil
99
- }
100
- return el.TagName
101
- }
102
- return nil
85
+ if opening == nil {
86
+ return nil
87
+ }
88
+ switch opening.Kind {
89
+ case shimast.KindJsxOpeningElement:
90
+ el := opening.AsJsxOpeningElement()
91
+ if el == nil {
92
+ return nil
93
+ }
94
+ return el.TagName
95
+ case shimast.KindJsxSelfClosingElement:
96
+ el := opening.AsJsxSelfClosingElement()
97
+ if el == nil {
98
+ return nil
99
+ }
100
+ return el.TagName
101
+ }
102
+ return nil
103
103
  }
104
104
 
105
105
  // reactExtrasFileHasDeclaration reports whether `name` is bound anywhere
@@ -108,71 +108,71 @@ func reactExtrasOpeningTagNameNode(opening *shimast.Node) *shimast.Node {
108
108
  // walk is whole-file because JSX names resolve lexically in the
109
109
  // surrounding closure, not against a single statement list.
110
110
  func reactExtrasFileHasDeclaration(root *shimast.Node, name string) bool {
111
- if root == nil || name == "" {
112
- return false
113
- }
114
- found := false
115
- walkDescendants(root, func(child *shimast.Node) {
116
- if found || child == nil {
117
- return
118
- }
119
- switch child.Kind {
120
- case shimast.KindFunctionDeclaration:
121
- if fn := child.AsFunctionDeclaration(); fn != nil && identifierText(fn.Name()) == name {
122
- found = true
123
- }
124
- case shimast.KindClassDeclaration:
125
- if cl := child.AsClassDeclaration(); cl != nil && identifierText(cl.Name()) == name {
126
- found = true
127
- }
128
- case shimast.KindVariableDeclaration:
129
- if v := child.AsVariableDeclaration(); v != nil && identifierText(v.Name()) == name {
130
- found = true
131
- }
132
- case shimast.KindParameter:
133
- if p := child.AsParameterDeclaration(); p != nil && identifierText(p.Name()) == name {
134
- found = true
135
- }
136
- case shimast.KindEnumDeclaration:
137
- if e := child.AsEnumDeclaration(); e != nil && identifierText(e.Name()) == name {
138
- found = true
139
- }
140
- case shimast.KindImportClause:
141
- clause := child.AsImportClause()
142
- if clause == nil {
143
- return
144
- }
145
- if identifierText(clause.Name()) == name {
146
- found = true
147
- return
148
- }
149
- if clause.NamedBindings != nil {
150
- switch clause.NamedBindings.Kind {
151
- case shimast.KindNamespaceImport:
152
- ns := clause.NamedBindings.AsNamespaceImport()
153
- if ns != nil && identifierText(ns.Name()) == name {
154
- found = true
155
- }
156
- case shimast.KindNamedImports:
157
- named := clause.NamedBindings.AsNamedImports()
158
- if named == nil || named.Elements == nil {
159
- return
160
- }
161
- for _, spec := range named.Elements.Nodes {
162
- s := spec.AsImportSpecifier()
163
- if s == nil {
164
- continue
165
- }
166
- if identifierText(s.Name()) == name {
167
- found = true
168
- return
169
- }
170
- }
171
- }
172
- }
173
- }
174
- })
175
- return found
111
+ if root == nil || name == "" {
112
+ return false
113
+ }
114
+ found := false
115
+ walkDescendants(root, func(child *shimast.Node) {
116
+ if found || child == nil {
117
+ return
118
+ }
119
+ switch child.Kind {
120
+ case shimast.KindFunctionDeclaration:
121
+ if fn := child.AsFunctionDeclaration(); fn != nil && identifierText(fn.Name()) == name {
122
+ found = true
123
+ }
124
+ case shimast.KindClassDeclaration:
125
+ if cl := child.AsClassDeclaration(); cl != nil && identifierText(cl.Name()) == name {
126
+ found = true
127
+ }
128
+ case shimast.KindVariableDeclaration:
129
+ if v := child.AsVariableDeclaration(); v != nil && identifierText(v.Name()) == name {
130
+ found = true
131
+ }
132
+ case shimast.KindParameter:
133
+ if p := child.AsParameterDeclaration(); p != nil && identifierText(p.Name()) == name {
134
+ found = true
135
+ }
136
+ case shimast.KindEnumDeclaration:
137
+ if e := child.AsEnumDeclaration(); e != nil && identifierText(e.Name()) == name {
138
+ found = true
139
+ }
140
+ case shimast.KindImportClause:
141
+ clause := child.AsImportClause()
142
+ if clause == nil {
143
+ return
144
+ }
145
+ if identifierText(clause.Name()) == name {
146
+ found = true
147
+ return
148
+ }
149
+ if clause.NamedBindings != nil {
150
+ switch clause.NamedBindings.Kind {
151
+ case shimast.KindNamespaceImport:
152
+ ns := clause.NamedBindings.AsNamespaceImport()
153
+ if ns != nil && identifierText(ns.Name()) == name {
154
+ found = true
155
+ }
156
+ case shimast.KindNamedImports:
157
+ named := clause.NamedBindings.AsNamedImports()
158
+ if named == nil || named.Elements == nil {
159
+ return
160
+ }
161
+ for _, spec := range named.Elements.Nodes {
162
+ s := spec.AsImportSpecifier()
163
+ if s == nil {
164
+ continue
165
+ }
166
+ if identifierText(s.Name()) == name {
167
+ found = true
168
+ return
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }
174
+ })
175
+ return found
176
176
  }
177
177
 
178
178
  // reactExtrasIsDisplayNameWrapperCall reports whether the call
@@ -180,15 +180,15 @@ func reactExtrasFileHasDeclaration(root *shimast.Node, name string) bool {
180
180
  // `forwardRef` invocation — the wrappers whose inner anonymous function
181
181
  // loses its name unless `displayName` is set explicitly.
182
182
  func reactExtrasIsDisplayNameWrapperCall(call *shimast.CallExpression) bool {
183
- if call == nil {
184
- return false
185
- }
186
- name := callCalleeName(call)
187
- if name == "memo" || name == "forwardRef" {
188
- return true
189
- }
190
- _, prop, ok := reactPropertyAccessParts(call.Expression)
191
- return ok && (prop == "memo" || prop == "forwardRef")
183
+ if call == nil {
184
+ return false
185
+ }
186
+ name := callCalleeName(call)
187
+ if name == "memo" || name == "forwardRef" {
188
+ return true
189
+ }
190
+ _, prop, ok := reactPropertyAccessParts(call.Expression)
191
+ return ok && (prop == "memo" || prop == "forwardRef")
192
192
  }
193
193
 
194
194
  // reactExtrasCallHasNamedHost reports whether the call is initializing
@@ -198,30 +198,30 @@ func reactExtrasIsDisplayNameWrapperCall(call *shimast.CallExpression) bool {
198
198
  // `export default memo(...)`. In those shapes the wrapper still
199
199
  // produces a debuggable component, so the rule abstains.
200
200
  func reactExtrasCallHasNamedHost(node *shimast.Node) bool {
201
- parent := node.Parent
202
- for parent != nil && parent.Kind == shimast.KindParenthesizedExpression {
203
- parent = parent.Parent
204
- }
205
- if parent == nil {
206
- return false
207
- }
208
- switch parent.Kind {
209
- case shimast.KindVariableDeclaration:
210
- v := parent.AsVariableDeclaration()
211
- if v != nil && identifierText(v.Name()) != "" {
212
- return true
213
- }
214
- case shimast.KindPropertyAssignment:
215
- return true
216
- case shimast.KindPropertyDeclaration:
217
- return true
218
- case shimast.KindExportAssignment:
219
- return true
220
- }
221
- return false
201
+ parent := node.Parent
202
+ for parent != nil && parent.Kind == shimast.KindParenthesizedExpression {
203
+ parent = parent.Parent
204
+ }
205
+ if parent == nil {
206
+ return false
207
+ }
208
+ switch parent.Kind {
209
+ case shimast.KindVariableDeclaration:
210
+ v := parent.AsVariableDeclaration()
211
+ if v != nil && identifierText(v.Name()) != "" {
212
+ return true
213
+ }
214
+ case shimast.KindPropertyAssignment:
215
+ return true
216
+ case shimast.KindPropertyDeclaration:
217
+ return true
218
+ case shimast.KindExportAssignment:
219
+ return true
220
+ }
221
+ return false
222
222
  }
223
223
 
224
224
  func init() {
225
- Register(reactJSXNoUndef{})
226
- Register(reactDisplayName{})
225
+ Register(reactJSXNoUndef{})
226
+ Register(reactDisplayName{})
227
227
  }
@@ -431,7 +431,7 @@ func isReactComponentName(name string) bool {
431
431
  if name == "" {
432
432
  return false
433
433
  }
434
- first, _ := reactHooksFirstRune(name)
434
+ first, _ := reactHooksFirstRune(name)
435
435
  return unicode.IsUpper(first)
436
436
  }
437
437
 
@@ -439,7 +439,7 @@ func isReactHookName(name string) bool {
439
439
  if len(name) < 4 || !strings.HasPrefix(name, "use") {
440
440
  return false
441
441
  }
442
- r, _ := reactHooksFirstRune(name[3:])
442
+ r, _ := reactHooksFirstRune(name[3:])
443
443
  return unicode.IsUpper(r) || unicode.IsDigit(r)
444
444
  }
445
445