@checkdigit/eslint-plugin 6.6.0-PR.75-e4e7 → 6.6.0-PR.75-8ba0
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 +765 -689
- package/dist-cjs/metafile.json +80 -27
- package/dist-mjs/fixture/fetch-response-header-getter-ts.mjs +6 -2
- package/dist-mjs/fixture/no-full-response.mjs +67 -0
- package/dist-mjs/fixture/ts-tree.mjs +12 -0
- package/dist-mjs/index.mjs +6 -3
- package/dist-types/fixture/no-full-response.d.ts +4 -0
- package/dist-types/fixture/ts-tree.d.ts +2 -0
- package/dist-types/index.d.ts +2 -0
- package/package.json +1 -1
- package/src/fixture/fetch-response-header-getter-ts.ts +7 -1
- package/src/fixture/no-full-response.ts +75 -0
- package/src/fixture/ts-tree.ts +14 -0
- package/src/index.ts +3 -0
package/dist-cjs/metafile.json
CHANGED
|
@@ -12293,7 +12293,7 @@
|
|
|
12293
12293
|
"format": "esm"
|
|
12294
12294
|
},
|
|
12295
12295
|
"src/fixture/fetch-response-header-getter-ts.ts": {
|
|
12296
|
-
"bytes":
|
|
12296
|
+
"bytes": 5678,
|
|
12297
12297
|
"imports": [
|
|
12298
12298
|
{
|
|
12299
12299
|
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
@@ -12437,6 +12437,43 @@
|
|
|
12437
12437
|
],
|
|
12438
12438
|
"format": "esm"
|
|
12439
12439
|
},
|
|
12440
|
+
"src/fixture/ts-tree.ts": {
|
|
12441
|
+
"bytes": 426,
|
|
12442
|
+
"imports": [
|
|
12443
|
+
{
|
|
12444
|
+
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
12445
|
+
"kind": "import-statement",
|
|
12446
|
+
"original": "@typescript-eslint/utils"
|
|
12447
|
+
}
|
|
12448
|
+
],
|
|
12449
|
+
"format": "esm"
|
|
12450
|
+
},
|
|
12451
|
+
"src/fixture/no-full-response.ts": {
|
|
12452
|
+
"bytes": 2322,
|
|
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
|
+
"path": "node:assert",
|
|
12461
|
+
"kind": "import-statement",
|
|
12462
|
+
"external": true
|
|
12463
|
+
},
|
|
12464
|
+
{
|
|
12465
|
+
"path": "src/get-documentation-url.ts",
|
|
12466
|
+
"kind": "import-statement",
|
|
12467
|
+
"original": "../get-documentation-url"
|
|
12468
|
+
},
|
|
12469
|
+
{
|
|
12470
|
+
"path": "src/fixture/ts-tree.ts",
|
|
12471
|
+
"kind": "import-statement",
|
|
12472
|
+
"original": "./ts-tree"
|
|
12473
|
+
}
|
|
12474
|
+
],
|
|
12475
|
+
"format": "esm"
|
|
12476
|
+
},
|
|
12440
12477
|
"src/no-promise-instance-method.ts": {
|
|
12441
12478
|
"bytes": 1617,
|
|
12442
12479
|
"imports": [
|
|
@@ -12562,7 +12599,7 @@
|
|
|
12562
12599
|
"format": "esm"
|
|
12563
12600
|
},
|
|
12564
12601
|
"src/index.ts": {
|
|
12565
|
-
"bytes":
|
|
12602
|
+
"bytes": 4583,
|
|
12566
12603
|
"imports": [
|
|
12567
12604
|
{
|
|
12568
12605
|
"path": "src/fixture/add-url-domain.ts",
|
|
@@ -12599,6 +12636,11 @@
|
|
|
12599
12636
|
"kind": "import-statement",
|
|
12600
12637
|
"original": "./fixture/no-fixture"
|
|
12601
12638
|
},
|
|
12639
|
+
{
|
|
12640
|
+
"path": "src/fixture/no-full-response.ts",
|
|
12641
|
+
"kind": "import-statement",
|
|
12642
|
+
"original": "./fixture/no-full-response"
|
|
12643
|
+
},
|
|
12602
12644
|
{
|
|
12603
12645
|
"path": "src/no-promise-instance-method.ts",
|
|
12604
12646
|
"kind": "import-statement",
|
|
@@ -13191,6 +13233,11 @@
|
|
|
13191
13233
|
"kind": "require-call",
|
|
13192
13234
|
"external": true
|
|
13193
13235
|
},
|
|
13236
|
+
{
|
|
13237
|
+
"path": "node:assert",
|
|
13238
|
+
"kind": "require-call",
|
|
13239
|
+
"external": true
|
|
13240
|
+
},
|
|
13194
13241
|
{
|
|
13195
13242
|
"path": "node:assert",
|
|
13196
13243
|
"kind": "require-call",
|
|
@@ -13273,7 +13320,7 @@
|
|
|
13273
13320
|
"bytesInOutput": 232
|
|
13274
13321
|
},
|
|
13275
13322
|
"node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js": {
|
|
13276
|
-
"bytesInOutput":
|
|
13323
|
+
"bytesInOutput": 1004
|
|
13277
13324
|
},
|
|
13278
13325
|
"node_modules/@typescript-eslint/utils/dist/eslint-utils/nullThrows.js": {
|
|
13279
13326
|
"bytesInOutput": 692
|
|
@@ -13351,7 +13398,7 @@
|
|
|
13351
13398
|
"bytesInOutput": 2711
|
|
13352
13399
|
},
|
|
13353
13400
|
"node_modules/ignore/index.js": {
|
|
13354
|
-
"bytesInOutput":
|
|
13401
|
+
"bytesInOutput": 13301
|
|
13355
13402
|
},
|
|
13356
13403
|
"node_modules/@eslint/eslintrc/node_modules/brace-expansion/index.js": {
|
|
13357
13404
|
"bytesInOutput": 4594
|
|
@@ -13390,7 +13437,7 @@
|
|
|
13390
13437
|
"bytesInOutput": 21531
|
|
13391
13438
|
},
|
|
13392
13439
|
"node_modules/ajv/lib/compile/index.js": {
|
|
13393
|
-
"bytesInOutput":
|
|
13440
|
+
"bytesInOutput": 10011
|
|
13394
13441
|
},
|
|
13395
13442
|
"node_modules/ajv/lib/cache.js": {
|
|
13396
13443
|
"bytesInOutput": 560
|
|
@@ -13471,7 +13518,7 @@
|
|
|
13471
13518
|
"bytesInOutput": 1149
|
|
13472
13519
|
},
|
|
13473
13520
|
"node_modules/ajv/lib/compile/rules.js": {
|
|
13474
|
-
"bytesInOutput":
|
|
13521
|
+
"bytesInOutput": 2598
|
|
13475
13522
|
},
|
|
13476
13523
|
"node_modules/ajv/lib/data.js": {
|
|
13477
13524
|
"bytesInOutput": 1329
|
|
@@ -13489,7 +13536,7 @@
|
|
|
13489
13536
|
"bytesInOutput": 1141
|
|
13490
13537
|
},
|
|
13491
13538
|
"node_modules/ajv/lib/keyword.js": {
|
|
13492
|
-
"bytesInOutput":
|
|
13539
|
+
"bytesInOutput": 3310
|
|
13493
13540
|
},
|
|
13494
13541
|
"node_modules/ajv/lib/refs/data.json": {
|
|
13495
13542
|
"bytesInOutput": 654
|
|
@@ -13504,7 +13551,7 @@
|
|
|
13504
13551
|
"bytesInOutput": 157
|
|
13505
13552
|
},
|
|
13506
13553
|
"node_modules/@eslint/eslintrc/dist/eslintrc.cjs": {
|
|
13507
|
-
"bytesInOutput":
|
|
13554
|
+
"bytesInOutput": 103413
|
|
13508
13555
|
},
|
|
13509
13556
|
"node_modules/@eslint/js/src/configs/eslint-all.js": {
|
|
13510
13557
|
"bytesInOutput": 7567
|
|
@@ -13561,7 +13608,7 @@
|
|
|
13561
13608
|
"bytesInOutput": 302
|
|
13562
13609
|
},
|
|
13563
13610
|
"node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs": {
|
|
13564
|
-
"bytesInOutput":
|
|
13611
|
+
"bytesInOutput": 28051
|
|
13565
13612
|
},
|
|
13566
13613
|
"node_modules/eslint/lib/shared/traverser.js": {
|
|
13567
13614
|
"bytesInOutput": 4738
|
|
@@ -13732,7 +13779,7 @@
|
|
|
13732
13779
|
"bytesInOutput": 4466
|
|
13733
13780
|
},
|
|
13734
13781
|
"node_modules/eslint/lib/rules/arrow-spacing.js": {
|
|
13735
|
-
"bytesInOutput":
|
|
13782
|
+
"bytesInOutput": 3514
|
|
13736
13783
|
},
|
|
13737
13784
|
"node_modules/eslint/lib/rules/block-scoped-var.js": {
|
|
13738
13785
|
"bytesInOutput": 2810
|
|
@@ -14479,7 +14526,7 @@
|
|
|
14479
14526
|
"bytesInOutput": 6570
|
|
14480
14527
|
},
|
|
14481
14528
|
"node_modules/eslint/lib/rules/padded-blocks.js": {
|
|
14482
|
-
"bytesInOutput":
|
|
14529
|
+
"bytesInOutput": 7850
|
|
14483
14530
|
},
|
|
14484
14531
|
"node_modules/eslint/lib/rules/padding-line-between-statements.js": {
|
|
14485
14532
|
"bytesInOutput": 12419
|
|
@@ -14590,10 +14637,10 @@
|
|
|
14590
14637
|
"bytesInOutput": 7924
|
|
14591
14638
|
},
|
|
14592
14639
|
"node_modules/eslint/lib/rules/spaced-comment.js": {
|
|
14593
|
-
"bytesInOutput":
|
|
14640
|
+
"bytesInOutput": 8286
|
|
14594
14641
|
},
|
|
14595
14642
|
"node_modules/eslint/lib/rules/strict.js": {
|
|
14596
|
-
"bytesInOutput":
|
|
14643
|
+
"bytesInOutput": 6641
|
|
14597
14644
|
},
|
|
14598
14645
|
"node_modules/eslint/lib/rules/switch-colon-spacing.js": {
|
|
14599
14646
|
"bytesInOutput": 3200
|
|
@@ -14650,7 +14697,7 @@
|
|
|
14650
14697
|
"bytesInOutput": 17805
|
|
14651
14698
|
},
|
|
14652
14699
|
"node_modules/eslint/lib/linter/rules.js": {
|
|
14653
|
-
"bytesInOutput":
|
|
14700
|
+
"bytesInOutput": 1591
|
|
14654
14701
|
},
|
|
14655
14702
|
"node_modules/eslint/lib/linter/safe-emitter.js": {
|
|
14656
14703
|
"bytesInOutput": 733
|
|
@@ -14665,7 +14712,7 @@
|
|
|
14665
14712
|
"bytesInOutput": 1183
|
|
14666
14713
|
},
|
|
14667
14714
|
"node_modules/eslint/lib/config/flat-config-helpers.js": {
|
|
14668
|
-
"bytesInOutput":
|
|
14715
|
+
"bytesInOutput": 1682
|
|
14669
14716
|
},
|
|
14670
14717
|
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion/index.js": {
|
|
14671
14718
|
"bytesInOutput": 4605
|
|
@@ -14713,7 +14760,7 @@
|
|
|
14713
14760
|
"bytesInOutput": 579
|
|
14714
14761
|
},
|
|
14715
14762
|
"node_modules/eslint/lib/config/rule-validator.js": {
|
|
14716
|
-
"bytesInOutput":
|
|
14763
|
+
"bytesInOutput": 3172
|
|
14717
14764
|
},
|
|
14718
14765
|
"node_modules/eslint/lib/config/default-config.js": {
|
|
14719
14766
|
"bytesInOutput": 1424
|
|
@@ -14722,7 +14769,7 @@
|
|
|
14722
14769
|
"bytesInOutput": 6248
|
|
14723
14770
|
},
|
|
14724
14771
|
"node_modules/eslint/lib/linter/linter.js": {
|
|
14725
|
-
"bytesInOutput":
|
|
14772
|
+
"bytesInOutput": 57060
|
|
14726
14773
|
},
|
|
14727
14774
|
"node_modules/eslint/lib/linter/index.js": {
|
|
14728
14775
|
"bytesInOutput": 372
|
|
@@ -14890,10 +14937,10 @@
|
|
|
14890
14937
|
"bytesInOutput": 5074
|
|
14891
14938
|
},
|
|
14892
14939
|
"node_modules/eslint/lib/eslint/flat-eslint.js": {
|
|
14893
|
-
"bytesInOutput":
|
|
14940
|
+
"bytesInOutput": 25120
|
|
14894
14941
|
},
|
|
14895
14942
|
"node_modules/eslint/lib/rule-tester/flat-rule-tester.js": {
|
|
14896
|
-
"bytesInOutput":
|
|
14943
|
+
"bytesInOutput": 31618
|
|
14897
14944
|
},
|
|
14898
14945
|
"node_modules/eslint/conf/default-cli-options.js": {
|
|
14899
14946
|
"bytesInOutput": 783
|
|
@@ -14902,10 +14949,10 @@
|
|
|
14902
14949
|
"bytesInOutput": 745
|
|
14903
14950
|
},
|
|
14904
14951
|
"node_modules/eslint/lib/cli-engine/cli-engine.js": {
|
|
14905
|
-
"bytesInOutput":
|
|
14952
|
+
"bytesInOutput": 23888
|
|
14906
14953
|
},
|
|
14907
14954
|
"node_modules/eslint/lib/eslint/eslint.js": {
|
|
14908
|
-
"bytesInOutput":
|
|
14955
|
+
"bytesInOutput": 19446
|
|
14909
14956
|
},
|
|
14910
14957
|
"node_modules/eslint/lib/unsupported-api.js": {
|
|
14911
14958
|
"bytesInOutput": 538
|
|
@@ -14929,10 +14976,10 @@
|
|
|
14929
14976
|
"bytesInOutput": 940
|
|
14930
14977
|
},
|
|
14931
14978
|
"node_modules/eslint/lib/shared/config-validator.js": {
|
|
14932
|
-
"bytesInOutput":
|
|
14979
|
+
"bytesInOutput": 7265
|
|
14933
14980
|
},
|
|
14934
14981
|
"node_modules/eslint/lib/rule-tester/rule-tester.js": {
|
|
14935
|
-
"bytesInOutput":
|
|
14982
|
+
"bytesInOutput": 33207
|
|
14936
14983
|
},
|
|
14937
14984
|
"node_modules/eslint/lib/rule-tester/index.js": {
|
|
14938
14985
|
"bytesInOutput": 206
|
|
@@ -15448,7 +15495,7 @@
|
|
|
15448
15495
|
"bytesInOutput": 2217
|
|
15449
15496
|
},
|
|
15450
15497
|
"src/index.ts": {
|
|
15451
|
-
"bytesInOutput":
|
|
15498
|
+
"bytesInOutput": 2803
|
|
15452
15499
|
},
|
|
15453
15500
|
"src/fixture/url.ts": {
|
|
15454
15501
|
"bytesInOutput": 745
|
|
@@ -15478,7 +15525,7 @@
|
|
|
15478
15525
|
"bytesInOutput": 2311
|
|
15479
15526
|
},
|
|
15480
15527
|
"src/fixture/fetch-response-header-getter-ts.ts": {
|
|
15481
|
-
"bytesInOutput":
|
|
15528
|
+
"bytesInOutput": 4934
|
|
15482
15529
|
},
|
|
15483
15530
|
"src/ast/format.ts": {
|
|
15484
15531
|
"bytesInOutput": 383
|
|
@@ -15495,6 +15542,12 @@
|
|
|
15495
15542
|
"src/fixture/no-fixture.ts": {
|
|
15496
15543
|
"bytesInOutput": 16444
|
|
15497
15544
|
},
|
|
15545
|
+
"src/fixture/ts-tree.ts": {
|
|
15546
|
+
"bytesInOutput": 295
|
|
15547
|
+
},
|
|
15548
|
+
"src/fixture/no-full-response.ts": {
|
|
15549
|
+
"bytesInOutput": 2004
|
|
15550
|
+
},
|
|
15498
15551
|
"src/no-promise-instance-method.ts": {
|
|
15499
15552
|
"bytesInOutput": 1275
|
|
15500
15553
|
},
|
|
@@ -15502,7 +15555,7 @@
|
|
|
15502
15555
|
"bytesInOutput": 1849
|
|
15503
15556
|
},
|
|
15504
15557
|
"src/fixture/no-service-wrapper.ts": {
|
|
15505
|
-
"bytesInOutput":
|
|
15558
|
+
"bytesInOutput": 8870
|
|
15506
15559
|
},
|
|
15507
15560
|
"src/fixture/no-status-code.ts": {
|
|
15508
15561
|
"bytesInOutput": 2037
|
|
@@ -15535,7 +15588,7 @@
|
|
|
15535
15588
|
"bytesInOutput": 3362
|
|
15536
15589
|
}
|
|
15537
15590
|
},
|
|
15538
|
-
"bytes":
|
|
15591
|
+
"bytes": 4318668
|
|
15539
15592
|
}
|
|
15540
15593
|
}
|
|
15541
15594
|
}
|
|
@@ -63,7 +63,7 @@ var rule = createRule({
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
'CallExpression[callee.property.name="get"]': (responseHeadersAccess) => {
|
|
66
|
+
'CallExpression[callee.property.name="get"]:not([callee.object.name="request"])': (responseHeadersAccess) => {
|
|
67
67
|
try {
|
|
68
68
|
if (responseHeadersAccess.callee.type !== AST_NODE_TYPES.MemberExpression) {
|
|
69
69
|
return;
|
|
@@ -71,6 +71,10 @@ var rule = createRule({
|
|
|
71
71
|
const responseNode = responseHeadersAccess.callee.object;
|
|
72
72
|
const responseHeadersTsNode = parserServices.esTreeNodeToTSNodeMap.get(responseNode);
|
|
73
73
|
const responseType = typeChecker.getTypeAtLocation(responseHeadersTsNode);
|
|
74
|
+
const typeName = typeChecker.typeToString(responseType);
|
|
75
|
+
if (typeName === "InboundContext" || typeName.endsWith("RequestType")) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
74
78
|
const hasHeadersProperty = responseType.getProperties().some((symbol) => symbol.name === "headers");
|
|
75
79
|
if (!hasHeadersProperty) {
|
|
76
80
|
return;
|
|
@@ -103,4 +107,4 @@ export {
|
|
|
103
107
|
fetch_response_header_getter_ts_default as default,
|
|
104
108
|
ruleId
|
|
105
109
|
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvZmV0Y2gtcmVzcG9uc2UtaGVhZGVyLWdldHRlci10cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFPLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsV0FBVztBQUFBLE1BQ1gsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0saUJBQWlCLFlBQVksa0JBQWtCLE9BQU87QUFDNUQsVUFBTSxjQUFjLGVBQWUsUUFBUSxlQUFlO0FBQzFELFVBQU0sYUFBYSxRQUFRO0FBRTNCLFdBQU87QUFBQSxNQUNMLG9EQUFvRCxDQUFDLDBCQUFxRDtBQUN4RyxZQUFJO0FBQ0YsY0FDRSxzQkFBc0IsU0FBUyxTQUFTLGVBQWUsY0FDdkQsc0JBQXNCLFNBQVMsU0FBUyxPQUN4QztBQUVBO0FBQUEsVUFDRjtBQUVBLGdCQUFNLHdCQUF3QixlQUFlLHNCQUFzQixJQUFJLHNCQUFzQixNQUFNO0FBQ25HLGdCQUFNLGVBQWUsWUFBWSxrQkFBa0IscUJBQXFCO0FBRXhFLGdCQUFNLGdCQUFnQixhQUFhLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxPQUFPLFNBQVMsS0FBSztBQUN6RixjQUFJLENBQUMsZUFBZTtBQUNsQjtBQUFBLFVBQ0Y7QUFNQSxjQUFJO0FBQ0osY0FBSSxzQkFBc0IsU0FBUyxTQUFT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
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// src/fixture/no-full-response.ts
|
|
2
|
+
import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
|
|
3
|
+
import { strict as assert } from "node:assert";
|
|
4
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
5
|
+
import { getTypeParentNode } from "./ts-tree.mjs";
|
|
6
|
+
var ruleId = "no-full-response";
|
|
7
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
8
|
+
var rule = createRule({
|
|
9
|
+
name: ruleId,
|
|
10
|
+
meta: {
|
|
11
|
+
type: "suggestion",
|
|
12
|
+
docs: {
|
|
13
|
+
description: "Remove the usage of FullResponse type."
|
|
14
|
+
},
|
|
15
|
+
messages: {
|
|
16
|
+
removeFullResponse: "Remove the usage of FullResponse type.",
|
|
17
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
18
|
+
},
|
|
19
|
+
fixable: "code",
|
|
20
|
+
schema: []
|
|
21
|
+
},
|
|
22
|
+
defaultOptions: [],
|
|
23
|
+
create(context) {
|
|
24
|
+
const sourceCode = context.sourceCode;
|
|
25
|
+
return {
|
|
26
|
+
'TSTypeReference[typeName.name="FullResponse"]': (typeReference) => {
|
|
27
|
+
try {
|
|
28
|
+
const typeParentNode = getTypeParentNode(typeReference);
|
|
29
|
+
assert.ok(typeParentNode);
|
|
30
|
+
if (typeParentNode.type === TSESTree.AST_NODE_TYPES.TSAsExpression) {
|
|
31
|
+
context.report({
|
|
32
|
+
messageId: "removeFullResponse",
|
|
33
|
+
node: typeReference,
|
|
34
|
+
fix(fixer) {
|
|
35
|
+
return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
context.report({
|
|
40
|
+
messageId: "removeFullResponse",
|
|
41
|
+
node: typeReference,
|
|
42
|
+
fix(fixer) {
|
|
43
|
+
return fixer.remove(typeParentNode);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
49
|
+
context.report({
|
|
50
|
+
node: typeReference,
|
|
51
|
+
messageId: "unknownError",
|
|
52
|
+
data: {
|
|
53
|
+
fileName: context.filename,
|
|
54
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
var no_full_response_default = rule;
|
|
63
|
+
export {
|
|
64
|
+
no_full_response_default as default,
|
|
65
|
+
ruleId
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvbm8tZnVsbC1yZXNwb25zZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGFBQWEsZ0JBQWdCO0FBQ3RDLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8seUJBQXlCO0FBQ2hDLFNBQVMseUJBQXlCO0FBRTNCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBTyxXQUFXO0FBQUEsRUFDdEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLG9CQUFvQjtBQUFBLE1BQ3BCLGNBQWM7QUFBQSxJQUNoQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQWEsUUFBUTtBQUUzQixXQUFPO0FBQUEsTUFDTCxpREFBaUQsQ0FBQyxrQkFBNEM7QUFDNUYsWUFBSTtBQUNGLGdCQUFNLGlCQUFpQixrQkFBa0IsYUFBYTtBQUN0RCxpQkFBTyxHQUFHLGNBQWM7QUFDeEIsY0FBSSxlQUFlLFNBQVMsU0FBUyxlQUFlLGdCQUFnQjtBQUNsRSxvQkFBUSxPQUFPO0FBQUEsY0FDYixXQUFXO0FBQUEsY0FDWCxNQUFNO0FBQUEsY0FDTixJQUFJLE9BQU87QUFDVCx1QkFBTyxNQUFNLFlBQVksZ0JBQWdCLFdBQVcsUUFBUSxlQUFlLFVBQVUsQ0FBQztBQUFBLGNBQ3hGO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSCxPQUFPO0FBQ0wsb0JBQVEsT0FBTztBQUFBLGNBQ2IsV0FBVztBQUFBLGNBQ1gsTUFBTTtBQUFBLGNBQ04sSUFBSSxPQUFPO0FBQ1QsdUJBQU8sTUFBTSxPQUFPLGNBQWM7QUFBQSxjQUNwQztBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGLFNBQVMsT0FBTztBQUVkLGtCQUFRLE1BQU0sbUJBQW1CLE1BQU0sbUJBQW1CLFFBQVEsUUFBUSxNQUFNLEtBQUs7QUFDckYsa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTTtBQUFBLFlBQ04sV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLGNBQ0osVUFBVSxRQUFRO0FBQUEsY0FDbEIsT0FBTyxpQkFBaUIsUUFBUSxNQUFNLFNBQVMsSUFBSSxLQUFLLFVBQVUsS0FBSztBQUFBLFlBQ3pFO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLDJCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/fixture/ts-tree.ts
|
|
2
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
3
|
+
function getTypeParentNode(node) {
|
|
4
|
+
if (!node) {
|
|
5
|
+
return void 0;
|
|
6
|
+
}
|
|
7
|
+
return node.type === AST_NODE_TYPES.TSTypeAnnotation || node.type === AST_NODE_TYPES.TSAsExpression ? node : getTypeParentNode(node.parent);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
getTypeParentNode
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvdHMtdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFFQSxTQUFTLHNCQUFnQztBQUVsQyxTQUFTLGtCQUNkLE1BQ2lFO0FBQ2pFLE1BQUksQ0FBQyxNQUFNO0FBQ1QsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLEtBQUssU0FBUyxlQUFlLG9CQUFvQixLQUFLLFNBQVMsZUFBZSxpQkFDakYsT0FDQSxrQkFBa0IsS0FBSyxNQUFNO0FBQ25DOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import fetchResponseHeaderGetterTs, {
|
|
|
8
8
|
import fetchThen, { ruleId as fetchThenRuleId } from "./fixture/fetch-then.mjs";
|
|
9
9
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
10
10
|
import noFixture, { ruleId as noFixtureRuleId } from "./fixture/no-fixture.mjs";
|
|
11
|
+
import noFullResponse, { ruleId as noFullResponseRuleId } from "./fixture/no-full-response.mjs";
|
|
11
12
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
|
|
12
13
|
import noServiceWrapper, { ruleId as noServiceWrapperRuleId } from "./fixture/no-service-wrapper.mjs";
|
|
13
14
|
import noStatusCode, { ruleId as noStatusCodeRuleId } from "./fixture/no-status-code.mjs";
|
|
@@ -40,7 +41,8 @@ var src_default = {
|
|
|
40
41
|
[noStatusCodeRuleId]: noStatusCode,
|
|
41
42
|
[fetchResponseBodyJsonRuleId]: fetchResponseBodyJson,
|
|
42
43
|
[fetchResponseHeaderGetterTsRuleId]: fetchResponseHeaderGetterTs,
|
|
43
|
-
[addUrlDomainRuleId]: addUrlDomain
|
|
44
|
+
[addUrlDomainRuleId]: addUrlDomain,
|
|
45
|
+
[noFullResponseRuleId]: noFullResponse
|
|
44
46
|
},
|
|
45
47
|
configs: {
|
|
46
48
|
all: {
|
|
@@ -63,7 +65,8 @@ var src_default = {
|
|
|
63
65
|
[`@checkdigit/${noStatusCodeRuleId}`]: "error",
|
|
64
66
|
[`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
|
|
65
67
|
[`@checkdigit/${fetchResponseHeaderGetterTsRuleId}`]: "error",
|
|
66
|
-
[`@checkdigit/${addUrlDomainRuleId}`]: "error"
|
|
68
|
+
[`@checkdigit/${addUrlDomainRuleId}`]: "error",
|
|
69
|
+
[`@checkdigit/${noFullResponseRuleId}`]: "error"
|
|
67
70
|
}
|
|
68
71
|
},
|
|
69
72
|
recommended: {
|
|
@@ -86,4 +89,4 @@ var src_default = {
|
|
|
86
89
|
export {
|
|
87
90
|
src_default as default
|
|
88
91
|
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU8scUJBQXFCLFVBQVUsK0JBQStCO0FBQ3JFLE9BQU8seUJBQXlCLFVBQVUsbUNBQW1DO0FBQzdFLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU8sd0JBQXdCLFVBQVUsa0NBQWtDO0FBQzNFLE9BQU8sYUFBYSxVQUFVLHVCQUF1QjtBQUNyRCxPQUFPLGtCQUFrQixVQUFVLDRCQUE0QjtBQUMvRCxPQUFPLDJCQUEyQixVQUFVLHFDQUFxQztBQUNqRixPQUFPLG9CQUFvQixVQUFVLDhCQUE4QjtBQUNuRSxPQUFPLGdCQUFnQixVQUFVLDBCQUEwQjtBQUMzRCxPQUFPLHFCQUFxQjtBQUM1QixPQUFPLG1CQUFtQjtBQUMxQixPQUFPLGtCQUFrQjtBQUN6QixPQUFPLFlBQVk7QUFDbkIsT0FBTyxzQkFBc0I7QUFDN0IsT0FBTywyQkFBMkI7QUFDbEMsT0FBTyxrQkFBa0I7QUFDekIsT0FBTyx5Q0FBeUM7QUFDaEQsT0FBTyx5QkFBeUI7QUFFaEMsSUFBTyxjQUFRO0FBQUEsRUFDYixPQUFPO0FBQUEsSUFDTCxxQkFBcUI7QUFBQSxJQUNyQixtQkFBbUI7QUFBQSxJQUNuQixXQUFXO0FBQUEsSUFDWCx5QkFBeUI7QUFBQSxJQUN6QixrQkFBa0I7QUFBQSxJQUNsQixzQkFBc0I7QUFBQSxJQUN0Qiw4QkFBOEI7QUFBQSxJQUM5QiwyQ0FBMkM7QUFBQSxJQUMzQywyQkFBMkI7QUFBQSxJQUMzQixDQUFDLDBCQUEwQixHQUFHO0FBQUEsSUFDOUIsQ0FBQyw2QkFBNkIsR0FBRztBQUFBLElBQ2pDLENBQUMsZUFBZSxHQUFHO0FBQUEsSUFDbkIsQ0FBQyx1QkFBdUIsR0FBRztBQUFBLElBQzNCLENBQUMsZUFBZSxHQUFHO0FBQUEsSUFDbkIsQ0FBQyxzQkFBc0IsR0FBRztBQUFBLElBQzFCLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxJQUN0QixDQUFDLDJCQUEyQixHQUFHO0FBQUEsSUFDL0IsQ0FBQyxpQ0FBaUMsR0FBRztBQUFBLElBQ3JDLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxJQUN0QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsRUFDMUI7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxNQUNILE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxRQUNsRCxDQUFDLGVBQWUsZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUNwQyxDQUFDLGVBQWUsdUJBQXVCLEVBQUUsR0FBRztBQUFBLFFBQzVDLENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSxpQ0FBaUMsRUFBRSxHQUFHO0FBQUEsUUFDdEQsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsb0JBQW9CLEVBQUUsR0FBRztBQUFBLE1BQzNDO0FBQUEsSUFDRjtBQUFBLElBQ0EsYUFBYTtBQUFBLE1BQ1gsT0FBTztBQUFBLFFBQ0wsK0JBQStCO0FBQUEsUUFDL0IsaUNBQWlDO0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsUUFDdkIscUNBQXFDO0FBQUEsUUFDckMsa0NBQWtDO0FBQUEsUUFDbEMsMENBQTBDO0FBQUEsUUFDMUMsdURBQXVEO0FBQUEsUUFDdkQsdUNBQXVDO0FBQUEsUUFDdkMsOEJBQThCO0FBQUEsUUFDOUIsQ0FBQyxlQUFlLDBCQUEwQixFQUFFLEdBQUc7QUFBQSxRQUMvQyxDQUFDLGVBQWUsNkJBQTZCLEVBQUUsR0FBRztBQUFBLE1BQ3BEO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist-types/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ declare const _default: {
|
|
|
19
19
|
"fetch-response-body-json": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "replaceBodyWithJson", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
20
20
|
"fetch-response-header-getter-ts": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "useGetter", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
21
21
|
"add-url-domain": import("@typescript-eslint/utils/ts-eslint").RuleModule<"addDomain" | "unknownError", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
22
|
+
"no-full-response": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeFullResponse", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
22
23
|
};
|
|
23
24
|
configs: {
|
|
24
25
|
all: {
|
|
@@ -42,6 +43,7 @@ declare const _default: {
|
|
|
42
43
|
"@checkdigit/fetch-response-body-json": string;
|
|
43
44
|
"@checkdigit/fetch-response-header-getter-ts": string;
|
|
44
45
|
"@checkdigit/add-url-domain": string;
|
|
46
|
+
"@checkdigit/no-full-response": string;
|
|
45
47
|
};
|
|
46
48
|
};
|
|
47
49
|
recommended: {
|
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-8ba0","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"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.14"}}
|
|
@@ -89,7 +89,9 @@ const rule = createRule({
|
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
|
-
'CallExpression[callee.property.name="get"]
|
|
92
|
+
'CallExpression[callee.property.name="get"]:not([callee.object.name="request"])': (
|
|
93
|
+
responseHeadersAccess: TSESTree.CallExpression,
|
|
94
|
+
) => {
|
|
93
95
|
try {
|
|
94
96
|
if (responseHeadersAccess.callee.type !== AST_NODE_TYPES.MemberExpression) {
|
|
95
97
|
return;
|
|
@@ -98,6 +100,10 @@ const rule = createRule({
|
|
|
98
100
|
const responseNode = responseHeadersAccess.callee.object;
|
|
99
101
|
const responseHeadersTsNode = parserServices.esTreeNodeToTSNodeMap.get(responseNode);
|
|
100
102
|
const responseType = typeChecker.getTypeAtLocation(responseHeadersTsNode);
|
|
103
|
+
const typeName = typeChecker.typeToString(responseType);
|
|
104
|
+
if (typeName === 'InboundContext' || typeName.endsWith('RequestType')) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
101
107
|
const hasHeadersProperty = responseType.getProperties().some((symbol) => symbol.name === 'headers');
|
|
102
108
|
if (!hasHeadersProperty) {
|
|
103
109
|
return;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// fixture/no-full-response.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
|
+
import { getTypeParentNode } from './ts-tree';
|
|
13
|
+
|
|
14
|
+
export const ruleId = 'no-full-response';
|
|
15
|
+
|
|
16
|
+
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
17
|
+
|
|
18
|
+
const rule = createRule({
|
|
19
|
+
name: ruleId,
|
|
20
|
+
meta: {
|
|
21
|
+
type: 'suggestion',
|
|
22
|
+
docs: {
|
|
23
|
+
description: 'Remove the usage of FullResponse type.',
|
|
24
|
+
},
|
|
25
|
+
messages: {
|
|
26
|
+
removeFullResponse: 'Remove the usage of FullResponse type.',
|
|
27
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
|
|
28
|
+
},
|
|
29
|
+
fixable: 'code',
|
|
30
|
+
schema: [],
|
|
31
|
+
},
|
|
32
|
+
defaultOptions: [],
|
|
33
|
+
create(context) {
|
|
34
|
+
const sourceCode = context.sourceCode;
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
'TSTypeReference[typeName.name="FullResponse"]': (typeReference: TSESTree.TSTypeReference) => {
|
|
38
|
+
try {
|
|
39
|
+
const typeParentNode = getTypeParentNode(typeReference);
|
|
40
|
+
assert.ok(typeParentNode);
|
|
41
|
+
if (typeParentNode.type === TSESTree.AST_NODE_TYPES.TSAsExpression) {
|
|
42
|
+
context.report({
|
|
43
|
+
messageId: 'removeFullResponse',
|
|
44
|
+
node: typeReference,
|
|
45
|
+
fix(fixer) {
|
|
46
|
+
return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
} else {
|
|
50
|
+
context.report({
|
|
51
|
+
messageId: 'removeFullResponse',
|
|
52
|
+
node: typeReference,
|
|
53
|
+
fix(fixer) {
|
|
54
|
+
return fixer.remove(typeParentNode);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
} catch (error) {
|
|
59
|
+
// eslint-disable-next-line no-console
|
|
60
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
61
|
+
context.report({
|
|
62
|
+
node: typeReference,
|
|
63
|
+
messageId: 'unknownError',
|
|
64
|
+
data: {
|
|
65
|
+
fileName: context.filename,
|
|
66
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error),
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
export default rule;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// fixture/ts-tree.ts
|
|
2
|
+
|
|
3
|
+
import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/utils';
|
|
4
|
+
|
|
5
|
+
export function getTypeParentNode(
|
|
6
|
+
node: TSESTree.Node | undefined,
|
|
7
|
+
): TSESTree.TSTypeAnnotation | TSESTree.TSAsExpression | undefined {
|
|
8
|
+
if (!node) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return node.type === AST_NODE_TYPES.TSTypeAnnotation || node.type === AST_NODE_TYPES.TSAsExpression
|
|
12
|
+
? node
|
|
13
|
+
: getTypeParentNode(node.parent);
|
|
14
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ import fetchResponseHeaderGetterTs, {
|
|
|
15
15
|
import fetchThen, { ruleId as fetchThenRuleId } from './fixture/fetch-then';
|
|
16
16
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
17
17
|
import noFixture, { ruleId as noFixtureRuleId } from './fixture/no-fixture';
|
|
18
|
+
import noFullResponse, { ruleId as noFullResponseRuleId } from './fixture/no-full-response';
|
|
18
19
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
|
|
19
20
|
import noServiceWrapper, { ruleId as noServiceWrapperRuleId } from './fixture/no-service-wrapper';
|
|
20
21
|
import noStatusCode, { ruleId as noStatusCodeRuleId } from './fixture/no-status-code';
|
|
@@ -49,6 +50,7 @@ export default {
|
|
|
49
50
|
[fetchResponseBodyJsonRuleId]: fetchResponseBodyJson,
|
|
50
51
|
[fetchResponseHeaderGetterTsRuleId]: fetchResponseHeaderGetterTs,
|
|
51
52
|
[addUrlDomainRuleId]: addUrlDomain,
|
|
53
|
+
[noFullResponseRuleId]: noFullResponse,
|
|
52
54
|
},
|
|
53
55
|
configs: {
|
|
54
56
|
all: {
|
|
@@ -72,6 +74,7 @@ export default {
|
|
|
72
74
|
[`@checkdigit/${fetchResponseBodyJsonRuleId}`]: 'error',
|
|
73
75
|
[`@checkdigit/${fetchResponseHeaderGetterTsRuleId}`]: 'error',
|
|
74
76
|
[`@checkdigit/${addUrlDomainRuleId}`]: 'error',
|
|
77
|
+
[`@checkdigit/${noFullResponseRuleId}`]: 'error',
|
|
75
78
|
},
|
|
76
79
|
},
|
|
77
80
|
recommended: {
|