@ttsc/lint 0.14.0-dev.20260529.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +21 -23
  2. package/lib/defaultFormat.d.ts +10 -6
  3. package/lib/defaultFormat.js +10 -6
  4. package/lib/defaultFormat.js.map +1 -1
  5. package/lib/structures/ITtscLintConfig.d.ts +5 -5
  6. package/lib/structures/TtscLintRuleSetting.d.ts +19 -19
  7. package/lib/structures/{ITtscLintFormat.d.ts → format/ITtscLintFormat.d.ts} +45 -70
  8. package/lib/structures/format/ITtscLintFormat.js.map +1 -0
  9. package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +15 -0
  10. package/lib/structures/format/ITtscLintFormatJsDoc.js +3 -0
  11. package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
  12. package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
  13. package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
  14. package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
  15. package/lib/structures/format/index.d.ts +3 -0
  16. package/lib/structures/format/index.js +20 -0
  17. package/lib/structures/format/index.js.map +1 -0
  18. package/lib/structures/index.d.ts +1 -1
  19. package/lib/structures/index.js +1 -1
  20. package/lib/structures/index.js.map +1 -1
  21. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +18 -27
  22. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +4 -5
  23. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -1
  24. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +29 -33
  25. package/lib/structures/rules/ITtscLintContributorRules.d.ts +6 -7
  26. package/lib/structures/rules/ITtscLintCoreRules.d.ts +380 -408
  27. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +5 -5
  28. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +2 -2
  29. package/lib/structures/rules/ITtscLintCypressRules.d.ts +34 -38
  30. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +21 -24
  31. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +2 -2
  32. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +51 -56
  33. package/lib/structures/rules/ITtscLintJestRules.d.ts +63 -74
  34. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +47 -54
  35. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +94 -102
  36. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +50 -55
  37. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +104 -122
  38. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +62 -71
  39. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +4 -4
  40. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +17 -19
  41. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +8 -10
  42. package/lib/structures/rules/ITtscLintReactRuleOptions.js +1 -2
  43. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -1
  44. package/lib/structures/rules/ITtscLintReactRules.d.ts +91 -104
  45. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +46 -54
  46. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +7 -8
  47. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +45 -52
  48. package/lib/structures/rules/ITtscLintSolidRules.d.ts +53 -56
  49. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +3 -4
  50. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +60 -69
  51. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +31 -37
  52. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +2 -3
  53. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +102 -119
  54. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +460 -518
  55. package/lib/structures/rules/ITtscLintVitestRules.d.ts +43 -51
  56. package/linthost/config.go +89 -72
  57. package/linthost/config_format.go +265 -99
  58. package/linthost/directives.go +5 -1
  59. package/linthost/display_width.go +72 -0
  60. package/linthost/fix.go +26 -1
  61. package/linthost/format.go +222 -25
  62. package/linthost/format_editor_settings.go +262 -0
  63. package/linthost/lsp.go +8 -4
  64. package/linthost/print_dispatch.go +3 -0
  65. package/linthost/print_doc.go +13 -0
  66. package/linthost/print_engine.go +68 -11
  67. package/linthost/print_nodes_array.go +108 -5
  68. package/linthost/print_nodes_call.go +515 -74
  69. package/linthost/print_nodes_function.go +25 -0
  70. package/linthost/print_nodes_imports.go +47 -14
  71. package/linthost/print_nodes_list.go +191 -8
  72. package/linthost/print_nodes_object.go +12 -6
  73. package/linthost/print_nodes_ternary.go +106 -0
  74. package/linthost/rules_boundaries.go +400 -400
  75. package/linthost/rules_camelcase.go +81 -81
  76. package/linthost/rules_complexity.go +52 -51
  77. package/linthost/rules_consistent_return.go +81 -81
  78. package/linthost/rules_core_extra.go +472 -472
  79. package/linthost/rules_curly.go +43 -43
  80. package/linthost/rules_default_case.go +15 -15
  81. package/linthost/rules_default_case_last.go +22 -22
  82. package/linthost/rules_format_arrow_parens.go +167 -0
  83. package/linthost/rules_format_bracket_spacing.go +117 -0
  84. package/linthost/rules_format_clause_join.go +172 -0
  85. package/linthost/rules_format_declaration_header.go +664 -0
  86. package/linthost/rules_format_indent.go +616 -0
  87. package/linthost/rules_format_jsdoc.go +4 -4
  88. package/linthost/rules_format_orphan_semi.go +106 -0
  89. package/linthost/rules_format_parameter_properties.go +175 -0
  90. package/linthost/rules_format_print_width.go +185 -69
  91. package/linthost/rules_format_quote_props.go +169 -0
  92. package/linthost/rules_format_quotes.go +75 -29
  93. package/linthost/rules_format_semi.go +185 -10
  94. package/linthost/rules_format_sort_imports.go +456 -121
  95. package/linthost/rules_format_statement_split.go +368 -0
  96. package/linthost/rules_format_ternary_nullish_parens.go +77 -0
  97. package/linthost/rules_format_trailing_comma.go +21 -2
  98. package/linthost/rules_format_whitespace.go +336 -0
  99. package/linthost/rules_functional.go +688 -688
  100. package/linthost/rules_gap.go +146 -11
  101. package/linthost/rules_grouped_accessor_pairs.go +60 -60
  102. package/linthost/rules_guard_for_in.go +122 -122
  103. package/linthost/rules_id_length.go +44 -44
  104. package/linthost/rules_imports.go +11 -3
  105. package/linthost/rules_init_declarations.go +25 -25
  106. package/linthost/rules_jsx_a11y.go +844 -844
  107. package/linthost/rules_max_classes_per_file.go +24 -24
  108. package/linthost/rules_max_depth.go +43 -43
  109. package/linthost/rules_max_lines.go +53 -53
  110. package/linthost/rules_max_lines_per_function.go +28 -28
  111. package/linthost/rules_max_nested_callbacks.go +26 -26
  112. package/linthost/rules_max_params.go +20 -20
  113. package/linthost/rules_max_statements.go +29 -29
  114. package/linthost/rules_nextjs.go +5 -5
  115. package/linthost/rules_no_else_return.go +38 -38
  116. package/linthost/rules_no_empty_named_blocks.go +45 -45
  117. package/linthost/rules_no_import_assign.go +96 -96
  118. package/linthost/rules_no_invalid_this.go +19 -19
  119. package/linthost/rules_no_loop_func.go +43 -43
  120. package/linthost/rules_no_magic_numbers.go +60 -60
  121. package/linthost/rules_no_mixed_operators.go +44 -44
  122. package/linthost/rules_no_param_reassign.go +64 -64
  123. package/linthost/rules_no_restricted_imports.go +45 -45
  124. package/linthost/rules_no_restricted_syntax.go +17 -17
  125. package/linthost/rules_no_shadow.go +112 -112
  126. package/linthost/rules_no_unreachable.go +36 -36
  127. package/linthost/rules_no_useless_assignment.go +79 -79
  128. package/linthost/rules_no_useless_constructor.go +167 -167
  129. package/linthost/rules_no_useless_return.go +28 -28
  130. package/linthost/rules_prefer_arrow_callback.go +74 -74
  131. package/linthost/rules_prefer_destructuring.go +61 -61
  132. package/linthost/rules_prefer_named_capture_group.go +87 -87
  133. package/linthost/rules_prefer_rest_params.go +61 -61
  134. package/linthost/rules_promise.go +800 -800
  135. package/linthost/rules_react.go +600 -600
  136. package/linthost/rules_react_extras.go +162 -162
  137. package/linthost/rules_react_hooks.go +2 -2
  138. package/linthost/rules_react_perf.go +231 -231
  139. package/linthost/rules_regexp.go +293 -293
  140. package/linthost/rules_security.go +613 -613
  141. package/linthost/rules_sort_imports.go +37 -37
  142. package/linthost/rules_sort_keys.go +88 -88
  143. package/linthost/rules_suggestions.go +13 -0
  144. package/linthost/rules_ts.go +2 -2
  145. package/linthost/rules_ts_async.go +247 -247
  146. package/linthost/rules_ts_class_literal_property_style.go +64 -64
  147. package/linthost/rules_ts_consistent_type_exports.go +209 -209
  148. package/linthost/rules_ts_explicit_function_return_type.go +35 -35
  149. package/linthost/rules_ts_extra.go +6 -2
  150. package/linthost/rules_ts_no_base_to_string.go +140 -140
  151. package/linthost/rules_ts_no_confusing_void.go +28 -28
  152. package/linthost/rules_ts_no_deprecated.go +110 -110
  153. package/linthost/rules_ts_no_for_in_array.go +45 -45
  154. package/linthost/rules_ts_no_magic_numbers.go +67 -67
  155. package/linthost/rules_ts_no_meaningless_void_operator.go +44 -44
  156. package/linthost/rules_ts_no_misused_spread.go +64 -64
  157. package/linthost/rules_ts_no_redundant_type_constituents.go +72 -72
  158. package/linthost/rules_ts_no_restricted_types.go +28 -28
  159. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +87 -87
  160. package/linthost/rules_ts_no_unnecessary_condition.go +184 -184
  161. package/linthost/rules_ts_no_unnecessary_qualifier.go +72 -72
  162. package/linthost/rules_ts_no_unnecessary_template_expression.go +120 -120
  163. package/linthost/rules_ts_no_unnecessary_type_arguments.go +171 -171
  164. package/linthost/rules_ts_no_unnecessary_type_assertion.go +90 -90
  165. package/linthost/rules_ts_no_unsafe_argument.go +50 -50
  166. package/linthost/rules_ts_no_unsafe_assignment.go +60 -60
  167. package/linthost/rules_ts_no_unsafe_call.go +40 -40
  168. package/linthost/rules_ts_no_unsafe_enum_comparison.go +147 -147
  169. package/linthost/rules_ts_no_unsafe_member_access.go +29 -29
  170. package/linthost/rules_ts_no_unsafe_return.go +64 -64
  171. package/linthost/rules_ts_no_unsafe_unary_minus.go +42 -42
  172. package/linthost/rules_ts_no_useless_constructor.go +20 -20
  173. package/linthost/rules_ts_non_nullable_type_assertion_style.go +60 -60
  174. package/linthost/rules_ts_parameter_properties.go +10 -10
  175. package/linthost/rules_ts_prefer_find.go +116 -116
  176. package/linthost/rules_ts_prefer_includes.go +173 -173
  177. package/linthost/rules_ts_prefer_nullish_coalescing.go +54 -54
  178. package/linthost/rules_ts_prefer_optional_chain.go +156 -156
  179. package/linthost/rules_ts_prefer_promise_reject_errors.go +104 -104
  180. package/linthost/rules_ts_prefer_readonly.go +31 -31
  181. package/linthost/rules_ts_prefer_reduce_type_parameter.go +74 -74
  182. package/linthost/rules_ts_prefer_regexp_exec.go +69 -69
  183. package/linthost/rules_ts_prefer_return_this_type.go +79 -79
  184. package/linthost/rules_ts_prefer_string_starts_ends_with.go +237 -237
  185. package/linthost/rules_ts_promise_function_async.go +41 -41
  186. package/linthost/rules_ts_related_getter_setter_pairs.go +61 -61
  187. package/linthost/rules_ts_require_array_sort_compare.go +58 -58
  188. package/linthost/rules_ts_restrict_plus_operands.go +82 -82
  189. package/linthost/rules_ts_restrict_template_expressions.go +50 -50
  190. package/linthost/rules_ts_simple.go +249 -249
  191. package/linthost/rules_ts_sort_type_constituents.go +88 -88
  192. package/linthost/rules_ts_strict_boolean_expressions.go +103 -103
  193. package/linthost/rules_ts_switch_exhaustiveness_check.go +90 -90
  194. package/linthost/rules_ts_unbound_method.go +65 -65
  195. package/linthost/rules_tsdoc.go +88 -88
  196. package/linthost/rules_unicorn_better_regex.go +1 -1
  197. package/linthost/rules_unicorn_catch_error_name.go +19 -19
  198. package/linthost/rules_unicorn_consistent_assert.go +20 -20
  199. package/linthost/rules_unicorn_consistent_date_clone.go +27 -27
  200. package/linthost/rules_unicorn_consistent_destructuring.go +3 -3
  201. package/linthost/rules_unicorn_consistent_empty_array_spread.go +34 -34
  202. package/linthost/rules_unicorn_consistent_existence_index_check.go +42 -42
  203. package/linthost/rules_unicorn_consistent_function_scoping.go +3 -3
  204. package/linthost/rules_unicorn_consistent_template_literal_escape.go +3 -3
  205. package/linthost/rules_unicorn_custom_error_definition.go +92 -92
  206. package/linthost/rules_unicorn_empty_brace_spaces.go +47 -47
  207. package/linthost/rules_unicorn_error_message.go +34 -34
  208. package/linthost/rules_unicorn_escape_case.go +14 -14
  209. package/linthost/rules_unicorn_expiring_todo_comments.go +36 -36
  210. package/linthost/rules_unicorn_explicit_length_check.go +51 -51
  211. package/linthost/rules_unicorn_filename_case.go +1 -1
  212. package/linthost/rules_unicorn_import_style.go +1 -1
  213. package/linthost/rules_unicorn_isolated_functions.go +2 -2
  214. package/linthost/rules_unicorn_new_for_builtins.go +49 -49
  215. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +31 -31
  216. package/linthost/rules_unicorn_no_accessor_recursion.go +69 -69
  217. package/linthost/rules_unicorn_no_anonymous_default_export.go +40 -40
  218. package/linthost/rules_unicorn_no_array_callback_reference.go +33 -33
  219. package/linthost/rules_unicorn_no_array_for_each.go +14 -14
  220. package/linthost/rules_unicorn_no_array_method_this_argument.go +29 -29
  221. package/linthost/rules_unicorn_no_array_reduce.go +15 -15
  222. package/linthost/rules_unicorn_no_array_reverse.go +17 -17
  223. package/linthost/rules_unicorn_no_array_sort.go +17 -17
  224. package/linthost/rules_unicorn_no_await_expression_member.go +12 -12
  225. package/linthost/rules_unicorn_no_await_in_promise_methods.go +38 -38
  226. package/linthost/rules_unicorn_no_console_spaces.go +30 -30
  227. package/linthost/rules_unicorn_no_document_cookie.go +13 -13
  228. package/linthost/rules_unicorn_no_empty_file.go +16 -16
  229. package/linthost/rules_unicorn_no_for_loop.go +58 -58
  230. package/linthost/rules_unicorn_no_hex_escape.go +11 -11
  231. package/linthost/rules_unicorn_no_immediate_mutation.go +55 -55
  232. package/linthost/rules_unicorn_no_instanceof_builtins.go +34 -34
  233. package/linthost/rules_unicorn_no_invalid_fetch_options.go +52 -52
  234. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +25 -25
  235. package/linthost/rules_unicorn_no_keyword_prefix.go +56 -56
  236. package/linthost/rules_unicorn_no_lonely_if.go +21 -21
  237. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +22 -22
  238. package/linthost/rules_unicorn_no_named_default.go +25 -25
  239. package/linthost/rules_unicorn_no_negated_condition.go +54 -54
  240. package/linthost/rules_unicorn_no_negation_in_equality_check.go +23 -23
  241. package/linthost/rules_unicorn_no_nested_ternary.go +15 -15
  242. package/linthost/rules_unicorn_no_new_array.go +5 -5
  243. package/linthost/rules_unicorn_no_new_buffer.go +5 -5
  244. package/linthost/rules_unicorn_no_null.go +2 -2
  245. package/linthost/rules_unicorn_no_object_as_default_parameter.go +19 -19
  246. package/linthost/rules_unicorn_no_process_exit.go +17 -17
  247. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +29 -29
  248. package/linthost/rules_unicorn_no_static_only_class.go +27 -27
  249. package/linthost/rules_unicorn_no_thenable.go +47 -47
  250. package/linthost/rules_unicorn_no_this_assignment.go +10 -10
  251. package/linthost/rules_unicorn_no_typeof_undefined.go +31 -31
  252. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +23 -23
  253. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +37 -37
  254. package/linthost/rules_unicorn_no_unnecessary_await.go +24 -24
  255. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +22 -22
  256. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +67 -67
  257. package/linthost/rules_unicorn_no_unreadable_iife.go +22 -22
  258. package/linthost/rules_unicorn_no_useless_collection_argument.go +34 -34
  259. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +18 -18
  260. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +49 -49
  261. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +41 -41
  262. package/linthost/rules_unicorn_no_useless_length_check.go +82 -82
  263. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +42 -42
  264. package/linthost/rules_unicorn_no_useless_spread.go +38 -38
  265. package/linthost/rules_unicorn_no_useless_switch_case.go +29 -29
  266. package/linthost/rules_unicorn_no_useless_undefined.go +25 -25
  267. package/linthost/rules_unicorn_no_zero_fractions.go +17 -17
  268. package/linthost/rules_unicorn_number_literal_case.go +33 -33
  269. package/linthost/rules_unicorn_numeric_separators_style.go +36 -36
  270. package/linthost/rules_unicorn_prefer_add_event_listener.go +30 -30
  271. package/linthost/rules_unicorn_prefer_array_find.go +27 -27
  272. package/linthost/rules_unicorn_prefer_array_flat.go +25 -25
  273. package/linthost/rules_unicorn_prefer_array_flat_map.go +37 -37
  274. package/linthost/rules_unicorn_prefer_array_index_of.go +108 -108
  275. package/linthost/rules_unicorn_prefer_array_some.go +43 -43
  276. package/linthost/rules_unicorn_prefer_at.go +42 -42
  277. package/linthost/rules_unicorn_prefer_bigint_literals.go +42 -42
  278. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +15 -15
  279. package/linthost/rules_unicorn_prefer_class_fields.go +57 -57
  280. package/linthost/rules_unicorn_prefer_classlist_toggle.go +76 -76
  281. package/linthost/rules_unicorn_prefer_code_point.go +21 -21
  282. package/linthost/rules_unicorn_prefer_date_now.go +47 -47
  283. package/linthost/rules_unicorn_prefer_default_parameters.go +96 -96
  284. package/linthost/rules_unicorn_prefer_dom_node_append.go +14 -14
  285. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +27 -27
  286. package/linthost/rules_unicorn_prefer_dom_node_remove.go +17 -17
  287. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +11 -11
  288. package/linthost/rules_unicorn_prefer_event_target.go +10 -10
  289. package/linthost/rules_unicorn_prefer_export_from.go +99 -99
  290. package/linthost/rules_unicorn_prefer_global_this.go +91 -91
  291. package/linthost/rules_unicorn_prefer_import_meta_properties.go +38 -38
  292. package/linthost/rules_unicorn_prefer_includes.go +108 -108
  293. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +37 -37
  294. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +10 -10
  295. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +20 -20
  296. package/linthost/rules_unicorn_prefer_math_min_max.go +33 -33
  297. package/linthost/rules_unicorn_prefer_math_trunc.go +32 -32
  298. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +18 -18
  299. package/linthost/rules_unicorn_prefer_modern_math_apis.go +38 -38
  300. package/linthost/rules_unicorn_prefer_module.go +22 -22
  301. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +73 -73
  302. package/linthost/rules_unicorn_prefer_negative_index.go +46 -46
  303. package/linthost/rules_unicorn_prefer_node_protocol.go +90 -90
  304. package/linthost/rules_unicorn_prefer_number_properties.go +57 -57
  305. package/linthost/rules_unicorn_prefer_object_from_entries.go +26 -26
  306. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
  307. package/linthost/rules_unicorn_prefer_prototype_methods.go +25 -25
  308. package/linthost/rules_unicorn_prefer_query_selector.go +25 -25
  309. package/linthost/rules_unicorn_prefer_reflect_apply.go +10 -10
  310. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +47 -47
  311. package/linthost/rules_unicorn_prefer_response_static_json.go +26 -26
  312. package/linthost/rules_unicorn_prefer_set_has.go +16 -16
  313. package/linthost/rules_unicorn_prefer_set_size.go +22 -22
  314. package/linthost/rules_unicorn_prefer_simple_condition_first.go +3 -3
  315. package/linthost/rules_unicorn_prefer_single_call.go +59 -59
  316. package/linthost/rules_unicorn_prefer_spread.go +24 -24
  317. package/linthost/rules_unicorn_prefer_string_raw.go +12 -12
  318. package/linthost/rules_unicorn_prefer_string_replace_all.go +46 -46
  319. package/linthost/rules_unicorn_prefer_string_slice.go +17 -17
  320. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +104 -104
  321. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +21 -21
  322. package/linthost/rules_unicorn_prefer_structured_clone.go +36 -36
  323. package/linthost/rules_unicorn_prefer_switch.go +65 -65
  324. package/linthost/rules_unicorn_prefer_ternary.go +35 -35
  325. package/linthost/rules_unicorn_prefer_top_level_await.go +34 -34
  326. package/linthost/rules_unicorn_prefer_type_error.go +84 -84
  327. package/linthost/rules_unicorn_prevent_abbreviations.go +68 -68
  328. package/linthost/rules_unicorn_relative_url_style.go +19 -19
  329. package/linthost/rules_unicorn_require_array_join_separator.go +18 -18
  330. package/linthost/rules_unicorn_require_module_attributes.go +25 -25
  331. package/linthost/rules_unicorn_require_module_specifiers.go +28 -28
  332. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +18 -18
  333. package/linthost/rules_unicorn_require_post_message_target_origin.go +18 -18
  334. package/linthost/rules_unicorn_string_content.go +1 -1
  335. package/linthost/rules_unicorn_switch_case_braces.go +16 -16
  336. package/linthost/rules_unicorn_switch_case_break_position.go +3 -3
  337. package/linthost/rules_unicorn_template_indent.go +1 -1
  338. package/linthost/rules_unicorn_text_encoding_identifier_case.go +36 -36
  339. package/linthost/rules_unicorn_throw_new_error.go +30 -30
  340. package/linthost/rules_var.go +273 -3
  341. package/package.json +3 -3
  342. package/src/defaultFormat.ts +11 -7
  343. package/src/structures/ITtscLintConfig.ts +5 -5
  344. package/src/structures/TtscLintRuleSetting.ts +19 -19
  345. package/src/structures/{ITtscLintFormat.ts → format/ITtscLintFormat.ts} +48 -75
  346. package/src/structures/format/ITtscLintFormatJsDoc.ts +16 -0
  347. package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
  348. package/src/structures/format/index.ts +3 -0
  349. package/src/structures/index.ts +1 -1
  350. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +20 -31
  351. package/src/structures/rules/ITtscLintBoundariesRules.ts +32 -36
  352. package/src/structures/rules/ITtscLintContributorRules.ts +6 -7
  353. package/src/structures/rules/ITtscLintCoreRules.ts +380 -408
  354. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +5 -5
  355. package/src/structures/rules/ITtscLintCypressRules.ts +34 -38
  356. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +28 -41
  357. package/src/structures/rules/ITtscLintFunctionalRules.ts +51 -56
  358. package/src/structures/rules/ITtscLintJestRules.ts +63 -74
  359. package/src/structures/rules/ITtscLintJsdocRules.ts +47 -54
  360. package/src/structures/rules/ITtscLintJsxA11yRules.ts +94 -102
  361. package/src/structures/rules/ITtscLintNextjsRules.ts +50 -55
  362. package/src/structures/rules/ITtscLintPlaywrightRules.ts +104 -122
  363. package/src/structures/rules/ITtscLintPromiseRules.ts +62 -71
  364. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +4 -4
  365. package/src/structures/rules/ITtscLintReactPerfRules.ts +17 -19
  366. package/src/structures/rules/ITtscLintReactRuleOptions.ts +8 -10
  367. package/src/structures/rules/ITtscLintReactRules.ts +91 -104
  368. package/src/structures/rules/ITtscLintRegexpRules.ts +46 -54
  369. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +7 -8
  370. package/src/structures/rules/ITtscLintSecurityRules.ts +45 -52
  371. package/src/structures/rules/ITtscLintSolidRules.ts +53 -56
  372. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +3 -4
  373. package/src/structures/rules/ITtscLintStorybookRules.ts +60 -69
  374. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +31 -37
  375. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +2 -3
  376. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +102 -119
  377. package/src/structures/rules/ITtscLintTypeScriptRules.ts +460 -518
  378. package/src/structures/rules/ITtscLintVitestRules.ts +43 -51
  379. package/lib/structures/ITtscLintFormat.js.map +0 -1
  380. /package/lib/structures/{ITtscLintFormat.js → format/ITtscLintFormat.js} +0 -0
