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,52 @@
1
+ "use strict";
2
+ /*
3
+ * SonarQube JavaScript Plugin
4
+ * Copyright (C) SonarSource Sàrl
5
+ * mailto:info AT sonarsource DOT com
6
+ *
7
+ * You can redistribute and/or modify this program under the terms of
8
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the Sonar Source-Available License for more details.
14
+ *
15
+ * You should have received a copy of the Sonar Source-Available License
16
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
17
+ */
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8781/javascript
19
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ var desc = Object.getOwnPropertyDescriptor(m, k);
22
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
23
+ desc = { enumerable: true, get: function() { return m[k]; } };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }) : (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ o[k2] = m[k];
29
+ }));
30
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
31
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.skipOnGeneratedSource = exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
35
+ __exportStar(require("./meta.js"), exports);
36
+ exports.meta = {
37
+ type: 'suggestion',
38
+ docs: {
39
+ description: 'Test and suite titles should not be empty or whitespace-only',
40
+ recommended: true,
41
+ url: 'https://sonarsource.github.io/rspec/#/rspec/S8781/javascript',
42
+ requiresTypeChecking: false,
43
+ },
44
+ fixable: undefined,
45
+ deprecated: false,
46
+ defaultOptions: [],
47
+ };
48
+ exports.sonarKey = 'S8781';
49
+ exports.scope = 'Tests';
50
+ exports.languages = ['js', 'ts'];
51
+ exports.requiredDependency = [];
52
+ exports.skipOnGeneratedSource = false;
@@ -18,4 +18,4 @@ exports.eslintId = exports.implementation = void 0;
18
18
  * along with this program; if not, see https://sonarsource.com/license/ssal/
19
19
  */
20
20
  exports.implementation = 'original';
21
- exports.eslintId = 'encryption';
21
+ exports.eslintId = 'no-empty-test-title';
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the Sonar Source-Available License
16
16
  * along with this program; if not, see https://sonarsource.com/license/ssal/
17
17
  */
18
- // https://sonarsource.github.io/rspec/#/rspec/S4784/javascript
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8781/javascript
19
19
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
20
  if (k2 === undefined) k2 = k;
