@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.
@@ -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": 7256,
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": 4272
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": 2417
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": 8914
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": 2865
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": 2647
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": 4361261
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
@@ -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,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
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;
@@ -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-d1a6","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"}}
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
  },