@checkdigit/eslint-plugin 7.3.0-PR.75-2d69 → 7.3.0-PR.75-4919
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 +1 -1
- package/dist-mjs/agent/add-base-path-const.mjs +2 -2
- package/dist-mjs/agent/fetch-response-body-json.mjs +86 -15
- package/dist-mjs/agent/no-fixture.mjs +2 -2
- package/dist-mjs/agent/no-service-wrapper.mjs +7 -5
- package/dist-mjs/library/tree.mjs +2 -2
- package/package.json +1 -1
- package/src/agent/add-base-path-const.ts +3 -1
- package/src/agent/fetch-response-body-json.ts +116 -15
- package/src/agent/no-fixture.ts +5 -1
- package/src/agent/no-service-wrapper.ts +6 -4
- package/src/library/tree.ts +1 -0
- package/src/no-legacy-service-typing.ts +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Copyright (c) 2021-2024 [Check Digit, LLC](https://checkdigit.com)
|
|
|
15
15
|
- `@checkdigit/no-test-import`
|
|
16
16
|
- `@checkdigit/no-promise-instance-method`
|
|
17
17
|
- `@checkdigit/invalid-json-stringify`
|
|
18
|
-
- `@checkdigit/no-
|
|
18
|
+
- `@checkdigit/no-legacy-service-typing`
|
|
19
19
|
- `@checkdigit/require-resolve-full-response`
|
|
20
20
|
- `@checkdigit/require-type-out-of-type-only-imports`
|
|
21
21
|
|
|
@@ -34,7 +34,7 @@ var rule = createRule({
|
|
|
34
34
|
}
|
|
35
35
|
const swaggerPath = getSwaggerPathByIndexFile(context.filename);
|
|
36
36
|
const swaggerFileContents = loadSwagger(swaggerPath);
|
|
37
|
-
const baseUrlLine = swaggerFileContents.split("\n").find((line) => /^\s*-\s*url:\s*\/.*$/u.test(line));
|
|
37
|
+
const baseUrlLine = swaggerFileContents.split("\n").find((line) => /^\s*-\s*url:\s*\/.*$/u.test(line) || /^basePath:.*/u.test(line));
|
|
38
38
|
const baseUrl = baseUrlLine?.split(":")[1]?.trim();
|
|
39
39
|
assert(baseUrl !== void 0);
|
|
40
40
|
const packageRoot = getProjectRootFolder(context.filename);
|
|
@@ -62,4 +62,4 @@ export {
|
|
|
62
62
|
add_base_path_const_default as default,
|
|
63
63
|
ruleId
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FkZC1iYXNlLXBhdGgtY29uc3QudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFFakMsU0FBUyxnQkFBZ0IsbUJBQTZCO0FBRXRELE9BQU8seUJBQXlCO0FBQ2hDLFNBQVMsc0JBQXNCLDJCQUEyQixnQkFBZ0IsaUJBQWlCLG1CQUFtQjtBQUV2RyxJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQW1ELFdBQVc7QUFBQSxFQUNsRSxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1Isa0JBQWtCO0FBQUEsSUFDcEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsU0FBUyxDQUFDLFlBQThCO0FBQ3RDLFlBQUksQ0FBQyxlQUFlLFFBQVEsUUFBUSxHQUFHO0FBQ3JDO0FBQUEsUUFDRjtBQUVBLGNBQU0sUUFBUSxXQUFXLFNBQVMsT0FBTyxFQUFFLFlBQVksQ0FBQztBQUN4RCxlQUFPLEtBQUs7QUFFWixjQUFNLHFCQUFxQixNQUFNLFVBQVUsS0FBSyxDQUFDLGFBQWEsU0FBUyxTQUFTLFdBQVc7QUFDM0YsWUFBSSxvQkFBb0I7QUFDdEI7QUFBQSxRQUNGO0FBRUEsY0FBTSxjQUFjLDBCQUEwQixRQUFRLFFBQVE7QUFDOUQsY0FBTSxzQkFBc0IsWUFBWSxXQUFXO0FBQ25ELGNBQU0sY0FBYyxvQkFDakIsTUFBTSxJQUFJLEVBQ1YsS0FBSyxDQUFDLFNBQVMsd0JBQXdCLEtBQUssSUFBSSxLQUFLLGdCQUFnQixLQUFLLElBQUksQ0FBQztBQUNsRixjQUFNLFVBQVUsYUFBYSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSztBQUNqRCxlQUFPLFlBQVksTUFBUztBQUU1QixjQUFNLGNBQWMscUJBQXFCLFFBQVEsUUFBUTtBQUN6RCxjQUFNLGNBQWMsS0FBSyxNQUFNLGdCQUFnQixXQUFXLENBQUM7QUFDM0QsY0FBTSxjQUFjLFlBQVksS0FBSyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pELGVBQU8sZ0JBQWdCLE1BQVM7QUFFaEMsY0FBTSxTQUFTLFdBQVcsV0FBVyxjQUFjLE9BQU87QUFFMUQsY0FBTSxzQkFBc0IsUUFBUSxLQUFLLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxlQUFlLGlCQUFpQjtBQUMxRyxlQUFPLG1CQUFtQjtBQUUxQixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsVUFDTixJQUFJLE9BQU87QUFDVCxtQkFBTyxNQUFNLGdCQUFnQixxQkFBcUI7QUFBQSw0QkFBK0IsTUFBTTtBQUFBLENBQU07QUFBQSxVQUMvRjtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLDhCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// src/agent/fetch-response-body-json.ts
|
|
2
|
+
import { strict as assert } from "node:assert";
|
|
2
3
|
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
3
4
|
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
5
|
+
import { getAncestor } from "../library/ts-tree.mjs";
|
|
4
6
|
var ruleId = "fetch-response-body-json";
|
|
5
7
|
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
8
|
var rule = createRule({
|
|
@@ -21,29 +23,47 @@ var rule = createRule({
|
|
|
21
23
|
create(context) {
|
|
22
24
|
const parserServices = ESLintUtils.getParserServices(context);
|
|
23
25
|
const typeChecker = parserServices.program.getTypeChecker();
|
|
24
|
-
const
|
|
26
|
+
const allChanges = /* @__PURE__ */ new Map();
|
|
25
27
|
return {
|
|
26
|
-
'MemberExpression[property.name="body"]': (
|
|
28
|
+
'MemberExpression[property.name="body"]': (responseBodyNode) => {
|
|
27
29
|
try {
|
|
28
|
-
const responseNode = parserServices.esTreeNodeToTSNodeMap.get(
|
|
30
|
+
const responseNode = parserServices.esTreeNodeToTSNodeMap.get(responseBodyNode.object);
|
|
29
31
|
const responseType = typeChecker.getTypeAtLocation(responseNode);
|
|
30
32
|
const shouldReplace = responseType.getProperties().some((symbol) => symbol.name === "body") && responseType.getProperties().some((symbol) => symbol.name === "json");
|
|
31
33
|
if (shouldReplace) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
const enclosingFunction = getAncestor(
|
|
35
|
+
responseBodyNode,
|
|
36
|
+
(node) => node.type === AST_NODE_TYPES.ArrowFunctionExpression || node.type === AST_NODE_TYPES.FunctionExpression || node.type === AST_NODE_TYPES.FunctionDeclaration
|
|
37
|
+
);
|
|
38
|
+
const enclosingStatement = getAncestor(
|
|
39
|
+
responseBodyNode,
|
|
40
|
+
(node) => (node.type === AST_NODE_TYPES.VariableDeclaration || node.type === AST_NODE_TYPES.ExpressionStatement || node.type === AST_NODE_TYPES.ReturnStatement) && node.parent.type === AST_NODE_TYPES.BlockStatement
|
|
41
|
+
);
|
|
42
|
+
const enclosingStatementIndex = enclosingFunction.body.body.indexOf(
|
|
43
|
+
enclosingStatement
|
|
44
|
+
);
|
|
45
|
+
const responseVariableName = responseBodyNode.object.name;
|
|
46
|
+
const isResponseBodyVariableDeclared = enclosingStatement.type === AST_NODE_TYPES.VariableDeclaration && enclosingStatement.declarations.some((declaration) => declaration.init === responseBodyNode);
|
|
47
|
+
const responseBodyVariableName = isResponseBodyVariableDeclared ? enclosingStatement.declarations.find((declaration) => declaration.init === responseBodyNode)?.id : `${responseBodyNode.object.name}Body`;
|
|
48
|
+
const change = {
|
|
49
|
+
enclosingFunction,
|
|
50
|
+
enclosingStatement,
|
|
51
|
+
enclosingStatementIndex,
|
|
52
|
+
responseVariableName,
|
|
53
|
+
responseBodyNode,
|
|
54
|
+
responseBodyVariableName,
|
|
55
|
+
isResponseBodyVariableDeclared
|
|
56
|
+
};
|
|
57
|
+
const changesByFunction = allChanges.get(enclosingFunction) ?? /* @__PURE__ */ new Map();
|
|
58
|
+
const changesByResponse = changesByFunction.get(responseVariableName) ?? [];
|
|
59
|
+
changesByResponse.push(change);
|
|
60
|
+
changesByFunction.set(responseVariableName, changesByResponse);
|
|
61
|
+
allChanges.set(enclosingFunction, changesByFunction);
|
|
42
62
|
}
|
|
43
63
|
} catch (error) {
|
|
44
64
|
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
45
65
|
context.report({
|
|
46
|
-
node:
|
|
66
|
+
node: responseBodyNode,
|
|
47
67
|
messageId: "unknownError",
|
|
48
68
|
data: {
|
|
49
69
|
fileName: context.filename,
|
|
@@ -51,6 +71,57 @@ var rule = createRule({
|
|
|
51
71
|
}
|
|
52
72
|
});
|
|
53
73
|
}
|
|
74
|
+
},
|
|
75
|
+
"Program:exit": () => {
|
|
76
|
+
if (allChanges.size === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const fixes = [];
|
|
80
|
+
for (const changesByFunction of allChanges.values()) {
|
|
81
|
+
for (const changesByResponse of changesByFunction.values()) {
|
|
82
|
+
const orderedChanges = changesByResponse.sort(
|
|
83
|
+
(changeA, changeB) => changeA.enclosingStatementIndex - changeB.enclosingStatementIndex
|
|
84
|
+
);
|
|
85
|
+
const firstChange = orderedChanges[0];
|
|
86
|
+
assert(firstChange);
|
|
87
|
+
const {
|
|
88
|
+
responseBodyNode,
|
|
89
|
+
responseVariableName,
|
|
90
|
+
responseBodyVariableName,
|
|
91
|
+
isResponseBodyVariableDeclared,
|
|
92
|
+
enclosingStatement
|
|
93
|
+
} = firstChange;
|
|
94
|
+
let remainingChanges;
|
|
95
|
+
if (!isResponseBodyVariableDeclared) {
|
|
96
|
+
fixes.push({
|
|
97
|
+
node: enclosingStatement,
|
|
98
|
+
text: `const ${responseBodyVariableName} = await ${responseVariableName}.json();
|
|
99
|
+
`,
|
|
100
|
+
insert: true
|
|
101
|
+
});
|
|
102
|
+
remainingChanges = orderedChanges;
|
|
103
|
+
} else {
|
|
104
|
+
fixes.push({
|
|
105
|
+
node: responseBodyNode,
|
|
106
|
+
text: `await ${responseVariableName}.json()`,
|
|
107
|
+
insert: false
|
|
108
|
+
});
|
|
109
|
+
remainingChanges = orderedChanges.slice(1);
|
|
110
|
+
}
|
|
111
|
+
for (const change of remainingChanges) {
|
|
112
|
+
fixes.push({ node: change.responseBodyNode, text: responseBodyVariableName, insert: false });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const fix of fixes) {
|
|
117
|
+
context.report({
|
|
118
|
+
node: fix.node,
|
|
119
|
+
messageId: "replaceBodyWithJson",
|
|
120
|
+
fix(fixer) {
|
|
121
|
+
return fix.insert ? fixer.insertTextBefore(fix.node, fix.text) : fixer.replaceText(fix.node, fix.text);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
54
125
|
}
|
|
55
126
|
};
|
|
56
127
|
}
|
|
@@ -60,4 +131,4 @@ export {
|
|
|
60
131
|
fetch_response_body_json_default as default,
|
|
61
132
|
ruleId
|
|
62
133
|
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZldGNoLXJlc3BvbnNlLWJvZHktanNvbi50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxTQUFTLGdCQUFnQixtQkFBNkI7QUFFdEQsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUyxtQkFBbUI7QUFFckIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFhOUUsSUFBTSxPQUF1RSxXQUFXO0FBQUEsRUFDdEYsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLHFCQUFxQjtBQUFBLE1BQ3JCLGNBQWM7QUFBQSxJQUNoQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGlCQUFpQixZQUFZLGtCQUFrQixPQUFPO0FBQzVELFVBQU0sY0FBYyxlQUFlLFFBQVEsZUFBZTtBQUMxRCxVQUFNLGFBQWEsb0JBQUksSUFBMEM7QUFFakUsV0FBTztBQUFBLE1BQ0wsMENBQTBDLENBQUMscUJBQWdEO0FBQ3pGLFlBQUk7QUFDRixnQkFBTSxlQUFlLGVBQWUsc0JBQXNCLElBQUksaUJBQWlCLE1BQU07QUFDckYsZ0JBQU0sZUFBZSxZQUFZLGtCQUFrQixZQUFZO0FBRS9ELGdCQUFNLGdCQUNKLGFBQWEsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLE9BQU8sU0FBUyxNQUFNLEtBQ3BFLGFBQWEsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLE9BQU8sU0FBUyxNQUFNO0FBRXRFLGNBQUksZUFBZTtBQUNqQixrQkFBTSxvQkFBb0I7QUFBQSxjQUN4QjtBQUFBLGNBQ0EsQ0FBQyxT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
|
|
@@ -22,7 +22,7 @@ function analyzeFixtureCall(call, results, sourceCode) {
|
|
|
22
22
|
if (parent.type === "ReturnStatement") {
|
|
23
23
|
results.fixtureNode = call;
|
|
24
24
|
results.rootNode = parent;
|
|
25
|
-
} else if (parent.type === "ArrayExpression" || parent.type === "CallExpression") {
|
|
25
|
+
} else if (parent.type === "ArrayExpression" || parent.type === "CallExpression" || parent.type === "ArrowFunctionExpression") {
|
|
26
26
|
results.fixtureNode = call;
|
|
27
27
|
results.rootNode = call;
|
|
28
28
|
} else if (parent.type === "AwaitExpression") {
|
|
@@ -324,4 +324,4 @@ export {
|
|
|
324
324
|
no_fixture_default as default,
|
|
325
325
|
ruleId
|
|
326
326
|
};
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZpeHR1cmUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFhakMsT0FBa0Q7QUFFbEQ7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDhCQUE4QixxQkFBcUI7QUFDNUQsU0FBUyw0Q0FBNEM7QUFFOUMsSUFBTSxTQUFTO0FBZXRCLFNBQVMsbUJBQW1CLE1BQTRCLFNBQWlDLFlBQXdCO0FBQy9HLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsU0FBTyxHQUFHLFFBQVEscURBQXFEO0FBRXZFLE1BQUk7QUFDSixNQUFJLE9BQU8sU0FBUyxtQkFBbUI7QUFFckMsWUFBUSxjQUFjO0FBQ3RCLFlBQVEsV0FBVztBQUFBLEVBQ3JCLFdBQVcsT0FBTyxTQUFTLHFCQUFxQixPQUFPLFNBQVMsa0JBQWtCO0FBRWhGLFlBQVEsY0FBYztBQUN0QixZQUFRLFdBQVc7QUFBQSxFQUNyQixXQUFXLE9BQU8sU0FBUyxtQkFBbUI7QUFDNUMsWUFBUSxjQUFjO0FBQ3RCLFVBQU0scUJBQXFCLHNCQUFzQixNQUFNO0FBQ3ZELFdBQU8sR0FBRyxrQkFBa0I7QUFDNUIsVUFBTSxjQUFjLFVBQVUsTUFBTTtBQUNwQyxRQUFJLGFBQWEsU0FBUyxvQkFBb0I7QUFDNUMsY0FBUSxXQUFXO0FBQ25CLGNBQVEsc0JBQXNCO0FBQzlCLFVBQUksWUFBWSxTQUFTLFNBQVMsZ0JBQWdCLFlBQVksU0FBUyxTQUFTLFFBQVE7QUFDdEYsZ0JBQVEsc0JBQXNCO0FBQUEsTUFDaEM7QUFBQSxJQUNGLFdBQVcsbUJBQW1CLFNBQVMsdUJBQXVCO0FBQzVELGNBQVEsc0JBQXNCO0FBQzlCLGNBQVEsV0FBVztBQUFBLElB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
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZpeHR1cmUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFhakMsT0FBa0Q7QUFFbEQ7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDhCQUE4QixxQkFBcUI7QUFDNUQsU0FBUyw0Q0FBNEM7QUFFOUMsSUFBTSxTQUFTO0FBZXRCLFNBQVMsbUJBQW1CLE1BQTRCLFNBQWlDLFlBQXdCO0FBQy9HLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsU0FBTyxHQUFHLFFBQVEscURBQXFEO0FBRXZFLE1BQUk7QUFDSixNQUFJLE9BQU8sU0FBUyxtQkFBbUI7QUFFckMsWUFBUSxjQUFjO0FBQ3RCLFlBQVEsV0FBVztBQUFBLEVBQ3JCLFdBQ0UsT0FBTyxTQUFTLHFCQUNoQixPQUFPLFNBQVMsb0JBQ2hCLE9BQU8sU0FBUywyQkFDaEI7QUFFQSxZQUFRLGNBQWM7QUFDdEIsWUFBUSxXQUFXO0FBQUEsRUFDckIsV0FBVyxPQUFPLFNBQVMsbUJBQW1CO0FBQzVDLFlBQVEsY0FBYztBQUN0QixVQUFNLHFCQUFxQixzQkFBc0IsTUFBTTtBQUN2RCxXQUFPLEdBQUcsa0JBQWtCO0FBQzVCLFVBQU0sY0FBYyxVQUFVLE1BQU07QUFDcEMsUUFBSSxhQUFhLFNBQVMsb0JBQW9CO0FBQzVDLGNBQVEsV0FBVztBQUNuQixjQUFRLHNCQUFzQjtBQUM5QixVQUFJLFlBQVksU0FBUyxTQUFTLGdCQUFnQixZQUFZLFNBQVMsU0FBUyxRQUFRO0FBQ3RGLGdCQUFRLHNCQUFzQjtBQUFBLE1BQ2hDO0FBQUEsSUFDRixXQUFXLG1CQUFtQixTQUFTLHVCQUF1QjtBQUM1RCxjQUFRLHNCQUFzQjtBQUM5Qixj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
|
|
@@ -38,10 +38,12 @@ var rule = createRule({
|
|
|
38
38
|
const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
|
|
39
39
|
if (foundVariable) {
|
|
40
40
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
if (variableDefinition !== void 0) {
|
|
42
|
+
const variableDefinitionNode = variableDefinition.node;
|
|
43
|
+
assert.ok(variableDefinitionNode.init, "Variable definition node has no init property");
|
|
44
|
+
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
return false;
|
|
@@ -180,4 +182,4 @@ export {
|
|
|
180
182
|
no_service_wrapper_default as default,
|
|
181
183
|
ruleId
|
|
182
184
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLXNlcnZpY2Utd3JhcHBlci50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxTQUFTLHNCQUFrQztBQUMzQyxTQUFTLGdCQUFnQixtQkFBNkI7QUFFdEQsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxxQkFBcUIsMENBQTBDO0FBRWpFLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBd0YsV0FBVztBQUFBLEVBQ3ZHLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixtQkFBbUI7QUFBQSxNQUNuQixnQkFDRTtBQUFBLE1BQ0YsY0FDRTtBQUFBLElBQ0o7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxlQUFlLFdBQVc7QUFDaEMsVUFBTSxnQkFBZ0IsWUFBWSxrQkFBa0IsT0FBTztBQUMzRCxVQUFNLGNBQWMsY0FBYyxRQUFRLGVBQWU7QUFFekQsYUFBUyxtQkFBbUIsYUFBd0MsT0FBYztBQUNoRixVQUNHLGFBQWEsU0FBUyxlQUFlLFdBQVcsT0FBTyxZQUFZLFVBQVUsWUFDOUUsYUFBYSxTQUFTLGVBQWUsaUJBQ3JDO0FBQ0EsY0FBTSxVQUFVLFdBQVcsUUFBUSxXQUFXO0FBQzlDLGVBQU8sb0JBQW9CLE9BQU87QUFBQSxNQUNwQztBQUVBLFVBQUksYUFBYSxTQUFTLGVBQWUsWUFBWTtBQUNuRCxjQUFNLGdCQUFnQixNQUFNLFVB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
|
|
@@ -37,7 +37,7 @@ function isUsedInArrayOrAsArgument(node) {
|
|
|
37
37
|
if (!parent) {
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
|
-
if (parent.type === "ArrayExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
|
|
40
|
+
if (parent.type === "ArrayExpression" || parent.type === "ArrowFunctionExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
|
|
41
41
|
return true;
|
|
42
42
|
}
|
|
43
43
|
return isUsedInArrayOrAsArgument(parent);
|
|
@@ -61,4 +61,4 @@ export {
|
|
|
61
61
|
isBlockStatement,
|
|
62
62
|
isUsedInArrayOrAsArgument
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQk8sU0FBUyxVQUFVLE1BQXFDO0FBQzdELFNBQVEsS0FBd0M7QUFDbEQ7QUFFTyxTQUFTLFlBQ2QsTUFDQSxTQUNBLGFBQ2tCO0FBQ2xCLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sWUFBWSxZQUFZLE9BQU8sU0FBUyxTQUFTO0FBQ2pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLGNBQWMsUUFBUSxNQUFNLEdBQUc7QUFDM0QsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sU0FBUyxhQUFhO0FBQ3pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxnQkFBZ0IsY0FBYyxZQUFZLE1BQU0sR0FBRztBQUNuRSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBWSxRQUFRLFNBQVMsV0FBVztBQUNqRDtBQUVPLFNBQVMsaUJBQWlCLE1BQXFCO0FBQ3BELFNBQU8sS0FBSyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLGFBQWE7QUFDNUU7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPLFlBQVksTUFBTSxnQkFBZ0I7QUFDM0M7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPO0FBQUEsSUFBWTtBQUFBLElBQU0sQ0FBQyxlQUN4QixDQUFDLHNCQUFzQix1QkFBdUIsMkJBQTJCLFNBQVMsRUFBRSxTQUFTLFdBQVcsSUFBSTtBQUFBLEVBQzlHO0FBQ0Y7QUFFTyxTQUFTLDBCQUEwQixNQUFxQjtBQUM3RCxNQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUNFLE9BQU8sU0FBUyxxQkFDaEIsT0FBTyxTQUFTLDZCQUNmLE9BQU8sU0FBUyxvQkFBb0IsT0FBTyxVQUFVLFNBQVMsSUFBa0IsR0FDakY7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sMEJBQTBCLE1BQU07QUFDekM7QUFFTyxTQUFTLHFCQUNkLE1BS1k7QUFDWixNQUNFLEtBQUssU0FBUyx5QkFDZCxLQUFLLFNBQVMsd0JBQ2QsS0FBSyxTQUFTLDJCQUNkO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxFQUNGO0FBQ0EsU0FBTyxxQkFBcUIsTUFBTTtBQUNwQzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-4919","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"8.13.0","@typescript-eslint/utils":"8.13.0","debug":"^4.3.7","ts-api-utils":"^1.4.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.14.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"8.13.0","@typescript-eslint/rule-tester":"8.13.0","eslint":"^9.14.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.3.1","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"8.13.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
|
|
@@ -50,7 +50,9 @@ const rule: ESLintUtils.RuleModule<'addBasePathConst'> = createRule({
|
|
|
50
50
|
|
|
51
51
|
const swaggerPath = getSwaggerPathByIndexFile(context.filename);
|
|
52
52
|
const swaggerFileContents = loadSwagger(swaggerPath);
|
|
53
|
-
const baseUrlLine = swaggerFileContents
|
|
53
|
+
const baseUrlLine = swaggerFileContents
|
|
54
|
+
.split('\n')
|
|
55
|
+
.find((line) => /^\s*-\s*url:\s*\/.*$/u.test(line) || /^basePath:.*/u.test(line));
|
|
54
56
|
const baseUrl = baseUrlLine?.split(':')[1]?.trim();
|
|
55
57
|
assert(baseUrl !== undefined);
|
|
56
58
|
|
|
@@ -6,14 +6,28 @@
|
|
|
6
6
|
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import { strict as assert } from 'node:assert';
|
|
10
|
+
|
|
9
11
|
import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
12
|
|
|
11
13
|
import getDocumentationUrl from '../get-documentation-url';
|
|
14
|
+
import { getAncestor } from '../library/ts-tree';
|
|
12
15
|
|
|
13
16
|
export const ruleId = 'fetch-response-body-json';
|
|
14
17
|
|
|
15
18
|
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
16
19
|
|
|
20
|
+
interface Change {
|
|
21
|
+
enclosingFunction: TSESTree.FunctionExpression | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration;
|
|
22
|
+
enclosingStatement: TSESTree.VariableDeclaration | TSESTree.ExpressionStatement | TSESTree.ReturnStatement;
|
|
23
|
+
enclosingStatementIndex: number;
|
|
24
|
+
responseBodyNode: TSESTree.MemberExpression;
|
|
25
|
+
responseVariableName: string;
|
|
26
|
+
responseBodyVariableName: string;
|
|
27
|
+
isResponseBodyVariableDeclared: boolean;
|
|
28
|
+
// replacementText: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
17
31
|
const rule: ESLintUtils.RuleModule<'unknownError' | 'replaceBodyWithJson'> = createRule({
|
|
18
32
|
name: ruleId,
|
|
19
33
|
meta: {
|
|
@@ -32,12 +46,12 @@ const rule: ESLintUtils.RuleModule<'unknownError' | 'replaceBodyWithJson'> = cre
|
|
|
32
46
|
create(context) {
|
|
33
47
|
const parserServices = ESLintUtils.getParserServices(context);
|
|
34
48
|
const typeChecker = parserServices.program.getTypeChecker();
|
|
35
|
-
const
|
|
49
|
+
const allChanges = new Map<TSESTree.Node, Map<string, Change[]>>();
|
|
36
50
|
|
|
37
51
|
return {
|
|
38
|
-
'MemberExpression[property.name="body"]': (
|
|
52
|
+
'MemberExpression[property.name="body"]': (responseBodyNode: TSESTree.MemberExpression) => {
|
|
39
53
|
try {
|
|
40
|
-
const responseNode = parserServices.esTreeNodeToTSNodeMap.get(
|
|
54
|
+
const responseNode = parserServices.esTreeNodeToTSNodeMap.get(responseBodyNode.object);
|
|
41
55
|
const responseType = typeChecker.getTypeAtLocation(responseNode);
|
|
42
56
|
|
|
43
57
|
const shouldReplace =
|
|
@@ -45,23 +59,54 @@ const rule: ESLintUtils.RuleModule<'unknownError' | 'replaceBodyWithJson'> = cre
|
|
|
45
59
|
responseType.getProperties().some((symbol) => symbol.name === 'json');
|
|
46
60
|
|
|
47
61
|
if (shouldReplace) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
const enclosingFunction = getAncestor(
|
|
63
|
+
responseBodyNode,
|
|
64
|
+
(node: TSESTree.Node) =>
|
|
65
|
+
node.type === AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
66
|
+
node.type === AST_NODE_TYPES.FunctionExpression ||
|
|
67
|
+
node.type === AST_NODE_TYPES.FunctionDeclaration,
|
|
68
|
+
) as TSESTree.FunctionExpression | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration;
|
|
69
|
+
const enclosingStatement = getAncestor(
|
|
70
|
+
responseBodyNode,
|
|
71
|
+
(node: TSESTree.Node) =>
|
|
72
|
+
(node.type === AST_NODE_TYPES.VariableDeclaration ||
|
|
73
|
+
node.type === AST_NODE_TYPES.ExpressionStatement ||
|
|
74
|
+
node.type === AST_NODE_TYPES.ReturnStatement) &&
|
|
75
|
+
node.parent.type === AST_NODE_TYPES.BlockStatement,
|
|
76
|
+
) as TSESTree.VariableDeclaration | TSESTree.ExpressionStatement | TSESTree.ReturnStatement;
|
|
77
|
+
const enclosingStatementIndex = (enclosingFunction.body as TSESTree.BlockStatement).body.indexOf(
|
|
78
|
+
enclosingStatement,
|
|
79
|
+
);
|
|
80
|
+
const responseVariableName = (responseBodyNode.object as TSESTree.Identifier).name;
|
|
81
|
+
const isResponseBodyVariableDeclared =
|
|
82
|
+
enclosingStatement.type === AST_NODE_TYPES.VariableDeclaration &&
|
|
83
|
+
enclosingStatement.declarations.some((declaration) => declaration.init === responseBodyNode);
|
|
84
|
+
const responseBodyVariableName = isResponseBodyVariableDeclared
|
|
85
|
+
? (enclosingStatement.declarations.find((declaration) => declaration.init === responseBodyNode)
|
|
86
|
+
?.id as unknown as string)
|
|
87
|
+
: `${(responseBodyNode.object as TSESTree.Identifier).name}Body`;
|
|
88
|
+
|
|
89
|
+
const change: Change = {
|
|
90
|
+
enclosingFunction,
|
|
91
|
+
enclosingStatement,
|
|
92
|
+
enclosingStatementIndex,
|
|
93
|
+
responseVariableName,
|
|
94
|
+
responseBodyNode,
|
|
95
|
+
responseBodyVariableName,
|
|
96
|
+
isResponseBodyVariableDeclared,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const changesByFunction = allChanges.get(enclosingFunction) ?? new Map<string, Change[]>();
|
|
100
|
+
const changesByResponse = changesByFunction.get(responseVariableName) ?? [];
|
|
101
|
+
changesByResponse.push(change);
|
|
102
|
+
changesByFunction.set(responseVariableName, changesByResponse);
|
|
103
|
+
allChanges.set(enclosingFunction, changesByFunction);
|
|
59
104
|
}
|
|
60
105
|
} catch (error) {
|
|
61
106
|
// eslint-disable-next-line no-console
|
|
62
107
|
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
63
108
|
context.report({
|
|
64
|
-
node:
|
|
109
|
+
node: responseBodyNode,
|
|
65
110
|
messageId: 'unknownError',
|
|
66
111
|
data: {
|
|
67
112
|
fileName: context.filename,
|
|
@@ -70,6 +115,62 @@ const rule: ESLintUtils.RuleModule<'unknownError' | 'replaceBodyWithJson'> = cre
|
|
|
70
115
|
});
|
|
71
116
|
}
|
|
72
117
|
},
|
|
118
|
+
|
|
119
|
+
'Program:exit': () => {
|
|
120
|
+
if (allChanges.size === 0) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const fixes: { node: TSESTree.Node; text: string; insert: boolean }[] = [];
|
|
125
|
+
for (const changesByFunction of allChanges.values()) {
|
|
126
|
+
for (const changesByResponse of changesByFunction.values()) {
|
|
127
|
+
const orderedChanges = changesByResponse.sort(
|
|
128
|
+
(changeA, changeB) => changeA.enclosingStatementIndex - changeB.enclosingStatementIndex,
|
|
129
|
+
);
|
|
130
|
+
const firstChange = orderedChanges[0];
|
|
131
|
+
assert(firstChange);
|
|
132
|
+
|
|
133
|
+
const {
|
|
134
|
+
responseBodyNode,
|
|
135
|
+
responseVariableName,
|
|
136
|
+
responseBodyVariableName,
|
|
137
|
+
isResponseBodyVariableDeclared,
|
|
138
|
+
enclosingStatement,
|
|
139
|
+
} = firstChange;
|
|
140
|
+
|
|
141
|
+
let remainingChanges;
|
|
142
|
+
if (!isResponseBodyVariableDeclared) {
|
|
143
|
+
fixes.push({
|
|
144
|
+
node: enclosingStatement,
|
|
145
|
+
text: `const ${responseBodyVariableName} = await ${responseVariableName}.json();\n`,
|
|
146
|
+
insert: true,
|
|
147
|
+
});
|
|
148
|
+
remainingChanges = orderedChanges;
|
|
149
|
+
} else {
|
|
150
|
+
fixes.push({
|
|
151
|
+
node: responseBodyNode,
|
|
152
|
+
text: `await ${responseVariableName}.json()`,
|
|
153
|
+
insert: false,
|
|
154
|
+
});
|
|
155
|
+
remainingChanges = orderedChanges.slice(1);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
for (const change of remainingChanges) {
|
|
159
|
+
fixes.push({ node: change.responseBodyNode, text: responseBodyVariableName, insert: false });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
for (const fix of fixes) {
|
|
165
|
+
context.report({
|
|
166
|
+
node: fix.node,
|
|
167
|
+
messageId: 'replaceBodyWithJson',
|
|
168
|
+
fix(fixer) {
|
|
169
|
+
return fix.insert ? fixer.insertTextBefore(fix.node, fix.text) : fixer.replaceText(fix.node, fix.text);
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
},
|
|
73
174
|
};
|
|
74
175
|
},
|
|
75
176
|
});
|
package/src/agent/no-fixture.ts
CHANGED
|
@@ -59,7 +59,11 @@ function analyzeFixtureCall(call: SimpleCallExpression, results: FixtureCallInfo
|
|
|
59
59
|
// direct return, no variable declaration or await
|
|
60
60
|
results.fixtureNode = call;
|
|
61
61
|
results.rootNode = parent;
|
|
62
|
-
} else if (
|
|
62
|
+
} else if (
|
|
63
|
+
parent.type === 'ArrayExpression' ||
|
|
64
|
+
parent.type === 'CallExpression' ||
|
|
65
|
+
parent.type === 'ArrowFunctionExpression'
|
|
66
|
+
) {
|
|
63
67
|
// direct return, no variable declaration or await
|
|
64
68
|
results.fixtureNode = call;
|
|
65
69
|
results.rootNode = call;
|
|
@@ -57,10 +57,12 @@ const rule: ESLintUtils.RuleModule<'unknownError' | 'preferNativeFetch' | 'inval
|
|
|
57
57
|
const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
|
|
58
58
|
if (foundVariable) {
|
|
59
59
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
if (variableDefinition !== undefined) {
|
|
61
|
+
const variableDefinitionNode = variableDefinition.node;
|
|
62
|
+
assert.ok(variableDefinitionNode.init, 'Variable definition node has no init property');
|
|
63
|
+
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
|
package/src/library/tree.ts
CHANGED
|
@@ -64,6 +64,7 @@ export function isUsedInArrayOrAsArgument(node: Node): boolean {
|
|
|
64
64
|
|
|
65
65
|
if (
|
|
66
66
|
parent.type === 'ArrayExpression' ||
|
|
67
|
+
parent.type === 'ArrowFunctionExpression' ||
|
|
67
68
|
(parent.type === 'CallExpression' && parent.arguments.includes(node as Expression))
|
|
68
69
|
) {
|
|
69
70
|
return true;
|