@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
@@ -16,8 +16,8 @@
16
16
  package linthost
17
17
 
18
18
  import (
19
- shimast "github.com/microsoft/typescript-go/shim/ast"
20
- shimchecker "github.com/microsoft/typescript-go/shim/checker"
19
+ shimast "github.com/microsoft/typescript-go/shim/ast"
20
+ shimchecker "github.com/microsoft/typescript-go/shim/checker"
21
21
  )
22
22
 
23
23
  // requireAwait reports `async` function bodies that contain no `await`
@@ -34,33 +34,33 @@ type requireAwait struct{}
34
34
 
35
35
  func (requireAwait) Name() string { return "typescript/require-await" }
36
36
  func (requireAwait) Visits() []shimast.Kind {
37
- return []shimast.Kind{
38
- shimast.KindFunctionDeclaration,
39
- shimast.KindFunctionExpression,
40
- shimast.KindArrowFunction,
41
- shimast.KindMethodDeclaration,
42
- }
37
+ return []shimast.Kind{
38
+ shimast.KindFunctionDeclaration,
39
+ shimast.KindFunctionExpression,
40
+ shimast.KindArrowFunction,
41
+ shimast.KindMethodDeclaration,
42
+ }
43
43
  }
44
44
  func (requireAwait) Check(ctx *Context, node *shimast.Node) {
45
- if !hasAsyncModifier(node) {
46
- return
47
- }
48
- if requireAwaitIsAsyncGenerator(node) {
49
- return
50
- }
51
- body := node.Body()
52
- if body == nil {
53
- return
54
- }
55
- if requireAwaitBodyHasAwait(body) {
56
- return
57
- }
58
- startPos := keywordStart(ctx.File, node, "async")
59
- if startPos < 0 {
60
- ctx.Report(node, "Async function has no `await` expression.")
61
- return
62
- }
63
- ctx.ReportRange(startPos, startPos+len("async"), "Async function has no `await` expression.")
45
+ if !hasAsyncModifier(node) {
46
+ return
47
+ }
48
+ if requireAwaitIsAsyncGenerator(node) {
49
+ return
50
+ }
51
+ body := node.Body()
52
+ if body == nil {
53
+ return
54
+ }
55
+ if requireAwaitBodyHasAwait(body) {
56
+ return
57
+ }
58
+ startPos := keywordStart(ctx.File, node, "async")
59
+ if startPos < 0 {
60
+ ctx.Report(node, "Async function has no `await` expression.")
61
+ return
62
+ }
63
+ ctx.ReportRange(startPos, startPos+len("async"), "Async function has no `await` expression.")
64
64
  }
65
65
 
66
66
  // requireAwaitIsAsyncGenerator reports whether node is `async function*`,
