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.
- package/README.md +269 -268
- package/cjs/S100/rule.js +7 -5
- package/cjs/S101/rule.js +2 -2
- package/cjs/S104/rule.js +2 -2
- package/cjs/S105/rule.js +2 -2
- package/cjs/S1066/rule.js +5 -4
- package/cjs/S1067/rule.js +8 -6
- package/cjs/S1110/rule.js +7 -5
- package/cjs/S1119/rule.js +85 -7
- package/cjs/S1121/rule.js +4 -3
- package/cjs/S1125/rule.js +9 -8
- package/cjs/S1126/rule.js +2 -2
- package/cjs/S1128/rule.js +8 -5
- package/cjs/S1134/rule.js +2 -2
- package/cjs/S1135/rule.js +2 -2
- package/cjs/S1154/rule.js +6 -4
- package/cjs/S117/rule.js +6 -5
- package/cjs/S1172/rule.js +2 -2
- package/cjs/S1192/rule.js +5 -4
- package/cjs/S1219/rule.js +4 -3
- package/cjs/S1226/rule.js +6 -4
- package/cjs/S124/rule.js +2 -2
- package/cjs/S125/rule.js +9 -7
- package/cjs/S126/rule.js +2 -2
- package/cjs/S1264/rule.js +2 -2
- package/cjs/S128/rule.js +4 -3
- package/cjs/S1291/rule.js +2 -2
- package/cjs/S1301/rule.js +2 -2
- package/cjs/S1313/rule.js +2 -2
- package/cjs/S134/rule.js +7 -5
- package/cjs/S135/rule.js +5 -4
- package/cjs/S138/rule.js +9 -6
- package/cjs/S1439/rule.js +2 -2
- package/cjs/S1444/rule.js +2 -2
- package/cjs/S1451/rule.js +2 -2
- package/cjs/S1472/rule.js +2 -2
- package/cjs/S1479/rule.js +2 -2
- package/cjs/S1481/rule.js +2 -2
- package/cjs/S1488/generated-meta.js +1 -1
- package/cjs/S1488/rule.js +11 -7
- package/cjs/S1515/rule.js +10 -8
- package/cjs/{helpers/aws/index.js → S1523/generated-meta.js} +34 -18
- package/cjs/S1523/index.js +21 -0
- package/cjs/S1523/meta.js +21 -0
- package/cjs/S1523/rule.js +143 -0
- package/cjs/S1526/rule.js +5 -4
- package/cjs/S1527/rule.js +2 -2
- package/cjs/S1528/rule.js +2 -2
- package/cjs/S1529/generated-meta.js +1 -1
- package/cjs/S1529/rule.js +4 -3
- package/cjs/S1530/rule.js +5 -3
- package/cjs/S1533/rule.js +2 -2
- package/cjs/S1535/rule.js +2 -2
- package/cjs/S1541/rule.js +10 -7
- package/cjs/S1607/rule.js +22 -20
- package/cjs/S1764/rule.js +10 -7
- package/cjs/S1821/rule.js +2 -2
- package/cjs/S1848/rule.js +10 -7
- package/cjs/S1854/rule.js +18 -14
- package/cjs/S1862/rule.js +10 -8
- package/cjs/S1871/rule.js +21 -16
- package/cjs/S1874/rule.js +4 -3
- package/cjs/S1940/rule.js +2 -2
- package/cjs/S1994/rule.js +10 -7
- package/cjs/S2004/rule.js +9 -7
- package/cjs/S2068/rule.js +75 -12
- package/cjs/S2077/generated-meta.js +1 -1
- package/cjs/S2077/rule.js +10 -6
- package/cjs/S2092/rule.js +2 -2
- package/cjs/S2123/rule.js +2 -2
- package/cjs/S2137/rule.js +2 -2
- package/cjs/S2138/rule.js +4 -3
- package/cjs/S2187/rule.js +2 -2
- package/cjs/S2201/rule.js +47 -5
- package/cjs/S2208/rule.js +2 -2
- package/cjs/S2234/rule.js +58 -11
- package/cjs/S2245/rule.js +4 -3
- package/cjs/S2251/rule.js +5 -4
- package/cjs/S2255/rule.js +6 -5
- package/cjs/S2259/rule.js +14 -9
- package/cjs/S2301/rule.js +14 -9
- package/cjs/S2310/rule.js +80 -9
- package/cjs/S2392/rule.js +7 -5
- package/cjs/S2424/rule.js +2 -2
- package/cjs/S2428/rule.js +8 -6
- package/cjs/S2486/rule.js +4 -3
- package/cjs/S2589/rule.js +12 -10
- package/cjs/S2598/rule.js +17 -14
- package/cjs/S2612/generated-meta.js +1 -1
- package/cjs/S2612/rule.js +8 -6
- package/cjs/S2639/rule.js +2 -2
- package/cjs/S2681/rule.js +2 -2
- package/cjs/S2692/rule.js +6 -4
- package/cjs/S2699/generated-meta.js +1 -1
- package/cjs/S2699/rule.js +40 -31
- package/cjs/S2703/rule.js +2 -2
- package/cjs/S2737/rule.js +6 -4
- package/cjs/S2755/rule.js +9 -6
- package/cjs/S2757/rule.js +2 -2
- package/cjs/S2817/rule.js +10 -7
- package/cjs/S2819/rule.js +16 -12
- package/cjs/S2870/rule.js +8 -5
- package/cjs/S2871/rule.js +12 -9
- package/cjs/S2970/rule.js +9 -8
- package/cjs/S2990/rule.js +2 -2
- package/cjs/S2999/rule.js +10 -7
- package/cjs/S3001/rule.js +2 -2
- package/cjs/S3003/rule.js +10 -7
- package/cjs/S3317/rule.js +4 -3
- package/cjs/S3330/rule.js +2 -2
- package/cjs/S3358/rule.js +2 -2
- package/cjs/S3402/rule.js +14 -10
- package/cjs/S3403/rule.js +10 -7
- package/cjs/S3415/rule.js +16 -13
- package/cjs/S3499/rule.js +5 -4
- package/cjs/S3500/rule.js +5 -4
- package/cjs/S3513/rule.js +5 -4
- package/cjs/S3514/rule.js +10 -7
- package/cjs/S3516/rule.js +10 -7
- package/cjs/S3524/rule.js +2 -2
- package/cjs/S3525/rule.js +6 -4
- package/cjs/S3531/rule.js +5 -3
- package/cjs/S3533/rule.js +8 -7
- package/cjs/S3579/rule.js +6 -4
- package/cjs/S3616/rule.js +6 -4
- package/cjs/S3626/rule.js +4 -3
- package/cjs/S3686/rule.js +7 -5
- package/cjs/S3699/rule.js +4 -3
- package/cjs/S3735/rule.js +8 -5
- package/cjs/S3757/rule.js +8 -6
- package/cjs/S3758/rule.js +9 -7
- package/cjs/S3760/rule.js +24 -21
- package/cjs/S3776/rule.js +26 -22
- package/cjs/S3782/rule.js +6 -4
- package/cjs/S3785/rule.js +9 -6
- package/cjs/S3796/rule.js +12 -8
- package/cjs/S3798/rule.js +4 -3
- package/cjs/S3800/rule.js +22 -11
- package/cjs/S3801/generated-meta.js +1 -1
- package/cjs/S3801/rule.js +15 -11
- package/cjs/S3827/rule.js +9 -6
- package/cjs/S3923/rule.js +9 -6
- package/cjs/S3972/rule.js +5 -4
- package/cjs/S3973/rule.js +7 -5
- package/cjs/S3981/rule.js +4 -3
- package/cjs/S3984/rule.js +4 -3
- package/cjs/S4030/rule.js +10 -7
- package/cjs/S4036/rule.js +7 -5
- package/cjs/S4043/rule.js +12 -8
- package/cjs/S4139/rule.js +7 -5
- package/cjs/S4143/rule.js +12 -9
- package/cjs/S4144/rule.js +12 -9
- package/cjs/S4158/rule.js +11 -8
- package/cjs/S4165/rule.js +14 -12
- package/cjs/S4322/rule.js +8 -5
- package/cjs/S4323/rule.js +4 -3
- package/cjs/S4324/rule.js +7 -5
- package/cjs/S4328/rule.js +2 -2
- package/cjs/S4335/rule.js +6 -4
- package/cjs/S4423/rule.js +4 -3
- package/cjs/S4423/rule.lib.js +8 -7
- package/cjs/S4426/rule.js +11 -10
- package/cjs/S4502/rule.js +16 -13
- package/cjs/S4507/rule.js +8 -6
- package/cjs/S4524/rule.js +2 -2
- package/cjs/S4619/rule.js +6 -4
- package/cjs/S4621/rule.js +5 -4
- package/cjs/S4622/rule.js +5 -3
- package/cjs/S4623/rule.js +8 -5
- package/cjs/S4624/rule.js +6 -4
- package/cjs/S4634/rule.js +4 -3
- package/cjs/S4721/rule.js +7 -5
- package/cjs/S4782/rule.js +7 -5
- package/cjs/S4784/rule.js +5 -4
- package/cjs/S4787/rule.js +9 -7
- package/cjs/S4790/rule.js +7 -5
- package/cjs/S4798/rule.js +2 -2
- package/cjs/S4817/rule.js +10 -8
- package/cjs/S4818/rule.js +4 -3
- package/cjs/S4822/rule.js +13 -9
- package/cjs/S4823/rule.js +4 -3
- package/cjs/S4829/rule.js +4 -3
- package/cjs/S4830/rule.js +11 -8
- package/cjs/S5042/rule.js +9 -7
- package/cjs/S5122/rule.js +40 -36
- package/cjs/S5148/rule.js +9 -8
- package/cjs/S5247/rule.js +22 -18
- package/cjs/S5256/rule.js +5 -4
- package/cjs/S5257/rule.js +4 -3
- package/cjs/S5260/rule.js +4 -3
- package/cjs/S5264/rule.js +4 -3
- package/cjs/S5332/rule.js +4 -3
- package/cjs/S5332/rule.lib.js +19 -17
- package/cjs/S5443/rule.js +2 -2
- package/cjs/S5527/rule.js +18 -14
- package/cjs/S5542/rule.js +6 -4
- package/cjs/S5547/rule.js +6 -4
- package/cjs/S5604/rule.js +15 -14
- package/cjs/S5659/rule.js +15 -12
- package/cjs/S5689/rule.js +11 -8
- package/cjs/S5691/rule.js +7 -5
- package/cjs/S5693/rule.js +14 -12
- package/cjs/S5725/rule.js +9 -6
- package/cjs/S5728/rule.js +7 -4
- package/cjs/S5730/rule.js +9 -6
- package/cjs/S5732/rule.js +8 -5
- package/cjs/S5734/rule.js +7 -4
- package/cjs/S5736/rule.js +8 -5
- package/cjs/S5739/rule.js +11 -8
- package/cjs/S5742/rule.js +7 -4
- package/cjs/S5743/rule.js +8 -6
- package/cjs/S5757/rule.js +13 -10
- package/cjs/S5759/rule.js +10 -7
- package/cjs/S5842/rule.js +2 -2
- package/cjs/S5843/rule.js +22 -19
- package/cjs/S5850/rule.js +4 -3
- package/cjs/S5852/rule.js +2 -2
- package/cjs/S5856/rule.js +10 -7
- package/cjs/S5860/rule.js +30 -26
- package/cjs/S5863/rule.js +15 -11
- package/cjs/S5867/rule.js +8 -7
- package/cjs/S5868/rule.js +7 -5
- package/cjs/S5869/rule.js +6 -5
- package/cjs/S5876/rule.js +12 -8
- package/cjs/S5958/rule.js +12 -9
- package/cjs/S5973/rule.js +10 -7
- package/cjs/S6019/rule.js +4 -3
- package/cjs/S6035/rule.js +2 -2
- package/cjs/S6079/rule.js +9 -6
- package/cjs/S6080/rule.js +13 -10
- package/cjs/S6092/rule.js +9 -7
- package/cjs/S6245/rule.js +14 -9
- package/cjs/S6249/rule.js +7 -5
- package/cjs/S6252/rule.js +12 -8
- package/cjs/S6265/rule.js +27 -20
- package/cjs/S6268/rule.js +5 -4
- package/cjs/S6270/rule.js +12 -9
- package/cjs/S6275/rule.js +2 -2
- package/cjs/S6281/rule.js +22 -17
- package/cjs/S6299/rule.js +2 -2
- package/cjs/S6302/rule.js +6 -5
- package/cjs/S6303/rule.js +12 -10
- package/cjs/S6304/rule.js +6 -5
- package/cjs/S6308/rule.js +7 -5
- package/cjs/S6317/rule.js +5 -4
- package/cjs/S6319/rule.js +2 -2
- package/cjs/S6321/rule.js +25 -23
- package/cjs/S6323/rule.js +4 -3
- package/cjs/S6324/rule.js +2 -2
- package/cjs/S6326/rule.js +2 -2
- package/cjs/S6327/rule.js +2 -2
- package/cjs/S6328/rule.js +4 -3
- package/cjs/S6329/rule.js +7 -5
- package/cjs/S6330/rule.js +2 -2
- package/cjs/S6332/rule.js +2 -2
- package/cjs/S6333/rule.js +8 -6
- package/cjs/S6351/rule.js +22 -19
- package/cjs/S6353/rule.js +2 -2
- package/cjs/S6397/rule.js +2 -2
- package/cjs/S6418/config.js +1 -1
- package/cjs/S6418/rule.js +9 -24
- package/cjs/S6426/rule.js +5 -4
- package/cjs/S6437/rule.js +10 -7
- package/cjs/S6439/rule.js +9 -7
- package/cjs/S6442/rule.js +11 -8
- package/cjs/S6443/rule.js +9 -7
- package/cjs/S6486/rule.js +5 -4
- package/cjs/S6564/rule.js +4 -3
- package/cjs/S6594/rule.js +12 -8
- package/cjs/S6627/rule.js +6 -4
- package/cjs/S6759/rule.js +10 -6
- package/cjs/S6958/rule.js +2 -2
- package/cjs/S6959/rule.js +9 -6
- package/cjs/S7059/generated-meta.js +1 -1
- package/cjs/S7059/rule.js +8 -5
- package/cjs/S7639/generated-meta.js +1 -1
- package/cjs/S7639/rule.js +5 -4
- package/cjs/S7790/generated-meta.js +1 -1
- package/cjs/S7790/rule.js +7 -5
- package/cjs/S8441/generated-meta.js +1 -1
- package/cjs/S8441/rule.js +13 -9
- package/cjs/S881/rule.js +2 -2
- package/cjs/S888/rule.js +4 -3
- package/cjs/S930/rule.js +14 -12
- package/cjs/helpers/ast.js +11 -8
- package/cjs/helpers/aws/s3.js +9 -6
- package/cjs/helpers/chai.js +41 -43
- package/cjs/helpers/configs.js +92 -0
- package/cjs/helpers/cookie-flag-check.js +19 -17
- package/cjs/helpers/{decorators/index.js → entropy.js} +16 -17
- package/cjs/helpers/express.js +127 -128
- package/cjs/helpers/find-up/all-in-parent-dirs.js +0 -16
- package/cjs/helpers/mocha.js +50 -54
- package/cjs/helpers/regex/ast.js +7 -6
- package/cjs/helpers/regex/extract.js +11 -11
- package/cjs/helpers/regex/group.js +2 -2
- package/cjs/helpers/regex/location.js +2 -2
- package/cjs/helpers/regex/range.js +5 -4
- package/cjs/helpers/regex/rule-template.js +4 -3
- package/cjs/helpers/sinon.js +33 -36
- package/cjs/helpers/supertest.js +34 -37
- package/cjs/helpers/vitest.js +29 -32
- package/cjs/plugin-rules.js +452 -450
- package/docs/assertions-in-tests.md +2 -0
- package/docs/bitwise-operators.md +2 -0
- package/docs/code-eval.md +7 -0
- package/docs/file-permissions.md +1 -1
- package/docs/no-async-constructor.md +2 -0
- package/docs/no-inconsistent-returns.md +2 -0
- package/docs/prefer-immediate-return.md +2 -0
- package/docs/sql-queries.md +2 -0
- package/package.json +39 -1
- package/types/S1067/rule.d.ts +1 -1
- package/types/S1110/rule.d.ts +1 -1
- package/types/S1128/rule.d.ts +1 -1
- package/types/S1172/rule.d.ts +1 -1
- package/types/S1226/rule.d.ts +1 -1
- package/types/S134/rule.d.ts +1 -1
- package/types/S1472/rule.d.ts +1 -1
- package/types/S1481/rule.d.ts +1 -1
- package/types/S1488/generated-meta.d.ts +1 -1
- package/types/S1515/rule.d.ts +1 -1
- package/types/S1523/generated-meta.d.ts +17 -0
- package/types/S1523/index.d.ts +1 -0
- package/types/S1523/meta.d.ts +2 -0
- package/types/S1523/rule.d.ts +2 -0
- package/types/S1527/rule.d.ts +1 -1
- package/types/S1529/generated-meta.d.ts +1 -1
- package/types/S1541/rule.d.ts +1 -1
- package/types/S1862/rule.d.ts +1 -1
- package/types/S2077/generated-meta.d.ts +1 -1
- package/types/S2123/rule.d.ts +1 -1
- package/types/S2259/rule.d.ts +1 -1
- package/types/S2428/rule.d.ts +1 -1
- package/types/S2589/rule.d.ts +1 -1
- package/types/S2598/rule.d.ts +1 -1
- package/types/S2699/generated-meta.d.ts +1 -1
- package/types/S2699/rule.d.ts +1 -1
- package/types/S2737/rule.d.ts +1 -1
- package/types/S2757/rule.d.ts +1 -1
- package/types/S2819/rule.d.ts +1 -1
- package/types/S3001/rule.d.ts +1 -1
- package/types/S3317/rule.d.ts +1 -1
- package/types/S3500/rule.d.ts +1 -1
- package/types/S3513/rule.d.ts +1 -1
- package/types/S3686/rule.d.ts +1 -1
- package/types/S3801/generated-meta.d.ts +1 -1
- package/types/S3972/rule.d.ts +1 -1
- package/types/S3973/rule.d.ts +1 -1
- package/types/S4030/rule.d.ts +1 -1
- package/types/S4143/rule.d.ts +1 -1
- package/types/S4158/rule.d.ts +1 -1
- package/types/S4621/rule.d.ts +1 -1
- package/types/S4782/rule.d.ts +1 -1
- package/types/S5693/rule.d.ts +1 -1
- package/types/S5725/rule.d.ts +1 -1
- package/types/S5860/rule.d.ts +1 -1
- package/types/S5868/rule.d.ts +1 -1
- package/types/S5869/rule.d.ts +1 -1
- package/types/S6079/rule.d.ts +1 -1
- package/types/S6326/rule.d.ts +1 -1
- package/types/S6351/rule.d.ts +1 -1
- package/types/S6418/config.d.ts +1 -1
- package/types/S6443/rule.d.ts +1 -1
- package/types/S7059/generated-meta.d.ts +1 -1
- package/types/S7639/generated-meta.d.ts +1 -1
- package/types/S7790/generated-meta.d.ts +1 -1
- package/types/S8441/generated-meta.d.ts +1 -1
- package/types/S930/rule.d.ts +1 -1
- package/types/helpers/ancestor.d.ts +3 -3
- package/types/helpers/ast.d.ts +1 -1
- package/types/helpers/aws/iam.d.ts +2 -2
- package/types/helpers/aws/s3.d.ts +1 -1
- package/types/helpers/chai.d.ts +3 -5
- package/types/helpers/configs.d.ts +39 -1
- package/types/helpers/entropy.d.ts +1 -0
- package/types/helpers/equivalence.d.ts +1 -1
- package/types/helpers/express.d.ts +38 -43
- package/types/helpers/find-up/all-in-parent-dirs.d.ts +1 -1
- package/types/helpers/find-up/closest.d.ts +1 -1
- package/types/helpers/find-up/find-minimatch.d.ts +1 -1
- package/types/helpers/generate-meta.d.ts +1 -1
- package/types/helpers/mocha.d.ts +19 -21
- package/types/helpers/module.d.ts +1 -1
- package/types/helpers/package-jsons/all-in-parent-dirs.d.ts +1 -1
- package/types/helpers/package-jsons/dependencies.d.ts +1 -1
- package/types/helpers/recognizers/CodeRecognizer.d.ts +1 -1
- package/types/helpers/recognizers/JavaScriptFootPrint.d.ts +2 -2
- package/types/helpers/recognizers/LanguageFootprint.d.ts +1 -1
- package/types/helpers/regex/alternation.d.ts +1 -1
- package/types/helpers/regex/ast.d.ts +1 -1
- package/types/helpers/regex/location.d.ts +2 -2
- package/types/helpers/regex/range.d.ts +2 -2
- package/types/helpers/regex/rule-template.d.ts +1 -1
- package/types/helpers/result.d.ts +1 -1
- package/types/helpers/sinon.d.ts +4 -6
- package/types/helpers/sonar-runtime.d.ts +1 -1
- package/types/helpers/supertest.d.ts +4 -6
- package/types/helpers/type.d.ts +1 -1
- package/types/helpers/vitest.d.ts +4 -6
- package/types/plugin-rules.d.ts +1 -0
- package/cjs/helpers/decorators/interceptor.js +0 -88
- package/cjs/helpers/index.js +0 -60
- package/cjs/helpers/recognizers/index.js +0 -37
- package/cjs/helpers/rule-detect-react.js +0 -29
- package/cjs/helpers/validate-version.js +0 -94
- package/types/helpers/aws/index.d.ts +0 -3
- package/types/helpers/decorators/index.d.ts +0 -2
- package/types/helpers/decorators/interceptor.d.ts +0 -16
- package/types/helpers/index.d.ts +0 -28
- package/types/helpers/recognizers/index.d.ts +0 -2
- package/types/helpers/rule-detect-react.d.ts +0 -2
- package/types/helpers/validate-version.d.ts +0 -13
package/cjs/S4621/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
|
|
54
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
56
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
57
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, { hasSuggestions: true }),
|
|
58
59
|
create(context) {
|
|
59
60
|
return {
|
|
60
61
|
'TSUnionType, TSIntersectionType'(node) {
|
|
@@ -76,8 +77,8 @@ exports.rule = {
|
|
|
76
77
|
if (duplicates.length > 1) {
|
|
77
78
|
const suggest = getSuggestions(compositeType, duplicates, context);
|
|
78
79
|
const primaryNode = duplicates.splice(1, 1)[0];
|
|
79
|
-
const secondaryLocations = duplicates.map((node, index) => (0,
|
|
80
|
-
(0,
|
|
80
|
+
const secondaryLocations = duplicates.map((node, index) => (0, location_js_1.toSecondaryLocation)(node, index ? 'Another duplicate' : 'Original'));
|
|
81
|
+
(0, location_js_1.report)(context, {
|
|
81
82
|
message: `Remove this duplicated type or replace with another one.`,
|
|
82
83
|
loc: primaryNode.loc,
|
|
83
84
|
suggest,
|
package/cjs/S4622/rule.js
CHANGED
|
@@ -51,14 +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
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const ast_js_1 = require("../helpers/ast.js");
|
|
56
|
+
const type_js_1 = require("../helpers/type.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const DEFAULT_THRESHOLD = 3;
|
|
57
59
|
const messages = {
|
|
58
60
|
refactorUnion: 'Refactor this union type to have less than {{threshold}} elements.',
|
|
59
61
|
};
|
|
60
62
|
exports.rule = {
|
|
61
|
-
meta: (0,
|
|
63
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
|
|
62
64
|
create(context) {
|
|
63
65
|
return {
|
|
64
66
|
TSUnionType: (node) => {
|
|
@@ -86,5 +88,5 @@ function isFromTypeStatement(node) {
|
|
|
86
88
|
function isUsedWithUtilityType(node) {
|
|
87
89
|
return (node.parent.type === 'TSTypeParameterInstantiation' &&
|
|
88
90
|
node.parent.parent.type === 'TSTypeReference' &&
|
|
89
|
-
(0,
|
|
91
|
+
(0, ast_js_1.isIdentifier)(node.parent.parent.typeName, ...type_js_1.UTILITY_TYPES));
|
|
90
92
|
}
|
package/cjs/S4623/rule.js
CHANGED
|
@@ -54,11 +54,14 @@ 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
|
|
57
|
+
const parser_services_js_1 = require("../helpers/parser-services.js");
|
|
58
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
59
|
+
const ast_js_1 = require("../helpers/ast.js");
|
|
60
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
58
61
|
const typescript_1 = __importDefault(require("typescript"));
|
|
59
62
|
const meta = __importStar(require("./generated-meta.js"));
|
|
60
63
|
exports.rule = {
|
|
61
|
-
meta: (0,
|
|
64
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
62
65
|
hasSuggestions: true,
|
|
63
66
|
messages: {
|
|
64
67
|
removeUndefined: 'Remove this redundant "undefined".',
|
|
@@ -67,7 +70,7 @@ exports.rule = {
|
|
|
67
70
|
}),
|
|
68
71
|
create(context) {
|
|
69
72
|
const services = context.sourceCode.parserServices;
|
|
70
|
-
if ((0,
|
|
73
|
+
if ((0, parser_services_js_1.isRequiredParserServices)(services)) {
|
|
71
74
|
return {
|
|
72
75
|
CallExpression: (node) => {
|
|
73
76
|
const call = node;
|
|
@@ -75,8 +78,8 @@ exports.rule = {
|
|
|
75
78
|
if (args.length === 0) {
|
|
76
79
|
return;
|
|
77
80
|
}
|
|
78
|
-
const lastArgument = (0,
|
|
79
|
-
if ((0,
|
|
81
|
+
const lastArgument = (0, collection_js_1.last)(args);
|
|
82
|
+
if ((0, ast_js_1.isUndefined)(lastArgument) && isOptionalParameter(args.length - 1, call, services)) {
|
|
80
83
|
context.report({
|
|
81
84
|
messageId: 'removeUndefined',
|
|
82
85
|
node: lastArgument,
|
package/cjs/S4624/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
|
|
54
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
56
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
59
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
60
|
messages: {
|
|
59
61
|
nestedTemplateLiterals: 'Refactor this code to not use nested template literals.',
|
|
60
62
|
},
|
|
@@ -62,8 +64,8 @@ exports.rule = {
|
|
|
62
64
|
create(context) {
|
|
63
65
|
return {
|
|
64
66
|
'TemplateLiteral TemplateLiteral': (node) => {
|
|
65
|
-
const ancestors = (0,
|
|
66
|
-
const nestingTemplate = (0,
|
|
67
|
+
const ancestors = (0, ancestor_js_1.ancestorsChain)(node, new Set(['TemplateLiteral']));
|
|
68
|
+
const nestingTemplate = (0, collection_js_1.last)(ancestors);
|
|
67
69
|
const { start: nestingStart, end: nestingEnd } = nestingTemplate.loc;
|
|
68
70
|
const { start: nestedStart, end: nestedEnd } = node.loc;
|
|
69
71
|
if (nestedStart.line === nestingStart.line || nestedEnd.line === nestingEnd.line) {
|
package/cjs/S4634/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
|
|
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
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
59
|
hasSuggestions: true,
|
|
59
60
|
messages: {
|
|
60
61
|
promiseAction: 'Replace this trivial promise with "Promise.{{action}}".',
|
|
@@ -82,7 +83,7 @@ function getPromiseExecutor(node, context) {
|
|
|
82
83
|
return undefined;
|
|
83
84
|
}
|
|
84
85
|
function checkExecutor(newExpr, executor, context) {
|
|
85
|
-
if (!(0,
|
|
86
|
+
if (!(0, ast_js_1.isFunctionNode)(executor)) {
|
|
86
87
|
return;
|
|
87
88
|
}
|
|
88
89
|
const { params, body } = executor;
|
package/cjs/S4721/rule.js
CHANGED
|
@@ -51,13 +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
|
|
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");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const EXEC_FUNCTIONS = new Set(['exec', 'execSync']);
|
|
57
59
|
const SPAWN_EXEC_FILE_FUNCTIONS = new Set(['spawn', 'spawnSync', 'execFile', 'execFileSync']);
|
|
58
60
|
const CHILD_PROCESS_MODULE = 'child_process';
|
|
59
61
|
exports.rule = {
|
|
60
|
-
meta: (0,
|
|
62
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
61
63
|
messages: {
|
|
62
64
|
safeOSCommand: 'Make sure that executing this OS command is safe here.',
|
|
63
65
|
},
|
|
@@ -70,7 +72,7 @@ exports.rule = {
|
|
|
70
72
|
};
|
|
71
73
|
function checkOSCommand(context, call) {
|
|
72
74
|
const { callee, arguments: args } = call;
|
|
73
|
-
const fqn = (0,
|
|
75
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, call);
|
|
74
76
|
if (!fqn) {
|
|
75
77
|
return;
|
|
76
78
|
}
|
|
@@ -87,7 +89,7 @@ function checkOSCommand(context, call) {
|
|
|
87
89
|
}
|
|
88
90
|
function isQuestionable(method, [command, ...otherArguments]) {
|
|
89
91
|
// if command is hardcoded => no issue
|
|
90
|
-
if (!command || (0,
|
|
92
|
+
if (!command || (0, ast_js_1.isLiteral)(command) || (0, ast_js_1.isStaticTemplateLiteral)(command)) {
|
|
91
93
|
return false;
|
|
92
94
|
}
|
|
93
95
|
// for `spawn` and `execFile`, `shell` option must be set to `true`
|
|
@@ -100,5 +102,5 @@ function containsShellOption(otherArguments) {
|
|
|
100
102
|
return otherArguments.some(arg => arg.type === 'ObjectExpression' &&
|
|
101
103
|
arg.properties
|
|
102
104
|
.filter(v => v.type === 'Property')
|
|
103
|
-
.some(({ key, value }) => (0,
|
|
105
|
+
.some(({ key, value }) => (0, ast_js_1.isIdentifier)(key, 'shell') && value.type === 'Literal' && value.value === true));
|
|
104
106
|
}
|
package/cjs/S4782/rule.js
CHANGED
|
@@ -51,12 +51,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const parser_services_js_1 = require("../helpers/parser-services.js");
|
|
56
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
59
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, { hasSuggestions: true }),
|
|
58
60
|
create(context) {
|
|
59
|
-
if (!(0,
|
|
61
|
+
if (!(0, parser_services_js_1.isRequiredParserServices)(context.sourceCode.parserServices)) {
|
|
60
62
|
return {};
|
|
61
63
|
}
|
|
62
64
|
const compilerOptions = context.sourceCode.parserServices.program.getCompilerOptions();
|
|
@@ -72,11 +74,11 @@ exports.rule = {
|
|
|
72
74
|
const typeNode = getUndefinedTypeAnnotation(tsNode.typeAnnotation);
|
|
73
75
|
if (typeNode) {
|
|
74
76
|
const suggest = getQuickFixSuggestions(context, optionalToken, typeNode);
|
|
75
|
-
(0,
|
|
77
|
+
(0, location_js_1.report)(context, {
|
|
76
78
|
message: "Consider removing 'undefined' type or '?' specifier, one of them is redundant.",
|
|
77
79
|
loc: optionalToken.loc,
|
|
78
80
|
suggest,
|
|
79
|
-
}, [(0,
|
|
81
|
+
}, [(0, location_js_1.toSecondaryLocation)(typeNode)]);
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
84
|
return {
|
package/cjs/S4784/rule.js
CHANGED
|
@@ -51,13 +51,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
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 stringMethods = ['match', 'search', 'split'];
|
|
57
58
|
const minPatternLength = 3;
|
|
58
59
|
const specialChars = new Set(['+', '*', '{']);
|
|
59
60
|
exports.rule = {
|
|
60
|
-
meta: (0,
|
|
61
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
61
62
|
messages: {
|
|
62
63
|
safeRegex: 'Make sure that using a regular expression is safe here.',
|
|
63
64
|
},
|
|
@@ -78,13 +79,13 @@ exports.rule = {
|
|
|
78
79
|
},
|
|
79
80
|
CallExpression(node) {
|
|
80
81
|
const { callee, arguments: args } = node;
|
|
81
|
-
if ((0,
|
|
82
|
+
if ((0, ast_js_1.isMemberWithProperty)(callee, ...stringMethods)) {
|
|
82
83
|
checkFirstArgument(args, context);
|
|
83
84
|
}
|
|
84
85
|
},
|
|
85
86
|
NewExpression(node) {
|
|
86
87
|
const { callee, arguments: args } = node;
|
|
87
|
-
if ((0,
|
|
88
|
+
if ((0, ast_js_1.isIdentifier)(callee, 'RegExp')) {
|
|
88
89
|
checkFirstArgument(args, context);
|
|
89
90
|
}
|
|
90
91
|
},
|
package/cjs/S4787/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
|
|
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");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const getEncryptionRuleModule = (clientSideMethods, serverSideMethods) => ({
|
|
57
|
-
meta: (0,
|
|
59
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
60
|
messages: {
|
|
59
61
|
safeEncryption: 'Make sure that encrypting data is safe here.',
|
|
60
62
|
},
|
|
@@ -71,8 +73,8 @@ const getEncryptionRuleModule = (clientSideMethods, serverSideMethods) => ({
|
|
|
71
73
|
// detect 'SubtleCrypto' object
|
|
72
74
|
// which can be retrieved by 'crypto.subtle' or 'window.crypto.subtle'
|
|
73
75
|
const { object, property } = node;
|
|
74
|
-
if ((0,
|
|
75
|
-
((0,
|
|
76
|
+
if ((0, ast_js_1.isIdentifier)(property, 'subtle') &&
|
|
77
|
+
((0, ast_js_1.isIdentifier)(object, 'crypto') || (0, ast_js_1.isMemberWithProperty)(object, 'crypto'))) {
|
|
76
78
|
usingCryptoInFile = true;
|
|
77
79
|
}
|
|
78
80
|
},
|
|
@@ -91,7 +93,7 @@ const getEncryptionRuleModule = (clientSideMethods, serverSideMethods) => ({
|
|
|
91
93
|
},
|
|
92
94
|
});
|
|
93
95
|
function checkForServerSide(callee, context, serverSideMethods) {
|
|
94
|
-
const fqn = (0,
|
|
96
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, callee);
|
|
95
97
|
if (serverSideMethods.some(method => fqn === `crypto.${method}`)) {
|
|
96
98
|
context.report({
|
|
97
99
|
messageId: 'safeEncryption',
|
|
@@ -100,8 +102,8 @@ function checkForServerSide(callee, context, serverSideMethods) {
|
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
function checkForClientSide(callee, context, clientSideMethods) {
|
|
103
|
-
if ((0,
|
|
104
|
-
(0,
|
|
105
|
+
if ((0, ast_js_1.isIdentifier)(callee, ...clientSideMethods) ||
|
|
106
|
+
(0, ast_js_1.isMemberWithProperty)(callee, ...clientSideMethods)) {
|
|
105
107
|
context.report({
|
|
106
108
|
messageId: 'safeEncryption',
|
|
107
109
|
node: callee,
|
package/cjs/S4790/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
|
|
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");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const message = 'Make sure this weak hash algorithm is not used in a sensitive context here.';
|
|
57
59
|
const CRYPTO_UNSECURE_HASH_ALGORITHMS = new Set([
|
|
@@ -70,7 +72,7 @@ const CRYPTO_UNSECURE_HASH_ALGORITHMS = new Set([
|
|
|
70
72
|
]);
|
|
71
73
|
const SUBTLE_UNSECURE_HASH_ALGORITHMS = new Set(['sha-1']);
|
|
72
74
|
exports.rule = {
|
|
73
|
-
meta: (0,
|
|
75
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
74
76
|
create(context) {
|
|
75
77
|
function checkNodejsCrypto(fqn, node) {
|
|
76
78
|
// crypto#createHash
|
|
@@ -87,8 +89,8 @@ exports.rule = {
|
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
91
|
function checkUnsecureAlgorithm(method, hash, unsecureAlgorithms) {
|
|
90
|
-
const hashAlgorithm = (0,
|
|
91
|
-
if ((0,
|
|
92
|
+
const hashAlgorithm = (0, ast_js_1.getUniqueWriteUsageOrNode)(context, hash);
|
|
93
|
+
if ((0, ast_js_1.isStringLiteral)(hashAlgorithm) &&
|
|
92
94
|
unsecureAlgorithms.has(hashAlgorithm.value.toLocaleLowerCase())) {
|
|
93
95
|
context.report({
|
|
94
96
|
message,
|
|
@@ -99,7 +101,7 @@ exports.rule = {
|
|
|
99
101
|
return {
|
|
100
102
|
'CallExpression[arguments.length > 0]': (node) => {
|
|
101
103
|
const callExpr = node;
|
|
102
|
-
const fqn = (0,
|
|
104
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, callExpr);
|
|
103
105
|
checkNodejsCrypto(fqn, callExpr);
|
|
104
106
|
checkSubtleCrypto(fqn, callExpr);
|
|
105
107
|
},
|
package/cjs/S4798/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
|
|
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,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
provideDefault: "Provide a default value for '{{parameter}}' so that " +
|
|
60
60
|
'the logic of the function is more evident when this parameter is missing. ' +
|
package/cjs/S4817/rule.js
CHANGED
|
@@ -51,13 +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
|
|
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");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const xpathModule = 'xpath';
|
|
57
59
|
const xpathEvalMethods = ['select', 'select1', 'evaluate'];
|
|
58
60
|
const ieEvalMethods = ['selectNodes', 'SelectSingleNode'];
|
|
59
61
|
exports.rule = {
|
|
60
|
-
meta: (0,
|
|
62
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
61
63
|
messages: {
|
|
62
64
|
checkXPath: 'Make sure that executing this XPATH expression is safe.',
|
|
63
65
|
},
|
|
@@ -65,7 +67,7 @@ exports.rule = {
|
|
|
65
67
|
create(context) {
|
|
66
68
|
return {
|
|
67
69
|
MemberExpression: (node) => {
|
|
68
|
-
if ((0,
|
|
70
|
+
if ((0, ast_js_1.isMemberExpression)(node, 'document', 'evaluate')) {
|
|
69
71
|
context.report({ messageId: 'checkXPath', node });
|
|
70
72
|
}
|
|
71
73
|
},
|
|
@@ -74,17 +76,17 @@ exports.rule = {
|
|
|
74
76
|
},
|
|
75
77
|
};
|
|
76
78
|
function checkCallExpression({ callee, arguments: args }, context) {
|
|
77
|
-
if (args.length > 0 && (0,
|
|
79
|
+
if (args.length > 0 && (0, ast_js_1.isLiteral)(args[0])) {
|
|
78
80
|
return;
|
|
79
81
|
}
|
|
80
82
|
// IE
|
|
81
|
-
if ((0,
|
|
83
|
+
if ((0, ast_js_1.isMemberWithProperty)(callee, ...ieEvalMethods) && args.length === 1) {
|
|
82
84
|
context.report({ messageId: 'checkXPath', node: callee });
|
|
83
85
|
return;
|
|
84
86
|
}
|
|
85
87
|
// Document.evaluate
|
|
86
|
-
if ((0,
|
|
87
|
-
!(0,
|
|
88
|
+
if ((0, ast_js_1.isMemberWithProperty)(callee, 'evaluate') &&
|
|
89
|
+
!(0, ast_js_1.isMemberExpression)(callee, 'document', 'evaluate') &&
|
|
88
90
|
args.length >= 4) {
|
|
89
91
|
const resultTypeArgument = args[3];
|
|
90
92
|
const argumentAsText = context.sourceCode.getText(resultTypeArgument);
|
|
@@ -94,7 +96,7 @@ function checkCallExpression({ callee, arguments: args }, context) {
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
// "xpath" module
|
|
97
|
-
const fqn = (0,
|
|
99
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, callee);
|
|
98
100
|
if (xpathEvalMethods.some(method => fqn === `${xpathModule}.${method}`)) {
|
|
99
101
|
context.report({ messageId: 'checkXPath', node: callee });
|
|
100
102
|
}
|
package/cjs/S4818/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
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const module_js_1 = require("../helpers/module.js");
|
|
55
56
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
57
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
59
|
messages: {
|
|
59
60
|
safeSocket: 'Make sure that sockets are used safely here.',
|
|
60
61
|
},
|
|
@@ -67,7 +68,7 @@ exports.rule = {
|
|
|
67
68
|
},
|
|
68
69
|
};
|
|
69
70
|
function checkCallExpression(callExpr, context, ...sensitiveFqns) {
|
|
70
|
-
const callFqn = (0,
|
|
71
|
+
const callFqn = (0, module_js_1.getFullyQualifiedName)(context, callExpr);
|
|
71
72
|
if (callFqn !== null && sensitiveFqns.includes(callFqn)) {
|
|
72
73
|
context.report({ messageId: 'safeSocket', node: callExpr.callee });
|
|
73
74
|
}
|
package/cjs/S4822/rule.js
CHANGED
|
@@ -51,13 +51,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
56
|
+
const parser_services_js_1 = require("../helpers/parser-services.js");
|
|
57
|
+
const type_js_1 = require("../helpers/type.js");
|
|
58
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
59
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
60
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
61
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
58
62
|
create(context) {
|
|
59
63
|
const services = context.sourceCode.parserServices;
|
|
60
|
-
if ((0,
|
|
64
|
+
if ((0, parser_services_js_1.isRequiredParserServices)(services)) {
|
|
61
65
|
return {
|
|
62
66
|
TryStatement: (node) => visitTryStatement(node, context, services),
|
|
63
67
|
};
|
|
@@ -74,7 +78,7 @@ function visitTryStatement(tryStmt, context, services) {
|
|
|
74
78
|
let hasPotentiallyThrowingCalls = false;
|
|
75
79
|
for (const callLikeExpr of CallLikeExpressionVisitor.getCallExpressions(tryStmt.block, context)) {
|
|
76
80
|
if (callLikeExpr.type === 'AwaitExpression' ||
|
|
77
|
-
!(0,
|
|
81
|
+
!(0, type_js_1.isThenable)(callLikeExpr, services)) {
|
|
78
82
|
hasPotentiallyThrowingCalls = true;
|
|
79
83
|
continue;
|
|
80
84
|
}
|
|
@@ -111,7 +115,7 @@ class CallLikeExpressionVisitor {
|
|
|
111
115
|
case 'ArrowFunctionExpression':
|
|
112
116
|
return;
|
|
113
117
|
}
|
|
114
|
-
for (const childNode of (0,
|
|
118
|
+
for (const childNode of (0, ancestor_js_1.childrenOf)(node, context.sourceCode.visitorKeys)) {
|
|
115
119
|
visitNode(childNode);
|
|
116
120
|
}
|
|
117
121
|
};
|
|
@@ -123,10 +127,10 @@ function checkForWrongCatch(tryStmt, openPromises, context) {
|
|
|
123
127
|
const ending = openPromises.length > 1 ? 's' : '';
|
|
124
128
|
const message = `Consider using 'await' for the promise${ending} inside this 'try' or replace it with 'Promise.prototype.catch(...)' usage${ending}.`;
|
|
125
129
|
const token = context.sourceCode.getFirstToken(tryStmt);
|
|
126
|
-
(0,
|
|
130
|
+
(0, location_js_1.report)(context, {
|
|
127
131
|
message,
|
|
128
132
|
loc: token.loc,
|
|
129
|
-
}, openPromises.map(node => (0,
|
|
133
|
+
}, openPromises.map(node => (0, location_js_1.toSecondaryLocation)(node, 'Promise')));
|
|
130
134
|
}
|
|
131
135
|
}
|
|
132
136
|
function checkForUselessCatch(tryStmt, openPromises, capturedPromises, context) {
|
|
@@ -134,10 +138,10 @@ function checkForUselessCatch(tryStmt, openPromises, capturedPromises, context)
|
|
|
134
138
|
const ending = capturedPromises.length > 1 ? 's' : '';
|
|
135
139
|
const message = `Consider removing this 'try' statement as promise${ending} rejection is already captured by '.catch()' method.`;
|
|
136
140
|
const token = context.sourceCode.getFirstToken(tryStmt);
|
|
137
|
-
(0,
|
|
141
|
+
(0, location_js_1.report)(context, {
|
|
138
142
|
message,
|
|
139
143
|
loc: token.loc,
|
|
140
|
-
}, capturedPromises.map(node => (0,
|
|
144
|
+
}, capturedPromises.map(node => (0, location_js_1.toSecondaryLocation)(node, 'Caught promise')));
|
|
141
145
|
}
|
|
142
146
|
}
|
|
143
147
|
function isAwaitLike(callExpr) {
|
package/cjs/S4823/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
|
|
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
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
59
|
messages: {
|
|
59
60
|
safeArg: `Make sure that command line arguments are used safely here.`,
|
|
60
61
|
},
|
|
@@ -62,7 +63,7 @@ exports.rule = {
|
|
|
62
63
|
create(context) {
|
|
63
64
|
return {
|
|
64
65
|
MemberExpression(node) {
|
|
65
|
-
if ((0,
|
|
66
|
+
if ((0, ast_js_1.isMemberExpression)(node, 'process', 'argv')) {
|
|
66
67
|
context.report({
|
|
67
68
|
messageId: 'safeArg',
|
|
68
69
|
node,
|
package/cjs/S4829/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
|
|
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
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
59
|
messages: {
|
|
59
60
|
safeStdin: `Make sure that reading the standard input is safe here.`,
|
|
60
61
|
},
|
|
@@ -62,7 +63,7 @@ exports.rule = {
|
|
|
62
63
|
create(context) {
|
|
63
64
|
return {
|
|
64
65
|
MemberExpression(node) {
|
|
65
|
-
if ((0,
|
|
66
|
+
if ((0, ast_js_1.isMemberExpression)(node, 'process', 'stdin')) {
|
|
66
67
|
context.report({
|
|
67
68
|
messageId: 'safeStdin',
|
|
68
69
|
node,
|
package/cjs/S4830/rule.js
CHANGED
|
@@ -51,10 +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
|
|
54
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
56
|
+
const module_js_1 = require("../helpers/module.js");
|
|
57
|
+
const ast_js_1 = require("../helpers/ast.js");
|
|
55
58
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
59
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
60
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
58
61
|
create(context) {
|
|
59
62
|
const MESSAGE = 'Enable server certificate validation on this SSL/TLS connection.';
|
|
60
63
|
const SECONDARY_MESSAGE = 'Set "rejectUnauthorized" to "true".';
|
|
@@ -64,17 +67,17 @@ exports.rule = {
|
|
|
64
67
|
}
|
|
65
68
|
const sensitiveArgument = callExpression.arguments[sensitiveArgumentIndex];
|
|
66
69
|
const secondaryLocations = [];
|
|
67
|
-
const argumentValue = (0,
|
|
70
|
+
const argumentValue = (0, ast_js_1.getValueOfExpression)(context, sensitiveArgument, 'ObjectExpression');
|
|
68
71
|
if (!argumentValue) {
|
|
69
72
|
return;
|
|
70
73
|
}
|
|
71
74
|
if (sensitiveArgument !== argumentValue) {
|
|
72
|
-
secondaryLocations.push((0,
|
|
75
|
+
secondaryLocations.push((0, location_js_1.toSecondaryLocation)(argumentValue));
|
|
73
76
|
}
|
|
74
|
-
const unsafeRejectUnauthorizedConfiguration = (0,
|
|
77
|
+
const unsafeRejectUnauthorizedConfiguration = (0, ast_js_1.getPropertyWithValue)(context, argumentValue, 'rejectUnauthorized', false);
|
|
75
78
|
if (unsafeRejectUnauthorizedConfiguration) {
|
|
76
|
-
secondaryLocations.push((0,
|
|
77
|
-
(0,
|
|
79
|
+
secondaryLocations.push((0, location_js_1.toSecondaryLocation)(unsafeRejectUnauthorizedConfiguration, SECONDARY_MESSAGE));
|
|
80
|
+
(0, location_js_1.report)(context, {
|
|
78
81
|
node: callExpression.callee,
|
|
79
82
|
message: MESSAGE,
|
|
80
83
|
}, secondaryLocations);
|
|
@@ -83,7 +86,7 @@ exports.rule = {
|
|
|
83
86
|
return {
|
|
84
87
|
CallExpression: (node) => {
|
|
85
88
|
const callExpression = node;
|
|
86
|
-
const fqn = (0,
|
|
89
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, callExpression);
|
|
87
90
|
if (fqn === 'https.request') {
|
|
88
91
|
checkSensitiveArgument(callExpression, 0);
|
|
89
92
|
}
|
package/cjs/S5042/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
|
|
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");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
59
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
60
|
messages: {
|
|
59
61
|
safeExpanding: 'Make sure that expanding this archive file is safe here.',
|
|
60
62
|
},
|
|
@@ -66,7 +68,7 @@ exports.rule = {
|
|
|
66
68
|
if (!firstArg) {
|
|
67
69
|
return false;
|
|
68
70
|
}
|
|
69
|
-
const firstArgValue = (0,
|
|
71
|
+
const firstArgValue = (0, ast_js_1.getValueOfExpression)(context, firstArg, 'ObjectExpression');
|
|
70
72
|
return (!!firstArgValue && !firstArgValue.properties.some(prop => canBeProperty(prop, 'filter')));
|
|
71
73
|
}
|
|
72
74
|
return false;
|
|
@@ -77,7 +79,7 @@ exports.rule = {
|
|
|
77
79
|
if (!secondArg) {
|
|
78
80
|
return false;
|
|
79
81
|
}
|
|
80
|
-
const secondArgValue = (0,
|
|
82
|
+
const secondArgValue = (0, ast_js_1.getValueOfExpression)(context, secondArg, 'ObjectExpression');
|
|
81
83
|
return (!!secondArgValue &&
|
|
82
84
|
!secondArgValue.properties.some(prop => canBeProperty(prop, 'onEntry')));
|
|
83
85
|
}
|
|
@@ -86,7 +88,7 @@ exports.rule = {
|
|
|
86
88
|
return {
|
|
87
89
|
CallExpression(node) {
|
|
88
90
|
const call = node;
|
|
89
|
-
const fqn = (0,
|
|
91
|
+
const fqn = (0, module_js_1.getFullyQualifiedName)(context, call);
|
|
90
92
|
if (isSensitiveTarCall(call, fqn) ||
|
|
91
93
|
isSensitiveExtractZipCall(call, fqn) ||
|
|
92
94
|
fqn === 'jszip.loadAsync' ||
|
|
@@ -103,6 +105,6 @@ exports.rule = {
|
|
|
103
105
|
};
|
|
104
106
|
function canBeProperty(prop, name) {
|
|
105
107
|
return (prop.type === 'SpreadElement' ||
|
|
106
|
-
(0,
|
|
107
|
-
((0,
|
|
108
|
+
(0, ast_js_1.isIdentifier)(prop.key, name) ||
|
|
109
|
+
((0, ast_js_1.isLiteral)(prop.key) && prop.key.value === name));
|
|
108
110
|
}
|