eslint-plugin-sonarjs 4.0.0 → 4.0.2

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 (413) hide show
  1. package/README.md +269 -268
  2. package/cjs/S100/rule.js +7 -5
  3. package/cjs/S101/rule.js +2 -2
  4. package/cjs/S104/rule.js +2 -2
  5. package/cjs/S105/rule.js +2 -2
  6. package/cjs/S1066/rule.js +5 -4
  7. package/cjs/S1067/rule.js +8 -6
  8. package/cjs/S1110/rule.js +7 -5
  9. package/cjs/S1119/rule.js +85 -7
  10. package/cjs/S1121/rule.js +4 -3
  11. package/cjs/S1125/rule.js +9 -8
  12. package/cjs/S1126/rule.js +2 -2
  13. package/cjs/S1128/rule.js +8 -5
  14. package/cjs/S1134/rule.js +2 -2
  15. package/cjs/S1135/rule.js +2 -2
  16. package/cjs/S1154/rule.js +6 -4
  17. package/cjs/S117/rule.js +6 -5
  18. package/cjs/S1172/rule.js +2 -2
  19. package/cjs/S1192/rule.js +5 -4
  20. package/cjs/S1219/rule.js +4 -3
  21. package/cjs/S1226/rule.js +6 -4
  22. package/cjs/S124/rule.js +2 -2
  23. package/cjs/S125/rule.js +9 -7
  24. package/cjs/S126/rule.js +2 -2
  25. package/cjs/S1264/rule.js +2 -2
  26. package/cjs/S128/rule.js +4 -3
  27. package/cjs/S1291/rule.js +2 -2
  28. package/cjs/S1301/rule.js +2 -2
  29. package/cjs/S1313/rule.js +2 -2
  30. package/cjs/S134/rule.js +7 -5
  31. package/cjs/S135/rule.js +5 -4
  32. package/cjs/S138/rule.js +9 -6
  33. package/cjs/S1439/rule.js +2 -2
  34. package/cjs/S1444/rule.js +2 -2
  35. package/cjs/S1451/rule.js +2 -2
  36. package/cjs/S1472/rule.js +2 -2
  37. package/cjs/S1479/rule.js +2 -2
  38. package/cjs/S1481/rule.js +2 -2
  39. package/cjs/S1488/generated-meta.js +1 -1
  40. package/cjs/S1488/rule.js +11 -7
  41. package/cjs/S1515/rule.js +10 -8
  42. package/cjs/{helpers/aws/index.js → S1523/generated-meta.js} +34 -18
  43. package/cjs/S1523/index.js +21 -0
  44. package/cjs/S1523/meta.js +21 -0
  45. package/cjs/S1523/rule.js +143 -0
  46. package/cjs/S1526/rule.js +5 -4
  47. package/cjs/S1527/rule.js +2 -2
  48. package/cjs/S1528/rule.js +2 -2
  49. package/cjs/S1529/generated-meta.js +1 -1
  50. package/cjs/S1529/rule.js +4 -3
  51. package/cjs/S1530/rule.js +5 -3
  52. package/cjs/S1533/rule.js +2 -2
  53. package/cjs/S1535/rule.js +2 -2
  54. package/cjs/S1541/rule.js +10 -7
  55. package/cjs/S1607/rule.js +22 -20
  56. package/cjs/S1764/rule.js +10 -7
  57. package/cjs/S1821/rule.js +2 -2
  58. package/cjs/S1848/rule.js +10 -7
  59. package/cjs/S1854/rule.js +18 -14
  60. package/cjs/S1862/rule.js +10 -8
  61. package/cjs/S1871/rule.js +21 -16
  62. package/cjs/S1874/rule.js +4 -3
  63. package/cjs/S1940/rule.js +2 -2
  64. package/cjs/S1994/rule.js +10 -7
  65. package/cjs/S2004/rule.js +9 -7
  66. package/cjs/S2068/rule.js +75 -12
  67. package/cjs/S2077/generated-meta.js +1 -1
  68. package/cjs/S2077/rule.js +10 -6
  69. package/cjs/S2092/rule.js +2 -2
  70. package/cjs/S2123/rule.js +2 -2
  71. package/cjs/S2137/rule.js +2 -2
  72. package/cjs/S2138/rule.js +4 -3
  73. package/cjs/S2187/rule.js +2 -2
  74. package/cjs/S2201/rule.js +47 -5
  75. package/cjs/S2208/rule.js +2 -2
  76. package/cjs/S2234/rule.js +58 -11
  77. package/cjs/S2245/rule.js +4 -3
  78. package/cjs/S2251/rule.js +5 -4
  79. package/cjs/S2255/rule.js +6 -5
  80. package/cjs/S2259/rule.js +14 -9
  81. package/cjs/S2301/rule.js +14 -9
  82. package/cjs/S2310/rule.js +80 -9
  83. package/cjs/S2392/rule.js +7 -5
  84. package/cjs/S2424/rule.js +2 -2
  85. package/cjs/S2428/rule.js +8 -6
  86. package/cjs/S2486/rule.js +4 -3
  87. package/cjs/S2589/rule.js +12 -10
  88. package/cjs/S2598/rule.js +17 -14
  89. package/cjs/S2612/generated-meta.js +1 -1
  90. package/cjs/S2612/rule.js +8 -6
  91. package/cjs/S2639/rule.js +2 -2
  92. package/cjs/S2681/rule.js +2 -2
  93. package/cjs/S2692/rule.js +6 -4
  94. package/cjs/S2699/generated-meta.js +1 -1
  95. package/cjs/S2699/rule.js +40 -31
  96. package/cjs/S2703/rule.js +2 -2
  97. package/cjs/S2737/rule.js +6 -4
  98. package/cjs/S2755/rule.js +9 -6
  99. package/cjs/S2757/rule.js +2 -2
  100. package/cjs/S2817/rule.js +10 -7
  101. package/cjs/S2819/rule.js +16 -12
  102. package/cjs/S2870/rule.js +8 -5
  103. package/cjs/S2871/rule.js +12 -9
  104. package/cjs/S2970/rule.js +9 -8
  105. package/cjs/S2990/rule.js +2 -2
  106. package/cjs/S2999/rule.js +10 -7
  107. package/cjs/S3001/rule.js +2 -2
  108. package/cjs/S3003/rule.js +10 -7
  109. package/cjs/S3317/rule.js +4 -3
  110. package/cjs/S3330/rule.js +2 -2
  111. package/cjs/S3358/rule.js +2 -2
  112. package/cjs/S3402/rule.js +14 -10
  113. package/cjs/S3403/rule.js +10 -7
  114. package/cjs/S3415/rule.js +16 -13
  115. package/cjs/S3499/rule.js +5 -4
  116. package/cjs/S3500/rule.js +5 -4
  117. package/cjs/S3513/rule.js +5 -4
  118. package/cjs/S3514/rule.js +10 -7
  119. package/cjs/S3516/rule.js +10 -7
  120. package/cjs/S3524/rule.js +2 -2
  121. package/cjs/S3525/rule.js +6 -4
  122. package/cjs/S3531/rule.js +5 -3
  123. package/cjs/S3533/rule.js +8 -7
  124. package/cjs/S3579/rule.js +6 -4
  125. package/cjs/S3616/rule.js +6 -4
  126. package/cjs/S3626/rule.js +4 -3
  127. package/cjs/S3686/rule.js +7 -5
  128. package/cjs/S3699/rule.js +4 -3
  129. package/cjs/S3735/rule.js +8 -5
  130. package/cjs/S3757/rule.js +8 -6
  131. package/cjs/S3758/rule.js +9 -7
  132. package/cjs/S3760/rule.js +24 -21
  133. package/cjs/S3776/rule.js +26 -22
  134. package/cjs/S3782/rule.js +6 -4
  135. package/cjs/S3785/rule.js +9 -6
  136. package/cjs/S3796/rule.js +12 -8
  137. package/cjs/S3798/rule.js +4 -3
  138. package/cjs/S3800/rule.js +22 -11
  139. package/cjs/S3801/generated-meta.js +1 -1
  140. package/cjs/S3801/rule.js +15 -11
  141. package/cjs/S3827/rule.js +9 -6
  142. package/cjs/S3923/rule.js +9 -6
  143. package/cjs/S3972/rule.js +5 -4
  144. package/cjs/S3973/rule.js +7 -5
  145. package/cjs/S3981/rule.js +4 -3
  146. package/cjs/S3984/rule.js +4 -3
  147. package/cjs/S4030/rule.js +10 -7
  148. package/cjs/S4036/rule.js +7 -5
  149. package/cjs/S4043/rule.js +12 -8
  150. package/cjs/S4139/rule.js +7 -5
  151. package/cjs/S4143/rule.js +12 -9
  152. package/cjs/S4144/rule.js +12 -9
  153. package/cjs/S4158/rule.js +11 -8
  154. package/cjs/S4165/rule.js +14 -12
  155. package/cjs/S4322/rule.js +8 -5
  156. package/cjs/S4323/rule.js +4 -3
  157. package/cjs/S4324/rule.js +7 -5
  158. package/cjs/S4328/rule.js +2 -2
  159. package/cjs/S4335/rule.js +6 -4
  160. package/cjs/S4423/rule.js +4 -3
  161. package/cjs/S4423/rule.lib.js +8 -7
  162. package/cjs/S4426/rule.js +11 -10
  163. package/cjs/S4502/rule.js +16 -13
  164. package/cjs/S4507/rule.js +8 -6
  165. package/cjs/S4524/rule.js +2 -2
  166. package/cjs/S4619/rule.js +6 -4
  167. package/cjs/S4621/rule.js +5 -4
  168. package/cjs/S4622/rule.js +5 -3
  169. package/cjs/S4623/rule.js +8 -5
  170. package/cjs/S4624/rule.js +6 -4
  171. package/cjs/S4634/rule.js +4 -3
  172. package/cjs/S4721/rule.js +7 -5
  173. package/cjs/S4782/rule.js +7 -5
  174. package/cjs/S4784/rule.js +5 -4
  175. package/cjs/S4787/rule.js +9 -7
  176. package/cjs/S4790/rule.js +7 -5
  177. package/cjs/S4798/rule.js +2 -2
  178. package/cjs/S4817/rule.js +10 -8
  179. package/cjs/S4818/rule.js +4 -3
  180. package/cjs/S4822/rule.js +13 -9
  181. package/cjs/S4823/rule.js +4 -3
  182. package/cjs/S4829/rule.js +4 -3
  183. package/cjs/S4830/rule.js +11 -8
  184. package/cjs/S5042/rule.js +9 -7
  185. package/cjs/S5122/rule.js +40 -36
  186. package/cjs/S5148/rule.js +9 -8
  187. package/cjs/S5247/rule.js +22 -18
  188. package/cjs/S5256/rule.js +5 -4
  189. package/cjs/S5257/rule.js +4 -3
  190. package/cjs/S5260/rule.js +4 -3
  191. package/cjs/S5264/rule.js +4 -3
  192. package/cjs/S5332/rule.js +4 -3
  193. package/cjs/S5332/rule.lib.js +19 -17
  194. package/cjs/S5443/rule.js +2 -2
  195. package/cjs/S5527/rule.js +18 -14
  196. package/cjs/S5542/rule.js +6 -4
  197. package/cjs/S5547/rule.js +6 -4
  198. package/cjs/S5604/rule.js +15 -14
  199. package/cjs/S5659/rule.js +15 -12
  200. package/cjs/S5689/rule.js +11 -8
  201. package/cjs/S5691/rule.js +7 -5
  202. package/cjs/S5693/rule.js +14 -12
  203. package/cjs/S5725/rule.js +9 -6
  204. package/cjs/S5728/rule.js +7 -4
  205. package/cjs/S5730/rule.js +9 -6
  206. package/cjs/S5732/rule.js +8 -5
  207. package/cjs/S5734/rule.js +7 -4
  208. package/cjs/S5736/rule.js +8 -5
  209. package/cjs/S5739/rule.js +11 -8
  210. package/cjs/S5742/rule.js +7 -4
  211. package/cjs/S5743/rule.js +8 -6
  212. package/cjs/S5757/rule.js +13 -10
  213. package/cjs/S5759/rule.js +10 -7
  214. package/cjs/S5842/rule.js +2 -2
  215. package/cjs/S5843/rule.js +22 -19
  216. package/cjs/S5850/rule.js +4 -3
  217. package/cjs/S5852/rule.js +2 -2
  218. package/cjs/S5856/rule.js +10 -7
  219. package/cjs/S5860/rule.js +30 -26
  220. package/cjs/S5863/rule.js +15 -11
  221. package/cjs/S5867/rule.js +8 -7
  222. package/cjs/S5868/rule.js +7 -5
  223. package/cjs/S5869/rule.js +6 -5
  224. package/cjs/S5876/rule.js +12 -8
  225. package/cjs/S5958/rule.js +12 -9
  226. package/cjs/S5973/rule.js +10 -7
  227. package/cjs/S6019/rule.js +4 -3
  228. package/cjs/S6035/rule.js +2 -2
  229. package/cjs/S6079/rule.js +9 -6
  230. package/cjs/S6080/rule.js +13 -10
  231. package/cjs/S6092/rule.js +9 -7
  232. package/cjs/S6245/rule.js +14 -9
  233. package/cjs/S6249/rule.js +7 -5
  234. package/cjs/S6252/rule.js +12 -8
  235. package/cjs/S6265/rule.js +27 -20
  236. package/cjs/S6268/rule.js +5 -4
  237. package/cjs/S6270/rule.js +12 -9
  238. package/cjs/S6275/rule.js +2 -2
  239. package/cjs/S6281/rule.js +22 -17
  240. package/cjs/S6299/rule.js +2 -2
  241. package/cjs/S6302/rule.js +6 -5
  242. package/cjs/S6303/rule.js +12 -10
  243. package/cjs/S6304/rule.js +6 -5
  244. package/cjs/S6308/rule.js +7 -5
  245. package/cjs/S6317/rule.js +5 -4
  246. package/cjs/S6319/rule.js +2 -2
  247. package/cjs/S6321/rule.js +25 -23
  248. package/cjs/S6323/rule.js +4 -3
  249. package/cjs/S6324/rule.js +2 -2
  250. package/cjs/S6326/rule.js +2 -2
  251. package/cjs/S6327/rule.js +2 -2
  252. package/cjs/S6328/rule.js +4 -3
  253. package/cjs/S6329/rule.js +7 -5
  254. package/cjs/S6330/rule.js +2 -2
  255. package/cjs/S6332/rule.js +2 -2
  256. package/cjs/S6333/rule.js +8 -6
  257. package/cjs/S6351/rule.js +22 -19
  258. package/cjs/S6353/rule.js +2 -2
  259. package/cjs/S6397/rule.js +2 -2
  260. package/cjs/S6418/config.js +1 -1
  261. package/cjs/S6418/rule.js +9 -24
  262. package/cjs/S6426/rule.js +5 -4
  263. package/cjs/S6437/rule.js +10 -7
  264. package/cjs/S6439/rule.js +9 -7
  265. package/cjs/S6442/rule.js +11 -8
  266. package/cjs/S6443/rule.js +9 -7
  267. package/cjs/S6486/rule.js +5 -4
  268. package/cjs/S6564/rule.js +4 -3
  269. package/cjs/S6594/rule.js +12 -8
  270. package/cjs/S6627/rule.js +6 -4
  271. package/cjs/S6759/rule.js +10 -6
  272. package/cjs/S6958/rule.js +2 -2
  273. package/cjs/S6959/rule.js +9 -6
  274. package/cjs/S7059/generated-meta.js +1 -1
  275. package/cjs/S7059/rule.js +8 -5
  276. package/cjs/S7639/generated-meta.js +1 -1
  277. package/cjs/S7639/rule.js +5 -4
  278. package/cjs/S7790/generated-meta.js +1 -1
  279. package/cjs/S7790/rule.js +7 -5
  280. package/cjs/S8441/generated-meta.js +1 -1
  281. package/cjs/S8441/rule.js +13 -9
  282. package/cjs/S881/rule.js +2 -2
  283. package/cjs/S888/rule.js +4 -3
  284. package/cjs/S930/rule.js +14 -12
  285. package/cjs/helpers/ast.js +11 -8
  286. package/cjs/helpers/aws/s3.js +9 -6
  287. package/cjs/helpers/chai.js +41 -43
  288. package/cjs/helpers/configs.js +92 -0
  289. package/cjs/helpers/cookie-flag-check.js +19 -17
  290. package/cjs/helpers/{decorators/index.js → entropy.js} +16 -17
  291. package/cjs/helpers/express.js +127 -128
  292. package/cjs/helpers/find-up/all-in-parent-dirs.js +0 -16
  293. package/cjs/helpers/mocha.js +50 -54
  294. package/cjs/helpers/regex/ast.js +7 -6
  295. package/cjs/helpers/regex/extract.js +11 -11
  296. package/cjs/helpers/regex/group.js +2 -2
  297. package/cjs/helpers/regex/location.js +2 -2
  298. package/cjs/helpers/regex/range.js +5 -4
  299. package/cjs/helpers/regex/rule-template.js +4 -3
  300. package/cjs/helpers/sinon.js +33 -36
  301. package/cjs/helpers/supertest.js +34 -37
  302. package/cjs/helpers/vitest.js +29 -32
  303. package/cjs/plugin-rules.js +452 -450
  304. package/docs/assertions-in-tests.md +2 -0
  305. package/docs/bitwise-operators.md +2 -0
  306. package/docs/code-eval.md +7 -0
  307. package/docs/file-permissions.md +1 -1
  308. package/docs/no-async-constructor.md +2 -0
  309. package/docs/no-inconsistent-returns.md +2 -0
  310. package/docs/prefer-immediate-return.md +2 -0
  311. package/docs/sql-queries.md +2 -0
  312. package/package.json +39 -1
  313. package/types/S1067/rule.d.ts +1 -1
  314. package/types/S1110/rule.d.ts +1 -1
  315. package/types/S1128/rule.d.ts +1 -1
  316. package/types/S1172/rule.d.ts +1 -1
  317. package/types/S1226/rule.d.ts +1 -1
  318. package/types/S134/rule.d.ts +1 -1
  319. package/types/S1472/rule.d.ts +1 -1
  320. package/types/S1481/rule.d.ts +1 -1
  321. package/types/S1488/generated-meta.d.ts +1 -1
  322. package/types/S1515/rule.d.ts +1 -1
  323. package/types/S1523/generated-meta.d.ts +17 -0
  324. package/types/S1523/index.d.ts +1 -0
  325. package/types/S1523/meta.d.ts +2 -0
  326. package/types/S1523/rule.d.ts +2 -0
  327. package/types/S1527/rule.d.ts +1 -1
  328. package/types/S1529/generated-meta.d.ts +1 -1
  329. package/types/S1541/rule.d.ts +1 -1
  330. package/types/S1862/rule.d.ts +1 -1
  331. package/types/S2077/generated-meta.d.ts +1 -1
  332. package/types/S2123/rule.d.ts +1 -1
  333. package/types/S2259/rule.d.ts +1 -1
  334. package/types/S2428/rule.d.ts +1 -1
  335. package/types/S2589/rule.d.ts +1 -1
  336. package/types/S2598/rule.d.ts +1 -1
  337. package/types/S2699/generated-meta.d.ts +1 -1
  338. package/types/S2699/rule.d.ts +1 -1
  339. package/types/S2737/rule.d.ts +1 -1
  340. package/types/S2757/rule.d.ts +1 -1
  341. package/types/S2819/rule.d.ts +1 -1
  342. package/types/S3001/rule.d.ts +1 -1
  343. package/types/S3317/rule.d.ts +1 -1
  344. package/types/S3500/rule.d.ts +1 -1
  345. package/types/S3513/rule.d.ts +1 -1
  346. package/types/S3686/rule.d.ts +1 -1
  347. package/types/S3801/generated-meta.d.ts +1 -1
  348. package/types/S3972/rule.d.ts +1 -1
  349. package/types/S3973/rule.d.ts +1 -1
  350. package/types/S4030/rule.d.ts +1 -1
  351. package/types/S4143/rule.d.ts +1 -1
  352. package/types/S4158/rule.d.ts +1 -1
  353. package/types/S4621/rule.d.ts +1 -1
  354. package/types/S4782/rule.d.ts +1 -1
  355. package/types/S5693/rule.d.ts +1 -1
  356. package/types/S5725/rule.d.ts +1 -1
  357. package/types/S5860/rule.d.ts +1 -1
  358. package/types/S5868/rule.d.ts +1 -1
  359. package/types/S5869/rule.d.ts +1 -1
  360. package/types/S6079/rule.d.ts +1 -1
  361. package/types/S6326/rule.d.ts +1 -1
  362. package/types/S6351/rule.d.ts +1 -1
  363. package/types/S6418/config.d.ts +1 -1
  364. package/types/S6443/rule.d.ts +1 -1
  365. package/types/S7059/generated-meta.d.ts +1 -1
  366. package/types/S7639/generated-meta.d.ts +1 -1
  367. package/types/S7790/generated-meta.d.ts +1 -1
  368. package/types/S8441/generated-meta.d.ts +1 -1
  369. package/types/S930/rule.d.ts +1 -1
  370. package/types/helpers/ancestor.d.ts +3 -3
  371. package/types/helpers/ast.d.ts +1 -1
  372. package/types/helpers/aws/iam.d.ts +2 -2
  373. package/types/helpers/aws/s3.d.ts +1 -1
  374. package/types/helpers/chai.d.ts +3 -5
  375. package/types/helpers/configs.d.ts +39 -1
  376. package/types/helpers/entropy.d.ts +1 -0
  377. package/types/helpers/equivalence.d.ts +1 -1
  378. package/types/helpers/express.d.ts +38 -43
  379. package/types/helpers/find-up/all-in-parent-dirs.d.ts +1 -1
  380. package/types/helpers/find-up/closest.d.ts +1 -1
  381. package/types/helpers/find-up/find-minimatch.d.ts +1 -1
  382. package/types/helpers/generate-meta.d.ts +1 -1
  383. package/types/helpers/mocha.d.ts +19 -21
  384. package/types/helpers/module.d.ts +1 -1
  385. package/types/helpers/package-jsons/all-in-parent-dirs.d.ts +1 -1
  386. package/types/helpers/package-jsons/dependencies.d.ts +1 -1
  387. package/types/helpers/recognizers/CodeRecognizer.d.ts +1 -1
  388. package/types/helpers/recognizers/JavaScriptFootPrint.d.ts +2 -2
  389. package/types/helpers/recognizers/LanguageFootprint.d.ts +1 -1
  390. package/types/helpers/regex/alternation.d.ts +1 -1
  391. package/types/helpers/regex/ast.d.ts +1 -1
  392. package/types/helpers/regex/location.d.ts +2 -2
  393. package/types/helpers/regex/range.d.ts +2 -2
  394. package/types/helpers/regex/rule-template.d.ts +1 -1
  395. package/types/helpers/result.d.ts +1 -1
  396. package/types/helpers/sinon.d.ts +4 -6
  397. package/types/helpers/sonar-runtime.d.ts +1 -1
  398. package/types/helpers/supertest.d.ts +4 -6
  399. package/types/helpers/type.d.ts +1 -1
  400. package/types/helpers/vitest.d.ts +4 -6
  401. package/types/plugin-rules.d.ts +1 -0
  402. package/cjs/helpers/decorators/interceptor.js +0 -88
  403. package/cjs/helpers/index.js +0 -60
  404. package/cjs/helpers/recognizers/index.js +0 -37
  405. package/cjs/helpers/rule-detect-react.js +0 -29
  406. package/cjs/helpers/validate-version.js +0 -94
  407. package/types/helpers/aws/index.d.ts +0 -3
  408. package/types/helpers/decorators/index.d.ts +0 -2
  409. package/types/helpers/decorators/interceptor.d.ts +0 -16
  410. package/types/helpers/index.d.ts +0 -28
  411. package/types/helpers/recognizers/index.d.ts +0 -2
  412. package/types/helpers/rule-detect-react.d.ts +0 -2
  413. package/types/helpers/validate-version.d.ts +0 -13
