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,255 @@
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.moduleTypeCache = exports.dependenciesCache = void 0;
7
+ exports.getDependencies = getDependencies;
8
+ exports.getModuleType = getModuleType;
9
+ exports.setCurrentFileInlineDependencies = setCurrentFileInlineDependencies;
10
+ exports.withCurrentFileInlineDependencies = withCurrentFileInlineDependencies;
11
+ exports.getDependenciesSanitizePaths = getDependenciesSanitizePaths;
12
+ exports.getReactVersion = getReactVersion;
13
+ exports.parseReactVersion = parseReactVersion;
14
+ exports.getTypeScriptSignalsFromPackageJsonFiles = getTypeScriptSignalsFromPackageJsonFiles;
15
+ exports.getNodeVersionSignal = getNodeVersionSignal;
16
+ exports.getTypeScriptVersionSignal = getTypeScriptVersionSignal;
17
+ const cache_js_1 = require("../cache.js");
18
+ const node_fs_1 = __importDefault(require("node:fs"));
19
+ const posix_1 = require("node:path/posix");
20
+ const semver_1 = require("semver");
21
+ const files_js_1 = require("../files.js");
22
+ const closest_js_1 = require("./closest.js");
23
+ const all_in_parent_dirs_js_1 = require("./all-in-parent-dirs.js");
24
+ const types_js_1 = require("./resolvers/types.js");
25
+ const parsed_dependency_files_js_1 = require("./parsed-dependency-files.js");
26
+ const MODULE_TYPE_BY_EXTENSION = {
27
+ '.mjs': 'module',
28
+ '.mts': 'module',
29
+ '.cjs': 'commonjs',
30
+ '.cts': 'commonjs',
31
+ };
32
+ /**
33
+ * Cache for the available dependencies by dirname. Exported for tests
34
+ */
35
+ exports.dependenciesCache = new cache_js_1.ComputedCache((dir, topDir) => {
36
+ const closestDependencyManifestDir = (0, closest_js_1.getClosestDependencyManifestDir)(dir, topDir);
37
+ const result = new Map();
38
+ if (!closestDependencyManifestDir) {
39
+ return result;
40
+ }
41
+ for (const { dependencies } of (0, all_in_parent_dirs_js_1.getDependencyManifests)(closestDependencyManifestDir, topDir, node_fs_1.default)) {
42
+ for (const [name, version] of dependencies) {
43
+ if (!result.has(name)) {
44
+ result.set(name, version);
45
+ }
46
+ }
47
+ }
48
+ return result;
49
+ });
50
+ /**
51
+ * Cache for module type signal by dirname. Exported for tests.
52
+ */
53
+ exports.moduleTypeCache = new cache_js_1.ComputedCache((dir, topDir) => {
54
+ const closestDependencyManifestDirName = (0, closest_js_1.getClosestDependencyManifestDir)(dir, topDir);
55
+ if (!closestDependencyManifestDirName) {
56
+ return undefined;
57
+ }
58
+ const [firstManifest] = (0, all_in_parent_dirs_js_1.getDependencyManifests)(closestDependencyManifestDirName, topDir, node_fs_1.default);
59
+ return firstManifest?.moduleType;
60
+ });
61
+ /**
62
+ * Retrieve the dependencies of all the dependency manifest files available for the given file.
63
+ *
64
+ * @param dir dirname of the context.filename
65
+ * @param topDir working dir, will search up to that root
66
+ * @returns Map of dependency names to their version strings
67
+ */
68
+ function getDependencies(dir, topDir) {
69
+ const closestDependencyManifestDir = (0, closest_js_1.getClosestDependencyManifestDir)(dir, topDir);
70
+ if (closestDependencyManifestDir) {
71
+ return exports.dependenciesCache.get(closestDependencyManifestDir, topDir);
72
+ }
73
+ return new Map();
74
+ }
75
+ /**
76
+ * Retrieve the module type signal for a file.
77
+ *
78
+ * Extension-specific module kinds (.mjs/.mts and .cjs/.cts) are explicit and
79
+ * take precedence. Otherwise, package.json#type from the closest manifest only
80
+ * is used. If that closest manifest exists but omits "type", default to CommonJS.
81
+ */
82
+ function getModuleType(filePath, topDir) {
83
+ const extensionSignal = MODULE_TYPE_BY_EXTENSION[(0, posix_1.extname)(filePath).toLowerCase()];
84
+ if (extensionSignal) {
85
+ return extensionSignal;
86
+ }
87
+ return exports.moduleTypeCache.get((0, files_js_1.dirnamePath)(filePath), topDir);
88
+ }
89
+ /**
90
+ * Inline npm: imports parsed from the source file currently being linted (Deno-style).
91
+ * Set by the linter before each file is verified, cleared afterwards via clearFileCaches().
92
+ * Allows dependency-helper consumers (getReactVersion, getDependenciesSanitizePaths)
93
+ * to see the same dependency picture as rule-activation filtering.
94
+ */
95
+ let currentFileInlineDependencies = null;
96
+ function setCurrentFileInlineDependencies(deps) {
97
+ currentFileInlineDependencies = deps;
98
+ }
99
+ /**
100
+ * Merges inline npm: imports with manifest dependencies, giving precedence to inline imports.
101
+ */
102
+ function withCurrentFileInlineDependencies(manifest) {
103
+ if (!currentFileInlineDependencies || currentFileInlineDependencies.size === 0) {
104
+ return manifest;
105
+ }
106
+ const merged = new Map(manifest);
107
+ for (const [name, inlineVersion] of currentFileInlineDependencies) {
108
+ // Inline npm: imports are the version actually loaded at runtime for this file,
109
+ // so they take precedence over the project-wide manifest version.
110
+ if (merged.has(name)) {
111
+ const manifestVersion = merged.get(name);
112
+ if (manifestVersion !== inlineVersion) {
113
+ console.debug(`Dependency "${typeof name === 'string' ? name : name.pattern}" has a version conflict between the manifest ` +
114
+ `(${manifestVersion ?? '<unspecified>'}) and an inline npm: import ` +
115
+ `(${inlineVersion ?? '<unspecified>'}). Using the inline version.`);
116
+ }
117
+ }
118
+ merged.set(name, inlineVersion);
119
+ }
120
+ return merged;
121
+ }
122
+ function getDependenciesSanitizePaths(context) {
123
+ return withCurrentFileInlineDependencies(getDependencies((0, files_js_1.dirnamePath)((0, files_js_1.normalizeToAbsolutePath)(context.filename)), (0, files_js_1.normalizeToAbsolutePath)(context.cwd)));
124
+ }
125
+ /**
126
+ * Gets the React version from the closest package.json.
127
+ *
128
+ * @param context ESLint rule context
129
+ * @returns React version string (coerced from range) or null if not found
130
+ */
131
+ function getReactVersion(context) {
132
+ const dir = (0, files_js_1.dirnamePath)((0, files_js_1.normalizeToAbsolutePath)(context.filename));
133
+ const dependencies = withCurrentFileInlineDependencies(getDependencies(dir, (0, files_js_1.normalizeToAbsolutePath)(context.cwd)));
134
+ const reactVersion = dependencies.get('react');
135
+ // Deno npm: imports reflect the actual runtime version and are intentionally included here, unlike the TypeScript/Node.js version signals
136
+ if (!reactVersion) {
137
+ return null;
138
+ }
139
+ return parseReactVersion(reactVersion);
140
+ }
141
+ /**
142
+ * Parses a React version string and returns a valid semver version.
143
+ * Exported for testing purposes.
144
+ *
145
+ * @param reactVersion Version string from package.json (e.g., "^18.0.0", "19.0", "catalog:frontend")
146
+ * @returns Valid semver version string or null if parsing fails
147
+ */
148
+ function parseReactVersion(reactVersion) {
149
+ try {
150
+ // Coerce version ranges (e.g., "^18.0.0") to valid semver versions
151
+ return (0, semver_1.minVersion)(reactVersion)?.version ?? null;
152
+ }
153
+ catch {
154
+ // Handle non-semver strings like pnpm catalog references (e.g., "catalog:frontend")
155
+ return null;
156
+ }
157
+ }
158
+ function getAllDependencySignals(packageJson) {
159
+ return {
160
+ ...packageJson.dependencies,
161
+ ...packageJson.devDependencies,
162
+ ...packageJson.peerDependencies,
163
+ ...packageJson.optionalDependencies,
164
+ };
165
+ }
166
+ function getDependencyVersionSignal(packageJson, dependencyName) {
167
+ const dependencyVersion = getAllDependencySignals(packageJson)[dependencyName];
168
+ return typeof dependencyVersion === 'string' ? dependencyVersion : null;
169
+ }
170
+ function getVersionSignalFromManifests(dir, topDir, dependencyName, fallbackSignal) {
171
+ // Walk up nearest-first. At each node manifest, prefer the primary signal
172
+ // (e.g. @types/node — catalog/workspace-resolved by the npm resolver) over the
173
+ // fallback (engines.node, read from the same manifest's PackageJson). The
174
+ // first valid primary signal wins; otherwise the first valid fallback wins; if
175
+ // neither is valid, continue walking parents. This lets a parent package's
176
+ // engines.node be picked up when the nested package declares neither signal,
177
+ // or only unusable fallbacks like "*" / "latest".
178
+ // Deno manifests are skipped — @types/node and engines.node are npm concepts.
179
+ const lookupKey = dependencyName.startsWith(types_js_1.DEFINITELY_TYPED)
180
+ ? dependencyName.substring(types_js_1.DEFINITELY_TYPED.length)
181
+ : dependencyName;
182
+ for (const manifest of (0, all_in_parent_dirs_js_1.getDependencyManifests)((0, files_js_1.normalizeToAbsolutePath)(dir), (0, files_js_1.normalizeToAbsolutePath)(topDir), node_fs_1.default)) {
183
+ if (manifest.type !== 'package-json') {
184
+ continue;
185
+ }
186
+ const version = manifest.dependencies.get(lookupKey) ?? null;
187
+ if (isValidDependencySignal(version)) {
188
+ return version;
189
+ }
190
+ if (fallbackSignal) {
191
+ const fb = fallbackSignal(manifest.manifest);
192
+ if (isValidDependencySignal(fb)) {
193
+ return fb;
194
+ }
195
+ }
196
+ }
197
+ return null;
198
+ }
199
+ function isValidDependencySignal(versionSignal) {
200
+ return versionSignal !== null && versionSignal !== 'latest' && versionSignal !== '*';
201
+ }
202
+ function hasTypeScriptNativePreviewSignal(packageJson) {
203
+ return isValidDependencySignal(getDependencyVersionSignal(packageJson, '@typescript/native-preview'));
204
+ }
205
+ function getTypeScriptVersionSignalsFromPackageJson(packageJson) {
206
+ const result = [];
207
+ const nativePreviewVersion = getDependencyVersionSignal(packageJson, '@typescript/native-preview');
208
+ if (isValidDependencySignal(nativePreviewVersion)) {
209
+ result.push(nativePreviewVersion);
210
+ }
211
+ const typeScriptVersion = getDependencyVersionSignal(packageJson, 'typescript');
212
+ if (isValidDependencySignal(typeScriptVersion)) {
213
+ result.push(typeScriptVersion);
214
+ }
215
+ return result;
216
+ }
217
+ function getTypeScriptSignalsFromPackageJsonFiles(packageJsonFiles) {
218
+ const typeScriptVersionSignals = [];
219
+ let hasTypeScriptNativePreview = false;
220
+ for (const packageJsonFile of packageJsonFiles) {
221
+ const packageJson = (0, parsed_dependency_files_js_1.parsePackageJsonContent)(packageJsonFile.fileContent);
222
+ if (packageJson === undefined) {
223
+ continue;
224
+ }
225
+ typeScriptVersionSignals.push(...getTypeScriptVersionSignalsFromPackageJson(packageJson));
226
+ hasTypeScriptNativePreview =
227
+ hasTypeScriptNativePreview || hasTypeScriptNativePreviewSignal(packageJson);
228
+ }
229
+ return { typeScriptVersionSignals, hasTypeScriptNativePreview };
230
+ }
231
+ /**
232
+ * Gets a Node.js version signal by walking up from `dir` toward `topDir`,
233
+ * picking the closest package.json with @types/node (preferred) or engines.node.
234
+ *
235
+ * @param dir directory to start the upward search from (e.g. tsconfig dir, file dir)
236
+ * @param topDir analysis base directory; walk stops here. Defaults to `dir` to
237
+ * preserve the legacy "manifest at exactly this dir" semantics for callers
238
+ * that don't yet provide a separate analysis root.
239
+ * @returns raw version string from @types/node or engines.node, or null if not found
240
+ */
241
+ function getNodeVersionSignal(dir, topDir = dir) {
242
+ return getVersionSignalFromManifests(dir, topDir, '@types/node', packageJson => {
243
+ const enginesNode = packageJson.engines?.['node'];
244
+ return typeof enginesNode === 'string' ? enginesNode : null;
245
+ });
246
+ }
247
+ /**
248
+ * Gets a TypeScript version signal from the closest package.json walking up
249
+ * from `dir` to `topDir`. Defaults `topDir = dir` for backward compatibility.
250
+ *
251
+ * @returns raw version string from typescript dependency, or null if not found
252
+ */
253
+ function getTypeScriptVersionSignal(dir, topDir = dir) {
254
+ return getVersionSignalFromManifests(dir, topDir, 'typescript');
255
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRELOADABLE_DEPENDENCY_MANIFESTS = exports.DEPENDENCY_MANIFESTS = exports.PNPM_WORKSPACE_YAML = exports.DENO_JSONC = exports.DENO_JSON = exports.PACKAGE_JSON = void 0;
4
+ exports.isPreloadableDependencyManifestPath = isPreloadableDependencyManifestPath;
5
+ exports.fillManifestCaches = fillManifestCaches;
6
+ exports.clearDependenciesCache = clearDependenciesCache;
7
+ exports.getPreloadableDependencyManifestName = getPreloadableDependencyManifestName;
8
+ const find_minimatch_js_1 = require("../find-up/find-minimatch.js");
9
+ const dependencies_js_1 = require("./dependencies.js");
10
+ const closest_js_1 = require("../find-up/closest.js");
11
+ const all_in_parent_dirs_js_1 = require("../find-up/all-in-parent-dirs.js");
12
+ const posix_1 = require("node:path/posix");
13
+ const parsed_dependency_files_js_1 = require("./parsed-dependency-files.js");
14
+ exports.PACKAGE_JSON = 'package.json';
15
+ exports.DENO_JSON = 'deno.json';
16
+ exports.DENO_JSONC = 'deno.jsonc';
17
+ exports.PNPM_WORKSPACE_YAML = 'pnpm-workspace.yaml';
18
+ exports.DEPENDENCY_MANIFESTS = [exports.DENO_JSON, exports.DENO_JSONC, exports.PACKAGE_JSON];
19
+ exports.PRELOADABLE_DEPENDENCY_MANIFESTS = [
20
+ ...exports.DEPENDENCY_MANIFESTS,
21
+ exports.PNPM_WORKSPACE_YAML,
22
+ ];
23
+ function isPreloadableDependencyManifestName(fileName) {
24
+ return exports.PRELOADABLE_DEPENDENCY_MANIFESTS.includes(fileName);
25
+ }
26
+ function isPreloadableDependencyManifestPath(path) {
27
+ const normalizedBasename = (0, posix_1.basename)(path).toLowerCase();
28
+ return isPreloadableDependencyManifestName(normalizedBasename);
29
+ }
30
+ /**
31
+ * Preloads manifest lookup caches so later rules can resolve manifests
32
+ * without re-walking the file system.
33
+ */
34
+ function fillManifestCaches(manifestName, manifests, dirnameToParent, topDir) {
35
+ const closestCache = closest_js_1.closestPatternCache.get(manifestName).get(topDir);
36
+ const manifestsInParentsCache = manifestName === exports.PNPM_WORKSPACE_YAML
37
+ ? undefined
38
+ : all_in_parent_dirs_js_1.patternInParentsCache.get(manifestName).get(topDir);
39
+ const sortedDirs = Array.from(dirnameToParent.entries()).sort(([leftDir], [rightDir]) => leftDir.split('/').length - rightDir.split('/').length || leftDir.localeCompare(rightDir));
40
+ for (const [dir, parent] of sortedDirs) {
41
+ const currentManifest = manifests.get(dir);
42
+ const inheritedClosestManifest = parent ? closestCache.get(parent) : undefined;
43
+ closestCache.set(dir, currentManifest ?? inheritedClosestManifest);
44
+ if (!manifestsInParentsCache) {
45
+ continue;
46
+ }
47
+ const manifestsInParents = parent ? [...manifestsInParentsCache.get(parent)] : [];
48
+ if (currentManifest) {
49
+ manifestsInParents.unshift(currentManifest);
50
+ }
51
+ manifestsInParentsCache.set(dir, manifestsInParents);
52
+ }
53
+ }
54
+ /**
55
+ * In the case of SonarIDE, when a dependency manifest file changes, the cache can become obsolete.
56
+ */
57
+ function clearDependenciesCache() {
58
+ dependencies_js_1.dependenciesCache.clear();
59
+ dependencies_js_1.moduleTypeCache.clear();
60
+ (0, parsed_dependency_files_js_1.clearParsedDependencyFileCache)();
61
+ for (const manifestName of exports.PRELOADABLE_DEPENDENCY_MANIFESTS) {
62
+ closest_js_1.closestPatternCache.get(manifestName).clear();
63
+ if (manifestName !== exports.PNPM_WORKSPACE_YAML) {
64
+ all_in_parent_dirs_js_1.patternInParentsCache.get(manifestName).clear();
65
+ }
66
+ }
67
+ find_minimatch_js_1.MinimatchCache.clear();
68
+ }
69
+ /**
70
+ * Returns the preloadable dependency manifest filename if the path points to one.
71
+ */
72
+ function getPreloadableDependencyManifestName(path) {
73
+ const normalizedBasename = (0, posix_1.basename)(path).toLowerCase();
74
+ if (isPreloadableDependencyManifestName(normalizedBasename)) {
75
+ return normalizedBasename;
76
+ }
77
+ return undefined;
78
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDependencies = addDependencies;
4
+ exports.addDependenciesArray = addDependenciesArray;
5
+ exports.addDependency = addDependency;
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
+ const minimatch_1 = require("minimatch");
23
+ const types_js_1 = require("./resolvers/types.js");
24
+ function addDependencies(result, dependencies, isGlob = false) {
25
+ for (const name of Object.keys(dependencies).filter(name => {
26
+ // Add this filter, as the PackageJson.Dependency can be any arbitrary JSON contrary to the claimed Record<String, String> typing.
27
+ const value = dependencies[name];
28
+ return typeof value === 'string' || value === undefined;
29
+ })) {
30
+ addDependency(result, { dependency: name, isGlob, version: dependencies[name] });
31
+ }
32
+ }
33
+ function addDependenciesArray(result, dependencies, isGlob = true) {
34
+ for (const name of dependencies) {
35
+ addDependency(result, { dependency: name, isGlob });
36
+ }
37
+ }
38
+ function addDependency(result, { dependency, isGlob, version, alias }) {
39
+ if (isGlob) {
40
+ result.set(new minimatch_1.Minimatch(dependency, { nocase: true, matchBase: true }), version);
41
+ }
42
+ else {
43
+ result.set(dependency.startsWith(types_js_1.DEFINITELY_TYPED)
44
+ ? dependency.substring(types_js_1.DEFINITELY_TYPED.length)
45
+ : dependency, version);
46
+ }
47
+ if (alias) {
48
+ // Also add the alias as a dependency, so it can be resolved in rules, for instance S4328
49
+ result.set(alias, version);
50
+ }
51
+ }
@@ -0,0 +1,80 @@
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.clearParsedDependencyFileCache = clearParsedDependencyFileCache;
7
+ exports.parsePackageJson = parsePackageJson;
8
+ exports.parsePackageJsonContent = parsePackageJsonContent;
9
+ exports.parsePnpmWorkspace = parsePnpmWorkspace;
10
+ exports.parseDenoManifest = parseDenoManifest;
11
+ const typescript_1 = __importDefault(require("typescript"));
12
+ const yaml_1 = __importDefault(require("yaml"));
13
+ const files_js_1 = require("../files.js");
14
+ const parsedPackageJsonCache = new Map();
15
+ const parsedPnpmWorkspaceCache = new Map();
16
+ const parsedDenoManifestCache = new Map();
17
+ function clearParsedDependencyFileCache() {
18
+ parsedPackageJsonCache.clear();
19
+ parsedPnpmWorkspaceCache.clear();
20
+ parsedDenoManifestCache.clear();
21
+ }
22
+ function getOrSetParsedDependencyFile(cache, file, parse) {
23
+ const cacheKey = (0, files_js_1.normalizeToAbsolutePath)(file.filePath);
24
+ if (cache.has(cacheKey)) {
25
+ return cache.get(cacheKey);
26
+ }
27
+ const parsed = parse(file);
28
+ cache.set(cacheKey, parsed);
29
+ return parsed;
30
+ }
31
+ function parsePackageJson(file) {
32
+ return getOrSetParsedDependencyFile(parsedPackageJsonCache, file, file => parsePackageJsonContent(file.fileContent, file.filePath));
33
+ }
34
+ function parsePackageJsonContent(content, filePath) {
35
+ try {
36
+ return JSON.parse((0, files_js_1.stripBOM)(content));
37
+ }
38
+ catch (error) {
39
+ if (filePath) {
40
+ console.debug(`Error parsing package.json ${filePath}: ${error}`);
41
+ }
42
+ return undefined;
43
+ }
44
+ }
45
+ function parsePnpmWorkspace(file) {
46
+ return getOrSetParsedDependencyFile(parsedPnpmWorkspaceCache, file, parsePnpmWorkspaceContent);
47
+ }
48
+ function parsePnpmWorkspaceContent(file) {
49
+ try {
50
+ const parsedPnpm = yaml_1.default.parse(file.fileContent);
51
+ if (parsedPnpm &&
52
+ ('catalog' in parsedPnpm || 'catalogs' in parsedPnpm || 'packages' in parsedPnpm)) {
53
+ return parsedPnpm;
54
+ }
55
+ return undefined;
56
+ }
57
+ catch (error) {
58
+ console.debug(`Error parsing pnpm workspace ${file.filePath}: ${error}`);
59
+ return undefined;
60
+ }
61
+ }
62
+ function parseDenoManifest(file) {
63
+ return getOrSetParsedDependencyFile(parsedDenoManifestCache, file, parseDenoManifestContent);
64
+ }
65
+ function parseDenoManifestContent(file) {
66
+ try {
67
+ // ts.parseConfigFileTextToJson handles JSON with comments and trailing commas
68
+ const parsed = typescript_1.default.parseConfigFileTextToJson(file.filePath, (0, files_js_1.stripBOM)(file.fileContent));
69
+ if (parsed.error) {
70
+ const message = typescript_1.default.flattenDiagnosticMessageText(parsed.error.messageText, '\n');
71
+ console.debug(`Error parsing deno manifest ${file.filePath}: ${message}`);
72
+ return;
73
+ }
74
+ return parsed.config;
75
+ }
76
+ catch (error) {
77
+ console.debug(`Error parsing deno manifest ${file.filePath}: ${error}`);
78
+ return;
79
+ }
80
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.denoManifestResolver = void 0;
4
+ exports.parseInlineNPMImport = parseInlineNPMImport;
5
+ const index_js_1 = require("../index.js");
6
+ const helpers_js_1 = require("./helpers.js");
7
+ const parse_js_1 = require("../parse.js");
8
+ const parsed_dependency_files_js_1 = require("../parsed-dependency-files.js");
9
+ exports.denoManifestResolver = {
10
+ resolve(dir, topDir, fileSystem) {
11
+ // if both `deno.json` and `deno.jsonc` are present, prefer `deno.json` and ignore `deno.jsonc`
12
+ const denoJson = (0, helpers_js_1.getManifestFileInDir)(index_js_1.DENO_JSON, dir, topDir, fileSystem);
13
+ const denoJsonc = (0, helpers_js_1.getManifestFileInDir)(index_js_1.DENO_JSONC, dir, topDir, fileSystem);
14
+ const denoModuleType = 'module';
15
+ const effectiveDenoJson = denoJson ?? denoJsonc;
16
+ if (effectiveDenoJson) {
17
+ const manifest = (0, parsed_dependency_files_js_1.parseDenoManifest)(effectiveDenoJson) ?? {};
18
+ return [
19
+ {
20
+ type: 'deno',
21
+ manifest,
22
+ dependencies: buildDependencies(manifest),
23
+ moduleType: denoModuleType,
24
+ },
25
+ ];
26
+ }
27
+ return [];
28
+ },
29
+ };
30
+ function buildDependencies(manifest) {
31
+ const dependencies = new Map();
32
+ if (manifest.imports && typeof manifest.imports === 'object') {
33
+ for (const [alias, target] of Object.entries(manifest.imports)) {
34
+ if (typeof target !== 'string') {
35
+ continue;
36
+ }
37
+ const parsedSpecifier = parseInlineNPMImport(target);
38
+ if (parsedSpecifier) {
39
+ (0, parse_js_1.addDependency)(dependencies, {
40
+ dependency: parsedSpecifier.packageName,
41
+ isGlob: false,
42
+ version: parsedSpecifier.version,
43
+ alias,
44
+ });
45
+ }
46
+ }
47
+ }
48
+ if (Array.isArray(manifest.workspace)) {
49
+ (0, parse_js_1.addDependenciesArray)(dependencies, manifest.workspace);
50
+ }
51
+ else if (manifest.workspace?.members) {
52
+ (0, parse_js_1.addDependenciesArray)(dependencies, manifest.workspace.members);
53
+ }
54
+ return dependencies;
55
+ }
56
+ // Captures `npm:` payload as: package name (scoped or unscoped), optional version, optional ignored subpath.
57
+ // Examples:
58
+ // npm:cowsay@^1.6.0
59
+ // npm:@scopename/mypackage@~11.1.0
60
+ const DENO_NPM_IMPORT_PATTERN = /^(@[^/]*\/[^/@]*|[^/@]+)(?:@([^/]*))?(?:\/.*)?$/;
61
+ /**
62
+ * Parses an import map URL Specifier matching Deno npm format:
63
+ * npm:<package>[@<version>][/<path>]
64
+ */
65
+ function parseInlineNPMImport(value) {
66
+ // currently only handle npm: specifiers since rules are focused on NPM dependencies
67
+ if (!value.startsWith('npm:')) {
68
+ return undefined;
69
+ }
70
+ const match = DENO_NPM_IMPORT_PATTERN.exec(value.slice('npm:'.length));
71
+ if (!match) {
72
+ return undefined;
73
+ }
74
+ const [, packageName, version] = match;
75
+ return {
76
+ packageName,
77
+ version: version || undefined,
78
+ };
79
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getManifestFileInDir = getManifestFileInDir;
4
+ exports.getParentDirPath = getParentDirPath;
5
+ /*
6
+ * SonarQube JavaScript Plugin
7
+ * Copyright (C) SonarSource Sàrl
8
+ * mailto:info AT sonarsource DOT com
9
+ *
10
+ * You can redistribute and/or modify this program under the terms of
11
+ * the Sonar Source-Available License Version 1, as published by SonarSource Sàrl.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
+ * See the Sonar Source-Available License for more details.
17
+ *
18
+ * You should have received a copy of the Sonar Source-Available License
19
+ * along with this program; if not, see https://sonarsource.com/license/ssal/
20
+ */
21
+ const files_js_1 = require("../../files.js");
22
+ const closest_js_1 = require("../../find-up/closest.js");
23
+ /**
24
+ * Returns the manifest file at exactly `dir` (not a parent directory), or `undefined` if absent.
25
+ */
26
+ function getManifestFileInDir(manifestName, dir, topDir, fileSystem) {
27
+ const file = closest_js_1.closestPatternCache.get(manifestName, fileSystem).get(topDir).get(dir);
28
+ if (file && (0, files_js_1.dirnamePath)(file.filePath) === dir) {
29
+ return file;
30
+ }
31
+ return undefined;
32
+ }
33
+ /**
34
+ * Get the parent directory of the given path.
35
+ * @param path Path to get the parent directory of.
36
+ * @returns The parent directory or `null` if it is the root directory.
37
+ */
38
+ function getParentDirPath(path) {
39
+ const parentDir = (0, files_js_1.dirnamePath)(path);
40
+ return parentDir === path ? null : parentDir;
41
+ }