eslint-plugin-sonarjs 4.0.3 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (810) hide show
  1. package/README.md +52 -56
  2. package/cjs/S100/generated-meta.js +2 -1
  3. package/cjs/S101/generated-meta.js +2 -1
  4. package/cjs/S104/generated-meta.js +2 -1
  5. package/cjs/S105/generated-meta.js +2 -1
  6. package/cjs/S1066/generated-meta.js +2 -1
  7. package/cjs/S1067/generated-meta.js +2 -1
  8. package/cjs/S1110/generated-meta.js +2 -1
  9. package/cjs/S1119/generated-meta.js +2 -1
  10. package/cjs/S1121/generated-meta.js +2 -1
  11. package/cjs/S1125/generated-meta.js +2 -1
  12. package/cjs/S1126/generated-meta.js +2 -1
  13. package/cjs/S1128/generated-meta.js +2 -1
  14. package/cjs/S1134/generated-meta.js +2 -1
  15. package/cjs/S1135/generated-meta.js +2 -1
  16. package/cjs/S1154/generated-meta.js +2 -1
  17. package/cjs/S1154/rule.js +21 -2
  18. package/cjs/S117/generated-meta.js +2 -1
  19. package/cjs/S1172/generated-meta.js +2 -1
  20. package/cjs/S1192/generated-meta.js +2 -1
  21. package/cjs/S1219/generated-meta.js +2 -1
  22. package/cjs/S1226/generated-meta.js +2 -1
  23. package/cjs/S124/generated-meta.js +2 -1
  24. package/cjs/{S2255 → S1244}/generated-meta.js +8 -7
  25. package/cjs/S1244/meta.js +21 -0
  26. package/cjs/S1244/rule.js +265 -0
  27. package/cjs/S125/generated-meta.js +3 -2
  28. package/cjs/S126/generated-meta.js +2 -1
  29. package/cjs/S1264/generated-meta.js +2 -1
  30. package/cjs/S128/generated-meta.js +2 -1
  31. package/cjs/S1291/generated-meta.js +2 -1
  32. package/cjs/S1301/generated-meta.js +3 -2
  33. package/cjs/S1313/generated-meta.js +2 -1
  34. package/cjs/S134/generated-meta.js +2 -1
  35. package/cjs/S135/generated-meta.js +2 -1
  36. package/cjs/S138/generated-meta.js +2 -1
  37. package/cjs/S1439/generated-meta.js +2 -1
  38. package/cjs/S1444/generated-meta.js +2 -1
  39. package/cjs/S1451/generated-meta.js +2 -1
  40. package/cjs/S1472/generated-meta.js +2 -1
  41. package/cjs/S1479/generated-meta.js +2 -1
  42. package/cjs/S1481/generated-meta.js +2 -1
  43. package/cjs/S1488/generated-meta.js +2 -1
  44. package/cjs/S1515/generated-meta.js +2 -1
  45. package/cjs/S1523/generated-meta.js +3 -2
  46. package/cjs/S1526/generated-meta.js +2 -1
  47. package/cjs/S1527/generated-meta.js +2 -1
  48. package/cjs/S1528/generated-meta.js +2 -1
  49. package/cjs/S1529/generated-meta.js +2 -1
  50. package/cjs/S1530/generated-meta.js +2 -1
  51. package/cjs/S1533/generated-meta.js +2 -1
  52. package/cjs/S1535/generated-meta.js +2 -1
  53. package/cjs/S1541/generated-meta.js +2 -1
  54. package/cjs/S1607/generated-meta.js +2 -1
  55. package/cjs/S1607/rule.js +72 -7
  56. package/cjs/S1764/generated-meta.js +2 -1
  57. package/cjs/S1821/generated-meta.js +2 -1
  58. package/cjs/S1848/generated-meta.js +2 -1
  59. package/cjs/S1854/generated-meta.js +2 -1
  60. package/cjs/S1862/generated-meta.js +2 -1
  61. package/cjs/S1871/generated-meta.js +2 -1
  62. package/cjs/S1874/generated-meta.js +2 -1
  63. package/cjs/S1940/generated-meta.js +2 -1
  64. package/cjs/S1994/generated-meta.js +2 -1
  65. package/cjs/S2004/generated-meta.js +2 -1
  66. package/cjs/S2068/generated-meta.js +2 -1
  67. package/cjs/S2068/rule.js +0 -14
  68. package/cjs/S2077/generated-meta.js +3 -2
  69. package/cjs/S2092/generated-meta.js +2 -1
  70. package/cjs/S2123/generated-meta.js +2 -1
  71. package/cjs/S2137/generated-meta.js +2 -1
  72. package/cjs/S2138/generated-meta.js +2 -1
  73. package/cjs/S2187/generated-meta.js +2 -1
  74. package/cjs/S2187/rule.js +50 -13
  75. package/cjs/S2201/generated-meta.js +2 -1
  76. package/cjs/S2208/generated-meta.js +2 -1
  77. package/cjs/S2234/generated-meta.js +2 -1
  78. package/cjs/S2245/generated-meta.js +3 -2
  79. package/cjs/S2251/generated-meta.js +2 -1
  80. package/cjs/S2259/generated-meta.js +2 -1
  81. package/cjs/S2301/generated-meta.js +2 -1
  82. package/cjs/S2310/generated-meta.js +2 -1
  83. package/cjs/S2392/generated-meta.js +2 -1
  84. package/cjs/S2424/generated-meta.js +2 -1
  85. package/cjs/S2428/generated-meta.js +2 -1
  86. package/cjs/S2486/generated-meta.js +2 -1
  87. package/cjs/S2589/generated-meta.js +2 -1
  88. package/cjs/S2598/generated-meta.js +2 -1
  89. package/cjs/S2612/generated-meta.js +2 -1
  90. package/cjs/S2639/generated-meta.js +2 -1
  91. package/cjs/S2681/generated-meta.js +2 -1
  92. package/cjs/S2692/generated-meta.js +2 -1
  93. package/cjs/S2699/generated-meta.js +2 -1
  94. package/cjs/S2699/rule.js +19 -5
  95. package/cjs/S2703/generated-meta.js +2 -1
  96. package/cjs/S2737/generated-meta.js +2 -1
  97. package/cjs/S2755/generated-meta.js +2 -1
  98. package/cjs/S2757/generated-meta.js +2 -1
  99. package/cjs/S2817/generated-meta.js +2 -1
  100. package/cjs/S2819/generated-meta.js +2 -1
  101. package/cjs/S2870/generated-meta.js +2 -1
  102. package/cjs/S2871/generated-meta.js +2 -1
  103. package/cjs/S2871/rule.js +85 -1
  104. package/cjs/S2970/generated-meta.js +2 -1
  105. package/cjs/S2990/generated-meta.js +2 -1
  106. package/cjs/S2999/generated-meta.js +2 -1
  107. package/cjs/S3001/generated-meta.js +2 -1
  108. package/cjs/S3003/generated-meta.js +2 -1
  109. package/cjs/S3317/generated-meta.js +2 -1
  110. package/cjs/S3330/generated-meta.js +3 -2
  111. package/cjs/S3358/generated-meta.js +2 -1
  112. package/cjs/S3402/generated-meta.js +2 -1
  113. package/cjs/S3403/generated-meta.js +2 -1
  114. package/cjs/S3403/rule.js +21 -1
  115. package/cjs/S3415/generated-meta.js +2 -1
  116. package/cjs/S3499/generated-meta.js +2 -1
  117. package/cjs/S3500/generated-meta.js +2 -1
  118. package/cjs/S3513/generated-meta.js +2 -1
  119. package/cjs/S3514/generated-meta.js +2 -1
  120. package/cjs/S3516/generated-meta.js +2 -1
  121. package/cjs/S3524/generated-meta.js +2 -1
  122. package/cjs/S3525/generated-meta.js +2 -1
  123. package/cjs/S3531/generated-meta.js +2 -1
  124. package/cjs/S3533/generated-meta.js +2 -1
  125. package/cjs/S3579/generated-meta.js +2 -1
  126. package/cjs/S3616/generated-meta.js +2 -1
  127. package/cjs/S3626/generated-meta.js +2 -1
  128. package/cjs/S3626/rule.js +1 -1
  129. package/cjs/S3686/generated-meta.js +2 -1
  130. package/cjs/S3699/generated-meta.js +2 -1
  131. package/cjs/S3735/generated-meta.js +2 -1
  132. package/cjs/S3757/generated-meta.js +2 -1
  133. package/cjs/S3757/rule.js +3 -1
  134. package/cjs/S3758/generated-meta.js +2 -1
  135. package/cjs/S3760/generated-meta.js +2 -1
  136. package/cjs/S3776/generated-meta.js +2 -1
  137. package/cjs/S3782/generated-meta.js +2 -1
  138. package/cjs/S3785/generated-meta.js +2 -1
  139. package/cjs/S3796/generated-meta.js +2 -1
  140. package/cjs/S3798/generated-meta.js +2 -1
  141. package/cjs/S3798/rule.js +57 -17
  142. package/cjs/S3800/generated-meta.js +2 -1
  143. package/cjs/S3801/generated-meta.js +2 -1
  144. package/cjs/S3827/generated-meta.js +2 -1
  145. package/cjs/S3923/generated-meta.js +2 -1
  146. package/cjs/S3972/generated-meta.js +2 -1
  147. package/cjs/S3973/generated-meta.js +2 -1
  148. package/cjs/S3981/generated-meta.js +2 -1
  149. package/cjs/S3984/generated-meta.js +2 -1
  150. package/cjs/S4030/generated-meta.js +2 -1
  151. package/cjs/S4036/generated-meta.js +3 -2
  152. package/cjs/S4043/generated-meta.js +2 -1
  153. package/cjs/S4139/generated-meta.js +2 -1
  154. package/cjs/S4143/generated-meta.js +2 -1
  155. package/cjs/S4144/generated-meta.js +2 -1
  156. package/cjs/S4158/generated-meta.js +2 -1
  157. package/cjs/S4165/generated-meta.js +2 -1
  158. package/cjs/S4322/generated-meta.js +2 -1
  159. package/cjs/S4323/generated-meta.js +2 -1
  160. package/cjs/S4324/generated-meta.js +2 -1
  161. package/cjs/S4328/generated-meta.js +2 -1
  162. package/cjs/S4328/rule.js +7 -2
  163. package/cjs/S4335/generated-meta.js +2 -1
  164. package/cjs/S4423/generated-meta.js +2 -1
  165. package/cjs/S4426/generated-meta.js +2 -1
  166. package/cjs/S4502/generated-meta.js +3 -2
  167. package/cjs/S4507/generated-meta.js +3 -2
  168. package/cjs/S4524/generated-meta.js +2 -1
  169. package/cjs/S4619/generated-meta.js +2 -1
  170. package/cjs/S4621/generated-meta.js +2 -1
  171. package/cjs/S4622/generated-meta.js +2 -1
  172. package/cjs/S4623/generated-meta.js +2 -1
  173. package/cjs/S4624/generated-meta.js +2 -1
  174. package/cjs/S4624/rule.js +2 -7
  175. package/cjs/S4634/generated-meta.js +2 -1
  176. package/cjs/S4721/generated-meta.js +5 -4
  177. package/cjs/S4782/generated-meta.js +2 -1
  178. package/cjs/S4782/rule.js +96 -14
  179. package/cjs/S4790/generated-meta.js +3 -2
  180. package/cjs/S4790/rule.js +217 -2
  181. package/cjs/S4798/generated-meta.js +2 -1
  182. package/cjs/S4822/generated-meta.js +2 -1
  183. package/cjs/S4830/generated-meta.js +2 -1
  184. package/cjs/S5042/generated-meta.js +2 -1
  185. package/cjs/S5122/generated-meta.js +2 -1
  186. package/cjs/S5148/generated-meta.js +2 -1
  187. package/cjs/S5247/generated-meta.js +3 -2
  188. package/cjs/S5256/generated-meta.js +2 -1
  189. package/cjs/S5257/generated-meta.js +2 -1
  190. package/cjs/S5260/generated-meta.js +2 -1
  191. package/cjs/S5264/generated-meta.js +2 -1
  192. package/cjs/S5332/generated-meta.js +3 -2
  193. package/cjs/S5332/rule.lib.js +54 -46
  194. package/cjs/S5443/generated-meta.js +2 -1
  195. package/cjs/S5527/generated-meta.js +2 -1
  196. package/cjs/S5542/generated-meta.js +2 -1
  197. package/cjs/S5547/generated-meta.js +2 -1
  198. package/cjs/S5604/generated-meta.js +5 -4
  199. package/cjs/S5659/generated-meta.js +2 -1
  200. package/cjs/S5689/generated-meta.js +2 -1
  201. package/cjs/S5691/generated-meta.js +5 -4
  202. package/cjs/S5693/generated-meta.js +2 -1
  203. package/cjs/S5693/rule.js +45 -1
  204. package/cjs/S5725/generated-meta.js +3 -2
  205. package/cjs/S5725/rule.js +75 -12
  206. package/cjs/S5728/generated-meta.js +3 -2
  207. package/cjs/S5730/generated-meta.js +5 -4
  208. package/cjs/S5732/generated-meta.js +5 -4
  209. package/cjs/S5734/generated-meta.js +3 -2
  210. package/cjs/S5736/generated-meta.js +3 -2
  211. package/cjs/S5739/generated-meta.js +3 -2
  212. package/cjs/S5757/generated-meta.js +5 -4
  213. package/cjs/S5759/generated-meta.js +5 -4
  214. package/cjs/S5842/generated-meta.js +2 -1
  215. package/cjs/S5843/generated-meta.js +2 -1
  216. package/cjs/S5845/generated-meta.js +52 -0
  217. package/cjs/S5845/meta.js +21 -0
  218. package/cjs/S5845/rule.js +296 -0
  219. package/cjs/S5850/generated-meta.js +2 -1
  220. package/cjs/S5852/generated-meta.js +3 -2
  221. package/cjs/S5852/rule.js +11 -3
  222. package/cjs/S5856/generated-meta.js +2 -1
  223. package/cjs/S5860/generated-meta.js +2 -1
  224. package/cjs/S5863/generated-meta.js +2 -1
  225. package/cjs/S5867/generated-meta.js +2 -1
  226. package/cjs/S5868/generated-meta.js +2 -1
  227. package/cjs/S5868/rule.js +54 -25
  228. package/cjs/S5869/generated-meta.js +2 -1
  229. package/cjs/S5876/generated-meta.js +2 -1
  230. package/cjs/S5906/assertion-suggestions.js +279 -0
  231. package/cjs/S5906/assertion-utils.js +103 -0
  232. package/cjs/S5906/cypress-suggestions.js +62 -0
  233. package/cjs/S5906/expect-chain.js +16 -0
  234. package/cjs/S5906/generated-meta.js +52 -0
  235. package/cjs/S5906/meta.js +21 -0
  236. package/cjs/S5906/playwright-suggestions.js +103 -0
  237. package/cjs/S5906/rule.js +365 -0
  238. package/cjs/S5914/generated-meta.js +52 -0
  239. package/cjs/{S4817 → S5914}/meta.js +1 -1
  240. package/cjs/S5914/rule.js +213 -0
  241. package/cjs/S5958/generated-meta.js +2 -1
  242. package/cjs/S5973/generated-meta.js +2 -1
  243. package/cjs/S5973/rule.js +1 -1
  244. package/cjs/S6019/generated-meta.js +2 -1
  245. package/cjs/S6035/generated-meta.js +2 -1
  246. package/cjs/S6079/generated-meta.js +2 -1
  247. package/cjs/S6080/generated-meta.js +2 -1
  248. package/cjs/S6092/generated-meta.js +2 -1
  249. package/cjs/S6249/generated-meta.js +3 -2
  250. package/cjs/S6252/generated-meta.js +3 -2
  251. package/cjs/S6265/generated-meta.js +2 -1
  252. package/cjs/S6268/generated-meta.js +3 -2
  253. package/cjs/S6270/generated-meta.js +2 -1
  254. package/cjs/S6275/generated-meta.js +2 -1
  255. package/cjs/S6281/generated-meta.js +3 -2
  256. package/cjs/S6281/rule.js +7 -20
  257. package/cjs/S6302/generated-meta.js +2 -1
  258. package/cjs/S6303/generated-meta.js +2 -1
  259. package/cjs/S6304/generated-meta.js +3 -2
  260. package/cjs/S6308/generated-meta.js +2 -1
  261. package/cjs/S6317/generated-meta.js +2 -1
  262. package/cjs/S6319/generated-meta.js +3 -2
  263. package/cjs/S6321/generated-meta.js +2 -1
  264. package/cjs/S6323/generated-meta.js +2 -1
  265. package/cjs/S6324/generated-meta.js +2 -1
  266. package/cjs/S6324/rule.js +5 -5
  267. package/cjs/S6326/generated-meta.js +2 -1
  268. package/cjs/S6327/generated-meta.js +3 -2
  269. package/cjs/S6328/generated-meta.js +2 -1
  270. package/cjs/S6329/generated-meta.js +3 -2
  271. package/cjs/S6330/generated-meta.js +2 -1
  272. package/cjs/S6331/generated-meta.js +2 -1
  273. package/cjs/S6332/generated-meta.js +3 -2
  274. package/cjs/S6333/generated-meta.js +3 -2
  275. package/cjs/S6351/generated-meta.js +2 -1
  276. package/cjs/S6353/generated-meta.js +2 -1
  277. package/cjs/S6397/generated-meta.js +2 -1
  278. package/cjs/S6418/generated-meta.js +2 -1
  279. package/cjs/S6426/generated-meta.js +2 -1
  280. package/cjs/S6426/rule.js +6 -1
  281. package/cjs/S6437/generated-meta.js +2 -1
  282. package/cjs/S6437/rule.js +4 -2
  283. package/cjs/S6439/generated-meta.js +2 -1
  284. package/cjs/S6442/generated-meta.js +2 -1
  285. package/cjs/S6443/generated-meta.js +2 -1
  286. package/cjs/S6486/generated-meta.js +2 -1
  287. package/cjs/S6486/rule.js +4 -4
  288. package/cjs/S6564/generated-meta.js +2 -1
  289. package/cjs/S6594/generated-meta.js +2 -1
  290. package/cjs/S6627/generated-meta.js +2 -1
  291. package/cjs/S6759/generated-meta.js +2 -1
  292. package/cjs/S6759/rule.js +31 -1
  293. package/cjs/S6958/generated-meta.js +2 -1
  294. package/cjs/S6959/generated-meta.js +2 -1
  295. package/cjs/S7059/generated-meta.js +2 -1
  296. package/cjs/S7639/generated-meta.js +2 -1
  297. package/cjs/S7790/generated-meta.js +2 -1
  298. package/cjs/S8441/generated-meta.js +2 -1
  299. package/cjs/S8479/generated-meta.js +3 -2
  300. package/cjs/{S4817 → S8754}/generated-meta.js +10 -9
  301. package/cjs/{S5743 → S8754}/meta.js +1 -1
  302. package/cjs/S8754/rule.js +289 -0
  303. package/cjs/{S4784 → S8780}/generated-meta.js +9 -8
  304. package/cjs/{S2255 → S8780}/meta.js +1 -1
  305. package/cjs/S8780/rule.js +321 -0
  306. package/cjs/S8781/generated-meta.js +52 -0
  307. package/cjs/{S4787 → S8781}/meta.js +1 -1
  308. package/cjs/{S4784 → S8781}/rule.js +38 -46
  309. package/cjs/S8782/generated-meta.js +52 -0
  310. package/cjs/{S4784 → S8782}/meta.js +1 -1
  311. package/cjs/S8782/rule.js +148 -0
  312. package/cjs/S8783/generated-meta.js +52 -0
  313. package/cjs/S8783/meta.js +21 -0
  314. package/cjs/S8783/rule.js +167 -0
  315. package/cjs/{S4787 → S8786}/generated-meta.js +9 -8
  316. package/cjs/S8786/meta.js +22 -0
  317. package/cjs/{S4818 → S8786}/rule.js +24 -20
  318. package/cjs/S881/generated-meta.js +2 -1
  319. package/cjs/S888/generated-meta.js +2 -1
  320. package/cjs/S930/generated-meta.js +2 -1
  321. package/cjs/helpers/assertions-chai-common.js +29 -0
  322. package/cjs/helpers/assertions-chai.js +331 -0
  323. package/cjs/helpers/assertions-cypress.js +95 -0
  324. package/cjs/helpers/assertions.js +285 -0
  325. package/cjs/helpers/ast.js +30 -0
  326. package/cjs/helpers/chai.js +1 -1
  327. package/cjs/helpers/configs.js +37 -1
  328. package/cjs/helpers/cypress.js +73 -0
  329. package/cjs/helpers/dependency-manifests/all-in-parent-dirs.js +92 -0
  330. package/cjs/helpers/{package-jsons → dependency-manifests}/closest.js +17 -9
  331. package/cjs/helpers/dependency-manifests/dependencies.js +255 -0
  332. package/cjs/helpers/dependency-manifests/index.js +78 -0
  333. package/cjs/helpers/dependency-manifests/parse.js +51 -0
  334. package/cjs/helpers/dependency-manifests/parsed-dependency-files.js +80 -0
  335. package/cjs/helpers/dependency-manifests/resolvers/deno.js +79 -0
  336. package/cjs/helpers/dependency-manifests/resolvers/helpers.js +41 -0
  337. package/cjs/helpers/dependency-manifests/resolvers/package-json.js +167 -0
  338. package/cjs/helpers/dependency-manifests/resolvers/types.js +4 -0
  339. package/cjs/helpers/files.js +29 -0
  340. package/cjs/helpers/find-up/all-in-parent-dirs.js +1 -0
  341. package/cjs/helpers/find-up/closest.js +1 -0
  342. package/cjs/helpers/find-up/find-minimatch.js +2 -2
  343. package/cjs/helpers/generate-meta.js +1 -1
  344. package/cjs/helpers/mocha-style-test-frameworks.js +132 -0
  345. package/cjs/helpers/mocha.js +17 -7
  346. package/cjs/helpers/module.js +116 -23
  347. package/cjs/helpers/numbers.js +62 -0
  348. package/cjs/helpers/playwright.js +13 -0
  349. package/cjs/helpers/regex/extract.js +21 -9
  350. package/cjs/helpers/regex/flags.js +12 -5
  351. package/cjs/helpers/sinon.js +0 -4
  352. package/cjs/helpers/supertest.js +0 -4
  353. package/cjs/helpers/test-file-pattern.js +63 -0
  354. package/cjs/helpers/type-origin.js +82 -0
  355. package/cjs/helpers/type.js +162 -1
  356. package/cjs/helpers/vitest.js +0 -4
  357. package/cjs/plugin-rules.js +296 -298
  358. package/docs/async-test-assertions.md +7 -0
  359. package/docs/aws-apigateway-public-api.md +1 -1
  360. package/docs/aws-ec2-rds-dms-public.md +1 -1
  361. package/docs/aws-efs-unencrypted.md +1 -1
  362. package/docs/aws-iam-all-resources-accessible.md +1 -1
  363. package/docs/aws-s3-bucket-insecure-http.md +1 -1
  364. package/docs/aws-s3-bucket-public-access.md +1 -1
  365. package/docs/aws-s3-bucket-versioning.md +1 -1
  366. package/docs/aws-sagemaker-unencrypted-notebook.md +1 -1
  367. package/docs/aws-sns-unencrypted-topics.md +1 -1
  368. package/docs/code-eval.md +1 -1
  369. package/docs/confidential-information-logging.md +4 -2
  370. package/docs/content-security-policy.md +1 -1
  371. package/docs/cookie-no-httponly.md +1 -1
  372. package/docs/csrf.md +1 -1
  373. package/docs/disabled-auto-escaping.md +1 -1
  374. package/docs/disabled-resource-integrity.md +1 -1
  375. package/docs/dompurify-unsafe-config.md +2 -0
  376. package/docs/frame-ancestors.md +4 -2
  377. package/docs/hashing.md +1 -1
  378. package/docs/hidden-files.md +4 -2
  379. package/docs/hooks-before-test-cases.md +7 -0
  380. package/docs/no-angular-bypass-sanitization.md +1 -1
  381. package/docs/no-clear-text-protocols.md +1 -1
  382. package/docs/no-commented-code.md +1 -1
  383. package/docs/no-duplicate-test-title.md +7 -0
  384. package/docs/no-empty-test-title.md +7 -0
  385. package/docs/no-floating-point-equality.md +7 -0
  386. package/docs/no-forced-browser-interaction.md +7 -0
  387. package/docs/no-incompatible-assertion-types.md +9 -0
  388. package/docs/no-intrusive-permissions.md +4 -2
  389. package/docs/no-ip-forward.md +4 -2
  390. package/docs/no-mime-sniff.md +1 -1
  391. package/docs/no-mixed-content.md +4 -2
  392. package/docs/no-os-command-from-path.md +1 -1
  393. package/docs/no-referrer-policy.md +1 -1
  394. package/docs/no-small-switch.md +2 -0
  395. package/docs/no-trivial-assertions.md +7 -0
  396. package/docs/os-command.md +4 -2
  397. package/docs/prefer-specific-assertions.md +9 -0
  398. package/docs/production-debug.md +1 -1
  399. package/docs/pseudo-random.md +1 -1
  400. package/docs/slow-regex.md +1 -1
  401. package/docs/sql-queries.md +1 -1
  402. package/docs/strict-transport-security.md +1 -1
  403. package/docs/super-linear-regex.md +7 -0
  404. package/package.json +5 -4
  405. package/types/S100/generated-meta.d.ts +1 -0
  406. package/types/S101/generated-meta.d.ts +1 -0
  407. package/types/S104/generated-meta.d.ts +1 -0
  408. package/types/S105/generated-meta.d.ts +1 -0
  409. package/types/S1066/generated-meta.d.ts +1 -0
  410. package/types/S1067/generated-meta.d.ts +1 -0
  411. package/types/S1110/generated-meta.d.ts +1 -0
  412. package/types/S1119/generated-meta.d.ts +1 -0
  413. package/types/S1121/generated-meta.d.ts +1 -0
  414. package/types/S1125/generated-meta.d.ts +1 -0
  415. package/types/S1126/generated-meta.d.ts +1 -0
  416. package/types/S1128/generated-meta.d.ts +1 -0
  417. package/types/S1134/generated-meta.d.ts +1 -0
  418. package/types/S1135/generated-meta.d.ts +1 -0
  419. package/types/S1154/generated-meta.d.ts +1 -0
  420. package/types/S117/generated-meta.d.ts +1 -0
  421. package/types/S1172/generated-meta.d.ts +1 -0
  422. package/types/S1192/generated-meta.d.ts +1 -0
  423. package/types/S1219/generated-meta.d.ts +1 -0
  424. package/types/S1226/generated-meta.d.ts +1 -0
  425. package/types/S124/generated-meta.d.ts +1 -0
  426. package/types/{S2255 → S1244}/generated-meta.d.ts +3 -2
  427. package/types/S1244/meta.d.ts +2 -0
  428. package/types/S125/generated-meta.d.ts +1 -0
  429. package/types/S126/generated-meta.d.ts +1 -0
  430. package/types/S1264/generated-meta.d.ts +1 -0
  431. package/types/S128/generated-meta.d.ts +1 -0
  432. package/types/S1291/generated-meta.d.ts +1 -0
  433. package/types/S1301/generated-meta.d.ts +2 -1
  434. package/types/S1313/generated-meta.d.ts +1 -0
  435. package/types/S134/generated-meta.d.ts +1 -0
  436. package/types/S135/generated-meta.d.ts +1 -0
  437. package/types/S138/generated-meta.d.ts +1 -0
  438. package/types/S1439/generated-meta.d.ts +1 -0
  439. package/types/S1444/generated-meta.d.ts +1 -0
  440. package/types/S1451/generated-meta.d.ts +1 -0
  441. package/types/S1472/generated-meta.d.ts +1 -0
  442. package/types/S1479/generated-meta.d.ts +1 -0
  443. package/types/S1481/generated-meta.d.ts +1 -0
  444. package/types/S1488/generated-meta.d.ts +1 -0
  445. package/types/S1515/generated-meta.d.ts +1 -0
  446. package/types/S1523/generated-meta.d.ts +1 -0
  447. package/types/S1526/generated-meta.d.ts +1 -0
  448. package/types/S1527/generated-meta.d.ts +1 -0
  449. package/types/S1528/generated-meta.d.ts +1 -0
  450. package/types/S1529/generated-meta.d.ts +1 -0
  451. package/types/S1530/generated-meta.d.ts +1 -0
  452. package/types/S1533/generated-meta.d.ts +1 -0
  453. package/types/S1535/generated-meta.d.ts +1 -0
  454. package/types/S1541/generated-meta.d.ts +1 -0
  455. package/types/S1607/generated-meta.d.ts +1 -0
  456. package/types/S1764/generated-meta.d.ts +1 -0
  457. package/types/S1821/generated-meta.d.ts +1 -0
  458. package/types/S1848/generated-meta.d.ts +1 -0
  459. package/types/S1854/generated-meta.d.ts +1 -0
  460. package/types/S1862/generated-meta.d.ts +1 -0
  461. package/types/S1871/generated-meta.d.ts +1 -0
  462. package/types/S1874/generated-meta.d.ts +1 -0
  463. package/types/S1940/generated-meta.d.ts +1 -0
  464. package/types/S1994/generated-meta.d.ts +1 -0
  465. package/types/S2004/generated-meta.d.ts +1 -0
  466. package/types/S2068/generated-meta.d.ts +1 -0
  467. package/types/S2077/generated-meta.d.ts +1 -0
  468. package/types/S2092/generated-meta.d.ts +1 -0
  469. package/types/S2123/generated-meta.d.ts +1 -0
  470. package/types/S2137/generated-meta.d.ts +1 -0
  471. package/types/S2138/generated-meta.d.ts +1 -0
  472. package/types/S2187/generated-meta.d.ts +1 -0
  473. package/types/S2201/generated-meta.d.ts +1 -0
  474. package/types/S2208/generated-meta.d.ts +1 -0
  475. package/types/S2234/generated-meta.d.ts +1 -0
  476. package/types/S2245/generated-meta.d.ts +1 -0
  477. package/types/S2251/generated-meta.d.ts +1 -0
  478. package/types/S2259/generated-meta.d.ts +1 -0
  479. package/types/S2301/generated-meta.d.ts +1 -0
  480. package/types/S2310/generated-meta.d.ts +1 -0
  481. package/types/S2392/generated-meta.d.ts +1 -0
  482. package/types/S2424/generated-meta.d.ts +1 -0
  483. package/types/S2428/generated-meta.d.ts +1 -0
  484. package/types/S2486/generated-meta.d.ts +1 -0
  485. package/types/S2589/generated-meta.d.ts +1 -0
  486. package/types/S2598/generated-meta.d.ts +1 -0
  487. package/types/S2612/generated-meta.d.ts +1 -0
  488. package/types/S2639/generated-meta.d.ts +1 -0
  489. package/types/S2681/generated-meta.d.ts +1 -0
  490. package/types/S2692/generated-meta.d.ts +1 -0
  491. package/types/S2699/generated-meta.d.ts +1 -0
  492. package/types/S2703/generated-meta.d.ts +1 -0
  493. package/types/S2737/generated-meta.d.ts +1 -0
  494. package/types/S2755/generated-meta.d.ts +1 -0
  495. package/types/S2757/generated-meta.d.ts +1 -0
  496. package/types/S2817/generated-meta.d.ts +1 -0
  497. package/types/S2819/generated-meta.d.ts +1 -0
  498. package/types/S2870/generated-meta.d.ts +1 -0
  499. package/types/S2871/generated-meta.d.ts +1 -0
  500. package/types/S2970/generated-meta.d.ts +1 -0
  501. package/types/S2990/generated-meta.d.ts +1 -0
  502. package/types/S2999/generated-meta.d.ts +1 -0
  503. package/types/S3001/generated-meta.d.ts +1 -0
  504. package/types/S3003/generated-meta.d.ts +1 -0
  505. package/types/S3317/generated-meta.d.ts +1 -0
  506. package/types/S3330/generated-meta.d.ts +1 -0
  507. package/types/S3358/generated-meta.d.ts +1 -0
  508. package/types/S3402/generated-meta.d.ts +1 -0
  509. package/types/S3403/generated-meta.d.ts +1 -0
  510. package/types/S3415/generated-meta.d.ts +1 -0
  511. package/types/S3499/generated-meta.d.ts +1 -0
  512. package/types/S3500/generated-meta.d.ts +1 -0
  513. package/types/S3513/generated-meta.d.ts +1 -0
  514. package/types/S3514/generated-meta.d.ts +1 -0
  515. package/types/S3516/generated-meta.d.ts +1 -0
  516. package/types/S3524/generated-meta.d.ts +1 -0
  517. package/types/S3525/generated-meta.d.ts +1 -0
  518. package/types/S3531/generated-meta.d.ts +1 -0
  519. package/types/S3533/generated-meta.d.ts +1 -0
  520. package/types/S3579/generated-meta.d.ts +1 -0
  521. package/types/S3616/generated-meta.d.ts +1 -0
  522. package/types/S3626/generated-meta.d.ts +1 -0
  523. package/types/S3686/generated-meta.d.ts +1 -0
  524. package/types/S3699/generated-meta.d.ts +1 -0
  525. package/types/S3735/generated-meta.d.ts +1 -0
  526. package/types/S3757/generated-meta.d.ts +1 -0
  527. package/types/S3758/generated-meta.d.ts +1 -0
  528. package/types/S3760/generated-meta.d.ts +1 -0
  529. package/types/S3776/generated-meta.d.ts +1 -0
  530. package/types/S3782/generated-meta.d.ts +1 -0
  531. package/types/S3785/generated-meta.d.ts +1 -0
  532. package/types/S3796/generated-meta.d.ts +1 -0
  533. package/types/S3798/generated-meta.d.ts +1 -0
  534. package/types/S3800/generated-meta.d.ts +1 -0
  535. package/types/S3801/generated-meta.d.ts +1 -0
  536. package/types/S3827/generated-meta.d.ts +1 -0
  537. package/types/S3923/generated-meta.d.ts +1 -0
  538. package/types/S3972/generated-meta.d.ts +1 -0
  539. package/types/S3973/generated-meta.d.ts +1 -0
  540. package/types/S3981/generated-meta.d.ts +1 -0
  541. package/types/S3984/generated-meta.d.ts +1 -0
  542. package/types/S4030/generated-meta.d.ts +1 -0
  543. package/types/S4036/generated-meta.d.ts +1 -0
  544. package/types/S4043/generated-meta.d.ts +1 -0
  545. package/types/S4139/generated-meta.d.ts +1 -0
  546. package/types/S4143/generated-meta.d.ts +1 -0
  547. package/types/S4144/generated-meta.d.ts +1 -0
  548. package/types/S4158/generated-meta.d.ts +1 -0
  549. package/types/S4165/generated-meta.d.ts +1 -0
  550. package/types/S4322/generated-meta.d.ts +1 -0
  551. package/types/S4323/generated-meta.d.ts +1 -0
  552. package/types/S4324/generated-meta.d.ts +1 -0
  553. package/types/S4328/generated-meta.d.ts +1 -0
  554. package/types/S4335/generated-meta.d.ts +1 -0
  555. package/types/S4423/generated-meta.d.ts +1 -0
  556. package/types/S4426/generated-meta.d.ts +1 -0
  557. package/types/S4502/generated-meta.d.ts +1 -0
  558. package/types/S4507/generated-meta.d.ts +1 -0
  559. package/types/S4524/generated-meta.d.ts +1 -0
  560. package/types/S4619/generated-meta.d.ts +1 -0
  561. package/types/S4621/generated-meta.d.ts +1 -0
  562. package/types/S4622/generated-meta.d.ts +1 -0
  563. package/types/S4623/generated-meta.d.ts +1 -0
  564. package/types/S4624/generated-meta.d.ts +1 -0
  565. package/types/S4634/generated-meta.d.ts +1 -0
  566. package/types/S4721/generated-meta.d.ts +2 -1
  567. package/types/S4782/generated-meta.d.ts +1 -0
  568. package/types/S4790/generated-meta.d.ts +1 -0
  569. package/types/S4798/generated-meta.d.ts +1 -0
  570. package/types/S4822/generated-meta.d.ts +1 -0
  571. package/types/S4830/generated-meta.d.ts +1 -0
  572. package/types/S5042/generated-meta.d.ts +1 -0
  573. package/types/S5122/generated-meta.d.ts +1 -0
  574. package/types/S5148/generated-meta.d.ts +1 -0
  575. package/types/S5247/generated-meta.d.ts +1 -0
  576. package/types/S5256/generated-meta.d.ts +1 -0
  577. package/types/S5257/generated-meta.d.ts +1 -0
  578. package/types/S5260/generated-meta.d.ts +1 -0
  579. package/types/S5264/generated-meta.d.ts +1 -0
  580. package/types/S5332/generated-meta.d.ts +1 -0
  581. package/types/S5443/generated-meta.d.ts +1 -0
  582. package/types/S5527/generated-meta.d.ts +1 -0
  583. package/types/S5542/generated-meta.d.ts +1 -0
  584. package/types/S5547/generated-meta.d.ts +1 -0
  585. package/types/S5604/generated-meta.d.ts +2 -1
  586. package/types/S5659/generated-meta.d.ts +1 -0
  587. package/types/S5689/generated-meta.d.ts +1 -0
  588. package/types/S5691/generated-meta.d.ts +2 -1
  589. package/types/S5693/generated-meta.d.ts +1 -0
  590. package/types/S5725/generated-meta.d.ts +1 -0
  591. package/types/S5728/generated-meta.d.ts +1 -0
  592. package/types/S5730/generated-meta.d.ts +2 -1
  593. package/types/S5732/generated-meta.d.ts +2 -1
  594. package/types/S5734/generated-meta.d.ts +1 -0
  595. package/types/S5736/generated-meta.d.ts +1 -0
  596. package/types/S5739/generated-meta.d.ts +1 -0
  597. package/types/S5757/generated-meta.d.ts +2 -1
  598. package/types/S5759/generated-meta.d.ts +2 -1
  599. package/types/S5842/generated-meta.d.ts +1 -0
  600. package/types/S5843/generated-meta.d.ts +1 -0
  601. package/types/S5845/generated-meta.d.ts +18 -0
  602. package/types/S5845/meta.d.ts +2 -0
  603. package/types/S5850/generated-meta.d.ts +1 -0
  604. package/types/S5852/generated-meta.d.ts +1 -0
  605. package/types/S5856/generated-meta.d.ts +1 -0
  606. package/types/S5860/generated-meta.d.ts +1 -0
  607. package/types/S5863/generated-meta.d.ts +1 -0
  608. package/types/S5867/generated-meta.d.ts +1 -0
  609. package/types/S5868/generated-meta.d.ts +1 -0
  610. package/types/S5869/generated-meta.d.ts +1 -0
  611. package/types/S5876/generated-meta.d.ts +1 -0
  612. package/types/S5906/assertion-suggestions.d.ts +7 -0
  613. package/types/S5906/assertion-utils.d.ts +14 -0
  614. package/types/S5906/cypress-suggestions.d.ts +4 -0
  615. package/types/S5906/expect-chain.d.ts +5 -0
  616. package/types/S5906/generated-meta.d.ts +18 -0
  617. package/types/S5906/meta.d.ts +2 -0
  618. package/types/S5906/playwright-suggestions.d.ts +4 -0
  619. package/types/{S4817 → S5914}/generated-meta.d.ts +5 -4
  620. package/types/S5914/meta.d.ts +2 -0
  621. package/types/S5958/generated-meta.d.ts +1 -0
  622. package/types/S5973/generated-meta.d.ts +1 -0
  623. package/types/S6019/generated-meta.d.ts +1 -0
  624. package/types/S6035/generated-meta.d.ts +1 -0
  625. package/types/S6079/generated-meta.d.ts +1 -0
  626. package/types/S6080/generated-meta.d.ts +1 -0
  627. package/types/S6092/generated-meta.d.ts +1 -0
  628. package/types/S6249/generated-meta.d.ts +1 -0
  629. package/types/S6252/generated-meta.d.ts +1 -0
  630. package/types/S6265/generated-meta.d.ts +1 -0
  631. package/types/S6268/generated-meta.d.ts +1 -0
  632. package/types/S6270/generated-meta.d.ts +1 -0
  633. package/types/S6275/generated-meta.d.ts +1 -0
  634. package/types/S6281/generated-meta.d.ts +1 -0
  635. package/types/S6302/generated-meta.d.ts +1 -0
  636. package/types/S6303/generated-meta.d.ts +1 -0
  637. package/types/S6304/generated-meta.d.ts +1 -0
  638. package/types/S6308/generated-meta.d.ts +1 -0
  639. package/types/S6317/generated-meta.d.ts +1 -0
  640. package/types/S6319/generated-meta.d.ts +1 -0
  641. package/types/S6321/generated-meta.d.ts +1 -0
  642. package/types/S6323/generated-meta.d.ts +1 -0
  643. package/types/S6324/generated-meta.d.ts +1 -0
  644. package/types/S6326/generated-meta.d.ts +1 -0
  645. package/types/S6327/generated-meta.d.ts +1 -0
  646. package/types/S6328/generated-meta.d.ts +1 -0
  647. package/types/S6329/generated-meta.d.ts +1 -0
  648. package/types/S6330/generated-meta.d.ts +1 -0
  649. package/types/S6331/generated-meta.d.ts +1 -0
  650. package/types/S6332/generated-meta.d.ts +1 -0
  651. package/types/S6333/generated-meta.d.ts +1 -0
  652. package/types/S6351/generated-meta.d.ts +1 -0
  653. package/types/S6353/generated-meta.d.ts +1 -0
  654. package/types/S6397/generated-meta.d.ts +1 -0
  655. package/types/S6418/generated-meta.d.ts +1 -0
  656. package/types/S6426/generated-meta.d.ts +1 -0
  657. package/types/S6437/generated-meta.d.ts +1 -0
  658. package/types/S6439/generated-meta.d.ts +1 -0
  659. package/types/S6442/generated-meta.d.ts +1 -0
  660. package/types/S6443/generated-meta.d.ts +1 -0
  661. package/types/S6486/generated-meta.d.ts +1 -0
  662. package/types/S6564/generated-meta.d.ts +1 -0
  663. package/types/S6594/generated-meta.d.ts +1 -0
  664. package/types/S6627/generated-meta.d.ts +1 -0
  665. package/types/S6759/generated-meta.d.ts +1 -0
  666. package/types/S6958/generated-meta.d.ts +1 -0
  667. package/types/S6959/generated-meta.d.ts +1 -0
  668. package/types/S7059/generated-meta.d.ts +1 -0
  669. package/types/S7639/generated-meta.d.ts +1 -0
  670. package/types/S7790/generated-meta.d.ts +1 -0
  671. package/types/S8441/generated-meta.d.ts +1 -0
  672. package/types/S8479/generated-meta.d.ts +2 -1
  673. package/types/S8754/generated-meta.d.ts +18 -0
  674. package/types/{S5743 → S8754}/meta.d.ts +1 -1
  675. package/types/{S4787 → S8780}/generated-meta.d.ts +4 -3
  676. package/types/S8780/meta.d.ts +2 -0
  677. package/types/S8781/generated-meta.d.ts +18 -0
  678. package/types/S8781/meta.d.ts +2 -0
  679. package/types/S8782/generated-meta.d.ts +18 -0
  680. package/types/S8782/meta.d.ts +2 -0
  681. package/types/S8783/generated-meta.d.ts +18 -0
  682. package/types/S8783/meta.d.ts +2 -0
  683. package/types/{S4784 → S8786}/generated-meta.d.ts +4 -3
  684. package/types/S8786/meta.d.ts +2 -0
  685. package/types/S881/generated-meta.d.ts +1 -0
  686. package/types/S888/generated-meta.d.ts +1 -0
  687. package/types/S930/generated-meta.d.ts +1 -0
  688. package/types/helpers/assertions-chai-common.d.ts +7 -0
  689. package/types/helpers/assertions-chai.d.ts +4 -0
  690. package/types/helpers/assertions-cypress.d.ts +7 -0
  691. package/types/helpers/assertions.d.ts +39 -0
  692. package/types/helpers/ast.d.ts +10 -0
  693. package/types/helpers/configs.d.ts +7 -38
  694. package/types/helpers/cypress.d.ts +11 -0
  695. package/types/helpers/dependency-manifests/all-in-parent-dirs.d.ts +18 -0
  696. package/types/helpers/dependency-manifests/closest.d.ts +5 -0
  697. package/types/helpers/{package-jsons → dependency-manifests}/dependencies.d.ts +22 -17
  698. package/types/helpers/dependency-manifests/index.d.ts +22 -0
  699. package/types/helpers/dependency-manifests/parse.d.ts +12 -0
  700. package/types/helpers/dependency-manifests/parsed-dependency-files.d.ts +8 -0
  701. package/types/helpers/dependency-manifests/resolvers/deno.d.ts +12 -0
  702. package/types/helpers/dependency-manifests/resolvers/helpers.d.ts +12 -0
  703. package/types/helpers/dependency-manifests/resolvers/package-json.d.ts +2 -0
  704. package/types/helpers/dependency-manifests/resolvers/types.d.ts +46 -0
  705. package/types/helpers/files.d.ts +10 -2
  706. package/types/helpers/generate-meta.d.ts +5 -0
  707. package/types/helpers/mocha-style-test-frameworks.d.ts +19 -0
  708. package/types/helpers/mocha.d.ts +7 -0
  709. package/types/helpers/module.d.ts +14 -8
  710. package/types/helpers/numbers.d.ts +4 -0
  711. package/types/helpers/playwright.d.ts +2 -0
  712. package/types/helpers/regex/extract.d.ts +7 -3
  713. package/types/helpers/sinon.d.ts +0 -1
  714. package/types/helpers/supertest.d.ts +0 -1
  715. package/types/helpers/test-file-pattern.d.ts +17 -0
  716. package/types/helpers/type-origin.d.ts +31 -0
  717. package/types/helpers/type.d.ts +92 -1
  718. package/types/helpers/vitest.d.ts +0 -1
  719. package/types/plugin-rules.d.ts +10 -11
  720. package/cjs/S2255/rule.js +0 -111
  721. package/cjs/S4787/rule.js +0 -124
  722. package/cjs/S4817/rule.js +0 -103
  723. package/cjs/S4818/generated-meta.js +0 -51
  724. package/cjs/S4818/meta.js +0 -21
  725. package/cjs/S4823/generated-meta.js +0 -51
  726. package/cjs/S4823/meta.js +0 -21
  727. package/cjs/S4823/rule.js +0 -75
  728. package/cjs/S4829/generated-meta.js +0 -51
  729. package/cjs/S4829/meta.js +0 -21
  730. package/cjs/S4829/rule.js +0 -75
  731. package/cjs/S5742/generated-meta.js +0 -51
  732. package/cjs/S5742/meta.js +0 -22
  733. package/cjs/S5742/rule.js +0 -75
  734. package/cjs/S5743/generated-meta.js +0 -51
  735. package/cjs/S5743/rule.js +0 -78
  736. package/cjs/S6245/generated-meta.js +0 -51
  737. package/cjs/S6245/meta.js +0 -22
  738. package/cjs/S6245/rule.js +0 -87
  739. package/cjs/S6299/generated-meta.js +0 -51
  740. package/cjs/S6299/index.js +0 -21
  741. package/cjs/S6299/meta.js +0 -21
  742. package/cjs/S6299/rule.js +0 -93
  743. package/cjs/helpers/package-jsons/all-in-parent-dirs.js +0 -31
  744. package/cjs/helpers/package-jsons/dependencies.js +0 -221
  745. package/cjs/helpers/package-jsons/index.js +0 -42
  746. package/cjs/helpers/package-jsons/parse.js +0 -79
  747. package/docs/aws-s3-bucket-server-encryption.md +0 -9
  748. package/docs/certificate-transparency.md +0 -9
  749. package/docs/cookies.md +0 -9
  750. package/docs/dns-prefetching.md +0 -9
  751. package/docs/encryption.md +0 -9
  752. package/docs/no-vue-bypass-sanitization.md +0 -9
  753. package/docs/process-argv.md +0 -9
  754. package/docs/regular-expr.md +0 -9
  755. package/docs/sockets.md +0 -9
  756. package/docs/standard-input.md +0 -9
  757. package/docs/xpath.md +0 -9
  758. package/types/S2255/meta.d.ts +0 -2
  759. package/types/S4784/meta.d.ts +0 -2
  760. package/types/S4787/meta.d.ts +0 -2
  761. package/types/S4817/meta.d.ts +0 -2
  762. package/types/S4818/generated-meta.d.ts +0 -17
  763. package/types/S4818/meta.d.ts +0 -2
  764. package/types/S4823/generated-meta.d.ts +0 -17
  765. package/types/S4823/meta.d.ts +0 -2
  766. package/types/S4829/generated-meta.d.ts +0 -17
  767. package/types/S4829/meta.d.ts +0 -2
  768. package/types/S5742/generated-meta.d.ts +0 -17
  769. package/types/S5742/meta.d.ts +0 -3
  770. package/types/S5743/generated-meta.d.ts +0 -17
  771. package/types/S6245/generated-meta.d.ts +0 -17
  772. package/types/S6245/meta.d.ts +0 -3
  773. package/types/S6299/generated-meta.d.ts +0 -17
  774. package/types/S6299/index.d.ts +0 -1
  775. package/types/S6299/meta.d.ts +0 -2
  776. package/types/S6299/rule.d.ts +0 -2
  777. package/types/helpers/package-jsons/all-in-parent-dirs.d.ts +0 -10
  778. package/types/helpers/package-jsons/closest.d.ts +0 -2
  779. package/types/helpers/package-jsons/index.d.ts +0 -8
  780. package/types/helpers/package-jsons/parse.d.ts +0 -13
  781. /package/cjs/{S2255 → S1244}/index.js +0 -0
  782. /package/cjs/{S4784 → S5845}/index.js +0 -0
  783. /package/cjs/{S4787 → S5906}/index.js +0 -0
  784. /package/cjs/{S4817 → S5914}/index.js +0 -0
  785. /package/cjs/{S4818 → S8754}/index.js +0 -0
  786. /package/cjs/{S4823 → S8780}/index.js +0 -0
  787. /package/cjs/{S4829 → S8781}/index.js +0 -0
  788. /package/cjs/{S5742 → S8782}/index.js +0 -0
  789. /package/cjs/{S5743 → S8783}/index.js +0 -0
  790. /package/cjs/{S6245 → S8786}/index.js +0 -0
  791. /package/types/{S2255 → S1244}/index.d.ts +0 -0
  792. /package/types/{S2255 → S1244}/rule.d.ts +0 -0
  793. /package/types/{S4784 → S5845}/index.d.ts +0 -0
  794. /package/types/{S4784 → S5845}/rule.d.ts +0 -0
  795. /package/types/{S4787 → S5906}/index.d.ts +0 -0
  796. /package/types/{S4787 → S5906}/rule.d.ts +0 -0
  797. /package/types/{S4817 → S5914}/index.d.ts +0 -0
  798. /package/types/{S4817 → S5914}/rule.d.ts +0 -0
  799. /package/types/{S4818 → S8754}/index.d.ts +0 -0
  800. /package/types/{S4818 → S8754}/rule.d.ts +0 -0
  801. /package/types/{S4823 → S8780}/index.d.ts +0 -0
  802. /package/types/{S4823 → S8780}/rule.d.ts +0 -0
  803. /package/types/{S4829 → S8781}/index.d.ts +0 -0
  804. /package/types/{S4829 → S8781}/rule.d.ts +0 -0
  805. /package/types/{S5742 → S8782}/index.d.ts +0 -0
  806. /package/types/{S5742 → S8782}/rule.d.ts +0 -0
  807. /package/types/{S5743 → S8783}/index.d.ts +0 -0
  808. /package/types/{S5743 → S8783}/rule.d.ts +0 -0
  809. /package/types/{S6245 → S8786}/index.d.ts +0 -0
  810. /package/types/{S6245 → S8786}/rule.d.ts +0 -0
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDescribe = isDescribe;
4
+ const ast_js_1 = require("./ast.js");
5
+ const describeModifiers = ['parallel', 'serial'];
6
+ function isDescribe(node) {
7
+ if (node?.type !== 'MemberExpression' || node.computed) {
8
+ return false;
9
+ }
10
+ const { object, property } = node;
11
+ return (((0, ast_js_1.isIdentifier)(object, 'test') && (0, ast_js_1.isIdentifier)(property, 'describe')) ||
12
+ ((0, ast_js_1.isIdentifier)(property, ...describeModifiers) && isDescribe(object)));
13
+ }
@@ -58,34 +58,46 @@ function getPatternFromNode(node, context) {
58
58
  if (patternOnly && flags !== null) {
59
59
  // if we can't extract flags correctly, we skip this
60
60
  // to avoid FPs
61
- return { pattern: patternOnly.pattern, flags };
61
+ return { ...patternOnly, flags };
62
62
  }
63
63
  }
