@checkdigit/eslint-plugin 6.3.0-PR.66-f16c → 6.3.0-PR.66-5c1c

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.
@@ -228,24 +228,20 @@ var no_card_numbers_default = {
228
228
  };
229
229
 
230
230
  // src/no-side-effects.ts
231
- var EXCLUDED_IDENTIFIERS = ["assert", "debug", "log"];
232
- function isTestFile(fileName) {
233
- return fileName.endsWith("spec.ts") || fileName.endsWith("test.ts") || fileName.endsWith("test.js");
234
- }
235
231
  function isAwaitExpression(statement) {
236
232
  return statement.type === "ExpressionStatement" && statement.expression.type === "AwaitExpression";
237
233
  }
238
234
  function isCallExpressionCalleeMemberExpression(statement) {
239
235
  return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "MemberExpression" && statement.expression.callee.object.type === "Identifier" && statement.expression.callee.object.name !== "assert";
240
236
  }
241
- function isCallExpressionCalleeIdentifier(statement) {
242
- return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "Identifier" && !EXCLUDED_IDENTIFIERS.includes(statement.expression.callee.name);
237
+ function isCallExpressionCalleeIdentifier(statement, excludedIdentifiers) {
238
+ return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "Identifier" && !excludedIdentifiers.includes(statement.expression.callee.name);
243
239
  }
244
240
  function isVariableDeclarationAwaitExpression(statement) {
245
241
  return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "AwaitExpression";
246
242
  }
247
- function isVariableDeclarationIdentifier(statement) {
248
- return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "Identifier" && !EXCLUDED_IDENTIFIERS.includes(statement.declarations[0].init.callee.name);
243
+ function isVariableDeclarationIdentifier(statement, excludedIdentifiers) {
244
+ return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "Identifier" && !excludedIdentifiers.includes(statement.declarations[0].init.callee.name);
249
245
  }
250
246
  function isVariableDeclarationMemberExpression(statement) {
251
247
  return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "MemberExpression" && (statement.declarations[0].init.callee.object.type === "NewExpression" && statement.declarations[0].init.callee.object.callee.type === "Identifier" || statement.declarations[0].init.callee.object.type === "Identifier");
@@ -256,17 +252,27 @@ var no_side_effects_default = {
256
252
  docs: {
257
253
  description: "Ensure no side effects can occur at the main module-level",
258
254
  url: "https://github.com/checkdigit/eslint-plugin"
259
- }
255
+ },
256
+ schema: [
257
+ {
258
+ type: "object",
259
+ properties: {
260
+ excludedIdentifiers: {
261
+ type: "array",
262
+ items: { type: "string" }
263
+ }
264
+ },
265
+ additionalProperties: false
266
+ }
267
+ ]
260
268
  },
261
269
  create(context) {
270
+ const options = context.options[0] ?? {};
271
+ const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
262
272
  return {
263
273
  Program(node) {
264
- const fileName = context.filename.split("src/")[1] ?? context.filename;
265
- if (isTestFile(fileName)) {
266
- return;
267
- }
268
274
  node.body.forEach((statement) => {
269
- if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement) || isCallExpressionCalleeIdentifier(statement) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement) || isVariableDeclarationMemberExpression(statement)) {
275
+ if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement) || isCallExpressionCalleeIdentifier(statement, excludedIdentifiers) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement, excludedIdentifiers) || isVariableDeclarationMemberExpression(statement)) {
270
276
  context.report({
271
277
  node: statement,
272
278
  message: "No side effects can occur at the main module-level"
@@ -707,7 +713,7 @@ var src_default = {
707
713
  "@checkdigit/no-uuid": "error",
708
714
  "@checkdigit/require-strict-assert": "error",
709
715
  "@checkdigit/no-wallaby-comment": "error",
710
- "@checkdigit/no-side-effects": "error",
716
+ "@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log"] }],
711
717
  "@checkdigit/regular-expression-comment": "error",
712
718
  "@checkdigit/require-assert-predicate-rejects-throws": "error",
713
719
  "@checkdigit/object-literal-response": "error"
@@ -728,5 +734,5 @@ var src_default = {
728
734
  }
729
735
  }
730
736
  };
731
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby1zaWRlLWVmZmVjdHMudHMiLCAiLi4vc3JjL25vLXV1aWQudHMiLCAiLi4vc3JjL25vLXdhbGxhYnktY29tbWVudC50cyIsICIuLi9zcmMvb2JqZWN0LWxpdGVyYWwtcmVzcG9uc2UudHMiLCAiLi4vc3JjL3JlZ3VsYXItZXhwcmVzc2lvbi1jb21tZW50LnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1wcmVkaWNhdGUtcmVqZWN0cy10aHJvd3MudHMiLCAiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDVUEsSUFBTyw0QkFBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxVQUFNLFlBQVksUUFBUSxXQUFXLFNBQVMsRUFBRSxDQUFDO0FBQ2pELFVBQU0sZUFBZSxRQUFRLFNBQVMsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUVyRCxRQUFJLGNBQWMsVUFBYSxpQkFBaUIsUUFBVztBQUN6RCxhQUFPLENBQUM7QUFBQSxJQUNWO0FBRUEsUUFBSSxDQUFDLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDL0IsVUFBSSxVQUFVLFdBQVcsSUFBSSxHQUFHO0FBQzlCLGdCQUFRLE9BQU87QUFBQSxVQUNiLEtBQUs7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsWUFDQSxLQUFLO0FBQUEsY0FDSCxNQUFNO0FBQUEs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
737
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby1zaWRlLWVmZmVjdHMudHMiLCAiLi4vc3JjL25vLXV1aWQudHMiLCAiLi4vc3JjL25vLXdhbGxhYnktY29tbWVudC50cyIsICIuLi9zcmMvb2JqZWN0LWxpdGVyYWwtcmVzcG9uc2UudHMiLCAiLi4vc3JjL3JlZ3VsYXItZXhwcmVzc2lvbi1jb21tZW50LnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1wcmVkaWNhdGUtcmVqZWN0cy10aHJvd3MudHMiLCAiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDVUEsSUFBTyw0QkFBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxVQUFNLFlBQVksUUFBUSxXQUFXLFNBQVMsRUFBRSxDQUFDO0FBQ2pELFVBQU0sZUFBZSxRQUFRLFNBQVMsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUVyRCxRQUFJLGNBQWMsVUFBYSxpQkFBaUIsUUFBVztBQUN6RCxhQUFPLENBQUM7QUFBQSxJQUNWO0FBRUEsUUFBSSxDQUFDLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDL0IsVUFBSSxVQUFVLFdBQVcsSUFBSSxHQUFHO0FBQzlCLGdCQUFRLE9BQU87QUFBQSxVQUNiLEtBQUs7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsWUFDQSxLQUFLO0FBQUEsY0FDSCxNQUFNO0FBQUEs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
732
738
  module.exports = module.exports.default;
@@ -11,7 +11,7 @@
11
11
  "format": "esm"
12
12
  },
