@checkdigit/eslint-plugin 7.3.0-PR.75-a61b → 7.3.0-PR.75-1d0d

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,9 +1,11 @@
1
1
  // src/agent/agent-test-wiring.ts
2
2
  import { strict as assert } from "node:assert";
3
3
  import { AST_TOKEN_TYPES, ESLintUtils, TSESTree } from "@typescript-eslint/utils";
4
+ import debug from "debug";
4
5
  import getDocumentationUrl from "../get-documentation-url.mjs";
5
6
  var ruleId = "agent-test-wiring";
6
7
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
8
+ var log = debug("eslint-plugin:agent:agent-test-wiring");
7
9
  var STATEMENT_FIXTURE_RESET = "fixture.reset()";
8
10
  var STATEMENT_FIXTURE_RESET_AWAITED = `await ${STATEMENT_FIXTURE_RESET};`;
9
11
  var STATEMENT_AGENT_DECLARATION = "let agent: Agent;";
@@ -27,6 +29,7 @@ var rule = createRule({
27
29
  },
28
30
  defaultOptions: [],
29
31
  create(context) {
32
+ log("Processing file:", context.filename);
30
33
  const sourceCode = context.sourceCode;
31
34
  const importDeclarations = /* @__PURE__ */ new Map();
32
35
  let isFixtureUsed = false;
@@ -49,7 +52,7 @@ var rule = createRule({
49
52
  afterAll = callExpression;
50
53
  },
51
54
  "Program:exit"(program) {
52
- if (!isFixtureUsed) {
55
+ if (!isFixtureUsed || beforeAll === void 0) {
53
56
  return;
54
57
  }
55
58
  try {
@@ -77,48 +80,49 @@ var rule = createRule({
77
80
  import createAgent, { type Agent } from '@checkdigit/agent';`
78
81
  );
79
82
  }
80
- const fixturePluginImportDeclaration = importDeclarations.get("../../plugin/fixture.test");
81
- if (!fixturePluginImportDeclaration) {
83
+ const pathLets = context.filename.split("/");
84
+ const currentFileIndex = pathLets.length - 1;
85
+ const pluginFolderIndex = pathLets.lastIndexOf("src") + 1;
86
+ const fixturePluginImportPath = `${"../".repeat(currentFileIndex - pluginFolderIndex)}plugin/fixture.test`;
87
+ if (!importDeclarations.get(fixturePluginImportPath)) {
82
88
  fixturePluginImportFixer = (fixer) => fixer.insertTextAfter(lastImportDeclaration, `
83
- import fixturePlugin from '../../plugin/fixture.test';`);
89
+ import fixturePlugin from '${fixturePluginImportPath}';`);
84
90
  }
85
- if (beforeAll !== void 0) {
86
- const beforeAllArgument = beforeAll.arguments[0];
87
- assert.ok(beforeAllArgument !== void 0);
88
- if (!sourceCode.getText(beforeAllArgument).includes(STATEMENT_AGENT_CREATION)) {
89
- if (beforeAllArgument.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression && beforeAllArgument.body.type === TSESTree.AST_NODE_TYPES.BlockStatement) {
90
- const fixtureResetStatement = beforeAllArgument.body.body.find(
91
- (statement) => sourceCode.getText(statement) === STATEMENT_FIXTURE_RESET_AWAITED
92
- );
93
- assert.ok(fixtureResetStatement !== void 0);
94
- beforeAllFixer = (fixer) => fixer.replaceText(
95
- fixtureResetStatement,
96
- [
97
- STATEMENT_AGENT_CREATION,
98
- STATEMENT_AGENT_REGISTER,
99
- STATEMENT_AGENT_ENABLE,
100
- STATEMENT_FIXTURE_RESET_AWAITED
101
- ].join("\n")
102
- );
103
- } else {
104
- beforeAllFixer = (fixer) => fixer.replaceText(
105
- beforeAllArgument,
106
- [
107
- `async () => {`,
108
- STATEMENT_AGENT_CREATION,
109
- STATEMENT_AGENT_REGISTER,
110
- STATEMENT_AGENT_ENABLE,
111
- STATEMENT_FIXTURE_RESET_AWAITED,
112
- `}`
113
- ].join("\n")
114
- );
115
- }
116
- agentDeclarationFixer = (fixer) => (
117
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
118
- fixer.insertTextBefore(beforeAll, `${STATEMENT_AGENT_DECLARATION}
119
- `)
91
+ const beforeAllArgument = beforeAll.arguments[0];
92
+ assert.ok(beforeAllArgument !== void 0);
93
+ if (!sourceCode.getText(beforeAllArgument).includes(STATEMENT_AGENT_CREATION)) {
94
+ if (beforeAllArgument.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression && beforeAllArgument.body.type === TSESTree.AST_NODE_TYPES.BlockStatement) {
95
+ const fixtureResetStatement = beforeAllArgument.body.body.find(
96
+ (statement) => sourceCode.getText(statement) === STATEMENT_FIXTURE_RESET_AWAITED
97
+ );
98
+ assert.ok(fixtureResetStatement !== void 0);
99
+ beforeAllFixer = (fixer) => fixer.replaceText(
100
+ fixtureResetStatement,
101
+ [
102
+ STATEMENT_AGENT_CREATION,
103
+ STATEMENT_AGENT_REGISTER,
104
+ STATEMENT_AGENT_ENABLE,
105
+ STATEMENT_FIXTURE_RESET_AWAITED
106
+ ].join("\n")
107
+ );
108
+ } else {
109
+ beforeAllFixer = (fixer) => fixer.replaceText(
110
+ beforeAllArgument,
111
+ [
112
+ `async () => {`,
113
+ STATEMENT_AGENT_CREATION,
114
+ STATEMENT_AGENT_REGISTER,
115
+ STATEMENT_AGENT_ENABLE,
116
+ STATEMENT_FIXTURE_RESET_AWAITED,
117
+ `}`
118
+ ].join("\n")
120
119
  );
121
120
  }
121
+ agentDeclarationFixer = (fixer) => (
122
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
123
+ fixer.insertTextBefore(beforeAll, `${STATEMENT_AGENT_DECLARATION}
124
+ `)
125
+ );
122
126
  }
123
127
  if (afterAll !== void 0) {
124
128
  const afterAllArrowFunctionExpression = afterAll.arguments[0];
@@ -133,7 +137,7 @@ import fixturePlugin from '../../plugin/fixture.test';`);
133
137
  assert.ok(lastStatement);
134
138
  afterAllFixer = (fixer) => fixer.insertTextAfter(lastStatement, STATEMENT_AGENT_DISPOSE);
135
139
  }
136
- } else if (beforeAll !== void 0) {
140
+ } else {
137
141
  const nextToken = sourceCode.getTokenAfter(beforeAll);
138
142
  afterAllFixer = (fixer) => fixer.insertTextAfter(
139
143
  nextToken !== null && nextToken.type === AST_TOKEN_TYPES.Punctuator ? nextToken : (
@@ -146,7 +150,7 @@ import fixturePlugin from '../../plugin/fixture.test';`);
146
150
  if (jestImportFixer !== void 0 || agentImportFixer !== void 0 || fixturePluginImportFixer !== void 0 || agentDeclarationFixer !== void 0 || beforeAllFixer !== void 0 || afterAllFixer !== void 0) {
147
151
  context.report({
148
152
  messageId: "updateTestWiring",
149
- node: program,
153
+ node: beforeAll,
150
154
  *fix(fixer) {
151
155
  if (jestImportFixer !== void 0) {
152
156
  yield jestImportFixer(fixer);
@@ -189,4 +193,4 @@ export {
189
193
  agent_test_wiring_default as default,
190
194
  ruleId
191
195
  };
192
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FnZW50LXRlc3Qtd2lyaW5nLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBRWpDLFNBQVMsaUJBQWlCLGFBQWEsZ0JBQWdCO0FBR3ZELE9BQU8seUJBQXlCO0FBRXpCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sMEJBQTBCO0FBQ2hDLElBQU0sa0NBQWtDLFNBQVMsdUJBQXVCO0FBQ3hFLElBQU0sOEJBQThCO0FBQ3BDLElBQU0sMkJBQTJCO0FBQ2pDLElBQU0sMkJBQTJCO0FBQ2pDLElBQU0seUJBQXlCO0FBQy9CLElBQU0sMEJBQTBCO0FBRWhDLElBQU0sT0FBb0UsV0FBVztBQUFBLEVBQ25GLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixrQkFBa0I7QUFBQSxNQUNsQixjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxxQkFBcUIsb0JBQUksSUFBd0M7QUFDdkUsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSTtBQUNKLFFBQUk7QUFFSixXQUFPO0FBQUEsTUFDTCxrQkFBa0IsbUJBQW1CO0FBQ25DLGNBQU0sYUFBYSxrQkFBa0IsT0FBTztBQUM1QywyQkFBbUIsSUFBSSxZQUFZLGlCQUFpQjtBQUNwRCxZQUNFLGVBQWUseUJBQ2Ysa0JBQWtCLFdBQVc7QUFBQSxVQUMzQixDQUFDLGNBQ0MsVUFBVSxTQUFTLFNBQVMsZUFBZSxtQkFDM0MsVUFBVSxTQUFTLFNBQVMsU0FB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
196
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FnZW50LXRlc3Qtd2lyaW5nLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBRWpDLFNBQVMsaUJBQWlCLGFBQWEsZ0JBQWdCO0FBRXZELE9BQU8sV0FBVztBQUVsQixPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFDdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUM5RSxJQUFNLE1BQU0sTUFBTSx1Q0FBdUM7QUFFekQsSUFBTSwwQkFBMEI7QUFDaEMsSUFBTSxrQ0FBa0MsU0FBUyx1QkFBdUI7QUFDeEUsSUFBTSw4QkFBOEI7QUFDcEMsSUFBTSwyQkFBMkI7QUFDakMsSUFBTSwyQkFBMkI7QUFDakMsSUFBTSx5QkFBeUI7QUFDL0IsSUFBTSwwQkFBMEI7QUFFaEMsSUFBTSxPQUFvRSxXQUFXO0FBQUEsRUFDbkYsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGtCQUFrQjtBQUFBLE1BQ2xCLGNBQWM7QUFBQSxJQUNoQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxRQUFJLG9CQUFvQixRQUFRLFFBQVE7QUFDeEMsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxxQkFBcUIsb0JBQUksSUFBd0M7QUFDdkUsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSTtBQUNKLFFBQUk7QUFFSixXQUFPO0FBQUEsTUFDTCxrQkFBa0IsbUJBQW1CO0FBQ25DLGNBQU0sYUFBYSxrQkFBa0IsT0FBTztBQUM1QywyQkFBbUIsSUFBSSxZQUFZLGlCQUFpQjtBQUNwRCxZQUNFLGVBQWUseUJBQ2Ysa0JBQWtC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
@@ -225,7 +225,8 @@ ${indentation}`);
225
225
  const responseBodyHeadersVariableRedefineLines = isResponseVariableRedefinitionNeeded ? [
226
226
  // eslint-disable-next-line no-nested-ternary
227
227
  ...destructuringResponseBodyVariable ? [
228
- `const ${destructuringResponseBodyVariable.name} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`
228
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
229
+ `const ${destructuringResponseBodyVariable.type === "ObjectPattern" ? sourceCode.getText(destructuringResponseBodyVariable) : destructuringResponseBodyVariable.name} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`
229
230
  ] : isResponseBodyVariableRedefinitionNeeded ? [
230
231
  `const ${redefineResponseBodyVariableName} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`
231
232
  ] : [],
@@ -323,4 +324,4 @@ export {
323
324
  no_fixture_default as default,
324
325
  ruleId
325
326
  };
326
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZpeHR1cmUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFZakMsT0FBa0Q7QUFFbEQ7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDhCQUE4QixxQkFBcUI7QUFDNUQsU0FBUyw0Q0FBNEM7QUFFOUMsSUFBTSxTQUFTO0FBZXRCLFNBQVMsbUJBQW1CLE1BQTRCLFNBQWlDLFlBQXdCO0FBQy9HLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsU0FBTyxHQUFHLFFBQVEscURBQXFEO0FBRXZFLE1BQUk7QUFDSixNQUFJLE9BQU8sU0FBUyxtQkFBbUI7QUFFckMsWUFBUSxjQUFjO0FBQ3RCLFlBQVEsV0FBVztBQUFBLEVBQ3JCLFdBQVcsT0FBTyxTQUFTLHFCQUFxQixPQUFPLFNBQVMsa0JBQWtCO0FBRWhGLFlBQVEsY0FBYztBQUN0QixZQUFRLFdBQVc7QUFBQSxFQUNyQixXQUFXLE9BQU8sU0FBUyxtQkFBbUI7QUFDNUMsWUFBUSxjQUFjO0FBQ3RCLFVBQU0scUJBQXFCLHNCQUFzQixNQUFNO0FBQ3ZELFdBQU8sR0FBRyxrQkFBa0I7QUFDNUIsVUFBTSxjQUFjLFVBQVUsTUFBTTtBQUNwQyxRQUFJLGFBQWEsU0FBUyxvQkFBb0I7QUFDNUMsY0FBUSxXQUFXO0FBQ25CLGNBQVEsc0JBQXNCO0FBQzlCLFVBQUksWUFBWSxTQUFTLFNBQVMsZ0JBQWdCLFlBQVksU0FBUyxTQUFTLFFBQVE7QUFDdEYsZ0JBQVEsc0JBQXNCO0FBQUEsTUFDaEM7QUFBQSxJQUNGLFdBQVcsbUJBQW1CLFNBQVMsdUJBQXVCO0FBQzVELGNBQVEsc0JBQXNCO0FBQzlCLGNBQVEsV0FBVztBQUFBLElB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
327
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZpeHR1cmUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFhakMsT0FBa0Q7QUFFbEQ7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDhCQUE4QixxQkFBcUI7QUFDNUQsU0FBUyw0Q0FBNEM7QUFFOUMsSUFBTSxTQUFTO0FBZXRCLFNBQVMsbUJBQW1CLE1BQTRCLFNBQWlDLFlBQXdCO0FBQy9HLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsU0FBTyxHQUFHLFFBQVEscURBQXFEO0FBRXZFLE1BQUk7QUFDSixNQUFJLE9BQU8sU0FBUyxtQkFBbUI7QUFFckMsWUFBUSxjQUFjO0FBQ3RCLFlBQVEsV0FBVztBQUFBLEVBQ3JCLFdBQVcsT0FBTyxTQUFTLHFCQUFxQixPQUFPLFNBQVMsa0JBQWtCO0FBRWhGLFlBQVEsY0FBYztBQUN0QixZQUFRLFdBQVc7QUFBQSxFQUNyQixXQUFXLE9BQU8sU0FBUyxtQkFBbUI7QUFDNUMsWUFBUSxjQUFjO0FBQ3RCLFVBQU0scUJBQXFCLHNCQUFzQixNQUFNO0FBQ3ZELFdBQU8sR0FBRyxrQkFBa0I7QUFDNUIsVUFBTSxjQUFjLFVBQVUsTUFBTTtBQUNwQyxRQUFJLGFBQWEsU0FBUyxvQkFBb0I7QUFDNUMsY0FBUSxXQUFXO0FBQ25CLGNBQVEsc0JBQXNCO0FBQzlCLFVBQUksWUFBWSxTQUFTLFNBQVMsZ0JBQWdCLFlBQVksU0FBUyxTQUFTLFFBQVE7QUFDdEYsZ0JBQVEsc0JBQXNCO0FBQUEsTUFDaEM7QUFBQSxJQUNGLFdBQVcsbUJBQW1CLFNBQVMsdUJBQXVCO0FBQzVELGNBQVEsc0JBQXNCO0FBQzlCLGNBQVEsV0FBVztBQUFBLElB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
@@ -1,7 +1,9 @@
1
1
  // src/agent/response-reference.ts
2
2
  import { strict as assert } from "node:assert";
3
3
  import "eslint";
4
+ import debug from "debug";
4
5
  import { getParent } from "../library/tree.mjs";
6
+ var log = debug("eslint-plugin:response-reference");
5
7
  function analyzeResponseReferences(variableDeclaration, scopeManager) {
6
8
  const results = {
7
9
  bodyReferences: [],
@@ -44,7 +46,16 @@ function analyzeResponseReferences(variableDeclaration, scopeManager) {
44
46
  results.destructuringHeadersReferences = responseVariable.references.map((reference) => reference.identifier).map(getParent).filter(
45
47
  (parent) => parent?.type === "MemberExpression" && parent.property.type === "Identifier" && parent.property.name !== "get" && getParent(parent)?.type !== "CallExpression"
46
48
  );
49
+ } else if (identifierParent.type === "Property") {
50
+ const parent = getParent(identifierParent);
51
+ if (parent?.type === "ObjectPattern") {
52
+ const parent2 = getParent(parent);
53
+ if (parent2?.type === "Property" && parent2.key.type === "Identifier" && parent2.key.name === "body") {
54
+ results.destructuringBodyVariable = parent;
55
+ }
56
+ }
47
57
  } else {
58
+ log("+++++++ can not handle identifierParent", identifierParent);
48
59
  throw new Error(`Unknown response variable reference: ${responseVariable.name}`);
49
60
  }
50
61
  }
@@ -53,4 +64,4 @@ function analyzeResponseReferences(variableDeclaration, scopeManager) {
53
64
  export {
54
65
  analyzeResponseReferences
55
66
  };
56
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L3Jlc3BvbnNlLXJlZmVyZW5jZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxPQUEyQjtBQUUzQixTQUFTLGlCQUFpQjtBQU9uQixTQUFTLDBCQUNkLHFCQUNBLGNBU0E7QUFDQSxRQUFNLFVBUUY7QUFBQSxJQUNGLGdCQUFnQixDQUFDO0FBQUEsSUFDakIsbUJBQW1CLENBQUM7QUFBQSxJQUNwQixrQkFBa0IsQ0FBQztBQUFBLEVBQ3JCO0FBQ0EsTUFBSSxDQUFDLHFCQUFxQjtBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sb0JBQW9CLGFBQWEscUJBQXFCLG1CQUFtQjtBQUMvRSxhQUFXLG9CQUFvQixtQkFBbUI7QUFDaEQsVUFBTSxhQUFhLGlCQUFpQixZQUFZLENBQUM7QUFDakQsV0FBTyxHQUFHLFVBQVU7QUFDcEIsVUFBTSxtQkFBbUIsVUFBVSxVQUFVO0FBQzdDLFdBQU8sR0FBRyxnQkFBZ0I7QUFDMUIsUUFBSSxpQkFBaUIsU0FBUyxzQkFBc0I7QUFFbEQsY0FBUSxXQUFXO0FBQ25CLFlBQU0scUJBQXFCLGlCQUFpQixXQUFXO0FBQUEsUUFBSSxDQUFDLHNCQUMxRCxVQUFVLGtCQUFrQixVQUFVO0FBQUEsTUFDeEM7QUFFQSxjQUFRLGlCQUFpQixtQkFBbUI7QUFBQSxRQUMxQyxDQUFDLFNBQ0MsTUFBTSxTQUFTLHNCQUFzQixLQUFLLFNBQVMsU0FBUyxnQkFBZ0IsS0FBSyxTQUFTLFNBQVM7QUFBQSxNQUN2RztBQUVBLGNBQVEsb0JBQW9CLG1CQUFtQjtBQUFBLFFBQzdDLENBQUMsU0FDQyxNQUFNLFNBQVMsc0JBQ2YsS0FBSyxTQUFTLFNBQVMsaUJBQ3RCLEtBQUssU0FBUyxTQUFTLFlBQVksS0FBSyxTQUFTLFNBQVMsYUFBYSxLQUFLLFNBQVMsU0FBUztBQUFBLE1BQ25HO0FBRUEsY0FBUSxtQkFBbUIsbUJBQW1CO0FBQUEsUUFDNUMsQ0FBQyxTQUNDLE1BQU0sU0FBUyxzQkFDZixLQUFLLFNBQVMsU0FBUyxpQkFDdEIsS0FBSyxTQUFTLFNBQVMsWUFBWSxLQUFLLFNBQVMsU0FBUztBQUFBLE1BQy9EO0FBQUEsSUFDRjtBQUFBO0FBQUEsTUFFRSxpQkFBaUIsU0FBUyxjQUMxQixpQkFBaUIsSUFBSSxTQUFTLGdCQUM5QixpQkFBaUIsSUFBSSxTQUFTO0FBQUEsTUFDOUI7QUFDQSxjQUFRLDRCQUE0QjtBQUFBLElBQ3RDO0FBQUE7QUFBQSxNQUVFLGlCQUFpQixTQUFTLGNBQzFCLGlCQUFpQixJQUFJLFNBQVMsZ0JBQzlCLGlCQUFpQixJQUFJLFNBQVM7QUFBQSxNQUM5QjtBQUNBLGNBQVEsK0JBQStCO0FBQ3ZDLGNBQVEsaUNBQWlDLGlCQUFpQixXQUN2RCxJQUFJLENBQUMsY0FBYyxVQUFVLFVBQVUsRUFDdkMsSUFBSSxTQUFTLEVBQ2I7QUFBQSxRQUNDLENBQUMsV0FDQyxRQUFRLFNBQVMsc0JBQ2pCLE9BQU8sU0FBUyxTQUFTLGdCQUN6QixPQUFPLFNBQVMsU0FBUyxTQUN6QixVQUFVLE1BQU0sR0FBRyxTQUFTO0FBQUEsTUFDaEM7QUFBQSxJQUNKLE9BQU87QUFDTCxZQUFNLElBQUksTUFBTSx3Q0FBd0MsaUJBQWlCLElBQUksRUFBRTtBQUFBLElBQ2pGO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
67
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L3Jlc3BvbnNlLXJlZmVyZW5jZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxPQUEyQjtBQUMzQixPQUFPLFdBQVc7QUFFbEIsU0FBUyxpQkFBaUI7QUFFMUIsSUFBTSxNQUFNLE1BQU0sa0NBQWtDO0FBTzdDLFNBQVMsMEJBQ2QscUJBQ0EsY0FTQTtBQUNBLFFBQU0sVUFRRjtBQUFBLElBQ0YsZ0JBQWdCLENBQUM7QUFBQSxJQUNqQixtQkFBbUIsQ0FBQztBQUFBLElBQ3BCLGtCQUFrQixDQUFDO0FBQUEsRUFDckI7QUFDQSxNQUFJLENBQUMscUJBQXFCO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxvQkFBb0IsYUFBYSxxQkFBcUIsbUJBQW1CO0FBQy9FLGFBQVcsb0JBQW9CLG1CQUFtQjtBQUNoRCxVQUFNLGFBQWEsaUJBQWlCLFlBQVksQ0FBQztBQUNqRCxXQUFPLEdBQUcsVUFBVTtBQUNwQixVQUFNLG1CQUFtQixVQUFVLFVBQVU7QUFDN0MsV0FBTyxHQUFHLGdCQUFnQjtBQUMxQixRQUFJLGlCQUFpQixTQUFTLHNCQUFzQjtBQUVsRCxjQUFRLFdBQVc7QUFDbkIsWUFBTSxxQkFBcUIsaUJBQWlCLFdBQVc7QUFBQSxRQUFJLENBQUMsc0JBQzFELFVBQVUsa0JBQWtCLFVBQVU7QUFBQSxNQUN4QztBQUVBLGNBQVEsaUJBQWlCLG1CQUFtQjtBQUFBLFFBQzFDLENBQUMsU0FDQyxNQUFNLFNBQVMsc0JBQXNCLEtBQUssU0FBUyxTQUFTLGdCQUFnQixLQUFLLFNBQVMsU0FBUztBQUFBLE1BQ3ZHO0FBRUEsY0FBUSxvQkFBb0IsbUJBQW1CO0FBQUEsUUFDN0MsQ0FBQyxTQUNDLE1BQU0sU0FBUyxzQkFDZixLQUFLLFNBQVMsU0FBUyxpQkFDdEIsS0FBSyxTQUFTLFNBQVMsWUFBWSxLQUFLLFNBQVMsU0FBUyxhQUFhLEtBQUssU0FBUyxTQUFTO0FBQUEsTUFDbkc7QUFFQSxjQUFRLG1CQUFtQixtQkFBbUI7QUFBQSxRQUM1QyxDQUFDLFNBQ0MsTUFBTSxTQUFTLHNCQUNmLEtBQUssU0FBUyxTQUFTLGlCQUN0QixLQUFLLFNBQVMsU0FBUyxZQUFZLEtBQUssU0FBUyxTQUFTO0FBQUEsTUFDL0Q7QUFBQSxJQUNGO0FBQUE7QUFBQSxNQUVFLGlCQUFpQixTQUFTLGNBQzFCLGlCQUFpQixJQUFJLFNBQVMsZ0JBQzlCLGlCQUFpQixJQUFJLFNBQVM7QUFBQSxNQUM5QjtBQUNBLGNBQVEsNEJBQTRCO0FBQUEsSUFDdEM7QUFBQTtBQUFBLE1BRUUsaUJBQWlCLFNBQVMsY0FDMUIsaUJBQWlCLElBQUksU0FBUyxnQkFDOUIsaUJBQWlCLElBQUksU0FBUztBQUFBLE1BQzlCO0FBQ0EsY0FBUSwrQkFBK0I7QUFDdkMsY0FBUSxpQ0FBaUMsaUJBQWlCLFdBQ3ZELElBQUksQ0FBQyxjQUFjLFVBQVUsVUFBVSxFQUN2QyxJQUFJLFNBQVMsRUFDYjtBQUFBLFFBQ0MsQ0FBQyxXQUNDLFFBQVEsU0FBUyxzQkFDakIsT0FBTyxTQUFTLFNBQVMsZ0JBQ3pCLE9BQU8sU0FBUyxTQUFTLFNBQ3pCLFVBQVUsTUFBTSxHQUFHLFNBQVM7QUFBQSxNQUNoQztBQUFBLElBQ0osV0FBVyxpQkFBaUIsU0FBUyxZQUFZO0FBRS9DLFlBQU0sU0FBUyxVQUFVLGdCQUFnQjtBQUN6QyxVQUFJLFFBQVEsU0FBUyxpQkFBaUI7QUFDcEMsY0FBTSxVQUFVLFVBQVUsTUFBTTtBQUNoQyxZQUFJLFNBQVMsU0FBUyxjQUFjLFFBQVEsSUFBSSxTQUFTLGdCQUFnQixRQUFRLElBQUksU0FBUyxRQUFRO0FBQ3BHLGtCQUFRLDRCQUE0QjtBQUFBLFFBQ3RDO0FBQUEsTUFDRjtBQUFBLElBQ0YsT0FBTztBQUNMLFVBQUksMkNBQTJDLGdCQUFnQjtBQUMvRCxZQUFNLElBQUksTUFBTSx3Q0FBd0MsaUJBQWlCLElBQUksRUFBRTtBQUFBLElBQ2pGO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,4 +1,4 @@
1
- import type { MemberExpression, VariableDeclaration } from 'estree';
1
+ import type { MemberExpression, ObjectPattern, VariableDeclaration } from 'estree';
2
2
  import { type Scope } from 'eslint';
3
3
  /**
4
4
  * analyze response related variables and their references
@@ -10,7 +10,7 @@ export declare function analyzeResponseReferences(variableDeclaration: VariableD
10
10
  bodyReferences: MemberExpression[];
11
11
  headersReferences: MemberExpression[];
12
12
  statusReferences: MemberExpression[];
13
- destructuringBodyVariable?: Scope.Variable;
13
+ destructuringBodyVariable?: Scope.Variable | ObjectPattern;
14
14
  destructuringHeadersVariable?: Scope.Variable;
15
15
  destructuringHeadersReferences?: MemberExpression[] | undefined;
16
16
  };
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-a61b","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","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"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 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && 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":"8.10.0","@typescript-eslint/utils":"8.10.0","debug":"^4.3.7","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.13.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"8.10.0","@typescript-eslint/rule-tester":"8.10.0","eslint":"^9.13.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"8.10.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-1d0d","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","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"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 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && 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":"8.10.0","@typescript-eslint/utils":"8.10.0","debug":"^4.3.7","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.13.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"8.10.0","@typescript-eslint/rule-tester":"8.10.0","eslint":"^9.13.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"8.10.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
@@ -10,12 +10,13 @@ import { strict as assert } from 'node:assert';
10
10
 
11
11
  import { AST_TOKEN_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
12
12
  import type { RuleFix, RuleFixer } from '@typescript-eslint/utils/ts-eslint';
13
+ import debug from 'debug';
13
14
 
14
15
  import getDocumentationUrl from '../get-documentation-url';
15
16
 
16
17
  export const ruleId = 'agent-test-wiring';
17
-
18
18
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
19
+ const log = debug('eslint-plugin:agent:agent-test-wiring');
19
20
 
20
21
  const STATEMENT_FIXTURE_RESET = 'fixture.reset()';
21
22
  const STATEMENT_FIXTURE_RESET_AWAITED = `await ${STATEMENT_FIXTURE_RESET};`;
@@ -41,6 +42,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
41
42
  },
42
43
  defaultOptions: [],
43
44
  create(context) {
45
+ log('Processing file:', context.filename);
44
46
  const sourceCode = context.sourceCode;
45
47
  const importDeclarations = new Map<string, TSESTree.ImportDeclaration>();
46
48
  let isFixtureUsed = false;
@@ -70,7 +72,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
70
72
  afterAll = callExpression;
71
73
  },
72
74
  'Program:exit'(program) {
73
- if (!isFixtureUsed) {
75
+ if (!isFixtureUsed || beforeAll === undefined) {
74
76
  return;
75
77
  }
76
78
 
@@ -85,6 +87,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
85
87
  const lastImportDeclaration = [...importDeclarations.values()].at(-1);
86
88
  assert.ok(lastImportDeclaration);
87
89
 
90
+ // make sure that afterAll is imported from jest
88
91
  const jestImportDeclaration = importDeclarations.get('@jest/globals');
89
92
  if (
90
93
  jestImportDeclaration &&
@@ -100,6 +103,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
100
103
  jestImportFixer = (fixer: RuleFixer) => fixer.insertTextBefore(firstImportSpecifier, 'afterAll, ');
101
104
  }
102
105
 
106
+ // make sure that agent is imported
103
107
  const agentImportDeclaration = importDeclarations.get('@checkdigit/agent');
104
108
  if (!agentImportDeclaration) {
105
109
  agentImportFixer = (fixer: RuleFixer) =>
@@ -109,54 +113,59 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
109
113
  );
110
114
  }
111
115
 
112
- const fixturePluginImportDeclaration = importDeclarations.get('../../plugin/fixture.test');
113
- if (!fixturePluginImportDeclaration) {
116
+ // make sure that fixture plugin is imported
117
+ const pathLets = context.filename.split('/');
118
+ const currentFileIndex = pathLets.length - 1;
119
+ const pluginFolderIndex = pathLets.lastIndexOf('src') + 1;
120
+ // it should be safe to assume that the test code is always at least one level deeper than the plugin folder
121
+ const fixturePluginImportPath = `${'../'.repeat(currentFileIndex - pluginFolderIndex)}plugin/fixture.test`;
122
+ if (!importDeclarations.get(fixturePluginImportPath)) {
114
123
  fixturePluginImportFixer = (fixer: RuleFixer) =>
115
- fixer.insertTextAfter(lastImportDeclaration, `\nimport fixturePlugin from '../../plugin/fixture.test';`);
124
+ fixer.insertTextAfter(lastImportDeclaration, `\nimport fixturePlugin from '${fixturePluginImportPath}';`);
116
125
  }
117
126
 
118
- if (beforeAll !== undefined) {
119
- const beforeAllArgument = beforeAll.arguments[0];
120
- assert.ok(beforeAllArgument !== undefined);
121
- if (!sourceCode.getText(beforeAllArgument).includes(STATEMENT_AGENT_CREATION)) {
122
- if (
123
- beforeAllArgument.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression &&
124
- beforeAllArgument.body.type === TSESTree.AST_NODE_TYPES.BlockStatement
125
- ) {
126
- const fixtureResetStatement = beforeAllArgument.body.body.find(
127
- (statement) => sourceCode.getText(statement) === STATEMENT_FIXTURE_RESET_AWAITED,
127
+ // inject agent declaration and initialization to `beforeAll` block
128
+ const beforeAllArgument = beforeAll.arguments[0];
129
+ assert.ok(beforeAllArgument !== undefined);
130
+ if (!sourceCode.getText(beforeAllArgument).includes(STATEMENT_AGENT_CREATION)) {
131
+ if (
132
+ beforeAllArgument.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression &&
133
+ beforeAllArgument.body.type === TSESTree.AST_NODE_TYPES.BlockStatement
134
+ ) {
135
+ const fixtureResetStatement = beforeAllArgument.body.body.find(
136
+ (statement) => sourceCode.getText(statement) === STATEMENT_FIXTURE_RESET_AWAITED,
137
+ );
138
+ assert.ok(fixtureResetStatement !== undefined);
139
+ beforeAllFixer = (fixer: RuleFixer) =>
140
+ fixer.replaceText(
141
+ fixtureResetStatement,
142
+ [
143
+ STATEMENT_AGENT_CREATION,
144
+ STATEMENT_AGENT_REGISTER,
145
+ STATEMENT_AGENT_ENABLE,
146
+ STATEMENT_FIXTURE_RESET_AWAITED,
147
+ ].join('\n'),
148
+ );
149
+ } else {
150
+ beforeAllFixer = (fixer: RuleFixer) =>
151
+ fixer.replaceText(
152
+ beforeAllArgument,
153
+ [
154
+ `async () => {`,
155
+ STATEMENT_AGENT_CREATION,
156
+ STATEMENT_AGENT_REGISTER,
157
+ STATEMENT_AGENT_ENABLE,
158
+ STATEMENT_FIXTURE_RESET_AWAITED,
159
+ `}`,
160
+ ].join('\n'),
128
161
  );
129
- assert.ok(fixtureResetStatement !== undefined);
130
- beforeAllFixer = (fixer: RuleFixer) =>
131
- fixer.replaceText(
132
- fixtureResetStatement,
133
- [
134
- STATEMENT_AGENT_CREATION,
135
- STATEMENT_AGENT_REGISTER,
136
- STATEMENT_AGENT_ENABLE,
137
- STATEMENT_FIXTURE_RESET_AWAITED,
138
- ].join('\n'),
139
- );
140
- } else {
141
- beforeAllFixer = (fixer: RuleFixer) =>
142
- fixer.replaceText(
143
- beforeAllArgument,
144
- [
145
- `async () => {`,
146
- STATEMENT_AGENT_CREATION,
147
- STATEMENT_AGENT_REGISTER,
148
- STATEMENT_AGENT_ENABLE,
149
- STATEMENT_FIXTURE_RESET_AWAITED,
150
- `}`,
151
- ].join('\n'),
152
- );
153
- }
154
- agentDeclarationFixer = (fixer: RuleFixer) =>
155
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
156
- fixer.insertTextBefore(beforeAll!, `${STATEMENT_AGENT_DECLARATION}\n`);
157
162
  }
163
+ agentDeclarationFixer = (fixer: RuleFixer) =>
164
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
165
+ fixer.insertTextBefore(beforeAll!, `${STATEMENT_AGENT_DECLARATION}\n`);
158
166
  }
159
167
 
168
+ // inject agent disposal to `afterAll` block
160
169
  if (afterAll !== undefined) {
161
170
  const afterAllArrowFunctionExpression = afterAll.arguments[0];
162
171
  assert.ok(
@@ -172,7 +181,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
172
181
  assert.ok(lastStatement);
173
182
  afterAllFixer = (fixer: RuleFixer) => fixer.insertTextAfter(lastStatement, STATEMENT_AGENT_DISPOSE);
174
183
  }
175
- } else if (beforeAll !== undefined) {
184
+ } else {
176
185
  const nextToken = sourceCode.getTokenAfter(beforeAll);
177
186
  afterAllFixer = (fixer: RuleFixer) =>
178
187
  fixer.insertTextAfter(
@@ -194,7 +203,7 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
194
203
  ) {
195
204
  context.report({
196
205
  messageId: 'updateTestWiring',
197
- node: program,
206
+ node: beforeAll,
198
207
  *fix(fixer) {
199
208
  if (jestImportFixer !== undefined) {
200
209
  yield jestImportFixer(fixer);
@@ -14,6 +14,7 @@ import type {
14
14
  Expression,
15
15
  MemberExpression,
16
16
  Node,
17
+ ObjectPattern,
17
18
  ReturnStatement,
18
19
  SimpleCallExpression,
19
20
  VariableDeclaration,
@@ -245,6 +246,7 @@ const rule: Rule.RuleModule = {
245
246
  // eslint-disable-next-line max-lines-per-function
246
247
  'CallExpression[callee.object.object.name="fixture"][callee.object.property.name="api"]': (
247
248
  fixtureCall: CallExpression,
249
+ // eslint-disable-next-line sonarjs/cognitive-complexity
248
250
  ) => {
249
251
  try {
250
252
  if (
@@ -325,7 +327,8 @@ const rule: Rule.RuleModule = {
325
327
  // eslint-disable-next-line no-nested-ternary
326
328
  ...(destructuringResponseBodyVariable
327
329
  ? [
328
- `const ${destructuringResponseBodyVariable.name} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`,
330
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
331
+ `const ${(destructuringResponseBodyVariable as ObjectPattern).type === 'ObjectPattern' ? sourceCode.getText(destructuringResponseBodyVariable as ObjectPattern) : (destructuringResponseBodyVariable as Scope.Variable).name} = ${getResponseBodyRetrievalText(responseVariableNameToUse)}`,
329
332
  ]
330
333
  : isResponseBodyVariableRedefinitionNeeded
331
334
  ? [
@@ -7,11 +7,14 @@
7
7
  */
8
8
 
9
9
  import { strict as assert } from 'node:assert';
10
- import type { MemberExpression, VariableDeclaration } from 'estree';
10
+ import type { MemberExpression, ObjectPattern, VariableDeclaration } from 'estree';
11
11
  import { type Scope } from 'eslint';
12
+ import debug from 'debug';
12
13
 
13
14
  import { getParent } from '../library/tree';
14
15
 
16
+ const log = debug('eslint-plugin:response-reference');
17
+
15
18
  /**
16
19
  * analyze response related variables and their references
17
20
  * the implementation is for fixture API, but it can be used for fetch API as well since the tree structure is similar
@@ -25,7 +28,7 @@ export function analyzeResponseReferences(
25
28
  bodyReferences: MemberExpression[];
26
29
  headersReferences: MemberExpression[];
27
30
  statusReferences: MemberExpression[];
28
- destructuringBodyVariable?: Scope.Variable;
31
+ destructuringBodyVariable?: Scope.Variable | ObjectPattern;
29
32
  destructuringHeadersVariable?: Scope.Variable;
30
33
  destructuringHeadersReferences?: MemberExpression[] | undefined;
31
34
  } {
@@ -34,7 +37,7 @@ export function analyzeResponseReferences(
34
37
  bodyReferences: MemberExpression[];
35
38
  headersReferences: MemberExpression[];
36
39
  statusReferences: MemberExpression[];
37
- destructuringBodyVariable?: Scope.Variable;
40
+ destructuringBodyVariable?: Scope.Variable | ObjectPattern;
38
41
  destructuringHeadersVariable?: Scope.Variable;
39
42
  destructuringHeadersReferences?: MemberExpression[] | undefined;
40
43
  } = {
@@ -101,7 +104,17 @@ export function analyzeResponseReferences(
101
104
  parent.property.name !== 'get' &&
102
105
  getParent(parent)?.type !== 'CallExpression',
103
106
  );
107
+ } else if (identifierParent.type === 'Property') {
108
+ // body reference through nested destruction, e.g. "const { body: {bodyPropertyName: renamedBodyPropertyName}, headers: {headerPropertyName: renamedHeaderPropertyName} } = ..."
109
+ const parent = getParent(identifierParent);
110
+ if (parent?.type === 'ObjectPattern') {
111
+ const parent2 = getParent(parent);
112
+ if (parent2?.type === 'Property' && parent2.key.type === 'Identifier' && parent2.key.name === 'body') {
113
+ results.destructuringBodyVariable = parent;
114
+ }
115
+ }
104
116
  } else {
117
+ log('+++++++ can not handle identifierParent', identifierParent);
105
118
  throw new Error(`Unknown response variable reference: ${responseVariable.name}`);
106
119
  }
107
120
  }