package/cjs/S1226/rule.js CHANGED
@@ -51,10 +51,12 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
+ const ancestor_js_1 = require("../helpers/ancestor.js");
56
+ const ast_js_1 = require("../helpers/ast.js");
55
57
  const meta = __importStar(require("./generated-meta.js"));
56
58
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
59
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
60
  messages: {
59
61
  noReassignment: 'Introduce a new variable or use its initial value before reassigning "{{reference}}".',
60
62
  },
@@ -141,7 +143,7 @@ exports.rule = {
141
143
  }
142
144
  },
143
145
  onCodePathSegmentLoop(_fromSegment, _toSegment, node) {
144
- const parent = (0, index_js_1.getParent)(context, node);
146
+ const parent = (0, ancestor_js_1.getParent)(context, node);
145
147
  if (!isForEachLoopStart(node, parent)) {
146
148
  return;
147
149
  }
@@ -153,7 +155,7 @@ exports.rule = {
153
155
  }
154
156
  }
155
157
  // In case of array or object pattern expression, the left hand side are not declared variables but simply identifiers
156
- for (const name of (0, index_js_1.resolveIdentifiers)(parent.left, true).map(identifier => identifier.name)) {
158
+ for (const name of (0, ast_js_1.resolveIdentifiers)(parent.left, true).map(identifier => identifier.name)) {
157
159
  variablesToCheck.add(name);
158
160
  variablesToCheckInCurrentScope.add(name);
159
161
  }
package/cjs/S124/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta),
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
58
58
  create(context) {
59
59
  const options = context.options[0] || {};
60
60
  const flags = options.flags || '';
package/cjs/S125/rule.js CHANGED
@@ -54,17 +54,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
54
54
  };
