eslint-plugin-sonarjs 4.0.1 → 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 (314) hide show
  1. package/README.md +1 -1
  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 +2 -2
  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/rule.js +11 -7
  40. package/cjs/S1515/rule.js +10 -8
  41. package/cjs/S1523/rule.js +5 -5
  42. package/cjs/S1526/rule.js +5 -4
  43. package/cjs/S1527/rule.js +2 -2
  44. package/cjs/S1528/rule.js +2 -2
  45. package/cjs/S1529/rule.js +4 -3
  46. package/cjs/S1530/rule.js +5 -3
  47. package/cjs/S1533/rule.js +2 -2
  48. package/cjs/S1535/rule.js +2 -2
  49. package/cjs/S1541/rule.js +10 -7
  50. package/cjs/S1607/rule.js +22 -20
  51. package/cjs/S1764/rule.js +10 -7
  52. package/cjs/S1821/rule.js +2 -2
  53. package/cjs/S1848/rule.js +10 -7
  54. package/cjs/S1854/rule.js +18 -14
  55. package/cjs/S1862/rule.js +10 -8
  56. package/cjs/S1871/rule.js +21 -16
  57. package/cjs/S1874/rule.js +4 -3
  58. package/cjs/S1940/rule.js +2 -2
  59. package/cjs/S1994/rule.js +10 -7
  60. package/cjs/S2004/rule.js +9 -7
  61. package/cjs/S2068/rule.js +75 -12
  62. package/cjs/S2077/rule.js +10 -6
  63. package/cjs/S2092/rule.js +2 -2
  64. package/cjs/S2123/rule.js +2 -2
  65. package/cjs/S2137/rule.js +2 -2
  66. package/cjs/S2138/rule.js +4 -3
  67. package/cjs/S2187/rule.js +2 -2
  68. package/cjs/S2201/rule.js +8 -5
  69. package/cjs/S2208/rule.js +2 -2
  70. package/cjs/S2234/rule.js +15 -11
  71. package/cjs/S2245/rule.js +4 -3
  72. package/cjs/S2251/rule.js +5 -4
  73. package/cjs/S2255/rule.js +6 -5
  74. package/cjs/S2259/rule.js +14 -9
  75. package/cjs/S2301/rule.js +14 -9
  76. package/cjs/S2310/rule.js +14 -11
  77. package/cjs/S2392/rule.js +7 -5
  78. package/cjs/S2424/rule.js +2 -2
  79. package/cjs/S2428/rule.js +8 -6
  80. package/cjs/S2486/rule.js +4 -3
  81. package/cjs/S2589/rule.js +12 -10
  82. package/cjs/S2598/rule.js +17 -14
  83. package/cjs/S2612/generated-meta.js +1 -1
  84. package/cjs/S2612/rule.js +8 -6
  85. package/cjs/S2639/rule.js +2 -2
  86. package/cjs/S2681/rule.js +2 -2
  87. package/cjs/S2692/rule.js +6 -4
  88. package/cjs/S2699/rule.js +40 -31
  89. package/cjs/S2703/rule.js +2 -2
  90. package/cjs/S2737/rule.js +6 -4
  91. package/cjs/S2755/rule.js +9 -6
  92. package/cjs/S2757/rule.js +2 -2
  93. package/cjs/S2817/rule.js +10 -7
  94. package/cjs/S2819/rule.js +16 -12
  95. package/cjs/S2870/rule.js +8 -5
  96. package/cjs/S2871/rule.js +12 -9
  97. package/cjs/S2970/rule.js +9 -8
  98. package/cjs/S2990/rule.js +2 -2
  99. package/cjs/S2999/rule.js +10 -7
  100. package/cjs/S3001/rule.js +2 -2
  101. package/cjs/S3003/rule.js +10 -7
  102. package/cjs/S3317/rule.js +4 -3
  103. package/cjs/S3330/rule.js +2 -2
  104. package/cjs/S3358/rule.js +2 -2
  105. package/cjs/S3402/rule.js +14 -10
  106. package/cjs/S3403/rule.js +10 -7
  107. package/cjs/S3415/rule.js +16 -13
  108. package/cjs/S3499/rule.js +5 -4
  109. package/cjs/S3500/rule.js +5 -4
  110. package/cjs/S3513/rule.js +5 -4
  111. package/cjs/S3514/rule.js +10 -7
  112. package/cjs/S3516/rule.js +10 -7
  113. package/cjs/S3524/rule.js +2 -2
  114. package/cjs/S3525/rule.js +6 -4
  115. package/cjs/S3531/rule.js +5 -3
  116. package/cjs/S3533/rule.js +8 -7
  117. package/cjs/S3579/rule.js +6 -4
  118. package/cjs/S3616/rule.js +6 -4
  119. package/cjs/S3626/rule.js +4 -3
  120. package/cjs/S3686/rule.js +7 -5
  121. package/cjs/S3699/rule.js +4 -3
  122. package/cjs/S3735/rule.js +8 -5
  123. package/cjs/S3757/rule.js +8 -6
  124. package/cjs/S3758/rule.js +9 -7
  125. package/cjs/S3760/rule.js +24 -21
  126. package/cjs/S3776/rule.js +26 -22
  127. package/cjs/S3782/rule.js +6 -4
  128. package/cjs/S3785/rule.js +9 -6
  129. package/cjs/S3796/rule.js +12 -8
  130. package/cjs/S3798/rule.js +4 -3
  131. package/cjs/S3800/rule.js +16 -11
  132. package/cjs/S3801/rule.js +15 -11
  133. package/cjs/S3827/rule.js +9 -6
  134. package/cjs/S3923/rule.js +9 -6
  135. package/cjs/S3972/rule.js +5 -4
  136. package/cjs/S3973/rule.js +7 -5
  137. package/cjs/S3981/rule.js +4 -3
  138. package/cjs/S3984/rule.js +4 -3
  139. package/cjs/S4030/rule.js +10 -7
  140. package/cjs/S4036/rule.js +7 -5
  141. package/cjs/S4043/rule.js +12 -8
  142. package/cjs/S4139/rule.js +7 -5
  143. package/cjs/S4143/rule.js +12 -9
  144. package/cjs/S4144/rule.js +12 -9
  145. package/cjs/S4158/rule.js +11 -8
  146. package/cjs/S4165/rule.js +14 -12
  147. package/cjs/S4322/rule.js +8 -5
  148. package/cjs/S4323/rule.js +4 -3
  149. package/cjs/S4324/rule.js +7 -5
  150. package/cjs/S4328/rule.js +2 -2
  151. package/cjs/S4335/rule.js +6 -4
  152. package/cjs/S4423/rule.js +4 -3
  153. package/cjs/S4423/rule.lib.js +8 -7
  154. package/cjs/S4426/rule.js +11 -10
  155. package/cjs/S4502/rule.js +16 -13
  156. package/cjs/S4507/rule.js +8 -6
  157. package/cjs/S4524/rule.js +2 -2
  158. package/cjs/S4619/rule.js +6 -4
  159. package/cjs/S4621/rule.js +5 -4
  160. package/cjs/S4622/rule.js +5 -3
  161. package/cjs/S4623/rule.js +8 -5
  162. package/cjs/S4624/rule.js +6 -4
  163. package/cjs/S4634/rule.js +4 -3
  164. package/cjs/S4721/rule.js +7 -5
  165. package/cjs/S4782/rule.js +7 -5
  166. package/cjs/S4784/rule.js +5 -4
  167. package/cjs/S4787/rule.js +9 -7
  168. package/cjs/S4790/rule.js +7 -5
  169. package/cjs/S4798/rule.js +2 -2
  170. package/cjs/S4817/rule.js +10 -8
  171. package/cjs/S4818/rule.js +4 -3
  172. package/cjs/S4822/rule.js +13 -9
  173. package/cjs/S4823/rule.js +4 -3
  174. package/cjs/S4829/rule.js +4 -3
  175. package/cjs/S4830/rule.js +11 -8
  176. package/cjs/S5042/rule.js +9 -7
  177. package/cjs/S5122/rule.js +40 -36
  178. package/cjs/S5148/rule.js +9 -8
  179. package/cjs/S5247/rule.js +22 -18
  180. package/cjs/S5256/rule.js +5 -4
  181. package/cjs/S5257/rule.js +4 -3
  182. package/cjs/S5260/rule.js +4 -3
  183. package/cjs/S5264/rule.js +4 -3
  184. package/cjs/S5332/rule.js +4 -3
  185. package/cjs/S5332/rule.lib.js +19 -17
  186. package/cjs/S5443/rule.js +2 -2
  187. package/cjs/S5527/rule.js +18 -14
  188. package/cjs/S5542/rule.js +6 -4
  189. package/cjs/S5547/rule.js +6 -4
  190. package/cjs/S5604/rule.js +15 -14
  191. package/cjs/S5659/rule.js +15 -12
  192. package/cjs/S5689/rule.js +11 -8
  193. package/cjs/S5691/rule.js +7 -5
  194. package/cjs/S5693/rule.js +14 -12
  195. package/cjs/S5725/rule.js +9 -6
  196. package/cjs/S5728/rule.js +7 -4
  197. package/cjs/S5730/rule.js +9 -6
  198. package/cjs/S5732/rule.js +8 -5
  199. package/cjs/S5734/rule.js +7 -4
  200. package/cjs/S5736/rule.js +8 -5
  201. package/cjs/S5739/rule.js +11 -8
  202. package/cjs/S5742/rule.js +7 -4
  203. package/cjs/S5743/rule.js +8 -6
  204. package/cjs/S5757/rule.js +13 -10
  205. package/cjs/S5759/rule.js +10 -7
  206. package/cjs/S5842/rule.js +2 -2
  207. package/cjs/S5843/rule.js +22 -19
  208. package/cjs/S5850/rule.js +4 -3
  209. package/cjs/S5852/rule.js +2 -2
  210. package/cjs/S5856/rule.js +10 -7
  211. package/cjs/S5860/rule.js +30 -26
  212. package/cjs/S5863/rule.js +15 -11
  213. package/cjs/S5867/rule.js +8 -7
  214. package/cjs/S5868/rule.js +7 -5
  215. package/cjs/S5869/rule.js +6 -5
  216. package/cjs/S5876/rule.js +12 -8
  217. package/cjs/S5958/rule.js +12 -9
  218. package/cjs/S5973/rule.js +10 -7
  219. package/cjs/S6019/rule.js +4 -3
  220. package/cjs/S6035/rule.js +2 -2
  221. package/cjs/S6079/rule.js +9 -6
  222. package/cjs/S6080/rule.js +13 -10
  223. package/cjs/S6092/rule.js +9 -7
  224. package/cjs/S6245/rule.js +14 -9
  225. package/cjs/S6249/rule.js +7 -5
  226. package/cjs/S6252/rule.js +12 -8
  227. package/cjs/S6265/rule.js +27 -20
  228. package/cjs/S6268/rule.js +5 -4
  229. package/cjs/S6270/rule.js +12 -9
  230. package/cjs/S6275/rule.js +2 -2
  231. package/cjs/S6281/rule.js +22 -17
  232. package/cjs/S6299/rule.js +2 -2
  233. package/cjs/S6302/rule.js +6 -5
  234. package/cjs/S6303/rule.js +12 -10
  235. package/cjs/S6304/rule.js +6 -5
  236. package/cjs/S6308/rule.js +7 -5
  237. package/cjs/S6317/rule.js +5 -4
  238. package/cjs/S6319/rule.js +2 -2
  239. package/cjs/S6321/rule.js +25 -23
  240. package/cjs/S6323/rule.js +4 -3
  241. package/cjs/S6324/rule.js +2 -2
  242. package/cjs/S6326/rule.js +2 -2
  243. package/cjs/S6327/rule.js +2 -2
  244. package/cjs/S6328/rule.js +4 -3
  245. package/cjs/S6329/rule.js +7 -5
  246. package/cjs/S6330/rule.js +2 -2
  247. package/cjs/S6332/rule.js +2 -2
  248. package/cjs/S6333/rule.js +8 -6
  249. package/cjs/S6351/rule.js +22 -19
  250. package/cjs/S6353/rule.js +2 -2
  251. package/cjs/S6397/rule.js +2 -2
  252. package/cjs/S6418/rule.js +9 -24
  253. package/cjs/S6426/rule.js +5 -4
  254. package/cjs/S6437/rule.js +10 -7
  255. package/cjs/S6439/rule.js +9 -7
  256. package/cjs/S6442/rule.js +11 -8
  257. package/cjs/S6443/rule.js +9 -7
  258. package/cjs/S6486/rule.js +5 -4
  259. package/cjs/S6564/rule.js +4 -3
  260. package/cjs/S6594/rule.js +12 -8
  261. package/cjs/S6627/rule.js +6 -4
  262. package/cjs/S6759/rule.js +10 -6
  263. package/cjs/S6958/rule.js +2 -2
  264. package/cjs/S6959/rule.js +9 -6
  265. package/cjs/S7059/rule.js +8 -5
  266. package/cjs/S7639/rule.js +5 -4
  267. package/cjs/S7790/rule.js +7 -5
  268. package/cjs/S8441/rule.js +13 -9
  269. package/cjs/S881/rule.js +2 -2
  270. package/cjs/S888/rule.js +4 -3
  271. package/cjs/S930/rule.js +14 -12
  272. package/cjs/helpers/ast.js +11 -8
  273. package/cjs/helpers/aws/s3.js +9 -6
  274. package/cjs/helpers/chai.js +41 -43
  275. package/cjs/helpers/cookie-flag-check.js +19 -17
  276. package/cjs/helpers/{decorators/index.js → entropy.js} +16 -17
  277. package/cjs/helpers/express.js +127 -128
  278. package/cjs/helpers/mocha.js +50 -54
  279. package/cjs/helpers/regex/ast.js +7 -6
  280. package/cjs/helpers/regex/extract.js +11 -11
  281. package/cjs/helpers/regex/group.js +2 -2
  282. package/cjs/helpers/regex/location.js +2 -2
  283. package/cjs/helpers/regex/range.js +5 -4
  284. package/cjs/helpers/regex/rule-template.js +4 -3
  285. package/cjs/helpers/sinon.js +33 -36
  286. package/cjs/helpers/supertest.js +34 -37
  287. package/cjs/helpers/vitest.js +29 -32
  288. package/docs/file-permissions.md +1 -1
  289. package/package.json +39 -1
  290. package/types/helpers/ancestor.d.ts +1 -1
  291. package/types/helpers/aws/s3.d.ts +1 -1
  292. package/types/helpers/chai.d.ts +3 -5
  293. package/types/helpers/entropy.d.ts +1 -0
  294. package/types/helpers/express.d.ts +38 -43
  295. package/types/helpers/mocha.d.ts +19 -21
  296. package/types/helpers/regex/ast.d.ts +1 -1
  297. package/types/helpers/regex/rule-template.d.ts +1 -1
  298. package/types/helpers/sinon.d.ts +3 -5
  299. package/types/helpers/supertest.d.ts +3 -5
  300. package/types/helpers/type.d.ts +1 -1
  301. package/types/helpers/vitest.d.ts +3 -5
  302. package/cjs/helpers/aws/index.js +0 -35
  303. package/cjs/helpers/decorators/interceptor.js +0 -88
  304. package/cjs/helpers/index.js +0 -60
  305. package/cjs/helpers/recognizers/index.js +0 -37
  306. package/cjs/helpers/rule-detect-react.js +0 -29
  307. package/cjs/helpers/validate-version.js +0 -94
  308. package/types/helpers/aws/index.d.ts +0 -3
  309. package/types/helpers/decorators/index.d.ts +0 -2
  310. package/types/helpers/decorators/interceptor.d.ts +0 -16
  311. package/types/helpers/index.d.ts +0 -28
  312. package/types/helpers/recognizers/index.d.ts +0 -2
  313. package/types/helpers/rule-detect-react.d.ts +0 -2
  314. package/types/helpers/validate-version.d.ts +0 -13
