@checkdigit/eslint-plugin 6.6.0-PR.75-7c7f → 6.6.0-PR.75-4a28

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.
@@ -12324,7 +12324,7 @@
12324
12324
  "format": "esm"
12325
12325
  },
12326
12326
  "src/agent/fix-function-call-arguments.ts": {
12327
- "bytes": 5924,
12327
+ "bytes": 6926,
12328
12328
  "imports": [
12329
12329
  {
12330
12330
  "path": "node_modules/@typescript-eslint/utils/dist/index.js",
@@ -12751,7 +12751,7 @@
12751
12751
  "format": "esm"
12752
12752
  },
12753
12753
  "src/index.ts": {
12754
- "bytes": 8293,
12754
+ "bytes": 8556,
12755
12755
  "imports": [
12756
12756
  {
12757
12757
  "path": "src/agent/add-url-domain.ts",
@@ -15707,7 +15707,7 @@
15707
15707
  "bytesInOutput": 2219
15708
15708
  },
15709
15709
  "src/index.ts": {
15710
- "bytesInOutput": 4938
15710
+ "bytesInOutput": 5199
15711
15711
  },
15712
15712
  "src/agent/url.ts": {
15713
15713
  "bytesInOutput": 745
@@ -15743,10 +15743,10 @@
15743
15743
  "bytesInOutput": 12231
15744
15744
  },
15745
15745
  "src/agent/fix-function-call-arguments.ts": {
15746
- "bytesInOutput": 5235
15746
+ "bytesInOutput": 6182
15747
15747
  },
15748
15748
  "src/invalid-json-stringify.ts": {
15749
- "bytesInOutput": 2473
15749
+ "bytesInOutput": 2475
15750
15750
  },
15751
15751
  "src/no-duplicated-imports.ts": {
15752
15752
  "bytesInOutput": 3736
@@ -15821,7 +15821,7 @@
15821
15821
  "bytesInOutput": 3362
15822
15822
  }
15823
15823
  },
15824
- "bytes": 4371841
15824
+ "bytes": 4373847
15825
15825
  }
15826
15826
  }
15827
15827
  }
@@ -4,6 +4,14 @@ import { strict as assert } from "node:assert";
4
4
  import debug from "debug";
5
5
  import getDocumentationUrl from "../get-documentation-url.mjs";
6
6
  var ruleId = "fix-function-call-arguments";
7
+ var DEFAULT_OPTIONS = {
8
+ typesToCheck: [
9
+ "Configuration<ResolvedServices>",
10
+ "Fixture<ResolvedServices>",
11
+ "InboundContext",
12
+ "{ get: () => string; }"
13
+ ]
14
+ };
7
15
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
8
16
  var log = debug("eslint-plugin:fix-function-call-arguments");
