@checkdigit/eslint-plugin 6.6.0-PR.75-4211 → 6.6.0-PR.75-edd9

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.
@@ -12166,7 +12166,7 @@
12166
12166
  "format": "esm"
12167
12167
  },
12168
12168
  "package.json": {
12169
- "bytes": 2874,
12169
+ "bytes": 2871,
12170
12170
  "imports": [],
12171
12171
  "format": "esm",
12172
12172
  "with": {
@@ -12443,6 +12443,22 @@
12443
12443
  ],
12444
12444
  "format": "esm"
12445
12445
  },
12446
+ "src/agent/no-mapped-response.ts": {
12447
+ "bytes": 2805,
12448
+ "imports": [
12449
+ {
12450
+ "path": "node_modules/@typescript-eslint/utils/dist/index.js",
12451
+ "kind": "import-statement",
12452
+ "original": "@typescript-eslint/utils"
12453
+ },
12454
+ {
12455
+ "path": "src/get-documentation-url.ts",
12456
+ "kind": "import-statement",
12457
+ "original": "../get-documentation-url"
12458
+ }
12459
+ ],
12460
+ "format": "esm"
12461
+ },
12446
12462
  "src/no-promise-instance-method.ts": {
12447
12463
  "bytes": 1617,
12448
12464
  "imports": [
@@ -12593,7 +12609,7 @@
12593
12609
  "format": "esm"
12594
12610
  },
12595
12611
  "src/index.ts": {
12596
- "bytes": 5832,
12612
+ "bytes": 6224,
12597
12613
  "imports": [
12598
12614
  {
12599
12615
  "path": "src/agent/add-url-domain.ts",
@@ -12630,6 +12646,11 @@
12630
12646
  "kind": "import-statement",
12631
12647
  "original": "./agent/no-full-response"
12632
12648
  },
12649
+ {
12650
+ "path": "src/agent/no-mapped-response.ts",
12651
+ "kind": "import-statement",
12652
+ "original": "./agent/no-mapped-response"
12653
+ },
12633
12654
  {
12634
12655
  "path": "src/no-promise-instance-method.ts",
12635
12656
  "kind": "import-statement",
@@ -15489,13 +15510,13 @@
15489
15510
  "bytesInOutput": 2217
15490
15511
  },
15491
15512
  "src/index.ts": {
15492
- "bytesInOutput": 3766
15513
+ "bytesInOutput": 4028
15493
15514
  },
15494
15515
  "src/agent/url.ts": {
15495
15516
  "bytesInOutput": 745
15496
15517
  },
15497
15518
  "package.json": {
15498
- "bytesInOutput": 2974
15519
+ "bytesInOutput": 2971
15499
15520
  },
15500
15521
  "src/get-documentation-url.ts": {
15501
15522
  "bytesInOutput": 148
@@ -15539,17 +15560,20 @@
15539
15560
  "src/agent/no-full-response.ts": {
15540
15561
  "bytesInOutput": 2006
15541
15562
  },
15563
+ "src/agent/no-mapped-response.ts": {
15564
+ "bytesInOutput": 2417
15565
+ },
15542
15566
  "src/no-promise-instance-method.ts": {
15543
15567
  "bytesInOutput": 1275
15544
15568
  },
15545
15569
  "src/agent/no-service-wrapper.ts": {
15546
- "bytesInOutput": 8911
15570
+ "bytesInOutput": 8914
15547
15571
  },
15548
15572
  "src/agent/no-status-code.ts": {
15549
15573
  "bytesInOutput": 2037
15550
15574
  },
15551
15575
  "src/require-resolve-full-response.ts": {
15552
- "bytesInOutput": 7171
15576
+ "bytesInOutput": 7198
15553
15577
  },
15554
15578
  "src/file-path-comment.ts": {
15555
15579
  "bytesInOutput": 1961
@@ -15579,7 +15603,7 @@
15579
15603
  "bytesInOutput": 3362
15580
15604
  }
15581
15605
  },
15582
- "bytes": 4328228
15606
+ "bytes": 4333142
15583
15607
  }
15584
15608
  }
15585
15609
  }
