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

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.
Files changed (45) hide show
  1. package/dist-cjs/index.cjs +755 -2130
  2. package/dist-cjs/metafile.json +82 -519
  3. package/dist-mjs/index.mjs +2 -64
  4. package/dist-mjs/require-resolve-full-response.mjs +5 -2
  5. package/dist-types/index.d.ts +1 -50
  6. package/dist-types/require-resolve-full-response.d.ts +3 -1
  7. package/package.json +1 -1
  8. package/src/index.ts +0 -62
  9. package/src/require-resolve-full-response.ts +2 -1
  10. package/dist-mjs/agent/add-url-domain.mjs +0 -61
  11. package/dist-mjs/agent/fetch-response-body-json.mjs +0 -63
  12. package/dist-mjs/agent/fetch-response-header-getter.mjs +0 -117
  13. package/dist-mjs/agent/fetch-then.mjs +0 -269
  14. package/dist-mjs/agent/fetch.mjs +0 -34
  15. package/dist-mjs/agent/no-fixture.mjs +0 -328
  16. package/dist-mjs/agent/no-full-response.mjs +0 -67
  17. package/dist-mjs/agent/no-mapped-response.mjs +0 -75
  18. package/dist-mjs/agent/no-service-wrapper.mjs +0 -184
  19. package/dist-mjs/agent/no-status-code.mjs +0 -59
  20. package/dist-mjs/agent/response-reference.mjs +0 -56
  21. package/dist-mjs/agent/url.mjs +0 -26
  22. package/dist-types/agent/add-url-domain.d.ts +0 -4
  23. package/dist-types/agent/fetch-response-body-json.d.ts +0 -4
  24. package/dist-types/agent/fetch-response-header-getter.d.ts +0 -4
  25. package/dist-types/agent/fetch-then.d.ts +0 -4
  26. package/dist-types/agent/fetch.d.ts +0 -4
  27. package/dist-types/agent/no-fixture.d.ts +0 -4
  28. package/dist-types/agent/no-full-response.d.ts +0 -4
  29. package/dist-types/agent/no-mapped-response.d.ts +0 -4
  30. package/dist-types/agent/no-service-wrapper.d.ts +0 -4
  31. package/dist-types/agent/no-status-code.d.ts +0 -4
  32. package/dist-types/agent/response-reference.d.ts +0 -16
  33. package/dist-types/agent/url.d.ts +0 -5
  34. package/src/agent/add-url-domain.ts +0 -75
  35. package/src/agent/fetch-response-body-json.ts +0 -76
  36. package/src/agent/fetch-response-header-getter.ts +0 -148
  37. package/src/agent/fetch-then.ts +0 -354
  38. package/src/agent/fetch.ts +0 -52
  39. package/src/agent/no-fixture.ts +0 -453
  40. package/src/agent/no-full-response.ts +0 -75
  41. package/src/agent/no-mapped-response.ts +0 -84
  42. package/src/agent/no-service-wrapper.ts +0 -238
  43. package/src/agent/no-status-code.ts +0 -71
  44. package/src/agent/response-reference.ts +0 -100
  45. package/src/agent/url.ts +0 -23