@@ -20,17 +20,17 @@ type unicornNoKeywordPrefix struct{}
20
20
 
21
21
  func (unicornNoKeywordPrefix) Name() string { return "unicorn/no-keyword-prefix" }
22
22
  func (unicornNoKeywordPrefix) Visits() []shimast.Kind {
23
- return []shimast.Kind{shimast.KindIdentifier}
23
+ return []shimast.Kind{shimast.KindIdentifier}
24
24
  }
25
25
  func (unicornNoKeywordPrefix) Check(ctx *Context, node *shimast.Node) {
26
- name := identifierText(node)
27
- if !hasKeywordPrefix(name) {
28
- return
29
- }
30
- if !isUnicornDeclarationPositionIdentifier(node) {
31
- return
32
- }
33
- ctx.Report(node, "Don't prefix identifiers with a reserved word (`new` / `class`).")
26
+ name := identifierText(node)
27
+ if !hasKeywordPrefix(name) {
28
+ return
29
+ }
30
+ if !isUnicornDeclarationPositionIdentifier(node) {
31
+ return
32
+ }
33
+ ctx.Report(node, "Don't prefix identifiers with a reserved word (`new` / `class`).")
34
34
  }
35
35
 
36
36
  // hasKeywordPrefix reports whether `name` starts with `new` or `class`
