@checkdigit/eslint-plugin 7.3.0-PR.75-0187 → 7.3.0-PR.75-428c

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.
@@ -4,6 +4,13 @@ import { AST_TOKEN_TYPES, ESLintUtils, TSESTree } from "@typescript-eslint/utils
4
4
  import getDocumentationUrl from "../get-documentation-url.mjs";
5
5
  var ruleId = "agent-test-wiring";
6
6
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
7
+ var STATEMENT_FIXTURE_RESET = "fixture.reset()";
8
+ var STATEMENT_FIXTURE_RESET_AWAITED = `await ${STATEMENT_FIXTURE_RESET};`;
9
+ var STATEMENT_AGENT_DECLARATION = "let agent: Agent;";
10
+ var STATEMENT_AGENT_CREATION = "agent = await createAgent();";
11
+ var STATEMENT_AGENT_REGISTER = "agent.register(await fixturePlugin(fixture));";
12
+ var STATEMENT_AGENT_ENABLE = "agent.enable();";
13
+ var STATEMENT_AGENT_DISPOSE = "await agent[Symbol.asyncDispose]();";
7
14
  var rule = createRule({
8
15
  name: ruleId,
9
16
  meta: {
@@ -22,20 +29,29 @@ var rule = createRule({
22
29
  create(context) {
23
30
  const sourceCode = context.sourceCode;
24
31
  const importDeclarations = /* @__PURE__ */ new Map();
25
- let beforeAllCallExpression;
26
- let afterAllCallExpression;
32
+ let isFixtureUsed = false;
33
+ let beforeAll;
34
+ let afterAll;
27
35
  return {
28
36
  ImportDeclaration(importDeclaration) {
29
37
  const moduleName = importDeclaration.source.value;
30
38
  importDeclarations.set(moduleName, importDeclaration);
39
+ if (moduleName === "@checkdigit/fixture" && importDeclaration.specifiers.some(
40
+ (specifier) => specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier && specifier.imported.type === TSESTree.AST_NODE_TYPES.Identifier && specifier.imported.name === "createFixture"
41
+ )) {
42
+ isFixtureUsed = true;
43
+ }
31
44
  },
32
45
  'CallExpression[callee.name="beforeAll"]': (callExpression) => {
33
- beforeAllCallExpression = callExpression;
46
+ beforeAll = callExpression;
34
47
  },
35
48
  'CallExpression[callee.name="afterAll"]': (callExpression) => {
36
- afterAllCallExpression = callExpression;
49
+ afterAll = callExpression;
37
50
  },
38
51
  "Program:exit"(program) {
52
+ if (!isFixtureUsed) {
53
+ return;
54
+ }
39
55
  try {
40
56
  let jestImportFixer;
41
57
  let agentImportFixer;
@@ -66,59 +82,65 @@ import createAgent, { type Agent } from '@checkdigit/agent';`
66
82
  fixturePluginImportFixer = (fixer) => fixer.insertTextAfter(lastImportDeclaration, `
67
83
  import fixturePlugin from '../../plugin/fixture.test';`);
68
84
  }
69
- if (beforeAllCallExpression !== void 0) {
70
- const beforeAllArrowFunctionExpression = beforeAllCallExpression.arguments[0];
71
- assert.ok(
72
- beforeAllArrowFunctionExpression !== void 0 && beforeAllArrowFunctionExpression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression
73
- );
74
- const arrowFunctionBody = beforeAllArrowFunctionExpression.body;
75
- assert.ok(arrowFunctionBody.type === TSESTree.AST_NODE_TYPES.BlockStatement);
76
- const targetStatement = arrowFunctionBody.body.find(
77
- (statement) => sourceCode.getText(statement) === "await fixture.reset();"
78
- );
79
- if (targetStatement !== void 0) {
80
- const beforeAllBodyText = sourceCode.getText(arrowFunctionBody);
81
- if (!beforeAllBodyText.includes("agent = await createAgent();")) {
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);
82
94
  beforeAllFixer = (fixer) => fixer.replaceText(
83
- targetStatement,
95
+ fixtureResetStatement,
84
96
  [
85
- "agent = await createAgent();",
86
- "agent.register(await fixturePlugin(fixture));",
87
- "agent.enable();",
88
- "await fixture.reset();"
97
+ STATEMENT_AGENT_CREATION,
98
+ STATEMENT_AGENT_REGISTER,
99
+ STATEMENT_AGENT_ENABLE,
100
+ STATEMENT_FIXTURE_RESET_AWAITED
89
101
  ].join("\n")
90
102
  );
91
- agentDeclarationFixer = (fixer) => (
92
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
93
- fixer.insertTextBefore(beforeAllCallExpression, "let agent: Agent;\n")
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")
94
114
  );
95
115
  }
116
+ agentDeclarationFixer = (fixer) => (
117
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
118
+ fixer.insertTextBefore(beforeAll, `${STATEMENT_AGENT_DECLARATION}
119
+ `)
120
+ );
96
121
  }
97
122
  }
98
- if (afterAllCallExpression !== void 0) {
99
- const afterAllArrowFunctionExpression = afterAllCallExpression.arguments[0];
123
+ if (afterAll !== void 0) {
124
+ const afterAllArrowFunctionExpression = afterAll.arguments[0];
100
125
  assert.ok(
101
126
  afterAllArrowFunctionExpression !== void 0 && afterAllArrowFunctionExpression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression
102
127
  );
103
128
  const arrowFunctionBody = afterAllArrowFunctionExpression.body;
104
129
  assert.ok(arrowFunctionBody.type === TSESTree.AST_NODE_TYPES.BlockStatement);
105
130
  const afterAllBodyText = sourceCode.getText(arrowFunctionBody);
106
- if (!afterAllBodyText.includes("await agent[Symbol.asyncDispose]();")) {
131
+ if (!afterAllBodyText.includes(STATEMENT_AGENT_DISPOSE)) {
107
132
  const lastStatement = arrowFunctionBody.body.at(-1);
108
133
  assert.ok(lastStatement);
109
- afterAllFixer = (fixer) => fixer.insertTextAfter(lastStatement, "await agent[Symbol.asyncDispose]();");
134
+ afterAllFixer = (fixer) => fixer.insertTextAfter(lastStatement, STATEMENT_AGENT_DISPOSE);
110
135
  }
111
- } else if (beforeAllCallExpression !== void 0) {
112
- const nextToken = sourceCode.getTokenAfter(beforeAllCallExpression);
136
+ } else if (beforeAll !== void 0) {
137
+ const nextToken = sourceCode.getTokenAfter(beforeAll);
113
138
  afterAllFixer = (fixer) => fixer.insertTextAfter(
114
139
  nextToken !== null && nextToken.type === AST_TOKEN_TYPES.Punctuator ? nextToken : (
115
140
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
116
- beforeAllCallExpression
141
+ beforeAll
117
142
  ),
118
- `
119
- afterAll(async () => {
120
- await agent[Symbol.asyncDispose]();
121
- });`
143
+ ["", `afterAll(async () => {`, STATEMENT_AGENT_DISPOSE, `});`].join("\n")
122
144
  );
123
145
  }
124
146
  if (jestImportFixer !== void 0 || agentImportFixer !== void 0 || fixturePluginImportFixer !== void 0 || agentDeclarationFixer !== void 0 || beforeAllFixer !== void 0 || afterAllFixer !== void 0) {
@@ -167,4 +189,4 @@ export {
167
189
  agent_test_wiring_default as default,
168
190
  ruleId
169
191
  };
170
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FnZW50LXRlc3Qtd2lyaW5nLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsaUJBQWlCLGFBQWEsZ0JBQWdCO0FBRXZELE9BQU8seUJBQXlCO0FBRXpCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBb0UsV0FBVztBQUFBLEVBQ25GLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixrQkFBa0I7QUFBQSxNQUNsQixjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxxQkFBcUIsb0JBQUksSUFBd0M7QUFDdkUsUUFBSTtBQUNKLFFBQUk7QUFFSixXQUFPO0FBQUEsTUFDTCxrQkFBa0IsbUJBQW1CO0FBQ25DLGNBQU0sYUFBYSxrQkFBa0IsT0FBTztBQUM1QywyQkFBbUIsSUFBSSxZQUFZLGlCQUFpQjtBQUFBLE1BQ3REO0FBQUEsTUFDQSwyQ0FBMkMsQ0FBQyxtQkFBNEM7QUFDdEYsa0NBQTBCO0FBQUEsTUFDNUI7QUFBQSxNQUNBLDBDQUEwQyxDQUFDLG1CQUE0QztBQUNyRixpQ0FBeUI7QUFBQSxNQUMzQjtBQUFBLE1BQ0EsZUFBZSxTQUFTO0FBQ3RCLFlBQUk7QUFDRixjQUFJO0FBQ0osY0FBSTtBQUNKLGNBQUk7QUFDSixjQUFJO0FBQ0osY0FBSTtBQUNKLGNBQUk7QUFFSixnQkFBTSx3QkFBd0IsQ0FBQyxHQUFHLG1CQUFtQixPQUFPLENBQUMsRUFB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
192
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FnZW50LXRlc3Qtd2lyaW5nLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBRWpDLFNBQVMsaUJBQWlCLGFBQWEsZ0JBQWdCO0FBR3ZELE9BQU8seUJBQXlCO0FBRXpCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sMEJBQTBCO0FBQ2hDLElBQU0sa0NBQWtDLFNBQVMsdUJBQXVCO0FBQ3hFLElBQU0sOEJBQThCO0FBQ3BDLElBQU0sMkJBQTJCO0FBQ2pDLElBQU0sMkJBQTJCO0FBQ2pDLElBQU0seUJBQXlCO0FBQy9CLElBQU0sMEJBQTBCO0FBRWhDLElBQU0sT0FBb0UsV0FBVztBQUFBLEVBQ25GLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixrQkFBa0I7QUFBQSxNQUNsQixjQUFjO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxxQkFBcUIsb0JBQUksSUFBd0M7QUFDdkUsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSTtBQUNKLFFBQUk7QUFFSixXQUFPO0FBQUEsTUFDTCxrQkFBa0IsbUJBQW1CO0FBQ25DLGNBQU0sYUFBYSxrQkFBa0IsT0FBTztBQUM1QywyQkFBbUIsSUFBSSxZQUFZLGlCQUFpQjtBQUNwRCxZQUNFLGVBQWUseUJBQ2Ysa0JBQWtCLFdBQVc7QUFBQSxVQUMzQixDQUFDLGNBQ0MsVUFBVSxTQUFTLFNBQVMsZUFBZSxtQkFDM0MsVUFBVSxTQUFTLFNBQVMsU0FB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
@@ -143,6 +143,8 @@ var configs = {
143
143
  "agent-phase-1-test": [
144
144
  {
145
145
  files: ["**/*.spec.ts", "**/*.test.ts", "src/api/v*/index.ts"],
146
+ // eslint-disable-next-line sonarjs/no-duplicate-string
147
+ ignores: ["src/plugin/**"],
146
148
  plugins: {
147
149
  "@checkdigit": plugin
148
150
  },
@@ -163,6 +165,7 @@ var configs = {
163
165
  },
164
166
  {
165
167
  files: ["**/*.spec.ts"],
168
+ ignores: ["src/plugin/**"],
166
169
  plugins: {
167
170
  "@checkdigit": plugin
168
171
  },
@@ -174,6 +177,7 @@ var configs = {
174
177
  "agent-phase-2-production": [
175
178
  {
176
179
  files: ["**/*.ts"],
180
+ ignores: ["src/plugin/**"],
177
181
  plugins: {
178
182
  "@checkdigit": plugin
179
183
  },
@@ -202,4 +206,4 @@ var src_default = defaultToExport;
202
206
  export {
203
207
  src_default as default
204
208
  };
205
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVVBLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU8sbUJBQW1CLFVBQVUsNkJBQTZCO0FBQ2pFLE9BQU8seUJBQXlCLFVBQVUsbUNBQW1DO0FBQzdFLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyx3QkFBd0IsVUFBVSxrQ0FBa0M7QUFDM0UsT0FBTyx1QkFBdUIsVUFBVSxpQ0FBaUM7QUFDekUsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU8sa0JBQWtCLFVBQVUsNEJBQTRCO0FBQy9ELE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxtQkFBbUIsVUFBVSw2QkFBNkI7QUFDakUsT0FBTyw0QkFBNEIsVUFBVSxzQ0FBc0M7QUFDbkYsT0FBTztBQUFBLEVBQ0wsVUFBVTtBQUFBLE9BQ0w7QUFDUCxPQUFPO0FBQUEsRUFDTCxVQUFVO0FBQUEsT0FDTDtBQUNQLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxrQkFBa0IsVUFBVSw0QkFBNEI7QUFDL0QsT0FBTyxxQkFBcUI7QUFDNUIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxrQkFBa0I7QUFDekIsT0FBTyxZQUFZO0FBQ25CLE9BQU8sc0JBQXNCO0FBQzdCLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8seUNBQXlDO0FBQ2hELE9BQU8seUJBQXlCO0FBRWhDLElBQU0sUUFBc0Q7QUFBQSxFQUMxRCxxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixXQUFXO0FBQUEsRUFDWCx5QkFBeUI7QUFBQSxFQUN6QixrQkFBa0I7QUFBQSxFQUNsQixzQkFBc0I7QUFBQSxFQUN0Qiw4QkFBOEI7QUFBQSxFQUM5QiwyQ0FBMkM7QUFBQSxFQUMzQywyQkFBMkI7QUFBQSxFQUMzQixDQUFDLDBCQUEwQixHQUFHO0FBQUEsRUFDOUIsQ0FBQyw2QkFBNkIsR0FBRztBQUFBLEVBQ2pDLENBQUMsZUFBZSxHQUFHO0FBQUEsRUFDbkIsQ0FBQyxlQUFlLEdBQUc7QUFBQSxFQUNuQixDQUFDLHNCQUFzQixHQUFHO0FBQUEsRUFDMUIsQ0FBQyxrQkFBa0IsR0FBRztBQUFBLEVBQ3RCLENBQUMsMkJBQTJCLEdBQUc7QUFBQSxFQUMvQixDQUFDLCtCQUErQixHQUFHO0FBQUEsRUFDbkMsQ0FBQyxrQkFBa0IsR0FBRztBQUFBLEVBQ3RCLENBQUMsb0JBQW9CLEdBQUc7QUFBQSxFQUN4QixDQUFDLHNCQUFzQixHQUFHO0FBQUEsRUFDMUIsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMseUJBQXlCLEdBQUc7QUFBQSxFQUM3QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsRUFDeEIsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMscUNBQXFDLEdBQUc7QUFBQSxFQUN6QyxDQUFDLCtCQUErQixHQUFHO0FBQUEsRUFDbkMsQ0FBQyw4QkFBOEIsR0FBRztBQUFBLEVBQ2xDLENBQUMscUJBQXFCLEdBQUc7QUFBQSxFQUN6QixDQUFDLDhCQUE4QixHQUFHO0FBQUEsRUFDbEMsQ0FBQyxxQkFBcUIsR0FBRztBQUMzQjtBQUVBLElBQU0sU0FBcUM7QUFBQSxFQUN6QztBQUNGO0FBRUEsSUFBTSxVQUFxRjtBQUFBLEVBQ3pGLEtBQUs7QUFBQSxJQUNIO0FBQUEsTUFDRSxPQUFPLENBQUMsU0FBUztBQUFBLE1BQ2pCLFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsK0JBQStCO0FBQUEsUUFDL0IsaUNBQWlDO0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsUUFDdkIscUNBQXFDO0FBQUEsUUFDckMsa0NBQWtDO0FBQUEsUUFDbEMsMENBQTBDO0FBQUEsUUFDMUMsdURBQXVEO0FBQUEsUUFDdkQsdUNBQXVDO0FBQUEsUUFDdkMsOEJBQThCO0FBQUEsUUFDOUIsQ0FBQyxlQUFlLDBCQUEwQixFQUFFLEdBQUc7QUFBQSxRQUMvQyxDQUFDLGVBQWUsNkJBQTZCLEVBQUUsR0FBRztBQUFBLFFBQ2xELENBQUMsZUFBZSxvQkFBb0IsRUFBRSxHQUFHO0FBQUEsUUFDekMsQ0FBQyxlQUFlLGdDQUFnQyxFQUFFLEdBQUc7QUFBQSxRQUNyRCxDQUFDLGVBQWUseUJBQXlCLEVBQUUsR0FBRztBQUFBLFFBQzlDLENBQUMsZUFBZSxnQ0FBZ0MsRUFBRSxHQUFHO0FBQUEsUUFDckQsQ0FBQyxlQUFlLHFDQUFxQyxFQUFFLEdBQUc7QUFBQSxRQUMxRCxDQUFDLGVBQWUsb0JBQW9CLEVBQUUsR0FBRztBQUFBO0FBQUEsUUFFekMsQ0FBQyxlQUFlLHNCQUFzQixFQUFFLEdBQUc7QUFBQSxRQUMzQyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsR0FBRztBQUFBLFFBQ3ZDLENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLGVBQWUsRUFBRSxHQUFHO0FBQUEsUUFDcEMsQ0FBQyxlQUFlLCtCQUErQixFQUFFLEdBQUc7QUFBQSxRQUNwRCxDQUFDLGVBQWUsOEJBQThCLEVBQUUsR0FBRztBQUFBLFFBQ25ELENBQUMsZUFBZSxxQkFBcUIsRUFBRSxHQUFHO0FBQUEsUUFDMUMsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxRQUNuRCxDQUFDLGVBQWUscUJBQXFCLEVBQUUsR0FBRztBQUFBO0FBQUEsTUFFNUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsYUFBYTtBQUFBLElBQ1g7QUFBQSxNQUNFLE9BQU8sQ0FBQyxTQUFTO0FBQUEsTUFDakIsU0FBUztBQUFBLFFBQ1AsZUFBZTtBQUFBLE1BQ2pCO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxRQUN2Qyw4QkFBOEI7QUFBQSxRQUM5QixDQUFDLGVBQWUsMEJBQTBCLEVBQUUsR0FBRztBQUFBLFFBQy9DLENBQUMsZUFBZSw2QkFBNkIsRUFBRSxHQUFHO0FBQUEsTUFDcEQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0Esc0JBQXNCO0FBQUEsSUFDcEI7QUFBQSxNQUNFLE9BQU8sQ0FBQyxnQkFBZ0IsZ0JBQWdCLHFCQUFxQjtBQUFBLE1BQzdELFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsQ0FBQyxlQUFlLHNCQUFzQixFQUFFLEdBQUc7QUFBQSxRQUMzQyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsR0FBRztBQUFBLFFBQ3ZDLENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLGVBQWUsRUFBRSxHQUFHO0FBQUEsUUFDcEMsQ0FBQyxlQUFlLCtCQUErQixFQUFFLEdBQUc7QUFBQSxRQUNwRCxDQUFDLGVBQWUsOEJBQThCLEVBQUUsR0FBRztBQUFBLFFBQ25ELENBQUMsZUFBZSxxQkFBcUIsRUFBRSxHQUFHO0FBQUEsUUFDMUMsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxNQUNyRDtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxPQUFPLENBQUMsY0FBYztBQUFBLE1BQ3RCLFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsQ0FBQyxlQUFlLHFCQUFxQixFQUFFLEdBQUc7QUFBQSxNQUM1QztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSw0QkFBNEI7QUFBQSxJQUMxQjtBQUFBLE1BQ0UsT0FBTyxDQUFDLFNBQVM7QUFBQSxNQUNqQixTQUFTO0FBQUEsUUFDUCxlQUFlO0FBQUEsTUFDakI7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUNwQyxDQUFDLGVBQWUsc0JBQXNCLEVBQUUsR0FBRztBQUFBLFFBQzNDLENBQUMsZUFBZSxrQkFBa0IsRUFBRSxHQUFHO0FBQUEsUUFDdkMsQ0FBQyxlQUFlLDJCQUEyQixFQUFFLEdBQUc7QUFBQSxRQUNoRCxDQUFDLGVBQWUsK0JBQStCLEVBQUUsR0FBRztBQUFBLFFBQ3BELENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxRQUNuRCxDQUFDLGVBQWUscUJBQXFCLEVBQUUsR0FBRztBQUFBLFFBQzFDLENBQUMsZUFBZSw4QkFBOEIsRUFBRSxHQUFHO0FBQUEsTUFDckQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRUEsSUFBTSxrQkFFRjtBQUFBLEVBQ0YsR0FBRztBQUFBLEVBQ0g7QUFDRjtBQUNBLElBQU8sY0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
209
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVVBLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU8sbUJBQW1CLFVBQVUsNkJBQTZCO0FBQ2pFLE9BQU8seUJBQXlCLFVBQVUsbUNBQW1DO0FBQzdFLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyx3QkFBd0IsVUFBVSxrQ0FBa0M7QUFDM0UsT0FBTyx1QkFBdUIsVUFBVSxpQ0FBaUM7QUFDekUsT0FBTyxhQUFhLFVBQVUsdUJBQXVCO0FBQ3JELE9BQU8sa0JBQWtCLFVBQVUsNEJBQTRCO0FBQy9ELE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU8sb0JBQW9CLFVBQVUsOEJBQThCO0FBQ25FLE9BQU8sZ0JBQWdCLFVBQVUsMEJBQTBCO0FBQzNELE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxtQkFBbUIsVUFBVSw2QkFBNkI7QUFDakUsT0FBTyw0QkFBNEIsVUFBVSxzQ0FBc0M7QUFDbkYsT0FBTztBQUFBLEVBQ0wsVUFBVTtBQUFBLE9BQ0w7QUFDUCxPQUFPO0FBQUEsRUFDTCxVQUFVO0FBQUEsT0FDTDtBQUNQLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTyxrQkFBa0IsVUFBVSw0QkFBNEI7QUFDL0QsT0FBTyxxQkFBcUI7QUFDNUIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxrQkFBa0I7QUFDekIsT0FBTyxZQUFZO0FBQ25CLE9BQU8sc0JBQXNCO0FBQzdCLE9BQU8sMkJBQTJCO0FBQ2xDLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8seUNBQXlDO0FBQ2hELE9BQU8seUJBQXlCO0FBRWhDLElBQU0sUUFBc0Q7QUFBQSxFQUMxRCxxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixXQUFXO0FBQUEsRUFDWCx5QkFBeUI7QUFBQSxFQUN6QixrQkFBa0I7QUFBQSxFQUNsQixzQkFBc0I7QUFBQSxFQUN0Qiw4QkFBOEI7QUFBQSxFQUM5QiwyQ0FBMkM7QUFBQSxFQUMzQywyQkFBMkI7QUFBQSxFQUMzQixDQUFDLDBCQUEwQixHQUFHO0FBQUEsRUFDOUIsQ0FBQyw2QkFBNkIsR0FBRztBQUFBLEVBQ2pDLENBQUMsZUFBZSxHQUFHO0FBQUEsRUFDbkIsQ0FBQyxlQUFlLEdBQUc7QUFBQSxFQUNuQixDQUFDLHNCQUFzQixHQUFHO0FBQUEsRUFDMUIsQ0FBQyxrQkFBa0IsR0FBRztBQUFBLEVBQ3RCLENBQUMsMkJBQTJCLEdBQUc7QUFBQSxFQUMvQixDQUFDLCtCQUErQixHQUFHO0FBQUEsRUFDbkMsQ0FBQyxrQkFBa0IsR0FBRztBQUFBLEVBQ3RCLENBQUMsb0JBQW9CLEdBQUc7QUFBQSxFQUN4QixDQUFDLHNCQUFzQixHQUFHO0FBQUEsRUFDMUIsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMseUJBQXlCLEdBQUc7QUFBQSxFQUM3QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsRUFDeEIsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMscUNBQXFDLEdBQUc7QUFBQSxFQUN6QyxDQUFDLCtCQUErQixHQUFHO0FBQUEsRUFDbkMsQ0FBQyw4QkFBOEIsR0FBRztBQUFBLEVBQ2xDLENBQUMscUJBQXFCLEdBQUc7QUFBQSxFQUN6QixDQUFDLDhCQUE4QixHQUFHO0FBQUEsRUFDbEMsQ0FBQyxxQkFBcUIsR0FBRztBQUMzQjtBQUVBLElBQU0sU0FBcUM7QUFBQSxFQUN6QztBQUNGO0FBRUEsSUFBTSxVQUFxRjtBQUFBLEVBQ3pGLEtBQUs7QUFBQSxJQUNIO0FBQUEsTUFDRSxPQUFPLENBQUMsU0FBUztBQUFBLE1BQ2pCLFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsK0JBQStCO0FBQUEsUUFDL0IsaUNBQWlDO0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsUUFDdkIscUNBQXFDO0FBQUEsUUFDckMsa0NBQWtDO0FBQUEsUUFDbEMsMENBQTBDO0FBQUEsUUFDMUMsdURBQXVEO0FBQUEsUUFDdkQsdUNBQXVDO0FBQUEsUUFDdkMsOEJBQThCO0FBQUEsUUFDOUIsQ0FBQyxlQUFlLDBCQUEwQixFQUFFLEdBQUc7QUFBQSxRQUMvQyxDQUFDLGVBQWUsNkJBQTZCLEVBQUUsR0FBRztBQUFBLFFBQ2xELENBQUMsZUFBZSxvQkFBb0IsRUFBRSxHQUFHO0FBQUEsUUFDekMsQ0FBQyxlQUFlLGdDQUFnQyxFQUFFLEdBQUc7QUFBQSxRQUNyRCxDQUFDLGVBQWUseUJBQXlCLEVBQUUsR0FBRztBQUFBLFFBQzlDLENBQUMsZUFBZSxnQ0FBZ0MsRUFBRSxHQUFHO0FBQUEsUUFDckQsQ0FBQyxlQUFlLHFDQUFxQyxFQUFFLEdBQUc7QUFBQSxRQUMxRCxDQUFDLGVBQWUsb0JBQW9CLEVBQUUsR0FBRztBQUFBO0FBQUEsUUFFekMsQ0FBQyxlQUFlLHNCQUFzQixFQUFFLEdBQUc7QUFBQSxRQUMzQyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsR0FBRztBQUFBLFFBQ3ZDLENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLGVBQWUsRUFBRSxHQUFHO0FBQUEsUUFDcEMsQ0FBQyxlQUFlLCtCQUErQixFQUFFLEdBQUc7QUFBQSxRQUNwRCxDQUFDLGVBQWUsOEJBQThCLEVBQUUsR0FBRztBQUFBLFFBQ25ELENBQUMsZUFBZSxxQkFBcUIsRUFBRSxHQUFHO0FBQUEsUUFDMUMsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxRQUNuRCxDQUFDLGVBQWUscUJBQXFCLEVBQUUsR0FBRztBQUFBO0FBQUEsTUFFNUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsYUFBYTtBQUFBLElBQ1g7QUFBQSxNQUNFLE9BQU8sQ0FBQyxTQUFTO0FBQUEsTUFDakIsU0FBUztBQUFBLFFBQ1AsZUFBZTtBQUFBLE1BQ2pCO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxRQUN2Qyw4QkFBOEI7QUFBQSxRQUM5QixDQUFDLGVBQWUsMEJBQTBCLEVBQUUsR0FBRztBQUFBLFFBQy9DLENBQUMsZUFBZSw2QkFBNkIsRUFBRSxHQUFHO0FBQUEsTUFDcEQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0Esc0JBQXNCO0FBQUEsSUFDcEI7QUFBQSxNQUNFLE9BQU8sQ0FBQyxnQkFBZ0IsZ0JBQWdCLHFCQUFxQjtBQUFBO0FBQUEsTUFFN0QsU0FBUyxDQUFDLGVBQWU7QUFBQSxNQUN6QixTQUFTO0FBQUEsUUFDUCxlQUFlO0FBQUEsTUFDakI7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUNwQyxDQUFDLGVBQWUsc0JBQXNCLEVBQUUsR0FBRztBQUFBLFFBQzNDLENBQUMsZUFBZSxrQkFBa0IsRUFBRSxHQUFHO0FBQUEsUUFDdkMsQ0FBQyxlQUFlLDJCQUEyQixFQUFFLEdBQUc7QUFBQSxRQUNoRCxDQUFDLGVBQWUsK0JBQStCLEVBQUUsR0FBRztBQUFBLFFBQ3BELENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxRQUNuRCxDQUFDLGVBQWUscUJBQXFCLEVBQUUsR0FBRztBQUFBLFFBQzFDLENBQUMsZUFBZSw4QkFBOEIsRUFBRSxHQUFHO0FBQUEsTUFDckQ7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0UsT0FBTyxDQUFDLGNBQWM7QUFBQSxNQUN0QixTQUFTLENBQUMsZUFBZTtBQUFBLE1BQ3pCLFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsQ0FBQyxlQUFlLHFCQUFxQixFQUFFLEdBQUc7QUFBQSxNQUM1QztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSw0QkFBNEI7QUFBQSxJQUMxQjtBQUFBLE1BQ0UsT0FBTyxDQUFDLFNBQVM7QUFBQSxNQUNqQixTQUFTLENBQUMsZUFBZTtBQUFBLE1BQ3pCLFNBQVM7QUFBQSxRQUNQLGVBQWU7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsQ0FBQyxlQUFlLHNCQUFzQixFQUFFLEdBQUc7QUFBQSxRQUMzQyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsR0FBRztBQUFBLFFBQ3ZDLENBQUMsZUFBZSxlQUFlLEVBQUUsR0FBRztBQUFBLFFBQ3BDLENBQUMsZUFBZSxzQkFBc0IsRUFBRSxHQUFHO0FBQUEsUUFDM0MsQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEdBQUc7QUFBQSxRQUN2QyxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSwrQkFBK0IsRUFBRSxHQUFHO0FBQUEsUUFDcEQsQ0FBQyxlQUFlLGVBQWUsRUFBRSxHQUFHO0FBQUEsUUFDcEMsQ0FBQyxlQUFlLCtCQUErQixFQUFFLEdBQUc7QUFBQSxRQUNwRCxDQUFDLGVBQWUsOEJBQThCLEVBQUUsR0FBRztBQUFBLFFBQ25ELENBQUMsZUFBZSxxQkFBcUIsRUFBRSxHQUFHO0FBQUEsUUFDMUMsQ0FBQyxlQUFlLDhCQUE4QixFQUFFLEdBQUc7QUFBQSxNQUNyRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLGtCQUVGO0FBQUEsRUFDRixHQUFHO0FBQUEsRUFDSDtBQUNGO0FBQ0EsSUFBTyxjQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-0187","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-428c","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"}}
@@ -7,14 +7,24 @@
7
7
  */
8
8
 
9
9
  import { strict as assert } from 'node:assert';
10
+
10
11
  import { AST_TOKEN_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
11
12
  import type { RuleFix, RuleFixer } from '@typescript-eslint/utils/ts-eslint';
13
+
12
14
  import getDocumentationUrl from '../get-documentation-url';
13
15
 
14
16
  export const ruleId = 'agent-test-wiring';
15
17
 
16
18
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
17
19
 
20
+ const STATEMENT_FIXTURE_RESET = 'fixture.reset()';
21
+ const STATEMENT_FIXTURE_RESET_AWAITED = `await ${STATEMENT_FIXTURE_RESET};`;
22
+ const STATEMENT_AGENT_DECLARATION = 'let agent: Agent;';
23
+ const STATEMENT_AGENT_CREATION = 'agent = await createAgent();';
24
+ const STATEMENT_AGENT_REGISTER = 'agent.register(await fixturePlugin(fixture));';
25
+ const STATEMENT_AGENT_ENABLE = 'agent.enable();';
26
+ const STATEMENT_AGENT_DISPOSE = 'await agent[Symbol.asyncDispose]();';
27
+
18
28
  const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = createRule({
19
29
  name: ruleId,
20
30
  meta: {
@@ -33,21 +43,37 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
33
43
  create(context) {
34
44
  const sourceCode = context.sourceCode;
35
45
  const importDeclarations = new Map<string, TSESTree.ImportDeclaration>();
36
- let beforeAllCallExpression: TSESTree.CallExpression | undefined;
37
- let afterAllCallExpression: TSESTree.CallExpression | undefined;
46
+ let isFixtureUsed = false;
47
+ let beforeAll: TSESTree.CallExpression | undefined;
48
+ let afterAll: TSESTree.CallExpression | undefined;
38
49
 
39
50
  return {
40
51
  ImportDeclaration(importDeclaration) {
41
52
  const moduleName = importDeclaration.source.value;
42
53
  importDeclarations.set(moduleName, importDeclaration);
54
+ if (
55
+ moduleName === '@checkdigit/fixture' &&
56
+ importDeclaration.specifiers.some(
57
+ (specifier) =>
58
+ specifier.type === TSESTree.AST_NODE_TYPES.ImportSpecifier &&
59
+ specifier.imported.type === TSESTree.AST_NODE_TYPES.Identifier &&
60
+ specifier.imported.name === 'createFixture',
61
+ )
62
+ ) {
63
+ isFixtureUsed = true;
64
+ }
43
65
  },
44
66
  'CallExpression[callee.name="beforeAll"]': (callExpression: TSESTree.CallExpression) => {
45
- beforeAllCallExpression = callExpression;
67
+ beforeAll = callExpression;
46
68
  },
47
69
  'CallExpression[callee.name="afterAll"]': (callExpression: TSESTree.CallExpression) => {
48
- afterAllCallExpression = callExpression;
70
+ afterAll = callExpression;
49
71
  },
50
72
  'Program:exit'(program) {
73
+ if (!isFixtureUsed) {
74
+ return;
75
+ }
76
+
51
77
  try {
52
78
  let jestImportFixer: ((fixer: RuleFixer) => RuleFix) | undefined;
53
79
  let agentImportFixer: ((fixer: RuleFixer) => RuleFix) | undefined;
@@ -89,40 +115,50 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
89
115
  fixer.insertTextAfter(lastImportDeclaration, `\nimport fixturePlugin from '../../plugin/fixture.test';`);
90
116
  }
91
117
 
92
- if (beforeAllCallExpression !== undefined) {
93
- const beforeAllArrowFunctionExpression = beforeAllCallExpression.arguments[0];
94
- assert.ok(
95
- beforeAllArrowFunctionExpression !== undefined &&
96
- beforeAllArrowFunctionExpression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression,
97
- );
98
- const arrowFunctionBody = beforeAllArrowFunctionExpression.body;
99
- assert.ok(arrowFunctionBody.type === TSESTree.AST_NODE_TYPES.BlockStatement);
100
-
101
- const targetStatement = arrowFunctionBody.body.find(
102
- (statement) => sourceCode.getText(statement) === 'await fixture.reset();',
103
- );
104
- if (targetStatement !== undefined) {
105
- const beforeAllBodyText = sourceCode.getText(arrowFunctionBody);
106
- if (!beforeAllBodyText.includes('agent = await createAgent();')) {
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,
128
+ );
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 {
107
141
  beforeAllFixer = (fixer: RuleFixer) =>
108
142
  fixer.replaceText(
109
- targetStatement,
143
+ beforeAllArgument,
110
144
  [
111
- 'agent = await createAgent();',
112
- 'agent.register(await fixturePlugin(fixture));',
113
- 'agent.enable();',
114
- 'await fixture.reset();',
145
+ `async () => {`,
146
+ STATEMENT_AGENT_CREATION,
147
+ STATEMENT_AGENT_REGISTER,
148
+ STATEMENT_AGENT_ENABLE,
149
+ STATEMENT_FIXTURE_RESET_AWAITED,
150
+ `}`,
115
151
  ].join('\n'),
116
152
  );
117
- agentDeclarationFixer = (fixer: RuleFixer) =>
118
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
119
- fixer.insertTextBefore(beforeAllCallExpression!, 'let agent: Agent;\n');
120
153
  }
154
+ agentDeclarationFixer = (fixer: RuleFixer) =>
155
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
156
+ fixer.insertTextBefore(beforeAll!, `${STATEMENT_AGENT_DECLARATION}\n`);
121
157
  }
122
158
  }
123
159
 
124
- if (afterAllCallExpression !== undefined) {
125
- const afterAllArrowFunctionExpression = afterAllCallExpression.arguments[0];
160
+ if (afterAll !== undefined) {
161
+ const afterAllArrowFunctionExpression = afterAll.arguments[0];
126
162
  assert.ok(
127
163
  afterAllArrowFunctionExpression !== undefined &&
128
164
  afterAllArrowFunctionExpression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression,
@@ -131,23 +167,20 @@ const rule: ESLintUtils.RuleModule<'updateTestWiring' | 'unknownError'> = create
131
167
  assert.ok(arrowFunctionBody.type === TSESTree.AST_NODE_TYPES.BlockStatement);
132
168
 
133
169
  const afterAllBodyText = sourceCode.getText(arrowFunctionBody);
134
- if (!afterAllBodyText.includes('await agent[Symbol.asyncDispose]();')) {
170
+ if (!afterAllBodyText.includes(STATEMENT_AGENT_DISPOSE)) {
135
171
  const lastStatement = arrowFunctionBody.body.at(-1);
136
172
  assert.ok(lastStatement);
137
- afterAllFixer = (fixer: RuleFixer) =>
138
- fixer.insertTextAfter(lastStatement, 'await agent[Symbol.asyncDispose]();');
173
+ afterAllFixer = (fixer: RuleFixer) => fixer.insertTextAfter(lastStatement, STATEMENT_AGENT_DISPOSE);
139
174
  }
140
- } else if (beforeAllCallExpression !== undefined) {
141
- const nextToken = sourceCode.getTokenAfter(beforeAllCallExpression);
175
+ } else if (beforeAll !== undefined) {
176
+ const nextToken = sourceCode.getTokenAfter(beforeAll);
142
177
  afterAllFixer = (fixer: RuleFixer) =>
143
178
  fixer.insertTextAfter(
144
179
  nextToken !== null && nextToken.type === AST_TOKEN_TYPES.Punctuator
145
180
  ? nextToken
146
181
  : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
147
- beforeAllCallExpression!,
148
- `\nafterAll(async () => {
149
- await agent[Symbol.asyncDispose]();
150
- });`,
182
+ beforeAll!,
183
+ ['', `afterAll(async () => {`, STATEMENT_AGENT_DISPOSE, `});`].join('\n'),
151
184
  );
152
185
  }
153
186
 
package/src/index.ts CHANGED
@@ -155,6 +155,8 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
155
155
  'agent-phase-1-test': [
156
156
  {
157
157
  files: ['**/*.spec.ts', '**/*.test.ts', 'src/api/v*/index.ts'],
158
+ // eslint-disable-next-line sonarjs/no-duplicate-string
159
+ ignores: ['src/plugin/**'],
158
160
  plugins: {
159
161
  '@checkdigit': plugin,
160
162
  },
@@ -175,6 +177,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
175
177
  },
176
178
  {
177
179
  files: ['**/*.spec.ts'],
180
+ ignores: ['src/plugin/**'],
178
181
  plugins: {
179
182
  '@checkdigit': plugin,
180
183
  },
@@ -186,6 +189,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
186
189
  'agent-phase-2-production': [
187
190
  {
188
191
  files: ['**/*.ts'],
192
+ ignores: ['src/plugin/**'],
189
193
  plugins: {
190
194
  '@checkdigit': plugin,
191
195
  },