@ttsc/lint 0.13.0 → 0.14.0-dev.20250530.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +955 -85
  2. package/lib/defaultFormat.d.ts +15 -8
  3. package/lib/defaultFormat.js +15 -8
  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/TtscLintRuleSetting.d.ts +49 -0
  10. package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
  11. package/lib/structures/TtscLintRuleSetting.js.map +1 -0
  12. package/lib/structures/format/ITtscLintFormat.d.ts +128 -0
  13. package/lib/structures/{TtscLintRuleMap.js → format/ITtscLintFormat.js} +1 -1
  14. package/lib/structures/format/ITtscLintFormat.js.map +1 -0
  15. package/lib/structures/format/ITtscLintFormatJsDoc.d.ts +17 -0
  16. package/lib/structures/{ITtscLintFormatConfig.js → format/ITtscLintFormatJsDoc.js} +1 -1
  17. package/lib/structures/format/ITtscLintFormatJsDoc.js.map +1 -0
  18. package/lib/structures/format/ITtscLintFormatSortImports.d.ts +54 -0
  19. package/lib/structures/format/ITtscLintFormatSortImports.js +3 -0
  20. package/lib/structures/format/ITtscLintFormatSortImports.js.map +1 -0
  21. package/lib/structures/format/index.d.ts +3 -0
  22. package/lib/structures/format/index.js +20 -0
  23. package/lib/structures/format/index.js.map +1 -0
  24. package/lib/structures/index.d.ts +3 -4
  25. package/lib/structures/index.js +3 -4
  26. package/lib/structures/index.js.map +1 -1
  27. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +95 -0
  28. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +13 -0
  29. package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
  30. package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +75 -0
  31. package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
  32. package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
  33. package/lib/structures/rules/ITtscLintContributorRules.d.ts +16 -0
  34. package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
  35. package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
  36. package/lib/structures/rules/ITtscLintCoreRules.d.ts +1229 -0
  37. package/lib/structures/rules/ITtscLintCoreRules.js +3 -0
  38. package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
  39. package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
  40. package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
  41. package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
  42. package/lib/structures/rules/ITtscLintCypressRules.d.ts +125 -0
  43. package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
  44. package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
  45. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +154 -0
  46. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
  47. package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
  48. package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +162 -0
  49. package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
  50. package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
  51. package/lib/structures/rules/ITtscLintJestRules.d.ts +190 -0
  52. package/lib/structures/rules/ITtscLintJestRules.js +3 -0
  53. package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
  54. package/lib/structures/rules/ITtscLintJsdocRules.d.ts +133 -0
  55. package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
  56. package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
  57. package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +294 -0
  58. package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
  59. package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
  60. package/lib/structures/rules/ITtscLintNextjsRules.d.ts +180 -0
  61. package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
  62. package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
  63. package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +312 -0
  64. package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
  65. package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
  66. package/lib/structures/rules/ITtscLintPromiseRules.d.ts +179 -0
  67. package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
  68. package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
  69. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
  70. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
  71. package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
  72. package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +49 -0
  73. package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
  74. package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
  75. package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +37 -0
  76. package/lib/structures/rules/ITtscLintReactRuleOptions.js +11 -0
  77. package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
  78. package/lib/structures/rules/ITtscLintReactRules.d.ts +276 -0
  79. package/lib/structures/rules/ITtscLintReactRules.js +3 -0
  80. package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
  81. package/lib/structures/rules/ITtscLintRegexpRules.d.ts +182 -0
  82. package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
  83. package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
  84. package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +65 -0
  85. package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
  86. package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
  87. package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
  88. package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
  89. package/lib/structures/rules/ITtscLintRules.js.map +1 -0
  90. package/lib/structures/rules/ITtscLintSecurityRules.d.ts +141 -0
  91. package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
  92. package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
  93. package/lib/structures/rules/ITtscLintSolidRules.d.ts +178 -0
  94. package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
  95. package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
  96. package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +20 -0
  97. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
  98. package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
  99. package/lib/structures/rules/ITtscLintStorybookRules.d.ts +165 -0
  100. package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
  101. package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
  102. package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +88 -0
  103. package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
  104. package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
  105. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +21 -0
  106. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
  107. package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
  108. package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +293 -0
  109. package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
  110. package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
  111. package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1074 -0
  112. package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
  113. package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
  114. package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
  115. package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
  116. package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
  117. package/lib/structures/rules/ITtscLintVitestRules.d.ts +133 -0
  118. package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
  119. package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
  120. package/lib/structures/rules/index.d.ts +31 -0
  121. package/lib/structures/rules/index.js +48 -0
  122. package/lib/structures/rules/index.js.map +1 -0
  123. package/linthost/ast_helpers.go +30 -5
  124. package/linthost/compile.go +33 -2
  125. package/linthost/config.go +118 -71
  126. package/linthost/config_format.go +270 -104
  127. package/linthost/directives.go +67 -25
  128. package/linthost/dispatch.go +14 -3
  129. package/linthost/engine.go +160 -40
  130. package/linthost/fix.go +10 -3
  131. package/linthost/flags_gen.go +17 -15
  132. package/linthost/format.go +222 -25
  133. package/linthost/format_editor_settings.go +262 -0
  134. package/linthost/host.go +40 -3
  135. package/linthost/lsp.go +898 -0
  136. package/linthost/print_dispatch.go +5 -2
  137. package/linthost/print_engine.go +5 -5
  138. package/linthost/print_nodes_call.go +149 -67
  139. package/linthost/print_nodes_function.go +27 -2
  140. package/linthost/print_nodes_list.go +40 -5
  141. package/linthost/print_nodes_object.go +1 -1
  142. package/linthost/print_nodes_ternary.go +86 -0
  143. package/linthost/rule_names.go +14 -0
  144. package/linthost/rules_arrays.go +2 -2
  145. package/linthost/rules_boundaries.go +532 -0
  146. package/linthost/rules_camelcase.go +133 -0
  147. package/linthost/rules_complexity.go +95 -0
  148. package/linthost/rules_consistent_return.go +130 -0
  149. package/linthost/rules_console.go +1 -1
  150. package/linthost/rules_core_extra.go +739 -0
  151. package/linthost/rules_curly.go +70 -0
  152. package/linthost/rules_cypress.go +608 -0
  153. package/linthost/rules_debugger.go +2 -2
  154. package/linthost/rules_default_case.go +39 -0
  155. package/linthost/rules_default_case_last.go +46 -0
  156. package/linthost/rules_dupes.go +3 -3
  157. package/linthost/rules_empty.go +3 -3
  158. package/linthost/rules_escape.go +44 -24
  159. package/linthost/rules_eval.go +2 -2
  160. package/linthost/rules_finally.go +2 -2
  161. package/linthost/rules_format_arrow_parens.go +167 -0
  162. package/linthost/rules_format_bracket_spacing.go +117 -0
  163. package/linthost/rules_format_clause_join.go +172 -0
  164. package/linthost/rules_format_declaration_header.go +595 -0
  165. package/linthost/rules_format_indent.go +372 -0
  166. package/linthost/rules_format_jsdoc.go +5 -5
  167. package/linthost/rules_format_orphan_semi.go +106 -0
  168. package/linthost/rules_format_parameter_properties.go +175 -0
  169. package/linthost/rules_format_print_width.go +66 -55
  170. package/linthost/rules_format_quote_props.go +169 -0
  171. package/linthost/rules_format_quotes.go +76 -30
  172. package/linthost/rules_format_semi.go +186 -11
  173. package/linthost/rules_format_sort_imports.go +437 -118
  174. package/linthost/rules_format_statement_split.go +343 -0
  175. package/linthost/rules_format_ternary_nullish_parens.go +77 -0
  176. package/linthost/rules_format_trailing_comma.go +22 -3
  177. package/linthost/rules_format_whitespace.go +336 -0
  178. package/linthost/rules_functional.go +967 -0
  179. package/linthost/rules_gap.go +24 -45
  180. package/linthost/rules_grouped_accessor_pairs.go +87 -0
  181. package/linthost/rules_guard_for_in.go +198 -0
  182. package/linthost/rules_id_length.go +77 -0
  183. package/linthost/rules_imports.go +70 -2
  184. package/linthost/rules_init_declarations.go +53 -0
  185. package/linthost/rules_jest.go +618 -0
  186. package/linthost/rules_jsdoc.go +502 -0
  187. package/linthost/rules_jsx_a11y.go +1264 -0
  188. package/linthost/rules_logic.go +12 -12
  189. package/linthost/rules_loops.go +1 -1
  190. package/linthost/rules_max_classes_per_file.go +58 -0
  191. package/linthost/rules_max_depth.go +83 -0
  192. package/linthost/rules_max_lines.go +101 -0
  193. package/linthost/rules_max_lines_per_function.go +57 -0
  194. package/linthost/rules_max_nested_callbacks.go +61 -0
  195. package/linthost/rules_max_params.go +49 -0
  196. package/linthost/rules_max_statements.go +59 -0
  197. package/linthost/rules_misc.go +1 -1
  198. package/linthost/rules_nextjs.go +697 -0
  199. package/linthost/rules_no_else_return.go +75 -0
  200. package/linthost/rules_no_empty_named_blocks.go +91 -0
  201. package/linthost/rules_no_extend_native.go +51 -0
  202. package/linthost/rules_no_import_assign.go +140 -0
  203. package/linthost/rules_no_invalid_this.go +52 -0
  204. package/linthost/rules_no_loop_func.go +85 -0
  205. package/linthost/rules_no_magic_numbers.go +123 -0
  206. package/linthost/rules_no_mixed_operators.go +80 -0
  207. package/linthost/rules_no_param_reassign.go +98 -0
  208. package/linthost/rules_no_redeclare.go +270 -0
  209. package/linthost/rules_no_restricted_imports.go +105 -0
  210. package/linthost/rules_no_restricted_syntax.go +49 -0
  211. package/linthost/rules_no_shadow.go +147 -0
  212. package/linthost/rules_no_unreachable.go +77 -0
  213. package/linthost/rules_no_useless_assignment.go +120 -0
  214. package/linthost/rules_no_useless_constructor.go +245 -0
  215. package/linthost/rules_no_useless_return.go +51 -0
  216. package/linthost/rules_params.go +1 -1
  217. package/linthost/rules_playwright.go +788 -0
  218. package/linthost/rules_prefer_arrow_callback.go +124 -0
  219. package/linthost/rules_prefer_destructuring.go +98 -0
  220. package/linthost/rules_prefer_named_capture_group.go +129 -0
  221. package/linthost/rules_prefer_rest_params.go +94 -0
  222. package/linthost/rules_problems.go +41 -30
  223. package/linthost/rules_promise.go +1057 -2
  224. package/linthost/rules_protos.go +2 -2
  225. package/linthost/rules_react.go +773 -0
  226. package/linthost/rules_react_extras.go +227 -0
  227. package/linthost/rules_react_hooks.go +848 -0
  228. package/linthost/rules_react_perf.go +293 -0
  229. package/linthost/rules_react_refresh.go +583 -0
  230. package/linthost/rules_regexp.go +410 -0
  231. package/linthost/rules_security.go +830 -0
  232. package/linthost/rules_self.go +2 -2
  233. package/linthost/rules_solid.go +1073 -0
  234. package/linthost/rules_sort_imports.go +69 -0
  235. package/linthost/rules_sort_keys.go +134 -0
  236. package/linthost/rules_storybook.go +1176 -0
  237. package/linthost/rules_strings.go +4 -4
  238. package/linthost/rules_suggestions.go +38 -38
  239. package/linthost/rules_tanstack_query.go +844 -0
  240. package/linthost/rules_testing_library.go +1204 -0
  241. package/linthost/rules_throw.go +1 -1
  242. package/linthost/rules_ts.go +19 -19
  243. package/linthost/rules_ts_async.go +399 -0
  244. package/linthost/rules_ts_class_literal_property_style.go +115 -0
  245. package/linthost/rules_ts_consistent_type_exports.go +256 -0
  246. package/linthost/rules_ts_explicit_function_return_type.go +67 -0
  247. package/linthost/rules_ts_extra.go +159 -36
  248. package/linthost/rules_ts_no_base_to_string.go +218 -0
  249. package/linthost/rules_ts_no_confusing_void.go +72 -0
  250. package/linthost/rules_ts_no_deprecated.go +195 -0
  251. package/linthost/rules_ts_no_for_in_array.go +84 -0
  252. package/linthost/rules_ts_no_magic_numbers.go +124 -0
  253. package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
  254. package/linthost/rules_ts_no_misused_spread.go +104 -0
  255. package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
  256. package/linthost/rules_ts_no_restricted_types.go +62 -0
  257. package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
  258. package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
  259. package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
  260. package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
  261. package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
  262. package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
  263. package/linthost/rules_ts_no_unsafe_argument.go +82 -0
  264. package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
  265. package/linthost/rules_ts_no_unsafe_call.go +82 -0
  266. package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
  267. package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
  268. package/linthost/rules_ts_no_unsafe_return.go +126 -0
  269. package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
  270. package/linthost/rules_ts_no_useless_constructor.go +52 -0
  271. package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
  272. package/linthost/rules_ts_parameter_properties.go +38 -0
  273. package/linthost/rules_ts_prefer_find.go +178 -0
  274. package/linthost/rules_ts_prefer_includes.go +255 -0
  275. package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
  276. package/linthost/rules_ts_prefer_optional_chain.go +228 -0
  277. package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
  278. package/linthost/rules_ts_prefer_readonly.go +73 -0
  279. package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
  280. package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
  281. package/linthost/rules_ts_prefer_return_this_type.go +135 -0
  282. package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
  283. package/linthost/rules_ts_promise_function_async.go +77 -0
  284. package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
  285. package/linthost/rules_ts_require_array_sort_compare.go +96 -0
  286. package/linthost/rules_ts_restrict_plus_operands.go +127 -0
  287. package/linthost/rules_ts_restrict_template_expressions.go +95 -0
  288. package/linthost/rules_ts_simple.go +387 -0
  289. package/linthost/rules_ts_sort_type_constituents.go +144 -0
  290. package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
  291. package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
  292. package/linthost/rules_ts_unbound_method.go +126 -0
  293. package/linthost/rules_tsdoc.go +136 -0
  294. package/linthost/rules_unicorn_better_regex.go +27 -0
  295. package/linthost/rules_unicorn_catch_error_name.go +46 -0
  296. package/linthost/rules_unicorn_consistent_assert.go +47 -0
  297. package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
  298. package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
  299. package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
  300. package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
  301. package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
  302. package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
  303. package/linthost/rules_unicorn_custom_error_definition.go +138 -0
  304. package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
  305. package/linthost/rules_unicorn_error_message.go +64 -0
  306. package/linthost/rules_unicorn_escape_case.go +51 -0
  307. package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
  308. package/linthost/rules_unicorn_explicit_length_check.go +88 -0
  309. package/linthost/rules_unicorn_filename_case.go +29 -0
  310. package/linthost/rules_unicorn_import_style.go +28 -0
  311. package/linthost/rules_unicorn_isolated_functions.go +29 -0
  312. package/linthost/rules_unicorn_new_for_builtins.go +87 -0
  313. package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
  314. package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
  315. package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
  316. package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
  317. package/linthost/rules_unicorn_no_array_for_each.go +40 -0
  318. package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
  319. package/linthost/rules_unicorn_no_array_reduce.go +41 -0
  320. package/linthost/rules_unicorn_no_array_reverse.go +44 -0
  321. package/linthost/rules_unicorn_no_array_sort.go +43 -0
  322. package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
  323. package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
  324. package/linthost/rules_unicorn_no_console_spaces.go +61 -0
  325. package/linthost/rules_unicorn_no_document_cookie.go +41 -0
  326. package/linthost/rules_unicorn_no_empty_file.go +44 -0
  327. package/linthost/rules_unicorn_no_for_loop.go +102 -0
  328. package/linthost/rules_unicorn_no_hex_escape.go +42 -0
  329. package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
  330. package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
  331. package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
  332. package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
  333. package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
  334. package/linthost/rules_unicorn_no_lonely_if.go +44 -0
  335. package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
  336. package/linthost/rules_unicorn_no_named_default.go +54 -0
  337. package/linthost/rules_unicorn_no_negated_condition.go +85 -0
  338. package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
  339. package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
  340. package/linthost/rules_unicorn_no_new_array.go +30 -0
  341. package/linthost/rules_unicorn_no_new_buffer.go +31 -0
  342. package/linthost/rules_unicorn_no_null.go +24 -0
  343. package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
  344. package/linthost/rules_unicorn_no_process_exit.go +43 -0
  345. package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
  346. package/linthost/rules_unicorn_no_static_only_class.go +56 -0
  347. package/linthost/rules_unicorn_no_thenable.go +74 -0
  348. package/linthost/rules_unicorn_no_this_assignment.go +35 -0
  349. package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
  350. package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
  351. package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
  352. package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
  353. package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
  354. package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
  355. package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
  356. package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
  357. package/linthost/rules_unicorn_no_unused_properties.go +30 -0
  358. package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
  359. package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
  360. package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
  361. package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
  362. package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
  363. package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
  364. package/linthost/rules_unicorn_no_useless_spread.go +67 -0
  365. package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
  366. package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
  367. package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
  368. package/linthost/rules_unicorn_number_literal_case.go +69 -0
  369. package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
  370. package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
  371. package/linthost/rules_unicorn_prefer_array_find.go +51 -0
  372. package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
  373. package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
  374. package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
  375. package/linthost/rules_unicorn_prefer_array_some.go +67 -0
  376. package/linthost/rules_unicorn_prefer_at.go +77 -0
  377. package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
  378. package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
  379. package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
  380. package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
  381. package/linthost/rules_unicorn_prefer_code_point.go +49 -0
  382. package/linthost/rules_unicorn_prefer_date_now.go +78 -0
  383. package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
  384. package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
  385. package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
  386. package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
  387. package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
  388. package/linthost/rules_unicorn_prefer_event_target.go +36 -0
  389. package/linthost/rules_unicorn_prefer_export_from.go +129 -0
  390. package/linthost/rules_unicorn_prefer_global_this.go +127 -0
  391. package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
  392. package/linthost/rules_unicorn_prefer_includes.go +149 -0
  393. package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
  394. package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
  395. package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
  396. package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
  397. package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
  398. package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
  399. package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
  400. package/linthost/rules_unicorn_prefer_module.go +50 -0
  401. package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
  402. package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
  403. package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
  404. package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
  405. package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
  406. package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
  407. package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
  408. package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
  409. package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
  410. package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
  411. package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
  412. package/linthost/rules_unicorn_prefer_set_has.go +42 -0
  413. package/linthost/rules_unicorn_prefer_set_size.go +48 -0
  414. package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
  415. package/linthost/rules_unicorn_prefer_single_call.go +96 -0
  416. package/linthost/rules_unicorn_prefer_spread.go +51 -0
  417. package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
  418. package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
  419. package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
  420. package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
  421. package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
  422. package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
  423. package/linthost/rules_unicorn_prefer_switch.go +103 -0
  424. package/linthost/rules_unicorn_prefer_ternary.go +71 -0
  425. package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
  426. package/linthost/rules_unicorn_prefer_type_error.go +127 -0
  427. package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
  428. package/linthost/rules_unicorn_relative_url_style.go +49 -0
  429. package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
  430. package/linthost/rules_unicorn_require_module_attributes.go +54 -0
  431. package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
  432. package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
  433. package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
  434. package/linthost/rules_unicorn_string_content.go +27 -0
  435. package/linthost/rules_unicorn_switch_case_braces.go +42 -0
  436. package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
  437. package/linthost/rules_unicorn_template_indent.go +28 -0
  438. package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
  439. package/linthost/rules_unicorn_throw_new_error.go +61 -0
  440. package/linthost/rules_var.go +10 -4
  441. package/linthost/rules_vitest.go +568 -0
  442. package/package.json +3 -3
  443. package/plugin/main.go +49 -3
  444. package/rule/astutil/astutil.go +10 -3
  445. package/rule/rule.go +12 -10
  446. package/src/defaultFormat.ts +17 -10
  447. package/src/index.ts +65 -43
  448. package/src/structures/ITtscLintConfig.ts +14 -8
  449. package/src/structures/TtscLintRuleSetting.ts +55 -0
  450. package/src/structures/format/ITtscLintFormat.ts +141 -0
  451. package/src/structures/format/ITtscLintFormatJsDoc.ts +18 -0
  452. package/src/structures/format/ITtscLintFormatSortImports.ts +62 -0
  453. package/src/structures/format/index.ts +3 -0
  454. package/src/structures/index.ts +3 -4
  455. package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +117 -0
  456. package/src/structures/rules/ITtscLintBoundariesRules.ts +91 -0
  457. package/src/structures/rules/ITtscLintContributorRules.ts +20 -0
  458. package/src/structures/rules/ITtscLintCoreRules.ts +1378 -0
  459. package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
  460. package/src/structures/rules/ITtscLintCypressRules.ts +141 -0
  461. package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +200 -0
  462. package/src/structures/rules/ITtscLintFunctionalRules.ts +197 -0
  463. package/src/structures/rules/ITtscLintJestRules.ts +209 -0
  464. package/src/structures/rules/ITtscLintJsdocRules.ts +146 -0
  465. package/src/structures/rules/ITtscLintJsxA11yRules.ts +331 -0
  466. package/src/structures/rules/ITtscLintNextjsRules.ts +201 -0
  467. package/src/structures/rules/ITtscLintPlaywrightRules.ts +343 -0
  468. package/src/structures/rules/ITtscLintPromiseRules.ts +196 -0
  469. package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
  470. package/src/structures/rules/ITtscLintReactPerfRules.ts +53 -0
  471. package/src/structures/rules/ITtscLintReactRuleOptions.ts +41 -0
  472. package/src/structures/rules/ITtscLintReactRules.ts +308 -0
  473. package/src/structures/rules/ITtscLintRegexpRules.ts +204 -0
  474. package/src/structures/rules/ITtscLintRuleOptionsMap.ts +88 -0
  475. package/src/structures/rules/ITtscLintRules.ts +77 -0
  476. package/src/structures/rules/ITtscLintSecurityRules.ts +155 -0
  477. package/src/structures/rules/ITtscLintSolidRules.ts +199 -0
  478. package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +22 -0
  479. package/src/structures/rules/ITtscLintStorybookRules.ts +184 -0
  480. package/src/structures/rules/ITtscLintTanstackQueryRules.ts +96 -0
  481. package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +23 -0
  482. package/src/structures/rules/ITtscLintTestingLibraryRules.ts +325 -0
  483. package/src/structures/rules/ITtscLintTypeScriptRules.ts +1172 -0
  484. package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
  485. package/src/structures/rules/ITtscLintVitestRules.ts +146 -0
  486. package/src/structures/rules/index.ts +31 -0
  487. package/lib/structures/ITtscLintFormatConfig.d.ts +0 -153
  488. package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
  489. package/lib/structures/TtscLintRule.d.ts +0 -17
  490. package/lib/structures/TtscLintRule.js.map +0 -1
  491. package/lib/structures/TtscLintRuleMap.d.ts +0 -46
  492. package/lib/structures/TtscLintRuleMap.js.map +0 -1
  493. package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
  494. package/lib/structures/TtscLintRuleOptions.js.map +0 -1
  495. package/src/structures/ITtscLintFormatConfig.ts +0 -168
  496. package/src/structures/TtscLintRule.ts +0 -160
  497. package/src/structures/TtscLintRuleMap.ts +0 -55
  498. package/src/structures/TtscLintRuleOptions.ts +0 -151