@@ -40,19 +40,19 @@ func (unicornNoKeywordPrefix) Check(ctx *Context, node *shimast.Node) {
40
40
  // share the prefix bytes but not the camelCase break and are out of
41
41
  // scope.
42
42
  func hasKeywordPrefix(name string) bool {
43
- for _, prefix := range []string{"new", "class"} {
44
- if len(name) <= len(prefix) {
45
- continue
46
- }
47
- if name[:len(prefix)] != prefix {
48
- continue
49
- }
50
- next := name[len(prefix)]
51
- if next >= 'A' && next <= 'Z' {
52
- return true
53
- }
54
- }
55
- return false
43
+ for _, prefix := range []string{"new", "class"} {
44
+ if len(name) <= len(prefix) {
45
+ continue
46
+ }
47
+ if name[:len(prefix)] != prefix {
48
+ continue
49
+ }
50
+ next := name[len(prefix)]
51
+ if next >= 'A' && next <= 'Z' {
52
+ return true
53
+ }
54
+ }
55
+ return false
56
56
  }
57
57
 
58
58
  // isUnicornDeclarationPositionIdentifier reports whether `node` (a bare
@@ -61,41 +61,41 @@ func hasKeywordPrefix(name string) bool {
61
61
  // property keys on accesses, type references, and labels are filtered
62
62
  // out so the rule only fires on declarations.
63
63
  func isUnicornDeclarationPositionIdentifier(node *shimast.Node) bool {
64
- if node == nil || node.Kind != shimast.KindIdentifier || node.Parent == nil {
65
- return false
66
- }
67
- parent := node.Parent
68
- switch parent.Kind {
69
- case shimast.KindVariableDeclaration:
70
- decl := parent.AsVariableDeclaration()
71
- return decl != nil && decl.Name() == node
72
- case shimast.KindBindingElement:
73
- elem := parent.AsBindingElement()
74
- return elem != nil && elem.Name() == node
75
- case shimast.KindParameter:
76
- param := parent.AsParameterDeclaration()
77
- return param != nil && param.Name() == node
78
- case shimast.KindFunctionDeclaration:
79
- fn := parent.AsFunctionDeclaration()
80
- return fn != nil && fn.Name() == node
81
- case shimast.KindFunctionExpression:
82
- fn := parent.AsFunctionExpression()
83
- return fn != nil && fn.Name() == node
84
- case shimast.KindClassDeclaration:
85
- cls := parent.AsClassDeclaration()
86
- return cls != nil && cls.Name() == node
87
- case shimast.KindClassExpression:
88
- cls := parent.AsClassExpression()
89
- return cls != nil && cls.Name() == node
90
- case shimast.KindMethodDeclaration,
91
- shimast.KindGetAccessor,
92
- shimast.KindSetAccessor,
93
- shimast.KindPropertyDeclaration:
94
- return true
95
- }
96
- return false
64
+ if node == nil || node.Kind != shimast.KindIdentifier || node.Parent == nil {
65
+ return false
66
+ }
67
+ parent := node.Parent
68
+ switch parent.Kind {
69
+ case shimast.KindVariableDeclaration:
70
+ decl := parent.AsVariableDeclaration()
71
+ return decl != nil && decl.Name() == node
72
+ case shimast.KindBindingElement:
73
+ elem := parent.AsBindingElement()
74
+ return elem != nil && elem.Name() == node
75
+ case shimast.KindParameter:
76
+ param := parent.AsParameterDeclaration()
77
+ return param != nil && param.Name() == node
78
+ case shimast.KindFunctionDeclaration:
79
+ fn := parent.AsFunctionDeclaration()
80
+ return fn != nil && fn.Name() == node
81
+ case shimast.KindFunctionExpression:
82
+ fn := parent.AsFunctionExpression()
83
+ return fn != nil && fn.Name() == node
84
+ case shimast.KindClassDeclaration:
85
+ cls := parent.AsClassDeclaration()
86
+ return cls != nil && cls.Name() == node
87
+ case shimast.KindClassExpression:
88
+ cls := parent.AsClassExpression()
89
+ return cls != nil && cls.Name() == node
90
+ case shimast.KindMethodDeclaration,
91
+ shimast.KindGetAccessor,
92
+ shimast.KindSetAccessor,
93
+ shimast.KindPropertyDeclaration:
94
+ return true
95
+ }
96
+ return false
97
97
  }
98
98
 
99
99
  func init() {
100
- Register(unicornNoKeywordPrefix{})
100
+ Register(unicornNoKeywordPrefix{})
101
101
  }
@@ -17,28 +17,28 @@ type unicornNoLonelyIf struct{}
17
17
  func (unicornNoLonelyIf) Name() string { return "unicorn/no-lonely-if" }
18
18
  func (unicornNoLonelyIf) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindIfStatement} }
