@ttsc/lint 0.13.0 → 0.14.0-dev.20260528

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 (467) hide show
  1. package/README.md +948 -69
  2. package/lib/defaultFormat.d.ts +9 -6
  3. package/lib/defaultFormat.js +9 -6
  4. package/lib/defaultFormat.js.map +1 -1
  5. package/lib/index.d.ts +46 -0
  6. package/lib/index.js +60 -37
  7. package/lib/index.js.map +1 -1
  8. package/lib/structures/ITtscLintConfig.d.ts +12 -6
  9. package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
  10. package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
  11. package/lib/structures/ITtscLintFormat.js.map +1 -0
  12. package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
  13. package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
  14. package/lib/structures/TtscLintRuleSetting.js.map +1 -0
  15. package/lib/structures/index.d.ts +3 -4
  16. package/lib/structures/index.js +3 -4
  17. package/lib/structures/index.js.map +1 -1
  18. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
  19. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
  20. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
  21. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
  22. package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
  23. package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
  24. package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
  25. package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
  26. package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
  27. package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
  28. package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
  29. package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
  30. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
  31. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
  32. package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
  33. package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
  34. package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
  35. package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
  36. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
  37. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
  38. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
  39. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
  40. package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
  41. package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
  42. package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
  43. package/lib/structures/rules/ITtscLintJestRules.js +3 -0
  44. package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
  45. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
  46. package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
  47. package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
  48. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
  49. package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
  50. package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
  51. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
  52. package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
  53. package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
  54. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
  55. package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
  56. package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
  57. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
  58. package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
  59. package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
  60. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
  61. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
  62. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
  63. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
  64. package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
  65. package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
  66. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
  67. package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
  68. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
  69. package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
  70. package/lib/structures/rules/ITtscLintReactRules.js +3 -0
  71. package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
  72. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
  73. package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
  74. package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
  75. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
  76. package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
  77. package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
  78. package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
  79. package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
  80. package/lib/structures/rules/ITtscLintRules.js.map +1 -0
  81. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
  82. package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
  83. package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
  84. package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
  85. package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
  86. package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
  87. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
  88. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
  89. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
  90. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
  91. package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
  92. package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
  93. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
  94. package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
  95. package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
  96. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
  97. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
  98. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
  99. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
  100. package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
  101. package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
  102. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
  103. package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
  104. package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
  105. package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
  106. package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
  107. package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
  108. package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
  109. package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
  110. package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
  111. package/lib/structures/rules/index.d.ts +31 -0
  112. package/lib/structures/rules/index.js +48 -0
  113. package/lib/structures/rules/index.js.map +1 -0
  114. package/linthost/ast_helpers.go +30 -5
  115. package/linthost/compile.go +33 -2
  116. package/linthost/config.go +48 -17
  117. package/linthost/config_format.go +9 -9
  118. package/linthost/directives.go +67 -25
  119. package/linthost/dispatch.go +14 -3
  120. package/linthost/engine.go +160 -40
  121. package/linthost/fix.go +2 -2
  122. package/linthost/flags_gen.go +17 -15
  123. package/linthost/host.go +40 -3
  124. package/linthost/lsp.go +747 -0
  125. package/linthost/print_dispatch.go +2 -2
  126. package/linthost/print_nodes_function.go +2 -2
  127. package/linthost/print_nodes_object.go +1 -1
  128. package/linthost/rule_names.go +14 -0
  129. package/linthost/rules_arrays.go +2 -2
  130. package/linthost/rules_boundaries.go +532 -0
  131. package/linthost/rules_camelcase.go +133 -0
  132. package/linthost/rules_complexity.go +94 -0
  133. package/linthost/rules_consistent_return.go +130 -0
  134. package/linthost/rules_console.go +1 -1
  135. package/linthost/rules_core_extra.go +739 -0
  136. package/linthost/rules_curly.go +70 -0
  137. package/linthost/rules_cypress.go +608 -0
  138. package/linthost/rules_debugger.go +2 -2
  139. package/linthost/rules_default_case.go +39 -0
  140. package/linthost/rules_default_case_last.go +46 -0
  141. package/linthost/rules_dupes.go +3 -3
  142. package/linthost/rules_empty.go +3 -3
  143. package/linthost/rules_escape.go +44 -24
  144. package/linthost/rules_eval.go +2 -2
  145. package/linthost/rules_finally.go +2 -2
  146. package/linthost/rules_format_jsdoc.go +1 -1
  147. package/linthost/rules_format_print_width.go +9 -9
  148. package/linthost/rules_format_quotes.go +1 -1
  149. package/linthost/rules_format_semi.go +1 -1
  150. package/linthost/rules_format_sort_imports.go +1 -1
  151. package/linthost/rules_format_trailing_comma.go +1 -1
  152. package/linthost/rules_functional.go +967 -0
  153. package/linthost/rules_gap.go +24 -45
  154. package/linthost/rules_grouped_accessor_pairs.go +87 -0
  155. package/linthost/rules_guard_for_in.go +198 -0
  156. package/linthost/rules_id_length.go +77 -0
  157. package/linthost/rules_imports.go +70 -2
  158. package/linthost/rules_init_declarations.go +53 -0
  159. package/linthost/rules_jest.go +618 -0
  160. package/linthost/rules_jsdoc.go +502 -0
  161. package/linthost/rules_jsx_a11y.go +1264 -0
  162. package/linthost/rules_logic.go +12 -12
  163. package/linthost/rules_loops.go +1 -1
  164. package/linthost/rules_max_classes_per_file.go +58 -0
  165. package/linthost/rules_max_depth.go +83 -0
  166. package/linthost/rules_max_lines.go +101 -0
  167. package/linthost/rules_max_lines_per_function.go +57 -0
  168. package/linthost/rules_max_nested_callbacks.go +61 -0
  169. package/linthost/rules_max_params.go +49 -0
  170. package/linthost/rules_max_statements.go +59 -0
  171. package/linthost/rules_misc.go +1 -1
  172. package/linthost/rules_nextjs.go +697 -0
  173. package/linthost/rules_no_else_return.go +75 -0
  174. package/linthost/rules_no_empty_named_blocks.go +91 -0
  175. package/linthost/rules_no_extend_native.go +51 -0
  176. package/linthost/rules_no_import_assign.go +140 -0
  177. package/linthost/rules_no_invalid_this.go +52 -0
  178. package/linthost/rules_no_loop_func.go +85 -0
  179. package/linthost/rules_no_magic_numbers.go +123 -0
  180. package/linthost/rules_no_mixed_operators.go +80 -0
  181. package/linthost/rules_no_param_reassign.go +98 -0
  182. package/linthost/rules_no_redeclare.go +270 -0
  183. package/linthost/rules_no_restricted_imports.go +105 -0
  184. package/linthost/rules_no_restricted_syntax.go +49 -0
  185. package/linthost/rules_no_shadow.go +147 -0
  186. package/linthost/rules_no_unreachable.go +77 -0
  187. package/linthost/rules_no_useless_assignment.go +120 -0
  188. package/linthost/rules_no_useless_constructor.go +245 -0
  189. package/linthost/rules_no_useless_return.go +51 -0
  190. package/linthost/rules_params.go +1 -1
  191. package/linthost/rules_playwright.go +788 -0
  192. package/linthost/rules_prefer_arrow_callback.go +124 -0
  193. package/linthost/rules_prefer_destructuring.go +98 -0
  194. package/linthost/rules_prefer_named_capture_group.go +129 -0
  195. package/linthost/rules_prefer_rest_params.go +94 -0
  196. package/linthost/rules_problems.go +41 -30
  197. package/linthost/rules_promise.go +1128 -73
  198. package/linthost/rules_protos.go +2 -2
  199. package/linthost/rules_react.go +773 -0
  200. package/linthost/rules_react_extras.go +227 -0
  201. package/linthost/rules_react_hooks.go +848 -0
  202. package/linthost/rules_react_perf.go +293 -0
  203. package/linthost/rules_react_refresh.go +583 -0
  204. package/linthost/rules_regexp.go +410 -0
  205. package/linthost/rules_security.go +830 -0
  206. package/linthost/rules_self.go +2 -2
  207. package/linthost/rules_solid.go +1073 -0
  208. package/linthost/rules_sort_imports.go +69 -0
  209. package/linthost/rules_sort_keys.go +134 -0
  210. package/linthost/rules_storybook.go +1176 -0
  211. package/linthost/rules_strings.go +4 -4
  212. package/linthost/rules_suggestions.go +38 -38
  213. package/linthost/rules_tanstack_query.go +844 -0
  214. package/linthost/rules_testing_library.go +1204 -0
  215. package/linthost/rules_throw.go +1 -1
  216. package/linthost/rules_ts.go +19 -19
  217. package/linthost/rules_ts_async.go +399 -0
  218. package/linthost/rules_ts_class_literal_property_style.go +115 -0
  219. package/linthost/rules_ts_consistent_type_exports.go +256 -0
  220. package/linthost/rules_ts_explicit_function_return_type.go +67 -0
  221. package/linthost/rules_ts_extra.go +155 -36
  222. package/linthost/rules_ts_no_base_to_string.go +218 -0
  223. package/linthost/rules_ts_no_confusing_void.go +72 -0
  224. package/linthost/rules_ts_no_deprecated.go +195 -0
  225. package/linthost/rules_ts_no_for_in_array.go +84 -0
  226. package/linthost/rules_ts_no_magic_numbers.go +124 -0
  227. package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
  228. package/linthost/rules_ts_no_misused_spread.go +104 -0
  229. package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
  230. package/linthost/rules_ts_no_restricted_types.go +62 -0
  231. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
  232. package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
  233. package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
  234. package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
  235. package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
  236. package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
  237. package/linthost/rules_ts_no_unsafe_argument.go +82 -0
  238. package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
  239. package/linthost/rules_ts_no_unsafe_call.go +82 -0
  240. package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
  241. package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
  242. package/linthost/rules_ts_no_unsafe_return.go +126 -0
  243. package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
  244. package/linthost/rules_ts_no_useless_constructor.go +52 -0
  245. package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
  246. package/linthost/rules_ts_parameter_properties.go +38 -0
  247. package/linthost/rules_ts_prefer_find.go +178 -0
  248. package/linthost/rules_ts_prefer_includes.go +255 -0
  249. package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
  250. package/linthost/rules_ts_prefer_optional_chain.go +228 -0
  251. package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
  252. package/linthost/rules_ts_prefer_readonly.go +73 -0
  253. package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
  254. package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
  255. package/linthost/rules_ts_prefer_return_this_type.go +135 -0
  256. package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
  257. package/linthost/rules_ts_promise_function_async.go +77 -0
  258. package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
  259. package/linthost/rules_ts_require_array_sort_compare.go +96 -0
  260. package/linthost/rules_ts_restrict_plus_operands.go +127 -0
  261. package/linthost/rules_ts_restrict_template_expressions.go +95 -0
  262. package/linthost/rules_ts_simple.go +387 -0
  263. package/linthost/rules_ts_sort_type_constituents.go +144 -0
  264. package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
  265. package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
  266. package/linthost/rules_ts_unbound_method.go +126 -0
  267. package/linthost/rules_tsdoc.go +136 -0
  268. package/linthost/rules_unicorn_better_regex.go +27 -0
  269. package/linthost/rules_unicorn_catch_error_name.go +46 -0
  270. package/linthost/rules_unicorn_consistent_assert.go +47 -0
  271. package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
  272. package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
  273. package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
  274. package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
  275. package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
  276. package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
  277. package/linthost/rules_unicorn_custom_error_definition.go +138 -0
  278. package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
  279. package/linthost/rules_unicorn_error_message.go +64 -0
  280. package/linthost/rules_unicorn_escape_case.go +51 -0
  281. package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
  282. package/linthost/rules_unicorn_explicit_length_check.go +88 -0
  283. package/linthost/rules_unicorn_filename_case.go +29 -0
  284. package/linthost/rules_unicorn_import_style.go +28 -0
  285. package/linthost/rules_unicorn_isolated_functions.go +29 -0
  286. package/linthost/rules_unicorn_new_for_builtins.go +87 -0
  287. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
  288. package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
  289. package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
  290. package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
  291. package/linthost/rules_unicorn_no_array_for_each.go +40 -0
  292. package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
  293. package/linthost/rules_unicorn_no_array_reduce.go +41 -0
  294. package/linthost/rules_unicorn_no_array_reverse.go +44 -0
  295. package/linthost/rules_unicorn_no_array_sort.go +43 -0
  296. package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
  297. package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
  298. package/linthost/rules_unicorn_no_console_spaces.go +61 -0
  299. package/linthost/rules_unicorn_no_document_cookie.go +41 -0
  300. package/linthost/rules_unicorn_no_empty_file.go +44 -0
  301. package/linthost/rules_unicorn_no_for_loop.go +102 -0
  302. package/linthost/rules_unicorn_no_hex_escape.go +42 -0
  303. package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
  304. package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
  305. package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
  306. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
  307. package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
  308. package/linthost/rules_unicorn_no_lonely_if.go +44 -0
  309. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
  310. package/linthost/rules_unicorn_no_named_default.go +54 -0
  311. package/linthost/rules_unicorn_no_negated_condition.go +85 -0
  312. package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
  313. package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
  314. package/linthost/rules_unicorn_no_new_array.go +30 -0
  315. package/linthost/rules_unicorn_no_new_buffer.go +31 -0
  316. package/linthost/rules_unicorn_no_null.go +24 -0
  317. package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
  318. package/linthost/rules_unicorn_no_process_exit.go +43 -0
  319. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
  320. package/linthost/rules_unicorn_no_static_only_class.go +56 -0
  321. package/linthost/rules_unicorn_no_thenable.go +74 -0
  322. package/linthost/rules_unicorn_no_this_assignment.go +35 -0
  323. package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
  324. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
  325. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
  326. package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
  327. package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
  328. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
  329. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
  330. package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
  331. package/linthost/rules_unicorn_no_unused_properties.go +30 -0
  332. package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
  333. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
  334. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
  335. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
  336. package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
  337. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
  338. package/linthost/rules_unicorn_no_useless_spread.go +67 -0
  339. package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
  340. package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
  341. package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
  342. package/linthost/rules_unicorn_number_literal_case.go +69 -0
  343. package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
  344. package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
  345. package/linthost/rules_unicorn_prefer_array_find.go +51 -0
  346. package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
  347. package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
  348. package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
  349. package/linthost/rules_unicorn_prefer_array_some.go +67 -0
  350. package/linthost/rules_unicorn_prefer_at.go +77 -0
  351. package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
  352. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
  353. package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
  354. package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
  355. package/linthost/rules_unicorn_prefer_code_point.go +49 -0
  356. package/linthost/rules_unicorn_prefer_date_now.go +78 -0
  357. package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
  358. package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
  359. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
  360. package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
  361. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
  362. package/linthost/rules_unicorn_prefer_event_target.go +36 -0
  363. package/linthost/rules_unicorn_prefer_export_from.go +129 -0
  364. package/linthost/rules_unicorn_prefer_global_this.go +127 -0
  365. package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
  366. package/linthost/rules_unicorn_prefer_includes.go +149 -0
  367. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
  368. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
  369. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
  370. package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
  371. package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
  372. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
  373. package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
  374. package/linthost/rules_unicorn_prefer_module.go +50 -0
  375. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
  376. package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
  377. package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
  378. package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
  379. package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
  380. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
  381. package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
  382. package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
  383. package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
  384. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
  385. package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
  386. package/linthost/rules_unicorn_prefer_set_has.go +42 -0
  387. package/linthost/rules_unicorn_prefer_set_size.go +48 -0
  388. package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
  389. package/linthost/rules_unicorn_prefer_single_call.go +96 -0
  390. package/linthost/rules_unicorn_prefer_spread.go +51 -0
  391. package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
  392. package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
  393. package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
  394. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
  395. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
  396. package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
  397. package/linthost/rules_unicorn_prefer_switch.go +103 -0
  398. package/linthost/rules_unicorn_prefer_ternary.go +71 -0
  399. package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
  400. package/linthost/rules_unicorn_prefer_type_error.go +127 -0
  401. package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
  402. package/linthost/rules_unicorn_relative_url_style.go +49 -0
  403. package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
  404. package/linthost/rules_unicorn_require_module_attributes.go +54 -0
  405. package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
  406. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
  407. package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
  408. package/linthost/rules_unicorn_string_content.go +27 -0
  409. package/linthost/rules_unicorn_switch_case_braces.go +42 -0
  410. package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
  411. package/linthost/rules_unicorn_template_indent.go +28 -0
  412. package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
  413. package/linthost/rules_unicorn_throw_new_error.go +61 -0
  414. package/linthost/rules_var.go +10 -4
  415. package/linthost/rules_vitest.go +568 -0
  416. package/package.json +3 -3
  417. package/plugin/main.go +49 -3
  418. package/rule/astutil/astutil.go +10 -3
  419. package/rule/rule.go +12 -10
  420. package/src/defaultFormat.ts +11 -8
  421. package/src/index.ts +65 -43
  422. package/src/structures/ITtscLintConfig.ts +12 -6
  423. package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
  424. package/src/structures/TtscLintRuleSetting.ts +55 -0
  425. package/src/structures/index.ts +3 -4
  426. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
  427. package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
  428. package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
  429. package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
  430. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
  431. package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
  432. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
  433. package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
  434. package/src/structures/rules/ITtscLintJestRules.ts +220 -0
  435. package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
  436. package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
  437. package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
  438. package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
  439. package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
  440. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
  441. package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
  442. package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
  443. package/src/structures/rules/ITtscLintReactRules.ts +321 -0
  444. package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
  445. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
  446. package/src/structures/rules/ITtscLintRules.ts +77 -0
  447. package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
  448. package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
  449. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
  450. package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
  451. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
  452. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
  453. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
  454. package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
  455. package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
  456. package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
  457. package/src/structures/rules/index.ts +31 -0
  458. package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
  459. package/lib/structures/TtscLintRule.d.ts +0 -17
  460. package/lib/structures/TtscLintRule.js.map +0 -1
  461. package/lib/structures/TtscLintRuleMap.d.ts +0 -46
  462. package/lib/structures/TtscLintRuleMap.js.map +0 -1
  463. package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
  464. package/lib/structures/TtscLintRuleOptions.js.map +0 -1
  465. package/src/structures/TtscLintRule.ts +0 -160
  466. package/src/structures/TtscLintRuleMap.ts +0 -55
  467. package/src/structures/TtscLintRuleOptions.ts +0 -151