package/cjs/S2699/rule.js CHANGED
@@ -37,8 +37,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.rule = void 0;
40
- const index_js_1 = require("../helpers/index.js");
41
- const supertest_js_1 = require("../helpers/supertest.js");
40
+ const Chai = __importStar(require("../helpers/chai.js"));
41
+ const ancestor_js_1 = require("../helpers/ancestor.js");
42
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
43
+ const module_js_1 = require("../helpers/module.js");
44
+ const module_ts_js_1 = require("../helpers/module-ts.js");
45
+ const ast_js_1 = require("../helpers/ast.js");
46
+ const parser_services_js_1 = require("../helpers/parser-services.js");
47
+ const Mocha = __importStar(require("../helpers/mocha.js"));
48
+ const Sinon = __importStar(require("../helpers/sinon.js"));
49
+ const Vitest = __importStar(require("../helpers/vitest.js"));
50
+ const Supertest = __importStar(require("../helpers/supertest.js"));
42
51
  const meta = __importStar(require("./generated-meta.js"));
43
52
  const typescript_1 = __importDefault(require("typescript"));
44
53
  /**
@@ -47,19 +56,19 @@ const typescript_1 = __importDefault(require("typescript"));
47
56
  * libX and the imported library was libY.
48
57
  */
49
58
  exports.rule = {
50
- meta: (0, index_js_1.generateMeta)(meta),
59
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
51
60
  create(context) {
52
- if (!(index_js_1.Chai.isImported(context) ||
53
- index_js_1.Sinon.isImported(context) ||
54
- index_js_1.Vitest.isImported(context) ||
55
- supertest_js_1.Supertest.isImported(context))) {
61
+ if (!(Chai.isImported(context) ||
62
+ Sinon.isImported(context) ||
63
+ Vitest.isImported(context) ||
64
+ Supertest.isImported(context))) {
56
65
  return {};
57
66
  }
58
67
  const visitedNodes = new Map();
59
68
  const visitedTSNodes = new Map();
60
69
  return {
61
70
  'CallExpression:exit': (node) => {
62
- const testCase = index_js_1.Mocha.extractTestCase(node);
71
+ const testCase = Mocha.extractTestCase(node);
63
72
  if (testCase !== null) {
64
73
  checkAssertions(testCase, context, visitedNodes, visitedTSNodes);
65
74
  }
@@ -90,7 +99,7 @@ function hasDoneCallbackAssertion(callback, context) {
90
99
  return false;
91
100
  }
92
101
  const firstParam = callback.params[0];
93
- if (!(0, index_js_1.isIdentifier)(firstParam)) {
102
+ if (!(0, ast_js_1.isIdentifier)(firstParam)) {
94
103
  return false;
95
104
  }
96
105
  const doneParamName = firstParam.name;
@@ -106,27 +115,27 @@ function isValidDoneMethodCallPattern(node, doneParamName, context) {
106
115
  // Pattern 2: .catch(done) - done receives rejection error
107
116
  if (methodName === 'catch' &&
108
117
  node.arguments.length === 1 &&
109
- (0, index_js_1.isIdentifier)(node.arguments[0], doneParamName)) {
118
+ (0, ast_js_1.isIdentifier)(node.arguments[0], doneParamName)) {
110
119
  return true;
111
120
  }
112
121
  // Pattern 3: .then(_, done) - done as second argument
113
122
  if (methodName === 'then' &&
114
123
  node.arguments.length >= 2 &&
115
- (0, index_js_1.isIdentifier)(node.arguments[1], doneParamName)) {
124
+ (0, ast_js_1.isIdentifier)(node.arguments[1], doneParamName)) {
116
125
  return true;
117
126
  }
118
127
  // Pattern 4: .subscribe(_, done) - done as second argument (error position)
119
128
  if (methodName === 'subscribe' &&
120
129
  node.arguments.length >= 2 &&
121
- (0, index_js_1.isIdentifier)(node.arguments[1], doneParamName)) {
130
+ (0, ast_js_1.isIdentifier)(node.arguments[1], doneParamName)) {
122
131
  return true;
123
132
  }
124
133
  // Pattern 5: .subscribe({ error: done }) - done in error property
125
134
  if (methodName === 'subscribe' &&
126
135
  node.arguments.length === 1 &&
127
136
  node.arguments[0].type === 'ObjectExpression') {
128
- const errorProp = (0, index_js_1.getProperty)(node.arguments[0], 'error', context);
129
- return errorProp != null && (0, index_js_1.isIdentifier)(errorProp.value, doneParamName);
137
+ const errorProp = (0, ast_js_1.getProperty)(node.arguments[0], 'error', context);
138
+ return errorProp != null && (0, ast_js_1.isIdentifier)(errorProp.value, doneParamName);
130
139
  }
131
140
  return false;
132
141
  }
@@ -136,16 +145,16 @@ function isValidDoneMethodCallPattern(node, doneParamName, context) {
136
145
  function containsValidDoneAssertion(node, doneParamName, visitorKeys, context) {
137
146
  if (node.type === 'CallExpression') {
138
147
  // Pattern 1: done(arg) - direct call with at least one argument
139
- if ((0, index_js_1.isIdentifier)(node.callee, doneParamName) && node.arguments.length > 0) {
148
+ if ((0, ast_js_1.isIdentifier)(node.callee, doneParamName) && node.arguments.length > 0) {
140
149
  return true;
141
150
  }
142
151
  // Check method call patterns
143
- if ((0, index_js_1.isMethodCall)(node) && isValidDoneMethodCallPattern(node, doneParamName, context)) {
152
+ if ((0, ast_js_1.isMethodCall)(node) && isValidDoneMethodCallPattern(node, doneParamName, context)) {
144
153
  return true;
145
154
  }
146
155
  }
147
156
  // Recurse through children
148
- for (const child of (0, index_js_1.childrenOf)(node, visitorKeys)) {
157
+ for (const child of (0, ancestor_js_1.childrenOf)(node, visitorKeys)) {
149
158
  if (containsValidDoneAssertion(child, doneParamName, visitorKeys, context)) {
150
159
  return true;
151
160
  }
@@ -161,7 +170,7 @@ function checkAssertions(testCase, context, visitedNodes, visitedTSNodes) {
161
170
  const visitor = new TestCaseAssertionVisitor(context);
162
171
  const parserServices = context.sourceCode.parserServices;
163
172
  let hasAssertions = false;
164
- if ((0, index_js_1.isRequiredParserServices)(parserServices)) {
173
+ if ((0, parser_services_js_1.isRequiredParserServices)(parserServices)) {
165
174
  const tsNode = parserServices.esTreeNodeToTSNodeMap.get(callback);
166
175
  hasAssertions = visitor.visitTSNode(parserServices, tsNode, visitedTSNodes);
167
176
  }
@@ -183,10 +192,10 @@ class TestCaseAssertionVisitor {
183
192
  }
184
193
  visitedTSNodes.set(node, false);
185
194
  if (isGlobalTSAssertion(services, node) ||
186
- index_js_1.Chai.isTSAssertion(services, node) ||
187
- index_js_1.Sinon.isTSAssertion(services, node) ||
188
- supertest_js_1.Supertest.isTSAssertion(services, node) ||
189
- index_js_1.Vitest.isTSAssertion(services, node)) {
195
+ Chai.isTSAssertion(services, node) ||
196
+ Sinon.isTSAssertion(services, node) ||
197
+ Supertest.isTSAssertion(services, node) ||
198
+ Vitest.isTSAssertion(services, node)) {
190
199
  visitedTSNodes.set(node, true);
191
200
  return true;
192
201
  }
@@ -210,23 +219,23 @@ class TestCaseAssertionVisitor {
210
219
  return visitedNodes.get(node);
211
220
  }
212
221
  visitedNodes.set(node, false);
213
- if (index_js_1.Chai.isAssertion(context, node) ||
214
- index_js_1.Sinon.isAssertion(context, node) ||
215
- index_js_1.Vitest.isAssertion(context, node) ||
216
- supertest_js_1.Supertest.isAssertion(context, node) ||
222
+ if (Chai.isAssertion(context, node) ||
223
+ Sinon.isAssertion(context, node) ||
224
+ Vitest.isAssertion(context, node) ||
225
+ Supertest.isAssertion(context, node) ||
217
226
  isGlobalAssertion(context, node)) {
218
227
  visitedNodes.set(node, true);
219
228
  return true;
220
229
  }
221
230
  let nodeHasAssertions = false;
222
- if ((0, index_js_1.isFunctionCall)(node)) {
231
+ if ((0, ast_js_1.isFunctionCall)(node)) {
223
232
  const { callee } = node;
224
- const functionDef = (0, index_js_1.resolveFunction)(this.context, callee);
233
+ const functionDef = (0, ast_js_1.resolveFunction)(this.context, callee);
225
234
  if (functionDef) {
226
235
  nodeHasAssertions ||= this.visit(context, functionDef.body, visitedNodes);
227
236
  }
228
237
  }
229
- for (const child of (0, index_js_1.childrenOf)(node, this.visitorKeys)) {
238
+ for (const child of (0, ancestor_js_1.childrenOf)(node, this.visitorKeys)) {
230
239
  nodeHasAssertions ||= this.visit(context, child, visitedNodes);
231
240
  }
232
241
  visitedNodes.set(node, nodeHasAssertions);
@@ -263,7 +272,7 @@ function isGlobalExpectExpression(node) {
263
272
  innerCallExpression.expression.text.startsWith('expect'));
264
273
  }
265
274
  function isFunctionCallFromNodeAssertTS(services, node) {
266
- const fqn = (0, index_js_1.getFullyQualifiedNameTS)(services, node);
275
+ const fqn = (0, module_ts_js_1.getFullyQualifiedNameTS)(services, node);
267
276
  return fqn ? fqn?.startsWith('assert') : false;
268
277
  }
269
278
  function isGlobalAssertion(context, node) {
@@ -301,6 +310,6 @@ function isGlobalExpectExpressionJS(node) {
301
310
  return innerCall.callee.type === 'Identifier' && innerCall.callee.name.startsWith('expect');
302
311
  }
303
312
  function isFunctionCallFromNodeAssert(context, node) {
304
- const fullyQualifiedName = (0, index_js_1.getFullyQualifiedName)(context, node);
313
+ const fullyQualifiedName = (0, module_js_1.getFullyQualifiedName)(context, node);
305
314
  return fullyQualifiedName?.split('.')[0] === 'assert';
306
315
  }
package/cjs/S2703/rule.js CHANGED
@@ -55,11 +55,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
55
55
  Object.defineProperty(exports, "__esModule", { value: true });
56
56
  exports.rule = void 0;
57
57
  const globals_1 = __importDefault(require("globals"));
58
- const index_js_1 = require("../helpers/index.js");
58
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
59
59
  const meta = __importStar(require("./generated-meta.js"));
60
60
  const excludedNames = new Set(Object.values(globals_1.default).flatMap(env => Object.keys(env)));
61
61
  exports.rule = {
62
- meta: (0, index_js_1.generateMeta)(meta, {
62
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
63
63
  messages: {
64
64
  explicitModifier: 'Add the "let", "const" or "var" keyword to this declaration of "{{variable}}" to make it explicit.',
65
65
  },
package/cjs/S2737/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 equivalence_js_1 = require("../helpers/equivalence.js");
55
+ const generate_meta_js_1 = require("../helpers/generate-meta.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
  uselessCatch: 'Add logic to this catch clause or eliminate it and rethrow the exception automatically.',
60
62
  },
@@ -78,8 +80,8 @@ function visitCatchClause(catchClause, context) {
78
80
  }
79
81
  }
80
82
  function onlyRethrows(statement, catchParam, sourceCode) {
81
- return ((0, index_js_1.isThrowStatement)(statement) &&
83
+ return ((0, ast_js_1.isThrowStatement)(statement) &&
82
84
  catchParam !== null &&
83
85
  statement.argument !== null &&
84
- (0, index_js_1.areEquivalent)(catchParam, statement.argument, sourceCode));
86
+ (0, equivalence_js_1.areEquivalent)(catchParam, statement.argument, sourceCode));
85
87
  }
package/cjs/S2755/rule.js CHANGED
@@ -51,7 +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
+ const module_js_1 = require("../helpers/module.js");
56
+ const ast_js_1 = require("../helpers/ast.js");
57
+ const location_js_1 = require("../helpers/location.js");
55
58
  const meta = __importStar(require("./generated-meta.js"));
56
59
  const TARGET_XML_FQNS = new Set([
57
60
  'libxmljs.parseXml',
@@ -60,22 +63,22 @@ const TARGET_XML_FQNS = new Set([
60
63
  'libxmljs2.parseXmlString',
61
64
  ]);
62
65
  exports.rule = {
63
- meta: (0, index_js_1.generateMeta)(meta),
66
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
64
67
  create(context) {
65
68
  function isXmlParserCall(call) {
66
- const fqn = (0, index_js_1.getFullyQualifiedName)(context, call) || '';
69
+ const fqn = (0, module_js_1.getFullyQualifiedName)(context, call) || '';
67
70
  return TARGET_XML_FQNS.has(fqn);
68
71
  }
69
72
  return {
70
73
  CallExpression: (node) => {
71
74
  const call = node;
72
75
  if (isXmlParserCall(call)) {
73
- const noent = (0, index_js_1.getProperty)(call.arguments[1], 'noent', context);
76
+ const noent = (0, ast_js_1.getProperty)(call.arguments[1], 'noent', context);
74
77
  if (noent && isNoEntSet(noent)) {
75
- (0, index_js_1.report)(context, {
78
+ (0, location_js_1.report)(context, {
76
79
  message: 'Disable access to external entities in XML parsing.',
77
80
  node: noent,
78
- }, [(0, index_js_1.toSecondaryLocation)(call.callee)]);
81
+ }, [(0, location_js_1.toSecondaryLocation)(call.callee)]);
79
82
  }
80
83
  }
81
84
  },
package/cjs/S2757/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
  useExistingOperator: 'Was "{{operator}}=" meant instead?',
60
60
  suggestExistingOperator: 'Replace with "{{operator}}" operator',
package/cjs/S2817/rule.js CHANGED
@@ -51,35 +51,38 @@ 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");
55
58
  const meta = __importStar(require("./generated-meta.js"));
56
59
  const OPEN_DATABASE = 'openDatabase';
57
60
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta, {
61
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
59
62
  messages: {
60
63
  convertWebSQLUse: 'Convert this use of a Web SQL database to another technology.',
61
64
  },
62
65
  }),
63
66
  create(context) {
64
67
  const services = context.sourceCode.parserServices;
65
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
68
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
66
69
  return {};
67
70
  }
68
71
  return {
69
72
  CallExpression: (node) => {
70
73
  const callExpression = node;
71
74
  const { callee } = callExpression;
72
- const symbol = (0, index_js_1.getSymbolAtLocation)(callee, services);
75
+ const symbol = (0, type_js_1.getSymbolAtLocation)(callee, services);
73
76
  if (!!symbol) {
74
77
  return;
75
78
  }
76
- if ((0, index_js_1.isIdentifier)(callee, OPEN_DATABASE)) {
79
+ if ((0, ast_js_1.isIdentifier)(callee, OPEN_DATABASE)) {
77
80
  context.report({ node: callee, messageId: 'convertWebSQLUse' });
78
81
  }
79
- if (callee.type !== 'MemberExpression' || !(0, index_js_1.isIdentifier)(callee.property, OPEN_DATABASE)) {
82
+ if (callee.type !== 'MemberExpression' || !(0, ast_js_1.isIdentifier)(callee.property, OPEN_DATABASE)) {
80
83
  return;
81
84
  }
82
- const typeName = (0, index_js_1.getTypeAsString)(callee.object, services);
85
+ const typeName = (0, type_js_1.getTypeAsString)(callee.object, services);
83
86
  if (/window/i.test(typeName) || /globalThis/i.test(typeName)) {
84
87
  context.report({ node: callee, messageId: 'convertWebSQLUse' });
85
88
  }
package/cjs/S2819/rule.js CHANGED
@@ -51,12 +51,16 @@ 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 type_js_1 = require("../helpers/type.js");
57
+ const ast_js_1 = require("../helpers/ast.js");
58
+ const parser_services_js_1 = require("../helpers/parser-services.js");
55
59
  const meta = __importStar(require("./generated-meta.js"));
56
60
  const POST_MESSAGE = 'postMessage';
57
61
  const ADD_EVENT_LISTENER = 'addEventListener';
58
62
  exports.rule = {
59
- meta: (0, index_js_1.generateMeta)(meta, {
63
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
60
64
  messages: {
61
65
  specifyTarget: `Specify a target origin for this message.`,
62
66
  verifyOrigin: `Verify the origin of the received message.`,
@@ -64,7 +68,7 @@ exports.rule = {
64
68
  }),
65
69
  create(context) {
66
70
  const services = context.sourceCode.parserServices;
67
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
71
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
68
72
  return {};
69
73
  }
70
74
  return {
@@ -78,7 +82,7 @@ exports.rule = {
78
82
  },
79
83
  };
80
84
  function isWindowObject(node, context) {
81
- const type = (0, index_js_1.getTypeAsString)(node, context.sourceCode.parserServices);
85
+ const type = (0, type_js_1.getTypeAsString)(node, context.sourceCode.parserServices);
82
86
  const hasWindowName = WindowNameVisitor.containsWindowName(node, context);
83
87
  return type.match(/window/i) || type.match(/globalThis/i) || hasWindowName;
84
88
  }
@@ -86,7 +90,7 @@ function checkPostMessageCall(callExpr, context) {
86
90
  const { callee } = callExpr;
87
91
  // Window.postMessage() can take 2 or 3 arguments
88
92
  if (![2, 3].includes(callExpr.arguments.length) ||
89
- (0, index_js_1.getValueOfExpression)(context, callExpr.arguments[1], 'Literal')?.value !== '*') {
93
+ (0, ast_js_1.getValueOfExpression)(context, callExpr.arguments[1], 'Literal')?.value !== '*') {
90
94
  return;
91
95
  }
92
96
  if (callee.type === 'Identifier') {
@@ -112,9 +116,9 @@ function checkAddEventListenerCall(callExpr, context) {
112
116
  !isMessageTypeEvent(args[0], context)) {
113
117
  return;
114
118
  }
115
- let listener = (0, index_js_1.resolveFunction)(context, args[1]);
119
+ let listener = (0, ast_js_1.resolveFunction)(context, args[1]);
116
120
  if (listener?.body.type === 'CallExpression') {
117
- listener = (0, index_js_1.resolveFunction)(context, listener.body);
121
+ listener = (0, ast_js_1.resolveFunction)(context, listener.body);
118
122
  }
119
123
  if (!listener || listener.params.length === 0) {
120
124
  return;
@@ -295,7 +299,7 @@ function findEventOrigin(event) {
295
299
  * Checks if node has a property 'origin'
296
300
  */
297
301
  function isPropertyOrigin(node) {
298
- return (0, index_js_1.isIdentifier)(node.property, 'origin');
302
+ return (0, ast_js_1.isIdentifier)(node.property, 'origin');
299
303
  }
300
304
  /**
301
305
  * Returns event.originalEvent MemberExpression, if exists
@@ -307,7 +311,7 @@ function findEventOriginalEvent(event) {
307
311
  }
308
312
  const { object: eventCandidate, property: originalEventIdentifierCandidate } = memberExpr;
309
313
  if (eventCandidate === event &&
310
- (0, index_js_1.isIdentifier)(originalEventIdentifierCandidate, 'originalEvent')) {
314
+ (0, ast_js_1.isIdentifier)(originalEventIdentifierCandidate, 'originalEvent')) {
311
315
  return memberExpr;
312
316
  }
313
317
  return null;
@@ -320,10 +324,10 @@ function isInIfStatement(node) {
320
324
  if (node == null) {
321
325
  return false;
322
326
  }
323
- return (0, index_js_1.findFirstMatchingLocalAncestor)(node, index_js_1.isIfStatement) != null;
327
+ return (0, ancestor_js_1.findFirstMatchingLocalAncestor)(node, ast_js_1.isIfStatement) != null;
324
328
  }
325
329
  function isMessageTypeEvent(eventNode, context) {
326
- const eventValue = (0, index_js_1.getValueOfExpression)(context, eventNode, 'Literal');
330
+ const eventValue = (0, ast_js_1.getValueOfExpression)(context, eventNode, 'Literal');
327
331
  return typeof eventValue?.value === 'string' && eventValue.value.toLowerCase() === 'message';
328
332
  }
329
333
  class WindowNameVisitor {
@@ -340,7 +344,7 @@ class WindowNameVisitor {
340
344
  if (node.type === 'Identifier' && /window/i.test(node.name)) {
341
345
  this.hasWindowName = true;
342
346
  }
343
- for (const childNode of (0, index_js_1.childrenOf)(node, context.sourceCode.visitorKeys)) {
347
+ for (const childNode of (0, ancestor_js_1.childrenOf)(node, context.sourceCode.visitorKeys)) {
344
348
  visitNode(childNode);
345
349
  }
346
350
  };
package/cjs/S2870/rule.js CHANGED
@@ -51,23 +51,26 @@ 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 type_js_1 = require("../helpers/type.js");
57
+ const parser_services_js_1 = require("../helpers/parser-services.js");
55
58
  const meta = __importStar(require("./generated-meta.js"));
56
59
  const ArrayDeleteExpression = "UnaryExpression[operator='delete'] > MemberExpression[computed=true]";
57
60
  exports.rule = {
58
- meta: (0, index_js_1.generateMeta)(meta, {
61
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
59
62
  messages: {
60
63
  removeDelete: 'Remove this use of "delete".',
61
64
  },
62
65
  }),
63
66
  create(context) {
64
67
  const services = context.sourceCode.parserServices;
65
- if ((0, index_js_1.isRequiredParserServices)(services)) {
68
+ if ((0, parser_services_js_1.isRequiredParserServices)(services)) {
66
69
  return {
67
70
  [ArrayDeleteExpression]: (node) => {
68
71
  const member = node;
69
72
  const object = member.object;
70
- if ((0, index_js_1.isArray)(object, services)) {
73
+ if ((0, type_js_1.isArray)(object, services)) {
71
74
  raiseIssue(context, node);
72
75
  }
73
76
  },
@@ -77,7 +80,7 @@ exports.rule = {
77
80
  },
78
81
  };
79
82
  function raiseIssue(context, node) {
80
- const deleteKeyword = context.sourceCode.getFirstToken((0, index_js_1.getParent)(context, node));
83
+ const deleteKeyword = context.sourceCode.getFirstToken((0, ancestor_js_1.getParent)(context, node));
81
84
  context.report({
82
85
  messageId: 'removeDelete',
83
86
  loc: deleteKeyword.loc,
package/cjs/S2871/rule.js CHANGED
@@ -51,7 +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 collection_js_1 = require("../helpers/collection.js");
55
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
56
+ const type_js_1 = require("../helpers/type.js");
57
+ const parser_services_js_1 = require("../helpers/parser-services.js");
55
58
  const meta = __importStar(require("./generated-meta.js"));
56
59
  const compareNumberFunctionPlaceholder = '(a, b) => (a - b)';
57
60
  const compareBigIntFunctionPlaceholder = [
@@ -67,7 +70,7 @@ const compareBigIntFunctionPlaceholder = [
67
70
  ];
68
71
  const languageSensitiveOrderPlaceholder = '(a, b) => a.localeCompare(b)';
69
72
  exports.rule = {
70
- meta: (0, index_js_1.generateMeta)(meta, {
73
+ meta: (0, generate_meta_js_1.generateMeta)(meta, {
71
74
  hasSuggestions: true,
72
75
  messages: {
73
76
  provideCompareFunction: 'Provide a compare function to avoid sorting elements alphabetically.',
@@ -79,15 +82,15 @@ exports.rule = {
79
82
  create(context) {
80
83
  const sourceCode = context.sourceCode;
81
84
  const services = context.sourceCode.parserServices;
82
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
85
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
83
86
  return {};
84
87
  }
85
88
  return {
86
89
  'CallExpression[arguments.length=0][callee.type="MemberExpression"]': (call) => {
87
90
  const { object, property: node } = call.callee;
88
91
  const text = sourceCode.getText(node);
89
- const type = (0, index_js_1.getTypeFromTreeNode)(object, services);
90
- if ([...index_js_1.sortLike, ...index_js_1.copyingSortLike].includes(text) && (0, index_js_1.isArrayLikeType)(type, services)) {
92
+ const type = (0, type_js_1.getTypeFromTreeNode)(object, services);
93
+ if ([...collection_js_1.sortLike, ...collection_js_1.copyingSortLike].includes(text) && (0, type_js_1.isArrayLikeType)(type, services)) {
91
94
  const suggest = getSuggestions(call, type);
92
95
  const messageId = getMessageId(type);
93
96
  context.report({ node, suggest, messageId });
@@ -96,19 +99,19 @@ exports.rule = {
96
99
  };
97
100
  function getSuggestions(call, type) {
98
101
  const suggestions = [];
99
- if ((0, index_js_1.isNumberArray)(type, services)) {
102
+ if ((0, type_js_1.isNumberArray)(type, services)) {
100
103
  suggestions.push({
101
104
  messageId: 'suggestNumericOrder',
102
105
  fix: fixer(call, compareNumberFunctionPlaceholder),
103
106
  });
104
107
  }
105
- else if ((0, index_js_1.isBigIntArray)(type, services)) {
108
+ else if ((0, type_js_1.isBigIntArray)(type, services)) {
106
109
  suggestions.push({
107
110
  messageId: 'suggestNumericOrder',
108
111
  fix: fixer(call, ...compareBigIntFunctionPlaceholder),
109
112
  });
110
113
  }
111
- else if ((0, index_js_1.isStringArray)(type, services)) {
114
+ else if ((0, type_js_1.isStringArray)(type, services)) {
112
115
  suggestions.push({
113
116
  messageId: 'suggestLanguageSensitiveOrder',
114
117
  fix: fixer(call, languageSensitiveOrderPlaceholder),
@@ -117,7 +120,7 @@ exports.rule = {
117
120
  return suggestions;
118
121
  }
119
122
  function getMessageId(type) {
120
- if ((0, index_js_1.isStringArray)(type, services)) {
123
+ if ((0, type_js_1.isStringArray)(type, services)) {
121
124
  return 'provideCompareFunctionForArrayOfStrings';
122
125
  }
123
126
  return 'provideCompareFunction';
package/cjs/S2970/rule.js CHANGED
@@ -51,7 +51,8 @@ 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 ast_js_1 = require("../helpers/ast.js");
55
56
  const meta = __importStar(require("./generated-meta.js"));
56
57
  const assertionFunctions = [
57
58
  'a',
@@ -137,7 +138,7 @@ const gettersOrModifiers = [
137
138
  'should',
138
139
  ];
139
140
  exports.rule = {
140
- meta: (0, index_js_1.generateMeta)(meta),
141
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
141
142
  create(context) {
142
143
  return {
143
144
  ExpressionStatement(node) {
@@ -145,13 +146,13 @@ exports.rule = {
145
146
  if (exprStatement.expression.type === 'MemberExpression') {
146
147
  const { property } = exprStatement.expression;
147
148
  if (isTestAssertion(exprStatement.expression)) {
148
- if ((0, index_js_1.isIdentifier)(property, ...assertionFunctions)) {
149
+ if ((0, ast_js_1.isIdentifier)(property, ...assertionFunctions)) {
149
150
  context.report({
150
151
  node: property,
151
152
  message: `Call this '${property.name}' assertion.`,
152
153
  });
153
154
  }
154
- if ((0, index_js_1.isIdentifier)(property, ...gettersOrModifiers)) {
155
+ if ((0, ast_js_1.isIdentifier)(property, ...gettersOrModifiers)) {
155
156
  context.report({
156
157
  node: property,
157
158
  message: `Complete this assertion; '${property.name}' doesn't assert anything by itself.`,
@@ -173,10 +174,10 @@ exports.rule = {
173
174
  function isTestAssertion(node) {
174
175
  const { object, property } = node;
175
176
  // Chai's BDD style where 'should' extends Object.prototype https://www.chaijs.com/guide/styles/
176
- if ((0, index_js_1.isIdentifier)(object) && (0, index_js_1.isIdentifier)(property, 'should')) {
177
+ if ((0, ast_js_1.isIdentifier)(object) && (0, ast_js_1.isIdentifier)(property, 'should')) {
177
178
  return true;
178
179
  }
179
- if (isExpectCall(object) || (0, index_js_1.isIdentifier)(object, 'assert', 'expect', 'should')) {
180
+ if (isExpectCall(object) || (0, ast_js_1.isIdentifier)(object, 'assert', 'expect', 'should')) {
180
181
  return true;
181
182
  }
182
183
  else if (object.type === 'MemberExpression') {
@@ -189,6 +190,6 @@ function isTestAssertion(node) {
189
190
  }
190
191
  function isExpectCall(node) {
191
192
  return (node.type === 'CallExpression' &&
192
- (0, index_js_1.isIdentifier)(node.callee, 'expect') &&
193
- !(0, index_js_1.isNumberLiteral)(node.arguments[0]));
193
+ (0, ast_js_1.isIdentifier)(node.callee, 'expect') &&
194
+ !(0, ast_js_1.isNumberLiteral)(node.arguments[0]));
194
195
  }
package/cjs/S2990/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
  removeThis: `Remove the use of "this".`,
package/cjs/S2999/rule.js CHANGED
@@ -55,30 +55,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
55
55
  Object.defineProperty(exports, "__esModule", { value: true });
56
56
  exports.rule = void 0;
57
57
  const typescript_1 = __importDefault(require("typescript"));
58
- const index_js_1 = require("../helpers/index.js");
58
+ const generate_meta_js_1 = require("../helpers/generate-meta.js");
59
+ const type_js_1 = require("../helpers/type.js");
60
+ const parser_services_js_1 = require("../helpers/parser-services.js");
61
+ const location_js_1 = require("../helpers/location.js");
59
62
  const meta = __importStar(require("./generated-meta.js"));
60
63
  exports.rule = {
61
- meta: (0, index_js_1.generateMeta)(meta),
64
+ meta: (0, generate_meta_js_1.generateMeta)(meta),
62
65
  create(context) {
63
66
  const considerJSDoc = !!context.options[0]?.considerJSDoc;
64
67
  const services = context.sourceCode.parserServices;
65
- if (!(0, index_js_1.isRequiredParserServices)(services)) {
68
+ if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
66
69
  return {};
67
70
  }
68
71
  return {
69
72
  'NewExpression[callee.type!="ThisExpression"]': (node) => {
70
73
  const { callee } = node;
71
- const type = (0, index_js_1.getTypeFromTreeNode)(callee, services);
72
- const signature = (0, index_js_1.getSignatureFromCallee)(node, services);
74
+ const type = (0, type_js_1.getTypeFromTreeNode)(callee, services);
75
+ const signature = (0, type_js_1.getSignatureFromCallee)(node, services);
73
76
  if (!isInstantiable(type, signature, considerJSDoc) && !isAny(type)) {
74
77
  const functionToken = context.sourceCode.getFirstToken(node, token => token.type === 'Keyword' && token.value === 'function');
75
78
  const newToken = context.sourceCode.getFirstToken(node, token => token.type === 'Keyword' && token.value === 'new');
76
79
  const text = isFunction(type) ? 'this function' : context.sourceCode.getText(callee);
77
80
  const loc = callee.type === 'FunctionExpression' ? functionToken.loc : callee.loc;
78
- (0, index_js_1.report)(context, {
81
+ (0, location_js_1.report)(context, {
79
82
  message: `Replace ${text} with a constructor function.`,
80
83
  loc,
81
- }, [(0, index_js_1.toSecondaryLocation)(newToken)]);
84
+ }, [(0, location_js_1.toSecondaryLocation)(newToken)]);
82
85
  }
83
86
  },
84
87
  };