19
19
  func (unicornNoLonelyIf) Check(ctx *Context, node *shimast.Node) {
20
- parent := node.Parent
21
- if parent == nil || parent.Kind != shimast.KindBlock {
22
- return
23
- }
24
- block := parent.AsBlock()
25
- if block == nil || block.Statements == nil {
26
- return
27
- }
28
- if len(block.Statements.Nodes) != 1 {
29
- return
30
- }
31
- grand := parent.Parent
32
- if grand == nil || grand.Kind != shimast.KindIfStatement {
33
- return
34
- }
35
- gif := grand.AsIfStatement()
36
- if gif == nil || gif.ElseStatement != parent {
37
- return
38
- }
39
- ctx.Report(node, "Use `else if` instead of an `if` as the only statement inside an `else` block.")
20
+ parent := node.Parent
21
+ if parent == nil || parent.Kind != shimast.KindBlock {
22
+ return
23
+ }
24
+ block := parent.AsBlock()
25
+ if block == nil || block.Statements == nil {
26
+ return
27
+ }
28
+ if len(block.Statements.Nodes) != 1 {
29
+ return
30
+ }
31
+ grand := parent.Parent
32
+ if grand == nil || grand.Kind != shimast.KindIfStatement {
33
+ return
34
+ }
35
+ gif := grand.AsIfStatement()
36
+ if gif == nil || gif.ElseStatement != parent {
37
+ return
38
+ }
39
+ ctx.Report(node, "Use `else if` instead of an `if` as the only statement inside an `else` block.")
40
40
  }