55
55
  Object.defineProperty(exports, "__esModule", { value: true });
56
56
  exports.rule = void 0;
57
- const index_js_1 = require("../helpers/index.js");
57
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
58
+ const collection_js_1 = require("../helpers/collection.js");
58
59
  const meta = __importStar(require("./generated-meta.js"));
59
- const index_js_2 = require("../helpers/recognizers/index.js");
60
+ const CodeRecognizer_js_1 = require("../helpers/recognizers/CodeRecognizer.js");
61
+ const JavaScriptFootPrint_js_1 = require("../helpers/recognizers/JavaScriptFootPrint.js");
60
62
  const node_path_1 = __importDefault(require("node:path"));
61
63
  const EXCLUDED_STATEMENTS = new Set(['BreakStatement', 'LabeledStatement', 'ContinueStatement']);
62
64
  // Cheap prefilter: any meaningful JS statement must contain at least one of these characters,
63
65
  // or be an import/export with a string literal (side-effect imports have no punctuation)
64
66
  const CODE_CHAR_PATTERN = /[;{}()=<>]|\bimport\s+['"]|\bexport\s/;
65
- const recognizer = new index_js_2.CodeRecognizer(0.9, new index_js_2.JavaScriptFootPrint());
67
+ const recognizer = new CodeRecognizer_js_1.CodeRecognizer(0.9, new JavaScriptFootPrint_js_1.JavaScriptFootPrint());
66
68
  exports.rule = {
67
- meta: (0, index_js_1.generateMeta)(meta, {
69
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
68
70
  messages: {
69
71
  commentedCode: 'Remove this commented out code.',
70
72
  commentedCodeFix: 'Remove this commented out code',
@@ -80,7 +82,7 @@ exports.rule = {
80
82
  groupedComments.push({ value: comment.value, nodes: [comment] });
81
83
  }
82
84
  else if (currentGroup.length === 0 ||
83
- areAdjacentLineComments((0, index_js_1.last)(currentGroup), comment)) {
85
+ areAdjacentLineComments((0, collection_js_1.last)(currentGroup), comment)) {
84
86
  currentGroup.push(comment);
85
87
  }
86
88
  else {
@@ -122,7 +124,7 @@ exports.rule = {
122
124
  messageId: 'commentedCodeFix',
123
125
  fix(fixer) {
124
126
  const start = groupComment.nodes[0].range[0];
125
- const end = (0, index_js_1.last)(groupComment.nodes).range[1];
127
+ const end = (0, collection_js_1.last)(groupComment.nodes).range[1];
126
128
  return fixer.removeRange([start, end]);
127
129
  },
128
130
  },
@@ -208,7 +210,7 @@ function injectMissingBraces(value) {
208
210
  function getCommentLocation(nodes) {
209
211
  return {
210
212
  start: nodes[0].loc.start,
211
- end: (0, index_js_1.last)(nodes).loc.end,
213
+ end: (0, collection_js_1.last)(nodes).loc.end,
212
214
  };
213
215
  }
214
216
  function isReturnThrowExclusion(statement) {
package/cjs/S126/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  addMissingElseClause: 'Add the missing "else" clause.',
60
60
  },
package/cjs/S1264/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  replaceForWithWhileLoop: 'Replace this "for" loop with a "while" loop.',
60
60
  },
package/cjs/S128/rule.js CHANGED
@@ -51,10 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
+ const ancestor_js_1 = require("../helpers/ancestor.js");
55
56
  const meta = __importStar(require("./generated-meta.js"));
56
57
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
58
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
59
  messages: {
59
60
  switchEnd: 'End this switch case with an unconditional break, continue, return or throw statement.',
60
61
  },
@@ -127,7 +128,7 @@ exports.rule = {
127
128
  const switchCase = node;
128
129
  const initialSegment = initialSegmentBySwitchCase.get(switchCase);
129
130
  const isReachable = Array.from(currentSegments).some(s => s.reachable && !isAfterProcessExitCall(s, initialSegment));
130
- const { cases } = (0, index_js_1.getParent)(context, node);
131
+ const { cases } = (0, ancestor_js_1.getParent)(context, node);
131
132
  if (isReachable &&
132
133
  switchCase.consequent.length > 0 &&
133
134
  cases.at(-1) !== node &&
package/cjs/S1291/rule.js CHANGED
@@ -51,11 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  const NOSONAR = 'NOSONAR';
57
57
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta, {
58
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
59
59
  messages: {
60
60
  noSonar: '"NOSONAR" comments should not be used.',
61
61
  },
package/cjs/S1301/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  replaceSwitch: 'Replace this "switch" statement by "if" statements to increase readability.',
60
60
  },
package/cjs/S1313/rule.js CHANGED
@@ -52,7 +52,7 @@ var __importStar = (this && this.__importStar) || (function () {
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
54
  const node_net_1 = require("node:net");
55
- const index_js_1 = require("../helpers/index.js");
55
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
56
56
  const meta = __importStar(require("./generated-meta.js"));
57
57
  const netMaskRegex = /(^[^/]+)\/\d{1,3}$/;
58
58
  const acceptedIpAddresses = new Set([
@@ -79,7 +79,7 @@ const acceptedIpV4Starts = [
79
79
  '203.0.113.',
80
80
  ];
81
81
  exports.rule = {
82
- meta: (0, index_js_1.generateMeta)(meta, {
82
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
83
83
  messages: {
84
84
  checkIP: 'Make sure using a hardcoded IP address {{ip}} is safe here.',
85
85
  },
package/cjs/S134/rule.js CHANGED
@@ -51,11 +51,13 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
+ const collection_js_1 = require("../helpers/collection.js");
56
+ const location_js_1 = require("../helpers/location.js");
55
57
  const meta = __importStar(require("./generated-meta.js"));
56
58
  const DEFAULT_MAXIMUM_NESTING_LEVEL = 3;
57
59
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta),
60
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
59
61
  create(context) {
60
62
  const sourceCode = context.sourceCode;
61
63
  const threshold = context.options[0]?.maximumNestingLevel ??
@@ -69,14 +71,14 @@ exports.rule = {
69
71
  }
70
72
  function check(node) {
71
73
  if (nodeStack.length === threshold) {
72
- (0, index_js_1.report)(context, {
74
+ (0, location_js_1.report)(context, {
73
75
  message: `Refactor this code to not nest more than ${threshold} if/for/while/switch/try statements.`,
74
76
  loc: sourceCode.getFirstToken(node).loc,
75
- }, nodeStack.map(n => (0, index_js_1.toSecondaryLocation)(n, '+1')));
77
+ }, nodeStack.map(n => (0, location_js_1.toSecondaryLocation)(n, '+1')));
76
78
  }
77
79
  }
78
80
  function isElseIf(node) {
79
- const parent = (0, index_js_1.last)(context.sourceCode.getAncestors(node));
81
+ const parent = (0, collection_js_1.last)(context.sourceCode.getAncestors(node));
80
82
  return (node.type === 'IfStatement' && parent.type === 'IfStatement' && node === parent.alternate);
81
83
  }
82
84
  const controlFlowNodes = [
package/cjs/S135/rule.js CHANGED
@@ -51,10 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
+ const location_js_1 = require("../helpers/location.js");
55
56
  const meta = __importStar(require("./generated-meta.js"));
56
57
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta),
58
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
58
59
  create(context) {
59
60
  let jumpTargets = [];
60
61
  function enterScope() {
@@ -76,10 +77,10 @@ exports.rule = {
76
77
  if (jumps && jumps.length > 1) {
77
78
  const sourceCode = context.sourceCode;
78
79
  const firstToken = sourceCode.getFirstToken(node);
79
- (0, index_js_1.report)(context, {
80
+ (0, location_js_1.report)(context, {
80
81
  loc: firstToken.loc,
81
82
  message: 'Reduce the total number of "break" and "continue" statements in this loop to use one at most.',
82
- }, jumps.map(jmp => (0, index_js_1.toSecondaryLocation)(jmp, jmp.type === 'BreakStatement' ? '"break" statement.' : '"continue" statement.')));
83
+ }, jumps.map(jmp => (0, location_js_1.toSecondaryLocation)(jmp, jmp.type === 'BreakStatement' ? '"break" statement.' : '"continue" statement.')));
83
84
  }
84
85
  }
85
86
  return {
package/cjs/S138/rule.js CHANGED
@@ -54,14 +54,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.rule = void 0;
55
55
  exports.getLocsNumber = getLocsNumber;
56
56
  exports.getCommentLineNumbers = getCommentLineNumbers;
57
- const index_js_1 = require("../helpers/index.js");
57
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
58
+ const location_js_1 = require("../helpers/location.js");
59
+ const ancestor_js_1 = require("../helpers/ancestor.js");
60
+ const collection_js_1 = require("../helpers/collection.js");
58
61
  const meta = __importStar(require("./generated-meta.js"));
59
62
  const DEFAULT = 200;
60
63
  const messages = {
61
64
  functionMaxLine: 'This function has {{lineCount}} lines, which is greater than the {{threshold}} lines authorized. Split it into smaller functions.',
62
65
  };
63
66
  exports.rule = {
64
- meta: (0, index_js_1.generateMeta)(meta, { messages }),
67
+ meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
65
68
  create(context) {
66
69
  const threshold = context.options[0]?.maximum ?? DEFAULT;
67
70
  const sourceCode = context.sourceCode;
@@ -72,7 +75,7 @@ exports.rule = {
72
75
  return {
73
76
  'FunctionDeclaration, FunctionExpression, ArrowFunctionExpression': (node) => {
74
77
  functionStack.push(node);
75
- const parent = (0, index_js_1.getParent)(context, node);
78
+ const parent = (0, ancestor_js_1.getParent)(context, node);
76
79
  if (!node.loc || isIIFE(node, parent)) {
77
80
  return;
78
81
  }
@@ -82,7 +85,7 @@ exports.rule = {
82
85
  },
83
86
  ReturnStatement: (node) => {
84
87
  const returnStatement = node;
85
- const knowledge = functionKnowledge.get((0, index_js_1.last)(functionStack));
88
+ const knowledge = functionKnowledge.get((0, collection_js_1.last)(functionStack));
86
89
  if (knowledge &&
87
90
  returnStatement.argument &&
88
91
  returnStatement.argument.type.startsWith('JSX')) {
@@ -109,7 +112,7 @@ exports.rule = {
109
112
  lineCount: lineCount.toString(),
110
113
  threshold: `${threshold}`,
111
114
  },
112
- loc: (0, index_js_1.getMainFunctionTokenLocation)(functionLike, functionLike.parent, context),
115
+ loc: (0, location_js_1.getMainFunctionTokenLocation)(functionLike, functionLike.parent, context),
113
116
  });
114
117
  }
115
118
  }
@@ -175,7 +178,7 @@ function nameStartsWithCapital(node) {
175
178
  if (node.type !== 'ArrowFunctionExpression') {
176
179
  return null;
177
180
  }
178
- const parent = (0, index_js_1.getNodeParent)(node);
181
+ const parent = (0, ancestor_js_1.getNodeParent)(node);
179
182
  if (!parent) {
180
183
  return null;
181
184
  }
package/cjs/S1439/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  removeLabel: 'Remove this "{{label}}" label.',
60
60
  },
package/cjs/S1444/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  hasSuggestions: true,
59
59
  messages: {
60
60
  message: `Make this public static property readonly.`,
package/cjs/S1451/rule.js CHANGED
@@ -51,7 +51,7 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  let cached;
57
57
  const DEFAULT_OPTIONS = {
@@ -62,7 +62,7 @@ const messages = {
62
62
  fixHeader: 'Add or update the header of this file.',
63
63
  };
64
64
  exports.rule = {
65
- meta: (0, index_js_1.generateMeta)(meta, { messages }),
65
+ meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
66
66
  create(context) {
67
67
  updateCache(context.options);
68
68
  if (cached.failedToCompile) {
package/cjs/S1472/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  moveArguments: 'Make those call arguments start on line {{line}}.',
60
60
  moveTemplateLiteral: 'Make this template literal start on line {{line}}.',
package/cjs/S1479/rule.js CHANGED
@@ -51,11 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  const DEFAULT_MAX_SWITCH_CASES = 30;
57
57
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta, {
58
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
59
59
  messages: {
60
60
  reduceNumberOfNonEmptySwitchCases: 'Reduce the number of non-empty switch cases from {{numSwitchCases}} to at most {{maxSwitchCases}}.',
61
61
  },
package/cjs/S1481/rule.js CHANGED
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
55
  const meta = __importStar(require("./generated-meta.js"));
56
56
  exports.rule = {
57
- meta: (0, index_js_1.generateMeta)(meta, {
57
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
58
58
  messages: {
59
59
  unusedFunction: `Remove unused function '{{symbol}}'.`,
60
60
  unusedVariable: `Remove the declaration of the unused '{{symbol}}' variable.`,
@@ -39,7 +39,7 @@ exports.meta = {
39
39
  description: 'Local variables should not be declared and then immediately returned or thrown',
40
40
  recommended: false,
41
41
  url: 'https://sonarsource.github.io/rspec/#/rspec/S1488/javascript',
42
- requiresTypeChecking: false,
42
+ requiresTypeChecking: true,
43
43
  },
44
44
  fixable: 'code',
45
45
  deprecated: false,
package/cjs/S1488/rule.js CHANGED
@@ -51,11 +51,15 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
55
+ const type_js_1 = require("../helpers/type.js");
56
+ const ast_js_1 = require("../helpers/ast.js");
57
+ const parser_services_js_1 = require("../helpers/parser-services.js");
58
+ const collection_js_1 = require("../helpers/collection.js");
55
59
  const meta = __importStar(require("./generated-meta.js"));
56
60
  const typescript_1 = require("typescript");
57
61
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta, {
62
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
59
63
  messages: {
60
64
  doImmediateAction: 'Immediately {{action}} this expression instead of assigning it to the temporary variable "{{variable}}".',
61
65
  },
@@ -72,7 +76,7 @@ exports.rule = {
72
76
  };
73
77
  function processStatements(node, statements) {
74
78
  if (statements.length > 1) {
75
- const lastStatement = (0, index_js_1.last)(statements);
79
+ const lastStatement = (0, collection_js_1.last)(statements);
76
80
  const returnedIdentifier = getOnlyReturnedVariable(lastStatement);
77
81
  const lastButOne = statements.at(-2);
78
82
  const declaredIdentifier = getOnlyDeclaredVariable(lastButOne);
@@ -116,24 +120,24 @@ exports.rule = {
116
120
  }
117
121
  function hasJSDoc(node) {
118
122
  const services = context.sourceCode.parserServices;
119
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
123
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
120
124
  return false;
121
125
  }
122
126
  return !!(0, typescript_1.getJSDocType)(services.esTreeNodeToTSNodeMap.get(node));
123
127
  }
124
128
  function isNamedFunctionExpression(node) {
125
129
  const services = context.sourceCode.parserServices;
126
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
130
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
127
131
  return false;
128
132
  }
129
- return (0, index_js_1.isFunction)(node, services);
133
+ return (0, type_js_1.isFunction)(node, services);
130
134
  }
131
135
  },
132
136
  };
133
137
  function getOnlyReturnedVariable(node) {
134
138
  return (node.type === 'ReturnStatement' || node.type === 'ThrowStatement') &&
135
139
  node.argument &&
136
- (0, index_js_1.isIdentifier)(node.argument)
140
+ (0, ast_js_1.isIdentifier)(node.argument)
137
141
  ? node.argument
138
142
  : undefined;
139
143
  }
package/cjs/S1515/rule.js CHANGED
@@ -51,7 +51,9 @@ var __importStar = (this && this.__importStar) || (function () {
51
51
  })();
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.rule = void 0;
54
- const index_js_1 = require("../helpers/index.js");
54
+ const ancestor_js_1 = require("../helpers/ancestor.js");
55
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
56
+ const location_js_1 = require("../helpers/location.js");
55
57
  const meta = __importStar(require("./generated-meta.js"));
56
58
  const message = 'Make sure this function is not called after the loop completes.';
57
59
  const loopLike = 'WhileStatement,DoWhileStatement,ForStatement,ForOfStatement,ForInStatement';
@@ -71,7 +73,7 @@ const allowedCallbacks = new Set([
71
73
  'each',
72
74
  ]);
73
75
  exports.rule = {
74
- meta: (0, index_js_1.generateMeta)(meta),
76
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
75
77
  create(context) {
76
78
  return {
77
79
  [functionLike]: (node) => {
@@ -80,26 +82,26 @@ exports.rule = {
80
82
  !isIIFE(node, context) &&
81
83
  !isAllowedCallbacks(context, node) &&
82
84
  context.sourceCode.getScope(node).through.some(ref => !isSafe(ref, loopNode))) {
83
- (0, index_js_1.report)(context, {
85
+ (0, location_js_1.report)(context, {
84
86
  message,
85
- loc: (0, index_js_1.getMainFunctionTokenLocation)(node, (0, index_js_1.getParent)(context, node), context),
86
- }, [(0, index_js_1.toSecondaryLocation)(getMainLoopToken(loopNode, context))]);
87
+ loc: (0, location_js_1.getMainFunctionTokenLocation)(node, (0, ancestor_js_1.getParent)(context, node), context),
88
+ }, [(0, location_js_1.toSecondaryLocation)(getMainLoopToken(loopNode, context))]);
87
89
  }
88
90
  },
89
91
  };
90
92
  },
91
93
  };
92
94
  function getLocalEnclosingLoop(node) {
93
- return (0, index_js_1.findFirstMatchingAncestor)(node, n => loopLike.includes(n.type));
95
+ return (0, ancestor_js_1.findFirstMatchingAncestor)(node, n => loopLike.includes(n.type));
94
96
  }
95
97
  function isIIFE(node, context) {
96
- const parent = (0, index_js_1.getParent)(context, node);
98
+ const parent = (0, ancestor_js_1.getParent)(context, node);
97
99
  return (parent &&
98
100
  ((parent.type === 'CallExpression' && parent.callee === node) ||
99
101
  (parent.type === 'MemberExpression' && parent.object === node)));
100
102
  }
101
103
  function isAllowedCallbacks(context, node) {
102
- const parent = (0, index_js_1.getParent)(context, node);
104
+ const parent = (0, ancestor_js_1.getParent)(context, node);
103
105
  if (parent?.type === 'CallExpression') {
104
106
  const callee = parent.callee;
105
107
  if (callee.type === 'MemberExpression') {
@@ -1,19 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
2
  /*
18
3
  * SonarQube JavaScript Plugin
19
4
  * Copyright (C) 2011-2025 SonarSource Sàrl
@@ -30,6 +15,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
30
15
  * You should have received a copy of the Sonar Source-Available License
31
16
  * along with this program; if not, see https://sonarsource.com/license/ssal/
32
17
  */
33
- __exportStar(require("./cdk.js"), exports);
34
- __exportStar(require("./iam.js"), exports);
35
- __exportStar(require("./s3.js"), exports);
18
+ // https://sonarsource.github.io/rspec/#/rspec/S1523/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.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
35
+ __exportStar(require("./meta.js"), exports);
36
+ exports.meta = {
37
+ type: 'problem',
38
+ docs: {
39
+ description: 'Dynamically executing code is security-sensitive',
40
+ recommended: true,
41
+ url: 'https://sonarsource.github.io/rspec/#/rspec/S1523/javascript',
42
+ requiresTypeChecking: false,
43
+ },
44
+ fixable: undefined,
45
+ deprecated: false,
46
+ defaultOptions: [],
47
+ };
48
+ exports.sonarKey = 'S1523';
49
+ exports.scope = 'Main';
50
+ exports.languages = ['js', 'ts'];
51
+ exports.requiredDependency = [];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rule = void 0;
4
+ /*
5
+ * SonarQube JavaScript Plugin
6
+ * Copyright (C) 2011-2025 SonarSource Sàrl
7
+ * mailto:info AT sonarsource DOT com
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
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
+ var rule_js_1 = require("./rule.js");
21
+ Object.defineProperty(exports, "rule", { enumerable: true, get: function () { return rule_js_1.rule; } });
@@ -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) 2011-2025 SonarSource Sàrl
7
+ * mailto:info AT sonarsource DOT com
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
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 = 'code-eval';