@checkdigit/eslint-plugin 6.6.0-PR.75-3378 → 6.6.0-PR.75-e357

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.
@@ -416,7 +416,7 @@
416
416
  "format": "cjs"
417
417
  },
418
418
  "node_modules/ms/index.js": {
419
- "bytes": 3134,
419
+ "bytes": 3135,
420
420
  "imports": [],
421
421
  "format": "cjs"
422
422
  },
@@ -432,7 +432,7 @@
432
432
  "format": "cjs"
433
433
  },
434
434
  "node_modules/debug/src/browser.js": {
435
- "bytes": 6121,
435
+ "bytes": 6131,
436
436
  "imports": [
437
437
  {
438
438
  "path": "node_modules/debug/src/common.js",
@@ -12166,7 +12166,7 @@
12166
12166
  "format": "esm"
12167
12167
  },
12168
12168
  "package.json": {
12169
- "bytes": 2871,
12169
+ "bytes": 2913,
12170
12170
  "imports": [],
12171
12171
  "format": "esm",
12172
12172
  "with": {
@@ -12323,8 +12323,19 @@
12323
12323
  ],
12324
12324
  "format": "esm"
12325
12325
  },
12326
+ "src/library/ts-tree.ts": {
12327
+ "bytes": 2883,
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
+ "format": "esm"
12336
+ },
12326
12337
  "src/agent/fix-function-call-arguments.ts": {
12327
- "bytes": 4313,
12338
+ "bytes": 5206,
12328
12339
  "imports": [
12329
12340
  {
12330
12341
  "path": "node_modules/@typescript-eslint/utils/dist/index.js",
@@ -12336,10 +12347,20 @@
12336
12347
  "kind": "import-statement",
12337
12348
  "external": true
12338
12349
  },
12350
+ {
12351
+ "path": "node_modules/debug/src/index.js",
12352
+ "kind": "import-statement",
12353
+ "original": "debug"
12354
+ },
12339
12355
  {
12340
12356
  "path": "src/get-documentation-url.ts",
12341
12357
  "kind": "import-statement",
12342
12358
  "original": "../get-documentation-url"
12359
+ },
12360
+ {
12361
+ "path": "src/library/ts-tree.ts",
12362
+ "kind": "import-statement",
12363
+ "original": "../library/ts-tree"
12343
12364
  }
12344
12365
  ],
12345
12366
  "format": "esm"
@@ -12448,17 +12469,6 @@
12448
12469
  ],
12449
12470
  "format": "esm"
12450
12471
  },
12451
- "src/library/ts-tree.ts": {
12452
- "bytes": 2883,
12453
- "imports": [
12454
- {
12455
- "path": "node_modules/@typescript-eslint/utils/dist/index.js",
12456
- "kind": "import-statement",
12457
- "original": "@typescript-eslint/utils"
12458
- }
12459
- ],
12460
- "format": "esm"
12461
- },
12462
12472
  "src/agent/no-full-response.ts": {
12463
12473
  "bytes": 2331,
12464
12474
  "imports": [
@@ -13566,16 +13576,16 @@
13566
13576
  "bytesInOutput": 4583
13567
13577
  },
13568
13578
  "node_modules/eslint/node_modules/minimatch/minimatch.js": {
13569
- "bytesInOutput": 18247
13579
+ "bytesInOutput": 18248
13570
13580
  },
13571
13581
  "node_modules/ms/index.js": {
13572
13582
  "bytesInOutput": 2883
13573
13583
  },
13574
13584
  "node_modules/debug/src/common.js": {
13575
- "bytesInOutput": 5472
13585
+ "bytesInOutput": 5483
13576
13586
  },
13577
13587
  "node_modules/debug/src/browser.js": {
13578
- "bytesInOutput": 4661
13588
+ "bytesInOutput": 4675
13579
13589
  },
13580
13590
  "node_modules/has-flag/index.js": {
13581
13591
  "bytesInOutput": 459
@@ -13584,7 +13594,7 @@
13584
13594
  "bytesInOutput": 3132
13585
13595
  },
13586
13596
  "node_modules/debug/src/node.js": {
13587
- "bytesInOutput": 4320
13597
+ "bytesInOutput": 4325
13588
13598
  },
13589
13599
  "node_modules/debug/src/index.js": {
13590
13600
  "bytesInOutput": 316
@@ -13611,7 +13621,7 @@
13611
13621
  "bytesInOutput": 4594
13612
13622
  },
13613
13623
  "node_modules/@eslint/eslintrc/node_modules/minimatch/minimatch.js": {
13614
- "bytesInOutput": 18259
13624
+ "bytesInOutput": 18260
13615
13625
  },
13616
13626
  "node_modules/uri-js/dist/es5/uri.all.js": {
13617
13627
  "bytesInOutput": 49104
@@ -13758,7 +13768,7 @@
13758
13768
  "bytesInOutput": 157
13759
13769
  },
13760
13770
  "node_modules/@eslint/eslintrc/dist/eslintrc.cjs": {
13761
- "bytesInOutput": 103415
13771
+ "bytesInOutput": 103422
13762
13772
  },
13763
13773
  "node_modules/@eslint/js/src/configs/eslint-all.js": {
13764
13774
  "bytesInOutput": 7567
@@ -13770,7 +13780,7 @@
13770
13780
  "bytesInOutput": 260
13771
13781
  },
13772
13782
  "node_modules/eslint/lib/cli-engine/file-enumerator.js": {
13773
- "bytesInOutput": 12987
13783
+ "bytesInOutput": 12998
13774
13784
  },
13775
13785
  "node_modules/yocto-queue/index.js": {
13776
13786
  "bytesInOutput": 1290
@@ -13818,7 +13828,7 @@
13818
13828
  "bytesInOutput": 28051
13819
13829
  },
13820
13830
  "node_modules/eslint/lib/shared/traverser.js": {
13821
- "bytesInOutput": 4738
13831
+ "bytesInOutput": 4740
13822
13832
  },
13823
13833
  "node_modules/eslint/lib/source-code/token-store/cursor.js": {
13824
13834
  "bytesInOutput": 1074
@@ -13899,7 +13909,7 @@
13899
13909
  "bytesInOutput": 895
13900
13910
  },
13901
13911
  "node_modules/eslint/lib/linter/config-comment-parser.js": {
13902
- "bytesInOutput": 4696
13912
+ "bytesInOutput": 4702
13903
13913
  },
13904
13914
  "node_modules/eslint/lib/source-code/source-code.js": {
13905
13915
  "bytesInOutput": 27533
@@ -13908,10 +13918,10 @@
13908
13918
  "bytesInOutput": 206
13909
13919
  },
13910
13920
  "node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js": {
13911
- "bytesInOutput": 5628
13921
+ "bytesInOutput": 5637
13912
13922
  },
13913
13923
  "node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js": {
13914
- "bytesInOutput": 5777
13924
+ "bytesInOutput": 5779
13915
13925
  },
13916
13926
  "node_modules/eslint/lib/linter/code-path-analysis/fork-context.js": {
13917
13927
  "bytesInOutput": 7677
@@ -13926,7 +13936,7 @@
13926
13936
  "bytesInOutput": 7482
13927
13937
  },
13928
13938
  "node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js": {
13929
- "bytesInOutput": 17036
13939
+ "bytesInOutput": 17048
13930
13940
  },
13931
13941
  "node_modules/eslint/lib/linter/apply-disable-directives.js": {
13932
13942
  "bytesInOutput": 10137
@@ -13947,7 +13957,7 @@
13947
13957
  "bytesInOutput": 7454
13948
13958
  },
13949
13959
  "node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js": {
13950
- "bytesInOutput": 2552
13960
+ "bytesInOutput": 2555
13951
13961
  },
13952
13962
  "node_modules/esutils/lib/ast.js": {
13953
13963
  "bytesInOutput": 3324
@@ -14910,7 +14920,7 @@
14910
14920
  "bytesInOutput": 733
14911
14921
  },
14912
14922
  "node_modules/eslint/lib/linter/source-code-fixer.js": {
14913
- "bytesInOutput": 2585
14923
+ "bytesInOutput": 2590
14914
14924
  },
14915
14925
  "node_modules/eslint/lib/linter/timing.js": {
14916
14926
  "bytesInOutput": 2606
@@ -14925,7 +14935,7 @@
14925
14935
  "bytesInOutput": 4605
14926
14936
  },
14927
14937
  "node_modules/@humanwhocodes/config-array/node_modules/minimatch/minimatch.js": {
14928
- "bytesInOutput": 18270
14938
+ "bytesInOutput": 18271
14929
14939
  },
14930
14940
  "node_modules/@humanwhocodes/object-schema/src/merge-strategy.js": {
14931
14941
  "bytesInOutput": 1449
@@ -14940,7 +14950,7 @@
14940
14950
  "bytesInOutput": 326
14941
14951
  },
14942
14952
  "node_modules/@humanwhocodes/config-array/api.js": {
14943
- "bytesInOutput": 22284
14953
+ "bytesInOutput": 22297
14944
14954
  },
14945
14955
  "node_modules/@ungap/structured-clone/cjs/types.js": {
14946
14956
  "bytesInOutput": 588
@@ -14976,7 +14986,7 @@
14976
14986
  "bytesInOutput": 6248
14977
14987
  },
14978
14988
  "node_modules/eslint/lib/linter/linter.js": {
14979
- "bytesInOutput": 57060
14989
+ "bytesInOutput": 57092
14980
14990
  },
14981
14991
  "node_modules/eslint/lib/linter/index.js": {
14982
14992
  "bytesInOutput": 372
@@ -15096,7 +15106,7 @@
15096
15106
  "bytesInOutput": 4582
15097
15107
  },
15098
15108
  "node_modules/glob/node_modules/minimatch/minimatch.js": {
15099
- "bytesInOutput": 18247
15109
+ "bytesInOutput": 18248
15100
15110
  },
15101
15111
  "node_modules/inherits/inherits_browser.js": {
15102
15112
  "bytesInOutput": 897
@@ -15141,10 +15151,10 @@
15141
15151
  "bytesInOutput": 2959
15142
15152
  },
15143
15153
  "node_modules/eslint/lib/cli-engine/lint-result-cache.js": {
15144
- "bytesInOutput": 5078
15154
+ "bytesInOutput": 5086
15145
15155
  },
15146
15156
  "node_modules/eslint/lib/eslint/flat-eslint.js": {
15147
- "bytesInOutput": 25120
15157
+ "bytesInOutput": 25131
15148
15158
  },
15149
15159
  "node_modules/eslint/lib/rule-tester/flat-rule-tester.js": {
15150
15160
  "bytesInOutput": 31667
@@ -15156,7 +15166,7 @@
15156
15166
  "bytesInOutput": 745
15157
15167
  },
15158
15168
  "node_modules/eslint/lib/cli-engine/cli-engine.js": {
15159
- "bytesInOutput": 23888
15169
+ "bytesInOutput": 23895
15160
15170
  },
15161
15171
  "node_modules/eslint/lib/eslint/eslint.js": {
15162
15172
  "bytesInOutput": 19446
@@ -15708,7 +15718,7 @@
15708
15718
  "bytesInOutput": 745
15709
15719
  },
15710
15720
  "package.json": {
15711
- "bytesInOutput": 2971
15721
+ "bytesInOutput": 3015
15712
15722
  },
15713
15723
  "src/get-documentation-url.ts": {
15714
15724
  "bytesInOutput": 148
@@ -15737,8 +15747,11 @@
15737
15747
  "src/agent/fetch-then.ts": {
15738
15748
  "bytesInOutput": 12231
15739
15749
  },
15750
+ "src/library/ts-tree.ts": {
15751
+ "bytesInOutput": 2095
15752
+ },
15740
15753
  "src/agent/fix-function-call-arguments.ts": {
15741
- "bytesInOutput": 3865
15754
+ "bytesInOutput": 4458
15742
15755
  },
15743
15756
  "src/invalid-json-stringify.ts": {
15744
15757
  "bytesInOutput": 2473
@@ -15752,9 +15765,6 @@
15752
15765
  "src/agent/no-fixture.ts": {
15753
15766
  "bytesInOutput": 16455
15754
15767
  },
15755
- "src/library/ts-tree.ts": {
15756
- "bytesInOutput": 2095
15757
- },
15758
15768
  "src/agent/no-full-response.ts": {
15759
15769
  "bytesInOutput": 2006
15760
15770
  },
@@ -15816,7 +15826,7 @@
15816
15826
  "bytesInOutput": 3362
15817
15827
  }
15818
15828
  },
15819
- "bytes": 4369509
15829
+ "bytes": 4370736
15820
15830
  }
15821
15831
  }