41
41
 
42
42
  func init() {
43
- Register(unicornNoLonelyIf{})
43
+ Register(unicornNoLonelyIf{})
44
44
  }
@@ -21,31 +21,31 @@ type unicornNoMagicArrayFlatDepth struct{}
21
21
 
22
22
  func (unicornNoMagicArrayFlatDepth) Name() string { return "unicorn/no-magic-array-flat-depth" }
23
23
  func (unicornNoMagicArrayFlatDepth) Visits() []shimast.Kind {
24
- return []shimast.Kind{shimast.KindCallExpression}
24
+ return []shimast.Kind{shimast.KindCallExpression}
25
25
  }
26
26
  func (unicornNoMagicArrayFlatDepth) Check(ctx *Context, node *shimast.Node) {
27
- call := node.AsCallExpression()
28
- if call == nil || call.Expression == nil ||
29
- call.Expression.Kind != shimast.KindPropertyAccessExpression {
30
- return
31
- }
32
- access := call.Expression.AsPropertyAccessExpression()
33
- if access == nil || identifierText(access.Name()) != "flat" {
34
- return
35
- }
36
- if call.Arguments == nil || len(call.Arguments.Nodes) != 1 {
37
- return
38
- }
39
- arg := stripParens(call.Arguments.Nodes[0])
40
- if arg == nil || arg.Kind != shimast.KindNumericLiteral {
41
- return
42
- }
43
- if numericLiteralText(arg) == "1" {
44
- return
45
- }
46
- ctx.Report(node, "Don't use a magic-number depth in `Array#flat()` — use `Infinity` or a named constant.")
27
+ call := node.AsCallExpression()
28
+ if call == nil || call.Expression == nil ||
29
+ call.Expression.Kind != shimast.KindPropertyAccessExpression {
30
+ return
31
+ }
32
+ access := call.Expression.AsPropertyAccessExpression()
33
+ if access == nil || identifierText(access.Name()) != "flat" {
34
+ return
35
+ }
36
+ if call.Arguments == nil || len(call.Arguments.Nodes) != 1 {
37
+ return
38
+ }
39
+ arg := stripParens(call.Arguments.Nodes[0])
40
+ if arg == nil || arg.Kind != shimast.KindNumericLiteral {
41
+ return
42
+ }
43
+ if numericLiteralText(arg) == "1" {
44
+ return
45
+ }
46
+ ctx.Report(node, "Don't use a magic-number depth in `Array#flat()` — use `Infinity` or a named constant.")
47
47
  }