@@ -0,0 +1,75 @@
1
+ // src/agent/no-mapped-response.ts
2
+ import { ESLintUtils } from "@typescript-eslint/utils";
3
+ import getDocumentationUrl from "../get-documentation-url.mjs";
4
+ var ruleId = "no-mapped-response";
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 the usage of MappedResponse type with FetchResponse."
12
+ },
13
+ messages: {
14
+ replaceFullResponseWithFetchResponse: "Replace the usage of FullResponse type with FetchResponse.",
15
+ unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
16
+ },
17
+ fixable: "code",
18
+ schema: []
19
+ },
20
+ defaultOptions: [],
21
+ create(context) {
22
+ const sourceCode = context.sourceCode;
23
+ return {
24
+ 'TSTypeReference[typeName.name="MappedResponse"]': (typeReference) => {
25
+ try {
26
+ context.report({
27
+ messageId: "replaceFullResponseWithFetchResponse",
28
+ node: typeReference,
29
+ fix(fixer) {
30
+ const typeParams = sourceCode.getText(typeReference.typeArguments);
31
+ return fixer.replaceText(typeReference, `FetchResponse${typeParams || ""}`);
32
+ }
33
+ });
34
+ } catch (error) {
35
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
36
+ context.report({
37
+ node: typeReference,
38
+ messageId: "unknownError",
39
+ data: {
40
+ fileName: context.filename,
41
+ error: error instanceof Error ? error.toString() : JSON.stringify(error)
42
+ }
43
+ });
44
+ }
45
+ },
46
+ 'ImportSpecifier[imported.name="MappedResponse"]': (importSpecifier) => {
47
+ try {
48
+ context.report({
49
+ messageId: "replaceFullResponseWithFetchResponse",
50
+ node: importSpecifier.imported,
51
+ fix(fixer) {
52
+ return fixer.replaceText(importSpecifier.imported, "FetchResponse");
53
+ }
54
+ });
55
+ } catch (error) {
56
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
57
+ context.report({
58
+ node: importSpecifier.imported,
59
+ messageId: "unknownError",
60
+ data: {
61
+ fileName: context.filename,
62
+ error: error instanceof Error ? error.toString() : JSON.stringify(error)
63
+ }
64
+ });
65
+ }
66
+ }
67
+ };
68
+ }
69
+ });
70
+ var no_mapped_response_default = rule;
71
+ export {
72
+ no_mapped_response_default as default,
73
+ ruleId
74
+ };
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLW1hcHBlZC1yZXNwb25zZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLG1CQUE2QjtBQUN0QyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixzQ0FBc0M7QUFBQSxNQUN0QyxjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsbURBQW1ELENBQUMsa0JBQTRDO0FBQzlGLFlBQUk7QUFDRixrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsWUFDTixJQUFJLE9BQU87QUFDVCxvQkFBTSxhQUFhLFdBQVcsUUFBUSxjQUFjLGFBQWE7QUFDakUscUJBQU8sTUFBTSxZQUFZLGVBQWUsZ0JBQWdCLGNBQWMsRUFBRSxFQUFFO0FBQUEsWUFDNUU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNILFNBQVMsT0FBTztBQUVkLGtCQUFRLE1BQU0sbUJBQW1CLE1BQU0sbUJBQW1CLFFBQVEsUUFBUSxNQUFNLEtBQUs7QUFDckYsa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTTtBQUFBLFlBQ04sV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLGNBQ0osVUFBVSxRQUFRO0FBQUEsY0FDbEIsT0FBTyxpQkFBaUIsUUFBUSxNQUFNLFNBQVMsSUFBSSxLQUFLLFVBQVUsS0FBSztBQUFBLFlBQ3pFO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxNQUNBLG1EQUFtRCxDQUFDLG9CQUE4QztBQUNoRyxZQUFJO0FBQ0Ysa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTSxnQkFBZ0I7QUFBQSxZQUN0QixJQUFJLE9BQU87QUFDVCxxQkFBTyxNQUFNLFlBQVksZ0JBQWdCLFVBQVUsZUFBZTtBQUFBLFlBQ3BFO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSCxTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU0sZ0JBQWdCO0FBQUEsWUFDdEIsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLGNBQ0osVUFBVSxRQUFRO0FBQUEsY0FDbEIsT0FBTyxpQkFBaUIsUUFBUSxNQUFNLFNBQVMsSUFBSSxLQUFLLFVBQVUsS0FBSztBQUFBLFlBQ3pFO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLDZCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -8,6 +8,7 @@ import fetchThen, { ruleId as fetchThenRuleId } from "./agent/fetch-then.mjs";
8
8
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
9
9
  import noFixture, { ruleId as noFixtureRuleId } from "./agent/no-fixture.mjs";