13
13
  "src/no-side-effects.ts": {
14
- "bytes": 4163,
14
+ "bytes": 4396,
15
15
  "imports": [],
16
16
  "format": "esm"
17
17
  },
@@ -46,7 +46,7 @@
46
46
  "format": "esm"
47
47
  },
48
48
  "src/index.ts": {
49
- "bytes": 2168,
49
+ "bytes": 2223,
50
50
  "imports": [
51
51
  {
52
52
  "path": "src/file-path-comment.ts",
@@ -104,7 +104,7 @@
104
104
  "entryPoint": "src/index.ts",
105
105
  "inputs": {
106
106
  "src/index.ts": {
107
- "bytesInOutput": 1741
107
+ "bytesInOutput": 1796
108
108
  },
109
109
  "src/file-path-comment.ts": {
110
110
  "bytesInOutput": 1961
@@ -113,7 +113,7 @@
113
113
  "bytesInOutput": 3356
114
114
  },
115
115
  "src/no-side-effects.ts": {
116
- "bytesInOutput": 3526
116
+ "bytesInOutput": 3665
117
117
  },
118
118
  "src/no-uuid.ts": {
119
119
  "bytesInOutput": 2251
@@ -134,7 +134,7 @@
134
134
  "bytesInOutput": 3362
135
135
  }
136
136
  },
137
- "bytes": 48674
137
+ "bytes": 49036
138
138
  }
139
139
  }
140
140
  }
