@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,190 @@
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,
6
+ * uselessness, 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
10
+ * the legacy 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
17
+ * the bare core 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
24
+ * character classes (`/[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
31
+ * silently match 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
40
+ * capture slot while only ever capturing the empty string — almost
41
+ * always a leftover 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
48
+ * bare core check.
49
+ *
50
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html
51
+ */
52
+ "regexp/no-empty-character-class"?: TtscLintRuleSetting;
53
+ /**
54
+ * Reject empty non-capturing groups such as `/(?:)/`.
55
+ *
56
+ * The group contributes nothing to the match and is virtually always
57
+ * a leftover from a deleted inner pattern.
58
+ *
59
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html
60
+ */
61
+ "regexp/no-empty-group"?: TtscLintRuleSetting;
62
+ /**
63
+ * Reject empty lookaround assertions such as `/(?=)/` or `/(?!)/`.
64
+ *
65
+ * An empty positive lookaround always matches; an empty negative
66
+ * lookaround never matches. The assertion either collapses to a
67
+ * no-op or breaks the surrounding pattern.
68
+ *
69
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html
70
+ */
71
+ "regexp/no-empty-lookarounds-assertion"?: TtscLintRuleSetting;
72
+ /**
73
+ * Reject misleading Unicode characters in regex classes. Alias
74
+ * of the bare misleading-character check.
75
+ *
76
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html
77
+ */
78
+ "regexp/no-misleading-unicode-character"?: TtscLintRuleSetting;
79
+ /**
80
+ * Reject single-character character classes such as `/[x]/`
81
+ * — `/x/` is equivalent.
82
+ *
83
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-character-class.html
84
+ */
85
+ "regexp/no-useless-character-class"?: TtscLintRuleSetting;
86
+ /**
87
+ * Reject unnecessary escapes inside regex literals. Alias of
88
+ * core `no-useless-escape` for regex contexts.
89
+ *
90
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-escape.html
91
+ */
92
+ "regexp/no-useless-escape"?: TtscLintRuleSetting;
93
+ /**
94
+ * Reject regex flags that the literal does not exercise — `i` on
95
+ * a pattern without case-variable characters, `m` without `^`/`$`,
96
+ * `s` without `.`, and similar dead flags on `g`/`y`.
97
+ *
98
+ * Cleans up flag combos that suggest behavior the pattern can never
99
+ * trigger.
100
+ *
101
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-flag.html
102
+ */
103
+ "regexp/no-useless-flag"?: TtscLintRuleSetting;
104
+ /**
105
+ * Reject quantifiers that do not change the match — constant-one
106
+ * counts (`/a{1}/`), `?` on patterns already matching the empty
107
+ * string (`/(?:a+|b*)?/`), and quantifiers on non-consuming
108
+ * atoms (`/(?:\b)+/`).
109
+ *
110
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-quantifier.html
111
+ */
112
+ "regexp/no-useless-quantifier"?: TtscLintRuleSetting;
113
+ /**
114
+ * Reject equal min/max quantifiers (`/a{2,2}/`) in favor of
115
+ * `/a{2}/`.
116
+ *
117
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-useless-two-nums-quantifier.html
118
+ */
119
+ "regexp/no-useless-two-nums-quantifier"?: TtscLintRuleSetting;
120
+ /**
121
+ * Reject zero-repeat quantifiers (`/a{0}/`, `/a{0,0}/`) — the atom
122
+ * never matches, so the quantifier is either dead code or a typo
123
+ * for `{1,…}`.
124
+ *
125
+ * The fix is normally to delete the atom or correct the upper
126
+ * bound.
127
+ *
128
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-zero-quantifier.html
129
+ */
130
+ "regexp/no-zero-quantifier"?: TtscLintRuleSetting;
131
+ /**
132
+ * Prefer `\d` over `[0-9]` in regex literals.
133
+ *
134
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-d.html
135
+ */
136
+ "regexp/prefer-d"?: TtscLintRuleSetting;
137
+ /**
138
+ * Prefer `+` over `{1,}` in regex literals.
139
+ *
140
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-plus-quantifier.html
141
+ */
142
+ "regexp/prefer-plus-quantifier"?: TtscLintRuleSetting;
143
+ /**
144
+ * Prefer `?` over `{0,1}` in regex literals.
145
+ *
146
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-question-quantifier.html
147
+ */
148
+ "regexp/prefer-question-quantifier"?: TtscLintRuleSetting;
149
+ /**
150
+ * Prefer `*` over `{0,}` in regex literals.
151
+ *
152
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-star-quantifier.html
153
+ */
154
+ "regexp/prefer-star-quantifier"?: TtscLintRuleSetting;
155
+ /**
156
+ * Prefer `\w` over `[A-Za-z0-9_]` in regex literals.
157
+ *
158
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-w.html
159
+ */
160
+ "regexp/prefer-w"?: TtscLintRuleSetting;
161
+ /**
162
+ * Require regex literals to use the `u` or `v` flag, so
163
+ * Unicode-property escapes and surrogate-pair handling stay
164
+ * predictable.
165
+ *
166
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html
167
+ */
168
+ "regexp/require-unicode-regexp"?: TtscLintRuleSetting;
169
+ /**
170
+ * Require regex literals to use the `v` flag specifically — the
171
+ * stricter Unicode-sets mode that enables set notation, string
172
+ * properties, and stricter escape rules on top of `u`.
173
+ *
174
+ * Choose this over `require-unicode-regexp` only on engines that
175
+ * ship ES2024-era regex.
176
+ *
177
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-sets-regexp.html
178
+ */
179
+ "regexp/require-unicode-sets-regexp"?: TtscLintRuleSetting;
180
+ /**
181
+ * Require regex flags to appear in canonical alphabetical order
182
+ * (`dgimsuvy`).
183
+ *
184
+ * Stable ordering keeps diffs small and lets readers compare flag
185
+ * sets at a glance.
186
+ *
187
+ * @reference https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-flags.html
188
+ */
189
+ "regexp/sort-flags"?: TtscLintRuleSetting;
190
+ }
@@ -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,66 @@
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.
12
+ * Contributor plugins extend the map by augmenting it from their own
13
+ * package:
14
+ *
15
+ * ```ts
16
+ * declare module "@ttsc/lint" {
17
+ * interface ITtscLintRuleOptionsMap {
18
+ * "demo/no-marker-comment": { marker: string };
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * After augmentation, `{@link TtscLintRuleOptionsSetting}` tuples and the
24
+ * `defineConfig`-style helpers in plugin packages can type-check the
25
+ * options object against the contributor's declared shape.
26
+ *
27
+ * `format/*` is **not** listed: formatter behavior is configured through
28
+ * the top-level `format` block ({@link ITtscLintFormat}), not through the
29
+ * `rules` surface.
30
+ */
31
+ export interface ITtscLintRuleOptionsMap {
32
+ "testing-library/consistent-data-testid": ITtscLintTestingLibraryConsistentDataTestIdRuleOptions;
33
+ "functional/functional-parameters": ITtscLintFunctionalParametersRuleOptions;
34
+ "functional/immutable-data": ITtscLintFunctionalImmutableDataRuleOptions;
35
+ "functional/no-class-inheritance": ITtscLintFunctionalEmptyRuleOptions;
36
+ "functional/no-classes": ITtscLintFunctionalEmptyRuleOptions;
37
+ "functional/no-conditional-statements": ITtscLintFunctionalNoConditionalStatementsRuleOptions;
38
+ "functional/no-expression-statements": ITtscLintFunctionalEmptyRuleOptions;
39
+ "functional/no-let": ITtscLintFunctionalNoLetRuleOptions;
40
+ "functional/no-loop-statements": ITtscLintFunctionalEmptyRuleOptions;
41
+ "functional/no-mixed-types": ITtscLintFunctionalNoMixedTypesRuleOptions;
42
+ "functional/no-promise-reject": ITtscLintFunctionalEmptyRuleOptions;
43
+ "functional/no-return-void": ITtscLintFunctionalNoReturnVoidRuleOptions;
44
+ "functional/no-this-expressions": ITtscLintFunctionalEmptyRuleOptions;
45
+ "functional/no-throw-statements": ITtscLintFunctionalNoThrowStatementsRuleOptions;
46
+ "functional/no-try-statements": ITtscLintFunctionalNoTryStatementsRuleOptions;
47
+ "functional/prefer-immutable-types": ITtscLintFunctionalPreferImmutableTypesRuleOptions;
48
+ "functional/prefer-property-signatures": ITtscLintFunctionalEmptyRuleOptions;
49
+ "functional/prefer-readonly-type": ITtscLintFunctionalPreferReadonlyTypeRuleOptions;
50
+ "functional/prefer-tacit": ITtscLintFunctionalPreferTacitRuleOptions;
51
+ "functional/readonly-type": ITtscLintFunctionalReadonlyTypeRuleOptions;
52
+ "functional/type-declaration-immutability": ITtscLintFunctionalTypeDeclarationImmutabilityRuleOptions;
53
+ "cypress/unsafe-to-chain-command": ITtscLintCypressUnsafeToChainCommandRuleOptions;
54
+ "boundaries/dependencies": ITtscLintBoundariesDependenciesRuleOptions;
55
+ "boundaries/element-types": ITtscLintBoundariesElementTypesRuleOptions;
56
+ "boundaries/entry-point": ITtscLintBoundariesEntryPointRuleOptions;
57
+ "boundaries/external": ITtscLintBoundariesExternalRuleOptions;
58
+ "boundaries/no-private": ITtscLintBoundariesNoPrivateRuleOptions;
59
+ "boundaries/no-unknown": ITtscLintBoundariesNoUnknownRuleOptions;
60
+ "react-perf/jsx-no-new-array-as-prop": ITtscLintReactPerfRuleOptions;
61
+ "react-perf/jsx-no-new-function-as-prop": ITtscLintReactPerfRuleOptions;
62
+ "react-perf/jsx-no-new-object-as-prop": ITtscLintReactPerfRuleOptions;
63
+ "react-perf/jsx-no-jsx-as-prop": ITtscLintReactPerfRuleOptions;
64
+ "storybook/no-uninstalled-addons": ITtscLintStorybookNoUninstalledAddonsRuleOptions;
65
+ "react/only-export-components": ITtscLintReactOnlyExportComponentsRuleOptions;
66
+ }
@@ -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,148 @@
1
+ import type { TtscLintRuleSetting } from "../TtscLintRuleSetting";
2
+ /**
3
+ * Security-focused TypeScript source rules from
4
+ * `eslint-plugin-security`.
5
+ *
6
+ * Reports likely security smells — non-literal sinks for eval, file
7
+ * I/O, regex construction, child-process spawning, cryptographic
8
+ * primitives — that warrant human review even if no exploit is
9
+ * statically provable.
10
+ *
11
+ * Treat findings as *hints*, not proofs.
12
+ *
13
+ * @reference https://github.com/eslint-community/eslint-plugin-security
14
+ */
15
+ export interface ITtscLintSecurityRules {
16
+ /**
17
+ * Detect Trojan-Source bidi control characters (U+202A, U+202E,
18
+ * ...) hidden inside source.
19
+ *
20
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-bidi-characters.md
21
+ */
22
+ "security/detect-bidi-characters"?: TtscLintRuleSetting;
23
+ /**
24
+ * Detect Buffer reads/writes called with `noAssert = true`, which
25
+ * skips Node's offset/length bounds checks.
26
+ *
27
+ * The flag lets the offset slide past the buffer end and read
28
+ * unrelated memory, so production code should never set it.
29
+ *
30
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-buffer-noassert.md
31
+ */
32
+ "security/detect-buffer-noassert"?: TtscLintRuleSetting;
33
+ /**
34
+ * Detect any import of `child_process` and any `exec`/`execSync`
35
+ * call whose command argument is not a string literal.
36
+ *
37
+ * Non-literal commands are the canonical shell-injection sink in
38
+ * Node services.
39
+ *
40
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-child-process.md
41
+ */
42
+ "security/detect-child-process"?: TtscLintRuleSetting;
43
+ /**
44
+ * Detect assignments setting `escapeMarkup = false` (or the
45
+ * equivalent option on Handlebars/Mustache-style engines), which
46
+ * turns off HTML entity escaping in template output.
47
+ *
48
+ * Result: an unguarded XSS sink for caller-controlled strings.
49
+ *
50
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-disable-mustache-escape.md
51
+ */
52
+ "security/detect-disable-mustache-escape"?: TtscLintRuleSetting;
53
+ /**
54
+ * Detect `eval(...)` calls whose argument is not a string literal.
55
+ *
56
+ * Any expression argument means caller-controlled data can reach a
57
+ * code-execution sink. The rule flags the call shape, not proven
58
+ * taint.
59
+ *
60
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-eval-with-expression.md
61
+ */
62
+ "security/detect-eval-with-expression"?: TtscLintRuleSetting;
63
+ /**
64
+ * Detect `new Buffer(input)` constructions with non-literal
65
+ * input — historical source of allocation-disclosure bugs.
66
+ *
67
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-new-buffer.md
68
+ */
69
+ "security/detect-new-buffer"?: TtscLintRuleSetting;
70
+ /**
71
+ * Detect Express applications mounting `csrf` middleware before
72
+ * `methodOverride`, which lets the CSRF token be bypassed.
73
+ *
74
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-no-csrf-before-method-override.md
75
+ */
76
+ "security/detect-no-csrf-before-method-override"?: TtscLintRuleSetting;
77
+ /**
78
+ * Detect `fs` calls (`readFile`, `writeFile`, `createReadStream`,
79
+ * ...) whose filename argument is not a string literal.
80
+ *
81
+ * Dynamic filenames are the standard path-traversal sink; sanitise
82
+ * or allow-list before the call.
83
+ *
84
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-fs-filename.md
85
+ */
86
+ "security/detect-non-literal-fs-filename"?: TtscLintRuleSetting;
87
+ /**
88
+ * Detect `new RegExp(...)` construction whose pattern argument is
89
+ * not a string literal.
90
+ *
91
+ * Caller-controlled patterns can both trigger catastrophic
92
+ * backtracking and let an attacker reshape the matcher to bypass
93
+ * intended validation.
94
+ *
95
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-regexp.md
96
+ */
97
+ "security/detect-non-literal-regexp"?: TtscLintRuleSetting;
98
+ /**
99
+ * Detect `require(...)` calls whose specifier is computed at
100
+ * runtime.
101
+ *
102
+ * A dynamic specifier lets caller-controlled data choose the module
103
+ * to load, bypassing any module allow-list on Node.
104
+ *
105
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-non-literal-require.md
106
+ */
107
+ "security/detect-non-literal-require"?: TtscLintRuleSetting;
108
+ /**
109
+ * Detect dynamic bracket-access such as `obj[req.body.x] = ...`,
110
+ * which can let caller-controlled keys overwrite prototype-shaped
111
+ * properties or pull out unintended fields.
112
+ *
113
+ * Fires on virtually any computed property access; expect a high
114
+ * false-positive rate in normal application code.
115
+ *
116
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-object-injection.md
117
+ */
118
+ "security/detect-object-injection"?: TtscLintRuleSetting;
119
+ /**
120
+ * Detect direct equality comparisons involving secret-like
121
+ * identifiers (`if (token === expected)`) — use
122
+ * `crypto.timingSafeEqual` instead.
123
+ *
124
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-possible-timing-attacks.md
125
+ */
126
+ "security/detect-possible-timing-attacks"?: TtscLintRuleSetting;
127
+ /**
128
+ * Detect `crypto.pseudoRandomBytes`, which produces values that
129
+ * are not cryptographically secure.
130
+ *
131
+ * Tokens, session ids, and key material must use
132
+ * `crypto.randomBytes` (or Web Crypto's `getRandomValues`) instead.
133
+ *
134
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-pseudoRandomBytes.md
135
+ */
136
+ "security/detect-pseudoRandomBytes"?: TtscLintRuleSetting;
137
+ /**
138
+ * Detect regex literals with catastrophic backtracking potential
139
+ * (ReDoS) — typically nested or overlapping quantifiers over the
140
+ * same character set.
141
+ *
142
+ * Matching caller-controlled input against such a pattern can
143
+ * block the event loop for seconds.
144
+ *
145
+ * @reference https://github.com/eslint-community/eslint-plugin-security/blob/main/docs/rules/detect-unsafe-regex.md
146
+ */
147
+ "security/detect-unsafe-regex"?: TtscLintRuleSetting;
148
+ }
@@ -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":""}