10
10
  import noFullResponse, { ruleId as noFullResponseRuleId } from "./agent/no-full-response.mjs";
11
+ import noMappedResponse, { ruleId as noMappedResponseRuleId } from "./agent/no-mapped-response.mjs";
11
12
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
12
13
  import noServiceWrapper, { ruleId as noServiceWrapperRuleId } from "./agent/no-service-wrapper.mjs";
13
14
  import noStatusCode, { ruleId as noStatusCodeRuleId } from "./agent/no-status-code.mjs";
@@ -44,6 +45,7 @@ var src_default = {
44
45
  [fetchResponseHeaderGetterRuleId]: fetchResponseHeaderGetter,
45
46
  [addUrlDomainRuleId]: addUrlDomain,
46
47
  [noFullResponseRuleId]: noFullResponse,
48
+ [noMappedResponseRuleId]: noMappedResponse,
47
49
  [requireResolveFullResponseRuleId]: requireResolveFullResponse
48
50
  },
49
51
  configs: {
@@ -86,13 +88,18 @@ var src_default = {
86
88
  [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error"
87
89
  }
88
90
  },
89
- "agent-serve-runtime": {
90
- ignorePatterns: ["*.spec.ts", "*.test.ts"],
91
+ "agent-phase-1-test": {
92
+ overrides: [
93
+ {
94
+ files: ["*.spec.ts", "*.test.ts", "src/api/v*/index.ts"]
95
+ }
96
+ ],
91
97
  rules: {
92
98
  [`@checkdigit/${noFullResponseRuleId}`]: "error",
93
99
  [`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
100
+ [`@checkdigit/${noMappedResponseRuleId}`]: "error",
94
101
  [`@checkdigit/${addUrlDomainRuleId}`]: "error",
95
- [`@checkdigit/${noFixtureRuleId}`]: "off",
102
+ [`@checkdigit/${noFixtureRuleId}`]: "error",
96
103
  [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
97
104
  [`@checkdigit/${noStatusCodeRuleId}`]: "error",
98
105
  [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
@@ -100,12 +107,14 @@ var src_default = {
100
107
  [`@checkdigit/${fetchThenRuleId}`]: "error"
101
108
  }
102
109
  },
103
- "agent-fixture": {
110
+ "agent-phase-2-production": {
111
+ ignorePatterns: ["*.spec.ts", "*.test.ts"],
104
112
  rules: {
105
113
  [`@checkdigit/${noFullResponseRuleId}`]: "error",
106
114
  [`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
115
+ [`@checkdigit/${noMappedResponseRuleId}`]: "error",
107
116
  [`@checkdigit/${addUrlDomainRuleId}`]: "error",
108
- [`@checkdigit/${noFixtureRuleId}`]: "error",
117
+ [`@checkdigit/${noFixtureRuleId}`]: "off",
109
118
  [`@checkdigit/${noServiceWrapperRuleId}`]: "error",
110
119
  [`@checkdigit/${noStatusCodeRuleId}`]: "error",
111
120
  [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: "error",
@@ -118,4 +127,4 @@ var src_default = {
118
127
  export {
119
128
  src_default as default
120
129
  };
121
- //# sourceMappingURL=data:application/json;base64,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
130
+ //# sourceMappingURL=data:application/json;base64,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
@@ -0,0 +1,4 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const ruleId = "no-mapped-response";
3
+ declare const rule: ESLintUtils.RuleModule<"unknownError" | "replaceFullResponseWithFetchResponse", never[], ESLintUtils.RuleListener>;
4
+ export default rule;
@@ -19,6 +19,7 @@ declare const _default: {
19
19
  "fetch-response-header-getter-ts": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "useGetter", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
20
20
  "add-url-domain": import("@typescript-eslint/utils/ts-eslint").RuleModule<"addDomain" | "unknownError", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
21
21
  "no-full-response": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "removeFullResponse", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
22
+ "no-mapped-response": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "replaceFullResponseWithFetchResponse", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
22
23
  "require-resolve-full-response": import("@typescript-eslint/utils/ts-eslint").RuleModule<"unknownError" | "invalidOptions", never[], import("@typescript-eslint/utils/ts-eslint").RuleListener>;
23
24
  };
24
25
  configs: {
@@ -61,11 +62,14 @@ declare const _default: {
61
62
  "@checkdigit/no-promise-instance-method": string;
62
63
  };
63
64
  };
64
- 'agent-serve-runtime': {
65
- ignorePatterns: string[];
65
+ 'agent-phase-1-test': {
66
+ overrides: {
67
+ files: string[];
68
+ }[];
66
69
  rules: {
67
70
  "@checkdigit/no-full-response": string;
68
71
  "@checkdigit/require-resolve-full-response": string;
72
+ "@checkdigit/no-mapped-response": string;
69
73
  "@checkdigit/add-url-domain": string;
70
74
  "@checkdigit/no-fixture": string;
71
75
  "@checkdigit/no-service-wrapper": string;
@@ -75,10 +79,12 @@ declare const _default: {
75
79
  "@checkdigit/fetch-then": string;
76
80
  };
77
81
  };
78
- 'agent-fixture': {
82
+ 'agent-phase-2-production': {
83
+ ignorePatterns: string[];
79
84
  rules: {
80
85
  "@checkdigit/no-full-response": string;
81
86
  "@checkdigit/require-resolve-full-response": string;
87
+ "@checkdigit/no-mapped-response": string;
82
88
  "@checkdigit/add-url-domain": string;
83
89
  "@checkdigit/no-fixture": string;
84
90
  "@checkdigit/no-service-wrapper": string;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-4211","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs --external=espree && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"7.18.0","@typescript-eslint/utils":"7.18.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.0","@checkdigit/typescript-config":"6.0.0","@types/eslint":"^8.56.10","@typescript-eslint/eslint-plugin":"^7.18.0","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/rule-tester":"7.18.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"0.24.0","http-status-codes":"^2.3.0"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.14"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"6.6.0-PR.75-edd9","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs --external=espree && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"7.18.0","@typescript-eslint/utils":"7.18.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.0","@checkdigit/typescript-config":"6.0.0","@types/eslint":"8.56.10","@typescript-eslint/eslint-plugin":"7.18.0","@typescript-eslint/parser":"7.18.0","@typescript-eslint/rule-tester":"7.18.0","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"0.24.0","http-status-codes":"^2.3.0"},"peerDependencies":{"eslint":">=8 <9"},"engines":{"node":">=20.14"}}
@@ -0,0 +1,84 @@
1
+ // fixture/no-mapped-response-type.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 getDocumentationUrl from '../get-documentation-url';
11
+
12
+ export const ruleId = 'no-mapped-response';
13
+
14
+ const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
15
+
16
+ const rule = createRule({
17
+ name: ruleId,
18
+ meta: {
19
+ type: 'suggestion',
20
+ docs: {
21
+ description: 'Replace the usage of MappedResponse type with FetchResponse.',
22
+ },
23
+ messages: {
24
+ replaceFullResponseWithFetchResponse: 'Replace the usage of FullResponse type with FetchResponse.',
25
+ unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
26
+ },
27
+ fixable: 'code',
28
+ schema: [],
29
+ },
30
+ defaultOptions: [],
31
+ create(context) {
32
+ const sourceCode = context.sourceCode;
33
+
34
+ return {
35
+ 'TSTypeReference[typeName.name="MappedResponse"]': (typeReference: TSESTree.TSTypeReference) => {
36
+ try {
37
+ context.report({
38
+ messageId: 'replaceFullResponseWithFetchResponse',
39
+ node: typeReference,
40
+ fix(fixer) {
41
+ const typeParams = sourceCode.getText(typeReference.typeArguments);
42
+ return fixer.replaceText(typeReference, `FetchResponse${typeParams || ''}`);
43
+ },
44
+ });
45
+ } catch (error) {
46
+ // eslint-disable-next-line no-console
47
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
48
+ context.report({
49
+ node: typeReference,
50
+ messageId: 'unknownError',
51
+ data: {
52
+ fileName: context.filename,
53
+ error: error instanceof Error ? error.toString() : JSON.stringify(error),
54
+ },
55
+ });
56
+ }
57
+ },
58
+ 'ImportSpecifier[imported.name="MappedResponse"]': (importSpecifier: TSESTree.ImportSpecifier) => {
59
+ try {
60
+ context.report({
61
+ messageId: 'replaceFullResponseWithFetchResponse',
62
+ node: importSpecifier.imported,
63
+ fix(fixer) {
64
+ return fixer.replaceText(importSpecifier.imported, 'FetchResponse');
65
+ },
66
+ });
67
+ } catch (error) {
68
+ // eslint-disable-next-line no-console
69
+ console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
70
+ context.report({
71
+ node: importSpecifier.imported,
72
+ messageId: 'unknownError',
73
+ data: {
74
+ fileName: context.filename,
75
+ error: error instanceof Error ? error.toString() : JSON.stringify(error),
76
+ },
77
+ });
78
+ }
79
+ },
80
+ };
81
+ },
82
+ });
83
+
84
+ export default rule;
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ import fetchThen, { ruleId as fetchThenRuleId } from './agent/fetch-then';
15
15
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
16
16
  import noFixture, { ruleId as noFixtureRuleId } from './agent/no-fixture';
17
17
  import noFullResponse, { ruleId as noFullResponseRuleId } from './agent/no-full-response';
18
+ import noMappedResponse, { ruleId as noMappedResponseRuleId } from './agent/no-mapped-response';
18
19
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
19
20
  import noServiceWrapper, { ruleId as noServiceWrapperRuleId } from './agent/no-service-wrapper';
20
21
  import noStatusCode, { ruleId as noStatusCodeRuleId } from './agent/no-status-code';
@@ -52,6 +53,7 @@ export default {
52
53
  [fetchResponseHeaderGetterRuleId]: fetchResponseHeaderGetter,
53
54
  [addUrlDomainRuleId]: addUrlDomain,
54
55
  [noFullResponseRuleId]: noFullResponse,
56
+ [noMappedResponseRuleId]: noMappedResponse,
55
57
  [requireResolveFullResponseRuleId]: requireResolveFullResponse,
56
58
  },
57
59
  configs: {
@@ -94,13 +96,18 @@ export default {
94
96
  [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
95
97
  },
96
98
  },
97
- 'agent-serve-runtime': {
98
- ignorePatterns: ['*.spec.ts', '*.test.ts'],
99
+ 'agent-phase-1-test': {
100
+ overrides: [
101
+ {
102
+ files: ['*.spec.ts', '*.test.ts', 'src/api/v*/index.ts'],
103
+ },
104
+ ],
99
105
  rules: {
100
106
  [`@checkdigit/${noFullResponseRuleId}`]: 'error',
101
107
  [`@checkdigit/${requireResolveFullResponseRuleId}`]: 'error',
108
+ [`@checkdigit/${noMappedResponseRuleId}`]: 'error',
102
109
  [`@checkdigit/${addUrlDomainRuleId}`]: 'error',
103
- [`@checkdigit/${noFixtureRuleId}`]: 'off',
110
+ [`@checkdigit/${noFixtureRuleId}`]: 'error',
104
111
  [`@checkdigit/${noServiceWrapperRuleId}`]: 'error',
105
112
  [`@checkdigit/${noStatusCodeRuleId}`]: 'error',
106
113
  [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: 'error',
@@ -108,12 +115,14 @@ export default {
108
115
  [`@checkdigit/${fetchThenRuleId}`]: 'error',
109
116
  },
110
117
  },
111
- 'agent-fixture': {
118
+ 'agent-phase-2-production': {
119
+ ignorePatterns: ['*.spec.ts', '*.test.ts'],
112
120
  rules: {
113
121
  [`@checkdigit/${noFullResponseRuleId}`]: 'error',
114
122
  [`@checkdigit/${requireResolveFullResponseRuleId}`]: 'error',
123
+ [`@checkdigit/${noMappedResponseRuleId}`]: 'error',
115
124
  [`@checkdigit/${addUrlDomainRuleId}`]: 'error',
116
- [`@checkdigit/${noFixtureRuleId}`]: 'error',
125
+ [`@checkdigit/${noFixtureRuleId}`]: 'off',
117
126
  [`@checkdigit/${noServiceWrapperRuleId}`]: 'error',
118
127
  [`@checkdigit/${noStatusCodeRuleId}`]: 'error',
119
128
  [`@checkdigit/${fetchResponseBodyJsonRuleId}`]: 'error',