@@ -1,328 +0,0 @@
1
- // src/agent/no-fixture.ts
2
- import "eslint";
3
- import {
4
- getEnclosingFunction,
5
- getEnclosingScopeNode,
6
- getEnclosingStatement,
7
- getParent,
8
- isUsedInArrayOrAsArgument
9
- } from "../library/tree.mjs";
10
- import { getResponseBodyRetrievalText, hasAssertions } from "./fetch.mjs";
11
- import { analyzeResponseReferences } from "./response-reference.mjs";
12
- import { strict as assert } from "node:assert";
13
- import getDocumentationUrl from "../get-documentation-url.mjs";
14
- import { getIndentation } from "../library/format.mjs";
15
- import { isValidPropertyName } from "../library/variable.mjs";
16
- import { replaceEndpointUrlPrefixWithBasePath } from "./url.mjs";
17
- var ruleId = "no-fixture";
18
- function analyzeFixtureCall(call, results, sourceCode) {
19
- const parent = getParent(call);
20
- assert.ok(parent, "parent should exist for fixture/supertest call node");
21
- let nextCall;
22
- if (parent.type === "ReturnStatement") {
23
- results.fixtureNode = call;
24
- results.rootNode = parent;
25
- } else if (parent.type === "ArrayExpression" || parent.type === "CallExpression") {
26
- results.fixtureNode = call;
27
- results.rootNode = call;
28
- } else if (parent.type === "AwaitExpression") {
29
- results.fixtureNode = call;
30
- const enclosingStatement = getEnclosingStatement(parent);
31
- assert.ok(enclosingStatement);
32
- const awaitParent = getParent(parent);
33
- if (awaitParent?.type === "MemberExpression") {
34
- results.rootNode = parent;
35
- results.inlineStatementNode = enclosingStatement;
36
- if (awaitParent.property.type === "Identifier" && awaitParent.property.name === "body") {
37
- results.inlineBodyReference = awaitParent;
38
- }
39
- } else if (enclosingStatement.type === "VariableDeclaration") {
40
- results.variableDeclaration = enclosingStatement;
41
- results.rootNode = enclosingStatement;
42
- } else {
43
- results.rootNode = parent;
44
- }
45
- } else if (parent.type === "MemberExpression" && parent.property.type === "Identifier") {
46
- if (parent.property.name === "expect") {
47
- const assertionCall = getParent(parent);
48
- assert.ok(assertionCall && assertionCall.type === "CallExpression");
49
- results.assertions = [...results.assertions ?? [], assertionCall.arguments];
50
- nextCall = assertionCall;
51
- } else if (parent.property.name === "send") {
52
- const sendRequestBodyCall = getParent(parent);
53
- assert.ok(sendRequestBodyCall && sendRequestBodyCall.type === "CallExpression");
54
- results.requestBody = sendRequestBodyCall.arguments[0];
55
- nextCall = sendRequestBodyCall;
56
- } else if (parent.property.name === "set") {
57
- const setRequestHeaderCall = getParent(parent);
58
- assert.ok(setRequestHeaderCall && setRequestHeaderCall.type === "CallExpression");
59
- const [name, value] = setRequestHeaderCall.arguments;
60
- results.requestHeaders = [...results.requestHeaders ?? [], { name, value }];
61
- nextCall = setRequestHeaderCall;
62
- }
63
- } else {
64
- throw new Error(`Unexpected expression in fixture/supertest call ${sourceCode.getText(parent)}.`);
65
- }
66
- if (nextCall) {
67
- analyzeFixtureCall(nextCall, results, sourceCode);
68
- }
69
- }
70
- function createResponseAssertions(fixtureCallInformation, sourceCode, responseVariableName, destructuringResponseHeadersVariable) {
71
- let statusAssertion;
72
- const nonStatusAssertions = [];
73
- for (const expectArguments of fixtureCallInformation.assertions ?? []) {
74
- if (expectArguments.length === 1) {
75
- const [assertionArgument] = expectArguments;
76
- assert.ok(assertionArgument);
77
- if (assertionArgument.type === "MemberExpression" && assertionArgument.object.type === "Identifier" && assertionArgument.object.name === "StatusCodes" || assertionArgument.type === "Literal" || sourceCode.getText(assertionArgument).includes("StatusCodes.")) {
78
- statusAssertion = `assert.equal(${responseVariableName}.status, ${sourceCode.getText(assertionArgument)})`;
79
- } else if (assertionArgument.type === "ArrowFunctionExpression") {
80
- let functionBody = sourceCode.getText(assertionArgument.body);
81
- const [originalResponseArgument] = assertionArgument.params;
82
- assert.ok(originalResponseArgument?.type === "Identifier");
83
- const originalResponseArgumentName = originalResponseArgument.name;
84
- if (originalResponseArgumentName !== responseVariableName) {
85
- functionBody = functionBody.replace(
86
- new RegExp(`\\b${originalResponseArgumentName}\\b`, "ug"),
87
- responseVariableName
88
- );
89
- }
90
- nonStatusAssertions.push(`assert.ok(${functionBody})`);
91
- } else if (assertionArgument.type === "Identifier") {
92
- nonStatusAssertions.push(`assert.ok(${sourceCode.getText(assertionArgument)}(${responseVariableName}))`);
93
- } else if (assertionArgument.type === "ObjectExpression" || assertionArgument.type === "CallExpression") {
94
- nonStatusAssertions.push(
95
- `assert.deepEqual(await ${responseVariableName}.json(), ${sourceCode.getText(assertionArgument)})`
96
- );
97
- } else {
98
- throw new Error(`Unexpected Supertest assertion argument: ".expect(${sourceCode.getText(assertionArgument)})`);
99
- }
100
- } else if (expectArguments.length === 2) {
101
- const [headerName, headerValue] = expectArguments;
102
- assert.ok(headerName && headerValue);
103
- const headersReference = destructuringResponseHeadersVariable !== void 0 ? destructuringResponseHeadersVariable.name : `${responseVariableName}.headers`;
104
- if (headerValue.type === "Literal" && headerValue.value instanceof RegExp) {
105
- nonStatusAssertions.push(
106
- `assert.ok(${headersReference}.get(${sourceCode.getText(headerName)}).match(${sourceCode.getText(headerValue)}))`
107
- );
108
- } else {
109
- nonStatusAssertions.push(
110
- `assert.equal(${headersReference}.get(${sourceCode.getText(headerName)}), ${sourceCode.getText(headerValue)})`
111
- );
112
- }
113
- }
114
- }
115
- return {
116
- statusAssertion,
117
- nonStatusAssertions
118
- };
119
- }
120
- function getResponseVariableNameToUse(scopeManager, fixtureCallInformation, scopeVariablesMap) {
121
- if (fixtureCallInformation.variableDeclaration) {
122
- const firstDeclaration = fixtureCallInformation.variableDeclaration.declarations[0];
123
- if (firstDeclaration && firstDeclaration.id.type === "Identifier") {
124
- return firstDeclaration.id.name;
125
- }
126
- }
127
- const enclosingScopeNode = getEnclosingScopeNode(fixtureCallInformation.rootNode);
128
- scopeManager.getDeclaredVariables(fixtureCallInformation.rootNode);
129
- assert.ok(enclosingScopeNode);
130
- const scope = scopeManager.acquire(enclosingScopeNode);
131
- assert.ok(scope !== null);
132
- let scopeVariables = scopeVariablesMap.get(scope);
133
- if (!scopeVariables) {
134
- scopeVariables = [...scope.set.keys()];
135
- scopeVariablesMap.set(scope, scopeVariables);
136
- }
137
- let responseVariableCounter = 0;
138
- let responseVariableNameToUse;
139
- while (responseVariableNameToUse === void 0) {
140
- responseVariableCounter++;
141
- responseVariableNameToUse = `response${responseVariableCounter === 1 ? "" : responseVariableCounter.toString()}`;
142
- if (scopeVariables.includes(responseVariableNameToUse)) {
143
- responseVariableNameToUse = void 0;
144
- }
145
- }
146
- scopeVariables.push(responseVariableNameToUse);
147
- return responseVariableNameToUse;
148
- }
149
- function isResponseBodyRedefinition(responseBodyReference) {
150
- const parent = getParent(responseBodyReference);
151
- return parent?.type === "VariableDeclarator" && parent.id.type === "Identifier";
152
- }
153
- var rule = {
154
- meta: {
155
- type: "suggestion",
156
- docs: {
157
- description: "Prefer native fetch API over customized fixture API.",
158
- url: getDocumentationUrl(ruleId)
159
- },
160
- messages: {
161
- preferNativeFetch: "Prefer native fetch API over customized fixture API.",
162
- unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
163
- },
164
- fixable: "code",
165
- schema: []
166
- },
167
- // eslint-disable-next-line max-lines-per-function
168
- create(context) {
169
- const sourceCode = context.sourceCode;
170
- const scopeManager = sourceCode.scopeManager;
171
- const scopeVariablesMap = /* @__PURE__ */ new Map();
172
- return {
173
- // eslint-disable-next-line max-lines-per-function
174
- 'CallExpression[callee.object.object.name="fixture"][callee.object.property.name="api"]': (fixtureCall) => {
175
- try {
176
- if (hasAssertions(fixtureCall) && (isUsedInArrayOrAsArgument(fixtureCall) || getEnclosingFunction(fixtureCall)?.async === false)) {
177
- return;
178
- }
179
- assert.ok(fixtureCall.type === "CallExpression");
180
- const fixtureFunction = fixtureCall.callee;
181
- assert.ok(fixtureFunction.type === "MemberExpression");
182
- const indentation = getIndentation(fixtureCall, sourceCode);
183
- const [urlArgumentNode] = fixtureCall.arguments;
184
- assert.ok(urlArgumentNode !== void 0);
185
- const fixtureCallInformation = {};
186
- analyzeFixtureCall(fixtureCall, fixtureCallInformation, sourceCode);
187
- const {
188
- variable: responseVariable,
189
- bodyReferences: responseBodyReferences,
190
- headersReferences: responseHeadersReferences,
191
- statusReferences: responseStatusReferences,
192
- destructuringBodyVariable: destructuringResponseBodyVariable,
193
- destructuringHeadersVariable: destructuringResponseHeadersVariable
194
- } = analyzeResponseReferences(fixtureCallInformation.variableDeclaration, scopeManager);
195
- const originalUrlArgumentText = sourceCode.getText(urlArgumentNode);
196
- const fetchUrlArgumentText = replaceEndpointUrlPrefixWithBasePath(originalUrlArgumentText);
197
- const methodNode = fixtureFunction.property;
198
- assert.ok(methodNode.type === "Identifier");
199
- const methodName = methodNode.name.toUpperCase();
200
- const fetchRequestArgumentLines = [
201
- "{",
202
- ` method: '${methodName === "DEL" ? "DELETE" : methodName}',`,
203
- ...fixtureCallInformation.requestBody ? [` body: JSON.stringify(${sourceCode.getText(fixtureCallInformation.requestBody)}),`] : [],
204
- ...fixtureCallInformation.requestHeaders ? [
205
- ` headers: {`,
206
- ...fixtureCallInformation.requestHeaders.map(
207
- ({ name, value }) => (
208
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, no-nested-ternary, sonarjs/no-nested-template-literals
209
- ` ${name.type === "Literal" ? isValidPropertyName(name.value) ? name.value : `'${name.value}'` : `[${sourceCode.getText(name)}]`}: ${sourceCode.getText(value)},`
210
- )
211
- ),
212
- ` },`
213
- ] : [],
214
- "}"
215
- ].join(`
216
- ${indentation}`);
217
- const responseVariableNameToUse = getResponseVariableNameToUse(
218
- scopeManager,
219
- fixtureCallInformation,
220
- scopeVariablesMap
221
- );
222
- const isResponseBodyVariableRedefinitionNeeded = destructuringResponseBodyVariable !== void 0 || fixtureCallInformation.inlineBodyReference !== void 0 || responseBodyReferences.length > 0 && !responseBodyReferences.some(isResponseBodyRedefinition);
223
- const redefineResponseBodyVariableName = `${responseVariableNameToUse}Body`;
224
- const isResponseVariableRedefinitionNeeded = responseVariable === void 0 && fixtureCallInformation.assertions !== void 0 || isResponseBodyVariableRedefinitionNeeded;
225
- const responseBodyHeadersVariableRedefineLines = isResponseVariableRedefinitionNeeded ? [
226
- // eslint-disable-next-line no-nested-ternary
227
- ...destructuringResponseBodyVariable ? [
228
- `const ${destructuringResponseBodyVariable.name} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`
229
- ] : isResponseBodyVariableRedefinitionNeeded ? [
230
- `const ${redefineResponseBodyVariableName} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`
231
- ] : [],
232
- ...destructuringResponseHeadersVariable ? [`const ${destructuringResponseHeadersVariable.name} = ${responseVariableNameToUse}.headers`] : []
233
- ] : [];
234
- const { statusAssertion, nonStatusAssertions } = createResponseAssertions(
235
- fixtureCallInformation,
236
- sourceCode,
237
- responseVariableNameToUse,
238
- destructuringResponseHeadersVariable
239
- );
240
- const fetchCallText = `fetch(${fetchUrlArgumentText}, ${fetchRequestArgumentLines})`;
241
- const fetchStatementText = !isResponseVariableRedefinitionNeeded ? fetchCallText : `const ${responseVariableNameToUse} = await ${fetchCallText}`;
242
- const nodeToReplace = isResponseVariableRedefinitionNeeded ? fixtureCallInformation.rootNode : fixtureCallInformation.fixtureNode;
243
- const appendingAssignmentAndAssertionText = [
244
- "",
245
- ...statusAssertion !== void 0 ? [statusAssertion] : [],
246
- ...responseBodyHeadersVariableRedefineLines,
247
- ...nonStatusAssertions
248
- ].join(`;
249
- ${indentation}`);
250
- context.report({
251
- node: fixtureCall,
252
- messageId: "preferNativeFetch",
253
- // eslint-disable-next-line sonarjs/cognitive-complexity
254
- *fix(fixer) {
255
- if (fixtureCallInformation.inlineStatementNode) {
256
- const preInlineDeclaration = [
257
- fetchStatementText,
258
- `${appendingAssignmentAndAssertionText};
259
- ${indentation}`
260
- ].join(``);
261
- yield fixer.insertTextBefore(fixtureCallInformation.inlineStatementNode, preInlineDeclaration);
262
- } else {
263
- yield fixer.replaceText(nodeToReplace, fetchStatementText);
264
- const needEndingSemiColon = sourceCode.getText(nodeToReplace).endsWith(";");
265
- yield fixer.insertTextAfter(
266
- nodeToReplace,
267
- needEndingSemiColon ? `${appendingAssignmentAndAssertionText};` : appendingAssignmentAndAssertionText
268
- );
269
- }
270
- for (const responseBodyReference of responseBodyReferences) {
271
- yield fixer.replaceText(
272
- responseBodyReference,
273
- isResponseBodyVariableRedefinitionNeeded || !isResponseBodyRedefinition(responseBodyReference) ? redefineResponseBodyVariableName : getResponseBodyRetrievalText(responseVariableNameToUse)
274
- );
275
- }
276
- if (fixtureCallInformation.inlineBodyReference) {
277
- yield fixer.replaceText(fixtureCallInformation.inlineBodyReference, redefineResponseBodyVariableName);
278
- }
279
- for (const responseHeadersReference of responseHeadersReferences) {
280
- const parent = getParent(responseHeadersReference);
281
- assert.ok(parent);
282
- let headerName;
283
- if (parent.type === "MemberExpression") {
284
- const headerNameNode = parent.property;
285
- headerName = // eslint-disable-next-line no-nested-ternary, @typescript-eslint/restrict-template-expressions
286
- parent.computed ? sourceCode.getText(headerNameNode) : `'${sourceCode.getText(headerNameNode)}'`;
287
- } else if (parent.type === "CallExpression") {
288
- const headerNameNode = parent.arguments[0];
289
- headerName = sourceCode.getText(headerNameNode);
290
- }
291
- assert.ok(headerName !== void 0);
292
- yield fixer.replaceText(parent, `${responseVariableNameToUse}.headers.get(${headerName})`);
293
- }
294
- for (const responseStatusReference of responseStatusReferences) {
295
- if (responseStatusReference.property.type === "Identifier" && responseStatusReference.property.name === "statusCode") {
296
- yield fixer.replaceText(responseStatusReference.property, `status`);
297
- }
298
- }
299
- if (fixtureCallInformation.rootNode.type === "ReturnStatement" && fixtureCallInformation.assertions !== void 0) {
300
- yield fixer.insertTextAfter(
301
- fixtureCallInformation.rootNode,
302
- `
303
- ${indentation}return ${responseVariableNameToUse};`
304
- );
305
- }
306
- }
307
- });
308
- } catch (error) {
309
- console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
310
- context.report({
311
- node: fixtureCall,
312
- messageId: "unknownError",
313
- data: {
314
- fileName: context.filename,
315
- error: error instanceof Error ? error.toString() : JSON.stringify(error)
316
- }
317
- });
318
- }
319
- }
320
- };
321
- }
322
- };
323
- var no_fixture_default = rule;
324
- export {
325
- no_fixture_default as default,
326
- ruleId
327
- };
328
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZpeHR1cmUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBa0JBLE9BQWtEO0FBQ2xEO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw4QkFBOEIscUJBQXFCO0FBQzVELFNBQVMsaUNBQWlDO0FBQzFDLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQU8seUJBQXlCO0FBQ2hDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsNENBQTRDO0FBRTlDLElBQU0sU0FBUztBQWV0QixTQUFTLG1CQUFtQixNQUE0QixTQUFpQyxZQUF3QjtBQUMvRyxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLFNBQU8sR0FBRyxRQUFRLHFEQUFxRDtBQUV2RSxNQUFJO0FBQ0osTUFBSSxPQUFPLFNBQVMsbUJBQW1CO0FBRXJDLFlBQVEsY0FBYztBQUN0QixZQUFRLFdBQVc7QUFBQSxFQUNyQixXQUFXLE9BQU8sU0FBUyxxQkFBcUIsT0FBTyxTQUFTLGtCQUFrQjtBQUVoRixZQUFRLGNBQWM7QUFDdEIsWUFBUSxXQUFXO0FBQUEsRUFDckIsV0FBVyxPQUFPLFNBQVMsbUJBQW1CO0FBQzVDLFlBQVEsY0FBYztBQUN0QixVQUFNLHFCQUFxQixzQkFBc0IsTUFBTTtBQUN2RCxXQUFPLEdBQUcsa0JBQWtCO0FBQzVCLFVBQU0sY0FBYyxVQUFVLE1BQU07QUFDcEMsUUFBSSxhQUFhLFNBQVMsb0JBQW9CO0FBQzVDLGNBQVEsV0FBVztBQUNuQixjQUFRLHNCQUFzQjtBQUM5QixVQUFJLFlBQVksU0FBUyxTQUFTLGdCQUFnQixZQUFZLFNBQVMsU0FBUyxRQUFRO0FBQ3RGLGdCQUFRLHNCQUFzQjtBQUFBLE1BQ2hDO0FBQUEsSUFDRixXQUFXLG1CQUFtQixTQUFTLHVCQUF1QjtBQUM1RCxjQUFRLHNCQUFzQjtBQUM5QixjQUFRLFdBQVc7QUFBQSxJ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
@@ -1,67 +0,0 @@
1
- // src/agent/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 "../library/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: "Removing 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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxhQUFhLGdCQUFnQjtBQUN0QyxTQUFTLFVBQVUsY0FBYztBQUNqQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHlCQUF5QjtBQUUzQixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQU8sV0FBVztBQUFBLEVBQ3RCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixvQkFBb0I7QUFBQSxNQUNwQixjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsaURBQWlELENBQUMsa0JBQTRDO0FBQzVGLFlBQUk7QUFDRixnQkFBTSxpQkFBaUIsa0JBQWtCLGFBQWE7QUFDdEQsaUJBQU8sR0FBRyxjQUFjO0FBQ3hCLGNBQUksZUFBZSxTQUFTLFNBQVMsZUFBZSxnQkFBZ0I7QUFDbEUsb0JBQVEsT0FBTztBQUFBLGNBQ2IsV0FBVztBQUFBLGNBQ1gsTUFBTTtBQUFBLGNBQ04sSUFBSSxPQUFPO0FBQ1QsdUJBQU8sTUFBTSxZQUFZLGdCQUFnQixXQUFXLFFBQVEsZUFBZSxVQUFVLENBQUM7QUFBQSxjQUN4RjtBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0gsT0FBTztBQUNMLG9CQUFRLE9BQU87QUFBQSxjQUNiLFdBQVc7QUFBQSxjQUNYLE1BQU07QUFBQSxjQUNOLElBQUksT0FBTztBQUNULHVCQUFPLE1BQU0sT0FBTyxjQUFjO0FBQUEsY0FDcEM7QUFBQSxZQUNGLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRixTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFVBQVUsUUFBUTtBQUFBLGNBQ2xCLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUs7QUFBQSxZQUN6RTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTywyQkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,75 +0,0 @@
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=