@@ -28,7 +28,7 @@ var src_default = {
28
28
  "@checkdigit/no-uuid": "error",
29
29
  "@checkdigit/require-strict-assert": "error",
30
30
  "@checkdigit/no-wallaby-comment": "error",
31
- "@checkdigit/no-side-effects": "error",
31
+ "@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log"] }],
32
32
  "@checkdigit/regular-expression-comment": "error",
33
33
  "@checkdigit/require-assert-predicate-rejects-throws": "error",
34
34
  "@checkdigit/object-literal-response": "error"
@@ -52,4 +52,4 @@ var src_default = {
52
52
  export {
53
53
  src_default as default
54
54
  };
55
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sWUFBWTtBQUNuQixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLGtCQUFrQjtBQUN6QixPQUFPLHlDQUF5QztBQUNoRCxPQUFPLHlCQUF5QjtBQUVoQyxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHlCQUF5QjtBQUFBLElBQ3pCLHNCQUFzQjtBQUFBLElBQ3RCLG1CQUFtQjtBQUFBLElBQ25CLDhCQUE4QjtBQUFBLElBQzlCLDJDQUEyQztBQUFBLElBQzNDLDJCQUEyQjtBQUFBLEVBQzdCO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywrQkFBK0I7QUFBQSxRQUMvQiwwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxNQUN6QztBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLCtCQUErQjtBQUFBLFFBQy9CLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLE1BQ3pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
55
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sWUFBWTtBQUNuQixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLGtCQUFrQjtBQUN6QixPQUFPLHlDQUF5QztBQUNoRCxPQUFPLHlCQUF5QjtBQUVoQyxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHlCQUF5QjtBQUFBLElBQ3pCLHNCQUFzQjtBQUFBLElBQ3RCLG1CQUFtQjtBQUFBLElBQ25CLDhCQUE4QjtBQUFBLElBQzlCLDJDQUEyQztBQUFBLElBQzNDLDJCQUEyQjtBQUFBLEVBQzdCO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywrQkFBK0IsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsVUFBVSxTQUFTLEtBQUssRUFBRSxDQUFDO0FBQUEsUUFDNUYsMENBQTBDO0FBQUEsUUFDMUMsdURBQXVEO0FBQUEsUUFDdkQsdUNBQXVDO0FBQUEsTUFDekM7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQyxrQ0FBa0M7QUFBQSxRQUNsQywrQkFBK0I7QUFBQSxRQUMvQiwwQ0FBMEM7QUFBQSxRQUMxQyx1REFBdUQ7QUFBQSxRQUN2RCx1Q0FBdUM7QUFBQSxNQUN6QztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,22 +1,18 @@
1
1
  // src/no-side-effects.ts
2
- var EXCLUDED_IDENTIFIERS = ["assert", "debug", "log"];
3
- function isTestFile(fileName) {
4
- return fileName.endsWith("spec.ts") || fileName.endsWith("test.ts") || fileName.endsWith("test.js");
5
- }
6
2
  function isAwaitExpression(statement) {
7
3
  return statement.type === "ExpressionStatement" && statement.expression.type === "AwaitExpression";
8
4
  }
9
5
  function isCallExpressionCalleeMemberExpression(statement) {
10
6
  return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "MemberExpression" && statement.expression.callee.object.type === "Identifier" && statement.expression.callee.object.name !== "assert";
11
7
  }
12
- function isCallExpressionCalleeIdentifier(statement) {
13
- return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "Identifier" && !EXCLUDED_IDENTIFIERS.includes(statement.expression.callee.name);
8
+ function isCallExpressionCalleeIdentifier(statement, excludedIdentifiers) {
9
+ return statement.type === "ExpressionStatement" && statement.expression.type === "CallExpression" && statement.expression.callee.type === "Identifier" && !excludedIdentifiers.includes(statement.expression.callee.name);
14
10
  }
15
11
  function isVariableDeclarationAwaitExpression(statement) {
16
12
  return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "AwaitExpression";
17
13
  }
18
- function isVariableDeclarationIdentifier(statement) {
19
- return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "Identifier" && !EXCLUDED_IDENTIFIERS.includes(statement.declarations[0].init.callee.name);
14
+ function isVariableDeclarationIdentifier(statement, excludedIdentifiers) {
15
+ return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "Identifier" && !excludedIdentifiers.includes(statement.declarations[0].init.callee.name);
20
16
  }
21
17
  function isVariableDeclarationMemberExpression(statement) {
22
18
  return statement.type === "VariableDeclaration" && statement.declarations.length > 0 && statement.declarations[0]?.id !== void 0 && statement.declarations[0].id.type === "Identifier" && statement.declarations[0].init !== void 0 && statement.declarations[0].init !== null && statement.declarations[0].init.type === "CallExpression" && statement.declarations[0].init.callee.type === "MemberExpression" && (statement.declarations[0].init.callee.object.type === "NewExpression" && statement.declarations[0].init.callee.object.callee.type === "Identifier" || statement.declarations[0].init.callee.object.type === "Identifier");
@@ -27,17 +23,27 @@ var no_side_effects_default = {
27
23
  docs: {
28
24
  description: "Ensure no side effects can occur at the main module-level",
29
25
  url: "https://github.com/checkdigit/eslint-plugin"
30
- }
26
+ },
27
+ schema: [
28
+ {
29
+ type: "object",
30
+ properties: {
31
+ excludedIdentifiers: {
32
+ type: "array",
33
+ items: { type: "string" }
34
+ }
35
+ },
36
+ additionalProperties: false
37
+ }
38
+ ]
31
39
  },
32
40
  create(context) {
41
+ const options = context.options[0] ?? {};
42
+ const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
33
43
  return {
34
44
  Program(node) {
35
- const fileName = context.filename.split("src/")[1] ?? context.filename;
36
- if (isTestFile(fileName)) {
37
- return;
38
- }
39
45
  node.body.forEach((statement) => {
40
- if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement) || isCallExpressionCalleeIdentifier(statement) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement) || isVariableDeclarationMemberExpression(statement)) {
46
+ if (isAwaitExpression(statement) || isCallExpressionCalleeMemberExpression(statement) || isCallExpressionCalleeIdentifier(statement, excludedIdentifiers) || isVariableDeclarationAwaitExpression(statement) || isVariableDeclarationIdentifier(statement, excludedIdentifiers) || isVariableDeclarationMemberExpression(statement)) {
41
47
  context.report({
42
48
  node: statement,
43
49
  message: "No side effects can occur at the main module-level"
@@ -51,4 +57,4 @@ var no_side_effects_default = {
51
57
  export {
52
58
  no_side_effects_default as default
53
59
  };
54
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNpZGUtZWZmZWN0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFXQSxJQUFNLHVCQUF1QixDQUFDLFVBQVUsU0FBUyxLQUFLO0FBRXRELFNBQVMsV0FBVyxVQUEyQjtBQUM3QyxTQUFPLFNBQVMsU0FBUyxTQUFTLEtBQUssU0FBUyxTQUFTLFNBQVMsS0FBSyxTQUFTLFNBQVMsU0FBUztBQUNwRztBQUVBLFNBQVMsa0JBQWtCLFdBQTBCO0FBQ25ELFNBQU8sVUFBVSxTQUFTLHlCQUF5QixVQUFVLFdBQVcsU0FBUztBQUNuRjtBQUVBLFNBQVMsdUNBQXVDLFdBQTBCO0FBQ3hFLFNBQ0UsVUFBVSxTQUFTLHlCQUNuQixVQUFVLFdBQVcsU0FBUyxvQkFDOUIsVUFBVSxXQUFXLE9BQU8sU0FBUyxzQkFDckMsVUFBVSxXQUFXLE9BQU8sT0FBTyxTQUFTLGdCQUM1QyxVQUFVLFdBQVcsT0FBTyxPQUFPLFNBQVM7QUFFaEQ7QUFFQSxTQUFTLGlDQUFpQyxXQUEwQjtBQUNsRSxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxXQUFXLFNBQVMsb0JBQzlCLFVBQVUsV0FBVyxPQUFPLFNBQVMsZ0JBQ3JDLENBQUMscUJBQXFCLFNBQVMsVUFBVSxXQUFXLE9BQU8sSUFBSTtBQUVuRTtBQUVBLFNBQVMscUNBQXFDLFdBQTBCO0FBQ3RFLFNBQ0UsVUFBVSxTQUFTLHlCQUNuQixVQUFVLGFBQWEsU0FBUyxLQUNoQyxVQUFVLGFBQWEsQ0FBQyxHQUFHLE9BQU8sVUFDbEMsVUFBVSxhQUFhLENBQUMsRUFBRSxHQUFHLFNBQVMsZ0JBQ3RDLFVBQVUsYUFBYSxDQUFDLEVBQUUsU0FBUyxVQUNuQyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsUUFDbkMsVUFBVSxhQUFhLENBQUMsRUFBRSxLQUFLLFNBQVM7QUFFNUM7QUFFQSxTQUFTLGdDQUFnQyxXQUEwQjtBQUNqRSxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxhQUFhLFNBQVMsS0FDaEMsVUFBVSxhQUFhLENBQUMsR0FBRyxPQUFPLFVBQ2xDLFVBQVUsYUFBYSxDQUFDLEVBQUUsR0FBRyxTQUFTLGdCQUN0QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsVUFDbkMsVUFBVSxhQUFhLENBQUMsRUFBRSxTQUFTLFFBQ25DLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLG9CQUN4QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxTQUFTLGdCQUMvQyxDQUFDLHFCQUFxQixTQUFTLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLElBQUk7QUFFN0U7QUFFQSxTQUFTLHNDQUFzQyxXQUEwQjtBQUN2RSxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxhQUFhLFNBQVMsS0FDaEMsVUFBVSxhQUFhLENBQUMsR0FBRyxPQUFPLFVBQ2xDLFVBQVUsYUFBYSxDQUFDLEVBQUUsR0FBRyxTQUFTLGdCQUN0QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsVUFDbkMsVUFBVSxhQUFhLENBQUMsRUFBRSxTQUFTLFFBQ25DLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLG9CQUN4QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxTQUFTLHVCQUM3QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVMsbUJBQ3RELFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLE9BQU8sT0FBTyxTQUFTLGdCQUM3RCxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVM7QUFFNUQ7QUFFQSxJQUFPLDBCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLGNBQU0sV0FBVyxRQUFRLFNBQVMsTUFBTSxNQUFNLEVBQUUsQ0FBQyxLQUFLLFFBQVE7QUFDOUQsWUFBSSxXQUFXLFFBQVEsR0FBRztBQUN4QjtBQUFBLFFBQ0Y7QUFDQSxhQUFLLEtBQUssUUFBUSxDQUFDLGNBQWM7QUFDL0IsY0FDRSxrQkFBa0IsU0FBUyxLQUMzQix1Q0FBdUMsU0FBUyxLQUNoRCxpQ0FBaUMsU0FBUyxLQUMxQyxxQ0FBcUMsU0FBUyxLQUM5QyxnQ0FBZ0MsU0FBUyxLQUN6QyxzQ0FBc0MsU0FBUyxHQUMvQztBQUNBLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU07QUFBQSxjQUNOLFNBQVM7QUFBQSxZQUNYLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
60
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNpZGUtZWZmZWN0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFlQSxTQUFTLGtCQUFrQixXQUEwQjtBQUNuRCxTQUFPLFVBQVUsU0FBUyx5QkFBeUIsVUFBVSxXQUFXLFNBQVM7QUFDbkY7QUFFQSxTQUFTLHVDQUF1QyxXQUEwQjtBQUN4RSxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxXQUFXLFNBQVMsb0JBQzlCLFVBQVUsV0FBVyxPQUFPLFNBQVMsc0JBQ3JDLFVBQVUsV0FBVyxPQUFPLE9BQU8sU0FBUyxnQkFDNUMsVUFBVSxXQUFXLE9BQU8sT0FBTyxTQUFTO0FBRWhEO0FBRUEsU0FBUyxpQ0FBaUMsV0FBaUIscUJBQXdDO0FBQ2pHLFNBQ0UsVUFBVSxTQUFTLHlCQUNuQixVQUFVLFdBQVcsU0FBUyxvQkFDOUIsVUFBVSxXQUFXLE9BQU8sU0FBUyxnQkFDckMsQ0FBQyxvQkFBb0IsU0FBUyxVQUFVLFdBQVcsT0FBTyxJQUFJO0FBRWxFO0FBRUEsU0FBUyxxQ0FBcUMsV0FBMEI7QUFDdEUsU0FDRSxVQUFVLFNBQVMseUJBQ25CLFVBQVUsYUFBYSxTQUFTLEtBQ2hDLFVBQVUsYUFBYSxDQUFDLEdBQUcsT0FBTyxVQUNsQyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEdBQUcsU0FBUyxnQkFDdEMsVUFBVSxhQUFhLENBQUMsRUFBRSxTQUFTLFVBQ25DLFVBQVUsYUFBYSxDQUFDLEVBQUUsU0FBUyxRQUNuQyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssU0FBUztBQUU1QztBQUVBLFNBQVMsZ0NBQWdDLFdBQWlCLHFCQUF3QztBQUNoRyxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxhQUFhLFNBQVMsS0FDaEMsVUFBVSxhQUFhLENBQUMsR0FBRyxPQUFPLFVBQ2xDLFVBQVUsYUFBYSxDQUFDLEVBQUUsR0FBRyxTQUFTLGdCQUN0QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsVUFDbkMsVUFBVSxhQUFhLENBQUMsRUFBRSxTQUFTLFFBQ25DLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLG9CQUN4QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxTQUFTLGdCQUMvQyxDQUFDLG9CQUFvQixTQUFTLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLElBQUk7QUFFNUU7QUFFQSxTQUFTLHNDQUFzQyxXQUEwQjtBQUN2RSxTQUNFLFVBQVUsU0FBUyx5QkFDbkIsVUFBVSxhQUFhLFNBQVMsS0FDaEMsVUFBVSxhQUFhLENBQUMsR0FBRyxPQUFPLFVBQ2xDLFVBQVUsYUFBYSxDQUFDLEVBQUUsR0FBRyxTQUFTLGdCQUN0QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLFNBQVMsVUFDbkMsVUFBVSxhQUFhLENBQUMsRUFBRSxTQUFTLFFBQ25DLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxTQUFTLG9CQUN4QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxTQUFTLHVCQUM3QyxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVMsbUJBQ3RELFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLE9BQU8sT0FBTyxTQUFTLGdCQUM3RCxVQUFVLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxPQUFPLFNBQVM7QUFFNUQ7QUFFQSxJQUFPLDBCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ047QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxVQUNWLHFCQUFxQjtBQUFBLFlBQ25CLE1BQU07QUFBQSxZQUNOLE9BQU8sRUFBRSxNQUFNLFNBQVM7QUFBQSxVQUMxQjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHNCQUFzQjtBQUFBLE1BQ3hCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sVUFBd0IsUUFBUSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3JELFVBQU0sc0JBQXNCLFFBQVEsb0JBQW9CLFNBQVMsSUFBSSxRQUFRLHNCQUFzQixDQUFDO0FBRXBHLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLGFBQUssS0FBSyxRQUFRLENBQUMsY0FBYztBQUMvQixjQUNFLGtCQUFrQixTQUFTLEtBQzNCLHVDQUF1QyxTQUFTLEtBQ2hELGlDQUFpQyxXQUFXLG1CQUFtQixLQUMvRCxxQ0FBcUMsU0FBUyxLQUM5QyxnQ0FBZ0MsV0FBVyxtQkFBbUIsS0FDOUQsc0NBQXNDLFNBQVMsR0FDL0M7QUFDQSxvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixTQUFTO0FBQUEsWUFDWCxDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -18,7 +18,9 @@ declare const _default: {
18
18
  '@checkdigit/no-uuid': string;
19
19
  '@checkdigit/require-strict-assert': string;
20
20
  '@checkdigit/no-wallaby-comment': string;
21
- '@checkdigit/no-side-effects': string;
21
+ '@checkdigit/no-side-effects': (string | {
22
+ excludedIdentifiers: string[];
23
+ })[];
22
24
  '@checkdigit/regular-expression-comment': string;
23
25
  '@checkdigit/require-assert-predicate-rejects-throws': string;
24
26
  '@checkdigit/object-literal-response': string;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"6.3.0-PR.66-f16c","description":"Check Digit eslint plugins","prettier":"@checkdigit/prettier-config","type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"keywords":["eslint","eslintplugin"],"engines":{"node":">=20.12"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/eslint-plugin.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"homepage":"https://github.com/checkdigit/eslint-plugin#readme","peerDependencies":{"eslint":">=8 <9"},"sideEffects":false,"devDependencies":{"@checkdigit/jest-config":"^6.0.0","@checkdigit/prettier-config":"^5.3.0","@checkdigit/typescript-config":"^6.0.0","@types/eslint":"^8.56.6","@typescript-eslint/eslint-plugin":"^7.4.0","@typescript-eslint/parser":"^7.4.0","@typescript-eslint/rule-tester":"^7.13.1","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^5.4.1","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^0.8.9","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^0.24.0"},"scripts":{"prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs && node dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","ci:compile":"tsc --noEmit","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier"},"jest":{"preset":"@checkdigit/jest-config"},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"]}
1
+ {"name":"@checkdigit/eslint-plugin","version":"6.3.0-PR.66-5c1c","description":"Check Digit eslint plugins","prettier":"@checkdigit/prettier-config","type":"module","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"keywords":["eslint","eslintplugin"],"engines":{"node":">=20.12"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/eslint-plugin.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"homepage":"https://github.com/checkdigit/eslint-plugin#readme","peerDependencies":{"eslint":">=8 <9"},"sideEffects":false,"devDependencies":{"@checkdigit/jest-config":"^6.0.0","@checkdigit/prettier-config":"^5.3.0","@checkdigit/typescript-config":"^6.0.0","@types/eslint":"^8.56.6","@typescript-eslint/eslint-plugin":"^7.4.0","@typescript-eslint/parser":"^7.4.0","@typescript-eslint/rule-tester":"^7.13.1","eslint-config-prettier":"^9.1.0","eslint-plugin-eslint-plugin":"^5.4.1","eslint-plugin-import":"^2.29.1","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^0.8.9","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^0.24.0"},"scripts":{"prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs && node dist-cjs/index.cjs","build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","lint:fix":"eslint --ignore-path .gitignore . --fix","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","ci:compile":"tsc --noEmit","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier"},"jest":{"preset":"@checkdigit/jest-config"},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"]}
package/src/index.ts CHANGED
@@ -36,7 +36,7 @@ export default {
36
36
  '@checkdigit/no-uuid': 'error',
37
37
  '@checkdigit/require-strict-assert': 'error',
38
38
  '@checkdigit/no-wallaby-comment': 'error',
39
- '@checkdigit/no-side-effects': 'error',
39
+ '@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log'] }],
40
40
  '@checkdigit/regular-expression-comment': 'error',
41
41
  '@checkdigit/require-assert-predicate-rejects-throws': 'error',
42
42
  '@checkdigit/object-literal-response': 'error',
@@ -9,10 +9,8 @@
9
9
  import type { Node } from 'estree';
10
10
  import type { Rule } from 'eslint';
11
11
 
12
- const EXCLUDED_IDENTIFIERS = ['assert', 'debug', 'log'];
13
-
14
- function isTestFile(fileName: string): boolean {
15
- return fileName.endsWith('spec.ts') || fileName.endsWith('test.ts') || fileName.endsWith('test.js');
12
+ interface RuleOptions {
13
+ excludedIdentifiers: string[];
16
14
  }
17
15
 
18
16
  function isAwaitExpression(statement: Node): boolean {
@@ -29,12 +27,12 @@ function isCallExpressionCalleeMemberExpression(statement: Node): boolean {
29
27
  );
30
28
  }
31
29
 
32
- function isCallExpressionCalleeIdentifier(statement: Node): boolean {
30
+ function isCallExpressionCalleeIdentifier(statement: Node, excludedIdentifiers: string[]): boolean {
33
31
  return (
34
32
  statement.type === 'ExpressionStatement' &&
35
33
  statement.expression.type === 'CallExpression' &&
36
34
  statement.expression.callee.type === 'Identifier' &&
37
- !EXCLUDED_IDENTIFIERS.includes(statement.expression.callee.name)
35
+ !excludedIdentifiers.includes(statement.expression.callee.name)
38
36
  );
39
37
  }
40
38
 
@@ -50,7 +48,7 @@ function isVariableDeclarationAwaitExpression(statement: Node): boolean {
50
48
  );
51
49
  }
52
50
 
53
- function isVariableDeclarationIdentifier(statement: Node): boolean {
51
+ function isVariableDeclarationIdentifier(statement: Node, excludedIdentifiers: string[]): boolean {
54
52
  return (
55
53
  statement.type === 'VariableDeclaration' &&
56
54
  statement.declarations.length > 0 &&
@@ -60,7 +58,7 @@ function isVariableDeclarationIdentifier(statement: Node): boolean {
60
58
  statement.declarations[0].init !== null &&
61
59
  statement.declarations[0].init.type === 'CallExpression' &&
62
60
  statement.declarations[0].init.callee.type === 'Identifier' &&
63
- !EXCLUDED_IDENTIFIERS.includes(statement.declarations[0].init.callee.name)
61
+ !excludedIdentifiers.includes(statement.declarations[0].init.callee.name)
64
62
  );
65
63
  }
66
64
 
@@ -87,21 +85,32 @@ export default {
87
85
  description: 'Ensure no side effects can occur at the main module-level',
88
86
  url: 'https://github.com/checkdigit/eslint-plugin',
89
87
  },
88
+ schema: [
89
+ {
90
+ type: 'object',
91
+ properties: {
92
+ excludedIdentifiers: {
93
+ type: 'array',
94
+ items: { type: 'string' },
95
+ },
96
+ },
97
+ additionalProperties: false,
98
+ },
99
+ ],
90
100
  },
91
101
  create(context) {
102
+ const options: RuleOptions = (context.options[0] ?? {}) as RuleOptions;
103
+ const excludedIdentifiers = options.excludedIdentifiers.length > 0 ? options.excludedIdentifiers : [];
104
+
92
105
  return {
93
106
  Program(node) {
94
- const fileName = context.filename.split('src/')[1] ?? context.filename;
95
- if (isTestFile(fileName)) {
96
- return;
97
- }
98
107
  node.body.forEach((statement) => {
99
108
  if (
100
109
  isAwaitExpression(statement) ||
101
110
  isCallExpressionCalleeMemberExpression(statement) ||
102
- isCallExpressionCalleeIdentifier(statement) ||
111
+ isCallExpressionCalleeIdentifier(statement, excludedIdentifiers) ||
103
112
  isVariableDeclarationAwaitExpression(statement) ||
104
- isVariableDeclarationIdentifier(statement) ||
113
+ isVariableDeclarationIdentifier(statement, excludedIdentifiers) ||
105
114
  isVariableDeclarationMemberExpression(statement)
106
115
  ) {
107
116
  context.report({