@checkdigit/eslint-plugin 7.12.0-PR.45-1e1c → 7.12.0-PR.45-9cdb

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,11 +1,11 @@
1
1
  // src/require-assert-message.ts
2
- import { strict as assert } from "node:assert";
3
2
  import { ESLintUtils } from "@typescript-eslint/utils";
4
3
  import { TSESTree } from "@typescript-eslint/types";
5
4
  import getDocumentationUrl from "./get-documentation-url.mjs";
6
5
  var ruleId = "require-assert-message";
7
6
  var MISSING_ASSERT_MESSAGE = "MISSING_ASSERT_MESSAGE";
8
- var methodsRequiringMessage = Object.keys(assert).filter((key) => typeof assert[key] === "function");
7
+ var messageIndexCache = {};
8
+ var assertAlias = "assert";
9
9
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
10
10
  var rule = createRule({
11
11
  name: ruleId,
@@ -21,10 +21,8 @@ var rule = createRule({
21
21
  },
22
22
  defaultOptions: [],
23
23
  create(context) {
24
- let assertAlias = "assert";
25
24
  const parserServices = ESLintUtils.getParserServices(context);
26
25
  const checker = parserServices.program.getTypeChecker();
27
- const messageIndexCache = {};
28
26
  return {
29
27
  ImportDeclaration(node) {
30
28
  if (node.source.value === "node:assert") {
@@ -41,12 +39,11 @@ var rule = createRule({
41
39
  if (callee.type === TSESTree.AST_NODE_TYPES.MemberExpression && callee.object.type === TSESTree.AST_NODE_TYPES.Identifier && callee.property.type === TSESTree.AST_NODE_TYPES.Identifier) {
42
40
  const objectName = callee.object.name;
43
41
  const methodName = callee.property.name;
44
- if (objectName === assertAlias && methodsRequiringMessage.includes(methodName)) {
42
+ if (objectName === assertAlias) {
45
43
  if (!(methodName in messageIndexCache)) {
46
44
  const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
47
45
  const signature = checker.getResolvedSignature(tsNode);
48
- const messageParameterIndex = signature?.getParameters().findIndex((param) => param.name === "message");
49
- messageIndexCache[methodName] = messageParameterIndex ?? 2;
46
+ messageIndexCache[methodName] = signature?.getParameters().findIndex((param) => param.name === "message");
50
47
  }
51
48
  const messageIndex = messageIndexCache[methodName];
52
49
  if (messageIndex !== void 0 && node.arguments.length <= messageIndex) {
@@ -77,4 +74,4 @@ export {
77
74
  require_assert_message_default as default,
78
75
  ruleId
79
76
  };
80
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtYXNzZXJ0LW1lc3NhZ2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFDakMsU0FBUyxtQkFBNkI7QUFDdEMsU0FBUyxnQkFBZ0I7QUFDekIsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ3RCLElBQU0seUJBQXlCO0FBRS9CLElBQU0sMEJBQTBCLE9BQU8sS0FBSyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsT0FBUSxPQUFpQixHQUFHLE1BQU0sVUFBVTtBQUVoSCxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBQzlFLElBQU0sT0FBK0MsV0FBVztBQUFBLEVBQzlELE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsc0JBQXNCLEdBQUc7QUFBQSxJQUM1QjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsUUFBSSxjQUFjO0FBQ2xCLFVBQU0saUJBQWlCLFlBQVksa0JBQWtCLE9BQU87QUFDNUQsVUFBTSxVQUFVLGVBQWUsUUFBUSxlQUFlO0FBQ3RELFVBQU0sb0JBQTRDLENBQUM7QUFFbkQsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLE1BQWtDO0FBQ2xELFlBQUksS0FBSyxPQUFPLFVBQVUsZUFBZTtBQUN2QyxnQkFBTSxZQUFZLEtBQUssV0FBVztBQUFBLFlBQ2hDLENBQUMsb0JBQ0MsZ0JBQWdCLFNBQVMsU0FBUyxlQUFlLDBCQUNqRCxnQkFBZ0IsU0FBUyxTQUFTLGVBQWU7QUFBQSxVQUNyRDtBQUNBLGNBQUksV0FBVztBQUNiLDBCQUFjLFVBQVUsTUFBTTtBQUFBLFVBQ2hDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLGVBQWUsTUFBK0I7QUFDNUMsY0FBTSxTQUFTLEtBQUs7QUFDcEIsWUFDRSxPQUFPLFNBQVMsU0FBUyxlQUFlLG9CQUN4QyxPQUFPLE9BQU8sU0FBUyxTQUFTLGVBQWUsY0FDL0MsT0FBTyxTQUFTLFNBQVMsU0FBUyxlQUFlLFlBQ2pEO0FBQ0EsZ0JBQU0sYUFBYSxPQUFPLE9BQU87QUFDakMsZ0JBQU0sYUFBYSxPQUFPLFNBQVM7QUFFbkMsY0FBSSxlQUFlLGVBQWUsd0JBQXdCLFNBQVMsVUFBVSxHQUFHO0FBQzlFLGdCQUFJLEVBQUUsY0FBYyxvQkFBb0I7QUFDdEMsb0JBQU0sU0FBUyxlQUFlLHNCQUFzQixJQUFJLElBQUk7QUFDNUQsb0JBQU0sWUFBWSxRQUFRLHFCQUFxQixNQUFNO0FBQ3JELG9CQUFNLHdCQUF3QixXQUFXLGNBQWMsRUFBRSxVQUFVLENBQUMsVUFBVSxNQUFNLFNBQVMsU0FBUztBQUN0RyxnQ0FBa0IsVUFBVSxJQUFJLHlCQUF5QjtBQUFBLFlBQzNEO0FBRUEsa0JBQU0sZUFBZSxrQkFBa0IsVUFBVTtBQUNqRCxnQkFBSSxpQkFBaUIsVUFBYSxLQUFLLFVBQVUsVUFBVSxjQUFjO0FBQ3ZFLHNCQUFRLE9BQU87QUFBQSxnQkFDYjtBQUFBLGdCQUNBLFdBQVc7QUFBQSxnQkFDWCxNQUFNO0FBQUEsa0JBQ0o7QUFBQSxnQkFDRjtBQUFBLGNBQ0YsQ0FBQztBQUFBLFlBQ0g7QUFBQSxVQUNGO0FBQUEsUUFDRixXQUNFLE9BQU8sU0FBUyxTQUFTLGVBQWUsY0FDeEMsT0FBTyxTQUFTLGVBQ2hCLEtBQUssVUFBVSxTQUFTLEdBQ3hCO0FBQ0Esa0JBQVEsT0FBTztBQUFBLFlBQ2I7QUFBQSxZQUNBLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFlBQVk7QUFBQSxZQUNkO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLGlDQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
77
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtYXNzZXJ0LW1lc3NhZ2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsU0FBUyxnQkFBZ0I7QUFDekIsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ3RCLElBQU0seUJBQXlCO0FBRS9CLElBQU0sb0JBQXdELENBQUM7QUFDL0QsSUFBSSxjQUFjO0FBRWxCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFDOUUsSUFBTSxPQUErQyxXQUFXO0FBQUEsRUFDOUQsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxzQkFBc0IsR0FBRztBQUFBLElBQzVCO0FBQUEsRUFDRjtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGlCQUFpQixZQUFZLGtCQUFrQixPQUFPO0FBQzVELFVBQU0sVUFBVSxlQUFlLFFBQVEsZUFBZTtBQUV0RCxXQUFPO0FBQUEsTUFDTCxrQkFBa0IsTUFBa0M7QUFDbEQsWUFBSSxLQUFLLE9BQU8sVUFBVSxlQUFlO0FBQ3ZDLGdCQUFNLFlBQVksS0FBSyxXQUFXO0FBQUEsWUFDaEMsQ0FBQyxvQkFDQyxnQkFBZ0IsU0FBUyxTQUFTLGVBQWUsMEJBQ2pELGdCQUFnQixTQUFTLFNBQVMsZUFBZTtBQUFBLFVBQ3JEO0FBQ0EsY0FBSSxXQUFXO0FBQ2IsMEJBQWMsVUFBVSxNQUFNO0FBQUEsVUFDaEM7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZUFBZSxNQUErQjtBQUM1QyxjQUFNLFNBQVMsS0FBSztBQUNwQixZQUNFLE9BQU8sU0FBUyxTQUFTLGVBQWUsb0JBQ3hDLE9BQU8sT0FBTyxTQUFTLFNBQVMsZUFBZSxjQUMvQyxPQUFPLFNBQVMsU0FBUyxTQUFTLGVBQWUsWUFDakQ7QUFDQSxnQkFBTSxhQUFhLE9BQU8sT0FBTztBQUNqQyxnQkFBTSxhQUFhLE9BQU8sU0FBUztBQUVuQyxjQUFJLGVBQWUsYUFBYTtBQUM5QixnQkFBSSxFQUFFLGNBQWMsb0JBQW9CO0FBQ3RDLG9CQUFNLFNBQVMsZUFBZSxzQkFBc0IsSUFBSSxJQUFJO0FBQzVELG9CQUFNLFlBQVksUUFBUSxxQkFBcUIsTUFBTTtBQUNyRCxnQ0FBa0IsVUFBVSxJQUFJLFdBQVcsY0FBYyxFQUFFLFVBQVUsQ0FBQyxVQUFVLE1BQU0sU0FBUyxTQUFTO0FBQUEsWUFDMUc7QUFFQSxrQkFBTSxlQUFlLGtCQUFrQixVQUFVO0FBQ2pELGdCQUFJLGlCQUFpQixVQUFhLEtBQUssVUFBVSxVQUFVLGNBQWM7QUFDdkUsc0JBQVEsT0FBTztBQUFBLGdCQUNiO0FBQUEsZ0JBQ0EsV0FBVztBQUFBLGdCQUNYLE1BQU07QUFBQSxrQkFDSjtBQUFBLGdCQUNGO0FBQUEsY0FDRixDQUFDO0FBQUEsWUFDSDtBQUFBLFVBQ0Y7QUFBQSxRQUNGLFdBQ0UsT0FBTyxTQUFTLFNBQVMsZUFBZSxjQUN4QyxPQUFPLFNBQVMsZUFDaEIsS0FBSyxVQUFVLFNBQVMsR0FDeEI7QUFDQSxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLGNBQ0osWUFBWTtBQUFBLFlBQ2Q7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8saUNBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.12.0-PR.45-1e1c","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.23.0","@typescript-eslint/utils":"^8.23.0","http-status-codes":"^2.3.0","ts-api-utils":"^2.0.1"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"^9.0.0","@eslint/js":"^9.19.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.23.0","@typescript-eslint/rule-tester":"^8.23.0","eslint":"^9.19.0","eslint-config-prettier":"^10.0.1","eslint-import-resolver-typescript":"^3.7.0","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^2.2.1","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","rimraf":"^6.0.1","typescript-eslint":"^8.23.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=22.11"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.12.0-PR.45-9cdb","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.23.0","@typescript-eslint/utils":"^8.23.0","http-status-codes":"^2.3.0","ts-api-utils":"^2.0.1"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.1.0","@checkdigit/typescript-config":"^9.0.0","@eslint/js":"^9.19.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.23.0","@typescript-eslint/rule-tester":"^8.23.0","eslint":"^9.19.0","eslint-config-prettier":"^10.0.1","eslint-import-resolver-typescript":"^3.7.0","eslint-plugin-eslint-plugin":"^6.4.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^2.2.1","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","rimraf":"^6.0.1","typescript-eslint":"^8.23.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=22.11"}}
@@ -6,7 +6,6 @@
6
6
  * This code is licensed under the MIT license (see LICENSE.txt for details).
7
7
  */
8
8
 
9
- import { strict as assert } from 'node:assert';
10
9
  import { ESLintUtils, TSESLint } from '@typescript-eslint/utils';
11
10
  import { TSESTree } from '@typescript-eslint/types';
12
11
  import getDocumentationUrl from './get-documentation-url.ts';
@@ -14,7 +13,8 @@ import getDocumentationUrl from './get-documentation-url.ts';
14
13
  export const ruleId = 'require-assert-message';
15
14
  const MISSING_ASSERT_MESSAGE = 'MISSING_ASSERT_MESSAGE';
16
15
 
17
- const methodsRequiringMessage = Object.keys(assert).filter((key) => typeof (assert as never)[key] === 'function');
16
+ const messageIndexCache: Record<string, number | undefined> = {};
17
+ let assertAlias = 'assert';
18
18
 
19
19
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
20
20
  const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
@@ -31,10 +31,8 @@ const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
31
31
  },
32
32
  defaultOptions: [],
33
33
  create(context) {
34
- let assertAlias = 'assert';
35
34
  const parserServices = ESLintUtils.getParserServices(context);
36
35
  const checker = parserServices.program.getTypeChecker();
37
- const messageIndexCache: Record<string, number> = {};
38
36
 
39
37
  return {
40
38
  ImportDeclaration(node: TSESTree.ImportDeclaration) {
@@ -59,12 +57,11 @@ const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
59
57
  const objectName = callee.object.name;
60
58
  const methodName = callee.property.name;
61
59
 
62
- if (objectName === assertAlias && methodsRequiringMessage.includes(methodName)) {
60
+ if (objectName === assertAlias) {
63
61
  if (!(methodName in messageIndexCache)) {
64
62
  const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
65
63
  const signature = checker.getResolvedSignature(tsNode);
66
- const messageParameterIndex = signature?.getParameters().findIndex((param) => param.name === 'message');
67
- messageIndexCache[methodName] = messageParameterIndex ?? 2;
64
+ messageIndexCache[methodName] = signature?.getParameters().findIndex((param) => param.name === 'message');
68
65
  }
69
66
 
70
67
  const messageIndex = messageIndexCache[methodName];