@@ -0,0 +1,154 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+
3
+ /**
4
+ * Vitest test source rules from `@vitest/eslint-plugin`.
5
+ *
6
+ * Vitest reuses much of Jest's testing surface but ships its own
7
+ * runner and configuration. These rules mirror the ergonomic subset
8
+ * of `eslint-plugin-jest` adapted for Vitest semantics — focused
9
+ * tests, identical titles, conditional logic, valid `expect` shape.
10
+ *
11
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest
12
+ */
13
+ export interface ITtscLintVitestRules {
14
+ /**
15
+ * Require every Vitest test body to contain at least one
16
+ * `expect(...)` call. A test with no assertions still passes,
17
+ * giving a false-positive signal.
18
+ *
19
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
20
+ */
21
+ "vitest/expect-expect"?: TtscLintRuleSetting;
22
+
23
+ /**
24
+ * Reject `expect(...)` calls under `if`/`try`/`catch` or other
25
+ * conditional branches in Vitest tests.
26
+ *
27
+ * A branch that never runs turns the assertion into a silent no-op
28
+ * rather than a failure.
29
+ *
30
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md
31
+ */
32
+ "vitest/no-conditional-expect"?: TtscLintRuleSetting;
33
+
34
+ /**
35
+ * Reject `test(...)`/`it(...)` declarations inside loops or `if`
36
+ * branches.
37
+ *
38
+ * Vitest collects tests at module load, so a conditional
39
+ * declaration produces a different suite shape than the file
40
+ * appears to describe.
41
+ *
42
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md
43
+ */
44
+ "vitest/no-conditional-tests"?: TtscLintRuleSetting;
45
+
46
+ /**
47
+ * Reject `test.skip`, `it.skip`, `describe.skip`, and `.todo`
48
+ * variants.
49
+ *
50
+ * Disabled tests rot in place and quietly drop coverage for the
51
+ * feature they were meant to pin.
52
+ *
53
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md
54
+ */
55
+ "vitest/no-disabled-tests"?: TtscLintRuleSetting;
56
+
57
+ /**
58
+ * Reject `done` callback parameters in Vitest tests and
59
+ * lifecycle hooks.
60
+ *
61
+ * The callback style predates async/await and makes failure
62
+ * propagation easy to miss; return a Promise or mark the body
63
+ * `async` instead.
64
+ *
65
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md
66
+ */
67
+ "vitest/no-done-callback"?: TtscLintRuleSetting;
68
+
69
+ /**
70
+ * Reject `test.only`, `it.only`, and `describe.only`.
71
+ *
72
+ * A focused suite silently skips the rest of the file, so a stray
73
+ * `.only` left from debugging hides every other test in CI.
74
+ *
75
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md
76
+ */
77
+ "vitest/no-focused-tests"?: TtscLintRuleSetting;
78
+
79
+ /**
80
+ * Reject duplicate Vitest test or `describe` titles within the
81
+ * same suite scope.
82
+ *
83
+ * The runner cannot disambiguate two siblings with identical names
84
+ * in its error output or filter flags.
85
+ *
86
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md
87
+ */
88
+ "vitest/no-identical-title"?: TtscLintRuleSetting;
89
+
90
+ /**
91
+ * Reject `expect(...)` calls outside Vitest tests and hooks.
92
+ *
93
+ * Top-level assertions execute at module load before any test
94
+ * starts, so failures never attach to a named case.
95
+ *
96
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md
97
+ */
98
+ "vitest/no-standalone-expect"?: TtscLintRuleSetting;
99
+
100
+ /**
101
+ * Reject `return` statements that return non-Promise values from
102
+ * a Vitest test callback.
103
+ *
104
+ * The runner ignores the value and following code is dead, which
105
+ * usually masks a missing `await` or stray early-exit.
106
+ *
107
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md
108
+ */
109
+ "vitest/no-test-return-statement"?: TtscLintRuleSetting;
110
+
111
+ /**
112
+ * Prefer `expect(value).toHaveLength(n)` over asserting on
113
+ * `value.length` with `toBe`.
114
+ *
115
+ * The dedicated matcher reports the actual length on failure
116
+ * instead of a bare number mismatch.
117
+ *
118
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md
119
+ */
120
+ "vitest/prefer-to-have-length"?: TtscLintRuleSetting;
121
+
122
+ /**
123
+ * Validate the shape of Vitest `describe` callbacks.
124
+ *
125
+ * The callback must be synchronous and take no arguments — the
126
+ * runner ignores returned Promises and `done`-style parameters at
127
+ * the describe level.
128
+ *
129
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md
130
+ */
131
+ "vitest/valid-describe-callback"?: TtscLintRuleSetting;
132
+
133
+ /**
134
+ * Validate `expect(...)` arity and matcher chaining: exactly one
135
+ * argument, terminated by a matcher call, and async matchers
136
+ * properly awaited.
137
+ *
138
+ * Malformed expects either throw at runtime or pass without
139
+ * asserting anything.
140
+ *
141
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md
142
+ */
143
+ "vitest/valid-expect"?: TtscLintRuleSetting;
144
+
145
+ /**
146
+ * Require non-empty static Vitest test and `describe` titles.
147
+ *
148
+ * Empty or dynamically-built titles produce unreadable failure
149
+ * output and break filter-by-name flags.
150
+ *
151
+ * @reference https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md
152
+ */
153
+ "vitest/valid-title"?: TtscLintRuleSetting;
154
+ }
@@ -0,0 +1,31 @@
1
+ export * from "./ITtscLintBoundariesRuleOptions";
2
+ export * from "./ITtscLintBoundariesRules";
3
+ export * from "./ITtscLintContributorRules";
4
+ export * from "./ITtscLintCoreRules";
5
+ export * from "./ITtscLintCypressRuleOptions";
6
+ export * from "./ITtscLintCypressRules";
7
+ export * from "./ITtscLintFunctionalRuleOptions";
8
+ export * from "./ITtscLintFunctionalRules";
9
+ export * from "./ITtscLintJestRules";
10
+ export * from "./ITtscLintJsdocRules";
11
+ export * from "./ITtscLintJsxA11yRules";
12
+ export * from "./ITtscLintNextjsRules";
13
+ export * from "./ITtscLintPlaywrightRules";
14
+ export * from "./ITtscLintPromiseRules";
15
+ export * from "./ITtscLintReactPerfRuleOptions";
16
+ export * from "./ITtscLintReactPerfRules";
17
+ export * from "./ITtscLintReactRuleOptions";
18
+ export * from "./ITtscLintReactRules";
19
+ export * from "./ITtscLintRegexpRules";
20
+ export * from "./ITtscLintRuleOptionsMap";
21
+ export * from "./ITtscLintRules";
22
+ export * from "./ITtscLintSecurityRules";
23
+ export * from "./ITtscLintSolidRules";
24
+ export * from "./ITtscLintStorybookRuleOptions";
25
+ export * from "./ITtscLintStorybookRules";
26
+ export * from "./ITtscLintTanstackQueryRules";
27
+ export * from "./ITtscLintTestingLibraryRuleOptions";
28
+ export * from "./ITtscLintTestingLibraryRules";
29
+ export * from "./ITtscLintTypeScriptRules";
30
+ export * from "./ITtscLintUnicornRules";
31
+ export * from "./ITtscLintVitestRules";
@@ -1 +0,0 @@
1
- {"version":3,"file":"ITtscLintFormatConfig.js","sourceRoot":"","sources":["../../src/structures/ITtscLintFormatConfig.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- /**
2
- * Union of every built-in lint rule name understood by the `@ttsc/lint` native
3
- * sidecar.
4
- *
5
- * These names intentionally mirror familiar ESLint / TypeScript-ESLint rule
6
- * names so a `compilerOptions.plugins[]` entry can configure native linting
7
- * without introducing a separate lint config file.
8
- *
9
- * The `format/*` members at the bottom of the union are applied by `ttsc
10
- * format`; their severity also controls whether `ttsc check` surfaces
11
- * unformatted code as a diagnostic.
12
- *
13
- * This type is used as the key constraint in `TtscLintRuleMap` for rules that
14
- * carry no per-rule options. Rules with typed option objects are additionally
15
- * listed in `ITtscLintRuleOptionsMap`.
16
- */
17
- export type TtscLintRule = "adjacent-overload-signatures" | "array-type" | "await-thenable" | "ban-ts-comment" | "ban-tslint-comment" | "consistent-indexed-object-style" | "consistent-type-assertions" | "consistent-type-definitions" | "consistent-type-imports" | "default-param-last" | "dot-notation" | "eqeqeq" | "for-direction" | "no-alert" | "no-array-constructor" | "no-array-delete" | "no-async-promise-executor" | "no-bitwise" | "no-caller" | "no-case-declarations" | "no-class-assign" | "no-compare-neg-zero" | "no-cond-assign" | "no-confusing-non-null-assertion" | "no-console" | "no-constant-condition" | "no-continue" | "no-control-regex" | "no-debugger" | "no-delete-var" | "no-dupe-args" | "no-dupe-else-if" | "no-dupe-keys" | "no-duplicate-case" | "no-duplicate-enum-values" | "no-dynamic-delete" | "no-empty" | "no-empty-character-class" | "no-empty-function" | "no-empty-interface" | "no-empty-object-type" | "no-empty-pattern" | "no-empty-static-block" | "no-eq-null" | "no-eval" | "no-ex-assign" | "no-explicit-any" | "no-extra-bind" | "no-extra-boolean-cast" | "no-extra-non-null-assertion" | "no-fallthrough" | "no-func-assign" | "no-import-type-side-effects" | "no-inferrable-types" | "no-inner-declarations" | "no-irregular-whitespace" | "no-iterator" | "no-labels" | "no-lone-blocks" | "no-lonely-if" | "no-loss-of-precision" | "no-misleading-character-class" | "no-misused-new" | "no-mixed-enums" | "no-multi-assign" | "no-multi-str" | "no-namespace" | "no-negated-condition" | "no-nested-ternary" | "no-new" | "no-new-func" | "no-new-wrappers" | "no-non-null-asserted-nullish-coalescing" | "no-non-null-asserted-optional-chain" | "no-non-null-assertion" | "no-obj-calls" | "no-object-constructor" | "no-octal" | "no-octal-escape" | "no-plusplus" | "no-promise-executor-return" | "no-proto" | "no-prototype-builtins" | "no-regex-spaces" | "no-require-imports" | "no-return-assign" | "no-script-url" | "no-self-assign" | "no-self-compare" | "no-sequences" | "no-setter-return" | "no-shadow-restricted-names" | "no-sparse-arrays" | "no-template-curly-in-string" | "no-this-alias" | "no-throw-literal" | "no-undef-init" | "no-undefined" | "no-unnecessary-type-constraint" | "no-unneeded-ternary" | "no-unsafe-declaration-merging" | "no-unsafe-finally" | "no-unsafe-function-type" | "no-unsafe-negation" | "no-unused-expressions" | "no-unused-labels" | "no-useless-call" | "no-useless-catch" | "no-useless-computed-key" | "no-useless-concat" | "no-useless-constructor" | "no-useless-escape" | "no-useless-rename" | "no-var" | "no-with" | "no-wrapper-object-types" | "object-shorthand" | "operator-assignment" | "prefer-as-const" | "prefer-const" | "prefer-enum-initializers" | "prefer-exponentiation-operator" | "prefer-for-of" | "prefer-function-type" | "prefer-literal-enum-member" | "prefer-namespace-keyword" | "prefer-spread" | "prefer-template" | "radix" | "require-yield" | "triple-slash-reference" | "use-isnan" | "valid-typeof" | "vars-on-top" | "yoda" | "format/semi" | "format/quotes" | "format/trailing-comma" | "format/sort-imports" | "format/jsdoc" | "format/print-width";
@@ -1 +0,0 @@
1
- {"version":3,"file":"TtscLintRule.js","sourceRoot":"","sources":["../../src/structures/TtscLintRule.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- import type { TtscLintRule } from "./TtscLintRule";
2
- import type { ITtscLintRuleOptionsMap } from "./TtscLintRuleOptions";
3
- import type { TtscLintSeverity } from "./TtscLintSeverity";
4
- /**
5
- * Rule-name → severity or severity-tuple map.
6
- *
7
- * Built from two independent mapped types intersected together:
8
- *
9
- * - Rules listed in `ITtscLintRuleOptionsMap` accept `severity`, `[severity]`, or
10
- * `[severity, options]`, with the options type picked per rule key.
11
- * - Every other built-in rule accepts `severity` or `[severity]`.
12
- * - Namespaced contributor plugin rules accept `severity`, `[severity]`, or
13
- * `[severity, unknownOptions]` because the host type surface no longer knows
14
- * contributor rule schemas.
15
- *
16
- * Splitting the two halves (instead of folding them into one mapped type with a
17
- * conditional value) keeps TypeScript's contextual typing intact inside the
18
- * options object literal: typing
19
- *
20
- * ```ts
21
- * rules: {
22
- * "format/sort-imports": ["warning", { importOrder: [...] }],
23
- * "no-var": "error",
24
- * }
25
- * ```
26
- *
27
- * Yields exact autocomplete on `importOrder`, `importOrderSeparation`, etc.,
28
- * while `no-var` rejects any tuple beyond a bare severity.
29
- *
30
- * The `(string & {})` widener is intentionally absent: typos in rule names
31
- * produce a `TS2353` excess-property error when the literal is checked in
32
- * isolation (e.g. one negative-case-per-const). When the literal also carries
33
- * other shape-incompatible entries — e.g. `prefre` typo on `format/quotes` next
34
- * to the rule-name typo — TS sometimes elides the rule-name error after
35
- * reporting the option-key error first. The test at
36
- * `tests/test-lint/.../test_lib_index_d_ts_rule_options_autocomplete_per_rule.ts`
37
- * splits each negative case into its own const to keep every branch
38
- * load-bearing.
39
- */
40
- export type TtscLintRuleMap = {
41
- [K in keyof ITtscLintRuleOptionsMap]?: TtscLintSeverity | readonly [TtscLintSeverity] | readonly [TtscLintSeverity, ITtscLintRuleOptionsMap[K]];
42
- } & {
43
- [K in Exclude<TtscLintRule, keyof ITtscLintRuleOptionsMap>]?: TtscLintSeverity | readonly [TtscLintSeverity];
44
- } & {
45
- [K in `${string}/${string}`]?: TtscLintSeverity | readonly [TtscLintSeverity] | readonly [TtscLintSeverity, unknown];
46
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"TtscLintRuleMap.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleMap.ts"],"names":[],"mappings":""}
@@ -1,137 +0,0 @@
1
- /** `format/semi` rule options. */
2
- export interface ITtscLintSemiRuleOptions {
3
- /**
4
- * Whether trailing semicolons must be present on ASI statements.
5
- *
6
- * @default "always"
7
- */
8
- prefer?: "always" | "never";
9
- }
10
- /** `format/quotes` rule options. */
11
- export interface ITtscLintQuotesRuleOptions {
12
- /**
13
- * Quote style for string literals. Template literals are always preserved
14
- * regardless of this setting.
15
- *
16
- * @default "double"
17
- */
18
- prefer?: "double" | "single";
19
- }
20
- /** `format/trailing-comma` rule options. */
21
- export interface ITtscLintTrailingCommaRuleOptions {
22
- /**
23
- * Which multi-line lists receive a trailing comma. `"all"` matches prettier's
24
- * modern default; `"es5"` skips function calls and type parameter lists;
25
- * `"none"` disables the rule entirely.
26
- *
27
- * @default "all"
28
- */
29
- mode?: "all" | "es5" | "none";
30
- }
31
- /** `format/sort-imports` rule options. */
32
- export interface ITtscLintSortImportsRuleOptions {
33
- /**
34
- * Ordered list of regex strings (or the `<THIRD_PARTY_MODULES>` placeholder)
35
- * defining the group order. Imports matching the first pattern land in group
36
- * 0, the second in group 1, and so on. The placeholder absorbs any specifier
37
- * that does not match another pattern. Mirrors trivago's `importOrder`
38
- * semantics.
39
- */
40
- importOrder?: readonly string[];
41
- /**
42
- * Insert a blank line between groups.
43
- *
44
- * @default true
45
- */
46
- importOrderSeparation?: boolean;
47
- /**
48
- * Sort named import specifiers alphabetically within each declaration.
49
- *
50
- * @default true
51
- */
52
- importOrderSortSpecifiers?: boolean;
53
- /**
54
- * Treat `A` and `a` as equivalent when comparing module specifiers and
55
- * specifier names. Mirrors trivago's `importOrderCaseInsensitive`.
56
- *
57
- * @default false
58
- */
59
- importOrderCaseInsensitive?: boolean;
60
- }
61
- /** `format/print-width` rule options. */
62
- export interface ITtscLintPrintWidthRuleOptions {
63
- /**
64
- * Maximum column width before broken-form layout is chosen. Mirrors
65
- * prettier's `printWidth`.
66
- *
67
- * @default 80
68
- */
69
- printWidth?: number;
70
- /**
71
- * Indentation increment in columns. Mirrors prettier's `tabWidth`.
72
- *
73
- * @default 2
74
- */
75
- tabWidth?: number;
76
- /**
77
- * Emit indentation as tab characters rather than spaces. Mirrors prettier's
78
- * `useTabs`. Continuation alignment beyond the tab boundary still falls back
79
- * to spaces, matching dprint's "indent with tabs, align with spaces"
80
- * convention.
81
- *
82
- * @default false
83
- */
84
- useTabs?: boolean;
85
- /**
86
- * Line-terminator emitted on every newline the printer inserts. Mirrors
87
- * prettier's `endOfLine` `"lf"` and `"crlf"` modes.
88
- *
89
- * @default "lf"
90
- */
91
- endOfLine?: "lf" | "crlf";
92
- /**
93
- * Trailing-comma policy the reflow honors when it breaks a list across
94
- * lines. Mirrors prettier's `trailingComma` and must match the
95
- * `format/trailing-comma` rule's `mode`; otherwise the two rules
96
- * disagree on every cascade pass and oscillate against each other.
97
- *
98
- * When a `format` block is configured, `format.trailingComma` is mirrored
99
- * into this option automatically. Set it directly only when overriding
100
- * the print-width rule via a `rules` tuple — see the conflict-resolution
101
- * notes in the README.
102
- *
103
- * @default "all"
104
- */
105
- trailingComma?: "all" | "es5" | "none";
106
- }
107
- /** `format/jsdoc` rule options. */
108
- export interface ITtscLintJsdocRuleOptions {
109
- /**
110
- * Extra `from -> to` tag rewrites layered on top of the built-in synonym
111
- * table (`@return -> @returns`, `@arg -> @param`, etc.). User-supplied
112
- * entries win on key collision, so a `{"return": "RETURN"}` entry overrides
113
- * the built-in default for `@return`.
114
- *
115
- * @default {} (use built-in table unchanged)
116
- */
117
- tagSynonyms?: Record<string, string>;
118
- /**
119
- * Sort JSDoc tag blocks into the canonical order (`@description`, `@param`,
120
- * `@returns`, ...).
121
- *
122
- * @default false (deferred; MVP only normalizes tag names)
123
- */
124
- sortTags?: boolean;
125
- }
126
- /**
127
- * Index from rule name to its option object. `TtscLintRuleMap` uses this to
128
- * produce precise tuple types per rule.
129
- */
130
- export interface ITtscLintRuleOptionsMap {
131
- "format/semi": ITtscLintSemiRuleOptions;
132
- "format/quotes": ITtscLintQuotesRuleOptions;
133
- "format/trailing-comma": ITtscLintTrailingCommaRuleOptions;
134
- "format/sort-imports": ITtscLintSortImportsRuleOptions;
135
- "format/jsdoc": ITtscLintJsdocRuleOptions;
136
- "format/print-width": ITtscLintPrintWidthRuleOptions;
137
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"TtscLintRuleOptions.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleOptions.ts"],"names":[],"mappings":""}
@@ -1,160 +0,0 @@
1
- /**
2
- * Union of every built-in lint rule name understood by the `@ttsc/lint` native
3
- * sidecar.
4
- *
5
- * These names intentionally mirror familiar ESLint / TypeScript-ESLint rule
6
- * names so a `compilerOptions.plugins[]` entry can configure native linting
7
- * without introducing a separate lint config file.
8
- *
9
- * The `format/*` members at the bottom of the union are applied by `ttsc
10
- * format`; their severity also controls whether `ttsc check` surfaces
11
- * unformatted code as a diagnostic.
12
- *
13
- * This type is used as the key constraint in `TtscLintRuleMap` for rules that
14
- * carry no per-rule options. Rules with typed option objects are additionally
15
- * listed in `ITtscLintRuleOptionsMap`.
16
- */
17
- export type TtscLintRule =
18
- | "adjacent-overload-signatures"
19
- | "array-type"
20
- | "await-thenable"
21
- | "ban-ts-comment"
22
- | "ban-tslint-comment"
23
- | "consistent-indexed-object-style"
24
- | "consistent-type-assertions"
25
- | "consistent-type-definitions"
26
- | "consistent-type-imports"
27
- | "default-param-last"
28
- | "dot-notation"
29
- | "eqeqeq"
30
- | "for-direction"
31
- | "no-alert"
32
- | "no-array-constructor"
33
- | "no-array-delete"
34
- | "no-async-promise-executor"
35
- | "no-bitwise"
36
- | "no-caller"
37
- | "no-case-declarations"
38
- | "no-class-assign"
39
- | "no-compare-neg-zero"
40
- | "no-cond-assign"
41
- | "no-confusing-non-null-assertion"
42
- | "no-console"
43
- | "no-constant-condition"
44
- | "no-continue"
45
- | "no-control-regex"
46
- | "no-debugger"
47
- | "no-delete-var"
48
- | "no-dupe-args"
49
- | "no-dupe-else-if"
50
- | "no-dupe-keys"
51
- | "no-duplicate-case"
52
- | "no-duplicate-enum-values"
53
- | "no-dynamic-delete"
54
- | "no-empty"
55
- | "no-empty-character-class"
56
- | "no-empty-function"
57
- | "no-empty-interface"
58
- | "no-empty-object-type"
59
- | "no-empty-pattern"
60
- | "no-empty-static-block"
61
- | "no-eq-null"
62
- | "no-eval"
63
- | "no-ex-assign"
64
- | "no-explicit-any"
65
- | "no-extra-bind"
66
- | "no-extra-boolean-cast"
67
- | "no-extra-non-null-assertion"
68
- | "no-fallthrough"
69
- | "no-func-assign"
70
- | "no-import-type-side-effects"
71
- | "no-inferrable-types"
72
- | "no-inner-declarations"
73
- | "no-irregular-whitespace"
74
- | "no-iterator"
75
- | "no-labels"
76
- | "no-lone-blocks"
77
- | "no-lonely-if"
78
- | "no-loss-of-precision"
79
- | "no-misleading-character-class"
80
- | "no-misused-new"
81
- | "no-mixed-enums"
82
- | "no-multi-assign"
83
- | "no-multi-str"
84
- | "no-namespace"
85
- | "no-negated-condition"
86
- | "no-nested-ternary"
87
- | "no-new"
88
- | "no-new-func"
89
- | "no-new-wrappers"
90
- | "no-non-null-asserted-nullish-coalescing"
91
- | "no-non-null-asserted-optional-chain"
92
- | "no-non-null-assertion"
93
- | "no-obj-calls"
94
- | "no-object-constructor"
95
- | "no-octal"
96
- | "no-octal-escape"
97
- | "no-plusplus"
98
- | "no-promise-executor-return"
99
- | "no-proto"
100
- | "no-prototype-builtins"
101
- | "no-regex-spaces"
102
- | "no-require-imports"
103
- | "no-return-assign"
104
- | "no-script-url"
105
- | "no-self-assign"
106
- | "no-self-compare"
107
- | "no-sequences"
108
- | "no-setter-return"
109
- | "no-shadow-restricted-names"
110
- | "no-sparse-arrays"
111
- | "no-template-curly-in-string"
112
- | "no-this-alias"
113
- | "no-throw-literal"
114
- | "no-undef-init"
115
- | "no-undefined"
116
- | "no-unnecessary-type-constraint"
117
- | "no-unneeded-ternary"
118
- | "no-unsafe-declaration-merging"
119
- | "no-unsafe-finally"
120
- | "no-unsafe-function-type"
121
- | "no-unsafe-negation"
122
- | "no-unused-expressions"
123
- | "no-unused-labels"
124
- | "no-useless-call"
125
- | "no-useless-catch"
126
- | "no-useless-computed-key"
127
- | "no-useless-concat"
128
- | "no-useless-constructor"
129
- | "no-useless-escape"
130
- | "no-useless-rename"
131
- | "no-var"
132
- | "no-with"
133
- | "no-wrapper-object-types"
134
- | "object-shorthand"
135
- | "operator-assignment"
136
- | "prefer-as-const"
137
- | "prefer-const"
138
- | "prefer-enum-initializers"
139
- | "prefer-exponentiation-operator"
140
- | "prefer-for-of"
141
- | "prefer-function-type"
142
- | "prefer-literal-enum-member"
143
- | "prefer-namespace-keyword"
144
- | "prefer-spread"
145
- | "prefer-template"
146
- | "radix"
147
- | "require-yield"
148
- | "triple-slash-reference"
149
- | "use-isnan"
150
- | "valid-typeof"
151
- | "vars-on-top"
152
- | "yoda"
153
- // Format rules — applied by `ttsc format`. Severity also controls
154
- // whether `ttsc check` surfaces unformatted code as a diagnostic.
155
- | "format/semi"
156
- | "format/quotes"
157
- | "format/trailing-comma"
158
- | "format/sort-imports"
159
- | "format/jsdoc"
160
- | "format/print-width";
@@ -1,55 +0,0 @@
1
- import type { TtscLintRule } from "./TtscLintRule";
2
- import type { ITtscLintRuleOptionsMap } from "./TtscLintRuleOptions";
3
- import type { TtscLintSeverity } from "./TtscLintSeverity";
4
-
5
- /**
6
- * Rule-name → severity or severity-tuple map.
7
- *
8
- * Built from two independent mapped types intersected together:
9
- *
10
- * - Rules listed in `ITtscLintRuleOptionsMap` accept `severity`, `[severity]`, or
11
- * `[severity, options]`, with the options type picked per rule key.
12
- * - Every other built-in rule accepts `severity` or `[severity]`.
13
- * - Namespaced contributor plugin rules accept `severity`, `[severity]`, or
14
- * `[severity, unknownOptions]` because the host type surface no longer knows
15
- * contributor rule schemas.
16
- *
17
- * Splitting the two halves (instead of folding them into one mapped type with a
18
- * conditional value) keeps TypeScript's contextual typing intact inside the
19
- * options object literal: typing
20
- *
21
- * ```ts
22
- * rules: {
23
- * "format/sort-imports": ["warning", { importOrder: [...] }],
24
- * "no-var": "error",
25
- * }
26
- * ```
27
- *
28
- * Yields exact autocomplete on `importOrder`, `importOrderSeparation`, etc.,
29
- * while `no-var` rejects any tuple beyond a bare severity.
30
- *
31
- * The `(string & {})` widener is intentionally absent: typos in rule names
32
- * produce a `TS2353` excess-property error when the literal is checked in
33
- * isolation (e.g. one negative-case-per-const). When the literal also carries
34
- * other shape-incompatible entries — e.g. `prefre` typo on `format/quotes` next
35
- * to the rule-name typo — TS sometimes elides the rule-name error after
36
- * reporting the option-key error first. The test at
37
- * `tests/test-lint/.../test_lib_index_d_ts_rule_options_autocomplete_per_rule.ts`
38
- * splits each negative case into its own const to keep every branch
39
- * load-bearing.
40
- */
41
- export type TtscLintRuleMap = {
42
- [K in keyof ITtscLintRuleOptionsMap]?:
43
- | TtscLintSeverity
44
- | readonly [TtscLintSeverity]
45
- | readonly [TtscLintSeverity, ITtscLintRuleOptionsMap[K]];
46
- } & {
47
- [K in Exclude<TtscLintRule, keyof ITtscLintRuleOptionsMap>]?:
48
- | TtscLintSeverity
49
- | readonly [TtscLintSeverity];
50
- } & {
51
- [K in `${string}/${string}`]?:
52
- | TtscLintSeverity
53
- | readonly [TtscLintSeverity]
54
- | readonly [TtscLintSeverity, unknown];
55
- };