21
21
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -52,69 +52,61 @@ var __importStar = (this && this.__importStar) || (function () {
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
54
  const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
- const ast_js_1 = require("../helpers/ast.js");
55
+ const module_js_1 = require("../helpers/module.js");
56
+ const mocha_style_test_frameworks_js_1 = require("../helpers/mocha-style-test-frameworks.js");
56
57
  const meta = __importStar(require("./generated-meta.js"));
57
- const stringMethods = ['match', 'search', 'split'];
58
- const minPatternLength = 3;
59
- const specialChars = new Set(['+', '*', '{']);
58
+ const MOCHA_TEST_AND_SUITE_NAMES = [...mocha_style_test_frameworks_js_1.TEST_FUNCTION_NAMES, ...mocha_style_test_frameworks_js_1.SUITE_FUNCTION_NAMES];
59
+ const MESSAGE = 'Replace this empty or whitespace-only title with a descriptive name.';
60
+ const MESSAGE_ID = 'emptyTitle';
60
61
  exports.rule = {
61
62
  meta: (0, generate_meta_js_1.generateMeta)(meta, {
62
63
  messages: {
63
- safeRegex: 'Make sure that using a regular expression is safe here.',
64
+ [MESSAGE_ID]: MESSAGE,
64
65
  },
65
66
  }),
66
67
  create(context) {
68
+ if (!(0, module_js_1.importsOrDependsOnModule)(context, mocha_style_test_frameworks_js_1.SUPPORTED_TEST_FRAMEWORKS, mocha_style_test_frameworks_js_1.SUPPORTED_TEST_FRAMEWORKS)) {
69
+ return {};
70
+ }
67
71
  return {
68
- Literal(node) {
69
- const { regex } = node;
70
- if (regex) {
71
- const { pattern } = regex;
72
- if (isUnsafeRegexLiteral(pattern)) {
73
- context.report({
74
- messageId: 'safeRegex',
75
- node,
76
- });
77
- }
78
- }
79
- },
80
72
  CallExpression(node) {
81
- const { callee, arguments: args } = node;
82
- if ((0, ast_js_1.isMemberWithProperty)(callee, ...stringMethods)) {
83
- checkFirstArgument(args, context);
84
- }
85
- },
86
- NewExpression(node) {
87
- const { callee, arguments: args } = node;
88
- if ((0, ast_js_1.isIdentifier)(callee, 'RegExp')) {
89
- checkFirstArgument(args, context);
73
+ if (isTestOrSuiteDeclaration(context, node)) {
74
+ checkTitle(context, node);
90
75
  }
91
76
  },
92
77
  };
93
78
  },
94
79
  };
95
- function checkFirstArgument(args, context) {
96
- const firstArg = args[0];
97
- if (firstArg?.type === 'Literal' &&
98
- typeof firstArg.value === 'string' &&
99
- isUnsafeRegexLiteral(firstArg.value)) {
80
+ function checkTitle(context, node) {
81
+ const titleNode = node.arguments[0];
82
+ const title = titleNode && (0, mocha_style_test_frameworks_js_1.getStaticTitle)(titleNode);
83
+ if (title?.trim() === '') {
100
84
  context.report({
101
- messageId: 'safeRegex',
102
- node: firstArg,
85
+ node: titleNode,
86
+ messageId: MESSAGE_ID,
103
87
  });
104
88
  }
105
89
  }
106
- function isUnsafeRegexLiteral(value) {
107
- return value.length >= minPatternLength && hasEnoughNumberOfSpecialChars(value);
90
+ function isTestOrSuiteDeclaration(context, node) {
91
+ if (!(0, mocha_style_test_frameworks_js_1.hasCallback)(node)) {
92
+ return false;
93
+ }
94
+ return ((0, mocha_style_test_frameworks_js_1.isMochaTestConstruct)(context, node, MOCHA_TEST_AND_SUITE_NAMES) ||
95
+ isPlaywrightTest(context, node) ||
96
+ isPlaywrightDescribe(context, node));
108
97
  }
109
- function hasEnoughNumberOfSpecialChars(value) {
110
- let numberOfSpecialChars = 0;
111
- for (const c of value) {
112
- if (specialChars.has(c)) {
113
- numberOfSpecialChars++;
114
- }
115
- if (numberOfSpecialChars === 2) {
116
- return true;
117
- }
98
+ function isPlaywrightTest(context, node) {
99
+ const qualifiers = (0, mocha_style_test_frameworks_js_1.getPlaywrightTestQualifiers)(context, node.callee);
100
+ return (qualifiers !== undefined &&
101
+ qualifiers.every(qualifier => mocha_style_test_frameworks_js_1.PLAYWRIGHT_TEST_MODIFIERS.has(qualifier)));
102
+ }
103
+ function isPlaywrightDescribe(context, node) {
104
+ const qualifiers = (0, mocha_style_test_frameworks_js_1.getPlaywrightTestQualifiers)(context, node.callee) ??
105
+ (0, mocha_style_test_frameworks_js_1.getPlaywrightDescribeQualifiers)(node.callee);
106
+ if (qualifiers?.[0] !== 'describe') {
107
+ return false;
118
108
  }
119
- return false;
109
+ const modifiers = qualifiers.slice(1);
110
+ const runnableModifiers = modifiers.at(-1) === mocha_style_test_frameworks_js_1.PLAYWRIGHT_DESCRIBE_FOCUS_MODIFIER ? modifiers.slice(0, -1) : modifiers;
111
+ return runnableModifiers.every(modifier => mocha_style_test_frameworks_js_1.PLAYWRIGHT_DESCRIBE_MODIFIERS.has(modifier));
120
112
  }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /*
3
+ * SonarQube JavaScript Plugin
4
+ * Copyright (C) SonarSource Sàrl
5
+ * mailto:info AT sonarsource DOT com
6
+ *
7
+ * You can redistribute and/or modify this program under the terms of
8
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the Sonar Source-Available License for more details.
14
+ *
15
+ * You should have received a copy of the Sonar Source-Available License
16
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
17
+ */
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8782/javascript
19
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ var desc = Object.getOwnPropertyDescriptor(m, k);
22
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
23
+ desc = { enumerable: true, get: function() { return m[k]; } };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }) : (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ o[k2] = m[k];
29
+ }));
30
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
31
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.skipOnGeneratedSource = exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
35
+ __exportStar(require("./meta.js"), exports);
36
+ exports.meta = {
37
+ type: 'suggestion',
38
+ docs: {
39
+ description: 'Lifecycle hooks should not be interleaved with test cases or nested suites',
40
+ recommended: true,
41
+ url: 'https://sonarsource.github.io/rspec/#/rspec/S8782/javascript',
42
+ requiresTypeChecking: false,
43
+ },
44
+ fixable: undefined,
45
+ deprecated: false,
46
+ defaultOptions: [],
47
+ };
48
+ exports.sonarKey = 'S8782';
49
+ exports.scope = 'Tests';
50
+ exports.languages = ['js', 'ts'];
51
+ exports.requiredDependency = [];
52
+ exports.skipOnGeneratedSource = false;
@@ -18,4 +18,4 @@ exports.eslintId = exports.implementation = void 0;
18
18
  * along with this program; if not, see https://sonarsource.com/license/ssal/
19
19
  */
20
20
  exports.implementation = 'original';
21
- exports.eslintId = 'regular-expr';
21
+ exports.eslintId = 'hooks-before-test-cases';
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /*
3
+ * SonarQube JavaScript Plugin
4
+ * Copyright (C) SonarSource Sàrl
5
+ * mailto:info AT sonarsource DOT com
6
+ *
7
+ * You can redistribute and/or modify this program under the terms of
8
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the Sonar Source-Available License for more details.
14
+ *
15
+ * You should have received a copy of the Sonar Source-Available License
16
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
17
+ */
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8782/javascript
19
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ var desc = Object.getOwnPropertyDescriptor(m, k);
22
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
23
+ desc = { enumerable: true, get: function() { return m[k]; } };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }) : (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ o[k2] = m[k];
29
+ }));
30
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
31
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
32
+ }) : function(o, v) {
33
+ o["default"] = v;
34
+ });
35
+ var __importStar = (this && this.__importStar) || (function () {
36
+ var ownKeys = function(o) {
37
+ ownKeys = Object.getOwnPropertyNames || function (o) {
38
+ var ar = [];
39
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
40
+ return ar;
41
+ };
42
+ return ownKeys(o);
43
+ };
44
+ return function (mod) {
45
+ if (mod && mod.__esModule) return mod;
46
+ var result = {};
47
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
48
+ __setModuleDefault(result, mod);
49
+ return result;
50
+ };
51
+ })();
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.rule = void 0;
54
+ const ast_js_1 = require("../helpers/ast.js");
55
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
56
+ const mocha_js_1 = require("../helpers/mocha.js");
57
+ const meta = __importStar(require("./generated-meta.js"));
58
+ const AFTER_HOOK_CONSTRUCTS = ['after', 'afterAll', 'afterEach'];
59
+ function getDescribeBody(node) {
60
+ const callback = node.arguments[1];
61
+ if (!callback || !ast_js_1.FUNCTION_NODES.includes(callback.type)) {
62
+ return null;
63
+ }
64
+ const body = callback.body;
65
+ return body.type === 'BlockStatement' ? body : null;
66
+ }
67
+ function findTestCaseRange(body) {
68
+ const isTestOrSuiteStatement = (statement) => statement.type === 'ExpressionStatement' &&
69
+ statement.expression.type === 'CallExpression' &&
70
+ ((0, mocha_js_1.isTestCase)(statement.expression) || (0, mocha_js_1.isDescribeCase)(statement.expression));
71
+ const first = body.body.findIndex(isTestOrSuiteStatement);
72
+ if (first === -1) {
73
+ return null;
74
+ }
75
+ let last = body.body.length - 1;
76
+ while (!isTestOrSuiteStatement(body.body[last])) {
77
+ last--;
78
+ }
79
+ return { first, last };
80
+ }
81
+ function extractLifecycleHookCall(statement) {
82
+ if (statement.type !== 'ExpressionStatement' ||
83
+ statement.expression.type !== 'CallExpression' ||
84
+ !(0, mocha_js_1.isLifecycleHook)(statement.expression)) {
85
+ return null;
86
+ }
87
+ return statement.expression;
88
+ }
89
+ function classifyHook(expr, index, range, afterHooksAtTop, afterHooksAtBottom, report) {
90
+ const isAfterHook = (0, mocha_js_1.isTestConstruct)(expr, AFTER_HOOK_CONSTRUCTS);
91
+ if (index < range.first) {
92
+ isAfterHook && afterHooksAtTop.push(expr);
93
+ return;
94
+ }
95
+ if (index > range.last) {
96
+ isAfterHook ? afterHooksAtBottom.push(expr) : report(expr, 'moveBeforeHook');
97
+ return;
98
+ }
99
+ report(expr, isAfterHook ? 'moveAfterHook' : 'moveBeforeHook');
100
+ }
101
+ exports.rule = {
102
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
103
+ messages: {
104
+ moveBeforeHook: 'Move this hook above the test cases in the same scope.',
105
+ moveAfterHook: 'Move this hook above or below the test cases in the same scope.',
106
+ groupAfterHook: 'Group this hook with the other after-hooks in the same scope.',
107
+ },
108
+ }),
109
+ create(context) {
110
+ const reportHook = (expr, messageId) => {
111
+ const callee = expr.callee;
112
+ context.report({
113
+ node: callee.type === 'MemberExpression' ? callee.object : callee,
114
+ messageId,
115
+ });
116
+ };
117
+ return {
118
+ CallExpression(node) {
119
+ if (!(0, mocha_js_1.isDescribeCase)(node)) {
120
+ return;
121
+ }
122
+ const body = getDescribeBody(node);
123
+ if (!body) {
124
+ return;
125
+ }
126
+ const range = findTestCaseRange(body);
127
+ if (!range) {
128
+ return;
129
+ }
130
+ const afterHooksAtTop = [];
131
+ const afterHooksAtBottom = [];
132
+ for (const [i, statement] of body.body.entries()) {
133
+ const expr = extractLifecycleHookCall(statement);
134
+ if (expr) {
135
+ classifyHook(expr, i, range, afterHooksAtTop, afterHooksAtBottom, reportHook);
136
+ }
137
+ }
138
+ if (afterHooksAtTop.length === 0 || afterHooksAtBottom.length === 0) {
139
+ return;
140
+ }
141
+ const minority = afterHooksAtTop.length < afterHooksAtBottom.length ? afterHooksAtTop : afterHooksAtBottom;
142
+ for (const expr of minority) {
143
+ reportHook(expr, 'groupAfterHook');
144
+ }
145
+ },
146
+ };
147
+ },
148
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /*
3
+ * SonarQube JavaScript Plugin
4
+ * Copyright (C) SonarSource Sàrl
5
+ * mailto:info AT sonarsource DOT com
6
+ *
7
+ * You can redistribute and/or modify this program under the terms of
8
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the Sonar Source-Available License for more details.
14
+ *
15
+ * You should have received a copy of the Sonar Source-Available License
16
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
17
+ */
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8783/javascript
19
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ var desc = Object.getOwnPropertyDescriptor(m, k);
22
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
23
+ desc = { enumerable: true, get: function() { return m[k]; } };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }) : (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ o[k2] = m[k];
29
+ }));
30
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
31
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.skipOnGeneratedSource = exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
35
+ __exportStar(require("./meta.js"), exports);
36
+ exports.meta = {
37
+ type: 'suggestion',
38
+ docs: {
39
+ description: 'Forced browser interactions should not bypass actionability checks',
40
+ recommended: true,
41
+ url: 'https://sonarsource.github.io/rspec/#/rspec/S8783/javascript',
42
+ requiresTypeChecking: false,
43
+ },
44
+ fixable: undefined,
45
+ deprecated: false,
46
+ defaultOptions: [],
47
+ };
48
+ exports.sonarKey = 'S8783';
49
+ exports.scope = 'Tests';
50
+ exports.languages = ['js', 'ts'];
51
+ exports.requiredDependency = [];
52
+ exports.skipOnGeneratedSource = false;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eslintId = exports.implementation = void 0;
4
+ /*
5
+ * SonarQube JavaScript Plugin
6
+ * Copyright (C) SonarSource Sàrl
7
+ * mailto:info AT sonarsource DOT com
8
+ *
9
+ * You can redistribute and/or modify this program under the terms of
10
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
+ * See the Sonar Source-Available License for more details.
16
+ *
17
+ * You should have received a copy of the Sonar Source-Available License
18
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
19
+ */
20
+ exports.implementation = 'original';
21
+ exports.eslintId = 'no-forced-browser-interaction';
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /*
3
+ * SonarQube JavaScript Plugin
4
+ * Copyright (C) SonarSource Sàrl
5
+ * mailto:info AT sonarsource DOT com
6
+ *
7
+ * You can redistribute and/or modify this program under the terms of
8
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the Sonar Source-Available License for more details.
14
+ *
15
+ * You should have received a copy of the Sonar Source-Available License
16
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
17
+ */
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8783/javascript
19
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ var desc = Object.getOwnPropertyDescriptor(m, k);
22
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
23
+ desc = { enumerable: true, get: function() { return m[k]; } };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }) : (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ o[k2] = m[k];
29
+ }));
30
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
31
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
32
+ }) : function(o, v) {
33
+ o["default"] = v;
34
+ });
35
+ var __importStar = (this && this.__importStar) || (function () {
36
+ var ownKeys = function(o) {
37
+ ownKeys = Object.getOwnPropertyNames || function (o) {
38
+ var ar = [];
39
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
40
+ return ar;
41
+ };
42
+ return ownKeys(o);
43
+ };
44
+ return function (mod) {
45
+ if (mod && mod.__esModule) return mod;
46
+ var result = {};
47
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
48
+ __setModuleDefault(result, mod);
49
+ return result;
50
+ };
51
+ })();
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.rule = void 0;
54
+ const ast_js_1 = require("../helpers/ast.js");
55
+ const cypress_js_1 = require("../helpers/cypress.js");
56
+ const dependencies_js_1 = require("../helpers/dependency-manifests/dependencies.js");
57
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
58
+ const module_js_1 = require("../helpers/module.js");
59
+ const assertion_utils_js_1 = require("../S5906/assertion-utils.js");
60
+ const meta = __importStar(require("./generated-meta.js"));
61
+ const messages = {
62
+ removeForce: 'Remove this forced interaction and wait for the element to be actionable instead.',
63
+ };
64
+ const PLAYWRIGHT_MODULES = ['@playwright/test'];
65
+ // The options object is always the trailing argument of these commands, but it can
66
+ // follow a variable number of positional arguments (e.g. Cypress `.click(options)`,
67
+ // `.click(position, options)`, `.click(x, y, options)`). The mapped value is the
68
+ // minimum index at which the options object may appear, guarding required positional
69
+ // arguments (e.g. the event name of Cypress `.trigger()` or the value of `.type()`).
70
+ const CYPRESS_MIN_OPTIONS_INDEX = new Map([
71
+ ['click', 0],
72
+ ['check', 0],
73
+ ['clear', 0],
74
+ ['dblclick', 0],
75
+ ['rightclick', 0],
76
+ ['select', 1],
77
+ ['trigger', 1],
78
+ ['type', 1],
79
+ ['uncheck', 0],
80
+ ]);
81
+ const PLAYWRIGHT_MIN_OPTIONS_INDEX = new Map([
82
+ ['check', 0],
83
+ ['clear', 0],
84
+ ['click', 0],
85
+ ['dblclick', 0],
86
+ ['dragTo', 1],
87
+ ['fill', 1],
88
+ ['hover', 0],
89
+ ['selectOption', 1],
90
+ ['selectText', 0],
91
+ ['setChecked', 1],
92
+ ['tap', 0],
93
+ ['uncheck', 0],
94
+ ]);
95
+ exports.rule = {
96
+ meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
97
+ create(context) {
98
+ const hasCypress = (0, dependencies_js_1.getDependenciesSanitizePaths)(context).has('cypress');
99
+ const hasPlaywright = (0, module_js_1.importsOrDependsOnModule)(context, PLAYWRIGHT_MODULES, PLAYWRIGHT_MODULES);
100
+ const playwrightLocators = new Set();
101
+ if (!hasCypress && !hasPlaywright) {
102
+ return {};
103
+ }
104
+ function reportIfForced(call, minOptionsIndex) {
105
+ if (call.arguments.length <= minOptionsIndex) {
106
+ return;
107
+ }
108
+ const optionsArgument = call.arguments.at(-1);
109
+ const forceProperty = findForceTrueProperty(context, optionsArgument);
110
+ if (!forceProperty) {
111
+ return;
112
+ }
113
+ context.report({
114
+ node: forceProperty,
115
+ messageId: 'removeForce',
116
+ });
117
+ }
118
+ return {
119
+ ...(hasPlaywright ? (0, assertion_utils_js_1.trackPlaywrightLocators)(context, playwrightLocators) : {}),
120
+ CallExpression(node) {
121
+ if (node.type !== 'CallExpression' || !(0, ast_js_1.isMethodCall)(node)) {
122
+ return;
123
+ }
124
+ if (hasCypress) {
125
+ checkCypressCall(node);
126
+ }
127
+ if (hasPlaywright) {
128
+ checkPlaywrightCall(node);
129
+ }
130
+ },
131
+ };
132
+ function checkCypressCall(call) {
133
+ if (!(0, ast_js_1.isMethodCall)(call) || !(0, cypress_js_1.chainStartsWithCy)(call.callee.object)) {
134
+ return;
135
+ }
136
+ const minOptionsIndex = CYPRESS_MIN_OPTIONS_INDEX.get(call.callee.property.name);
137
+ if (minOptionsIndex !== undefined) {
138
+ reportIfForced(call, minOptionsIndex);
139
+ }
140
+ }
141
+ function checkPlaywrightCall(call) {
142
+ if (!(0, ast_js_1.isMethodCall)(call)) {
143
+ return;
144
+ }
145
+ const minOptionsIndex = PLAYWRIGHT_MIN_OPTIONS_INDEX.get(call.callee.property.name);
146
+ if (minOptionsIndex === undefined) {
147
+ return;
148
+ }
149
+ if ((0, assertion_utils_js_1.isPlaywrightLocatorExpression)(context, call.callee.object, playwrightLocators)) {
150
+ reportIfForced(call, minOptionsIndex);
151
+ }
152
+ }
153
+ },
154
+ };
155
+ function findForceTrueProperty(context, candidate) {
156
+ if (!candidate || candidate.type === 'SpreadElement') {
157
+ return null;
158
+ }
159
+ const options = (0, ast_js_1.getValueOfExpression)(context, candidate, 'ObjectExpression', true);
160
+ const forceProperty = (0, ast_js_1.getProperty)(options, 'force', context);
161
+ if (!forceProperty) {
162
+ return null;
163
+ }
164
+ return forceProperty.value.type === 'Literal' && forceProperty.value.value === true
165
+ ? forceProperty
166
+ : null;
167
+ }
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the Sonar Source-Available License
16
16
  * along with this program; if not, see https://sonarsource.com/license/ssal/