@@ -0,0 +1,182 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Regular-expression rules from `eslint-plugin-regexp`.
4
+ *
5
+ * These rules check the structure of regex literals — emptiness, uselessness,
6
+ * flag ordering, shorthand classes, Unicode support.
7
+ *
8
+ * Some rules duplicate (and supersede) the regex-related rules in
9
+ * {@link ITtscLintCoreRules}; both ids exist so projects can keep the legacy
10
+ * ESLint names alongside the regexp-plugin variants.
11
+ *
12
+ * @reference https://github.com/ota-meshi/eslint-plugin-regexp
13
+ */
14
+ export interface ITtscLintRegexpRules {
15
+ /**
16
+ * Reject ASCII control characters in regex literals. Alias of the bare core
17
+ * check.
18
+ *
19
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html
20
+ */
21
+ "regexp/no-control-character"?: TtscLintRuleSetting;
22
+ /**
23
+ * Reject duplicate literal characters inside simple regex character classes
24
+ * (`/[aa]/`).
25
+ *
26
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html
27
+ */
28
+ "regexp/no-dupe-characters-character-class"?: TtscLintRuleSetting;
29
+ /**
30
+ * Reject empty alternatives in a disjunction (`/a||b/`), which silently match
31
+ * the empty string.
32
+ *
33
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html
34
+ */
35
+ "regexp/no-empty-alternative"?: TtscLintRuleSetting;
36
+ /**
37
+ * Reject empty capturing groups such as `/()/`.
38
+ *
39
+ * The group shifts the numbering of every later backreference and capture
40
+ * slot while only ever capturing the empty string — almost always a leftover
41
+ * from an unfinished edit.
42
+ *
43
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html
44
+ */
45
+ "regexp/no-empty-capturing-group"?: TtscLintRuleSetting;
46
+ /**
47
+ * Reject empty regex character classes (`[]`). Alias of the bare core check.
48
+ *
49
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
50
+ */
51
+ "regexp/no-empty-character-class"?: TtscLintRuleSetting;
52
+ /**
53
+ * Reject empty non-capturing groups such as `/(?:)/`.
54
+ *
55
+ * The group contributes nothing to the match and is virtually always a
56
+ * leftover from a deleted inner pattern.
57
+ *
58
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
59
+ */
60
+ "regexp/no-empty-group"?: TtscLintRuleSetting;
61
+ /**
62
+ * Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
63
+ *
64
+ * An empty positive lookaround always matches; an empty negative lookaround
65
+ * never matches. The assertion either collapses to a no-op or breaks the
66
+ * surrounding pattern.
67
+ *
68
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
69
+ */
70
+ "regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
71
+ /**
72
+ * Reject misleading Unicode characters in regex classes. Alias of the bare
73
+ * misleading-character check.
74
+ *
75
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
76
+ */
77
+ "regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
78
+ /**
79
+ * Reject single-character character classes such as `/[x]/` — `/x/` is
80
+ * equivalent.
81
+ *
82
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
83
+ */
84
+ "regexp/no-useless-character-class"?: TtscLintRuleSetting;
85
+ /**
86
+ * Reject unnecessary escapes inside regex literals. Alias of core
87
+ * `no-useless-escape` for regex contexts.
88
+ *
89
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
90
+ */
91
+ "regexp/no-useless-escape"?: TtscLintRuleSetting;
92
+ /**
93
+ * Reject regex flags that the literal does not exercise — `i` on a pattern
94
+ * without case-variable characters, `m` without `^`/`$`, `s` without `.`, and
95
+ * similar dead flags on `g`/`y`.
96
+ *
97
+ * Cleans up flag combos that suggest behavior the pattern can never trigger.
98
+ *
99
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
100
+ */
101
+ "regexp/no-useless-flag"?: TtscLintRuleSetting;
102
+ /**
103
+ * Reject quantifiers that do not change the match — constant-one counts
104
+ * (`/a{1}/`), `?` on patterns already matching the empty string
105
+ * (`/(?:a+|b*)?/`), and quantifiers on non-consuming atoms (`/(?:\b)+/`).
106
+ *
107
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
108
+ */
109
+ "regexp/no-useless-quantifier"?: TtscLintRuleSetting;
110
+ /**
111
+ * Reject equal min/max quantifiers (`/a{2,2}/`) in favor of `/a{2}/`.
112
+ *
113
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
114
+ */
115
+ "regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
116
+ /**
117
+ * Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom never
118
+ * matches, so the quantifier is either dead code or a typo for `{1,…}`.
119
+ *
120
+ * The fix is normally to delete the atom or correct the upper bound.
121
+ *
122
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
123
+ */
124
+ "regexp/no-zero-quantifier"?: TtscLintRuleSetting;
125
+ /**
126
+ * Prefer `\d` over `[0-9]` in regex literals.
127
+ *
128
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html
129
+ */
130
+ "regexp/prefer-d"?: TtscLintRuleSetting;
131
+ /**
132
+ * Prefer `+` over `{1,}` in regex literals.
133
+ *
134
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html
135
+ */
136
+ "regexp/prefer-plus-quantifier"?: TtscLintRuleSetting;
137
+ /**
138
+ * Prefer `?` over `{0,1}` in regex literals.
139
+ *
140
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html
141
+ */
142
+ "regexp/prefer-question-quantifier"?: TtscLintRuleSetting;
143
+ /**
144
+ * Prefer `*` over `{0,}` in regex literals.
145
+ *
146
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html
147
+ */
148
+ "regexp/prefer-star-quantifier"?: TtscLintRuleSetting;
149
+ /**
150
+ * Prefer `\w` over `[A-Za-z0-9_]` in regex literals.
151
+ *
152
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html
153
+ */
154
+ "regexp/prefer-w"?: TtscLintRuleSetting;
155
+ /**
156
+ * Require regex literals to use the `u` or `v` flag, so Unicode-property
157
+ * escapes and surrogate-pair handling stay predictable.
158
+ *
159
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
160
+ */
161
+ "regexp/require-unicode-regexp"?: TtscLintRuleSetting;
162
+ /**
163
+ * Require regex literals to use the `v` flag specifically — the stricter
164
+ * Unicode-sets mode that enables set notation, string properties, and
165
+ * stricter escape rules on top of `u`.
166
+ *
167
+ * Choose this over `require-unicode-regexp` only on engines that ship
168
+ * ES2024-era regex.
169
+ *
170
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
171
+ */
172
+ "regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
173
+ /**
174
+ * Require regex flags to appear in canonical alphabetical order (`dgimsuvy`).
175
+ *
176
+ * Stable ordering keeps diffs small and lets readers compare flag sets at a
177
+ * glance.
178
+ *
179
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
180
+ */
181
+ "regexp/sort-flags"?: TtscLintRuleSetting;
182
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintRegexpRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintRegexpRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRegexpRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import type { ITtscLintBoundariesDependenciesRuleOptions, ITtscLintBoundariesElementTypesRuleOptions, ITtscLintBoundariesEntryPointRuleOptions, ITtscLintBoundariesExternalRuleOptions, ITtscLintBoundariesNoPrivateRuleOptions, ITtscLintBoundariesNoUnknownRuleOptions } from "./ITtscLintBoundariesRuleOptions";
2
+ import type { ITtscLintCypressUnsafeToChainCommandRuleOptions } from "./ITtscLintCypressRuleOptions";
3
+ import type { ITtscLintFunctionalEmptyRuleOptions, ITtscLintFunctionalImmutableDataRuleOptions, ITtscLintFunctionalNoConditionalStatementsRuleOptions, ITtscLintFunctionalNoLetRuleOptions, ITtscLintFunctionalNoMixedTypesRuleOptions, ITtscLintFunctionalNoReturnVoidRuleOptions, ITtscLintFunctionalNoThrowStatementsRuleOptions, ITtscLintFunctionalNoTryStatementsRuleOptions, ITtscLintFunctionalParametersRuleOptions, ITtscLintFunctionalPreferImmutableTypesRuleOptions, ITtscLintFunctionalPreferReadonlyTypeRuleOptions, ITtscLintFunctionalPreferTacitRuleOptions, ITtscLintFunctionalReadonlyTypeRuleOptions, ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions } from "./ITtscLintFunctionalRuleOptions";
4
+ import type { ITtscLintReactPerfRuleOptions } from "./ITtscLintReactPerfRuleOptions";
5
+ import type { ITtscLintReactOnlyExportComponentsRuleOptions } from "./ITtscLintReactRuleOptions";
6
+ import type { ITtscLintStorybookNoUninstalledAddonsRuleOptions } from "./ITtscLintStorybookRuleOptions";
7
+ import type { ITtscLintTestingLibraryConsistentDataTestIdRuleOptions } from "./ITtscLintTestingLibraryRuleOptions";
8
+ /**
9
+ * Index from typed rule name to its options object.
10
+ *
11
+ * Built-in rule families with configurable options are listed here. Contributor
12
+ * plugins extend the map by augmenting it from their own package:
13
+ *
14
+ * ```ts
15
+ * declare module "@ttsc/lint" {
16
+ * interface ITtscLintRuleOptionsMap {
17
+ * "demo/no-marker-comment": { marker: string };
18
+ * }
19
+ * }
20
+ * ```
21
+ *
22
+ * After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
23
+ * `defineConfig`-style helpers in plugin packages can type-check the options
24
+ * object against the contributor's declared shape.
25
+ *
26
+ * `format/*` is **not** listed: formatter behavior is configured through the
27
+ * top-level `format` block ({@link ITtscLintFormat}), not through the `rules`
28
+ * surface.
29
+ */
30
+ export interface ITtscLintRuleOptionsMap {
31
+ "testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;
32
+ "functional/functional-parameters": ITtscLintFunctionalParametersRuleOptions;
33
+ "functional/immutable-data": ITtscLintFunctionalImmutableDataRuleOptions;
34
+ "functional/no-class-inheritance": ITtscLintFunctionalEmptyRuleOptions;
35
+ "functional/no-classes": ITtscLintFunctionalEmptyRuleOptions;
36
+ "functional/no-conditional-statements": ITtscLintFunctionalNoConditionalStatementsRuleOptions;
37
+ "functional/no-expression-statements": ITtscLintFunctionalEmptyRuleOptions;
38
+ "functional/no-let": ITtscLintFunctionalNoLetRuleOptions;
39
+ "functional/no-loop-statements": ITtscLintFunctionalEmptyRuleOptions;
40
+ "functional/no-mixed-types": ITtscLintFunctionalNoMixedTypesRuleOptions;
41
+ "functional/no-promise-reject": ITtscLintFunctionalEmptyRuleOptions;
42
+ "functional/no-return-void": ITtscLintFunctionalNoReturnVoidRuleOptions;
43
+ "functional/no-this-expressions": ITtscLintFunctionalEmptyRuleOptions;
44
+ "functional/no-throw-statements": ITtscLintFunctionalNoThrowStatementsRuleOptions;
45
+ "functional/no-try-statements": ITtscLintFunctionalNoTryStatementsRuleOptions;
46
+ "functional/prefer-immutable-types": ITtscLintFunctionalPreferImmutableTypesRuleOptions;
47
+ "functional/prefer-property-signatures": ITtscLintFunctionalEmptyRuleOptions;
48
+ "functional/prefer-readonly-type": ITtscLintFunctionalPreferReadonlyTypeRuleOptions;
49
+ "functional/prefer-tacit": ITtscLintFunctionalPreferTacitRuleOptions;
50
+ "functional/readonly-type": ITtscLintFunctionalReadonlyTypeRuleOptions;
51
+ "functional/type-declaration-immutability": ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions;
52
+ "cypress/unsafe-to-chain-command": ITtscLintCypressUnsafeToChainCommandRuleOptions;
53
+ "boundaries/dependencies": ITtscLintBoundariesDependenciesRuleOptions;
54
+ "boundaries/element-types": ITtscLintBoundariesElementTypesRuleOptions;
55
+ "boundaries/entry-point": ITtscLintBoundariesEntryPointRuleOptions;
56
+ "boundaries/external": ITtscLintBoundariesExternalRuleOptions;
57
+ "boundaries/no-private": ITtscLintBoundariesNoPrivateRuleOptions;
58
+ "boundaries/no-unknown": ITtscLintBoundariesNoUnknownRuleOptions;
59
+ "react-perf/jsx-no-new-array-as-prop": ITtscLintReactPerfRuleOptions;
60
+ "react-perf/jsx-no-new-function-as-prop": ITtscLintReactPerfRuleOptions;
61
+ "react-perf/jsx-no-new-object-as-prop": ITtscLintReactPerfRuleOptions;
62
+ "react-perf/jsx-no-jsx-as-prop": ITtscLintReactPerfRuleOptions;
63
+ "storybook/no-uninstalled-addons": ITtscLintStorybookNoUninstalledAddonsRuleOptions;
64
+ "react/only-export-components": ITtscLintReactOnlyExportComponentsRuleOptions;
65
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintRuleOptionsMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintRuleOptionsMap.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRuleOptionsMap.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import type { ITtscLintBoundariesRules } from "./ITtscLintBoundariesRules";
2
+ import type { ITtscLintContributorRules } from "./ITtscLintContributorRules";
3
+ import type { ITtscLintCoreRules } from "./ITtscLintCoreRules";
4
+ import type { ITtscLintCypressRules } from "./ITtscLintCypressRules";
5
+ import type { ITtscLintFunctionalRules } from "./ITtscLintFunctionalRules";
6
+ import type { ITtscLintJestRules } from "./ITtscLintJestRules";
7
+ import type { ITtscLintJsdocRules } from "./ITtscLintJsdocRules";
8
+ import type { ITtscLintJsxA11yRules } from "./ITtscLintJsxA11yRules";
9
+ import type { ITtscLintNextjsRules } from "./ITtscLintNextjsRules";
10
+ import type { ITtscLintPlaywrightRules } from "./ITtscLintPlaywrightRules";
11
+ import type { ITtscLintPromiseRules } from "./ITtscLintPromiseRules";
12
+ import type { ITtscLintReactPerfRules } from "./ITtscLintReactPerfRules";
13
+ import type { ITtscLintReactRules } from "./ITtscLintReactRules";
14
+ import type { ITtscLintRegexpRules } from "./ITtscLintRegexpRules";
15
+ import type { ITtscLintSecurityRules } from "./ITtscLintSecurityRules";
16
+ import type { ITtscLintSolidRules } from "./ITtscLintSolidRules";
17
+ import type { ITtscLintStorybookRules } from "./ITtscLintStorybookRules";
18
+ import type { ITtscLintTanstackQueryRules } from "./ITtscLintTanstackQueryRules";
19
+ import type { ITtscLintTestingLibraryRules } from "./ITtscLintTestingLibraryRules";
20
+ import type { ITtscLintTypeScriptRules } from "./ITtscLintTypeScriptRules";
21
+ import type { ITtscLintUnicornRules } from "./ITtscLintUnicornRules";
22
+ import type { ITtscLintVitestRules } from "./ITtscLintVitestRules";
23
+ /**
24
+ * Rule severity map accepted by `ITtscLintConfig.rules`.
25
+ *
26
+ * Built-in rule families are exposed as separate interfaces under this
27
+ * directory so users can import a narrow family type when composing configs.
28
+ * `ITtscLintRules` is the intersection of every built-in family plus the
29
+ * open-ended contributor plugin signature.
30
+ *
31
+ * Rule id conventions:
32
+ *
33
+ * - Bare kebab-case ids (`eqeqeq`, `no-console`) belong to
34
+ * {@link ITtscLintCoreRules} — generic ESLint-compatible rules that apply to
35
+ * both JS and TS source.
36
+ * - `typescript/*` ids belong to {@link ITtscLintTypeScriptRules} —
37
+ * TypeScript-only and `@typescript-eslint` plugin rules. `@ttsc/lint` does
38
+ * not accept legacy bare names or `@typescript-eslint/*` aliases for these
39
+ * rules.
40
+ * - `react/*` ids in {@link ITtscLintReactRules} bundle `eslint-plugin-react`,
41
+ * `eslint-plugin-react-hooks`, and `eslint-plugin-react-refresh`.
42
+ * Performance-only React rules live separately in
43
+ * {@link ITtscLintReactPerfRules} because they are opt-in toggles rather than
44
+ * correctness checks (matching Oxlint).
45
+ * - Every other namespaced id (`boundaries/*`, `cypress/*`, `functional/*`, ...)
46
+ * is a built-in family with a matching interface in this directory.
47
+ * - Formatter behavior is **not** configured here. Use the top-level `format`
48
+ * block (typed as `ITtscLintFormat`); `format/*` is an internal
49
+ * implementation detail of `ttsc format` and is deliberately absent from the
50
+ * public rules surface.
51
+ * - Any other `"<namespace>/<rule>"` key is accepted via
52
+ * {@link ITtscLintContributorRules} so plugin-shipped rules compose cleanly
53
+ * without ambient module augmentation.
54
+ */
55
+ export type ITtscLintRules = ITtscLintCoreRules & ITtscLintTypeScriptRules & ITtscLintBoundariesRules & ITtscLintCypressRules & ITtscLintFunctionalRules & ITtscLintJestRules & ITtscLintJsdocRules & ITtscLintJsxA11yRules & ITtscLintNextjsRules & ITtscLintPlaywrightRules & ITtscLintPromiseRules & ITtscLintReactRules & ITtscLintReactPerfRules & ITtscLintRegexpRules & ITtscLintSecurityRules & ITtscLintSolidRules & ITtscLintStorybookRules & ITtscLintTanstackQueryRules & ITtscLintTestingLibraryRules & ITtscLintUnicornRules & ITtscLintVitestRules & ITtscLintContributorRules;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=TtscLintRule.js.map
3
+ //# sourceMappingURL=ITtscLintRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintRules.ts"],"names":[],"mappings":""}
@@ -0,0 +1,141 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Security-focused TypeScript source rules from `eslint-plugin-security`.
4
+ *
5
+ * Reports likely security smells — non-literal sinks for eval, file I/O, regex
6
+ * construction, child-process spawning, cryptographic primitives — that warrant
7
+ * human review even if no exploit is statically provable.
8
+ *
9
+ * Treat findings as _hints_, not proofs.
10
+ *
11
+ * @reference https://github.com/eslint-community/eslint-plugin-security
12
+ */
13
+ export interface ITtscLintSecurityRules {
14
+ /**
15
+ * Detect Trojan-Source bidi control characters (U+202A, U+202E, ...) hidden
16
+ * inside source.
17
+ *
18
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-bidi-characters.md
19
+ */
20
+ "security/detect-bidi-characters"?: TtscLintRuleSetting;
21
+ /**
22
+ * Detect Buffer reads/writes called with `noAssert = true`, which skips
23
+ * Node's offset/length bounds checks.
24
+ *
25
+ * The flag lets the offset slide past the buffer end and read unrelated
26
+ * memory, so production code should never set it.
27
+ *
28
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-buffer-noassert.md
29
+ */
30
+ "security/detect-buffer-noassert"?: TtscLintRuleSetting;
31
+ /**
32
+ * Detect any import of `child_process` and any `exec`/`execSync` call whose
33
+ * command argument is not a string literal.
34
+ *
35
+ * Non-literal commands are the canonical shell-injection sink in Node
36
+ * services.
37
+ *
38
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-child-process.md
39
+ */
40
+ "security/detect-child-process"?: TtscLintRuleSetting;
41
+ /**
42
+ * Detect assignments setting `escapeMarkup = false` (or the equivalent option
43
+ * on Handlebars/Mustache-style engines), which turns off HTML entity escaping
44
+ * in template output.
45
+ *
46
+ * Result: an unguarded XSS sink for caller-controlled strings.
47
+ *
48
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-disable-mustache-escape.md
49
+ */
50
+ "security/detect-disable-mustache-escape"?: TtscLintRuleSetting;
51
+ /**
52
+ * Detect `eval(...)` calls whose argument is not a string literal.
53
+ *
54
+ * Any expression argument means caller-controlled data can reach a
55
+ * code-execution sink. The rule flags the call shape, not proven taint.
56
+ *
57
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-eval-with-expression.md
58
+ */
59
+ "security/detect-eval-with-expression"?: TtscLintRuleSetting;
60
+ /**
61
+ * Detect `new Buffer(input)` constructions with non-literal input —
62
+ * historical source of allocation-disclosure bugs.
63
+ *
64
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-new-buffer.md
65
+ */
66
+ "security/detect-new-buffer"?: TtscLintRuleSetting;
67
+ /**
68
+ * Detect Express applications mounting `csrf` middleware before
69
+ * `methodOverride`, which lets the CSRF token be bypassed.
70
+ *
71
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-no-csrf-before-method-override.md
72
+ */
73
+ "security/detect-no-csrf-before-method-override"?: TtscLintRuleSetting;
74
+ /**
75
+ * Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`, ...) whose
76
+ * filename argument is not a string literal.
77
+ *
78
+ * Dynamic filenames are the standard path-traversal sink; sanitise or
79
+ * allow-list before the call.
80
+ *
81
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-fs-filename.md
82
+ */
83
+ "security/detect-non-literal-fs-filename"?: TtscLintRuleSetting;
84
+ /**
85
+ * Detect `new RegExp(...)` construction whose pattern argument is not a
86
+ * string literal.
87
+ *
88
+ * Caller-controlled patterns can both trigger catastrophic backtracking and
89
+ * let an attacker reshape the matcher to bypass intended validation.
90
+ *
91
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-regexp.md
92
+ */
93
+ "security/detect-non-literal-regexp"?: TtscLintRuleSetting;
94
+ /**
95
+ * Detect `require(...)` calls whose specifier is computed at runtime.
96
+ *
97
+ * A dynamic specifier lets caller-controlled data choose the module to load,
98
+ * bypassing any module allow-list on Node.
99
+ *
100
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-require.md
101
+ */
102
+ "security/detect-non-literal-require"?: TtscLintRuleSetting;
103
+ /**
104
+ * Detect dynamic bracket-access such as `obj[req.body.x] = ...`, which can
105
+ * let caller-controlled keys overwrite prototype-shaped properties or pull
106
+ * out unintended fields.
107
+ *
108
+ * Fires on virtually any computed property access; expect a high
109
+ * false-positive rate in normal application code.
110
+ *
111
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-object-injection.md
112
+ */
113
+ "security/detect-object-injection"?: TtscLintRuleSetting;
114
+ /**
115
+ * Detect direct equality comparisons involving secret-like identifiers (`if
116
+ * (token === expected)`) — use `crypto.timingSafeEqual` instead.
117
+ *
118
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-possible-timing-attacks.md
119
+ */
120
+ "security/detect-possible-timing-attacks"?: TtscLintRuleSetting;
121
+ /**
122
+ * Detect `crypto.pseudoRandomBytes`, which produces values that are not
123
+ * cryptographically secure.
124
+ *
125
+ * Tokens, session ids, and key material must use `crypto.randomBytes` (or Web
126
+ * Crypto's `getRandomValues`) instead.
127
+ *
128
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-pseudoRandomBytes.md
129
+ */
130
+ "security/detect-pseudoRandomBytes"?: TtscLintRuleSetting;
131
+ /**
132
+ * Detect regex literals with catastrophic backtracking potential (ReDoS) —
133
+ * typically nested or overlapping quantifiers over the same character set.
134
+ *
135
+ * Matching caller-controlled input against such a pattern can block the event
136
+ * loop for seconds.
137
+ *
138
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-unsafe-regex.md
139
+ */
140
+ "security/detect-unsafe-regex"?: TtscLintRuleSetting;
141
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITtscLintSecurityRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITtscLintSecurityRules.js","sourceRoot":"","sources":["../../../src/structures/rules/ITtscLintSecurityRules.ts"],"names":[],"mappings":""}