@checkdigit/eslint-plugin 6.6.0-PR.75-d1a6 → 6.6.0-PR.75-3378
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/dist-cjs/index.cjs +786 -677
- package/dist-cjs/metafile.json +41 -7
- package/dist-mjs/agent/fix-function-call-arguments.mjs +99 -0
- package/dist-mjs/index.mjs +23 -5
- package/dist-types/agent/fix-function-call-arguments.d.ts +4 -0
- package/dist-types/index.d.ts +15 -0
- package/package.json +1 -1
- package/src/agent/fix-function-call-arguments.ts +116 -0
- package/src/index.ts +18 -0
package/dist-cjs/metafile.json
CHANGED
|
@@ -12323,6 +12323,27 @@
|
|
|
12323
12323
|
],
|
|
12324
12324
|
"format": "esm"
|
|
12325
12325
|
},
|
|
12326
|
+
"src/agent/fix-function-call-arguments.ts": {
|
|
12327
|
+
"bytes": 4313,
|
|
12328
|
+
"imports": [
|
|
12329
|
+
{
|
|
12330
|
+
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
12331
|
+
"kind": "import-statement",
|
|
12332
|
+
"original": "@typescript-eslint/utils"
|
|
12333
|
+
},
|
|
12334
|
+
{
|
|
12335
|
+
"path": "node:assert",
|
|
12336
|
+
"kind": "import-statement",
|
|
12337
|
+
"external": true
|
|
12338
|
+
},
|
|
12339
|
+
{
|
|
12340
|
+
"path": "src/get-documentation-url.ts",
|
|
12341
|
+
"kind": "import-statement",
|
|
12342
|
+
"original": "../get-documentation-url"
|
|
12343
|
+
}
|
|
12344
|
+
],
|
|
12345
|
+
"format": "esm"
|
|
12346
|
+
},
|
|
12326
12347
|
"src/invalid-json-stringify.ts": {
|
|
12327
12348
|
"bytes": 2840,
|
|
12328
12349
|
"imports": [
|
|
@@ -12725,7 +12746,7 @@
|
|
|
12725
12746
|
"format": "esm"
|
|
12726
12747
|
},
|
|
12727
12748
|
"src/index.ts": {
|
|
12728
|
-
"bytes":
|
|
12749
|
+
"bytes": 8293,
|
|
12729
12750
|
"imports": [
|
|
12730
12751
|
{
|
|
12731
12752
|
"path": "src/agent/add-url-domain.ts",
|
|
@@ -12747,6 +12768,11 @@
|
|
|
12747
12768
|
"kind": "import-statement",
|
|
12748
12769
|
"original": "./agent/fetch-then"
|
|
12749
12770
|
},
|
|
12771
|
+
{
|
|
12772
|
+
"path": "src/agent/fix-function-call-arguments.ts",
|
|
12773
|
+
"kind": "import-statement",
|
|
12774
|
+
"original": "./agent/fix-function-call-arguments"
|
|
12775
|
+
},
|
|
12750
12776
|
{
|
|
12751
12777
|
"path": "src/invalid-json-stringify.ts",
|
|
12752
12778
|
"kind": "import-statement",
|
|
@@ -13414,6 +13440,11 @@
|
|
|
13414
13440
|
"kind": "require-call",
|
|
13415
13441
|
"external": true
|
|
13416
13442
|
},
|
|
13443
|
+
{
|
|
13444
|
+
"path": "node:assert",
|
|
13445
|
+
"kind": "require-call",
|
|
13446
|
+
"external": true
|
|
13447
|
+
},
|
|
13417
13448
|
{
|
|
13418
13449
|
"path": "node:assert",
|
|
13419
13450
|
"kind": "require-call",
|
|
@@ -15671,7 +15702,7 @@
|
|
|
15671
15702
|
"bytesInOutput": 2219
|
|
15672
15703
|
},
|
|
15673
15704
|
"src/index.ts": {
|
|
15674
|
-
"bytesInOutput":
|
|
15705
|
+
"bytesInOutput": 4938
|
|
15675
15706
|
},
|
|
15676
15707
|
"src/agent/url.ts": {
|
|
15677
15708
|
"bytesInOutput": 745
|
|
@@ -15706,6 +15737,9 @@
|
|
|
15706
15737
|
"src/agent/fetch-then.ts": {
|
|
15707
15738
|
"bytesInOutput": 12231
|
|
15708
15739
|
},
|
|
15740
|
+
"src/agent/fix-function-call-arguments.ts": {
|
|
15741
|
+
"bytesInOutput": 3865
|
|
15742
|
+
},
|
|
15709
15743
|
"src/invalid-json-stringify.ts": {
|
|
15710
15744
|
"bytesInOutput": 2473
|
|
15711
15745
|
},
|
|
@@ -15725,25 +15759,25 @@
|
|
|
15725
15759
|
"bytesInOutput": 2006
|
|
15726
15760
|
},
|
|
15727
15761
|
"src/agent/no-mapped-response.ts": {
|
|
15728
|
-
"bytesInOutput":
|
|
15762
|
+
"bytesInOutput": 2421
|
|
15729
15763
|
},
|
|
15730
15764
|
"src/no-promise-instance-method.ts": {
|
|
15731
15765
|
"bytesInOutput": 1277
|
|
15732
15766
|
},
|
|
15733
15767
|
"src/agent/no-service-wrapper.ts": {
|
|
15734
|
-
"bytesInOutput":
|
|
15768
|
+
"bytesInOutput": 8944
|
|
15735
15769
|
},
|
|
15736
15770
|
"src/agent/no-status-code.ts": {
|
|
15737
15771
|
"bytesInOutput": 2042
|
|
15738
15772
|
},
|
|
15739
15773
|
"src/agent/no-unused-function-argument.ts": {
|
|
15740
|
-
"bytesInOutput":
|
|
15774
|
+
"bytesInOutput": 2867
|
|
15741
15775
|
},
|
|
15742
15776
|
"src/agent/no-unused-imports.ts": {
|
|
15743
15777
|
"bytesInOutput": 3007
|
|
15744
15778
|
},
|
|
15745
15779
|
"src/agent/no-unused-service-variable.ts": {
|
|
15746
|
-
"bytesInOutput":
|
|
15780
|
+
"bytesInOutput": 2651
|
|
15747
15781
|
},
|
|
15748
15782
|
"src/require-fixed-services-import.ts": {
|
|
15749
15783
|
"bytesInOutput": 1262
|
|
@@ -15782,7 +15816,7 @@
|
|
|
15782
15816
|
"bytesInOutput": 3362
|
|
15783
15817
|
}
|
|
15784
15818
|
},
|
|
15785
|
-
"bytes":
|
|
15819
|
+
"bytes": 4369509
|
|
15786
15820
|
}
|
|
15787
15821
|
}
|
|
15788
15822
|
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// src/agent/fix-function-call-arguments.ts
|
|
2
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
import { strict as assert } from "node:assert";
|
|
4
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
5
|
+
var ruleId = "fix-function-call-arguments";
|
|
6
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
7
|
+
var rule = createRule({
|
|
8
|
+
name: ruleId,
|
|
9
|
+
meta: {
|
|
10
|
+
type: "suggestion",
|
|
11
|
+
docs: {
|
|
12
|
+
description: "Remove incompatible function arguments."
|
|
13
|
+
},
|
|
14
|
+
messages: {
|
|
15
|
+
removeIncompatibleFunctionArguments: "Removing incompatible function arguments.",
|
|
16
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
17
|
+
},
|
|
18
|
+
fixable: "code",
|
|
19
|
+
schema: []
|
|
20
|
+
},
|
|
21
|
+
defaultOptions: [],
|
|
22
|
+
create(context) {
|
|
23
|
+
const parserServices = ESLintUtils.getParserServices(context);
|
|
24
|
+
const typeChecker = parserServices.program.getTypeChecker();
|
|
25
|
+
const sourceCode = context.sourceCode;
|
|
26
|
+
return {
|
|
27
|
+
CallExpression(callExpression) {
|
|
28
|
+
try {
|
|
29
|
+
const calleeTsNode = parserServices.esTreeNodeToTSNodeMap.get(callExpression.callee);
|
|
30
|
+
const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
|
|
31
|
+
const signature = calleeType.getCallSignatures()[0];
|
|
32
|
+
if (!signature) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const signatureParameters = signature.getParameters();
|
|
36
|
+
const expectedArgsCount = signatureParameters.length;
|
|
37
|
+
const providedArgs = callExpression.arguments;
|
|
38
|
+
const providedArgsCount = providedArgs.length;
|
|
39
|
+
if (providedArgsCount === 0 || providedArgsCount === expectedArgsCount) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const argsToKeep = [];
|
|
43
|
+
if (expectedArgsCount > 0) {
|
|
44
|
+
let parameterIndex = 0;
|
|
45
|
+
for (const arg of providedArgs) {
|
|
46
|
+
const currentExpectedArg = signatureParameters[parameterIndex];
|
|
47
|
+
assert.ok(currentExpectedArg, "Expected argument not found.");
|
|
48
|
+
const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
|
|
49
|
+
console.log(currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
|
|
50
|
+
typeChecker.typeToString(expectedType);
|
|
51
|
+
const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
|
|
52
|
+
typeChecker.typeToString(actualType);
|
|
53
|
+
if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
|
|
54
|
+
argsToKeep.push(arg);
|
|
55
|
+
parameterIndex++;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (argsToKeep.length === providedArgsCount) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const firstParameter = providedArgs[0];
|
|
63
|
+
const lastParameter = providedArgs.at(-1);
|
|
64
|
+
assert.ok(firstParameter !== void 0 && lastParameter !== void 0);
|
|
65
|
+
const tokenAfterParameters = sourceCode.getTokenAfter(lastParameter);
|
|
66
|
+
context.report({
|
|
67
|
+
node: callExpression,
|
|
68
|
+
messageId: "removeIncompatibleFunctionArguments",
|
|
69
|
+
fix(fixer) {
|
|
70
|
+
return fixer.replaceTextRange(
|
|
71
|
+
[
|
|
72
|
+
firstParameter.range[0],
|
|
73
|
+
tokenAfterParameters?.value === "," ? tokenAfterParameters.range[1] : lastParameter.range[1]
|
|
74
|
+
],
|
|
75
|
+
argsToKeep.map((arg) => sourceCode.getText(arg)).join(", ")
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
81
|
+
context.report({
|
|
82
|
+
node: callExpression,
|
|
83
|
+
messageId: "unknownError",
|
|
84
|
+
data: {
|
|
85
|
+
fileName: context.filename,
|
|
86
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
var fix_function_call_arguments_default = rule;
|
|
95
|
+
export {
|
|
96
|
+
fix_function_call_arguments_default as default,
|
|
97
|
+
ruleId
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLG1CQUE2QjtBQUN0QyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixxQ0FBcUM7QUFBQSxNQUNyQyxjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxRQUFRLGVBQWU7QUFDMUQsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsZUFBZSxnQkFBZ0I7QUFDN0IsWUFBSTtBQUNGLGdCQUFNLGVBQWUsZUFBZSxzQkFBc0IsSUFBSSxlQUFlLE1BQU07QUFDbkYsZ0JBQU0sYUFBYSxZQUFZLGtCQUFrQixZQUFZO0FBQzdELGdCQUFNLFlBQVksV0FBVyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xELGNBQUksQ0FBQyxXQUFXO0FBQ2Q7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sc0JBQXNCLFVBQVUsY0FBYztBQUNwRCxnQkFBTSxvQkFBb0Isb0JBQW9CO0FBQzlDLGdCQUFNLGVBQWUsZUFBZTtBQUNwQyxnQkFBTSxvQkFBb0IsYUFBYTtBQUN2QyxjQUFJLHNCQUFzQixLQUFLLHNCQUFzQixtQkFBbUI7QUFDdEU7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sYUFBZ0QsQ0FBQztBQUV2RCxjQUFJLG9CQUFvQixHQUFHO0FBQ3pCLGdCQUFJLGlCQUFpQjtBQUNyQix1QkFBVyxPQUFPLGNBQWM7QUFDOUIsb0JBQU0scUJBQXFCLG9CQUFvQixjQUFjO0FBQzdELHFCQUFPLEdBQUcsb0JBQW9CLDhCQUE4QjtBQUU1RCxvQkFBTSxlQUFlLFlBQVksZ0JBQWdCLGtCQUFrQjtBQUVuRSxzQkFBUSxJQUFJLG1CQUFtQixhQUFhLFlBQVksYUFBYSxZQUFZLENBQUM7QUFDbEYsMEJBQVksYUFBYSxZQUFZO0FBQ3JDLG9CQUFNLGFBQWEsWUFBWSxrQkFBa0IsZUFBZSxzQkFBc0IsSUFBSSxHQUFHLENBQUM7QUFDOUYsMEJBQVksYUFBYSxVQUFVO0FBR25DLGtCQUFJLFlBQVksbUJBQW1CLFlBQVksWUFBWSxNQUFNLE1BQU07QUFDckUsMkJBQVcsS0FBSyxHQUFHO0FBQ25CO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBRUEsY0FBSSxXQUFXLFdBQVcsbUJBQW1CO0FBQzNDO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGlCQUFpQixhQUFhLENBQUM7QUFDckMsZ0JBQU0sZ0JBQWdCLGFBQWEsR0FBRyxFQUFFO0FBQ3hDLGlCQUFPLEdBQUcsbUJBQW1CLFVBQWEsa0JBQWtCLE1BQVM7QUFDckUsZ0JBQU0sdUJBQXVCLFdBQVcsY0FBYyxhQUFhO0FBRW5FLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLElBQUksT0FBTztBQUNULHFCQUFPLE1BQU07QUFBQSxnQkFDWDtBQUFBLGtCQUNFLGVBQWUsTUFBTSxDQUFDO0FBQUEsa0JBQ3RCLHNCQUFzQixVQUFVLE1BQU0scUJBQXFCLE1BQU0sQ0FBQyxJQUFJLGNBQWMsTUFBTSxDQUFDO0FBQUEsZ0JBQzdGO0FBQUEsZ0JBQ0EsV0FBVyxJQUFJLENBQUMsUUFBUSxXQUFXLFFBQVEsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQUEsY0FDNUQ7QUFBQSxZQUNGO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSCxTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFVBQVUsUUFBUTtBQUFBLGNBQ2xCLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUs7QUFBQSxZQUN6RTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTyxzQ0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -5,6 +5,9 @@ import fetchResponseHeaderGetter, {
|
|
|
5
5
|
ruleId as fetchResponseHeaderGetterRuleId
|
|
6
6
|
} from "./agent/fetch-response-header-getter.mjs";
|
|
7
7
|
import fetchThen, { ruleId as fetchThenRuleId } from "./agent/fetch-then.mjs";
|
|
8
|
+
import fixFunctionCallArguments, {
|
|
9
|
+
ruleId as fixFunctionCallArgumentsRuleId
|
|
10
|
+
} from "./agent/fix-function-call-arguments.mjs";
|
|
8
11
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
9
12
|
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from "./no-duplicated-imports.mjs";
|
|
10
13
|
import noFixture, { ruleId as noFixtureRuleId } from "./agent/no-fixture.mjs";
|
|
@@ -64,7 +67,8 @@ var src_default = {
|
|
|
64
67
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
65
68
|
[noUnusedFunctionArgumentsRuleId]: noUnusedFunctionArguments,
|
|
66
69
|
[noUnusedServiceVariablesRuleId]: noUnusedServiceVariables,
|
|
67
|
-
[noUnusedImportsRuleId]: noUnusedImports
|
|
70
|
+
[noUnusedImportsRuleId]: noUnusedImports,
|
|
71
|
+
[fixFunctionCallArgumentsRuleId]: fixFunctionCallArguments
|
|
68
72
|
},
|
|
69
73
|
configs: {
|
|
70
74
|
all: {
|
|
@@ -84,7 +88,19 @@ var src_default = {
|
|
|
84
88
|
[`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
|
|
85
89
|
[`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
|
|
86
90
|
[`@checkdigit/${requireFixedServicesImportRuleId}`]: "error",
|
|
87
|
-
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error"
|
|
91
|
+
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
|
|
92
|
+
[`@checkdigit/${noMappedResponseRuleId}`]: "off",
|
|
93
|
+
[`@checkdigit/${addUrlDomainRuleId}`]: "off",
|
|
94
|
+
[`@checkdigit/${noFixtureRuleId}`]: "off",
|
|
95
|
+
[`@checkdigit/${noServiceWrapperRuleId}`]: "off",
|
|
96
|
+
[`@checkdigit/${noStatusCodeRuleId}`]: "off",
|
|
97
|
+
[`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "off",
|
|
98
|
+
[`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "off",
|
|
99
|
+
[`@checkdigit/${fetchThenRuleId}`]: "off",
|
|
100
|
+
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "off",
|
|
101
|
+
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "off",
|
|
102
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: "off",
|
|
103
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "off"
|
|
88
104
|
}
|
|
89
105
|
},
|
|
90
106
|
recommended: {
|
|
@@ -119,7 +135,8 @@ var src_default = {
|
|
|
119
135
|
[`@checkdigit/${fetchThenRuleId}`]: "error",
|
|
120
136
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
|
|
121
137
|
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
|
|
122
|
-
[`@checkdigit/${noUnusedImportsRuleId}`]: "error"
|
|
138
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
139
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
|
|
123
140
|
}
|
|
124
141
|
},
|
|
125
142
|
"agent-phase-2-production": {
|
|
@@ -135,7 +152,8 @@ var src_default = {
|
|
|
135
152
|
[`@checkdigit/${fetchThenRuleId}`]: "error",
|
|
136
153
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
|
|
137
154
|
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
|
|
138
|
-
[`@checkdigit/${noUnusedImportsRuleId}`]: "error"
|
|
155
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
156
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
|
|
139
157
|
}
|
|
140
158
|
}
|
|
141
159
|
}
|
|
@@ -143,4 +161,4 @@ var src_default = {
|
|
|
143
161
|
export {
|
|
144
162
|
src_default as default
|
|
145
163
|
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
+
export declare const ruleId = "fix-function-call-arguments";
|
|
3
|
+
declare const rule: ESLintUtils.RuleModule<"unknownError" | "removeIncompatibleFunctionArguments", never[], ESLintUtils.RuleListener>;
|
|
4
|
+
export default rule;
|
package/dist-types/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ declare const _default: {
|
|
|
27
27
|
"no-unused-function-argument": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeUnusedFunctionArguments", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
28
28
|
"no-unused-service-variable": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeUnusedServiceVariables", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
29
29
|
"no-unused-imports": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeUnusedImports", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
30
|
+
"fix-function-call-arguments": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeIncompatibleFunctionArguments", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
30
31
|
};
|
|
31
32
|
configs: {
|
|
32
33
|
all: {
|
|
@@ -47,6 +48,18 @@ declare const _default: {
|
|
|
47
48
|
"@checkdigit/no-duplicated-imports": string;
|
|
48
49
|
"@checkdigit/require-fixed-services-import": string;
|
|
49
50
|
"@checkdigit/require-type-out-of-type-only-imports": string;
|
|
51
|
+
"@checkdigit/no-mapped-response": string;
|
|
52
|
+
"@checkdigit/add-url-domain": string;
|
|
53
|
+
"@checkdigit/no-fixture": string;
|
|
54
|
+
"@checkdigit/no-service-wrapper": string;
|
|
55
|
+
"@checkdigit/no-status-code": string;
|
|
56
|
+
"@checkdigit/fetch-response-body-json": string;
|
|
57
|
+
"@checkdigit/fetch-response-header-getter-ts": string;
|
|
58
|
+
"@checkdigit/fetch-then": string;
|
|
59
|
+
"@checkdigit/no-unused-function-argument": string;
|
|
60
|
+
"@checkdigit/no-unused-service-variable": string;
|
|
61
|
+
"@checkdigit/no-unused-imports": string;
|
|
62
|
+
"@checkdigit/fix-function-call-arguments": string;
|
|
50
63
|
};
|
|
51
64
|
};
|
|
52
65
|
recommended: {
|
|
@@ -80,6 +93,7 @@ declare const _default: {
|
|
|
80
93
|
"@checkdigit/no-unused-function-argument": string;
|
|
81
94
|
"@checkdigit/no-unused-service-variable": string;
|
|
82
95
|
"@checkdigit/no-unused-imports": string;
|
|
96
|
+
"@checkdigit/fix-function-call-arguments": string;
|
|
83
97
|
};
|
|
84
98
|
};
|
|
85
99
|
'agent-phase-2-production': {
|
|
@@ -96,6 +110,7 @@ declare const _default: {
|
|
|
96
110
|
"@checkdigit/no-unused-function-argument": string;
|
|
97
111
|
"@checkdigit/no-unused-service-variable": string;
|
|
98
112
|
"@checkdigit/no-unused-imports": string;
|
|
113
|
+
"@checkdigit/fix-function-call-arguments": string;
|
|
99
114
|
};
|
|
100
115
|
};
|
|
101
116
|
};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-3378","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","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs --external=espree && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs","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 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && 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":"7.18.0","@typescript-eslint/utils":"7.18.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.0","@checkdigit/typescript-config":"6.0.0","@types/eslint":"8.56.10","@typescript-eslint/eslint-plugin":"7.18.0","@typescript-eslint/parser":"7.18.0","@typescript-eslint/rule-tester":"7.18.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"0.24.0","http-status-codes":"^2.3.0"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.14"}}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// agent/fix-function-call-arguments.ts
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2021-2024 Check Digit, LLC
|
|
5
|
+
*
|
|
6
|
+
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
+
import { strict as assert } from 'node:assert';
|
|
11
|
+
import getDocumentationUrl from '../get-documentation-url';
|
|
12
|
+
|
|
13
|
+
export const ruleId = 'fix-function-call-arguments';
|
|
14
|
+
|
|
15
|
+
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
16
|
+
|
|
17
|
+
const rule = createRule({
|
|
18
|
+
name: ruleId,
|
|
19
|
+
meta: {
|
|
20
|
+
type: 'suggestion',
|
|
21
|
+
docs: {
|
|
22
|
+
description: 'Remove incompatible function arguments.',
|
|
23
|
+
},
|
|
24
|
+
messages: {
|
|
25
|
+
removeIncompatibleFunctionArguments: 'Removing incompatible function arguments.',
|
|
26
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
|
|
27
|
+
},
|
|
28
|
+
fixable: 'code',
|
|
29
|
+
schema: [],
|
|
30
|
+
},
|
|
31
|
+
defaultOptions: [],
|
|
32
|
+
create(context) {
|
|
33
|
+
const parserServices = ESLintUtils.getParserServices(context);
|
|
34
|
+
const typeChecker = parserServices.program.getTypeChecker();
|
|
35
|
+
const sourceCode = context.sourceCode;
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
CallExpression(callExpression) {
|
|
39
|
+
try {
|
|
40
|
+
const calleeTsNode = parserServices.esTreeNodeToTSNodeMap.get(callExpression.callee);
|
|
41
|
+
const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
|
|
42
|
+
const signature = calleeType.getCallSignatures()[0];
|
|
43
|
+
if (!signature) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const signatureParameters = signature.getParameters();
|
|
48
|
+
const expectedArgsCount = signatureParameters.length;
|
|
49
|
+
const providedArgs = callExpression.arguments;
|
|
50
|
+
const providedArgsCount = providedArgs.length;
|
|
51
|
+
if (providedArgsCount === 0 || providedArgsCount === expectedArgsCount) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const argsToKeep: TSESTree.CallExpressionArgument[] = [];
|
|
55
|
+
|
|
56
|
+
if (expectedArgsCount > 0) {
|
|
57
|
+
let parameterIndex = 0;
|
|
58
|
+
for (const arg of providedArgs) {
|
|
59
|
+
const currentExpectedArg = signatureParameters[parameterIndex];
|
|
60
|
+
assert.ok(currentExpectedArg, 'Expected argument not found.');
|
|
61
|
+
|
|
62
|
+
const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log(currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
|
|
65
|
+
typeChecker.typeToString(expectedType);
|
|
66
|
+
const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
|
|
67
|
+
typeChecker.typeToString(actualType);
|
|
68
|
+
// @ts-expect-error: internal API
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
70
|
+
if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
|
|
71
|
+
argsToKeep.push(arg);
|
|
72
|
+
parameterIndex++;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (argsToKeep.length === providedArgsCount) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const firstParameter = providedArgs[0];
|
|
82
|
+
const lastParameter = providedArgs.at(-1);
|
|
83
|
+
assert.ok(firstParameter !== undefined && lastParameter !== undefined);
|
|
84
|
+
const tokenAfterParameters = sourceCode.getTokenAfter(lastParameter);
|
|
85
|
+
|
|
86
|
+
context.report({
|
|
87
|
+
node: callExpression,
|
|
88
|
+
messageId: 'removeIncompatibleFunctionArguments',
|
|
89
|
+
fix(fixer) {
|
|
90
|
+
return fixer.replaceTextRange(
|
|
91
|
+
[
|
|
92
|
+
firstParameter.range[0],
|
|
93
|
+
tokenAfterParameters?.value === ',' ? tokenAfterParameters.range[1] : lastParameter.range[1],
|
|
94
|
+
],
|
|
95
|
+
argsToKeep.map((arg) => sourceCode.getText(arg)).join(', '),
|
|
96
|
+
);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
} catch (error) {
|
|
100
|
+
// eslint-disable-next-line no-console
|
|
101
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
102
|
+
context.report({
|
|
103
|
+
node: callExpression,
|
|
104
|
+
messageId: 'unknownError',
|
|
105
|
+
data: {
|
|
106
|
+
fileName: context.filename,
|
|
107
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error),
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
export default rule;
|
package/src/index.ts
CHANGED
|
@@ -12,6 +12,9 @@ import fetchResponseHeaderGetter, {
|
|
|
12
12
|
ruleId as fetchResponseHeaderGetterRuleId,
|
|
13
13
|
} from './agent/fetch-response-header-getter';
|
|
14
14
|
import fetchThen, { ruleId as fetchThenRuleId } from './agent/fetch-then';
|
|
15
|
+
import fixFunctionCallArguments, {
|
|
16
|
+
ruleId as fixFunctionCallArgumentsRuleId,
|
|
17
|
+
} from './agent/fix-function-call-arguments';
|
|
15
18
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
16
19
|
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports';
|
|
17
20
|
import noFixture, { ruleId as noFixtureRuleId } from './agent/no-fixture';
|
|
@@ -73,6 +76,7 @@ export default {
|
|
|
73
76
|
[noUnusedFunctionArgumentsRuleId]: noUnusedFunctionArguments,
|
|
74
77
|
[noUnusedServiceVariablesRuleId]: noUnusedServiceVariables,
|
|
75
78
|
[noUnusedImportsRuleId]: noUnusedImports,
|
|
79
|
+
[fixFunctionCallArgumentsRuleId]: fixFunctionCallArguments,
|
|
76
80
|
},
|
|
77
81
|
configs: {
|
|
78
82
|
all: {
|
|
@@ -93,6 +97,18 @@ export default {
|
|
|
93
97
|
[`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
|
|
94
98
|
[`@checkdigit/${requireFixedServicesImportRuleId}`]: 'error',
|
|
95
99
|
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
|
|
100
|
+
[`@checkdigit/${noMappedResponseRuleId}`]: 'off',
|
|
101
|
+
[`@checkdigit/${addUrlDomainRuleId}`]: 'off',
|
|
102
|
+
[`@checkdigit/${noFixtureRuleId}`]: 'off',
|
|
103
|
+
[`@checkdigit/${noServiceWrapperRuleId}`]: 'off',
|
|
104
|
+
[`@checkdigit/${noStatusCodeRuleId}`]: 'off',
|
|
105
|
+
[`@checkdigit/${fetchResponseBodyJsonRuleId}`]: 'off',
|
|
106
|
+
[`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: 'off',
|
|
107
|
+
[`@checkdigit/${fetchThenRuleId}`]: 'off',
|
|
108
|
+
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: 'off',
|
|
109
|
+
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: 'off',
|
|
110
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: 'off',
|
|
111
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'off',
|
|
96
112
|
},
|
|
97
113
|
},
|
|
98
114
|
recommended: {
|
|
@@ -128,6 +144,7 @@ export default {
|
|
|
128
144
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: 'error',
|
|
129
145
|
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: 'error',
|
|
130
146
|
[`@checkdigit/${noUnusedImportsRuleId}`]: 'error',
|
|
147
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
|
|
131
148
|
},
|
|
132
149
|
},
|
|
133
150
|
'agent-phase-2-production': {
|
|
@@ -144,6 +161,7 @@ export default {
|
|
|
144
161
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: 'error',
|
|
145
162
|
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: 'error',
|
|
146
163
|
[`@checkdigit/${noUnusedImportsRuleId}`]: 'error',
|
|
164
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
|
|
147
165
|
},
|
|
148
166
|
},
|
|
149
167
|
},
|