48
48
 
49
49
  func init() {
50
- Register(unicornNoMagicArrayFlatDepth{})
50
+ Register(unicornNoMagicArrayFlatDepth{})
51
51
  }
@@ -21,34 +21,34 @@ type unicornNoNamedDefault struct{}
21
21
 
22
22
  func (unicornNoNamedDefault) Name() string { return "unicorn/no-named-default" }
23
23
  func (unicornNoNamedDefault) Visits() []shimast.Kind {
24
- return []shimast.Kind{shimast.KindImportDeclaration}
24
+ return []shimast.Kind{shimast.KindImportDeclaration}
25
25
  }
26
26
  func (unicornNoNamedDefault) Check(ctx *Context, node *shimast.Node) {
27
- decl := node.AsImportDeclaration()
28
- if decl == nil || decl.ImportClause == nil {
29
- return
30
- }
31
- clause := decl.ImportClause.AsImportClause()
32
- if clause == nil || clause.NamedBindings == nil ||
33
- clause.NamedBindings.Kind != shimast.KindNamedImports {
34
- return
35
- }
36
- named := clause.NamedBindings.AsNamedImports()
37
- if named == nil || named.Elements == nil {
38
- return
39
- }
40
- for _, spec := range named.Elements.Nodes {
41
- s := spec.AsImportSpecifier()
42
- if s == nil || s.PropertyName == nil {
43
- continue
44
- }
45
- if moduleExportNameText(s.PropertyName) != "default" {
46
- continue
47
- }
48
- ctx.Report(spec, "Don't import a default export under a named alias — use `import X from \"...\"` instead.")
49
- }
27
+ decl := node.AsImportDeclaration()
28
+ if decl == nil || decl.ImportClause == nil {
29
+ return
30
+ }
31
+ clause := decl.ImportClause.AsImportClause()
32
+ if clause == nil || clause.NamedBindings == nil ||
33
+ clause.NamedBindings.Kind != shimast.KindNamedImports {
34
+ return
35
+ }
36
+ named := clause.NamedBindings.AsNamedImports()
37
+ if named == nil || named.Elements == nil {
38
+ return
39
+ }
40
+ for _, spec := range named.Elements.Nodes {
41
+ s := spec.AsImportSpecifier()
42
+ if s == nil || s.PropertyName == nil {
43
+ continue
44
+ }
45
+ if moduleExportNameText(s.PropertyName) != "default" {
46
+ continue
47
+ }
48
+ ctx.Report(spec, "Don't import a default export under a named alias — use `import X from \"...\"` instead.")
49
+ }
50
50
  }
51
51
 
52
52
  func init() {
53
- Register(unicornNoNamedDefault{})
53
+ Register(unicornNoNamedDefault{})
54
54
  }
@@ -17,69 +17,69 @@ type unicornNoNegatedCondition struct{}
17
17
 
18
18
  func (unicornNoNegatedCondition) Name() string { return "unicorn/no-negated-condition" }
19
19
  func (unicornNoNegatedCondition) Visits() []shimast.Kind {
20
- return []shimast.Kind{shimast.KindIfStatement, shimast.KindConditionalExpression}
20
+ return []shimast.Kind{shimast.KindIfStatement, shimast.KindConditionalExpression}
21
21
  }
