@checkdigit/eslint-plugin 5.3.0-PR.44-7090 → 5.3.0-PR.45-2fab
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.
- package/dist-cjs/index.cjs +20 -42
- package/dist-mjs/index.mjs +5 -5
- package/dist-mjs/require-assert-message.mjs +34 -0
- package/dist-types/index.d.ts +3 -3
- package/package.json +1 -1
- package/src/index.ts +4 -4
- package/src/require-assert-message.ts +40 -0
- package/dist-mjs/require-strict-assert.mjs +0 -56
- package/src/require-strict-assert.ts +0 -70
- /package/dist-types/{require-strict-assert.d.ts → require-assert-message.d.ts} +0 -0
package/dist-cjs/index.cjs
CHANGED
|
@@ -321,53 +321,31 @@ var no_uuid_default = {
|
|
|
321
321
|
}
|
|
322
322
|
};
|
|
323
323
|
|
|
324
|
-
// src/require-
|
|
325
|
-
var
|
|
324
|
+
// src/require-assert-message.ts
|
|
325
|
+
var require_assert_message_default = {
|
|
326
326
|
meta: {
|
|
327
|
-
type: "
|
|
327
|
+
type: "suggestion",
|
|
328
328
|
docs: {
|
|
329
|
-
description: "
|
|
330
|
-
url: "https://github.com/
|
|
329
|
+
description: "Validate that message argument to always be supplied to node:assert methods",
|
|
330
|
+
url: "https://github.com/xxxxx/eslint-plugin"
|
|
331
331
|
},
|
|
332
332
|
fixable: "code"
|
|
333
333
|
},
|
|
334
334
|
create(context) {
|
|
335
335
|
return {
|
|
336
|
-
Literal(node) {
|
|
337
|
-
if (node.value === "node:assert" && node.parent.type === "ImportDeclaration") {
|
|
338
|
-
const importDeclaration = node.parent;
|
|
339
|
-
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
340
|
-
(specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
|
|
341
|
-
);
|
|
342
|
-
if (defaultSpecifier) {
|
|
343
|
-
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
344
|
-
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
345
|
-
const correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
|
|
346
|
-
context.report({
|
|
347
|
-
node: importDeclaration,
|
|
348
|
-
message: "Require the strict version of node:assert.",
|
|
349
|
-
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
},
|
|
354
336
|
CallExpression(node) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
337
|
+
if (node.callee.type === "MemberExpression" && "name" in node.callee.object && "name" in node.callee.property) {
|
|
338
|
+
const objectName = node.callee.object.name;
|
|
339
|
+
const methodName = node.callee.property.name;
|
|
340
|
+
if (objectName === "assert" && methodName !== "ifError") {
|
|
341
|
+
const expectedMessageArgIndex = methodName === "ok" || methodName === "strict" ? 1 : 2;
|
|
342
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
343
|
+
context.report({
|
|
344
|
+
node,
|
|
345
|
+
message: `Missing message argument in ${methodName}() method.`
|
|
346
|
+
});
|
|
347
|
+
}
|
|
365
348
|
}
|
|
366
|
-
context.report({
|
|
367
|
-
node,
|
|
368
|
-
message: "Use non-strict counterpart for assert function.",
|
|
369
|
-
fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName)
|
|
370
|
-
});
|
|
371
349
|
}
|
|
372
350
|
}
|
|
373
351
|
};
|
|
@@ -380,7 +358,7 @@ var src_default = {
|
|
|
380
358
|
"file-path-comment": file_path_comment_default,
|
|
381
359
|
"no-card-numbers": no_card_numbers_default,
|
|
382
360
|
"no-uuid": no_uuid_default,
|
|
383
|
-
"require-
|
|
361
|
+
"require-assert-message": require_assert_message_default
|
|
384
362
|
},
|
|
385
363
|
configs: {
|
|
386
364
|
all: {
|
|
@@ -388,7 +366,7 @@ var src_default = {
|
|
|
388
366
|
"@checkdigit/no-card-numbers": "error",
|
|
389
367
|
"@checkdigit/file-path-comment": "error",
|
|
390
368
|
"@checkdigit/no-uuid": "error",
|
|
391
|
-
"@checkdigit/require-
|
|
369
|
+
"@checkdigit/require-assert-message": "error"
|
|
392
370
|
}
|
|
393
371
|
},
|
|
394
372
|
recommended: {
|
|
@@ -396,10 +374,10 @@ var src_default = {
|
|
|
396
374
|
"@checkdigit/no-card-numbers": "error",
|
|
397
375
|
"@checkdigit/file-path-comment": "off",
|
|
398
376
|
"@checkdigit/no-uuid": "error",
|
|
399
|
-
"@checkdigit/require-
|
|
377
|
+
"@checkdigit/require-assert-message": "error"
|
|
400
378
|
}
|
|
401
379
|
}
|
|
402
380
|
}
|
|
403
381
|
};
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1tZXNzYWdlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFDakQsVUFBTSxlQUFlLFFBQVEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBRXJELFFBQUksY0FBYyxVQUFhLGlCQUFpQixRQUFXO0FBQ3pELGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxPQUFPO0FBQ0wsZ0JBQVEsT0FB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
|
|
405
383
|
module.exports = module.exports.default;
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import filePathComment from "./file-path-comment.mjs";
|
|
3
3
|
import noCardNumbers from "./no-card-numbers.mjs";
|
|
4
4
|
import noUuid from "./no-uuid.mjs";
|
|
5
|
-
import
|
|
5
|
+
import requireAssertMessage from "./require-assert-message.mjs";
|
|
6
6
|
var src_default = {
|
|
7
7
|
rules: {
|
|
8
8
|
"file-path-comment": filePathComment,
|
|
9
9
|
"no-card-numbers": noCardNumbers,
|
|
10
10
|
"no-uuid": noUuid,
|
|
11
|
-
"require-
|
|
11
|
+
"require-assert-message": requireAssertMessage
|
|
12
12
|
},
|
|
13
13
|
configs: {
|
|
14
14
|
all: {
|
|
@@ -16,7 +16,7 @@ var src_default = {
|
|
|
16
16
|
"@checkdigit/no-card-numbers": "error",
|
|
17
17
|
"@checkdigit/file-path-comment": "error",
|
|
18
18
|
"@checkdigit/no-uuid": "error",
|
|
19
|
-
"@checkdigit/require-
|
|
19
|
+
"@checkdigit/require-assert-message": "error"
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
recommended: {
|
|
@@ -24,7 +24,7 @@ var src_default = {
|
|
|
24
24
|
"@checkdigit/no-card-numbers": "error",
|
|
25
25
|
"@checkdigit/file-path-comment": "off",
|
|
26
26
|
"@checkdigit/no-uuid": "error",
|
|
27
|
-
"@checkdigit/require-
|
|
27
|
+
"@checkdigit/require-assert-message": "error"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -32,4 +32,4 @@ var src_default = {
|
|
|
32
32
|
export {
|
|
33
33
|
src_default as default
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sWUFBWTtBQUNuQixPQUFPLDBCQUEwQjtBQUVqQyxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLDBCQUEwQjtBQUFBLEVBQzVCO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixzQ0FBc0M7QUFBQSxNQUN4QztBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHNDQUFzQztBQUFBLE1BQ3hDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// src/require-assert-message.ts
|
|
2
|
+
var require_assert_message_default = {
|
|
3
|
+
meta: {
|
|
4
|
+
type: "suggestion",
|
|
5
|
+
docs: {
|
|
6
|
+
description: "Validate that message argument to always be supplied to node:assert methods",
|
|
7
|
+
url: "https://github.com/xxxxx/eslint-plugin"
|
|
8
|
+
},
|
|
9
|
+
fixable: "code"
|
|
10
|
+
},
|
|
11
|
+
create(context) {
|
|
12
|
+
return {
|
|
13
|
+
CallExpression(node) {
|
|
14
|
+
if (node.callee.type === "MemberExpression" && "name" in node.callee.object && "name" in node.callee.property) {
|
|
15
|
+
const objectName = node.callee.object.name;
|
|
16
|
+
const methodName = node.callee.property.name;
|
|
17
|
+
if (objectName === "assert" && methodName !== "ifError") {
|
|
18
|
+
const expectedMessageArgIndex = methodName === "ok" || methodName === "strict" ? 1 : 2;
|
|
19
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
20
|
+
context.report({
|
|
21
|
+
node,
|
|
22
|
+
message: `Missing message argument in ${methodName}() method.`
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
require_assert_message_default as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtYXNzZXJ0LW1lc3NhZ2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBVUEsSUFBTyxpQ0FBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxlQUFlLE1BQU07QUFDbkIsWUFBSSxLQUFLLE9BQU8sU0FBUyxzQkFBc0IsVUFBVSxLQUFLLE9BQU8sVUFBVSxVQUFVLEtBQUssT0FBTyxVQUFVO0FBQzdHLGdCQUFNLGFBQWEsS0FBSyxPQUFPLE9BQU87QUFDdEMsZ0JBQU0sYUFBYSxLQUFLLE9BQU8sU0FBUztBQUV4QyxjQUFJLGVBQWUsWUFBWSxlQUFlLFdBQVc7QUFDdkQsa0JBQU0sMEJBQTBCLGVBQWUsUUFBUSxlQUFlLFdBQVcsSUFBSTtBQUNyRixnQkFBSSxLQUFLLFVBQVUsVUFBVSx5QkFBeUI7QUFDcEQsc0JBQVEsT0FBTztBQUFBLGdCQUNiO0FBQUEsZ0JBQ0EsU0FBUywrQkFBK0IsVUFBVTtBQUFBLGNBQ3BELENBQUM7QUFBQSxZQUNIO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist-types/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ declare const _default: {
|
|
|
3
3
|
'file-path-comment': import("eslint").Rule.RuleModule;
|
|
4
4
|
'no-card-numbers': import("eslint").Rule.RuleModule;
|
|
5
5
|
'no-uuid': import("eslint").Rule.RuleModule;
|
|
6
|
-
'require-
|
|
6
|
+
'require-assert-message': import("eslint").Rule.RuleModule;
|
|
7
7
|
};
|
|
8
8
|
configs: {
|
|
9
9
|
all: {
|
|
@@ -11,7 +11,7 @@ declare const _default: {
|
|
|
11
11
|
'@checkdigit/no-card-numbers': string;
|
|
12
12
|
'@checkdigit/file-path-comment': string;
|
|
13
13
|
'@checkdigit/no-uuid': string;
|
|
14
|
-
'@checkdigit/require-
|
|
14
|
+
'@checkdigit/require-assert-message': string;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
17
|
recommended: {
|
|
@@ -19,7 +19,7 @@ declare const _default: {
|
|
|
19
19
|
'@checkdigit/no-card-numbers': string;
|
|
20
20
|
'@checkdigit/file-path-comment': string;
|
|
21
21
|
'@checkdigit/no-uuid': string;
|
|
22
|
-
'@checkdigit/require-
|
|
22
|
+
'@checkdigit/require-assert-message': string;
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"5.3.0-PR.
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"5.3.0-PR.45-2fab","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":">=18"},"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"},"devDependencies":{"@checkdigit/jest-config":"^3.1.0","@checkdigit/prettier-config":"^4.1.0","@checkdigit/typescript-config":"^5.0.0","@types/eslint":"^8.44.3","@typescript-eslint/eslint-plugin":"^6.7.3","@typescript-eslint/parser":"^6.7.3","eslint-config-prettier":"^9.0.0","eslint-plugin-eslint-plugin":"^5.1.1","eslint-plugin-import":"^2.28.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.21.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","lint:fix":"eslint --ignore-path .gitignore . --fix","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","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","ci:compile":"tsc --noEmit","ci:test":"NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage=false","ci:coverage":"NODE_OPTIONS=\"--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
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
import filePathComment from './file-path-comment';
|
|
10
10
|
import noCardNumbers from './no-card-numbers';
|
|
11
11
|
import noUuid from './no-uuid';
|
|
12
|
-
import
|
|
12
|
+
import requireAssertMessage from './require-assert-message';
|
|
13
13
|
|
|
14
14
|
export default {
|
|
15
15
|
rules: {
|
|
16
16
|
'file-path-comment': filePathComment,
|
|
17
17
|
'no-card-numbers': noCardNumbers,
|
|
18
18
|
'no-uuid': noUuid,
|
|
19
|
-
'require-
|
|
19
|
+
'require-assert-message': requireAssertMessage,
|
|
20
20
|
},
|
|
21
21
|
configs: {
|
|
22
22
|
all: {
|
|
@@ -24,7 +24,7 @@ export default {
|
|
|
24
24
|
'@checkdigit/no-card-numbers': 'error',
|
|
25
25
|
'@checkdigit/file-path-comment': 'error',
|
|
26
26
|
'@checkdigit/no-uuid': 'error',
|
|
27
|
-
'@checkdigit/require-
|
|
27
|
+
'@checkdigit/require-assert-message': 'error',
|
|
28
28
|
},
|
|
29
29
|
},
|
|
30
30
|
recommended: {
|
|
@@ -32,7 +32,7 @@ export default {
|
|
|
32
32
|
'@checkdigit/no-card-numbers': 'error',
|
|
33
33
|
'@checkdigit/file-path-comment': 'off',
|
|
34
34
|
'@checkdigit/no-uuid': 'error',
|
|
35
|
-
'@checkdigit/require-
|
|
35
|
+
'@checkdigit/require-assert-message': 'error',
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
38
|
},
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// require-assert-message.ts
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2021-2022 Check Digit, LLC
|
|
5
|
+
*
|
|
6
|
+
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Rule } from 'eslint';
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
meta: {
|
|
13
|
+
type: 'suggestion',
|
|
14
|
+
docs: {
|
|
15
|
+
description: 'Validate that message argument to always be supplied to node:assert methods',
|
|
16
|
+
url: 'https://github.com/xxxxx/eslint-plugin',
|
|
17
|
+
},
|
|
18
|
+
fixable: 'code',
|
|
19
|
+
},
|
|
20
|
+
create(context) {
|
|
21
|
+
return {
|
|
22
|
+
CallExpression(node) {
|
|
23
|
+
if (node.callee.type === 'MemberExpression' && 'name' in node.callee.object && 'name' in node.callee.property) {
|
|
24
|
+
const objectName = node.callee.object.name;
|
|
25
|
+
const methodName = node.callee.property.name;
|
|
26
|
+
|
|
27
|
+
if (objectName === 'assert' && methodName !== 'ifError') {
|
|
28
|
+
const expectedMessageArgIndex = methodName === 'ok' || methodName === 'strict' ? 1 : 2;
|
|
29
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
30
|
+
context.report({
|
|
31
|
+
node,
|
|
32
|
+
message: `Missing message argument in ${methodName}() method.`,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
} as Rule.RuleModule;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// src/require-strict-assert.ts
|
|
2
|
-
var require_strict_assert_default = {
|
|
3
|
-
meta: {
|
|
4
|
-
type: "problem",
|
|
5
|
-
docs: {
|
|
6
|
-
description: "Require importing strict version of node:assert and using non-strict assert functions.",
|
|
7
|
-
url: "https://github.com/checkdigit/eslint-plugin"
|
|
8
|
-
},
|
|
9
|
-
fixable: "code"
|
|
10
|
-
},
|
|
11
|
-
create(context) {
|
|
12
|
-
return {
|
|
13
|
-
Literal(node) {
|
|
14
|
-
if (node.value === "node:assert" && node.parent.type === "ImportDeclaration") {
|
|
15
|
-
const importDeclaration = node.parent;
|
|
16
|
-
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
17
|
-
(specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
|
|
18
|
-
);
|
|
19
|
-
if (defaultSpecifier) {
|
|
20
|
-
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
21
|
-
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
22
|
-
const correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
|
|
23
|
-
context.report({
|
|
24
|
-
node: importDeclaration,
|
|
25
|
-
message: "Require the strict version of node:assert.",
|
|
26
|
-
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
CallExpression(node) {
|
|
32
|
-
const callee = node.callee;
|
|
33
|
-
if (callee.type === "MemberExpression" && "name" in callee.object && "name" in callee.property && (callee.property.name.includes("strict") || callee.property.name.includes("Strict"))) {
|
|
34
|
-
let nonStrictFunctionName = "";
|
|
35
|
-
const strictFunctionName = callee.property.name;
|
|
36
|
-
if (strictFunctionName === "strict") {
|
|
37
|
-
nonStrictFunctionName = `${callee.object.name}.equal`;
|
|
38
|
-
} else {
|
|
39
|
-
const functionName = strictFunctionName.includes("strict") ? strictFunctionName.split("strict").join("") : strictFunctionName.split("Strict").join("");
|
|
40
|
-
const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
|
|
41
|
-
nonStrictFunctionName = `${callee.object.name}.${fixedFunctionName}`;
|
|
42
|
-
}
|
|
43
|
-
context.report({
|
|
44
|
-
node,
|
|
45
|
-
message: "Use non-strict counterpart for assert function.",
|
|
46
|
-
fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName)
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
export {
|
|
54
|
-
require_strict_assert_default as default
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFVQSxJQUFPLGdDQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLFlBQUksS0FBSyxVQUFVLGlCQUFpQixLQUFLLE9BQU8sU0FBUyxxQkFBcUI7QUFDNUUsZ0JBQU0sb0JBQW9CLEtBQUs7QUFDL0IsZ0JBQU0sbUJBQW1CLGtCQUFrQixXQUFXO0FBQUEsWUFDcEQsQ0FBQyxjQUFjLFVBQVUsU0FBUyw0QkFBNEIsVUFBVSxTQUFTO0FBQUEsVUFDbkY7QUFFQSxjQUFJLGtCQUFrQjtBQUNwQixrQkFBTSx5QkFBeUIsa0JBQWtCLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDL0Qsa0JBQU0saUJBQWlCLGlCQUFpQixTQUFTO0FBQ2pELGtCQUFNLGdCQUFnQixlQUFlLGlCQUFpQixNQUFNLElBQUk7QUFFaEUsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTTtBQUFBLGNBQ04sU0FBUztBQUFBLGNBQ1QsS0FBSyxDQUFDLFVBQVUsTUFBTSxpQkFBaUIsZ0JBQWdCLGFBQWE7QUFBQSxZQUN0RSxDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsTUFDQSxlQUFlLE1BQU07QUFDbkIsY0FBTSxTQUFTLEtBQUs7QUFDcEIsWUFDRSxPQUFPLFNBQVMsc0JBQ2hCLFVBQVUsT0FBTyxVQUNqQixVQUFVLE9BQU8sYUFDaEIsT0FBTyxTQUFTLEtBQUssU0FBUyxRQUFRLEtBQUssT0FBTyxTQUFTLEtBQUssU0FBUyxRQUFRLElBQ2xGO0FBQ0EsY0FBSSx3QkFBd0I7QUFDNUIsZ0JBQU0scUJBQXFCLE9BQU8sU0FBUztBQUMzQyxjQUFJLHVCQUF1QixVQUFVO0FBQ25DLG9DQUF3QixHQUFHLE9BQU8sT0FBTyxJQUFJO0FBQUEsVUFDL0MsT0FBTztBQUNMLGtCQUFNLGVBQWUsbUJBQW1CLFNBQVMsUUFBUSxJQUNyRCxtQkFBbUIsTUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQzFDLG1CQUFtQixNQUFNLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDOUMsa0JBQU0sb0JBQW9CLEdBQUcsYUFBYSxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxhQUFhLE1BQU0sQ0FBQyxDQUFDO0FBQ3pGLG9DQUF3QixHQUFHLE9BQU8sT0FBTyxJQUFJLElBQUksaUJBQWlCO0FBQUEsVUFDcEU7QUFDQSxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsU0FBUztBQUFBLFlBQ1QsS0FBSyxDQUFDLFVBQVUsTUFBTSxZQUFZLFFBQVEscUJBQXFCO0FBQUEsVUFDakUsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// require-strict-assert.ts
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) 2021-2023 Check Digit, LLC
|
|
5
|
-
*
|
|
6
|
-
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { Rule } from 'eslint';
|
|
10
|
-
|
|
11
|
-
export default {
|
|
12
|
-
meta: {
|
|
13
|
-
type: 'problem',
|
|
14
|
-
docs: {
|
|
15
|
-
description: 'Require importing strict version of node:assert and using non-strict assert functions.',
|
|
16
|
-
url: 'https://github.com/checkdigit/eslint-plugin',
|
|
17
|
-
},
|
|
18
|
-
fixable: 'code',
|
|
19
|
-
},
|
|
20
|
-
create(context) {
|
|
21
|
-
return {
|
|
22
|
-
Literal(node) {
|
|
23
|
-
if (node.value === 'node:assert' && node.parent.type === 'ImportDeclaration') {
|
|
24
|
-
const importDeclaration = node.parent;
|
|
25
|
-
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
26
|
-
(specifier) => specifier.type === 'ImportDefaultSpecifier' || specifier.type === 'ImportNamespaceSpecifier',
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
if (defaultSpecifier) {
|
|
30
|
-
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
31
|
-
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
32
|
-
const correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
|
|
33
|
-
|
|
34
|
-
context.report({
|
|
35
|
-
node: importDeclaration,
|
|
36
|
-
message: 'Require the strict version of node:assert.',
|
|
37
|
-
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
CallExpression(node) {
|
|
43
|
-
const callee = node.callee;
|
|
44
|
-
if (
|
|
45
|
-
callee.type === 'MemberExpression' &&
|
|
46
|
-
'name' in callee.object &&
|
|
47
|
-
'name' in callee.property &&
|
|
48
|
-
(callee.property.name.includes('strict') || callee.property.name.includes('Strict'))
|
|
49
|
-
) {
|
|
50
|
-
let nonStrictFunctionName = '';
|
|
51
|
-
const strictFunctionName = callee.property.name;
|
|
52
|
-
if (strictFunctionName === 'strict') {
|
|
53
|
-
nonStrictFunctionName = `${callee.object.name}.equal`;
|
|
54
|
-
} else {
|
|
55
|
-
const functionName = strictFunctionName.includes('strict')
|
|
56
|
-
? strictFunctionName.split('strict').join('')
|
|
57
|
-
: strictFunctionName.split('Strict').join('');
|
|
58
|
-
const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
|
|
59
|
-
nonStrictFunctionName = `${callee.object.name}.${fixedFunctionName}`;
|
|
60
|
-
}
|
|
61
|
-
context.report({
|
|
62
|
-
node,
|
|
63
|
-
message: 'Use non-strict counterpart for assert function.',
|
|
64
|
-
fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
},
|
|
70
|
-
} as Rule.RuleModule;
|
|
File without changes
|