@checkdigit/eslint-plugin 6.6.0-PR.75-f33d → 6.6.0-PR.75-9891

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.
@@ -1,38 +1,5 @@
1
1
  {
2
2
  "inputs": {
3
- "package.json": {
4
- "bytes": 2685,
5
- "imports": [],
6
- "format": "esm",
7
- "with": {
8
- "type": "json"
9
- }
10
- },
11
- "src/get-documentation-url.ts": {
12
- "bytes": 262,
13
- "imports": [
14
- {
15
- "path": "package.json",
16
- "kind": "import-statement",
17
- "original": "../package.json",
18
- "with": {
19
- "type": "json"
20
- }
21
- }
22
- ],
23
- "format": "esm"
24
- },
25
- "src/invalid-json-stringify.ts": {
26
- "bytes": 2840,
27
- "imports": [
28
- {
29
- "path": "src/get-documentation-url.ts",
30
- "kind": "import-statement",
31
- "original": "./get-documentation-url"
32
- }
33
- ],
34
- "format": "esm"
35
- },
36
3
  "node_modules/eslint/conf/default-cli-options.js": {
37
4
  "bytes": 791,
38
5
  "imports": [],
@@ -8177,9 +8144,26 @@
8177
8144
  ],
8178
8145
  "format": "cjs"
8179
8146
  },
8180
- "src/ast/tree.ts": {
8181
- "bytes": 1483,
8147
+ "package.json": {
8148
+ "bytes": 2685,
8182
8149
  "imports": [],
8150
+ "format": "esm",
8151
+ "with": {
8152
+ "type": "json"
8153
+ }
8154
+ },
8155
+ "src/get-documentation-url.ts": {
8156
+ "bytes": 262,
8157
+ "imports": [
8158
+ {
8159
+ "path": "package.json",
8160
+ "kind": "import-statement",
8161
+ "original": "../package.json",
8162
+ "with": {
8163
+ "type": "json"
8164
+ }
8165
+ }
8166
+ ],
8183
8167
  "format": "esm"
8184
8168
  },
8185
8169
  "src/ast/format.ts": {
@@ -8193,18 +8177,90 @@
8193
8177
  ],
8194
8178
  "format": "esm"
8195
8179
  },
8196
- "src/no-fixture.ts": {
8197
- "bytes": 24095,
8180
+ "src/ast/tree.ts": {
8181
+ "bytes": 1494,
8182
+ "imports": [],
8183
+ "format": "esm"
8184
+ },
8185
+ "src/fixture/variable.ts": {
8186
+ "bytes": 158,
8187
+ "imports": [],
8188
+ "format": "esm"
8189
+ },
8190
+ "src/fixture/url.ts": {
8191
+ "bytes": 221,
8192
+ "imports": [],
8193
+ "format": "esm"
8194
+ },
8195
+ "src/fixture/concurrent-promises.ts": {
8196
+ "bytes": 10578,
8198
8197
  "imports": [
8199
8198
  {
8200
8199
  "path": "node_modules/eslint/lib/api.js",
8201
8200
  "kind": "import-statement",
8202
8201
  "original": "eslint"
8203
8202
  },
8203
+ {
8204
+ "path": "node:assert",
8205
+ "kind": "import-statement",
8206
+ "external": true
8207
+ },
8208
+ {
8209
+ "path": "src/get-documentation-url.ts",
8210
+ "kind": "import-statement",
8211
+ "original": "../get-documentation-url"
8212
+ },
8213
+ {
8214
+ "path": "src/ast/format.ts",
8215
+ "kind": "import-statement",
8216
+ "original": "../ast/format"
8217
+ },
8204
8218
  {
8205
8219
  "path": "src/ast/tree.ts",
8206
8220
  "kind": "import-statement",
8207
- "original": "./ast/tree"
8221
+ "original": "../ast/tree"
8222
+ },
8223
+ {
8224
+ "path": "src/fixture/variable.ts",
8225
+ "kind": "import-statement",
8226
+ "original": "./variable"
8227
+ },
8228
+ {
8229
+ "path": "src/fixture/url.ts",
8230
+ "kind": "import-statement",
8231
+ "original": "./url"
8232
+ }
8233
+ ],
8234
+ "format": "esm"
8235
+ },
8236
+ "src/fixture/response-reference.ts": {
8237
+ "bytes": 4197,
8238
+ "imports": [
8239
+ {
8240
+ "path": "node_modules/eslint/lib/api.js",
8241
+ "kind": "import-statement",
8242
+ "original": "eslint"
8243
+ },
8244
+ {
8245
+ "path": "node:assert",
8246
+ "kind": "import-statement",
8247
+ "external": true
8248
+ },
8249
+ {
8250
+ "path": "src/ast/tree.ts",
8251
+ "kind": "import-statement",
8252
+ "original": "../ast/tree"
8253
+ }
8254
+ ],
8255
+ "format": "esm"
8256
+ },
8257
+ "src/fixture/fetch-header-getter.ts": {
8258
+ "bytes": 3414,
8259
+ "imports": [
8260
+ {
8261
+ "path": "src/fixture/response-reference.ts",
8262
+ "kind": "import-statement",
8263
+ "original": "./response-reference"
8208
8264
  },
8209
8265
  {
8210
8266
  "path": "node:assert",
@@ -8214,29 +8270,50 @@
8214
8270
  {
8215
8271
  "path": "src/get-documentation-url.ts",
8216
8272
  "kind": "import-statement",
8217
- "original": "./get-documentation-url"
8273
+ "original": "../get-documentation-url"
8218
8274
  },
8219
8275
  {
8220
- "path": "src/ast/format.ts",
8276
+ "path": "src/ast/tree.ts",
8221
8277
  "kind": "import-statement",
8222
- "original": "./ast/format"
8278
+ "original": "../ast/tree"
8223
8279
  }
8224
8280
  ],
8225
8281
  "format": "esm"
8226
8282
  },
8227
- "src/no-fixture-headers.ts": {
8228
- "bytes": 5590,
8283
+ "src/invalid-json-stringify.ts": {
8284
+ "bytes": 2840,
8229
8285
  "imports": [
8230
8286
  {
8231
- "path": "src/ast/tree.ts",
8287
+ "path": "src/get-documentation-url.ts",
8232
8288
  "kind": "import-statement",
8233
- "original": "./ast/tree"
8234
- },
8289
+ "original": "./get-documentation-url"
8290
+ }
8291
+ ],
8292
+ "format": "esm"
8293
+ },
8294
+ "src/fixture/fetch.ts": {
8295
+ "bytes": 149,
8296
+ "imports": [],
8297
+ "format": "esm"
8298
+ },
8299
+ "src/fixture/no-fixture.ts": {
8300
+ "bytes": 19159,
8301
+ "imports": [
8235
8302
  {
8236
8303
  "path": "node_modules/eslint/lib/api.js",
8237
8304
  "kind": "import-statement",
8238
8305
  "original": "eslint"
8239
8306
  },
8307
+ {
8308
+ "path": "src/ast/tree.ts",
8309
+ "kind": "import-statement",
8310
+ "original": "../ast/tree"
8311
+ },
8312
+ {
8313
+ "path": "src/fixture/response-reference.ts",
8314
+ "kind": "import-statement",
8315
+ "original": "./response-reference"
8316
+ },
8240
8317
  {
8241
8318
  "path": "node:assert",
8242
8319
  "kind": "import-statement",
@@ -8245,7 +8322,27 @@
8245
8322
  {
8246
8323
  "path": "src/get-documentation-url.ts",
8247
8324
  "kind": "import-statement",
8248
- "original": "./get-documentation-url"
8325
+ "original": "../get-documentation-url"
8326
+ },
8327
+ {
8328
+ "path": "src/ast/format.ts",
8329
+ "kind": "import-statement",
8330
+ "original": "../ast/format"
8331
+ },
8332
+ {
8333
+ "path": "src/fixture/fetch.ts",
8334
+ "kind": "import-statement",
8335
+ "original": "./fetch"
8336
+ },
8337
+ {
8338
+ "path": "src/fixture/variable.ts",
8339
+ "kind": "import-statement",
8340
+ "original": "./variable"
8341
+ },
8342
+ {
8343
+ "path": "src/fixture/url.ts",
8344
+ "kind": "import-statement",
8345
+ "original": "./url"
8249
8346
  }
8250
8347
  ],
8251
8348
  "format": "esm"
@@ -8307,22 +8404,27 @@
8307
8404
  "format": "esm"
8308
8405
  },
8309
8406
  "src/index.ts": {
8310
- "bytes": 3113,
8407
+ "bytes": 3353,
8311
8408
  "imports": [
8312
8409
  {
8313
- "path": "src/invalid-json-stringify.ts",
8410
+ "path": "src/fixture/concurrent-promises.ts",
8314
8411
  "kind": "import-statement",
8315
- "original": "./invalid-json-stringify"
8412
+ "original": "./fixture/concurrent-promises"
8316
8413
  },
8317
8414
  {
8318
- "path": "src/no-fixture.ts",
8415
+ "path": "src/fixture/fetch-header-getter.ts",
8319
8416
  "kind": "import-statement",
8320
- "original": "./no-fixture"
8417
+ "original": "./fixture/fetch-header-getter"
8418
+ },
8419
+ {
8420
+ "path": "src/invalid-json-stringify.ts",
8421
+ "kind": "import-statement",
8422
+ "original": "./invalid-json-stringify"
8321
8423
  },
8322
8424
  {
8323
- "path": "src/no-fixture-headers.ts",
8425
+ "path": "src/fixture/no-fixture.ts",
8324
8426
  "kind": "import-statement",
8325
- "original": "./no-fixture-headers"
8427
+ "original": "./fixture/no-fixture"
8326
8428
  },
8327
8429
  {
8328
8430
  "path": "src/no-promise-instance-method.ts",
@@ -8876,6 +8978,16 @@
8876
8978
  "kind": "require-call",
8877
8979
  "external": true
8878
8980
  },
8981
+ {
8982
+ "path": "node:assert",
8983
+ "kind": "require-call",
8984
+ "external": true
8985
+ },
8986
+ {
8987
+ "path": "node:assert",
8988
+ "kind": "require-call",
8989
+ "external": true
8990
+ },
8879
8991
  {
8880
8992
  "path": "node:assert",
8881
8993
  "kind": "require-call",
@@ -10527,7 +10639,7 @@
10527
10639
  "bytesInOutput": 772
10528
10640
  },
10529
10641
  "src/index.ts": {
10530
- "bytesInOutput": 2180
10642
+ "bytesInOutput": 2271
10531
10643
  },
10532
10644
  "package.json": {
10533
10645
  "bytesInOutput": 2774
@@ -10535,20 +10647,35 @@
10535
10647
  "src/get-documentation-url.ts": {
10536
10648
  "bytesInOutput": 146
10537
10649
  },
10538
- "src/invalid-json-stringify.ts": {
10539
- "bytesInOutput": 2471
10650
+ "src/ast/format.ts": {
10651
+ "bytesInOutput": 331
10540
10652
  },
10541
10653
  "src/ast/tree.ts": {
10542
- "bytesInOutput": 970
10654
+ "bytesInOutput": 981
10543
10655
  },
10544
- "src/ast/format.ts": {
10545
- "bytesInOutput": 331
10656
+ "src/fixture/variable.ts": {
10657
+ "bytesInOutput": 118
10658
+ },
10659
+ "src/fixture/url.ts": {
10660
+ "bytesInOutput": 129
10661
+ },
10662
+ "src/fixture/concurrent-promises.ts": {
10663
+ "bytesInOutput": 8763
10664
+ },
10665
+ "src/fixture/response-reference.ts": {
10666
+ "bytesInOutput": 2776
10667
+ },
10668
+ "src/fixture/fetch-header-getter.ts": {
10669
+ "bytesInOutput": 2693
10670
+ },
10671
+ "src/invalid-json-stringify.ts": {
10672
+ "bytesInOutput": 2473
10546
10673
  },
10547
- "src/no-fixture.ts": {
10548
- "bytesInOutput": 19373
10674
+ "src/fixture/fetch.ts": {
10675
+ "bytesInOutput": 113
10549
10676
  },
10550
- "src/no-fixture-headers.ts": {
10551
- "bytesInOutput": 4585
10677
+ "src/fixture/no-fixture.ts": {
10678
+ "bytesInOutput": 16123
10552
10679
  },
10553
10680
  "src/no-promise-instance-method.ts": {
10554
10681
  "bytesInOutput": 1275
@@ -10581,7 +10708,7 @@
10581
10708
  "bytesInOutput": 3362
10582
10709
  }
10583
10710
  },
10584
- "bytes": 3832358
10711
+ "bytes": 3844761
10585
10712
  }
10586
10713
  }
10587
10714
  }
@@ -26,7 +26,7 @@ function getEnclosingStatement(node) {
26
26
  function getEnclosingScopeNode(node) {
27
27
  return getAncestor(
28
28
  node,
29
- (parentNode) => ["FunctionExpression", "FunctionDeclaration", "ArrowFunctionExpression"].includes(parentNode.type)
29
+ (parentNode) => ["FunctionExpression", "FunctionDeclaration", "ArrowFunctionExpression", "Program"].includes(parentNode.type)
30
30
  );
31
31
  }
32
32
  export {
@@ -35,4 +35,4 @@ export {
35
35
  getEnclosingStatement,
36
36
  getParent
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FzdC90cmVlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQWdCTyxTQUFTLFVBQVUsTUFBcUM7QUFDN0QsU0FBUSxLQUF3QztBQUNsRDtBQUVPLFNBQVMsWUFDZCxNQUNBLFNBQ0EsYUFDa0I7QUFDbEIsUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLFlBQVksT0FBTyxTQUFTLFNBQVM7QUFDakUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLFlBQVksY0FBYyxRQUFRLE1BQU0sR0FBRztBQUMzRCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sZ0JBQWdCLFlBQVksT0FBTyxTQUFTLGFBQWE7QUFDekUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixjQUFjLFlBQVksTUFBTSxHQUFHO0FBQ25FLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxZQUFZLFFBQVEsU0FBUyxXQUFXO0FBQ2pEO0FBRU8sU0FBUyxzQkFBc0IsTUFBWTtBQUNoRCxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0EsQ0FBQyxlQUFlLFdBQVcsS0FBSyxTQUFTLFdBQVcsS0FBSyxXQUFXLEtBQUssU0FBUyxhQUFhO0FBQUEsRUFDakc7QUFDRjtBQUVPLFNBQVMsc0JBQXNCLE1BQVk7QUFDaEQsU0FBTztBQUFBLElBQVk7QUFBQSxJQUFNLENBQUMsZUFDeEIsQ0FBQyxzQkFBc0IsdUJBQXVCLHlCQUF5QixFQUFFLFNBQVMsV0FBVyxJQUFJO0FBQUEsRUFDbkc7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
38
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FzdC90cmVlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQWdCTyxTQUFTLFVBQVUsTUFBcUM7QUFDN0QsU0FBUSxLQUF3QztBQUNsRDtBQUVPLFNBQVMsWUFDZCxNQUNBLFNBQ0EsYUFDa0I7QUFDbEIsUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLFlBQVksT0FBTyxTQUFTLFNBQVM7QUFDakUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLFlBQVksY0FBYyxRQUFRLE1BQU0sR0FBRztBQUMzRCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sZ0JBQWdCLFlBQVksT0FBTyxTQUFTLGFBQWE7QUFDekUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixjQUFjLFlBQVksTUFBTSxHQUFHO0FBQ25FLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxZQUFZLFFBQVEsU0FBUyxXQUFXO0FBQ2pEO0FBRU8sU0FBUyxzQkFBc0IsTUFBWTtBQUNoRCxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0EsQ0FBQyxlQUFlLFdBQVcsS0FBSyxTQUFTLFdBQVcsS0FBSyxXQUFXLEtBQUssU0FBUyxhQUFhO0FBQUEsRUFDakc7QUFDRjtBQUVPLFNBQVMsc0JBQXNCLE1BQVk7QUFDaEQsU0FBTztBQUFBLElBQVk7QUFBQSxJQUFNLENBQUMsZUFDeEIsQ0FBQyxzQkFBc0IsdUJBQXVCLDJCQUEyQixTQUFTLEVBQUUsU0FBUyxXQUFXLElBQUk7QUFBQSxFQUM5RztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,191 @@
1
+ // src/fixture/concurrent-promises.ts
2
+ import "eslint";
3
+ import { strict as assert } from "node:assert";
4
+ import getDocumentationUrl from "../get-documentation-url.mjs";
5
+ import { getIndentation } from "../ast/format.mjs";
6
+ import { getParent } from "../ast/tree.mjs";
7
+ import { isValidPropertyName } from "./variable.mjs";
8
+ import { replaceEndpointUrlPrefixWithBasePath } from "./url.mjs";
9
+ var ruleId = "concurrent-promises";
10
+ function analyzeFixtureCall(call, results, sourceCode) {
11
+ const parent = getParent(call);
12
+ if (!parent) {
13
+ return;
14
+ }
15
+ let nextCall;
16
+ if (parent.type === "ArrayExpression") {
17
+ results.fixtureNode = call;
18
+ } else if (parent.type === "MemberExpression" && parent.property.type === "Identifier") {
19
+ if (parent.property.name === "expect") {
20
+ const assertionCall = getParent(parent);
21
+ assert.ok(assertionCall && assertionCall.type === "CallExpression");
22
+ results.assertions = [...results.assertions ?? [], assertionCall.arguments];
23
+ nextCall = assertionCall;
24
+ } else if (parent.property.name === "send") {
25
+ const sendRequestBodyCall = getParent(parent);
26
+ assert.ok(sendRequestBodyCall && sendRequestBodyCall.type === "CallExpression");
27
+ results.requestBody = sendRequestBodyCall.arguments[0];
28
+ nextCall = sendRequestBodyCall;
29
+ } else if (parent.property.name === "set") {
30
+ const setRequestHeaderCall = getParent(parent);
31
+ assert.ok(setRequestHeaderCall && setRequestHeaderCall.type === "CallExpression");
32
+ const [name, value] = setRequestHeaderCall.arguments;
33
+ results.requestHeaders = [...results.requestHeaders ?? [], { name, value }];
34
+ nextCall = setRequestHeaderCall;
35
+ }
36
+ } else {
37
+ throw new Error(`Unexpected expression in fixture/supertest call ${sourceCode.getText(parent)}.`);
38
+ }
39
+ if (nextCall) {
40
+ analyzeFixtureCall(nextCall, results, sourceCode);
41
+ }
42
+ }
43
+ function createResponseAssertions(fixtureCallInformation, sourceCode, responseVariableName) {
44
+ let statusAssertion;
45
+ const nonStatusAssertions = [];
46
+ for (const expectArguments of fixtureCallInformation.assertions ?? []) {
47
+ if (expectArguments.length === 1) {
48
+ const [assertionArgument] = expectArguments;
49
+ assert.ok(assertionArgument);
50
+ if (assertionArgument.type === "MemberExpression" && assertionArgument.object.type === "Identifier" && assertionArgument.object.name === "StatusCodes" || assertionArgument.type === "Literal" || sourceCode.getText(assertionArgument).includes("StatusCodes.")) {
51
+ statusAssertion = `assert.equal(${responseVariableName}.status, ${sourceCode.getText(assertionArgument)})`;
52
+ } else if (assertionArgument.type === "ArrowFunctionExpression") {
53
+ let functionBody = sourceCode.getText(assertionArgument.body);
54
+ const [originalResponseArgument] = assertionArgument.params;
55
+ assert.ok(originalResponseArgument?.type === "Identifier");
56
+ const originalResponseArgumentName = originalResponseArgument.name;
57
+ if (originalResponseArgumentName !== responseVariableName) {
58
+ functionBody = functionBody.replace(
59
+ new RegExp(`\\b${originalResponseArgumentName}\\b`, "ug"),
60
+ responseVariableName
61
+ );
62
+ }
63
+ nonStatusAssertions.push(`assert.ok(${functionBody})`);
64
+ } else if (assertionArgument.type === "Identifier") {
65
+ nonStatusAssertions.push(`assert.ok(${sourceCode.getText(assertionArgument)}(${responseVariableName}))`);
66
+ } else if (assertionArgument.type === "ObjectExpression" || assertionArgument.type === "CallExpression") {
67
+ nonStatusAssertions.push(
68
+ `assert.deepEqual(await ${responseVariableName}.json(), ${sourceCode.getText(assertionArgument)})`
69
+ );
70
+ } else {
71
+ throw new Error(`Unexpected Supertest assertion argument: ".expect(${sourceCode.getText(assertionArgument)})`);
72
+ }
73
+ } else if (expectArguments.length === 2) {
74
+ const [headerName, headerValue] = expectArguments;
75
+ assert.ok(headerName && headerValue);
76
+ const headersReference = `${responseVariableName}.headers`;
77
+ if (headerValue.type === "Literal" && headerValue.value instanceof RegExp) {
78
+ nonStatusAssertions.push(
79
+ `assert.ok(${headersReference}.get(${sourceCode.getText(headerName)}).match(${sourceCode.getText(headerValue)}))`
80
+ );
81
+ } else {
82
+ nonStatusAssertions.push(
83
+ `assert.equal(${headersReference}.get(${sourceCode.getText(headerName)}), ${sourceCode.getText(headerValue)})`
84
+ );
85
+ }
86
+ }
87
+ }
88
+ return {
89
+ statusAssertion,
90
+ nonStatusAssertions
91
+ };
92
+ }
93
+ var rule = {
94
+ meta: {
95
+ type: "suggestion",
96
+ docs: {
97
+ description: "Prefer native fetch API over customized fixture API.",
98
+ url: getDocumentationUrl(ruleId)
99
+ },
100
+ messages: {
101
+ preferNativeFetch: "Prefer native fetch API over customized fixture API.",
102
+ unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}. Please manually convert the fixture API call to fetch API call.'
103
+ },
104
+ fixable: "code",
105
+ schema: []
106
+ },
107
+ // eslint-disable-next-line max-lines-per-function
108
+ create(context) {
109
+ const sourceCode = context.sourceCode;
110
+ return {
111
+ // eslint-disable-next-line max-lines-per-function
112
+ 'CallExpression[callee.object.name="Promise"] > ArrayExpression CallExpression[callee.object.object.name="fixture"][callee.object.property.name="api"]': (fixtureCall) => {
113
+ try {
114
+ assert.ok(fixtureCall.type === "CallExpression");
115
+ const fixtureFunction = fixtureCall.callee;
116
+ assert.ok(fixtureFunction.type === "MemberExpression");
117
+ const indentation = getIndentation(fixtureCall, sourceCode);
118
+ const [urlArgumentNode] = fixtureCall.arguments;
119
+ assert.ok(urlArgumentNode !== void 0);
120
+ const fixtureCallInformation = {};
121
+ analyzeFixtureCall(fixtureCall, fixtureCallInformation, sourceCode);
122
+ const originalUrlArgumentText = sourceCode.getText(urlArgumentNode);
123
+ const fetchUrlArgumentText = replaceEndpointUrlPrefixWithBasePath(originalUrlArgumentText);
124
+ const methodNode = fixtureFunction.property;
125
+ assert.ok(methodNode.type === "Identifier");
126
+ const fetchRequestArgumentLines = [
127
+ "{",
128
+ ` method: '${methodNode.name.toUpperCase()}',`,
129
+ ...fixtureCallInformation.requestBody ? [` body: JSON.stringify(${sourceCode.getText(fixtureCallInformation.requestBody)}),`] : [],
130
+ ...fixtureCallInformation.requestHeaders ? [
131
+ ` headers: {`,
132
+ ...fixtureCallInformation.requestHeaders.map(
133
+ ({ name, value }) => (
134
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, no-nested-ternary, sonarjs/no-nested-template-literals
135
+ ` ${name.type === "Literal" ? isValidPropertyName(name.value) ? name.value : `'${name.value}'` : `[${sourceCode.getText(name)}]`}: ${sourceCode.getText(value)},`
136
+ )
137
+ ),
138
+ ` },`
139
+ ] : [],
140
+ "}"
141
+ ].join(`
142
+ ${indentation}`);
143
+ const responseVariableNameToUse = "res";
144
+ const { statusAssertion, nonStatusAssertions } = createResponseAssertions(
145
+ fixtureCallInformation,
146
+ sourceCode,
147
+ responseVariableNameToUse
148
+ );
149
+ const disableLintComment = "// eslint-disable-next-line @checkdigit/no-promise-instance-method";
150
+ const fetchCallText = `fetch(${fetchUrlArgumentText}, ${fetchRequestArgumentLines})`;
151
+ const appendingAssignmentAndAssertionText = [
152
+ ...statusAssertion !== void 0 ? [statusAssertion] : [],
153
+ ...nonStatusAssertions
154
+ ].join(`;
155
+ ${indentation}`);
156
+ const replacementText = [
157
+ disableLintComment,
158
+ `${fetchCallText}.then((${responseVariableNameToUse}) => {`,
159
+ appendingAssignmentAndAssertionText === "" ? "" : ` ${appendingAssignmentAndAssertionText};`,
160
+ ` return ${responseVariableNameToUse};`,
161
+ `})`
162
+ ].join(`
163
+ ${indentation}`);
164
+ context.report({
165
+ node: fixtureCall,
166
+ messageId: "preferNativeFetch",
167
+ fix(fixer) {
168
+ return fixer.replaceText(fixtureCallInformation.fixtureNode, replacementText);
169
+ }
170
+ });
171
+ } catch (error) {
172
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
173
+ context.report({
174
+ node: fixtureCall,
175
+ messageId: "unknownError",
176
+ data: {
177
+ fileName: context.filename,
178
+ error: error instanceof Error ? error.toString() : JSON.stringify(error)
179
+ }
180
+ });
181
+ }
182
+ }
183
+ };
184
+ }
185
+ };
186
+ var concurrent_promises_default = rule;
187
+ export {
188
+ concurrent_promises_default as default,
189
+ ruleId
190
+ };
191
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvY29uY3VycmVudC1wcm9taXNlcy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFTQSxPQUFzQztBQUN0QyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGlCQUFpQjtBQUMxQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLDRDQUE0QztBQUU5QyxJQUFNLFNBQVM7QUFVdEIsU0FBUyxtQkFBbUIsTUFBNEIsU0FBaUMsWUFBd0I7QUFDL0csUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYO0FBQUEsRUFDRjtBQUVBLE1BQUk7QUFDSixNQUFJLE9BQU8sU0FBUyxtQkFBbUI7QUFDckMsWUFBUSxjQUFjO0FBQUEsRUFDeEIsV0FBVyxPQUFPLFNBQVMsc0JBQXNCLE9BQU8sU0FBUyxTQUFTLGNBQWM7QUFDdEYsUUFBSSxPQUFPLFNBQVMsU0FBUyxVQUFVO0FBRXJDLFlBQU0sZ0JBQWdCLFVBQVUsTUFBTTtBQUN0QyxhQUFPLEdBQUcsaUJBQWlCLGNBQWMsU0FBUyxnQkFBZ0I7QUFDbEUsY0FBUSxhQUFhLENBQUMsR0FBSSxRQUFRLGNBQWMsQ0FBQyxHQUFJLGNBQWMsU0FBeUI7QUFDNUYsaUJBQVc7QUFBQSxJQUNiLFdBQVcsT0FBTyxTQUFTLFNBQVMsUUFBUTtBQUUxQyxZQUFNLHNCQUFzQixVQUFVLE1BQU07QUFDNUMsYUFBTyxHQUFHLHVCQUF1QixvQkFBb0IsU0FBUyxnQkFBZ0I7QUFDOUUsY0FBUSxjQUFjLG9CQUFvQixVQUFVLENBQUM7QUFDckQsaUJBQVc7QUFBQSxJQUNiLFdBQVcsT0FBTyxTQUFTLFNBQVMsT0FBTztBQUV6QyxZQUFNLHVCQUF1QixVQUFVLE1BQU07QUFDN0MsYUFBTyxHQUFHLHdCQUF3QixxQkFBcUIsU0FBUyxnQkFBZ0I7QUFDaEYsWUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLHFCQUFxQjtBQUMz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
@@ -0,0 +1,64 @@
1
+ // src/fixture/fetch-header-getter.ts
2
+ import { analyzeResponseReferences } from "./response-reference.mjs";
3
+ import { strict as assert } from "node:assert";
4
+ import getDocumentationUrl from "../get-documentation-url.mjs";
5
+ import { getParent } from "../ast/tree.mjs";
6
+ var ruleId = "fetch-header-getter";
7
+ var rule = {
8
+ meta: {
9
+ type: "problem",
10
+ docs: {
11
+ description: "Make sure getter is used to access response headers.",
12
+ url: getDocumentationUrl(ruleId)
13
+ },
14
+ messages: {
15
+ shouldUseHeaderGetter: "Getter should be used to access response headers."
16
+ },
17
+ fixable: "code",
18
+ schema: []
19
+ },
20
+ create(context) {
21
+ const sourceCode = context.sourceCode;
22
+ const scopeManager = sourceCode.scopeManager;
23
+ return {
24
+ 'VariableDeclarator[init.argument.callee.name="fetch"]': (fetchCall) => {
25
+ const variableDeclaration = getParent(fetchCall);
26
+ assert.ok(variableDeclaration?.type === "VariableDeclaration");
27
+ const { variable: responseVariable, headersReferences: responseHeadersReferences } = analyzeResponseReferences(
28
+ variableDeclaration,
29
+ scopeManager
30
+ );
31
+ assert.ok(responseVariable);
32
+ const directHeaderReferences = responseHeadersReferences.map(getParent).filter((parent) => parent?.type === "MemberExpression");
33
+ const indirectHeaderReferences = responseHeadersReferences.map((reference) => getParent(reference)).filter((parent) => parent?.type === "VariableDeclarator").map((declarator) => declarator.id.name).map((redefinedHeadersVariableName) => {
34
+ const headersVariable = responseVariable.scope.variables.find((variable) => {
35
+ const identifier = variable.identifiers[0];
36
+ return identifier?.type === "Identifier" && identifier.name === redefinedHeadersVariableName;
37
+ });
38
+ return headersVariable?.references.map((reference) => getParent(reference.identifier)).filter((parent) => parent?.type === "MemberExpression") ?? [];
39
+ }).flat();
40
+ const invalidHeaderReferences = [...directHeaderReferences, ...indirectHeaderReferences].filter(
41
+ (reference) => !(reference.property.type === "Identifier" && reference.property.name === "get")
42
+ );
43
+ invalidHeaderReferences.forEach((reference) => {
44
+ const headerNameNode = reference.property;
45
+ const headerName = reference.computed ? sourceCode.getText(headerNameNode) : `'${sourceCode.getText(headerNameNode)}'`;
46
+ const replacementText = `${sourceCode.getText(reference.object)}.get(${headerName})`;
47
+ context.report({
48
+ node: reference,
49
+ messageId: "shouldUseHeaderGetter",
50
+ fix(fixer) {
51
+ return fixer.replaceText(reference, replacementText);
52
+ }
53
+ });
54
+ });
55
+ }
56
+ };
57
+ }
58
+ };
59
+ var fetch_header_getter_default = rule;
60
+ export {
61
+ fetch_header_getter_default as default,
62
+ ruleId
63
+ };
64
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvZmV0Y2gtaGVhZGVyLWdldHRlci50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFVQSxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLGlCQUFpQjtBQUVuQixJQUFNLFNBQVM7QUFFdEIsSUFBTSxPQUF3QjtBQUFBLEVBQzVCLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUssb0JBQW9CLE1BQU07QUFBQSxJQUNqQztBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsdUJBQXVCO0FBQUEsSUFDekI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBQzNCLFVBQU0sZUFBZSxXQUFXO0FBRWhDLFdBQU87QUFBQSxNQUNMLHlEQUF5RCxDQUFDLGNBQWtDO0FBQzFGLGNBQU0sc0JBQXNCLFVBQVUsU0FBUztBQUMvQyxlQUFPLEdBQUcscUJBQXFCLFNBQVMscUJBQXFCO0FBQzdELGNBQU0sRUFBRSxVQUFVLGtCQUFrQixtQkFBbUIsMEJBQTBCLElBQUk7QUFBQSxVQUNuRjtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQ0EsZUFBTyxHQUFHLGdCQUFnQjtBQUUxQixjQUFNLHlCQUF5QiwwQkFDNUIsSUFBSSxTQUFTLEVBQ2IsT0FBTyxDQUFDLFdBQXVDLFFBQVEsU0FBUyxrQkFBa0I7QUFFckYsY0FBTSwyQkFBMkIsMEJBQzlCLElBQUksQ0FBQyxjQUFjLFVBQVUsU0FBUyxDQUFDLEVBQ3ZDLE9BQU8sQ0FBQyxXQUF5QyxRQUFRLFNBQVMsb0JBQW9CLEVBQ3RGLElBQUksQ0FBQyxlQUFnQixXQUFXLEdBQWtCLElBQUksRUFDdEQsSUFBSSxDQUFDLGlDQUFpQztBQUNyQyxnQkFBTSxrQkFBa0IsaUJBQWlCLE1BQU0sVUFBVSxLQUFLLENBQUMsYUFBYTtBQUMxRSxrQkFBTSxhQUFhLFNBQVMsWUFBWSxDQUFDO0FBQ3pDLG1CQUFPLFlBQVksU0FBUyxnQkFBZ0IsV0FBVyxTQUFTO0FBQUEsVUFDbEUsQ0FBQztBQUNELGlCQUNFLGlCQUFpQixXQUNkLElBQUksQ0FBQyxjQUFjLFVBQVUsVUFBVSxVQUFVLENBQUMsRUFDbEQsT0FBTyxDQUFDLFdBQXVDLFFBQVEsU0FBUyxrQkFBa0IsS0FBSyxDQUFDO0FBQUEsUUFFL0YsQ0FBQyxFQUNBLEtBQUs7QUFFUixjQUFNLDBCQUEwQixDQUFDLEdBQUcsd0JBQXdCLEdBQUcsd0JBQXdCLEVBQUU7QUFBQSxVQUN2RixDQUFDLGNBQWMsRUFBRSxVQUFVLFNBQVMsU0FBUyxnQkFBZ0IsVUFBVSxTQUFTLFNBQVM7QUFBQSxRQUMzRjtBQUVBLGdDQUF3QixRQUFRLENBQUMsY0FBYztBQUM3QyxnQkFBTSxpQkFBaUIsVUFBVTtBQUNqQyxnQkFBTSxhQUFhLFVBQVUsV0FDekIsV0FBVyxRQUFRLGNBQWMsSUFDakMsSUFBSSxXQUFXLFFBQVEsY0FBYyxDQUFDO0FBQzFDLGdCQUFNLGtCQUFrQixHQUFHLFdBQVcsUUFBUSxVQUFVLE1BQU0sQ0FBQyxRQUFRLFVBQVU7QUFFakYsa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTTtBQUFBLFlBQ04sV0FBVztBQUFBLFlBQ1gsSUFBSSxPQUFPO0FBQ1QscUJBQU8sTUFBTSxZQUFZLFdBQVcsZUFBZTtBQUFBLFlBQ3JEO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSCxDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFPLDhCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,8 @@
1
+ // src/fixture/fetch.ts
2
+ function getResponseBodyRetrievalText(responseVariableName) {
3
+ return `await ${responseVariableName}.json()`;
4
+ }
5
+ export {
6
+ getResponseBodyRetrievalText
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvZmV0Y2gudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRU8sU0FBUyw2QkFBNkIsc0JBQThCO0FBQ3pFLFNBQU8sU0FBUyxvQkFBb0I7QUFDdEM7IiwKICAibmFtZXMiOiBbXQp9Cg==