15822
15832
  }
@@ -1,9 +1,12 @@
1
1
  // src/agent/fix-function-call-arguments.ts
2
- import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
3
3
  import { strict as assert } from "node:assert";
4
+ import debug from "debug";
4
5
  import getDocumentationUrl from "../get-documentation-url.mjs";
6
+ import { getParent } from "../library/ts-tree.mjs";
5
7
  var ruleId = "fix-function-call-arguments";
6
8
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
9
+ var log = debug("eslint-plugin:fix-function-call-arguments");
7
10
  var rule = createRule({
8
11
  name: ruleId,
9
12
  meta: {
@@ -25,11 +28,17 @@ var rule = createRule({
25
28
  const sourceCode = context.sourceCode;
26
29
  return {
27
30
  CallExpression(callExpression) {
31
+ if (getParent(callExpression)?.type === TSESTree.AST_NODE_TYPES.MemberExpression) {
32
+ return;
33
+ }
34
+ log("===================================");
35
+ log("callExpression:", sourceCode.getText(callExpression));
28
36
  try {
29
37
  const calleeTsNode = parserServices.esTreeNodeToTSNodeMap.get(callExpression.callee);
30
38
  const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
31
39
  const signature = calleeType.getCallSignatures()[0];
32
- if (!signature) {
40
+ if (!signature || // ignore complex signatures
41
+ signature.typeParameters !== void 0 && signature.typeParameters.length > 0) {
33
42
  return;
34
43
  }
35
44
  const signatureParameters = signature.getParameters();
@@ -46,13 +55,15 @@ var rule = createRule({
46
55
  const currentExpectedArg = signatureParameters[parameterIndex];
47
56
  assert.ok(currentExpectedArg, "Expected argument not found.");
48
57
  const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
49
- console.log(currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
50
- typeChecker.typeToString(expectedType);
51
58
  const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
52
- typeChecker.typeToString(actualType);
59
+ log("expected type:", currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
60
+ log("actual type:", sourceCode.getText(arg), typeChecker.typeToString(actualType));
53
61
  if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
54
62
  argsToKeep.push(arg);
55
63
  parameterIndex++;
64
+ log("matched");
65
+ } else {
66
+ log("not matched");
56
67
  }
57
68
  }
58
69
  }
@@ -96,4 +107,4 @@ export {
96
107
  fix_function_call_arguments_default as default,
97
108
  ruleId
98
109
  };
99
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLG1CQUE2QjtBQUN0QyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixxQ0FBcUM7QUFBQSxNQUNyQyxjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxRQUFRLGVBQWU7QUFDMUQsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsZUFBZSxnQkFBZ0I7QUFDN0IsWUFBSTtBQUNGLGdCQUFNLGVBQWUsZUFBZSxzQkFBc0IsSUFBSSxlQUFlLE1BQU07QUFDbkYsZ0JBQU0sYUFBYSxZQUFZLGtCQUFrQixZQUFZO0FBQzdELGdCQUFNLFlBQVksV0FBVyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xELGNBQUksQ0FBQyxXQUFXO0FBQ2Q7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sc0JBQXNCLFVBQVUsY0FBYztBQUNwRCxnQkFBTSxvQkFBb0Isb0JBQW9CO0FBQzlDLGdCQUFNLGVBQWUsZUFBZTtBQUNwQyxnQkFBTSxvQkFBb0IsYUFBYTtBQUN2QyxjQUFJLHNCQUFzQixLQUFLLHNCQUFzQixtQkFBbUI7QUFDdEU7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sYUFBZ0QsQ0FBQztBQUV2RCxjQUFJLG9CQUFvQixHQUFHO0FBQ3pCLGdCQUFJLGlCQUFpQjtBQUNyQix1QkFBVyxPQUFPLGNBQWM7QUFDOUIsb0JBQU0scUJBQXFCLG9CQUFvQixjQUFjO0FBQzdELHFCQUFPLEdBQUcsb0JBQW9CLDhCQUE4QjtBQUU1RCxvQkFBTSxlQUFlLFlBQVksZ0JBQWdCLGtCQUFrQjtBQUVuRSxzQkFBUSxJQUFJLG1CQUFtQixhQUFhLFlBQVksYUFBYSxZQUFZLENBQUM7QUFDbEYsMEJBQVksYUFBYSxZQUFZO0FBQ3JDLG9CQUFNLGFBQWEsWUFBWSxrQkFBa0IsZUFBZSxzQkFBc0IsSUFBSSxHQUFHLENBQUM7QUFDOUYsMEJBQVksYUFBYSxVQUFVO0FBR25DLGtCQUFJLFlBQVksbUJBQW1CLFlBQVksWUFBWSxNQUFNLE1BQU07QUFDckUsMkJBQVcsS0FBSyxHQUFHO0FBQ25CO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBRUEsY0FBSSxXQUFXLFdBQVcsbUJBQW1CO0FBQzNDO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGlCQUFpQixhQUFhLENBQUM7QUFDckMsZ0JBQU0sZ0JBQWdCLGFBQWEsR0FBRyxFQUFFO0FBQ3hDLGlCQUFPLEdBQUcsbUJBQW1CLFVBQWEsa0JBQWtCLE1BQVM7QUFDckUsZ0JBQU0sdUJBQXVCLFdBQVcsY0FBYyxhQUFhO0FBRW5FLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLElBQUksT0FBTztBQUNULHFCQUFPLE1BQU07QUFBQSxnQkFDWDtBQUFBLGtCQUNFLGVBQWUsTUFBTSxDQUFDO0FBQUEsa0JBQ3RCLHNCQUFzQixVQUFVLE1BQU0scUJBQXFCLE1BQU0sQ0FBQyxJQUFJLGNBQWMsTUFBTSxDQUFDO0FBQUEsZ0JBQzdGO0FBQUEsZ0JBQ0EsV0FBVyxJQUFJLENBQUMsUUFBUSxXQUFXLFFBQVEsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQUEsY0FDNUQ7QUFBQSxZQUNGO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSCxTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFVBQVUsUUFBUTtBQUFBLGNBQ2xCLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUs7QUFBQSxZQUN6RTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTyxzQ0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
110
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGFBQWEsZ0JBQWdCO0FBQ3RDLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8sV0FBVztBQUNsQixPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLGlCQUFpQjtBQUVuQixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUM5RSxJQUFNLE1BQU0sTUFBTSwyQ0FBMkM7QUFFN0QsSUFBTSxPQUFPLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IscUNBQXFDO0FBQUEsTUFDckMsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0saUJBQWlCLFlBQVksa0JBQWtCLE9BQU87QUFDNUQsVUFBTSxjQUFjLGVBQWUsUUFBUSxlQUFlO0FBQzFELFVBQU0sYUFBYSxRQUFRO0FBRTNCLFdBQU87QUFBQSxNQUNMLGVBQWUsZ0JBQWdCO0FBRzdCLFlBQUksVUFBVSxjQUFjLEdBQUcsU0FBUyxTQUFTLGVBQWUsa0JBQWtCO0FBQ2hGO0FBQUEsUUFDRjtBQUVBLFlBQUkscUNBQXFDO0FBQ3pDLFlBQUksbUJBQW1CLFdBQVcsUUFBUSxjQUFjLENBQUM7QUFDekQsWUFBSTtBQUNGLGdCQUFNLGVBQWUsZUFBZSxzQkFBc0IsSUFBSSxlQUFlLE1BQU07QUFDbkYsZ0JBQU0sYUFBYSxZQUFZLGtCQUFrQixZQUFZO0FBQzdELGdCQUFNLFlBQVksV0FBVyxrQkFBa0Is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
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-3378","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs --external=espree && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"7.18.0","@typescript-eslint/utils":"7.18.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.0","@checkdigit/typescript-config":"6.0.0","@types/eslint":"8.56.10","@typescript-eslint/eslint-plugin":"7.18.0","@typescript-eslint/parser":"7.18.0","@typescript-eslint/rule-tester":"7.18.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"0.24.0","http-status-codes":"^2.3.0"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.14"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-e357","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"}}
@@ -8,11 +8,14 @@
8
8
 
9
9
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
10
  import { strict as assert } from 'node:assert';
11
+ import debug from 'debug';
11
12
  import getDocumentationUrl from '../get-documentation-url';
13
+ import { getParent } from '../library/ts-tree';
12
14
 
13
15
  export const ruleId = 'fix-function-call-arguments';
14
16
 
15
17
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
18
+ const log = debug('eslint-plugin:fix-function-call-arguments');
16
19
 
17
20
  const rule = createRule({
18
21
  name: ruleId,
@@ -36,18 +39,30 @@ const rule = createRule({
36
39
 
37
40
  return {
38
41
  CallExpression(callExpression) {
42
+ // ignore calls like `foo.bar()` which are likely to be 3rd party module calls
43
+ // we only focus on calls against local functions or functions imported from the same module
44
+ if (getParent(callExpression)?.type === TSESTree.AST_NODE_TYPES.MemberExpression) {
45
+ return;
46
+ }
47
+
48
+ log('===================================');
49
+ log('callExpression:', sourceCode.getText(callExpression));
39
50
  try {
40
51
  const calleeTsNode = parserServices.esTreeNodeToTSNodeMap.get(callExpression.callee);
41
52
  const calleeType = typeChecker.getTypeAtLocation(calleeTsNode);
42
53
  const signature = calleeType.getCallSignatures()[0];
43
- if (!signature) {
54
+ if (
55
+ !signature ||
56
+ // ignore complex signatures
57
+ (signature.typeParameters !== undefined && signature.typeParameters.length > 0)
58
+ ) {
44
59
  return;
45
60
  }
46
61
 
47
62
  const signatureParameters = signature.getParameters();
48
- const expectedArgsCount = signatureParameters.length;
49
- const providedArgs = callExpression.arguments;
50
- const providedArgsCount = providedArgs.length;
63
+ const expectedArgsCount = signatureParameters.length; /*?*/
64
+ const providedArgs = callExpression.arguments; /*?*/
65
+ const providedArgsCount = providedArgs.length; /*?*/
51
66
  if (providedArgsCount === 0 || providedArgsCount === expectedArgsCount) {
52
67
  return;
53
68
  }
@@ -60,16 +75,20 @@ const rule = createRule({
60
75
  assert.ok(currentExpectedArg, 'Expected argument not found.');
61
76
 
62
77
  const expectedType = typeChecker.getTypeOfSymbol(currentExpectedArg);
63
- // eslint-disable-next-line no-console
64
- console.log(currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
65
- typeChecker.typeToString(expectedType);
66
78
  const actualType = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(arg));
67
- typeChecker.typeToString(actualType);
79
+
80
+ // eslint-disable-next-line no-console
81
+ log('expected type:', currentExpectedArg.escapedName, typeChecker.typeToString(expectedType));
82
+ // eslint-disable-next-line no-console
83
+ log('actual type:', sourceCode.getText(arg), typeChecker.typeToString(actualType));
68
84
  // @ts-expect-error: internal API
69
85
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
70
86
  if (typeChecker.isTypeAssignableTo(actualType, expectedType) === true) {
71
87
  argsToKeep.push(arg);
72
88
  parameterIndex++;
89
+ log('matched');
90
+ } else {
91
+ log('not matched');
73
92
  }
74
93
  }
75
94
  }