@checkdigit/eslint-plugin 7.12.0-PR.45-1e1c → 7.12.0-PR.45-1d35
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.
|
@@ -5,7 +5,8 @@ import { TSESTree } from "@typescript-eslint/types";
|
|
|
5
5
|
import getDocumentationUrl from "./get-documentation-url.mjs";
|
|
6
6
|
var ruleId = "require-assert-message";
|
|
7
7
|
var MISSING_ASSERT_MESSAGE = "MISSING_ASSERT_MESSAGE";
|
|
8
|
-
var
|
|
8
|
+
var assertMethods = Object.keys(assert).filter((key) => typeof assert[key] === "function");
|
|
9
|
+
var messageIndexCache = {};
|
|
9
10
|
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
10
11
|
var rule = createRule({
|
|
11
12
|
name: ruleId,
|
|
@@ -24,7 +25,6 @@ var rule = createRule({
|
|
|
24
25
|
let assertAlias = "assert";
|
|
25
26
|
const parserServices = ESLintUtils.getParserServices(context);
|
|
26
27
|
const checker = parserServices.program.getTypeChecker();
|
|
27
|
-
const messageIndexCache = {};
|
|
28
28
|
return {
|
|
29
29
|
ImportDeclaration(node) {
|
|
30
30
|
if (node.source.value === "node:assert") {
|
|
@@ -41,12 +41,11 @@ var rule = createRule({
|
|
|
41
41
|
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
42
|
const objectName = callee.object.name;
|
|
43
43
|
const methodName = callee.property.name;
|
|
44
|
-
if (objectName === assertAlias &&
|
|
44
|
+
if (objectName === assertAlias && assertMethods.includes(methodName)) {
|
|
45
45
|
if (!(methodName in messageIndexCache)) {
|
|
46
46
|
const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
|
|
47
47
|
const signature = checker.getResolvedSignature(tsNode);
|
|
48
|
-
|
|
49
|
-
messageIndexCache[methodName] = messageParameterIndex ?? 2;
|
|
48
|
+
messageIndexCache[methodName] = signature?.getParameters().findIndex((param) => param.name === "message");
|
|
50
49
|
}
|
|
51
50
|
const messageIndex = messageIndexCache[methodName];
|
|
52
51
|
if (messageIndex !== void 0 && node.arguments.length <= messageIndex) {
|
|
@@ -77,4 +76,4 @@ export {
|
|
|
77
76
|
require_assert_message_default as default,
|
|
78
77
|
ruleId
|
|
79
78
|
};
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtYXNzZXJ0LW1lc3NhZ2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFDakMsU0FBUyxtQkFBNkI7QUFDdEMsU0FBUyxnQkFBZ0I7QUFDekIsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ3RCLElBQU0seUJBQXlCO0FBRS9CLElBQU0sZ0JBQWdCLE9BQU8sS0FBSyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsT0FBUSxPQUFpQixHQUFHLE1BQU0sVUFBVTtBQUV0RyxJQUFNLG9CQUF3RCxDQUFDO0FBRS9ELElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFDOUUsSUFBTSxPQUErQyxXQUFXO0FBQUEsRUFDOUQsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxzQkFBc0IsR0FBRztBQUFBLElBQzVCO0FBQUEsRUFDRjtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxRQUFJLGNBQWM7QUFDbEIsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLFVBQVUsZUFBZSxRQUFRLGVBQWU7QUFFdEQsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLE1BQWtDO0FBQ2xELFlBQUksS0FBSyxPQUFPLFVBQVUsZUFBZTtBQUN2QyxnQkFBTSxZQUFZLEtBQUssV0FBVztBQUFBLFlBQ2hDLENBQUMsb0JBQ0MsZ0JBQWdCLFNBQVMsU0FBUyxlQUFlLDBCQUNqRCxnQkFBZ0IsU0FBUyxTQUFTLGVBQWU7QUFBQSxVQUNyRDtBQUNBLGNBQUksV0FBVztBQUNiLDBCQUFjLFVBQVUsTUFBTTtBQUFBLFVBQ2hDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLGVBQWUsTUFBK0I7QUFDNUMsY0FBTSxTQUFTLEtBQUs7QUFDcEIsWUFDRSxPQUFPLFNBQVMsU0FBUyxlQUFlLG9CQUN4QyxPQUFPLE9BQU8sU0FBUyxTQUFTLGVBQWUsY0FDL0MsT0FBTyxTQUFTLFNBQVMsU0FBUyxlQUFlLFlBQ2pEO0FBQ0EsZ0JBQU0sYUFBYSxPQUFPLE9BQU87QUFDakMsZ0JBQU0sYUFBYSxPQUFPLFNBQVM7QUFFbkMsY0FBSSxlQUFlLGVBQWUsY0FBYyxTQUFTLFVBQVUsR0FBRztBQUNwRSxnQkFBSSxFQUFFLGNBQWMsb0JBQW9CO0FBQ3RDLG9CQUFNLFNBQVMsZUFBZSxzQkFBc0IsSUFBSSxJQUFJO0FBQzVELG9CQUFNLFlBQVksUUFBUSxxQkFBcUIsTUFBTTtBQUNyRCxnQ0FBa0IsVUFBVSxJQUFJLFdBQVcsY0FBYyxFQUFFLFVBQVUsQ0FBQyxVQUFVLE1BQU0sU0FBUyxTQUFTO0FBQUEsWUFDMUc7QUFFQSxrQkFBTSxlQUFlLGtCQUFrQixVQUFVO0FBQ2pELGdCQUFJLGlCQUFpQixVQUFhLEtBQUssVUFBVSxVQUFVLGNBQWM7QUFDdkUsc0JBQVEsT0FBTztBQUFBLGdCQUNiO0FBQUEsZ0JBQ0EsV0FBVztBQUFBLGdCQUNYLE1BQU07QUFBQSxrQkFDSjtBQUFBLGdCQUNGO0FBQUEsY0FDRixDQUFDO0FBQUEsWUFDSDtBQUFBLFVBQ0Y7QUFBQSxRQUNGLFdBQ0UsT0FBTyxTQUFTLFNBQVMsZUFBZSxjQUN4QyxPQUFPLFNBQVMsZUFDaEIsS0FBSyxVQUFVLFNBQVMsR0FDeEI7QUFDQSxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLGNBQ0osWUFBWTtBQUFBLFlBQ2Q7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8saUNBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.12.0-PR.45-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.12.0-PR.45-1d35","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"}}
|
|
@@ -14,7 +14,9 @@ import getDocumentationUrl from './get-documentation-url.ts';
|
|
|
14
14
|
export const ruleId = 'require-assert-message';
|
|
15
15
|
const MISSING_ASSERT_MESSAGE = 'MISSING_ASSERT_MESSAGE';
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const assertMethods = Object.keys(assert).filter((key) => typeof (assert as never)[key] === 'function');
|
|
18
|
+
|
|
19
|
+
const messageIndexCache: Record<string, number | undefined> = {};
|
|
18
20
|
|
|
19
21
|
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
20
22
|
const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
|
|
@@ -34,7 +36,6 @@ const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
|
|
|
34
36
|
let assertAlias = 'assert';
|
|
35
37
|
const parserServices = ESLintUtils.getParserServices(context);
|
|
36
38
|
const checker = parserServices.program.getTypeChecker();
|
|
37
|
-
const messageIndexCache: Record<string, number> = {};
|
|
38
39
|
|
|
39
40
|
return {
|
|
40
41
|
ImportDeclaration(node: TSESTree.ImportDeclaration) {
|
|
@@ -59,12 +60,11 @@ const rule: TSESLint.RuleModule<string, unknown[]> = createRule({
|
|
|
59
60
|
const objectName = callee.object.name;
|
|
60
61
|
const methodName = callee.property.name;
|
|
61
62
|
|
|
62
|
-
if (objectName === assertAlias &&
|
|
63
|
+
if (objectName === assertAlias && assertMethods.includes(methodName)) {
|
|
63
64
|
if (!(methodName in messageIndexCache)) {
|
|
64
65
|
const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
|
|
65
66
|
const signature = checker.getResolvedSignature(tsNode);
|
|
66
|
-
|
|
67
|
-
messageIndexCache[methodName] = messageParameterIndex ?? 2;
|
|
67
|
+
messageIndexCache[methodName] = signature?.getParameters().findIndex((param) => param.name === 'message');
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
const messageIndex = messageIndexCache[methodName];
|