17
17
  */
18
- // https://sonarsource.github.io/rspec/#/rspec/S4787/javascript
18
+ // https://sonarsource.github.io/rspec/#/rspec/S8786/javascript
19
19
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
20
20
  if (k2 === undefined) k2 = k;
21
21
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -31,21 +31,22 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
31
31
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
34
+ exports.skipOnGeneratedSource = exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
35
35
  __exportStar(require("./meta.js"), exports);
36
36
  exports.meta = {
37
- type: 'problem',
37
+ type: 'suggestion',
38
38
  docs: {
39
- description: 'Encrypting data is security-sensitive',
40
- recommended: false,
41
- url: 'https://sonarsource.github.io/rspec/#/rspec/S4787/javascript',
39
+ description: 'Regular expressions should not cause non-linear backtracking',
40
+ recommended: true,
41
+ url: 'https://sonarsource.github.io/rspec/#/rspec/S8786/javascript',
42
42
  requiresTypeChecking: false,
43
43
  },
44
44
  fixable: undefined,
45
- deprecated: true,
45
+ deprecated: false,
46
46
  defaultOptions: [],
47
47
  };
48
- exports.sonarKey = 'S4787';
48
+ exports.sonarKey = 'S8786';
49
49
  exports.scope = 'Main';
50
50
  exports.languages = ['js', 'ts'];
51
51
  exports.requiredDependency = [];
52
+ exports.skipOnGeneratedSource = false;