22
22
  func (unicornNoNegatedCondition) Check(ctx *Context, node *shimast.Node) {
23
- var condition *shimast.Node
24
- switch node.Kind {
25
- case shimast.KindIfStatement:
26
- stmt := node.AsIfStatement()
27
- if stmt == nil || stmt.ElseStatement == nil {
28
- return
29
- }
30
- // An `else if` chain (else is itself an IfStatement) reads
31
- // fine after inversion only when the else has its own else;
32
- // otherwise inverting reshapes the chain. Keep the rule
33
- // conservative and only fire when else is a Block.
34
- if stmt.ElseStatement.Kind == shimast.KindIfStatement {
35
- return
36
- }
37
- condition = stmt.Expression
38
- case shimast.KindConditionalExpression:
39
- cond := node.AsConditionalExpression()
40
- if cond == nil || cond.WhenTrue == nil || cond.WhenFalse == nil {
41
- return
42
- }
43
- condition = cond.Condition
44
- }
45
- if condition == nil {
46
- return
47
- }
48
- condition = stripParens(condition)
49
- if condition == nil {
50
- return
51
- }
52
- if !unicornNoNegatedConditionIsNegated(condition) {
53
- return
54
- }
55
- ctx.Report(node, "Avoid negated conditions in `if` / `else` and ternaries when the positive form is shorter.")
23
+ var condition *shimast.Node
24
+ switch node.Kind {
25
+ case shimast.KindIfStatement:
26
+ stmt := node.AsIfStatement()
27
+ if stmt == nil || stmt.ElseStatement == nil {
28
+ return
29
+ }
30
+ // An `else if` chain (else is itself an IfStatement) reads
31
+ // fine after inversion only when the else has its own else;
32
+ // otherwise inverting reshapes the chain. Keep the rule
33
+ // conservative and only fire when else is a Block.
34
+ if stmt.ElseStatement.Kind == shimast.KindIfStatement {
35
+ return
36
+ }
37
+ condition = stmt.Expression
38
+ case shimast.KindConditionalExpression:
39
+ cond := node.AsConditionalExpression()
40
+ if cond == nil || cond.WhenTrue == nil || cond.WhenFalse == nil {
41
+ return
42
+ }
43
+ condition = cond.Condition
44
+ }
45
+ if condition == nil {
46
+ return
47
+ }
48
+ condition = stripParens(condition)
49
+ if condition == nil {
50
+ return
51
+ }
52
+ if !unicornNoNegatedConditionIsNegated(condition) {
53
+ return
54
+ }
55
+ ctx.Report(node, "Avoid negated conditions in `if` / `else` and ternaries when the positive form is shorter.")
56
56
  }
57
57
 
58
58
  // unicornNoNegatedConditionIsNegated reports whether `node` is a `!`
59
59
  // prefix-unary expression or a `!=` / `!==` binary expression — the
60
60
  // two shapes the rule treats as "negated".
61
61
  func unicornNoNegatedConditionIsNegated(node *shimast.Node) bool {
62
- if node == nil {
63
- return false
64
- }
65
- switch node.Kind {
66
- case shimast.KindPrefixUnaryExpression:
67
- prefix := node.AsPrefixUnaryExpression()
68
- return prefix != nil && prefix.Operator == shimast.KindExclamationToken
69
- case shimast.KindBinaryExpression:
70
- bin := node.AsBinaryExpression()
71
- if bin == nil || bin.OperatorToken == nil {
72
- return false
73
- }
74
- switch bin.OperatorToken.Kind {
75
- case shimast.KindExclamationEqualsToken,
76
- shimast.KindExclamationEqualsEqualsToken:
77
- return true
78
- }
79
- }
80
- return false
62
+ if node == nil {
63
+ return false
64
+ }
65
+ switch node.Kind {
66
+ case shimast.KindPrefixUnaryExpression:
67
+ prefix := node.AsPrefixUnaryExpression()
68
+ return prefix != nil && prefix.Operator == shimast.KindExclamationToken
69
+ case shimast.KindBinaryExpression:
70
+ bin := node.AsBinaryExpression()
71
+ if bin == nil || bin.OperatorToken == nil {
72
+ return false
73
+ }
74
+ switch bin.OperatorToken.Kind {
75
+ case shimast.KindExclamationEqualsToken,
76
+ shimast.KindExclamationEqualsEqualsToken:
77
+ return true
78
+ }
79
+ }
80
+ return false
81
81
  }
82
82
 
83
83
  func init() {
84
- Register(unicornNoNegatedCondition{})
84
+ Register(unicornNoNegatedCondition{})
85
85
  }
@@ -17,34 +17,34 @@ import shimast "github.com/microsoft/typescript-go/shim/ast"
17
17
  type unicornNoNegationInEqualityCheck struct{}
18
18
 
19
19
  func (unicornNoNegationInEqualityCheck) Name() string {
20
- return "unicorn/no-negation-in-equality-check"
20
+ return "unicorn/no-negation-in-equality-check"
21
21
  }
22
22
  func (unicornNoNegationInEqualityCheck) Visits() []shimast.Kind {
23
- return []shimast.Kind{shimast.KindBinaryExpression}
23
+ return []shimast.Kind{shimast.KindBinaryExpression}
24
24
  }
25
25
  func (unicornNoNegationInEqualityCheck) Check(ctx *Context, node *shimast.Node) {
26
- bin := node.AsBinaryExpression()
27
- if bin == nil || bin.OperatorToken == nil || bin.Left == nil {
28
- return
29
- }
30
- switch bin.OperatorToken.Kind {
31
- case shimast.KindEqualsEqualsEqualsToken,
32
- shimast.KindEqualsEqualsToken,
33
- shimast.KindExclamationEqualsEqualsToken,
34
- shimast.KindExclamationEqualsToken:
35
- default:
36
- return
37
- }
38
- if bin.Left.Kind != shimast.KindPrefixUnaryExpression {
39
- return
40
- }
41
- prefix := bin.Left.AsPrefixUnaryExpression()
42
- if prefix == nil || prefix.Operator != shimast.KindExclamationToken {
43
- return
44
- }
45
- ctx.Report(node, "Don't negate the left operand of an equality check — use `!==` directly, or wrap in parens.")
26
+ bin := node.AsBinaryExpression()
27
+ if bin == nil || bin.OperatorToken == nil || bin.Left == nil {
28
+ return
29
+ }
30
+ switch bin.OperatorToken.Kind {
31
+ case shimast.KindEqualsEqualsEqualsToken,
32
+ shimast.KindEqualsEqualsToken,
33
+ shimast.KindExclamationEqualsEqualsToken,
34
+ shimast.KindExclamationEqualsToken:
35
+ default:
36
+ return
37
+ }
38
+ if bin.Left.Kind != shimast.KindPrefixUnaryExpression {
39
+ return
40
+ }
41
+ prefix := bin.Left.AsPrefixUnaryExpression()
42
+ if prefix == nil || prefix.Operator != shimast.KindExclamationToken {
43
+ return
44
+ }
45
+ ctx.Report(node, "Don't negate the left operand of an equality check — use `!==` directly, or wrap in parens.")
46
46
  }
47
47
 
48
48
  func init() {
49
- Register(unicornNoNegationInEqualityCheck{})
49
+ Register(unicornNoNegationInEqualityCheck{})
50
50
  }
@@ -17,27 +17,27 @@ type unicornNoNestedTernary struct{}
17
17
 
18
18
  func (unicornNoNestedTernary) Name() string { return "unicorn/no-nested-ternary" }
19
19
  func (unicornNoNestedTernary) Visits() []shimast.Kind {
20
- return []shimast.Kind{shimast.KindConditionalExpression}
20
+ return []shimast.Kind{shimast.KindConditionalExpression}
21
21
  }