@@ -69,18 +69,18 @@ func (requireAwait) Check(ctx *Context, node *shimast.Node) {
69
69
  // expressions express the suspend points and the rule would otherwise
70
70
  // fire on every `async function*` that does not also `await`.
71
71
  func requireAwaitIsAsyncGenerator(node *shimast.Node) bool {
72
- switch node.Kind {
73
- case shimast.KindFunctionDeclaration:
74
- decl := node.AsFunctionDeclaration()
75
- return decl != nil && decl.AsteriskToken != nil
76
- case shimast.KindFunctionExpression:
77
- expr := node.AsFunctionExpression()
78
- return expr != nil && expr.AsteriskToken != nil
79
- case shimast.KindMethodDeclaration:
80
- decl := node.AsMethodDeclaration()
81
- return decl != nil && decl.AsteriskToken != nil
82
- }
83
- return false
72
+ switch node.Kind {
73
+ case shimast.KindFunctionDeclaration:
74
+ decl := node.AsFunctionDeclaration()
75
+ return decl != nil && decl.AsteriskToken != nil
76
+ case shimast.KindFunctionExpression:
77
+ expr := node.AsFunctionExpression()
78
+ return expr != nil && expr.AsteriskToken != nil
79
+ case shimast.KindMethodDeclaration:
80
+ decl := node.AsMethodDeclaration()
81
+ return decl != nil && decl.AsteriskToken != nil
82
+ }
83
+ return false
84
84
  }
85
85
 
86
86
  // requireAwaitBodyHasAwait reports whether body (or any descendant that
@@ -88,26 +88,26 @@ func requireAwaitIsAsyncGenerator(node *shimast.Node) bool {
88
88
  // expression. The walker mirrors `walkFunctionBody` in rules_promise.go
89
89
  // but bails out early once an `await` is found.
90
90
  func requireAwaitBodyHasAwait(body *shimast.Node) bool {
91
- found := false
92
- var walk func(*shimast.Node)
93
- walk = func(n *shimast.Node) {
94
- if found || n == nil {
95
- return
96
- }
97
- if n != body && isFunctionLikeKind(n) {
98
- return
99
- }
100
- if n.Kind == shimast.KindAwaitExpression {
101
- found = true
102
- return
103
- }
104
- n.ForEachChild(func(child *shimast.Node) bool {
105
- walk(child)
106
- return false
107
- })
108
- }
109
- walk(body)
110
- return found
91
+ found := false
92
+ var walk func(*shimast.Node)
93
+ walk = func(n *shimast.Node) {
94
+ if found || n == nil {
95
+ return
96
+ }
97
+ if n != body && isFunctionLikeKind(n) {
98
+ return
99
+ }
100
+ if n.Kind == shimast.KindAwaitExpression {
101
+ found = true
102
+ return
103
+ }
104
+ n.ForEachChild(func(child *shimast.Node) bool {
105
+ walk(child)
106
+ return false
107
+ })
108
+ }
109
+ walk(body)
110
+ return found
111
111
  }
112
112
 
113
113
  // noMisusedPromises reports Promises supplied where a boolean or a
@@ -130,66 +130,66 @@ type noMisusedPromises struct{}
130
130
 
131
131
  func (noMisusedPromises) Name() string { return "typescript/no-misused-promises" }
132
132
  func (noMisusedPromises) NeedsTypeChecker() bool {
133
- return true
133
+ return true
134
134
  }
135
135
  func (noMisusedPromises) Visits() []shimast.Kind {
136
- return []shimast.Kind{
137
- shimast.KindIfStatement,
138
- shimast.KindWhileStatement,
139
- shimast.KindDoStatement,
140
- shimast.KindForStatement,
141
- shimast.KindConditionalExpression,
142
- shimast.KindPrefixUnaryExpression,
143
- shimast.KindBinaryExpression,
144
- shimast.KindCallExpression,
145
- }
136
+ return []shimast.Kind{
137
+ shimast.KindIfStatement,
138
+ shimast.KindWhileStatement,
139
+ shimast.KindDoStatement,
140
+ shimast.KindForStatement,
141
+ shimast.KindConditionalExpression,
142
+ shimast.KindPrefixUnaryExpression,
143
+ shimast.KindBinaryExpression,
144
+ shimast.KindCallExpression,
145
+ }
146
146
  }
147
147
  func (noMisusedPromises) Check(ctx *Context, node *shimast.Node) {
148
- if ctx.Checker == nil {
149
- return
150
- }
151
- switch node.Kind {
152
- case shimast.KindIfStatement:
153
- if stmt := node.AsIfStatement(); stmt != nil {
154
- noMisusedPromisesReportConditional(ctx, stmt.Expression)
155
- }
156
- case shimast.KindWhileStatement:
157
- if stmt := node.AsWhileStatement(); stmt != nil {
158
- noMisusedPromisesReportConditional(ctx, stmt.Expression)
159
- }
160
- case shimast.KindDoStatement:
161
- if stmt := node.AsDoStatement(); stmt != nil {
162
- noMisusedPromisesReportConditional(ctx, stmt.Expression)
163
- }
164
- case shimast.KindForStatement:
165
- if stmt := node.AsForStatement(); stmt != nil {
166
- noMisusedPromisesReportConditional(ctx, stmt.Condition)
167
- }
168
- case shimast.KindConditionalExpression:
169
- if expr := node.AsConditionalExpression(); expr != nil {
170
- noMisusedPromisesReportConditional(ctx, expr.Condition)
171
- }
172
- case shimast.KindPrefixUnaryExpression:
173
- expr := node.AsPrefixUnaryExpression()
174
- if expr != nil && expr.Operator == shimast.KindExclamationToken {
175
- noMisusedPromisesReportConditional(ctx, expr.Operand)
176
- }
177
- case shimast.KindBinaryExpression:
178
- bin := node.AsBinaryExpression()
179
- if bin == nil || bin.OperatorToken == nil {
180
- return
181
- }
182
- switch bin.OperatorToken.Kind {
183
- case shimast.KindAmpersandAmpersandToken,
184
- shimast.KindBarBarToken,
185
- shimast.KindQuestionQuestionToken:
186
- noMisusedPromisesReportConditional(ctx, bin.Left)
187
- }
188
- case shimast.KindCallExpression:
189
- if call := node.AsCallExpression(); call != nil {
190
- noMisusedPromisesCheckVoidCallback(ctx, call)
191
- }
192
- }
148
+ if ctx.Checker == nil {
149
+ return
150
+ }
151
+ switch node.Kind {
152
+ case shimast.KindIfStatement:
153
+ if stmt := node.AsIfStatement(); stmt != nil {
154
+ noMisusedPromisesReportConditional(ctx, stmt.Expression)
155
+ }
156
+ case shimast.KindWhileStatement:
157
+ if stmt := node.AsWhileStatement(); stmt != nil {
158
+ noMisusedPromisesReportConditional(ctx, stmt.Expression)
159
+ }
160
+ case shimast.KindDoStatement:
161
+ if stmt := node.AsDoStatement(); stmt != nil {
162
+ noMisusedPromisesReportConditional(ctx, stmt.Expression)
163
+ }
164
+ case shimast.KindForStatement:
165
+ if stmt := node.AsForStatement(); stmt != nil {
166
+ noMisusedPromisesReportConditional(ctx, stmt.Condition)
167
+ }
168
+ case shimast.KindConditionalExpression:
169
+ if expr := node.AsConditionalExpression(); expr != nil {
170
+ noMisusedPromisesReportConditional(ctx, expr.Condition)
171
+ }
172
+ case shimast.KindPrefixUnaryExpression:
173
+ expr := node.AsPrefixUnaryExpression()
174
+ if expr != nil && expr.Operator == shimast.KindExclamationToken {
175
+ noMisusedPromisesReportConditional(ctx, expr.Operand)
176
+ }
177
+ case shimast.KindBinaryExpression:
178
+ bin := node.AsBinaryExpression()
179
+ if bin == nil || bin.OperatorToken == nil {
180
+ return
181
+ }
182
+ switch bin.OperatorToken.Kind {
183
+ case shimast.KindAmpersandAmpersandToken,
184
+ shimast.KindBarBarToken,
185
+ shimast.KindQuestionQuestionToken:
186
+ noMisusedPromisesReportConditional(ctx, bin.Left)
187
+ }
188
+ case shimast.KindCallExpression:
189
+ if call := node.AsCallExpression(); call != nil {
190
+ noMisusedPromisesCheckVoidCallback(ctx, call)
191
+ }
192
+ }
193
193
  }
194
194
 
195
195
  // noMisusedPromisesReportConditional reports expr if it carries a
@@ -198,19 +198,19 @@ func (noMisusedPromises) Check(ctx *Context, node *shimast.Node) {
198
198
  // flagged because they propagate from generic helpers and would
199
199
  // produce overwhelming false-positive volume in real codebases.
200
200
  func noMisusedPromisesReportConditional(ctx *Context, expr *shimast.Node) {
201
- target := stripParens(expr)
202
- if target == nil {
203
- return
204
- }
205
- switch target.Kind {
206
- case shimast.KindAwaitExpression, shimast.KindVoidExpression:
207
- return
208
- }
209
- t := ctx.Checker.GetTypeAtLocation(target)
210
- if t == nil || !isPromiseTypedExpression(ctx.Checker, t) {
211
- return
212
- }
213
- ctx.Report(target, "Expected non-Promise value in a boolean conditional position; did you forget `await`?")
201
+ target := stripParens(expr)
202
+ if target == nil {
203
+ return
204
+ }
205
+ switch target.Kind {
206
+ case shimast.KindAwaitExpression, shimast.KindVoidExpression:
207
+ return
208
+ }
209
+ t := ctx.Checker.GetTypeAtLocation(target)
210
+ if t == nil || !isPromiseTypedExpression(ctx.Checker, t) {
211
+ return
212
+ }
213
+ ctx.Report(target, "Expected non-Promise value in a boolean conditional position; did you forget `await`?")
214
214
  }
215
215
 
216
216
  // noMisusedPromisesCheckVoidCallback fires when an async callback is
@@ -221,21 +221,21 @@ func noMisusedPromisesReportConditional(ctx *Context, expr *shimast.Node) {
221
221
  // detection (e.g., JSX event handlers, user methods with `void` in
222
222
  // their signature) is deferred.
223
223
  func noMisusedPromisesCheckVoidCallback(ctx *Context, call *shimast.CallExpression) {
224
- if call == nil || call.Arguments == nil || len(call.Arguments.Nodes) == 0 {
225
- return
226
- }
227
- _, method, ok := promisePropertyAccessParts(call.Expression)
228
- if !ok || method != "forEach" {
229
- return
230
- }
231
- callback := stripParens(call.Arguments.Nodes[0])
232
- if callback == nil || !isFunctionLikeKind(callback) {
233
- return
234
- }
235
- if !hasAsyncModifier(callback) {
236
- return
237
- }
238
- ctx.Report(callback, "Async callback passed to forEach — the returned Promise will be discarded; use `for ... of` instead.")
224
+ if call == nil || call.Arguments == nil || len(call.Arguments.Nodes) == 0 {
225
+ return
226
+ }
227
+ _, method, ok := promisePropertyAccessParts(call.Expression)
228
+ if !ok || method != "forEach" {
229
+ return
230
+ }
231
+ callback := stripParens(call.Arguments.Nodes[0])
232
+ if callback == nil || !isFunctionLikeKind(callback) {
233
+ return
234
+ }
235
+ if !hasAsyncModifier(callback) {
236
+ return
237
+ }
238
+ ctx.Report(callback, "Async callback passed to forEach — the returned Promise will be discarded; use `for ... of` instead.")
239
239
  }
240
240
 
241
241
  // useUnknownInCatchCallbackVariable requires the parameter of `.catch`
@@ -252,66 +252,66 @@ func noMisusedPromisesCheckVoidCallback(ctx *Context, call *shimast.CallExpressi
252
252
  type useUnknownInCatchCallbackVariable struct{}
253
253
 
254
254
  func (useUnknownInCatchCallbackVariable) Name() string {
255
- return "typescript/use-unknown-in-catch-callback-variable"
255
+ return "typescript/use-unknown-in-catch-callback-variable"
256
256
  }
257
257
  func (useUnknownInCatchCallbackVariable) NeedsTypeChecker() bool {
258
- return true
258
+ return true
259
259
  }
260
260
  func (useUnknownInCatchCallbackVariable) Visits() []shimast.Kind {
261
- return []shimast.Kind{shimast.KindCallExpression}
261
+ return []shimast.Kind{shimast.KindCallExpression}
262
262
  }
263
263
  func (useUnknownInCatchCallbackVariable) Check(ctx *Context, node *shimast.Node) {
264
- if ctx.Checker == nil {
265
- return
266
- }
267
- call := node.AsCallExpression()
268
- if call == nil || call.Expression == nil || call.Arguments == nil {
269
- return
270
- }
271
- receiver, method, ok := promisePropertyAccessParts(call.Expression)
272
- if !ok || (method != "catch" && method != "then") {
273
- return
274
- }
275
- args := call.Arguments.Nodes
276
- var callback *shimast.Node
277
- switch method {
278
- case "catch":
279
- if len(args) < 1 {
280
- return
281
- }
282
- callback = stripParens(args[0])
283
- case "then":
284
- if len(args) < 2 {
285
- return
286
- }
287
- callback = stripParens(args[1])
288
- }
289
- if callback == nil || !isFunctionLikeKind(callback) {
290
- return
291
- }
292
- if receiver == nil {
293
- return
294
- }
295
- t := ctx.Checker.GetTypeAtLocation(receiver)
296
- if t == nil || !isPromiseTypedExpression(ctx.Checker, t) {
297
- return
298
- }
299
- params := callback.Parameters()
300
- if len(params) == 0 {
301
- return
302
- }
303
- param := params[0].AsParameterDeclaration()
304
- if param == nil {
305
- return
306
- }
307
- if param.Type == nil {
308
- ctx.Report(params[0], "Catch callback parameter should be explicitly typed `unknown`.")
309
- return
310
- }
311
- annotationText := nodeText(ctx.File, param.Type)
312
- if annotationText != "unknown" {
313
- ctx.Report(param.Type, "Catch callback parameter must be typed `unknown`, not `"+annotationText+"`.")
314
- }
264
+ if ctx.Checker == nil {
265
+ return
266
+ }
267
+ call := node.AsCallExpression()
268
+ if call == nil || call.Expression == nil || call.Arguments == nil {
269
+ return
270
+ }
271
+ receiver, method, ok := promisePropertyAccessParts(call.Expression)
272
+ if !ok || (method != "catch" && method != "then") {
273
+ return
274
+ }
275
+ args := call.Arguments.Nodes
276
+ var callback *shimast.Node
277
+ switch method {
278
+ case "catch":
279
+ if len(args) < 1 {
280
+ return
281
+ }
282
+ callback = stripParens(args[0])
283
+ case "then":
284
+ if len(args) < 2 {
285
+ return
286
+ }
287
+ callback = stripParens(args[1])
288
+ }
289
+ if callback == nil || !isFunctionLikeKind(callback) {
290
+ return
291
+ }
292
+ if receiver == nil {
293
+ return
294
+ }
295
+ t := ctx.Checker.GetTypeAtLocation(receiver)
296
+ if t == nil || !isPromiseTypedExpression(ctx.Checker, t) {
297
+ return
298
+ }
299
+ params := callback.Parameters()
300
+ if len(params) == 0 {
301
+ return
302
+ }
303
+ param := params[0].AsParameterDeclaration()
304
+ if param == nil {
305
+ return
306
+ }
307
+ if param.Type == nil {
308
+ ctx.Report(params[0], "Catch callback parameter should be explicitly typed `unknown`.")
309
+ return
310
+ }
311
+ annotationText := nodeText(ctx.File, param.Type)
312
+ if annotationText != "unknown" {
313
+ ctx.Report(param.Type, "Catch callback parameter must be typed `unknown`, not `"+annotationText+"`.")
314
+ }
315
315
  }
316
316
 
317
317
  // onlyThrowError reports `throw` of a value that is statically known
@@ -331,30 +331,30 @@ type onlyThrowError struct{}
331
331
 
332
332
  func (onlyThrowError) Name() string { return "typescript/only-throw-error" }
333
333
  func (onlyThrowError) NeedsTypeChecker() bool {
334
- return true
334
+ return true
335
335
  }
336
336
  func (onlyThrowError) Visits() []shimast.Kind {
337
- return []shimast.Kind{shimast.KindThrowStatement}
337
+ return []shimast.Kind{shimast.KindThrowStatement}
338
338
  }
339
339
  func (onlyThrowError) Check(ctx *Context, node *shimast.Node) {
340
- if ctx.Checker == nil {
341
- return
342
- }
343
- stmt := node.AsThrowStatement()
344
- if stmt == nil || stmt.Expression == nil {
345
- return
346
- }
347
- expr := stripParens(stmt.Expression)
348
- if expr == nil {
349
- return
350
- }
351
- t := ctx.Checker.GetTypeAtLocation(expr)
352
- if t == nil {
353
- return
354
- }
355
- if onlyThrowErrorIsPrimitive(ctx.Checker, t) {
356
- ctx.Report(node, "Throw an Error object instead of a non-Error value.")
357
- }
340
+ if ctx.Checker == nil {
341
+ return
342
+ }
343
+ stmt := node.AsThrowStatement()
344
+ if stmt == nil || stmt.Expression == nil {
345
+ return
346
+ }
347
+ expr := stripParens(stmt.Expression)
348
+ if expr == nil {
349
+ return
350
+ }
351
+ t := ctx.Checker.GetTypeAtLocation(expr)
352
+ if t == nil {
353
+ return
354
+ }
355
+ if onlyThrowErrorIsPrimitive(ctx.Checker, t) {
356
+ ctx.Report(node, "Throw an Error object instead of a non-Error value.")
357
+ }
358
358
  }
359
359
 
360
360
  // onlyThrowErrorIsPrimitive returns true when t is a primitive type
@@ -363,37 +363,37 @@ func (onlyThrowError) Check(ctx *Context, node *shimast.Node) {
363
363
  // intersection types recurse — `string | number` is a primitive
364
364
  // throw even though it is a composite type.
365
365
  func onlyThrowErrorIsPrimitive(checker *shimchecker.Checker, t *shimchecker.Type) bool {
366
- if checker == nil || t == nil {
367
- return false
368
- }
369
- flags := t.Flags()
370
- if flags&(shimchecker.TypeFlagsAny|shimchecker.TypeFlagsUnknown|shimchecker.TypeFlagsNever) != 0 {
371
- return false
372
- }
373
- if flags&(shimchecker.TypeFlagsUnion|shimchecker.TypeFlagsIntersection) != 0 {
374
- for _, part := range t.Types() {
375
- if part == nil {
376
- continue
377
- }
378
- if onlyThrowErrorIsPrimitive(checker, part) {
379
- return true
380
- }
381
- }
382
- return false
383
- }
384
- const primitiveMask = shimchecker.TypeFlagsStringLike |
385
- shimchecker.TypeFlagsNumberLike |
386
- shimchecker.TypeFlagsBigIntLike |
387
- shimchecker.TypeFlagsBooleanLike |
388
- shimchecker.TypeFlagsVoid |
389
- shimchecker.TypeFlagsUndefined |
390
- shimchecker.TypeFlagsNull
391
- return flags&primitiveMask != 0
366
+ if checker == nil || t == nil {
367
+ return false
368
+ }
369
+ flags := t.Flags()
370
+ if flags&(shimchecker.TypeFlagsAny|shimchecker.TypeFlagsUnknown|shimchecker.TypeFlagsNever) != 0 {
371
+ return false
372
+ }
373
+ if flags&(shimchecker.TypeFlagsUnion|shimchecker.TypeFlagsIntersection) != 0 {
374
+ for _, part := range t.Types() {
375
+ if part == nil {
376
+ continue
377
+ }
378
+ if onlyThrowErrorIsPrimitive(checker, part) {
379
+ return true
380
+ }
381
+ }
382
+ return false
383
+ }
384
+ const primitiveMask = shimchecker.TypeFlagsStringLike |
385
+ shimchecker.TypeFlagsNumberLike |
386
+ shimchecker.TypeFlagsBigIntLike |
387
+ shimchecker.TypeFlagsBooleanLike |
388
+ shimchecker.TypeFlagsVoid |
389
+ shimchecker.TypeFlagsUndefined |
390
+ shimchecker.TypeFlagsNull
391
+ return flags&primitiveMask != 0
392
392
  }
393
393
 
394
394
  func init() {
395
- Register(requireAwait{})
396
- Register(noMisusedPromises{})
397
- Register(useUnknownInCatchCallbackVariable{})
398
- Register(onlyThrowError{})
395
+ Register(requireAwait{})
396
+ Register(noMisusedPromises{})
397
+ Register(useUnknownInCatchCallbackVariable{})
398
+ Register(onlyThrowError{})
399
399
  }