9
17
  var rule = createRule({
@@ -18,10 +26,25 @@ var rule = createRule({
18
26
  unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
19
27
  },
20
28
  fixable: "code",
21
- schema: []
29
+ schema: [
30
+ {
31
+ type: "object",
32
+ properties: {
33
+ typesToCheck: {
34
+ description: "Text representation of the types of which the function call parameters will be examine",
35
+ type: "array",
36
+ items: {
37
+ type: "string"
38
+ }
39
+ }
40
+ },
41
+ additionalProperties: false
42
+ }
43
+ ]
22
44
  },
23
- defaultOptions: [],
45
+ defaultOptions: [DEFAULT_OPTIONS],
24
46
  create(context) {
47
+ const { typesToCheck } = context.options[0] ?? DEFAULT_OPTIONS;
25
48
  const parserServices = ESLintUtils.getParserServices(context);
26
49
  const typeChecker = parserServices.program.getTypeChecker();
27
50
  const sourceCode = context.sourceCode;
@@ -36,57 +59,59 @@ var rule = createRule({
36
59
  const calleeTsNode = parserServices.esTreeNodeToTSNodeMap.get(callExpression.callee);
37
60
  const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
38
61
  const signatures = calleeType.getCallSignatures();
39
- if (
40
- // ignore complex signatures with overloads
41
- signatures.length > 1
42
- ) {
62
+ if (signatures.length > 1) {
43
63
  return;
44
64
  }
45
65
  const signature = signatures[0];
46
- if (!signature || // ignore complex signatures
47
- signature.typeParameters !== void 0 && signature.typeParameters.length > 0) {
66
+ assert.ok(signature, "Signature not found.");
67
+ if (signature.typeParameters !== void 0 && signature.typeParameters.length > 0) {
48
68
  return;
49
69
  }
50
- const signatureParameters = signature.getParameters();
51
- const expectedParametersCount = signatureParameters.length;
70
+ log("signature:", signature.getDeclaration().getText());
71
+ const expectedParameters = signature.getParameters();
72
+ log(
73
+ "expected parameters:",
74
+ expectedParameters.map(
75
+ (expectedParameter) => typeChecker.typeToString(typeChecker.getTypeOfSymbol(expectedParameter))
76
+ )
77
+ );
78
+ const expectedParametersCount = expectedParameters.length;
52
79
  const actualParameters = callExpression.arguments;
53
80
  const actualParametersCount = actualParameters.length;
54
81
  if (actualParametersCount === 0 || actualParametersCount === expectedParametersCount) {
55
82
  return;
56
83
  }
57
84
  const parametersToKeep = [];
58
- if (expectedParametersCount > 0) {
59
- let expectedParameterIndex = 0;
60
- for (const [actualParameterIndex, actualParameter] of actualParameters.entries()) {
61
- if (expectedParameterIndex >= expectedParametersCount) {
62
- parametersToKeep.push(actualParameter);
63
- continue;
64
- }
65
- const expectedParameter = signatureParameters[expectedParameterIndex];
66
- assert.ok(expectedParameter, "Expected parameter not found.");
67
- const expectedType = typeChecker.getTypeOfSymbol(expectedParameter);
68
- const actualType = typeChecker.getTypeAtLocation(
69
- parserServices.esTreeNodeToTSNodeMap.get(actualParameter)
70
- );
71
- log(
72
- "expected type: #",
73
- expectedParameterIndex,
74
- expectedParameter.escapedName,
75
- typeChecker.typeToString(expectedType)
76
- );
77
- log(
78
- "actual type: #",
79
- actualParameterIndex,
80
- sourceCode.getText(actualParameter),
81
- typeChecker.typeToString(actualType)
82
- );
83
- if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
84
- parametersToKeep.push(actualParameter);
85
- expectedParameterIndex++;
86
- log("matched");
87
- } else {
88
- log("not matched");
89
- }
85
+ let expectedParameterIndex = 0;
86
+ for (const [actualParameterIndex, actualParameter] of actualParameters.entries()) {
87
+ if (expectedParameterIndex >= expectedParametersCount) {
88
+ break;
89
+ }
90
+ const expectedParameter = expectedParameters[expectedParameterIndex];
91
+ assert.ok(expectedParameter, "Expected parameter not found.");
92
+ const expectedType = typeChecker.getTypeOfSymbol(expectedParameter);
93
+ const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(actualParameter));
94
+ const actualTypeString = typeChecker.typeToString(actualType);
95
+ log(
96
+ "expected type: #",
97
+ expectedParameterIndex,
98
+ expectedParameter.escapedName,
99
+ typeChecker.typeToString(expectedType)
100
+ );
101
+ log("actual type: #", actualParameterIndex, sourceCode.getText(actualParameter), actualTypeString);
102
+ if (!typesToCheck.includes(actualTypeString)) {
103
+ parametersToKeep.push(actualParameter);
104
+ log("skipped");
105
+ } else if (
106
+ // @ts-expect-error: this is typescript's internal API
107
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
108
+ typeChecker.isTypeAssignableTo(actualType, expectedType) === true
109
+ ) {
110
+ parametersToKeep.push(actualParameter);
111
+ log("matched");
112
+ expectedParameterIndex++;
113
+ } else {
114
+ log("not matched");
90
115
  }
91
116
  }
92
117
  if (parametersToKeep.length === actualParametersCount) {
@@ -129,4 +154,4 @@ export {
129
154
  fix_function_call_arguments_default as default,
130
155
  ruleId
131
156
  };
132
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGFBQWEsZ0JBQWdCO0FBQ3RDLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8sV0FBVztBQUNsQixPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUM5RSxJQUFNLE1BQU0sTUFBTSwyQ0FBMkM7QUFFN0QsSUFBTSxPQUFPLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IscUNBQXFDO0FBQUEsTUFDckMsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0saUJBQWlCLFlBQVksa0JBQWtCLE9BQU87QUFDNUQsVUFBTSxjQUFjLGVBQWUsUUFBUSxlQUFlO0FBQzFELFVBQU0sYUFBYSxRQUFRO0FBRTNCLFdBQU87QUFBQSxNQUNMLGVBQWUsZ0JBQWdCO0FBRzdCLFlBQUksZUFBZSxPQUFPLFNBQVMsU0FBUyxlQUFlLGtCQUFrQjtBQUMzRTtBQUFBLFFBQ0Y7QUFFQSxZQUFJLG9CQUFvQixRQUFRLFFBQVE7QUFDeEMsWUFBSSxtQkFBbUIsV0FBVyxRQUFRLGNBQWMsQ0FBQztBQUN6RCxZQUFJO0FBQ0YsZ0JBQU0sZUFBZSxlQUFlLHNCQUFzQixJQUFJLGVBQWUsTUFBTTtBQUNuRixnQkFBTSxhQUFhLFlBQVksa0JBQWtCLFlBQVk7QUFFN0QsZ0JBQU0sYUFBYSxXQUFXLGtCQUFrQjtBQUNoRDtBQUFBO0FB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
157
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGFBQWEsZ0JBQWdCO0FBQ3RDLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8sV0FBVztBQUNsQixPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFLdEIsSUFBTSxrQkFBa0I7QUFBQSxFQUN0QixjQUFjO0FBQUEsSUFDWjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFDOUUsSUFBTSxNQUFNLE1BQU0sMkNBQTJDO0FBRTdELElBQU0sT0FBTyxXQUFXO0FBQUEsRUFDdEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLHFDQUFxQztBQUFBLE1BQ3JDLGNBQWM7QUFBQSxJQUNoQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLE1BQ047QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxVQUNWLGNBQWM7QUFBQSxZQUNaLGFBQWE7QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxZQUNSO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHNCQUFzQjtBQUFBLE1BQ3hCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQixDQUFDLGVBQWU7QUFBQSxFQUNoQyxPQUFPLFNBQVM7QUFDZCxVQUFNLEVBQUUsYUFBYSxJQUFJLFFBQVEsUUFBUSxDQUFDLEtBQUs7QUFDL0MsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxR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
@@ -89,6 +89,7 @@ var src_default = {
89
89
  [`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
90
90
  [`@checkdigit/${requireFixedServicesImportRuleId}`]: "error",
91
91
  [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
92
+ // --- agent rules BEGIN ---
92
93
  [`@checkdigit/${noMappedResponseRuleId}`]: "off",
93
94
  [`@checkdigit/${addUrlDomainRuleId}`]: "off",
94
95
  [`@checkdigit/${noFixtureRuleId}`]: "off",
@@ -101,6 +102,7 @@ var src_default = {
101
102
  [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "off",
102
103
  [`@checkdigit/${noUnusedImportsRuleId}`]: "off",
103
104
  [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "off"
105
+ // --- agent rules END ---
104
106
  }
105
107
  },
106
108
  recommended: {
@@ -121,44 +123,49 @@ var src_default = {
121
123
  "agent-phase-1-test": {
122
124
  overrides: [
123
125
  {
124
- files: ["*.spec.ts", "*.test.ts", "src/api/v*/index.ts"]
126
+ files: ["*.spec.ts", "*.test.ts", "src/api/v*/index.ts"],
127
+ rules: {
128
+ [`@checkdigit/${noMappedResponseRuleId}`]: "error",
129
+ [`@checkdigit/${addUrlDomainRuleId}`]: "error",
130
+ [`@checkdigit/${noFixtureRuleId}`]: "error",
131
+ [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
132
+ [`@checkdigit/${noStatusCodeRuleId}`]: "error",
133
+ [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
134
+ [`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
135
+ [`@checkdigit/${fetchThenRuleId}`]: "error",
136
+ [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
137
+ [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
138
+ [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
139
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
140
+ }
125
141
  }
126
- ],
127
- rules: {
128
- [`@checkdigit/${noMappedResponseRuleId}`]: "error",
129
- [`@checkdigit/${addUrlDomainRuleId}`]: "error",
130
- [`@checkdigit/${noFixtureRuleId}`]: "error",
131
- [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
132
- [`@checkdigit/${noStatusCodeRuleId}`]: "error",
133
- [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
134
- [`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
135
- [`@checkdigit/${fetchThenRuleId}`]: "error",
136
- [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
137
- [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
138
- [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
139
- [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
140
- }
142
+ ]
141
143
  },
142
144
  "agent-phase-2-production": {
143
- ignorePatterns: ["*.spec.ts", "*.test.ts"],
144
- rules: {
145
- [`@checkdigit/${noMappedResponseRuleId}`]: "error",
146
- [`@checkdigit/${addUrlDomainRuleId}`]: "error",
147
- [`@checkdigit/${noFixtureRuleId}`]: "off",
148
- [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
149
- [`@checkdigit/${noStatusCodeRuleId}`]: "error",
150
- [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
151
- [`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
152
- [`@checkdigit/${fetchThenRuleId}`]: "error",
153
- [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
154
- [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
155
- [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
156
- [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
157
- }
145
+ overrides: [
146
+ {
147
+ files: ["*.ts"],
148
+ excludedFiles: ["*.spec.ts", "*.test.ts"],
149
+ rules: {
150
+ [`@checkdigit/${noMappedResponseRuleId}`]: "error",
151
+ [`@checkdigit/${addUrlDomainRuleId}`]: "error",
152
+ [`@checkdigit/${noFixtureRuleId}`]: "off",
153
+ [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
154
+ [`@checkdigit/${noStatusCodeRuleId}`]: "error",
155
+ [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
156
+ [`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
157
+ [`@checkdigit/${fetchThenRuleId}`]: "error",
158
+ [`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
159
+ [`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
160
+ [`@checkdigit/${noUnusedImportsRuleId}`]: "error",
161
+ [`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
162
+ }
163
+ }
164
+ ]
158
165
  }
159
166
  }
160
167
  };
161
168
  export {
162
169
  src_default as default
163
170
  };
164
- //# sourceMappingURL=data:application/json;base64,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
171
+ //# sourceMappingURL=data:application/json;base64,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
@@ -1,4 +1,9 @@
1
1
  import { ESLintUtils } from '@typescript-eslint/utils';
2
2
  export declare const ruleId = "fix-function-call-arguments";
3
- declare const rule: ESLintUtils.RuleModule<"unknownError" | "removeIncompatibleFunctionArguments", never[], ESLintUtils.RuleListener>;
3
+ export interface FixFunctionCallArgumentsRuleOptions {
4
+ typesToCheck: string[];
5
+ }
6
+ declare const rule: ESLintUtils.RuleModule<"unknownError" | "removeIncompatibleFunctionArguments", {
7
+ typesToCheck: string[];
8
+ }[], ESLintUtils.RuleListener>;
4
9
  export default rule;
@@ -27,7 +27,9 @@ 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
+ "fix-function-call-arguments": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeIncompatibleFunctionArguments", {
31
+ typesToCheck: string[];
32
+ }[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
31
33
  };
32
34
  configs: {
33
35
  all: {
@@ -80,38 +82,41 @@ declare const _default: {
80
82
  'agent-phase-1-test': {
81
83
  overrides: {
82
84
  files: string[];
85
+ rules: {
86
+ "@checkdigit/no-mapped-response": string;
87
+ "@checkdigit/add-url-domain": string;
88
+ "@checkdigit/no-fixture": string;
89
+ "@checkdigit/no-service-wrapper": string;
90
+ "@checkdigit/no-status-code": string;
91
+ "@checkdigit/fetch-response-body-json": string;
92
+ "@checkdigit/fetch-response-header-getter-ts": string;
93
+ "@checkdigit/fetch-then": string;
94
+ "@checkdigit/no-unused-function-argument": string;
95
+ "@checkdigit/no-unused-service-variable": string;
96
+ "@checkdigit/no-unused-imports": string;
97
+ "@checkdigit/fix-function-call-arguments": string;
98
+ };
83
99
  }[];
84
- rules: {
85
- "@checkdigit/no-mapped-response": string;
86
- "@checkdigit/add-url-domain": string;
87
- "@checkdigit/no-fixture": string;
88
- "@checkdigit/no-service-wrapper": string;
89
- "@checkdigit/no-status-code": string;
90
- "@checkdigit/fetch-response-body-json": string;
91
- "@checkdigit/fetch-response-header-getter-ts": string;
92
- "@checkdigit/fetch-then": string;
93
- "@checkdigit/no-unused-function-argument": string;
94
- "@checkdigit/no-unused-service-variable": string;
95
- "@checkdigit/no-unused-imports": string;
96
- "@checkdigit/fix-function-call-arguments": string;
97
- };
98
100
  };
99
101
  'agent-phase-2-production': {
100
- ignorePatterns: string[];
101
- rules: {
102
- "@checkdigit/no-mapped-response": string;
103
- "@checkdigit/add-url-domain": string;
104
- "@checkdigit/no-fixture": string;
105
- "@checkdigit/no-service-wrapper": string;
106
- "@checkdigit/no-status-code": string;
107
- "@checkdigit/fetch-response-body-json": string;
108
- "@checkdigit/fetch-response-header-getter-ts": string;
109
- "@checkdigit/fetch-then": string;
110
- "@checkdigit/no-unused-function-argument": string;
111
- "@checkdigit/no-unused-service-variable": string;
112
- "@checkdigit/no-unused-imports": string;
113
- "@checkdigit/fix-function-call-arguments": string;
114
- };
102
+ overrides: {
103
+ files: string[];
104
+ excludedFiles: string[];
105
+ rules: {
106
+ "@checkdigit/no-mapped-response": string;
107
+ "@checkdigit/add-url-domain": string;
108
+ "@checkdigit/no-fixture": string;
109
+ "@checkdigit/no-service-wrapper": string;
110
+ "@checkdigit/no-status-code": string;
111
+ "@checkdigit/fetch-response-body-json": string;
112
+ "@checkdigit/fetch-response-header-getter-ts": string;
113
+ "@checkdigit/fetch-then": string;
114
+ "@checkdigit/no-unused-function-argument": string;
115
+ "@checkdigit/no-unused-service-variable": string;
116
+ "@checkdigit/no-unused-imports": string;
117
+ "@checkdigit/fix-function-call-arguments": string;
118
+ };
119
+ }[];
115
120
  };
116
121
  };
117
122
  };
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-7c7f","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","debug":"^4.3.7","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/debug":"^4.1.12","@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-4a28","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","debug":"^4.3.7","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/debug":"^4.1.12","@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"}}
@@ -13,6 +13,18 @@ import getDocumentationUrl from '../get-documentation-url';
13
13
 
14
14
  export const ruleId = 'fix-function-call-arguments';
15
15
 
16
+ export interface FixFunctionCallArgumentsRuleOptions {
17
+ typesToCheck: string[];
18
+ }
19
+ const DEFAULT_OPTIONS = {
20
+ typesToCheck: [
21
+ 'Configuration<ResolvedServices>',
22
+ 'Fixture<ResolvedServices>',
23
+ 'InboundContext',
24
+ '{ get: () => string; }',
25
+ ],
26
+ };
27
+
16
28
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
17
29
  const log = debug('eslint-plugin:fix-function-call-arguments');
18
30
 
@@ -28,10 +40,25 @@ const rule = createRule({
28
40
  unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
29
41
  },
30
42
  fixable: 'code',
31
- schema: [],
43
+ schema: [
44
+ {
45
+ type: 'object',
46
+ properties: {
47
+ typesToCheck: {
48
+ description: 'Text representation of the types of which the function call parameters will be examine',
49
+ type: 'array',
50
+ items: {
51
+ type: 'string',
52
+ },
53
+ },
54
+ },
55
+ additionalProperties: false,
56
+ },
57
+ ],
32
58
  },
33
- defaultOptions: [],
59
+ defaultOptions: [DEFAULT_OPTIONS],
34
60
  create(context) {
61
+ const { typesToCheck } = context.options[0] ?? DEFAULT_OPTIONS;
35
62
  const parserServices = ESLintUtils.getParserServices(context);
36
63
  const typeChecker = parserServices.program.getTypeChecker();
37
64
  const sourceCode = context.sourceCode;
@@ -51,70 +78,69 @@ const rule = createRule({
51
78
  const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
52
79
 
53
80
  const signatures = calleeType.getCallSignatures();
54
- if (
81
+ if (signatures.length > 1) {
55
82
  // ignore complex signatures with overloads
56
- signatures.length > 1
57
- ) {
58
83
  return;
59
84
  }
60
85
 
61
86
  const signature = signatures[0];
62
- if (
63
- !signature ||
64
- // ignore complex signatures
65
- (signature.typeParameters !== undefined && signature.typeParameters.length > 0)
66
- ) {
87
+ assert.ok(signature, 'Signature not found.');
88
+ if (signature.typeParameters !== undefined && signature.typeParameters.length > 0) {
89
+ // ignore complex signatures with type parameters
67
90
  return;
68
91
  }
69
92
 
70
- const signatureParameters = signature.getParameters();
71
- const expectedParametersCount = signatureParameters.length;
93
+ log('signature:', signature.getDeclaration().getText());
94
+ const expectedParameters = signature.getParameters();
95
+ log(
96
+ 'expected parameters:',
97
+ expectedParameters.map((expectedParameter) =>
98
+ typeChecker.typeToString(typeChecker.getTypeOfSymbol(expectedParameter)),
99
+ ),
100
+ );
101
+ const expectedParametersCount = expectedParameters.length;
72
102
  const actualParameters = callExpression.arguments;
73
103
  const actualParametersCount = actualParameters.length;
74
104
  if (actualParametersCount === 0 || actualParametersCount === expectedParametersCount) {
75
105
  return;
76
106
  }
77
- const parametersToKeep: TSESTree.CallExpressionArgument[] = [];
78
-
79
- if (expectedParametersCount > 0) {
80
- let expectedParameterIndex = 0;
81
- for (const [actualParameterIndex, actualParameter] of actualParameters.entries()) {
82
- if (expectedParameterIndex >= expectedParametersCount) {
83
- parametersToKeep.push(actualParameter);
84
- continue;
85
- }
86
-
87
- const expectedParameter = signatureParameters[expectedParameterIndex];
88
- assert.ok(expectedParameter, 'Expected parameter not found.');
89
107
 
90
- const expectedType = typeChecker.getTypeOfSymbol(expectedParameter);
91
- const actualType = typeChecker.getTypeAtLocation(
92
- parserServices.esTreeNodeToTSNodeMap.get(actualParameter),
93
- );
108
+ const parametersToKeep: TSESTree.CallExpressionArgument[] = [];
109
+ let expectedParameterIndex = 0;
110
+ for (const [actualParameterIndex, actualParameter] of actualParameters.entries()) {
111
+ // eslint-disable-next-line max-depth
112
+ if (expectedParameterIndex >= expectedParametersCount) {
113
+ break;
114
+ }
94
115
 
95
- // eslint-disable-next-line no-console
96
- log(
97
- 'expected type: #',
98
- expectedParameterIndex,
99
- expectedParameter.escapedName,
100
- typeChecker.typeToString(expectedType),
101
- );
102
- // eslint-disable-next-line no-console
103
- log(
104
- 'actual type: #',
105
- actualParameterIndex,
106
- sourceCode.getText(actualParameter),
107
- typeChecker.typeToString(actualType),
108
- );
109
- // @ts-expect-error: internal API
116
+ const expectedParameter = expectedParameters[expectedParameterIndex];
117
+ assert.ok(expectedParameter, 'Expected parameter not found.');
118
+
119
+ const expectedType = typeChecker.getTypeOfSymbol(expectedParameter);
120
+ const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(actualParameter));
121
+ const actualTypeString = typeChecker.typeToString(actualType);
122
+ log(
123
+ 'expected type: #',
124
+ expectedParameterIndex,
125
+ expectedParameter.escapedName,
126
+ typeChecker.typeToString(expectedType),
127
+ );
128
+ log('actual type: #', actualParameterIndex, sourceCode.getText(actualParameter), actualTypeString);
129
+
130
+ if (!typesToCheck.includes(actualTypeString)) {
131
+ // skip the parameter type checking if it's not in the candidate types
132
+ parametersToKeep.push(actualParameter);
133
+ log('skipped');
134
+ } else if (
135
+ // @ts-expect-error: this is typescript's internal API
110
136
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
111
- if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
112
- parametersToKeep.push(actualParameter);
113
- expectedParameterIndex++;
114
- log('matched');
115
- } else {
116
- log('not matched');
117
- }
137
+ typeChecker.isTypeAssignableTo(actualType, expectedType) === true
138
+ ) {
139
+ parametersToKeep.push(actualParameter);
140
+ log('matched');
141
+ expectedParameterIndex++;
142
+ } else {
143
+ log('not matched');
118
144
  }
119
145
  }
120
146