@ttsc/lint 0.14.0-dev.20260529.1 → 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 +85 -87
  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
@@ -15,9 +15,9 @@
15
15
  package linthost
16
16
 
17
17
  import (
18
- "fmt"
18
+ "fmt"
19
19
 
20
- shimast "github.com/microsoft/typescript-go/shim/ast"
20
+ shimast "github.com/microsoft/typescript-go/shim/ast"
21
21
  )
22
22
 
23
23
  // maxClassesPerFileLimit is the class-count ceiling. Above this value
@@ -28,31 +28,31 @@ type maxClassesPerFile struct{}
28
28
 
29
29
  func (maxClassesPerFile) Name() string { return "max-classes-per-file" }
30
30
  func (maxClassesPerFile) Visits() []shimast.Kind {
31
- return []shimast.Kind{shimast.KindSourceFile}
31
+ return []shimast.Kind{shimast.KindSourceFile}
32
32
  }
33
33
  func (maxClassesPerFile) Check(ctx *Context, node *shimast.Node) {
34
- if node == nil {
35
- return
36
- }
37
- var classes []*shimast.Node
38
- walkDescendants(node, func(n *shimast.Node) {
39
- if n == nil {
40
- return
41
- }
42
- switch n.Kind {
43
- case shimast.KindClassDeclaration, shimast.KindClassExpression:
44
- classes = append(classes, n)
45
- }
46
- })
47
- if len(classes) <= maxClassesPerFileLimit {
48
- return
49
- }
50
- // Report at the first class that pushed the count over the limit,
51
- // so the diagnostic anchors on the offending declaration rather
52
- // than the file's opening byte.
53
- ctx.Report(classes[maxClassesPerFileLimit], fmt.Sprintf("File has too many classes (%d). Maximum allowed is %d.", len(classes), maxClassesPerFileLimit))
34
+ if node == nil {
35
+ return
36
+ }
37
+ var classes []*shimast.Node
38
+ walkDescendants(node, func(n *shimast.Node) {
39
+ if n == nil {
40
+ return
41
+ }
42
+ switch n.Kind {
43
+ case shimast.KindClassDeclaration, shimast.KindClassExpression:
44
+ classes = append(classes, n)
45
+ }
46
+ })
47
+ if len(classes) <= maxClassesPerFileLimit {
48
+ return
49
+ }
50
+ // Report at the first class that pushed the count over the limit,
51
+ // so the diagnostic anchors on the offending declaration rather
52
+ // than the file's opening byte.
53
+ ctx.Report(classes[maxClassesPerFileLimit], fmt.Sprintf("File has too many classes (%d). Maximum allowed is %d.", len(classes), maxClassesPerFileLimit))
54
54
  }
55
55
 
56
56
  func init() {
57
- Register(maxClassesPerFile{})
57
+ Register(maxClassesPerFile{})
58
58
  }
@@ -8,9 +8,9 @@
8
8
  package linthost
9
9
 
10
10
  import (
11
- "fmt"
11
+ "fmt"
12
12
 
13
- shimast "github.com/microsoft/typescript-go/shim/ast"
13
+ shimast "github.com/microsoft/typescript-go/shim/ast"
14
14
  )
15
15
 
16
16
  // maxDepthLimit is the block-nesting ceiling. Above this value the rule
@@ -22,22 +22,22 @@ type maxDepth struct{}
22
22
 
23
23
  func (maxDepth) Name() string { return "max-depth" }
24
24
  func (maxDepth) Visits() []shimast.Kind {
25
- return []shimast.Kind{
26
- shimast.KindFunctionDeclaration,
27
- shimast.KindFunctionExpression,
28
- shimast.KindArrowFunction,
29
- shimast.KindMethodDeclaration,
30
- }
25
+ return []shimast.Kind{
26
+ shimast.KindFunctionDeclaration,
27
+ shimast.KindFunctionExpression,
28
+ shimast.KindArrowFunction,
29
+ shimast.KindMethodDeclaration,
30
+ }
31
31
  }
