@checkdigit/eslint-plugin 6.6.0-PR.75-0fc6 → 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.
- package/dist-cjs/index.cjs +840 -667
- package/dist-cjs/metafile.json +65 -7
- package/dist-mjs/agent/fix-function-call-arguments.mjs +96 -0
- package/dist-mjs/agent/no-unused-imports.mjs +81 -0
- package/dist-mjs/index.mjs +14 -4
- package/dist-types/agent/fix-function-call-arguments.d.ts +4 -0
- package/dist-types/agent/no-unused-imports.d.ts +4 -0
- package/dist-types/index.d.ts +6 -0
- package/package.json +1 -1
- package/src/agent/fix-function-call-arguments.ts +112 -0
- package/src/agent/no-unused-imports.ts +102 -0
- package/src/index.ts +10 -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": 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": [
|
|
@@ -12569,6 +12590,22 @@
|
|
|
12569
12590
|
],
|
|
12570
12591
|
"format": "esm"
|
|
12571
12592
|
},
|
|
12593
|
+
"src/agent/no-unused-imports.ts": {
|
|
12594
|
+
"bytes": 3439,
|
|
12595
|
+
"imports": [
|
|
12596
|
+
{
|
|
12597
|
+
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
12598
|
+
"kind": "import-statement",
|
|
12599
|
+
"original": "@typescript-eslint/utils"
|
|
12600
|
+
},
|
|
12601
|
+
{
|
|
12602
|
+
"path": "src/get-documentation-url.ts",
|
|
12603
|
+
"kind": "import-statement",
|
|
12604
|
+
"original": "../get-documentation-url"
|
|
12605
|
+
}
|
|
12606
|
+
],
|
|
12607
|
+
"format": "esm"
|
|
12608
|
+
},
|
|
12572
12609
|
"src/agent/no-unused-service-variable.ts": {
|
|
12573
12610
|
"bytes": 3080,
|
|
12574
12611
|
"imports": [
|
|
@@ -12709,7 +12746,7 @@
|
|
|
12709
12746
|
"format": "esm"
|
|
12710
12747
|
},
|
|
12711
12748
|
"src/index.ts": {
|
|
12712
|
-
"bytes":
|
|
12749
|
+
"bytes": 7581,
|
|
12713
12750
|
"imports": [
|
|
12714
12751
|
{
|
|
12715
12752
|
"path": "src/agent/add-url-domain.ts",
|
|
@@ -12731,6 +12768,11 @@
|
|
|
12731
12768
|
"kind": "import-statement",
|
|
12732
12769
|
"original": "./agent/fetch-then"
|
|
12733
12770
|
},
|
|
12771
|
+
{
|
|
12772
|
+
"path": "src/agent/fix-function-call-arguments.ts",
|
|
12773
|
+
"kind": "import-statement",
|
|
12774
|
+
"original": "./agent/fix-function-call-arguments"
|
|
12775
|
+
},
|
|
12734
12776
|
{
|
|
12735
12777
|
"path": "src/invalid-json-stringify.ts",
|
|
12736
12778
|
"kind": "import-statement",
|
|
@@ -12776,6 +12818,11 @@
|
|
|
12776
12818
|
"kind": "import-statement",
|
|
12777
12819
|
"original": "./agent/no-unused-function-argument"
|
|
12778
12820
|
},
|
|
12821
|
+
{
|
|
12822
|
+
"path": "src/agent/no-unused-imports.ts",
|
|
12823
|
+
"kind": "import-statement",
|
|
12824
|
+
"original": "./agent/no-unused-imports"
|
|
12825
|
+
},
|
|
12779
12826
|
{
|
|
12780
12827
|
"path": "src/agent/no-unused-service-variable.ts",
|
|
12781
12828
|
"kind": "import-statement",
|
|
@@ -13393,6 +13440,11 @@
|
|
|
13393
13440
|
"kind": "require-call",
|
|
13394
13441
|
"external": true
|
|
13395
13442
|
},
|
|
13443
|
+
{
|
|
13444
|
+
"path": "node:assert",
|
|
13445
|
+
"kind": "require-call",
|
|
13446
|
+
"external": true
|
|
13447
|
+
},
|
|
13396
13448
|
{
|
|
13397
13449
|
"path": "node:assert",
|
|
13398
13450
|
"kind": "require-call",
|
|
@@ -15650,7 +15702,7 @@
|
|
|
15650
15702
|
"bytesInOutput": 2219
|
|
15651
15703
|
},
|
|
15652
15704
|
"src/index.ts": {
|
|
15653
|
-
"bytesInOutput":
|
|
15705
|
+
"bytesInOutput": 4417
|
|
15654
15706
|
},
|
|
15655
15707
|
"src/agent/url.ts": {
|
|
15656
15708
|
"bytesInOutput": 745
|
|
@@ -15685,6 +15737,9 @@
|
|
|
15685
15737
|
"src/agent/fetch-then.ts": {
|
|
15686
15738
|
"bytesInOutput": 12231
|
|
15687
15739
|
},
|
|
15740
|
+
"src/agent/fix-function-call-arguments.ts": {
|
|
15741
|
+
"bytesInOutput": 3689
|
|
15742
|
+
},
|
|
15688
15743
|
"src/invalid-json-stringify.ts": {
|
|
15689
15744
|
"bytesInOutput": 2473
|
|
15690
15745
|
},
|
|
@@ -15704,22 +15759,25 @@
|
|
|
15704
15759
|
"bytesInOutput": 2006
|
|
15705
15760
|
},
|
|
15706
15761
|
"src/agent/no-mapped-response.ts": {
|
|
15707
|
-
"bytesInOutput":
|
|
15762
|
+
"bytesInOutput": 2421
|
|
15708
15763
|
},
|
|
15709
15764
|
"src/no-promise-instance-method.ts": {
|
|
15710
15765
|
"bytesInOutput": 1277
|
|
15711
15766
|
},
|
|
15712
15767
|
"src/agent/no-service-wrapper.ts": {
|
|
15713
|
-
"bytesInOutput":
|
|
15768
|
+
"bytesInOutput": 8944
|
|
15714
15769
|
},
|
|
15715
15770
|
"src/agent/no-status-code.ts": {
|
|
15716
15771
|
"bytesInOutput": 2042
|
|
15717
15772
|
},
|
|
15718
15773
|
"src/agent/no-unused-function-argument.ts": {
|
|
15719
|
-
"bytesInOutput":
|
|
15774
|
+
"bytesInOutput": 2867
|
|
15775
|
+
},
|
|
15776
|
+
"src/agent/no-unused-imports.ts": {
|
|
15777
|
+
"bytesInOutput": 3007
|
|
15720
15778
|
},
|
|
15721
15779
|
"src/agent/no-unused-service-variable.ts": {
|
|
15722
|
-
"bytesInOutput":
|
|
15780
|
+
"bytesInOutput": 2651
|
|
15723
15781
|
},
|
|
15724
15782
|
"src/require-fixed-services-import.ts": {
|
|
15725
15783
|
"bytesInOutput": 1262
|
|
@@ -15758,7 +15816,7 @@
|
|
|
15758
15816
|
"bytesInOutput": 3362
|
|
15759
15817
|
}
|
|
15760
15818
|
},
|
|
15761
|
-
"bytes":
|
|
15819
|
+
"bytes": 4368100
|
|
15762
15820
|
}
|
|
15763
15821
|
}
|
|
15764
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==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// src/agent/no-unused-imports.ts
|
|
2
|
+
import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
|
|
3
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
4
|
+
var ruleId = "no-unused-imports";
|
|
5
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
|
+
var rule = createRule({
|
|
7
|
+
name: ruleId,
|
|
8
|
+
meta: {
|
|
9
|
+
type: "suggestion",
|
|
10
|
+
docs: {
|
|
11
|
+
description: "Remove unused imports."
|
|
12
|
+
},
|
|
13
|
+
messages: {
|
|
14
|
+
removeUnusedImports: "Removing unused imports.",
|
|
15
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
16
|
+
},
|
|
17
|
+
fixable: "code",
|
|
18
|
+
schema: []
|
|
19
|
+
},
|
|
20
|
+
defaultOptions: [],
|
|
21
|
+
create(context) {
|
|
22
|
+
const sourceCode = context.sourceCode;
|
|
23
|
+
function isImportUsed(specifier, scope) {
|
|
24
|
+
return specifier.type !== TSESTree.AST_NODE_TYPES.ImportSpecifier || scope.references.some((ref) => ref.identifier.name === specifier.local.name) || scope.childScopes.some((childScope) => isImportUsed(specifier, childScope));
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
ImportDeclaration(importDeclaration) {
|
|
28
|
+
try {
|
|
29
|
+
const moduleName = importDeclaration.source.value;
|
|
30
|
+
if (!importDeclaration.specifiers.every(
|
|
31
|
+
(specifier) => specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier
|
|
32
|
+
) || // [TODO:] move to meta schema
|
|
33
|
+
!["@checkdigit/serve-runtime", "@checkdigit/fixture"].includes(moduleName)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const originalSpecifiers = importDeclaration.specifiers;
|
|
37
|
+
const scope = sourceCode.getScope(importDeclaration);
|
|
38
|
+
const usedSpecifiers = originalSpecifiers.filter((specifier) => isImportUsed(specifier, scope));
|
|
39
|
+
if (usedSpecifiers.length === originalSpecifiers.length) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (usedSpecifiers.length === 0) {
|
|
43
|
+
context.report({
|
|
44
|
+
messageId: "removeUnusedImports",
|
|
45
|
+
node: importDeclaration,
|
|
46
|
+
*fix(fixer) {
|
|
47
|
+
yield fixer.remove(importDeclaration);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const usedSpecifierTexts = usedSpecifiers.map((specifier) => sourceCode.getText(specifier));
|
|
53
|
+
const updatedImportDeclaration = `import ${importDeclaration.importKind === "type" ? "type " : ""}{ ${usedSpecifierTexts.join(", ")} } from '${moduleName}';`;
|
|
54
|
+
context.report({
|
|
55
|
+
messageId: "removeUnusedImports",
|
|
56
|
+
node: importDeclaration,
|
|
57
|
+
*fix(fixer) {
|
|
58
|
+
yield fixer.replaceText(importDeclaration, updatedImportDeclaration);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
63
|
+
context.report({
|
|
64
|
+
node: importDeclaration,
|
|
65
|
+
messageId: "unknownError",
|
|
66
|
+
data: {
|
|
67
|
+
fileName: context.filename,
|
|
68
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
var no_unused_imports_default = rule;
|
|
77
|
+
export {
|
|
78
|
+
no_unused_imports_default as default,
|
|
79
|
+
ruleId
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLXVudXNlZC1pbXBvcnRzLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsYUFBYSxnQkFBZ0I7QUFFdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFPLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IscUJBQXFCO0FBQUEsTUFDckIsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBRTNCLGFBQVMsYUFBYSxXQUFrQyxPQUE2QjtBQUNuRixhQUNFLFVBQVUsU0FBUyxTQUFTLGVBQWUsbUJBQzNDLE1BQU0sV0FBVyxLQUFLLENBQUMsUUFBUSxJQUFJLFdBQVcsU0FBUyxVQUFVLE1BQU0sSUFBSSxLQUMzRSxNQUFNLFlBQVksS0FBSyxDQUFDLGVBQWUsYUFBYSxXQUFXLFVBQVUsQ0FBQztBQUFBLElBRTlFO0FBRUEsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLG1CQUFtQjtBQUNuQyxZQUFJO0FBQ0YsZ0JBQU0sYUFBYSxrQkFBa0IsT0FBTztBQUM1QyxjQUNFLENBQUMsa0JBQWtCLFdBQVc7QUFBQSxZQUM1QixDQUFDLGNBQWMsVUFBVSxTQUFTLFNBQVMsZUFBZTtBQUFBLFVBQzVEO0FBQUEsVUFFQSxDQUFDLENBQUMsNkJBQTZCLHFCQUFxQixFQUFFLFNBQVMsVUFBVSxHQUN6RTtBQUNBO0FBQUEsVUFDRjtBQUVBLGdCQUFNLHFCQUFxQixrQkFBa0I7QUFDN0MsZ0JBQU0sUUFBUSxXQUFXLFNBQVMsaUJBQWlCO0FBQ25ELGdCQUFNLGlCQUFpQixtQkFBbUIsT0FBTyxDQUFDLGNBQWMsYUFBYSxXQUFXLEtBQUssQ0FBQztBQUM5RixjQUFJLGVBQWUsV0FBVyxtQkFBbUIsUUFBUTtBQUN2RDtBQUFBLFVBQ0Y7QUFFQSxjQUFJLGVBQWUsV0FBVyxHQUFHO0FBQy9CLG9CQUFRLE9BQU87QUFBQSxjQUNiLFdBQVc7QUFBQSxjQUNYLE1BQU07QUFBQSxjQUNOLENBQUMsSUFBSSxPQUFPO0FBQ1Ysc0JBQU0sTUFBTSxPQUFPLGlCQUFpQjtBQUFBLGNBQ3RDO0FBQUEsWUFDRixDQUFDO0FBQ0Q7QUFBQSxVQUNGO0FBRUEsZ0JBQU0scUJBQXFCLGVBQWUsSUFBSSxDQUFDLGNBQWMsV0FBVyxRQUFRLFNBQVMsQ0FBQztBQUMxRixnQkFBTSwyQkFBMkIsVUFBVSxrQkFBa0IsZUFBZSxTQUFTLFVBQVUsRUFBRSxLQUFLLG1CQUFtQixLQUFLLElBQUksQ0FBQyxZQUFZLFVBQVU7QUFFekosa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFlBQ04sQ0FBQyxJQUFJLE9BQU87QUFDVixvQkFBTSxNQUFNLFlBQVksbUJBQW1CLHdCQUF3QjtBQUFBLFlBQ3JFO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSCxTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFVBQVUsUUFBUTtBQUFBLGNBQ2xCLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUs7QUFBQSxZQUN6RTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTyw0QkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
|
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";
|
|
@@ -16,6 +19,7 @@ import noStatusCode, { ruleId as noStatusCodeRuleId } from "./agent/no-status-co
|
|
|
16
19
|
import noUnusedFunctionArguments, {
|
|
17
20
|
ruleId as noUnusedFunctionArgumentsRuleId
|
|
18
21
|
} from "./agent/no-unused-function-argument.mjs";
|
|
22
|
+
import noUnusedImports, { ruleId as noUnusedImportsRuleId } from "./agent/no-unused-imports.mjs";
|
|
19
23
|
import noUnusedServiceVariables, { ruleId as noUnusedServiceVariablesRuleId } from "./agent/no-unused-service-variable.mjs";
|
|
20
24
|
import requireFixedServicesImport, {
|
|
21
25
|
ruleId as requireFixedServicesImportRuleId
|
|
@@ -62,7 +66,9 @@ var src_default = {
|
|
|
62
66
|
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
63
67
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
64
68
|
[noUnusedFunctionArgumentsRuleId]: noUnusedFunctionArguments,
|
|
65
|
-
[noUnusedServiceVariablesRuleId]: noUnusedServiceVariables
|
|
69
|
+
[noUnusedServiceVariablesRuleId]: noUnusedServiceVariables,
|
|
70
|
+
[noUnusedImportsRuleId]: noUnusedImports,
|
|
71
|
+
[fixFunctionCallArgumentsRuleId]: fixFunctionCallArguments
|
|
66
72
|
},
|
|
67
73
|
configs: {
|
|
68
74
|
all: {
|
|
@@ -116,7 +122,9 @@ var src_default = {
|
|
|
116
122
|
[`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
|
|
117
123
|
[`@checkdigit/${fetchThenRuleId}`]: "error",
|
|
118
124
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
|
|
119
|
-
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error"
|
|
125
|
+
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
|
|
126
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
127
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
|
|
120
128
|
}
|
|
121
129
|
},
|
|
122
130
|
"agent-phase-2-production": {
|
|
@@ -131,7 +139,9 @@ var src_default = {
|
|
|
131
139
|
[`@checkdigit/${fetchResponseHeaderGetterRuleId}`]: "error",
|
|
132
140
|
[`@checkdigit/${fetchThenRuleId}`]: "error",
|
|
133
141
|
[`@checkdigit/${noUnusedFunctionArgumentsRuleId}`]: "error",
|
|
134
|
-
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error"
|
|
142
|
+
[`@checkdigit/${noUnusedServiceVariablesRuleId}`]: "error",
|
|
143
|
+
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
144
|
+
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error"
|
|
135
145
|
}
|
|
136
146
|
}
|
|
137
147
|
}
|
|
@@ -139,4 +149,4 @@ var src_default = {
|
|
|
139
149
|
export {
|
|
140
150
|
src_default as default
|
|
141
151
|
};
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU8seUJBQXlCLFVBQVUsbUNBQW1DO0FBQzdFLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyx3QkFBd0IsVUFBVSxrQ0FBa0M7QUFDM0UsT0FBTyx1QkFBdUIsVUFBVSxpQ0FBaUM7QUFDekUsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU8sa0JBQWtCLFVBQVUsNEJBQTRCO0FBQy9ELE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxtQkFBbUIsVUFBVSw2QkFBNkI7QUFDakUsT0FBTyw0QkFBNEIsVUFBVSxzQ0FBc0M7QUFDbkYsT0FBTztBQUFBLEVBQ0wsVUFBVTtBQUFBLE9BQ0w7QUFDUCxPQUFPO0FBQUEsRUFDTCxVQUFVO0FBQUEsT0FDTDtBQUNQLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxxQkFBcUI7QUFDNUIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxrQkFBa0I7QUFDekIsT0FBTyxZQUFZO0FBQ25CLE9BQU8sc0JBQXNCO0FBQzdCLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8seUNBQXlDO0FBQ2hELE9BQU8seUJBQXlCO0FBRWhDLElBQU8sY0FBUTtBQUFBLEVBQ2IsT0FBTztBQUFBLElBQ0wscUJBQXFCO0FBQUEsSUFDckIsbUJBQW1CO0FBQUEsSUFDbkIsV0FBVztBQUFBLElBQ1gseUJBQXlCO0FBQUEsSUFDekIsa0JBQWtCO0FBQUEsSUFDbEIsc0JBQXNCO0FBQUEsSUFDdEIsOEJBQThCO0FBQUEsSUFDOUIsMkNBQTJDO0FBQUEsSUFDM0MsMkJBQTJCO0FBQUEsSUFDM0IsQ0FBQywwQkFBMEIsR0FBRztBQUFBLElBQzlCLENBQUMsNkJBQTZCLEdBQUc7QUFBQSxJQUNqQyxDQUFDLGVBQWUsR0FBRztBQUFBLElBQ25CLENBQUMsZUFBZSxHQUFHO0FBQUEsSUFDbkIsQ0FBQyxzQkFBc0IsR0FBRztBQUFBLElBQzFCLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxJQUN0QixDQUFDLDJCQUEyQixHQUFHO0FBQUEsSUFDL0IsQ0FBQywrQkFBK0IsR0FBRztBQUFBLElBQ25DLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxJQUN0QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsSUFDeEIsQ0FBQyxzQkFBc0IsR0FBRztBQUFBLElBQzFCLENBQUMsZ0NBQWdDLEdBQUc7QUFBQSxJQUNwQyxDQUFDLHlCQUF5QixHQUFHO0FBQUEsSUFDN0IsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLElBQ3BDLENBQUMscUNBQXFDLEdBQUc7QUFBQSxJQUN6QyxDQUFDLCtCQUErQixHQUFHO0FBQUEsSUFDbkMsQ0FBQyw4QkFBOEIsR0FBRztBQUFBLElBQ2xDLENBQUMscUJBQXFCLEdBQUc7QUFBQSxJQUN6QixDQUFDLDhCQUE4QixHQUFHO0FBQUEsRUFDcEM7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxNQUNILE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxRQUNsRCxDQUFDLGVBQWUsb0JBQW9CLEVBQUUsR0FBRztBQUFBLFFBQ3pDLENBQUMsZUFBZSxnQ0FBZ0MsRUFBRSxHQUFHO0FBQUEsUUFDckQsQ0FBQyxlQUFlLHlCQUF5QixFQUFFLEdBQUc7QUFBQSxRQUM5QyxDQUFDLGVBQWUsZ0NBQWdDLEVBQUUsR0FBRztBQUFBLFFBQ3JELENBQUMsZUFBZSxxQ0FBcUMsRUFBRSxHQUFHO0FBQUEsTUFDNUQ7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxRQUN2Qyw4QkFBOEI7QUFBQSxRQUM5QixDQUFDLGVBQWUsMEJBQTBCLEVBQUUsR0FBRztBQUFBLFFBQy9DLENBQUMsZUFBZSw2QkFBNkIsRUFBRSxHQUFHO0FBQUEsTUFDcEQ7QUFBQSxJQUNGO0FBQUEsSUFDQSxzQkFBc0I7QUFBQSxNQUNwQixXQUFXO0FBQUEsUUFDVDtBQUFBLFVBQ0UsT0FBTyxDQUFDLGFBQWEsYUFBYSxxQkFBcUI7QUFBQSxRQUN6RDtBQUFBLE1BQ0Y7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUNwQyxDQUFDLGVBQWUsc0JBQXNCLEVBQUUsR0FBRztBQUFBLFFBQzNDLENBQUMsZUFBZSxrQkFBa0IsRUFBRSxHQUFHO0FBQUEsUUFDdkMsQ0FBQyxlQUFlLDJCQUEyQixFQUFFLEdBQUc7QUFBQSxRQUNoRCxDQUFDLGVBQWUsK0JBQStCLEVBQUUsR0FBRztBQUFBLFFBQ3BELENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxRQUNuRCxDQUFDLGVBQWUscUJBQXFCLEVBQUUsR0FBRztBQUFBLFFBQzFDLENBQUMsZUFBZSw4QkFBOEIsRUFBRSxHQUFHO0FBQUEsTUFDckQ7QUFBQSxJQUNGO0FBQUEsSUFDQSw0QkFBNEI7QUFBQSxNQUMxQixnQkFBZ0IsQ0FBQyxhQUFhLFdBQVc7QUFBQSxNQUN6QyxPQUFPO0FBQUEsUUFDTCxDQUFDLGVBQWUsc0JBQXNCLEVBQUUsR0FBRztBQUFBLFFBQzNDLENBQUMsZUFBZSxrQkFBa0IsRUFBRSxHQUFHO0FBQUEsUUFDdkMsQ0FBQyxlQUFlLGVBQWUsRUFBRSxHQUFHO0FBQUEsUUFDcEMsQ0FBQyxlQUFlLHNCQUFzQixFQUFFLEdBQUc7QUFBQSxRQUMzQyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsR0FBRztBQUFBLFFBQ3ZDLENBQUMsZUFBZSwyQkFBMkIsRUFBRSxHQUFHO0FBQUEsUUFDaEQsQ0FBQyxlQUFlLCtCQUErQixFQUFFLEdBQUc7QUFBQSxRQUNwRCxDQUFDLGVBQWUsZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUNwQyxDQUFDLGVBQWUsK0JBQStCLEVBQUUsR0FBRztBQUFBLFFBQ3BELENBQUMsZUFBZSw4QkFBOEIsRUFBRSxHQUFHO0FBQUEsUUFDbkQsQ0FBQyxlQUFlLHFCQUFxQixFQUFFLEdBQUc7QUFBQSxRQUMxQyxDQUFDLGVBQWUsOEJBQThCLEVBQUUsR0FBRztBQUFBLE1BQ3JEO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -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
|
@@ -26,6 +26,8 @@ declare const _default: {
|
|
|
26
26
|
"require-type-out-of-type-only-imports": import("@typescript-eslint/utils/ts-eslint").RuleModule<"moveTypeOutside", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
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
|
+
"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>;
|
|
29
31
|
};
|
|
30
32
|
configs: {
|
|
31
33
|
all: {
|
|
@@ -78,6 +80,8 @@ declare const _default: {
|
|
|
78
80
|
"@checkdigit/fetch-then": string;
|
|
79
81
|
"@checkdigit/no-unused-function-argument": string;
|
|
80
82
|
"@checkdigit/no-unused-service-variable": string;
|
|
83
|
+
"@checkdigit/no-unused-imports": string;
|
|
84
|
+
"@checkdigit/fix-function-call-arguments": string;
|
|
81
85
|
};
|
|
82
86
|
};
|
|
83
87
|
'agent-phase-2-production': {
|
|
@@ -93,6 +97,8 @@ declare const _default: {
|
|
|
93
97
|
"@checkdigit/fetch-then": string;
|
|
94
98
|
"@checkdigit/no-unused-function-argument": string;
|
|
95
99
|
"@checkdigit/no-unused-service-variable": string;
|
|
100
|
+
"@checkdigit/no-unused-imports": string;
|
|
101
|
+
"@checkdigit/fix-function-call-arguments": string;
|
|
96
102
|
};
|
|
97
103
|
};
|
|
98
104
|
};
|
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-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;
|