64
64
  else if ((0, ast_js_1.isRegexLiteral)(node)) {
65
- return node.regex;
65
+ return literalPattern(node.regex.pattern, node.regex.flags);
66
66
  }
67
67
  else if ((0, ast_js_1.isStringLiteral)(node)) {
68
- return { pattern: node.value, flags: '' };
68
+ return literalPattern(node.value);
69
69
  }
70
70
  else if ((0, ast_js_1.isStaticTemplateLiteral)(node)) {
71
- return { pattern: node.quasis[0].value.raw, flags: '' };
71
+ return literalPattern(node.quasis[0].value.raw);
72
72
  }
73
73
  else if ((0, ast_js_1.isSimpleRawString)(node)) {
74
- return { pattern: (0, ast_js_1.getSimpleRawStringValue)(node), flags: '' };
74
+ return literalPattern((0, ast_js_1.getSimpleRawStringValue)(node));
75
75
  }
76
76
  else if ((0, ast_js_1.isIdentifier)(node)) {
77
77
  const assignedExpression = (0, ast_js_1.getUniqueWriteUsage)(context, node.name, node);
78
78
  if (assignedExpression &&
79
79
  assignedExpression.parent?.type === 'VariableDeclarator') {
80
- return getPatternFromNode(assignedExpression, context);
80
+ const pattern = getPatternFromNode(assignedExpression, context);
81
+ return pattern ? { ...pattern, isPureLiteral: false } : null;
81
82
  }
82
83
  }