32
32
  func (maxDepth) Check(ctx *Context, node *shimast.Node) {
33
- if node == nil {
34
- return
35
- }
36
- body := node.Body()
37
- if body == nil || body.Kind != shimast.KindBlock {
38
- return
39
- }
40
- walkMaxDepthBody(body, node, 0, ctx)
33
+ if node == nil {
34
+ return
35
+ }
36
+ body := node.Body()
37
+ if body == nil || body.Kind != shimast.KindBlock {
38
+ return
39
+ }
40
+ walkMaxDepthBody(body, node, 0, ctx)
41
41
  }
42
42
 
43
43
  // walkMaxDepthBody descends through `root` counting nested block-bearing
@@ -50,34 +50,34 @@ func (maxDepth) Check(ctx *Context, node *shimast.Node) {
50
50
  // recursive walk continues so independent over-limit branches each get
51
51
  // their own diagnostic.
52
52
  func walkMaxDepthBody(node *shimast.Node, fn *shimast.Node, depth int, ctx *Context) {
53
- if node == nil {
54
- return
55
- }
56
- if node != fn && isFunctionLikeKind(node) {
57
- return
58
- }
59
- switch node.Kind {
60
- case shimast.KindIfStatement,
61
- shimast.KindForStatement,
62
- shimast.KindForInStatement,
63
- shimast.KindForOfStatement,
64
- shimast.KindWhileStatement,
65
- shimast.KindDoStatement,
66
- shimast.KindSwitchStatement,
67
- shimast.KindTryStatement,
68
- shimast.KindCatchClause,
69
- shimast.KindWithStatement:
70
- depth++
71
- if depth > maxDepthLimit {
72
- ctx.Report(node, fmt.Sprintf("Blocks are nested too deeply (%d). Maximum allowed is %d.", depth, maxDepthLimit))
73
- }
74
- }
75
- node.ForEachChild(func(child *shimast.Node) bool {
76
- walkMaxDepthBody(child, fn, depth, ctx)
77
- return false
78
- })
53
+ if node == nil {
54
+ return
55
+ }
56
+ if node != fn && isFunctionLikeKind(node) {
57
+ return
58
+ }
59
+ switch node.Kind {
60
+ case shimast.KindIfStatement,
61
+ shimast.KindForStatement,
62
+ shimast.KindForInStatement,
63
+ shimast.KindForOfStatement,
64
+ shimast.KindWhileStatement,
65
+ shimast.KindDoStatement,
66
+ shimast.KindSwitchStatement,
67
+ shimast.KindTryStatement,
68
+ shimast.KindCatchClause,
69
+ shimast.KindWithStatement:
70
+ depth++
71
+ if depth > maxDepthLimit {
72
+ ctx.Report(node, fmt.Sprintf("Blocks are nested too deeply (%d). Maximum allowed is %d.", depth, maxDepthLimit))
73
+ }
74
+ }
75
+ node.ForEachChild(func(child *shimast.Node) bool {
76
+ walkMaxDepthBody(child, fn, depth, ctx)
77
+ return false
78
+ })
79
79
  }
80
80
 
81
81
  func init() {
82
- Register(maxDepth{})
82
+ Register(maxDepth{})
83
83
  }
@@ -17,9 +17,9 @@
17
17
  package linthost
18
18
 
19
19
  import (
20
- "fmt"
20
+ "fmt"
21
21
 
22
- shimast "github.com/microsoft/typescript-go/shim/ast"
22
+ shimast "github.com/microsoft/typescript-go/shim/ast"
23
23
  )
24
24
 
25
25
  // maxLinesLimit is the line-count ceiling. Above this value the rule
@@ -30,72 +30,72 @@ type maxLines struct{}
30
30
 
31
31
  func (maxLines) Name() string { return "max-lines" }
32
32
  func (maxLines) Visits() []shimast.Kind {
33
- return []shimast.Kind{shimast.KindSourceFile}
33
+ return []shimast.Kind{shimast.KindSourceFile}
34
34
  }
35
35
  func (maxLines) Check(ctx *Context, node *shimast.Node) {
36
- if ctx.File == nil {
37
- return
38
- }
39
- src := ctx.File.Text()
40
- count := countSourceLines(src)
41
- if count <= maxLinesLimit {
42
- return
43
- }
44
- // Anchor at the start of line `max+1` — the first line that pushed
45
- // the file past the limit. ESLint matches this anchor so editor
46
- // squiggles land on the offending row.
47
- pos := nthLineStart(src, maxLinesLimit)
48
- if pos < 0 || pos >= len(src) {
49
- pos = 0
50
- }
51
- end := pos + 1
52
- if end > len(src) {
53
- end = len(src)
54
- }
55
- if end <= pos {
56
- end = pos + 1
57
- }
58
- ctx.ReportRange(pos, end, fmt.Sprintf("File has too many lines (%d). Maximum allowed is %d.", count, maxLinesLimit))
36
+ if ctx.File == nil {
37
+ return
38
+ }
39
+ src := ctx.File.Text()
40
+ count := countSourceLines(src)
41
+ if count <= maxLinesLimit {
42
+ return
43
+ }
44
+ // Anchor at the start of line `max+1` — the first line that pushed
45
+ // the file past the limit. ESLint matches this anchor so editor
46
+ // squiggles land on the offending row.
47
+ pos := nthLineStart(src, maxLinesLimit)
48
+ if pos < 0 || pos >= len(src) {
49
+ pos = 0
50
+ }
51
+ end := pos + 1
52
+ if end > len(src) {
53
+ end = len(src)
54
+ }
55
+ if end <= pos {
56
+ end = pos + 1
57
+ }
58
+ ctx.ReportRange(pos, end, fmt.Sprintf("File has too many lines (%d). Maximum allowed is %d.", count, maxLinesLimit))
59
59
  }
60
60
 
61
61
  // nthLineStart returns the byte offset where the (`n`+1)-th line
62
62
  // begins (0-indexed: passing 0 returns 0, passing 1 returns the byte
63
63
  // after the first `\n`). Returns -1 when the file has fewer lines.
64
64
  func nthLineStart(src string, n int) int {
65
- if n <= 0 {
66
- return 0
67
- }
68
- seen := 0
69
- for i := 0; i < len(src); i++ {
70
- if src[i] == '\n' {
71
- seen++
72
- if seen == n {
73
- return i + 1
74
- }
75
- }
76
- }
77
- return -1
65
+ if n <= 0 {
66
+ return 0
67
+ }
68
+ seen := 0
69
+ for i := 0; i < len(src); i++ {
70
+ if src[i] == '\n' {
71
+ seen++
72
+ if seen == n {
73
+ return i + 1
74
+ }
75
+ }
76
+ }
77
+ return -1
78
78
  }
79
79
 
80
80
  // countSourceLines returns the number of lines in `src`. Every `\n`
81
81
  // terminates a line; a non-empty trailing fragment without a newline
82
82
  // counts as one additional line. An empty source has zero lines.
83
83
  func countSourceLines(src string) int {
84
- if len(src) == 0 {
85
- return 0
86
- }
87
- count := 0
88
- for i := 0; i < len(src); i++ {
89
- if src[i] == '\n' {
90
- count++
91
- }
92
- }
93
- if src[len(src)-1] != '\n' {
94
- count++
95
- }
96
- return count
84
+ if len(src) == 0 {
85
+ return 0
86
+ }
87
+ count := 0
88
+ for i := 0; i < len(src); i++ {
89
+ if src[i] == '\n' {
90
+ count++
91
+ }
92
+ }
93
+ if src[len(src)-1] != '\n' {
94
+ count++
95
+ }
96
+ return count
97
97
  }
98
98
 
99
99
  func init() {
100
- Register(maxLines{})
100
+ Register(maxLines{})
101
101
  }
@@ -9,10 +9,10 @@
9
9
  package linthost
10
10
 
11
11
  import (
12
- "fmt"
12
+ "fmt"
13
13
 
14
- shimast "github.com/microsoft/typescript-go/shim/ast"
15
- shimscanner "github.com/microsoft/typescript-go/shim/scanner"
14
+ shimast "github.com/microsoft/typescript-go/shim/ast"
15
+ shimscanner "github.com/microsoft/typescript-go/shim/scanner"
16
16
  )
17
17
 
18
18
  // maxLinesPerFunctionLimit is the line-span ceiling. Above this value
@@ -24,34 +24,34 @@ type maxLinesPerFunction struct{}
24
24
 
25
25
  func (maxLinesPerFunction) Name() string { return "max-lines-per-function" }
26
26
  func (maxLinesPerFunction) Visits() []shimast.Kind {
27
- return []shimast.Kind{
28
- shimast.KindFunctionDeclaration,
29
- shimast.KindFunctionExpression,
30
- shimast.KindArrowFunction,
31
- shimast.KindMethodDeclaration,
32
- }
27
+ return []shimast.Kind{
28
+ shimast.KindFunctionDeclaration,
29
+ shimast.KindFunctionExpression,
30
+ shimast.KindArrowFunction,
31
+ shimast.KindMethodDeclaration,
32
+ }
33
33
  }
34
34
  func (maxLinesPerFunction) Check(ctx *Context, node *shimast.Node) {
35
- if node == nil || ctx == nil || ctx.File == nil {
36
- return
37
- }
38
- body := node.Body()
39
- if body == nil || body.Kind != shimast.KindBlock {
40
- return
41
- }
42
- startPos := shimscanner.SkipTrivia(ctx.File.Text(), body.Pos())
43
- endPos := body.End()
44
- if endPos > startPos {
45
- endPos--
46
- }
47
- startLine := shimscanner.GetECMALineOfPosition(ctx.File, startPos)
48
- endLine := shimscanner.GetECMALineOfPosition(ctx.File, endPos)
49
- lines := endLine - startLine + 1
50
- if lines > maxLinesPerFunctionLimit {
51
- ctx.Report(node, fmt.Sprintf("Function has too many lines (%d). Maximum allowed is %d.", lines, maxLinesPerFunctionLimit))
52
- }
35
+ if node == nil || ctx == nil || ctx.File == nil {
36
+ return
37
+ }
38
+ body := node.Body()
39
+ if body == nil || body.Kind != shimast.KindBlock {
40
+ return
41
+ }
42
+ startPos := shimscanner.SkipTrivia(ctx.File.Text(), body.Pos())
43
+ endPos := body.End()
44
+ if endPos > startPos {
45
+ endPos--
46
+ }
47
+ startLine := shimscanner.GetECMALineOfPosition(ctx.File, startPos)
48
+ endLine := shimscanner.GetECMALineOfPosition(ctx.File, endPos)
49
+ lines := endLine - startLine + 1
50
+ if lines > maxLinesPerFunctionLimit {
51
+ ctx.Report(node, fmt.Sprintf("Function has too many lines (%d). Maximum allowed is %d.", lines, maxLinesPerFunctionLimit))
52
+ }
53
53
  }
54
54
 
55
55
  func init() {
56
- Register(maxLinesPerFunction{})
56
+ Register(maxLinesPerFunction{})
57
57
  }
@@ -15,9 +15,9 @@
15
15
  package linthost
16
16
 
17
17
  import (
18
- "fmt"
18
+ "fmt"
19
19
 
20
- shimast "github.com/microsoft/typescript-go/shim/ast"
20
+ shimast "github.com/microsoft/typescript-go/shim/ast"
21
21
  )
22
22
 
23
23
  // maxNestedCallbacksLimit is the callback-nesting ceiling. Above this
@@ -29,33 +29,33 @@ type maxNestedCallbacks struct{}
29
29
 
30
30
  func (maxNestedCallbacks) Name() string { return "max-nested-callbacks" }
31
31
  func (maxNestedCallbacks) Visits() []shimast.Kind {
32
- return []shimast.Kind{
33
- shimast.KindArrowFunction,
34
- shimast.KindFunctionExpression,
35
- }
32
+ return []shimast.Kind{
33
+ shimast.KindArrowFunction,
34
+ shimast.KindFunctionExpression,
35
+ }
36
36
  }
37
37
  func (maxNestedCallbacks) Check(ctx *Context, node *shimast.Node) {
38
- if node == nil {
39
- return
40
- }
41
- // Count this callback plus every callback ancestor up to the
42
- // SourceFile. Only ArrowFunction and FunctionExpression
43
- // contribute; FunctionDeclaration, methods, and accessors are
44
- // transparent because ESLint never pushes or pops its callback
45
- // stack on those node kinds.
46
- depth := 1
47
- for cur := node.Parent; cur != nil; cur = cur.Parent {
48
- switch cur.Kind {
49
- case shimast.KindArrowFunction, shimast.KindFunctionExpression:
50
- depth++
51
- }
52
- }
53
- if depth <= maxNestedCallbacksLimit {
54
- return
55
- }
56
- ctx.Report(node, fmt.Sprintf("Too many nested callbacks (%d). Maximum allowed is %d.", depth, maxNestedCallbacksLimit))
38
+ if node == nil {
39
+ return
40
+ }
41
+ // Count this callback plus every callback ancestor up to the
42
+ // SourceFile. Only ArrowFunction and FunctionExpression
43
+ // contribute; FunctionDeclaration, methods, and accessors are
44
+ // transparent because ESLint never pushes or pops its callback
45
+ // stack on those node kinds.
46
+ depth := 1
47
+ for cur := node.Parent; cur != nil; cur = cur.Parent {
48
+ switch cur.Kind {
49
+ case shimast.KindArrowFunction, shimast.KindFunctionExpression:
50
+ depth++
51
+ }
52
+ }
53
+ if depth <= maxNestedCallbacksLimit {
54
+ return
55
+ }
56
+ ctx.Report(node, fmt.Sprintf("Too many nested callbacks (%d). Maximum allowed is %d.", depth, maxNestedCallbacksLimit))
57
57
  }
58
58
 
59
59
  func init() {
60
- Register(maxNestedCallbacks{})
60
+ Register(maxNestedCallbacks{})
61
61
  }
@@ -9,9 +9,9 @@
9
9
  package linthost
10
10
 
11
11
  import (
12
- "fmt"
12
+ "fmt"
13
13
 
14
- shimast "github.com/microsoft/typescript-go/shim/ast"
14
+ shimast "github.com/microsoft/typescript-go/shim/ast"
15
15
  )
16
16
 
17
17
  // maxParamsLimit is the parameter-count ceiling. Above this value the
@@ -23,27 +23,27 @@ type maxParams struct{}
23
23
 
24
24
  func (maxParams) Name() string { return "max-params" }
25
25
  func (maxParams) Visits() []shimast.Kind {
26
- return []shimast.Kind{
27
- shimast.KindFunctionDeclaration,
28
- shimast.KindFunctionExpression,
29
- shimast.KindArrowFunction,
30
- shimast.KindMethodDeclaration,
31
- shimast.KindGetAccessor,
32
- shimast.KindSetAccessor,
33
- shimast.KindConstructor,
34
- }
26
+ return []shimast.Kind{
27
+ shimast.KindFunctionDeclaration,
28
+ shimast.KindFunctionExpression,
29
+ shimast.KindArrowFunction,
30
+ shimast.KindMethodDeclaration,
31
+ shimast.KindGetAccessor,
32
+ shimast.KindSetAccessor,
33
+ shimast.KindConstructor,
34
+ }
35
35
  }
36
36
  func (maxParams) Check(ctx *Context, node *shimast.Node) {
37
- if node == nil {
38
- return
39
- }
40
- params := node.Parameters()
41
- if len(params) <= maxParamsLimit {
42
- return
43
- }
44
- ctx.Report(node, fmt.Sprintf("Function has too many parameters (%d). Maximum allowed is %d.", len(params), maxParamsLimit))
37
+ if node == nil {
38
+ return
39
+ }
40
+ params := node.Parameters()
41
+ if len(params) <= maxParamsLimit {
42
+ return
43
+ }
44
+ ctx.Report(node, fmt.Sprintf("Function has too many parameters (%d). Maximum allowed is %d.", len(params), maxParamsLimit))
45
45
  }
46
46
 
47
47
  func init() {
48
- Register(maxParams{})
48
+ Register(maxParams{})
49
49
  }
@@ -10,9 +10,9 @@
10
10
  package linthost
11
11
 
12
12
  import (
13
- "fmt"
13
+ "fmt"
14
14
 
15
- shimast "github.com/microsoft/typescript-go/shim/ast"
15
+ shimast "github.com/microsoft/typescript-go/shim/ast"
16
16
  )
17
17
 
18
18
  // maxStatementsLimit is the statement-count ceiling. Above this value
@@ -24,36 +24,36 @@ type maxStatements struct{}
24
24
 
25
25
  func (maxStatements) Name() string { return "max-statements" }
26
26
  func (maxStatements) Visits() []shimast.Kind {
27
- return []shimast.Kind{
28
- shimast.KindFunctionDeclaration,
29
- shimast.KindFunctionExpression,
30
- shimast.KindArrowFunction,
31
- shimast.KindMethodDeclaration,
32
- }
27
+ return []shimast.Kind{
28
+ shimast.KindFunctionDeclaration,
29
+ shimast.KindFunctionExpression,
30
+ shimast.KindArrowFunction,
31
+ shimast.KindMethodDeclaration,
32
+ }
33
33
  }
34
34
  func (maxStatements) Check(ctx *Context, node *shimast.Node) {
35
- if node == nil {
36
- return
37
- }
38
- body := node.Body()
39
- if body == nil || body.Kind != shimast.KindBlock {
40
- return
41
- }
42
- block := body.AsBlock()
43
- if block == nil || block.Statements == nil {
44
- return
45
- }
46
- count := 0
47
- for _, stmt := range block.Statements.Nodes {
48
- if stmt != nil {
49
- count++
50
- }
51
- }
52
- if count > maxStatementsLimit {
53
- ctx.Report(node, fmt.Sprintf("Function has too many statements (%d). Maximum allowed is %d.", count, maxStatementsLimit))
54
- }
35
+ if node == nil {
36
+ return
37
+ }
38
+ body := node.Body()
39
+ if body == nil || body.Kind != shimast.KindBlock {
40
+ return
41
+ }
42
+ block := body.AsBlock()
43
+ if block == nil || block.Statements == nil {
44
+ return
45
+ }
46
+ count := 0
47
+ for _, stmt := range block.Statements.Nodes {
48
+ if stmt != nil {
49
+ count++
50
+ }
51
+ }
52
+ if count > maxStatementsLimit {
53
+ ctx.Report(node, fmt.Sprintf("Function has too many statements (%d). Maximum allowed is %d.", count, maxStatementsLimit))
54
+ }
55
55
  }
56
56
 
57
57
  func init() {
58
- Register(maxStatements{})
58
+ Register(maxStatements{})
59
59
  }
@@ -20,11 +20,11 @@ func (r nextjsRule) Visits() []shimast.Kind {
20
20
  func (r nextjsRule) Check(ctx *Context, node *shimast.Node) { r.check(ctx, node) }
21
21
 
22
22
  type nextjsImports struct {
23
- headFromNextHead map[string]bool
24
- headFromNextDocument map[string]bool
25
- scriptFromNextScript map[string]bool
26
- importsNextDocument []*shimast.Node
27
- importsNextHead []*shimast.Node
23
+ headFromNextHead map[string]bool
24
+ headFromNextDocument map[string]bool
25
+ scriptFromNextScript map[string]bool
26
+ importsNextDocument []*shimast.Node
27
+ importsNextHead []*shimast.Node
28
28
  }
29
29
 
30
30
  func nextjsGoogleFontDisplay(ctx *Context, file *shimast.Node) {