@checkdigit/eslint-plugin 6.6.0-PR.75-c68b → 6.6.0-PR.75-0869
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 +675 -541
- package/dist-cjs/metafile.json +73 -25
- package/dist-mjs/fixture/fetch-response-body-json.mjs +63 -0
- package/dist-mjs/fixture/fetch-response-header-getter-ts.mjs +74 -0
- package/dist-mjs/fixture/no-service-wrapper.mjs +5 -2
- package/dist-mjs/fixture/no-status-code.mjs +1 -1
- package/dist-mjs/fixture/url.mjs +2 -2
- package/dist-mjs/index.mjs +11 -3
- package/dist-types/fixture/fetch-response-body-json.d.ts +4 -0
- package/dist-types/fixture/fetch-response-header-getter-ts.d.ts +4 -0
- package/dist-types/fixture/no-service-wrapper.d.ts +1 -1
- package/dist-types/index.d.ts +5 -1
- package/package.json +1 -1
- package/src/fixture/fetch-response-body-json.ts +76 -0
- package/src/fixture/fetch-response-header-getter-ts.ts +96 -0
- package/src/fixture/no-service-wrapper.ts +8 -4
- package/src/fixture/no-status-code.ts +1 -1
- package/src/fixture/url.ts +2 -2
- package/src/index.ts +8 -0
package/dist-cjs/metafile.json
CHANGED
|
@@ -12250,6 +12250,38 @@
|
|
|
12250
12250
|
],
|
|
12251
12251
|
"format": "cjs"
|
|
12252
12252
|
},
|
|
12253
|
+
"src/fixture/fetch-response-body-json.ts": {
|
|
12254
|
+
"bytes": 2633,
|
|
12255
|
+
"imports": [
|
|
12256
|
+
{
|
|
12257
|
+
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
12258
|
+
"kind": "import-statement",
|
|
12259
|
+
"original": "@typescript-eslint/utils"
|
|
12260
|
+
},
|
|
12261
|
+
{
|
|
12262
|
+
"path": "src/get-documentation-url.ts",
|
|
12263
|
+
"kind": "import-statement",
|
|
12264
|
+
"original": "../get-documentation-url"
|
|
12265
|
+
}
|
|
12266
|
+
],
|
|
12267
|
+
"format": "esm"
|
|
12268
|
+
},
|
|
12269
|
+
"src/fixture/fetch-response-header-getter-ts.ts": {
|
|
12270
|
+
"bytes": 3985,
|
|
12271
|
+
"imports": [
|
|
12272
|
+
{
|
|
12273
|
+
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
12274
|
+
"kind": "import-statement",
|
|
12275
|
+
"original": "@typescript-eslint/utils"
|
|
12276
|
+
},
|
|
12277
|
+
{
|
|
12278
|
+
"path": "src/get-documentation-url.ts",
|
|
12279
|
+
"kind": "import-statement",
|
|
12280
|
+
"original": "../get-documentation-url"
|
|
12281
|
+
}
|
|
12282
|
+
],
|
|
12283
|
+
"format": "esm"
|
|
12284
|
+
},
|
|
12253
12285
|
"src/ast/format.ts": {
|
|
12254
12286
|
"bytes": 647,
|
|
12255
12287
|
"imports": [
|
|
@@ -12272,7 +12304,7 @@
|
|
|
12272
12304
|
"format": "esm"
|
|
12273
12305
|
},
|
|
12274
12306
|
"src/fixture/url.ts": {
|
|
12275
|
-
"bytes":
|
|
12307
|
+
"bytes": 670,
|
|
12276
12308
|
"imports": [],
|
|
12277
12309
|
"format": "esm"
|
|
12278
12310
|
},
|
|
@@ -12407,7 +12439,7 @@
|
|
|
12407
12439
|
"format": "esm"
|
|
12408
12440
|
},
|
|
12409
12441
|
"src/fixture/no-service-wrapper.ts": {
|
|
12410
|
-
"bytes":
|
|
12442
|
+
"bytes": 9416,
|
|
12411
12443
|
"imports": [
|
|
12412
12444
|
{
|
|
12413
12445
|
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
@@ -12448,7 +12480,7 @@
|
|
|
12448
12480
|
"format": "esm"
|
|
12449
12481
|
},
|
|
12450
12482
|
"src/fixture/no-status-code.ts": {
|
|
12451
|
-
"bytes":
|
|
12483
|
+
"bytes": 2353,
|
|
12452
12484
|
"imports": [
|
|
12453
12485
|
{
|
|
12454
12486
|
"path": "node_modules/@typescript-eslint/utils/dist/index.js",
|
|
@@ -12509,13 +12541,23 @@
|
|
|
12509
12541
|
"format": "esm"
|
|
12510
12542
|
},
|
|
12511
12543
|
"src/index.ts": {
|
|
12512
|
-
"bytes":
|
|
12544
|
+
"bytes": 4205,
|
|
12513
12545
|
"imports": [
|
|
12514
12546
|
{
|
|
12515
12547
|
"path": "src/fixture/fetch-header-getter.ts",
|
|
12516
12548
|
"kind": "import-statement",
|
|
12517
12549
|
"original": "./fixture/fetch-header-getter"
|
|
12518
12550
|
},
|
|
12551
|
+
{
|
|
12552
|
+
"path": "src/fixture/fetch-response-body-json.ts",
|
|
12553
|
+
"kind": "import-statement",
|
|
12554
|
+
"original": "./fixture/fetch-response-body-json"
|
|
12555
|
+
},
|
|
12556
|
+
{
|
|
12557
|
+
"path": "src/fixture/fetch-response-header-getter-ts.ts",
|
|
12558
|
+
"kind": "import-statement",
|
|
12559
|
+
"original": "./fixture/fetch-response-header-getter-ts"
|
|
12560
|
+
},
|
|
12519
12561
|
{
|
|
12520
12562
|
"path": "src/fixture/fetch-then.ts",
|
|
12521
12563
|
"kind": "import-statement",
|
|
@@ -13334,7 +13376,7 @@
|
|
|
13334
13376
|
"bytesInOutput": 157
|
|
13335
13377
|
},
|
|
13336
13378
|
"node_modules/@eslint/eslintrc/dist/eslintrc.cjs": {
|
|
13337
|
-
"bytesInOutput":
|
|
13379
|
+
"bytesInOutput": 103394
|
|
13338
13380
|
},
|
|
13339
13381
|
"node_modules/is-extglob/index.js": {
|
|
13340
13382
|
"bytesInOutput": 444
|
|
@@ -13391,7 +13433,7 @@
|
|
|
13391
13433
|
"bytesInOutput": 302
|
|
13392
13434
|
},
|
|
13393
13435
|
"node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs": {
|
|
13394
|
-
"bytesInOutput":
|
|
13436
|
+
"bytesInOutput": 28037
|
|
13395
13437
|
},
|
|
13396
13438
|
"node_modules/eslint/lib/shared/traverser.js": {
|
|
13397
13439
|
"bytesInOutput": 4738
|
|
@@ -13508,7 +13550,7 @@
|
|
|
13508
13550
|
"bytesInOutput": 17031
|
|
13509
13551
|
},
|
|
13510
13552
|
"node_modules/eslint/lib/linter/apply-disable-directives.js": {
|
|
13511
|
-
"bytesInOutput":
|
|
13553
|
+
"bytesInOutput": 10137
|
|
13512
13554
|
},
|
|
13513
13555
|
"node_modules/esquery/dist/esquery.min.js": {
|
|
13514
13556
|
"bytesInOutput": 61887
|
|
@@ -13526,7 +13568,7 @@
|
|
|
13526
13568
|
"bytesInOutput": 7449
|
|
13527
13569
|
},
|
|
13528
13570
|
"node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js": {
|
|
13529
|
-
"bytesInOutput":
|
|
13571
|
+
"bytesInOutput": 2552
|
|
13530
13572
|
},
|
|
13531
13573
|
"node_modules/esutils/lib/ast.js": {
|
|
13532
13574
|
"bytesInOutput": 3324
|
|
@@ -14483,7 +14525,7 @@
|
|
|
14483
14525
|
"bytesInOutput": 17805
|
|
14484
14526
|
},
|
|
14485
14527
|
"node_modules/eslint/lib/linter/rules.js": {
|
|
14486
|
-
"bytesInOutput":
|
|
14528
|
+
"bytesInOutput": 1586
|
|
14487
14529
|
},
|
|
14488
14530
|
"node_modules/eslint/lib/linter/safe-emitter.js": {
|
|
14489
14531
|
"bytesInOutput": 733
|
|
@@ -14498,7 +14540,7 @@
|
|
|
14498
14540
|
"bytesInOutput": 1183
|
|
14499
14541
|
},
|
|
14500
14542
|
"node_modules/eslint/lib/config/flat-config-helpers.js": {
|
|
14501
|
-
"bytesInOutput":
|
|
14543
|
+
"bytesInOutput": 1671
|
|
14502
14544
|
},
|
|
14503
14545
|
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion/index.js": {
|
|
14504
14546
|
"bytesInOutput": 4605
|
|
@@ -14537,7 +14579,7 @@
|
|
|
14537
14579
|
"bytesInOutput": 928
|
|
14538
14580
|
},
|
|
14539
14581
|
"node_modules/eslint/lib/config/flat-config-schema.js": {
|
|
14540
|
-
"bytesInOutput":
|
|
14582
|
+
"bytesInOutput": 11313
|
|
14541
14583
|
},
|
|
14542
14584
|
"node_modules/ajv/lib/refs/json-schema-draft-04.json": {
|
|
14543
14585
|
"bytesInOutput": 4080
|
|
@@ -14546,7 +14588,7 @@
|
|
|
14546
14588
|
"bytesInOutput": 579
|
|
14547
14589
|
},
|
|
14548
14590
|
"node_modules/eslint/lib/config/rule-validator.js": {
|
|
14549
|
-
"bytesInOutput":
|
|
14591
|
+
"bytesInOutput": 3166
|
|
14550
14592
|
},
|
|
14551
14593
|
"node_modules/eslint/lib/config/default-config.js": {
|
|
14552
14594
|
"bytesInOutput": 1424
|
|
@@ -14555,7 +14597,7 @@
|
|
|
14555
14597
|
"bytesInOutput": 6248
|
|
14556
14598
|
},
|
|
14557
14599
|
"node_modules/eslint/lib/linter/linter.js": {
|
|
14558
|
-
"bytesInOutput":
|
|
14600
|
+
"bytesInOutput": 57039
|
|
14559
14601
|
},
|
|
14560
14602
|
"node_modules/eslint/lib/linter/index.js": {
|
|
14561
14603
|
"bytesInOutput": 372
|
|
@@ -14639,10 +14681,10 @@
|
|
|
14639
14681
|
"bytesInOutput": 5074
|
|
14640
14682
|
},
|
|
14641
14683
|
"node_modules/eslint/lib/cli-engine/cli-engine.js": {
|
|
14642
|
-
"bytesInOutput":
|
|
14684
|
+
"bytesInOutput": 23876
|
|
14643
14685
|
},
|
|
14644
14686
|
"node_modules/eslint/lib/eslint/eslint.js": {
|
|
14645
|
-
"bytesInOutput":
|
|
14687
|
+
"bytesInOutput": 19439
|
|
14646
14688
|
},
|
|
14647
14689
|
"node_modules/yocto-queue/index.js": {
|
|
14648
14690
|
"bytesInOutput": 1290
|
|
@@ -14750,7 +14792,7 @@
|
|
|
14750
14792
|
"bytesInOutput": 19448
|
|
14751
14793
|
},
|
|
14752
14794
|
"node_modules/eslint/lib/eslint/flat-eslint.js": {
|
|
14753
|
-
"bytesInOutput":
|
|
14795
|
+
"bytesInOutput": 25108
|
|
14754
14796
|
},
|
|
14755
14797
|
"node_modules/eslint/lib/eslint/index.js": {
|
|
14756
14798
|
"bytesInOutput": 274
|
|
@@ -14762,7 +14804,7 @@
|
|
|
14762
14804
|
"bytesInOutput": 940
|
|
14763
14805
|
},
|
|
14764
14806
|
"node_modules/eslint/lib/shared/config-validator.js": {
|
|
14765
|
-
"bytesInOutput":
|
|
14807
|
+
"bytesInOutput": 7251
|
|
14766
14808
|
},
|
|
14767
14809
|
"node_modules/eslint/lib/rule-tester/rule-tester.js": {
|
|
14768
14810
|
"bytesInOutput": 33184
|
|
@@ -14858,7 +14900,7 @@
|
|
|
14858
14900
|
"bytesInOutput": 205
|
|
14859
14901
|
},
|
|
14860
14902
|
"node_modules/eslint/lib/rule-tester/flat-rule-tester.js": {
|
|
14861
|
-
"bytesInOutput":
|
|
14903
|
+
"bytesInOutput": 31605
|
|
14862
14904
|
},
|
|
14863
14905
|
"node_modules/eslint/lib/unsupported-api.js": {
|
|
14864
14906
|
"bytesInOutput": 538
|
|
@@ -15380,7 +15422,7 @@
|
|
|
15380
15422
|
"bytesInOutput": 2218
|
|
15381
15423
|
},
|
|
15382
15424
|
"src/index.ts": {
|
|
15383
|
-
"bytesInOutput":
|
|
15425
|
+
"bytesInOutput": 2629
|
|
15384
15426
|
},
|
|
15385
15427
|
"src/ast/tree.ts": {
|
|
15386
15428
|
"bytesInOutput": 1648
|
|
@@ -15392,7 +15434,7 @@
|
|
|
15392
15434
|
"bytesInOutput": 2943
|
|
15393
15435
|
},
|
|
15394
15436
|
"src/get-documentation-url.ts": {
|
|
15395
|
-
"bytesInOutput":
|
|
15437
|
+
"bytesInOutput": 148
|
|
15396
15438
|
},
|
|
15397
15439
|
"src/fixture/fetch.ts": {
|
|
15398
15440
|
"bytesInOutput": 1206
|
|
@@ -15400,14 +15442,20 @@
|
|
|
15400
15442
|
"src/fixture/fetch-header-getter.ts": {
|
|
15401
15443
|
"bytesInOutput": 2805
|
|
15402
15444
|
},
|
|
15445
|
+
"src/fixture/fetch-response-body-json.ts": {
|
|
15446
|
+
"bytesInOutput": 2305
|
|
15447
|
+
},
|
|
15448
|
+
"src/fixture/fetch-response-header-getter-ts.ts": {
|
|
15449
|
+
"bytesInOutput": 3322
|
|
15450
|
+
},
|
|
15403
15451
|
"src/ast/format.ts": {
|
|
15404
|
-
"bytesInOutput":
|
|
15452
|
+
"bytesInOutput": 383
|
|
15405
15453
|
},
|
|
15406
15454
|
"src/fixture/variable.ts": {
|
|
15407
15455
|
"bytesInOutput": 118
|
|
15408
15456
|
},
|
|
15409
15457
|
"src/fixture/url.ts": {
|
|
15410
|
-
"bytesInOutput":
|
|
15458
|
+
"bytesInOutput": 485
|
|
15411
15459
|
},
|
|
15412
15460
|
"src/fixture/fetch-then.ts": {
|
|
15413
15461
|
"bytesInOutput": 12296
|
|
@@ -15425,10 +15473,10 @@
|
|
|
15425
15473
|
"bytesInOutput": 1849
|
|
15426
15474
|
},
|
|
15427
15475
|
"src/fixture/no-service-wrapper.ts": {
|
|
15428
|
-
"bytesInOutput":
|
|
15476
|
+
"bytesInOutput": 8867
|
|
15429
15477
|
},
|
|
15430
15478
|
"src/fixture/no-status-code.ts": {
|
|
15431
|
-
"bytesInOutput":
|
|
15479
|
+
"bytesInOutput": 2034
|
|
15432
15480
|
},
|
|
15433
15481
|
"src/file-path-comment.ts": {
|
|
15434
15482
|
"bytesInOutput": 1961
|
|
@@ -15458,7 +15506,7 @@
|
|
|
15458
15506
|
"bytesInOutput": 3362
|
|
15459
15507
|
}
|
|
15460
15508
|
},
|
|
15461
|
-
"bytes":
|
|
15509
|
+
"bytes": 4307214
|
|
15462
15510
|
}
|
|
15463
15511
|
}
|
|
15464
15512
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// src/fixture/fetch-response-body-json.ts
|
|
2
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
4
|
+
var ruleId = "fetch-response-body-json";
|
|
5
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
|
+
var rule = createRule({
|
|
7
|
+
name: ruleId,
|
|
8
|
+
meta: {
|
|
9
|
+
type: "suggestion",
|
|
10
|
+
docs: {
|
|
11
|
+
description: 'Replace "response.body" with "await response.json()".'
|
|
12
|
+
},
|
|
13
|
+
messages: {
|
|
14
|
+
replaceBodyWithJson: 'Replace "response.body" with "await response.json()".',
|
|
15
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
16
|
+
},
|
|
17
|
+
fixable: "code",
|
|
18
|
+
schema: []
|
|
19
|
+
},
|
|
20
|
+
defaultOptions: [],
|
|
21
|
+
create(context) {
|
|
22
|
+
const parserServices = ESLintUtils.getParserServices(context);
|
|
23
|
+
const typeChecker = parserServices.program.getTypeChecker();
|
|
24
|
+
const sourceCode = context.sourceCode;
|
|
25
|
+
return {
|
|
26
|
+
'MemberExpression[property.name="body"]': (responseBody) => {
|
|
27
|
+
try {
|
|
28
|
+
const responseNode = parserServices.esTreeNodeToTSNodeMap.get(responseBody.object);
|
|
29
|
+
const responseType = typeChecker.getTypeAtLocation(responseNode);
|
|
30
|
+
const shouldReplace = responseType.getProperties().some((symbol) => symbol.name === "body") && responseType.getProperties().some((symbol) => symbol.name === "json");
|
|
31
|
+
if (shouldReplace) {
|
|
32
|
+
const responseText = sourceCode.getText(responseBody.object);
|
|
33
|
+
const needAwait = responseBody.parent.type !== AST_NODE_TYPES.ReturnStatement;
|
|
34
|
+
const replacementText = needAwait ? `(await ${responseText}.json())` : `${responseText}.json()`;
|
|
35
|
+
context.report({
|
|
36
|
+
messageId: "replaceBodyWithJson",
|
|
37
|
+
node: responseBody,
|
|
38
|
+
fix(fixer) {
|
|
39
|
+
return fixer.replaceText(responseBody, replacementText);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
45
|
+
context.report({
|
|
46
|
+
node: responseBody,
|
|
47
|
+
messageId: "unknownError",
|
|
48
|
+
data: {
|
|
49
|
+
fileName: context.filename,
|
|
50
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
var fetch_response_body_json_default = rule;
|
|
59
|
+
export {
|
|
60
|
+
fetch_response_body_json_default as default,
|
|
61
|
+
ruleId
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvZmV0Y2gtcmVzcG9uc2UtYm9keS1qc29uLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixxQkFBcUI7QUFBQSxNQUNyQixjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxRQUFRLGVBQWU7QUFDMUQsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsMENBQTBDLENBQUMsaUJBQTRDO0FBQ3JGLFlBQUk7QUFDRixnQkFBTSxlQUFlLGVBQWUsc0JBQXNCLElBQUksYUFBYSxNQUFNO0FBQ2pGLGdCQUFNLGVBQWUsWUFBWSxrQkFBa0IsWUFBWTtBQUUvRCxnQkFBTSxnQkFDSixhQUFhLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxPQUFPLFNBQVMsTUFBTSxLQUNwRSxhQUFhLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxPQUFPLFNBQVMsTUFBTTtBQUV0RSxjQUFJLGVBQWU7QUFDakIsa0JBQU0sZUFBZSxXQUFXLFFBQVEsYUFBYSxNQUFNO0FBQzNELGtCQUFNLFlBQVksYUFBYSxPQUFPLFNBQVMsZUFBZTtBQUM5RCxrQkFBTSxrQkFBa0IsWUFBWSxVQUFVLFlBQVksYUFBYSxHQUFHLFlBQVk7QUFFdEYsb0JBQVEsT0FBTztBQUFBLGNBQ2IsV0FBVztBQUFBLGNBQ1gsTUFBTTtBQUFBLGNBQ04sSUFBSSxPQUFPO0FBQ1QsdUJBQU8sTUFBTSxZQUFZLGNBQWMsZUFBZTtBQUFBLGNBQ3hEO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0YsU0FBUyxPQUFPO0FBRWQsa0JBQVEsTUFBTSxtQkFBbUIsTUFBTSxtQkFBbUIsUUFBUSxRQUFRLE1BQU0sS0FBSztBQUNyRixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsY0FDSixVQUFVLFFBQVE7QUFBQSxjQUNsQixPQUFPLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxJQUFJLEtBQUssVUFBVSxLQUFLO0FBQUEsWUFDekU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sbUNBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// src/fixture/fetch-response-header-getter-ts.ts
|
|
2
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
4
|
+
var ruleId = "fetch-response-header-getter-ts";
|
|
5
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
|
+
var rule = createRule({
|
|
7
|
+
name: ruleId,
|
|
8
|
+
meta: {
|
|
9
|
+
type: "suggestion",
|
|
10
|
+
docs: {
|
|
11
|
+
description: 'Use "get()" method to get header value from the headers object of the fetch response.'
|
|
12
|
+
},
|
|
13
|
+
messages: {
|
|
14
|
+
useGetter: 'Use "get()" method to get header value from the headers object of the fetch response.',
|
|
15
|
+
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
16
|
+
},
|
|
17
|
+
fixable: "code",
|
|
18
|
+
schema: []
|
|
19
|
+
},
|
|
20
|
+
defaultOptions: [],
|
|
21
|
+
create(context) {
|
|
22
|
+
const parserServices = ESLintUtils.getParserServices(context);
|
|
23
|
+
const typeChecker = parserServices.program.getTypeChecker();
|
|
24
|
+
const sourceCode = context.sourceCode;
|
|
25
|
+
return {
|
|
26
|
+
'MemberExpression[object.property.name="headers"]': (responseHeadersAccess) => {
|
|
27
|
+
try {
|
|
28
|
+
if (responseHeadersAccess.property.type === AST_NODE_TYPES.Identifier && responseHeadersAccess.property.name === "get") {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const responseHeadersTsNode = parserServices.esTreeNodeToTSNodeMap.get(responseHeadersAccess.object);
|
|
32
|
+
const responseType = typeChecker.getTypeAtLocation(responseHeadersTsNode);
|
|
33
|
+
const shouldReplace = responseType.getProperties().some((symbol) => symbol.name === "get");
|
|
34
|
+
if (!shouldReplace) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let replacementText;
|
|
38
|
+
if (responseHeadersAccess.property.type === AST_NODE_TYPES.Identifier) {
|
|
39
|
+
replacementText = `${sourceCode.getText(responseHeadersAccess.object)}.get(${sourceCode.getText(responseHeadersAccess.property)})`;
|
|
40
|
+
} else if (responseHeadersAccess.property.type === AST_NODE_TYPES.TemplateLiteral) {
|
|
41
|
+
replacementText = `${sourceCode.getText(responseHeadersAccess.object)}.get(${sourceCode.getText(responseHeadersAccess.property)})`;
|
|
42
|
+
} else if (responseHeadersAccess.property.type === AST_NODE_TYPES.Literal) {
|
|
43
|
+
replacementText = responseHeadersAccess.computed ? `${sourceCode.getText(responseHeadersAccess.object)}.get(${sourceCode.getText(responseHeadersAccess.property)})` : `${sourceCode.getText(responseHeadersAccess.object)}.get('${sourceCode.getText(responseHeadersAccess.property)}')`;
|
|
44
|
+
} else {
|
|
45
|
+
throw new Error(`Unexpected property type: ${responseHeadersAccess.property.type}`);
|
|
46
|
+
}
|
|
47
|
+
context.report({
|
|
48
|
+
messageId: "useGetter",
|
|
49
|
+
node: responseHeadersAccess.property,
|
|
50
|
+
fix(fixer) {
|
|
51
|
+
return fixer.replaceText(responseHeadersAccess, replacementText);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
56
|
+
context.report({
|
|
57
|
+
node: responseHeadersAccess,
|
|
58
|
+
messageId: "unknownError",
|
|
59
|
+
data: {
|
|
60
|
+
fileName: context.filename,
|
|
61
|
+
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
var fetch_response_header_getter_ts_default = rule;
|
|
70
|
+
export {
|
|
71
|
+
fetch_response_header_getter_ts_default as default,
|
|
72
|
+
ruleId
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvZmV0Y2gtcmVzcG9uc2UtaGVhZGVyLWdldHRlci10cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFPLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsV0FBVztBQUFBLE1BQ1gsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0saUJBQWlCLFlBQVksa0JBQWtCLE9BQU87QUFDNUQsVUFBTSxjQUFjLGVBQWUsUUFBUSxlQUFlO0FBQzFELFVBQU0sYUFBYSxRQUFRO0FBRTNCLFdBQU87QUFBQSxNQUNMLG9EQUFvRCxDQUFDLDBCQUFxRDtBQUN4RyxZQUFJO0FBQ0YsY0FDRSxzQkFBc0IsU0FBUyxTQUFTLGVBQWUsY0FDdkQsc0JBQXNCLFNBQVMsU0FBUyxPQUN4QztBQUVBO0FBQUEsVUFDRjtBQUVBLGdCQUFNLHdCQUF3QixlQUFlLHNCQUFzQixJQUFJLHNCQUFzQixNQUFNO0FBQ25HLGdCQUFNLGVBQWUsWUFBWSxrQkFBa0IscUJBQXFCO0FBRXhFLGdCQUFNLGdCQUFnQixhQUFhLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxPQUFPLFNBQVMsS0FBSztBQUN6RixjQUFJLENBQUMsZUFBZTtBQUNsQjtBQUFBLFVBQ0Y7QUFNQSxjQUFJO0FBQ0osY0FBSSxzQkFBc0IsU0FBUyxTQUFTLGVBQWUsWUFBWTtBQUNyRSw4QkFBa0IsR0FBRyxXQUFXLFFBQVEsc0JBQXNCLE1BQU0sQ0FBQyxRQUFRLFdBQVcsUUFBUSxzQkFBc0IsUUFBUSxDQUFDO0FBQUEsVUFDakksV0FBVyxzQkFBc0IsU0FBUyxTQUFTLGVBQWUsaUJBQWlCO0FBQ2pGLDhCQUFrQixHQUFHLFdBQVcsUUFBUSxzQkFBc0IsTUFBTSxDQUFDLFFBQVEsV0FBVyxRQUFRLHNCQUFzQixRQUFRLENBQUM7QUFBQSxVQUNqSSxXQUFXLHNCQUFzQixTQUFTLFNBQVMsZUFBZSxTQUFTO0FBQ3pFLDhCQUFrQixzQkFBc0IsV0FDcEMsR0FBRyxXQUFXLFFBQVEsc0JBQXNCLE1BQU0sQ0FBQyxRQUFRLFdBQVcsUUFBUSxzQkFBc0IsUUFBUSxDQUFDLE1BQzdHLEdBQUcsV0FBVyxRQUFRLHNCQUFzQixNQUFNLENBQUMsU0FBUyxXQUFXLFFBQVEsc0JBQXNCLFFBQVEsQ0FBQztBQUFBLFVBQ3BILE9BQU87QUFDTCxrQkFBTSxJQUFJLE1BQU0sNkJBQTZCLHNCQUFzQixTQUFTLElBQUksRUFBRTtBQUFBLFVBQ3BGO0FBRUEsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTSxzQkFBc0I7QUFBQSxZQUM1QixJQUFJLE9BQU87QUFDVCxxQkFBTyxNQUFNLFlBQVksdUJBQXVCLGVBQWU7QUFBQSxZQUNqRTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0gsU0FBUyxPQUFPO0FBRWQsa0JBQVEsTUFBTSxtQkFBbUIsTUFBTSxtQkFBbUIsUUFBUSxRQUFRLE1BQU0sS0FBSztBQUNyRixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsY0FDSixVQUFVLFFBQVE7QUFBQSxjQUNsQixPQUFPLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxJQUFJLEtBQUssVUFBVSxLQUFLO0FBQUEsWUFDekU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMENBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -118,7 +118,10 @@ var rule = createRule({
|
|
|
118
118
|
assert.ok(serviceCall.callee.type === AST_NODE_TYPES.MemberExpression);
|
|
119
119
|
assert.ok(serviceCall.callee.property.type === AST_NODE_TYPES.Identifier);
|
|
120
120
|
const method = serviceCall.callee.property.name;
|
|
121
|
-
|
|
121
|
+
let requestBodyProperty = ["put", "post", "options"].includes(method) ? serviceCall.arguments[1] : void 0;
|
|
122
|
+
if (requestBodyProperty !== void 0 && requestBodyProperty.type === AST_NODE_TYPES.Identifier && requestBodyProperty.name === "undefined") {
|
|
123
|
+
requestBodyProperty = void 0;
|
|
124
|
+
}
|
|
122
125
|
const optionsArgument = ["get", "head", "del"].includes(method) ? serviceCall.arguments[1] : serviceCall.arguments[2];
|
|
123
126
|
if (optionsArgument === void 0 || optionsArgument.type !== AST_NODE_TYPES.ObjectExpression) {
|
|
124
127
|
context.report({
|
|
@@ -178,4 +181,4 @@ export {
|
|
|
178
181
|
no_service_wrapper_default as default,
|
|
179
182
|
ruleId
|
|
180
183
|
};
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2ZpeHR1cmUvbm8tc2VydmljZS13cmFwcGVyLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxTQUFTLHNCQUFrQztBQUMzQyxTQUFTLGtCQUFrQixzQkFBc0IsMENBQTBDO0FBQzNGLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8seUJBQXlCO0FBQ2hDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsc0JBQXNCO0FBRXhCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBTyxXQUFXO0FBQUEsRUFDdEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLG1CQUFtQjtBQUFBLE1BQ25CLGdCQUNFO0FBQUEsTUFDRixjQUNFO0FBQUEsSUFDSjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQWEsUUFBUTtBQUMzQixVQUFNLGVBQWUsV0FBVztBQUNoQyxVQUFNLGdCQUFnQixZQUFZLGtCQUFrQixPQUFPO0FBQzNELFVBQU0sY0FBYyxjQUFjLFFBQVEsZUFBZTtBQUV6RCxhQUFTLG1CQUFtQixhQUF3QyxPQUFjO0FBQ2hGLFVBQ0csYUFBYSxTQUFTLGVBQWUsV0FBVyxPQUFPLFlBQVksVUFBVSxZQUM5RSxhQUFhLFNBQVMsZUFBZSxpQkFDckM7QUFDQSxjQUFNLFVBQVUsV0FBVyxRQUFRLFdBQVc7QUFDOUMsZUFBTyxpQkFBaUIsS0FBSyxPQUFPLEtBQUsscUJBQXFCLEtBQUssT0FBTztBQUFBLE1BQzVFO0FBRUEsVUFBSSxhQUFhLFNBQVMs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
|
|
@@ -11,7 +11,7 @@ var rule = createRule({
|
|
|
11
11
|
description: 'Access the status code property of the fetch Response using "status" instead of "statusCode".'
|
|
12
12
|
},
|
|
13
13
|
messages: {
|
|
14
|
-
replaceStatusCode: '
|
|
14
|
+
replaceStatusCode: 'Replace "statusCode" with "status".',
|
|
15
15
|
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
16
16
|
},
|
|
17
17
|
fixable: "code",
|
package/dist-mjs/fixture/url.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/fixture/url.ts
|
|
2
|
-
var PLAIN_URL_REGEXP = /^[`']\/\w+(?<serviceNamePart>-\w+)*\/v\d
|
|
3
|
-
var TOKENIZED_URL_REGEXP = /^`\$\{(?<serviceNamePart>[A-Z]+_)*BASE_PATH\}
|
|
2
|
+
var PLAIN_URL_REGEXP = /^[`']\/\w+(?<serviceNamePart>-\w+)*\/v\d+\/(?<any>.|\r|\n)+[`']$/u;
|
|
3
|
+
var TOKENIZED_URL_REGEXP = /^`\$\{(?<serviceNamePart>[A-Z]+_)*BASE_PATH\}\/(?<any>.|\r|\n)+`$/u;
|
|
4
4
|
function replaceEndpointUrlPrefixWithBasePath(url) {
|
|
5
5
|
return url.replace(/^`\/\w+(?<parts>-\w+)*\/v\d+\//u, "`${BASE_PATH}/");
|
|
6
6
|
}
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import fetchHeaderGetter, { ruleId as fetchHeaderGetterRuleId } from "./fixture/fetch-header-getter.mjs";
|
|
3
|
+
import fetchResponseBodyJson, { ruleId as fetchResponseBodyJsonRuleId } from "./fixture/fetch-response-body-json.mjs";
|
|
4
|
+
import fetchResponseHeaderGetterTs, {
|
|
5
|
+
ruleId as fetchResponseHeaderGetterTsRuleId
|
|
6
|
+
} from "./fixture/fetch-response-header-getter-ts.mjs";
|
|
3
7
|
import fetchThen, { ruleId as fetchThenRuleId } from "./fixture/fetch-then.mjs";
|
|
4
8
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
5
9
|
import noFixture, { ruleId as noFixtureRuleId } from "./fixture/no-fixture.mjs";
|
|
@@ -32,7 +36,9 @@ var src_default = {
|
|
|
32
36
|
[fetchHeaderGetterRuleId]: fetchHeaderGetter,
|
|
33
37
|
[fetchThenRuleId]: fetchThen,
|
|
34
38
|
[noServiceWrapperRuleId]: noServiceWrapper,
|
|
35
|
-
[noStatusCodeRuleId]: noStatusCode
|
|
39
|
+
[noStatusCodeRuleId]: noStatusCode,
|
|
40
|
+
[fetchResponseBodyJsonRuleId]: fetchResponseBodyJson,
|
|
41
|
+
[fetchResponseHeaderGetterTsRuleId]: fetchResponseHeaderGetterTs
|
|
36
42
|
},
|
|
37
43
|
configs: {
|
|
38
44
|
all: {
|
|
@@ -52,7 +58,9 @@ var src_default = {
|
|
|
52
58
|
[`@checkdigit/${fetchHeaderGetterRuleId}`]: "error",
|
|
53
59
|
[`@checkdigit/${fetchThenRuleId}`]: "error",
|
|
54
60
|
[`@checkdigit/${noServiceWrapperRuleId}`]: "error",
|
|
55
|
-
[`@checkdigit/${noStatusCodeRuleId}`]: "error"
|
|
61
|
+
[`@checkdigit/${noStatusCodeRuleId}`]: "error",
|
|
62
|
+
[`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
|
|
63
|
+
[`@checkdigit/${fetchResponseHeaderGetterTsRuleId}`]: "error"
|
|
56
64
|
}
|
|
57
65
|
},
|
|
58
66
|
recommended: {
|
|
@@ -75,4 +83,4 @@ var src_default = {
|
|
|
75
83
|
export {
|
|
76
84
|
src_default as default
|
|
77
85
|
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
2
|
export declare const ruleId = "no-service-wrapper";
|
|
3
|
-
declare const rule: ESLintUtils.RuleModule<"
|
|
3
|
+
declare const rule: ESLintUtils.RuleModule<"unknownError" | "preferNativeFetch" | "invalidOptions", never[], ESLintUtils.RuleListener>;
|
|
4
4
|
export default rule;
|
package/dist-types/index.d.ts
CHANGED
|
@@ -14,8 +14,10 @@ declare const _default: {
|
|
|
14
14
|
"no-fixture": import("eslint").Rule.RuleModule;
|
|
15
15
|
"fetch-header-getter": import("eslint").Rule.RuleModule;
|
|
16
16
|
"fetch-then": import("eslint").Rule.RuleModule;
|
|
17
|
-
"no-service-wrapper": import("@typescript-eslint/utils/ts-eslint").RuleModule<"
|
|
17
|
+
"no-service-wrapper": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "preferNativeFetch" | "invalidOptions", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
18
18
|
"no-status-code": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "replaceStatusCode", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
19
|
+
"fetch-response-body-json": import("@typescript-eslint/utils/ts-eslint").RuleModule<"replaceBodyWithJson" | "unknownError", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
20
|
+
"fetch-response-header-getter-ts": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "useGetter", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
19
21
|
};
|
|
20
22
|
configs: {
|
|
21
23
|
all: {
|
|
@@ -36,6 +38,8 @@ declare const _default: {
|
|
|
36
38
|
"@checkdigit/fetch-then": string;
|
|
37
39
|
"@checkdigit/no-service-wrapper": string;
|
|
38
40
|
"@checkdigit/no-status-code": string;
|
|
41
|
+
"@checkdigit/fetch-response-body-json": string;
|
|
42
|
+
"@checkdigit/fetch-response-header-getter-ts": string;
|
|
39
43
|
};
|
|
40
44
|
};
|
|
41
45
|
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-0869","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"}}
|