83
84
  else if ((0, ast_js_1.isBinaryPlus)(node)) {
84
85
  const left = getPatternFromNode(node.left, context);
85
86
  const right = getPatternFromNode(node.right, context);
86
- if (left && right) {
87
- return { pattern: left.pattern + right.pattern, flags: '' };
88
- }
87
+ return left && right ? concatPatterns(left, right) : null;
89
88
  }
90
89
  return null;
91
90
  }
91
+ function literalPattern(pattern, flags = '') {
92
+ return { pattern, flags, seams: [], isPureLiteral: true };
93
+ }
94
+ function concatPatterns(left, right) {
95
+ const splitOffset = left.pattern.length;
96
+ const splitSeams = left.isPureLiteral && right.isPureLiteral ? [] : [splitOffset];
97
+ return {
98
+ pattern: left.pattern + right.pattern,
99
+ flags: '',
100
+ seams: [...left.seams, ...splitSeams, ...right.seams.map(s => s + splitOffset)],
101
+ isPureLiteral: left.isPureLiteral && right.isPureLiteral,
102
+ };
103
+ }
@@ -8,18 +8,25 @@ function getFlags(callExpr, context) {
8
8
  return '';
9
9
  }
10
10
  const flags = callExpr.arguments[1];
11
- // Matches flags in: new RegExp(pattern, 'u')
12
- if ((0, ast_js_1.isStringLiteral)(flags)) {
13
- return flags.value;
11
+ const staticFlags = getStaticFlagsValue(flags);
12
+ if (staticFlags !== null) {
13
+ return staticFlags;
14
14
  }
15
15
  if (flags.type === 'Identifier' && context !== undefined) {
16
16
  // it's a variable, so we try to extract its value, but only if it's written once (const)
17
17
  const variable = (0, reaching_definitions_js_1.getVariableFromIdentifier)(flags, context.sourceCode.getScope(callExpr));
18
18
  const ref = (0, ast_js_1.getUniqueWriteReference)(variable);
19
- if (ref !== undefined && (0, ast_js_1.isStringLiteral)(ref)) {
20
- return ref.value;
19
+ if (ref !== undefined) {
20
+ return getStaticFlagsValue(ref);
21
21
  }
22
22
  }
23
+ return null;
24
+ }
25
+ function getStaticFlagsValue(flags) {
26
+ // Matches flags in: new RegExp(pattern, 'u')
27
+ if ((0, ast_js_1.isStringLiteral)(flags)) {
28
+ return flags.value;
29
+ }
23
30
  // Matches flags with basic template literals as in: new RegExp(pattern, `u`)
24
31
  // but not: new RegExp(pattern, `${flag}`)
25
32
  // The cooked value should always be non-null in this case.
@@ -3,15 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isImported = isImported;
7
6
  exports.isAssertion = isAssertion;
8
7
  exports.isTSAssertion = isTSAssertion;
9
8
  const module_js_1 = require("./module.js");
10
9
  const module_ts_js_1 = require("./module-ts.js");
11
10
  const typescript_1 = __importDefault(require("typescript"));
12
- function isImported(context) {
13
- return ((0, module_js_1.getRequireCalls)(context).some(r => r.arguments[0].type === 'Literal' && r.arguments[0].value === 'sinon') || (0, module_js_1.getImportDeclarations)(context).some(i => i.source.value === 'sinon'));
14
- }
15
11
  function isAssertion(context, node) {
16
12
  return isAssertUsage(context, node);
17
13
  }
@@ -3,15 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isImported = isImported;
7
6
  exports.isAssertion = isAssertion;
8
7
  exports.isTSAssertion = isTSAssertion;
9
8
  const module_js_1 = require("./module.js");
10
9
  const module_ts_js_1 = require("./module-ts.js");
11
10
  const typescript_1 = __importDefault(require("typescript"));
12
- function isImported(context) {
13
- return ((0, module_js_1.getRequireCalls)(context).some(r => r.arguments[0].type === 'Literal' && r.arguments[0].value === 'supertest') || (0, module_js_1.getImportDeclarations)(context).some(i => i.source.value === 'supertest'));
14
- }
15
11
  function isAssertion(context, node) {
16
12
  const fqn = extractFQNForCallExpression(context, node);
17
13
  return isFQNAssertion(fqn);
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TEST_FILE_EXTENSIONS = void 0;
4
+ exports.isTestFile = isTestFile;
5
+ exports.isTestRelatedFile = isTestRelatedFile;
6
+ /*
7
+ * SonarQube JavaScript Plugin
8
+ * Copyright (C) SonarSource Sàrl
9
+ * mailto:info AT sonarsource DOT com
10
+ *
11
+ * You can redistribute and/or modify this program under the terms of
12
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
+ * See the Sonar Source-Available License for more details.
18
+ *
19
+ * You should have received a copy of the Sonar Source-Available License
20
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
21
+ */
22
+ exports.DEFAULT_TEST_FILE_EXTENSIONS = [
23
+ '.js',
24
+ '.mjs',
25
+ '.cjs',
26
+ '.jsx',
27
+ '.vue',
28
+ '.ts',
29
+ '.mts',
30
+ '.cts',
31
+ '.tsx',
32
+ ];
33
+ function suffixAlternation(extensions) {
34
+ const effective = extensions?.length ? extensions : exports.DEFAULT_TEST_FILE_EXTENSIONS;
35
+ return effective.map(ext => (ext.startsWith('.') ? ext.slice(1) : ext)).join('|');
36
+ }
37
+ function testFilePattern(extensions) {
38
+ return new RegExp(String.raw `\.(?:test|spec|cy)\.(?:${suffixAlternation(extensions)})$`);
39
+ }
40
+ function testRelatedFilePattern(extensions) {
41
+ const alternation = suffixAlternation(extensions);
42
+ return new RegExp(String.raw `\.(?:test|spec|cy)\.(?:${alternation})$|\.(?:e2e|mock)\.(?:${alternation})$|(?:^|[\\/])(?:__tests__|__mocks__)[\\/]`);
43
+ }
44
+ /**
45
+ * Checks whether a file path matches a test file pattern.
46
+ *
47
+ * @param filePath the file path to test.
48
+ * @param extensions the allowed test file extensions.
49
+ * @returns true when the path looks like a test file.
50
+ */
51
+ function isTestFile(filePath, extensions) {
52
+ return testFilePattern(extensions).test(filePath);
53
+ }
54
+ /**
55
+ * Checks whether a file path looks test-related.
56
+ *
57
+ * @param filePath the file path to test.
58
+ * @param extensions the allowed test file extensions.
59
+ * @returns true when the path looks test-related.
60
+ */
61
+ function isTestRelatedFile(filePath, extensions) {
62
+ return testRelatedFilePattern(extensions).test(filePath);
63
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.classifyTypesByOrigin = classifyTypesByOrigin;
7
+ /*
8
+ * SonarQube JavaScript Plugin
9
+ * Copyright (C) SonarSource Sàrl
10
+ * mailto:info AT sonarsource DOT com
11
+ *
12
+ * You can redistribute and/or modify this program under the terms of
13
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
14
+ *
15
+ * This program is distributed in the hope that it will be useful,
16
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the Sonar Source-Available License for more details.
19
+ *
20
+ * You should have received a copy of the Sonar Source-Available License
21
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
22
+ */
23
+ const typescript_1 = __importDefault(require("typescript"));
24
+ /**
25
+ * Partitions the syntactic members of a type annotation into "internal"
26
+ * (user-writable in this project) and "external" (declared in node_modules
27
+ * or in the TypeScript default lib).
28
+ *
29
+ * Operates on the syntactic AST node, not on a resolved `ts.Type`. Returning
30
+ * the original AST nodes lets callers produce locations, suggestions, or
31
+ * fixes targeting exactly what the user wrote.
32
+ *
33
+ * Classification rules per top-level member:
34
+ * - Keyword / literal types -> internal (the user wrote them directly).
35
+ * - TSTypeReference -> resolves the type name to a symbol and inspects its
36
+ * declarations. A reference is external only when ALL declarations live in
37
+ * files that satisfy `isSourceFileFromExternalLibrary` or
38
+ * `isSourceFileDefaultLibrary`. Any local declaration (declaration-merging
39
+ * escape hatch) makes the reference internal.
40
+ * - Any other composite constructor (TSIntersectionType, TSArrayType,
41
+ * TSTypeLiteral, TSConditionalType, ...) -> internal at the top level. We
42
+ * do not recurse; callers can if they need to.
43
+ *
44
+ * Known limitation: alias chains are not followed. If the user re-aliases an
45
+ * external type locally (e.g. `type Inner = ReactNode`), the local alias is
46
+ * internal because the user has a place to edit.
47
+ */
48
+ function classifyTypesByOrigin(typeNode, services) {
49
+ const members = typeNode.type === 'TSUnionType' ? typeNode.types : [typeNode];
50
+ const result = { internal: [], external: [] };
51
+ for (const member of members) {
52
+ if (isExternalMember(member, services)) {
53
+ result.external.push(member);
54
+ }
55
+ else {
56
+ result.internal.push(member);
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ function isExternalMember(member, services) {
62
+ if (member.type !== 'TSTypeReference') {
63
+ return false;
64
+ }
65
+ const checker = services.program.getTypeChecker();
66
+ const tsNode = services.esTreeNodeToTSNodeMap.get(member);
67
+ let symbol = checker.getSymbolAtLocation(tsNode.typeName);
68
+ // Imported names resolve to a local alias symbol pointing at the import
69
+ // statement; without following the alias, external imports would look local.
70
+ if (symbol && symbol.flags & typescript_1.default.SymbolFlags.Alias) {
71
+ symbol = checker.getAliasedSymbol(symbol);
72
+ }
73
+ if (!symbol?.declarations?.length) {
74
+ return false;
75
+ }
76
+ const program = services.program;
77
+ return symbol.declarations.every(decl => {
78
+ const sourceFile = decl.getSourceFile();
79
+ return (program.isSourceFileFromExternalLibrary(sourceFile) ||
80
+ program.isSourceFileDefaultLibrary(sourceFile));
81
+ });
82
+ }
@@ -17,6 +17,8 @@ exports.isUndefinedOrNull = isUndefinedOrNull;
17
17
  exports.isThenable = isThenable;
18
18
  exports.isThenableOrVoidUnion = isThenableOrVoidUnion;
19
19
  exports.isAny = isAny;
20
+ exports.areMutuallyAssignableTypes = areMutuallyAssignableTypes;
21
+ exports.areSameTypeDeclarations = areSameTypeDeclarations;
20
22
  exports.isGenericType = isGenericType;
21
23
  exports.getTypeFromTreeNode = getTypeFromTreeNode;
22
24
  exports.getTypeAsString = getTypeAsString;
@@ -26,6 +28,7 @@ exports.isArrayLikeType = isArrayLikeType;
26
28
  exports.isStringArray = isStringArray;
27
29
  exports.isNumberArray = isNumberArray;
28
30
  exports.isBigIntArray = isBigIntArray;
31
+ exports.isBooleanArray = isBooleanArray;
29
32
  exports.isTypeAlias = isTypeAlias;
30
33
  exports.isBooleanTrueType = isBooleanTrueType;
31
34
  exports.isBooleanType = isBooleanType;
@@ -36,6 +39,9 @@ exports.isIterable = isIterable;
36
39
  exports.getFunctionParameterCount = getFunctionParameterCount;
37
40
  const typescript_1 = __importDefault(require("typescript"));
38
41
  const ast_js_1 = require("./ast.js");
42
+ /**
43
+ * Returns true when `node` resolves to the built-in `Array` type.
44
+ */
39
45
  function isArray(node, services) {
40
46
  const type = getTypeFromTreeNode(node, services);
41
47
  return type.symbol?.name === 'Array';
@@ -95,30 +101,51 @@ function isTypedArray(node, services) {
95
101
  const type = getTypeFromTreeNode(node, services);
96
102
  return TYPED_ARRAY_TYPES.has(type.symbol?.name);
97
103
  }
104
+ /**
105
+ * Returns true when `node` resolves to a string-like type.
106
+ */
98
107
  function isString(node, services) {
99
108
  const checker = services.program.getTypeChecker();
100
109
  const typ = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
101
110
  return (typ.getFlags() & typescript_1.default.TypeFlags.StringLike) !== 0;
102
111
  }
112
+ /**
113
+ * Returns true when `node` resolves to a number-like type.
114
+ */
103
115
  function isNumber(node, services) {
104
116
  const checker = services.program.getTypeChecker();
105
117
  const typ = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
106
118
  return (typ.getFlags() & typescript_1.default.TypeFlags.NumberLike) !== 0;
107
119
  }
120
+ /**
121
+ * Returns true when `type` is bigint-like.
122
+ */
108
123
  function isBigIntType(type) {
109
124
  return (type.getFlags() & typescript_1.default.TypeFlags.BigIntLike) !== 0;
110
125
  }
126
+ /**
127
+ * Returns true when `type` is number-like.
128
+ */
111
129
  function isNumberType(type) {
112
130
  return (type.getFlags() & typescript_1.default.TypeFlags.NumberLike) !== 0;
113
131
  }
132
+ /**
133
+ * Returns true when `type` is string-like.
134
+ */
114
135
  function isStringType(type) {
115
136
  return (type.flags & typescript_1.default.TypeFlags.StringLike) > 0 || type.symbol?.name === 'String';
116
137
  }
138
+ /**
139
+ * Returns true when `node` resolves to a function type.
140
+ */
117
141
  function isFunction(node, services) {
118
142
  const checker = services.program.getTypeChecker();
119
143
  const type = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
120
144
  return type.symbol && (type.symbol.flags & typescript_1.default.SymbolFlags.Function) !== 0;
121
145
  }
146
+ /**
147
+ * Returns true when `node` resolves to a union type.
148
+ */
122
149
  function isUnion(node, services) {
123
150
  const checker = services.program.getTypeChecker();
124
151
  const type = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
@@ -133,11 +160,17 @@ function isUnion(node, services) {
133
160
  function getUnionTypes(type) {
134
161
  return type.isUnion() ? type.types : [type];
135
162
  }
163
+ /**
164
+ * Returns true when `node` resolves to `undefined`, `null`, or a union containing either.
165
+ */
136
166
  function isUndefinedOrNull(node, services) {
137
167
  const checker = services.program.getTypeChecker();
138
168
  const typ = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
139
169
  return ((typ.getFlags() & typescript_1.default.TypeFlags.Undefined) !== 0 || (typ.getFlags() & typescript_1.default.TypeFlags.Null) !== 0);
140
170
  }
171
+ /**
172
+ * Returns true when `node` resolves to a thenable type.
173
+ */
141
174
  function isThenable(node, services) {
142
175
  const mapped = services.esTreeNodeToTSNodeMap.get(node);
143
176
  const checker = services.program.getTypeChecker();
@@ -174,9 +207,102 @@ function hasThenMethod(type, checker) {
174
207
  const thenType = checker.getTypeOfSymbol(thenProperty);
175
208
  return thenType.getCallSignatures().length > 0;
176
209
  }
210
+ /**
211
+ * Returns true when `type` is exactly `any`.
212
+ */
177
213
  function isAny(type) {
178
214
  return type.flags === typescript_1.default.TypeFlags.Any;
179
215
  }
216
+ /**
217
+ * Returns true when both types are specific enough to compare (neither `any`
218
+ * nor `unknown`) and are mutually assignable.
219
+ *
220
+ * Mutual assignability is stricter than symbol equality for generic aliases:
221
+ * `Props<User>` and `Props<Product>` share the same alias symbol, but they are
222
+ * not mutually assignable and therefore do not represent the same effective type.
223
+ */
224
+ function areMutuallyAssignableTypes(checker, left, right) {
225
+ if (!left || !right || isAnyOrUnknownType(left) || isAnyOrUnknownType(right)) {
226
+ return false;
227
+ }
228
+ // @ts-ignore -- isTypeAssignableTo is a private TypeScript API
229
+ return checker.isTypeAssignableTo(left, right) && checker.isTypeAssignableTo(right, left);
230
+ }
231
+ /**
232
+ * Returns true when both types come from the same named declaration and, for
233
+ * generic declarations, are instantiated with the same type arguments.
234
+ *
235
+ * The comparison has two steps:
236
+ * 1. the declarations must resolve to the same symbol
237
+ * 2. each type argument must match through `areSameTypeArguments(...)`
238
+ *
239
+ * That helper can call back into this function for named type arguments, so
240
+ * generic comparisons recurse through nested declarations.
241
+ *
242
+ * This is intentionally stricter than structural equality: `Props<User>` and
243
+ * `Props<Product>` are different, and `Props<User>` also stays different from
244
+ * `Props<{ id: string }>` even if the shapes happen to match.
245
+ */
246
+ function areSameTypeDeclarations(checker, left, right) {
247
+ if (!left || !right || isAnyOrUnknownType(left) || isAnyOrUnknownType(right)) {
248
+ return false;
249
+ }
250
+ const leftSymbol = getComparableDeclaredTypeSymbol(left);
251
+ const rightSymbol = getComparableDeclaredTypeSymbol(right);
252
+ if (!leftSymbol || leftSymbol !== rightSymbol) {
253
+ return false;
254
+ }
255
+ const leftArgs = getDeclaredTypeArguments(left, checker);
256
+ const rightArgs = getDeclaredTypeArguments(right, checker);
257
+ return (leftArgs.length === rightArgs.length &&
258
+ leftArgs.every((argument, index) => areSameTypeArguments(checker, argument, rightArgs[index])));
259
+ }
260
+ function areSameTypeArguments(checker, left, right) {
261
+ if (!left || !right) {
262
+ return false;
263
+ }
264
+ if (isAnyOrUnknownType(left) || isAnyOrUnknownType(right)) {
265
+ return (isAnyOrUnknownType(left) &&
266
+ isAnyOrUnknownType(right) &&
267
+ checker.typeToString(left) === checker.typeToString(right));
268
+ }
269
+ const leftSymbol = getComparableDeclaredTypeSymbol(left);
270
+ const rightSymbol = getComparableDeclaredTypeSymbol(right);
271
+ if (leftSymbol || rightSymbol) {
272
+ // Keep named type arguments distinct from anonymous structural literals.
273
+ return leftSymbol !== undefined && leftSymbol === rightSymbol
274
+ ? areSameTypeDeclarations(checker, left, right)
275
+ : false;
276
+ }
277
+ // Primitives, unions, tuples, and anonymous object literals do not have a
278
+ // stable declared type symbol, so compare their effective instantiated form.
279
+ return checker.typeToString(left) === checker.typeToString(right);
280
+ }
281
+ function isAnyOrUnknownType(type) {
282
+ return (type.flags & (typescript_1.default.TypeFlags.Any | typescript_1.default.TypeFlags.Unknown)) !== 0;
283
+ }
284
+ /**
285
+ * Returns the symbol to use for declaration-based comparisons.
286
+ *
287
+ * Anonymous type literals such as `{ id: string }` are intentionally excluded:
288
+ * their `TypeLiteral` symbols do not represent stable declaration identities.
289
+ * Named interfaces and type aliases are still kept because we prefer
290
+ * `aliasSymbol` over the underlying `TypeLiteral` symbol.
291
+ */
292
+ function getComparableDeclaredTypeSymbol(type) {
293
+ const symbol = type.aliasSymbol ?? type.symbol;
294
+ return symbol && (symbol.flags & typescript_1.default.SymbolFlags.TypeLiteral) === 0 ? symbol : undefined;
295
+ }
296
+ function getDeclaredTypeArguments(type, checker) {
297
+ if (type.aliasTypeArguments?.length) {
298
+ return type.aliasTypeArguments;
299
+ }
300
+ return isTypeReference(type) ? checker.getTypeArguments(type) : [];
301
+ }
302
+ function isTypeReference(type) {
303
+ return ((type.flags & typescript_1.default.TypeFlags.Object) !== 0 &&
304
+ (type.objectFlags & typescript_1.default.ObjectFlags.Reference) !== 0);
305
+ }
180
306
  /**
181
307
  * Checks if a node has a generic type like:
182
308
  *
@@ -192,18 +318,30 @@ function isGenericType(node, services) {
192
318
  const type = getTypeFromTreeNode(node, services);
193
319
  return type.isTypeParameter();
194
320
  }
321
+ /**
322
+ * Returns the TypeScript type resolved at `node`.
323
+ */
195
324
  function getTypeFromTreeNode(node, services) {
196
325
  const checker = services.program.getTypeChecker();
197
326
  return checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
198
327
  }
328
+ /**
329
+ * Returns the widened string representation of the type resolved at `node`.
330
+ */
199
331
  function getTypeAsString(node, services) {
200
332
  const { typeToString, getBaseTypeOfLiteralType } = services.program.getTypeChecker();
201
333
  return typeToString(getBaseTypeOfLiteralType(getTypeFromTreeNode(node, services)));
202
334
  }
335
+ /**
336
+ * Returns the symbol resolved at `node`, if any.
337
+ */
203
338
  function getSymbolAtLocation(node, services) {
204
339
  const checker = services.program.getTypeChecker();
205
340
  return checker.getSymbolAtLocation(services.esTreeNodeToTSNodeMap.get(node));
206
341
  }
342
+ /**
343
+ * Returns the resolved call signature for the call-like expression at `node`.
344
+ */
207
345
  function getSignatureFromCallee(node, services) {
208
346
  const checker = services.program.getTypeChecker();
209
347
  return checker.getResolvedSignature(services.esTreeNodeToTSNodeMap.get(node));
@@ -251,6 +389,14 @@ function isNumberArray(type, services) {
251
389
  function isBigIntArray(type, services) {
252
390
  return isArrayElementTypeMatching(type, services, isBigIntType);
253
391
  }
392
+ /**
393
+ * Test if the provided type is an array of booleans.
394
+ * @param type A TypeScript type.
395
+ * @param services The services used to get access to the TypeScript type checker
396
+ */
397
+ function isBooleanArray(type, services) {
398
+ return isArrayElementTypeMatching(type, services, isBooleanType);
399
+ }
254
400
  function isArrayElementTypeMatching(type, services, predicate) {
255
401
  const checker = services.program.getTypeChecker();
256
402
  if (!isArrayType(type, services)) {
@@ -284,18 +430,33 @@ function isTypeAlias(node, context) {
284
430
  function isBooleanLiteralType(type) {
285
431
  return type.flags === typescript_1.default.TypeFlags.BooleanLiteral;
286
432
  }
433
+ /**
434
+ * Returns true when `type` is the boolean literal `true`.
435
+ */
287
436
  function isBooleanTrueType(type) {
288
437
  return isBooleanLiteralType(type) && type.intrinsicName === 'true';
289
438
  }
439
+ /**
440
+ * Returns true when `type` is boolean-like.
441
+ */
290
442
  function isBooleanType({ flags }) {
291
- return flags & typescript_1.default.TypeFlags.BooleanLike;
443
+ return (flags & typescript_1.default.TypeFlags.BooleanLike) !== 0;
292
444
  }
445
+ /**
446
+ * Returns true when `type` is `null`, `undefined`, or a union containing either.
447
+ */
293
448
  function isNullOrUndefinedType({ flags }) {
294
449
  return flags & typescript_1.default.TypeFlags.Null || flags & typescript_1.default.TypeFlags.Undefined;
295
450
  }
451
+ /**
452
+ * Returns true when `type` is object-like.
453
+ */
296
454
  function isObjectType({ flags }) {
297
455
  return flags & typescript_1.default.TypeFlags.Object;
298
456
  }
457
+ /**
458
+ * Returns true when `node` exposes a callable member named `methodName`.
459
+ */
299
460
  function typeHasMethod(node, methodName, services) {
300
461
  const type = getTypeFromTreeNode(node, services);
301
462
  const property = type.getProperty(methodName);
@@ -3,15 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isImported = isImported;
7
6
  exports.isAssertion = isAssertion;
8
7
  exports.isTSAssertion = isTSAssertion;
9
8
  const module_js_1 = require("./module.js");
10
9
  const module_ts_js_1 = require("./module-ts.js");
11
10
  const typescript_1 = __importDefault(require("typescript"));
12
- function isImported(context) {
13
- return ((0, module_js_1.getRequireCalls)(context).some(r => r.arguments[0].type === 'Literal' && r.arguments[0].value === 'vitest') || (0, module_js_1.getImportDeclarations)(context).some(i => i.source.value === 'vitest'));
14
- }
15
11
  function isAssertion(context, node) {
16
12
  const fullyQualifiedName = extractFQNforCallExpression(context, node);
17
13
  return isFQNAssertion(fullyQualifiedName);