22
22
  func (unicornNoNestedTernary) Check(ctx *Context, node *shimast.Node) {
23
- cond := node.AsConditionalExpression()
24
- if cond == nil {
25
- return
26
- }
27
- if hasUnicornNestedConditional(cond.WhenTrue) {
28
- ctx.Report(stripParens(cond.WhenTrue), "Do not nest ternary expressions.")
29
- return
30
- }
31
- if hasUnicornNestedConditional(cond.WhenFalse) {
32
- ctx.Report(stripParens(cond.WhenFalse), "Do not nest ternary expressions.")
33
- }
23
+ cond := node.AsConditionalExpression()
24
+ if cond == nil {
25
+ return
26
+ }
27
+ if hasUnicornNestedConditional(cond.WhenTrue) {
28
+ ctx.Report(stripParens(cond.WhenTrue), "Do not nest ternary expressions.")
29
+ return
30
+ }
31
+ if hasUnicornNestedConditional(cond.WhenFalse) {
32
+ ctx.Report(stripParens(cond.WhenFalse), "Do not nest ternary expressions.")
33
+ }
34
34
  }
35
35
 
36
36
  func hasUnicornNestedConditional(node *shimast.Node) bool {
37
- expr := stripParens(node)
38
- return expr != nil && expr.Kind == shimast.KindConditionalExpression
37
+ expr := stripParens(node)
38
+ return expr != nil && expr.Kind == shimast.KindConditionalExpression
39
39
  }
40
40
 
41
41
  func init() {
42
- Register(unicornNoNestedTernary{})
42
+ Register(unicornNoNestedTernary{})
43
43
  }
@@ -19,12 +19,12 @@ type unicornNoNewArray struct{}
19
19
  func (unicornNoNewArray) Name() string { return "unicorn/no-new-array" }
20
20
  func (unicornNoNewArray) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindNewExpression} }
21
21
  func (unicornNoNewArray) Check(ctx *Context, node *shimast.Node) {
22
- ne := node.AsNewExpression()
23
- if ne != nil && identifierText(ne.Expression) == "Array" {
24
- ctx.Report(node, "Don't use `new Array(...)` — use an array literal or `Array.from`/`Array.of` instead.")
25
- }
22
+ ne := node.AsNewExpression()
23
+ if ne != nil && identifierText(ne.Expression) == "Array" {
24
+ ctx.Report(node, "Don't use `new Array(...)` — use an array literal or `Array.from`/`Array.of` instead.")
25
+ }
26
26
  }
27
27
 
28
28
  func init() {
29
- Register(unicornNoNewArray{})
29
+ Register(unicornNoNewArray{})
30
30
  }
@@ -20,12 +20,12 @@ type unicornNoNewBuffer struct{}
20
20
  func (unicornNoNewBuffer) Name() string { return "unicorn/no-new-buffer" }
21
21
  func (unicornNoNewBuffer) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindNewExpression} }
22
22
  func (unicornNoNewBuffer) Check(ctx *Context, node *shimast.Node) {
23
- ne := node.AsNewExpression()
24
- if ne != nil && identifierText(ne.Expression) == "Buffer" {
25
- ctx.Report(node, "`new Buffer()` is deprecated, use `Buffer.from()` or `Buffer.alloc()` instead.")
26
- }
23
+ ne := node.AsNewExpression()
24
+ if ne != nil && identifierText(ne.Expression) == "Buffer" {
25
+ ctx.Report(node, "`new Buffer()` is deprecated, use `Buffer.from()` or `Buffer.alloc()` instead.")
26
+ }
27
27
  }
28
28
 
29
29
  func init() {
30
- Register(unicornNoNewBuffer{})
30
+ Register(unicornNoNewBuffer{})
31
31
  }
@@ -16,9 +16,9 @@ type unicornNoNull struct{}
16
16
  func (unicornNoNull) Name() string { return "unicorn/no-null" }
17
17
  func (unicornNoNull) Visits() []shimast.Kind { return []shimast.Kind{shimast.KindNullKeyword} }
18
18
  func (unicornNoNull) Check(ctx *Context, node *shimast.Node) {
19
- ctx.Report(node, "Use `undefined` instead of `null`.")
19
+ ctx.Report(node, "Use `undefined` instead of `null`.")
20
20
  }
21
21
 
22
22
  func init() {
23
- Register(unicornNoNull{})
23
+ Register(unicornNoNull{})
24
24
  }
@@ -19,30 +19,30 @@ import shimast "github.com/microsoft/typescript-go/shim/ast"
19
19
  type unicornNoObjectAsDefaultParameter struct{}
20
20
 
21
21
  func (unicornNoObjectAsDefaultParameter) Name() string {
22
- return "unicorn/no-object-as-default-parameter"
22
+ return "unicorn/no-object-as-default-parameter"
23
23
  }
24
24
  func (unicornNoObjectAsDefaultParameter) Visits() []shimast.Kind {
25
- return []shimast.Kind{shimast.KindParameter}
25
+ return []shimast.Kind{shimast.KindParameter}
26
26
  }
27
27
  func (unicornNoObjectAsDefaultParameter) Check(ctx *Context, node *shimast.Node) {
28
- param := node.AsParameterDeclaration()
29
- if param == nil || param.Initializer == nil || param.Name() == nil {
30
- return
31
- }
32
- if param.Name().Kind != shimast.KindIdentifier {
33
- return
34
- }
35
- init := stripParens(param.Initializer)
36
- if init == nil || init.Kind != shimast.KindObjectLiteralExpression {
37
- return
38
- }
39
- obj := init.AsObjectLiteralExpression()
40
- if obj == nil || obj.Properties == nil || len(obj.Properties.Nodes) == 0 {
41
- return
42
- }
43
- ctx.Report(node, "Don't use an object literal as a default parameter — destructure the option instead.")
28
+ param := node.AsParameterDeclaration()
29
+ if param == nil || param.Initializer == nil || param.Name() == nil {
30
+ return
31
+ }
32
+ if param.Name().Kind != shimast.KindIdentifier {
33
+ return
34
+ }
35
+ init := stripParens(param.Initializer)
36
+ if init == nil || init.Kind != shimast.KindObjectLiteralExpression {
37
+ return
38
+ }
39
+ obj := init.AsObjectLiteralExpression()
40
+ if obj == nil || obj.Properties == nil || len(obj.Properties.Nodes) == 0 {
41
+ return
42
+ }
43
+ ctx.Report(node, "Don't use an object literal as a default parameter — destructure the option instead.")
44
44
  }
45
45
 
46
46
  func init() {
47
- Register(unicornNoObjectAsDefaultParameter{})
47
+ Register(unicornNoObjectAsDefaultParameter{})
48
48
  }