@checkdigit/eslint-plugin 6.6.0-PR.75-d1a6 → 6.6.0-PR.75-c9a3

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": 4080,
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": 7581,
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": 4417
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": 3689
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": 4368100
15786
15820
  }
15787
15821
  }
15788
15822
  }
@@ -0,0 +1,96 @@
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
+ let parameterIndex = 0;
44
+ for (const arg of providedArgs) {
45
+ const currentExpectedArg = signatureParameters[parameterIndex];
46
+ assert.ok(currentExpectedArg, "Expected argument not found.");
47
+ const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
48
+ typeChecker.typeToString(expectedType);
49
+ const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
50
+ typeChecker.typeToString(actualType);
51
+ if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
52
+ argsToKeep.push(arg);
53
+ parameterIndex++;
54
+ }
55
+ }
56
+ if (argsToKeep.length === providedArgsCount) {
57
+ return;
58
+ }
59
+ const firstParameter = providedArgs[0];
60
+ const lastParameter = providedArgs.at(-1);
61
+ assert.ok(firstParameter !== void 0 && lastParameter !== void 0);
62
+ const tokenAfterParameters = sourceCode.getTokenAfter(lastParameter);
63
+ context.report({
64
+ node: callExpression,
65
+ messageId: "removeIncompatibleFunctionArguments",
66
+ fix(fixer) {
67
+ return fixer.replaceTextRange(
68
+ [
69
+ firstParameter.range[0],
70
+ tokenAfterParameters?.value === "," ? tokenAfterParameters.range[1] : lastParameter.range[1]
71
+ ],
72
+ argsToKeep.map((arg) => sourceCode.getText(arg)).join(", ")
73
+ );
74
+ }
75
+ });
76
+ } catch (error) {
77
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
78
+ context.report({
79
+ node: callExpression,
80
+ messageId: "unknownError",
81
+ data: {
82
+ fileName: context.filename,
83
+ error: error instanceof Error ? error.toString() : JSON.stringify(error)
84
+ }
85
+ });
86
+ }
87
+ }
88
+ };
89
+ }
90
+ });
91
+ var fix_function_call_arguments_default = rule;
92
+ export {
93
+ fix_function_call_arguments_default as default,
94
+ ruleId
95
+ };
96
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLG1CQUE2QjtBQUN0QyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixxQ0FBcUM7QUFBQSxNQUNyQyxjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxRQUFRLGVBQWU7QUFDMUQsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsZUFBZSxnQkFBZ0I7QUFDN0IsWUFBSTtBQUNGLGdCQUFNLGVBQWUsZUFBZSxzQkFBc0IsSUFBSSxlQUFlLE1BQU07QUFDbkYsZ0JBQU0sYUFBYSxZQUFZLGtCQUFrQixZQUFZO0FBQzdELGdCQUFNLFlBQVksV0FBVyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xELGNBQUksQ0FBQyxXQUFXO0FBQ2Q7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sc0JBQXNCLFVBQVUsY0FBYztBQUNwRCxnQkFBTSxvQkFBb0Isb0JBQW9CO0FBQzlDLGdCQUFNLGVBQWUsZUFBZTtBQUNwQyxnQkFBTSxvQkFBb0IsYUFBYTtBQUN2QyxjQUFJLHNCQUFzQixLQUFLLHNCQUFzQixtQkFBbUI7QUFDdEU7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sYUFBZ0QsQ0FBQztBQUV2RCxjQUFJLGlCQUFpQjtBQUNyQixxQkFBVyxPQUFPLGNBQWM7QUFDOUIsa0JBQU0scUJBQXFCLG9CQUFvQixjQUFjO0FBQzdELG1CQUFPLEdBQUcsb0JBQW9CLDhCQUE4QjtBQUU1RCxrQkFBTSxlQUFlLFlBQVksZ0JBQWdCLGtCQUFrQjtBQUNuRSx3QkFBWSxhQUFhLFlBQVk7QUFDckMsa0JBQU0sYUFBYSxZQUFZLGtCQUFrQixlQUFlLHNCQUFzQixJQUFJLEdBQUcsQ0FBQztBQUM5Rix3QkFBWSxhQUFhLFVBQVU7QUFHbkMsZ0JBQUksWUFBWSxtQkFBbUIsWUFBWSxZQUFZLE1BQU0sTUFBTTtBQUNyRSx5QkFBVyxLQUFLLEdBQUc7QUFDbkI7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUVBLGNBQUksV0FBVyxXQUFXLG1CQUFtQjtBQUMzQztBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxpQkFBaUIsYUFBYSxDQUFDO0FBQ3JDLGdCQUFNLGdCQUFnQixhQUFhLEdBQUcsRUFBRTtBQUN4QyxpQkFBTyxHQUFHLG1CQUFtQixVQUFhLGtCQUFrQixNQUFTO0FBQ3JFLGdCQUFNLHVCQUF1QixXQUFXLGNBQWMsYUFBYTtBQUVuRSxrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxJQUFJLE9BQU87QUFDVCxxQkFBTyxNQUFNO0FBQUEsZ0JBQ1g7QUFBQSxrQkFDRSxlQUFlLE1BQU0sQ0FBQztBQUFBLGtCQUN0QixzQkFBc0IsVUFBVSxNQUFNLHFCQUFxQixNQUFNLENBQUMsSUFBSSxjQUFjLE1BQU0sQ0FBQztBQUFBLGdCQUM3RjtBQUFBLGdCQUNBLFdBQVcsSUFBSSxDQUFDLFFBQVEsV0FBVyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSTtBQUFBLGNBQzVEO0FBQUEsWUFDRjtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0gsU0FBUyxPQUFPO0FBRWQsa0JBQVEsTUFBTSxtQkFBbUIsTUFBTSxtQkFBbUIsUUFBUSxRQUFRLE1BQU0sS0FBSztBQUNyRixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsY0FDSixVQUFVLFFBQVE7QUFBQSxjQUNsQixPQUFPLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxJQUFJLEtBQUssVUFBVSxLQUFLO0FBQUEsWUFDekU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sc0NBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -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: {
@@ -119,7 +123,8 @@ var src_default = {
119
123
  [`@checkdigit/${fetchThenRuleId}`]: "error",
120
124
  [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
121
125
  [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
122
- [`@checkdigit/${noUnusedImportsRuleId}`]: "error"
126
+ [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
127
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
123
128
  }
124
129
  },
125
130
  "agent-phase-2-production": {
@@ -135,7 +140,8 @@ var src_default = {
135
140
  [`@checkdigit/${fetchThenRuleId}`]: "error",
136
141
  [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
137
142
  [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
138
- [`@checkdigit/${noUnusedImportsRuleId}`]: "error"
143
+ [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
144
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
139
145
  }
140
146
  }
141
147
  }
@@ -143,4 +149,4 @@ var src_default = {
143
149
  export {
144
150
  src_default as default
145
151
  };
146
- //# sourceMappingURL=data:application/json;base64,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
152
+ //# 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: {
@@ -80,6 +81,7 @@ declare const _default: {
80
81
  "@checkdigit/no-unused-function-argument": string;
81
82
  "@checkdigit/no-unused-service-variable": string;
82
83
  "@checkdigit/no-unused-imports": string;
84
+ "@checkdigit/fix-function-call-arguments": string;
83
85
  };
84
86
  };
85
87
  'agent-phase-2-production': {
@@ -96,6 +98,7 @@ declare const _default: {
96
98
  "@checkdigit/no-unused-function-argument": string;
97
99
  "@checkdigit/no-unused-service-variable": string;
98
100
  "@checkdigit/no-unused-imports": string;
101
+ "@checkdigit/fix-function-call-arguments": string;
99
102
  };
100
103
  };
101
104
  };
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-c9a3","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,112 @@
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
+ let parameterIndex = 0;
57
+ for (const arg of providedArgs) {
58
+ const currentExpectedArg = signatureParameters[parameterIndex];
59
+ assert.ok(currentExpectedArg, 'Expected argument not found.');
60
+
61
+ const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
62
+ typeChecker.typeToString(expectedType);
63
+ const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
64
+ typeChecker.typeToString(actualType);
65
+ // @ts-expect-error: internal API
66
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
67
+ if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
68
+ argsToKeep.push(arg);
69
+ parameterIndex++;
70
+ }
71
+ }
72
+
73
+ if (argsToKeep.length === providedArgsCount) {
74
+ return;
75
+ }
76
+
77
+ const firstParameter = providedArgs[0];
78
+ const lastParameter = providedArgs.at(-1);
79
+ assert.ok(firstParameter !== undefined && lastParameter !== undefined);
80
+ const tokenAfterParameters = sourceCode.getTokenAfter(lastParameter);
81
+
82
+ context.report({
83
+ node: callExpression,
84
+ messageId: 'removeIncompatibleFunctionArguments',
85
+ fix(fixer) {
86
+ return fixer.replaceTextRange(
87
+ [
88
+ firstParameter.range[0],
89
+ tokenAfterParameters?.value === ',' ? tokenAfterParameters.range[1] : lastParameter.range[1],
90
+ ],
91
+ argsToKeep.map((arg) => sourceCode.getText(arg)).join(', '),
92
+ );
93
+ },
94
+ });
95
+ } catch (error) {
96
+ // eslint-disable-next-line no-console
97
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
98
+ context.report({
99
+ node: callExpression,
100
+ messageId: 'unknownError',
101
+ data: {
102
+ fileName: context.filename,
103
+ error: error instanceof Error ? error.toString() : JSON.stringify(error),
104
+ },
105
+ });
106
+ }
107
+ },
108
+ };
109
+ },
110
+ });
111
+
112
+ 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: {
@@ -128,6 +132,7 @@ export default {
128
132
  [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: 'error',
129
133
  [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: 'error',
130
134
  [`@checkdigit/${noUnusedImportsRuleId}`]: 'error',
135
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
131
136
  },
132
137
  },
133
138
  'agent-phase-2-production': {
@@ -144,6 +149,7 @@ export default {
144
149
  [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: 'error',
145
150
  [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: 'error',
146
151
  [`@checkdigit/${noUnusedImportsRuleId}`]: 'error',
152
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
147
153
  },
148
154
  },
149
155
  },