@checkdigit/eslint-plugin 5.3.0-PR.44-7090 → 5.3.0-PR.45-45d2
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 +21 -44
- package/dist-mjs/index.mjs +5 -5
- package/dist-mjs/require-assert-message.mjs +33 -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 +39 -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,30 @@ 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/
|
|
331
|
-
}
|
|
332
|
-
fixable: "code"
|
|
329
|
+
description: "Validate that message argument to always be supplied to node:assert methods",
|
|
330
|
+
url: "https://github.com/xxxxx/eslint-plugin"
|
|
331
|
+
}
|
|
333
332
|
},
|
|
334
333
|
create(context) {
|
|
335
334
|
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
335
|
CallExpression(node) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
336
|
+
if (node.callee.type === "MemberExpression" && "name" in node.callee.object && "name" in node.callee.property) {
|
|
337
|
+
const objectName = node.callee.object.name;
|
|
338
|
+
const methodName = node.callee.property.name;
|
|
339
|
+
if (objectName === "assert" && methodName !== "ifError") {
|
|
340
|
+
const expectedMessageArgIndex = methodName === "ok" || methodName === "strict" ? 1 : 2;
|
|
341
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
342
|
+
context.report({
|
|
343
|
+
node,
|
|
344
|
+
message: `Missing message argument in ${methodName}() method.`
|
|
345
|
+
});
|
|
346
|
+
}
|
|
365
347
|
}
|
|
366
|
-
context.report({
|
|
367
|
-
node,
|
|
368
|
-
message: "Use non-strict counterpart for assert function.",
|
|
369
|
-
fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName)
|
|
370
|
-
});
|
|
371
348
|
}
|
|
372
349
|
}
|
|
373
350
|
};
|
|
@@ -380,7 +357,7 @@ var src_default = {
|
|
|
380
357
|
"file-path-comment": file_path_comment_default,
|
|
381
358
|
"no-card-numbers": no_card_numbers_default,
|
|
382
359
|
"no-uuid": no_uuid_default,
|
|
383
|
-
"require-
|
|
360
|
+
"require-assert-message": require_assert_message_default
|
|
384
361
|
},
|
|
385
362
|
configs: {
|
|
386
363
|
all: {
|
|
@@ -388,7 +365,7 @@ var src_default = {
|
|
|
388
365
|
"@checkdigit/no-card-numbers": "error",
|
|
389
366
|
"@checkdigit/file-path-comment": "error",
|
|
390
367
|
"@checkdigit/no-uuid": "error",
|
|
391
|
-
"@checkdigit/require-
|
|
368
|
+
"@checkdigit/require-assert-message": "error"
|
|
392
369
|
}
|
|
393
370
|
},
|
|
394
371
|
recommended: {
|
|
@@ -396,10 +373,10 @@ var src_default = {
|
|
|
396
373
|
"@checkdigit/no-card-numbers": "error",
|
|
397
374
|
"@checkdigit/file-path-comment": "off",
|
|
398
375
|
"@checkdigit/no-uuid": "error",
|
|
399
|
-
"@checkdigit/require-
|
|
376
|
+
"@checkdigit/require-assert-message": "error"
|
|
400
377
|
}
|
|
401
378
|
}
|
|
402
379
|
}
|
|
403
380
|
};
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1tZXNzYWdlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFDakQsVUFBTSxlQUFlLFFBQVEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBRXJELFFBQUksY0FBYyxVQUFhLGlCQUFpQixRQUFXO0FBQ3pELGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxPQUFPO0FBQ0wsZ0JBQVEsT0FB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
|
|
405
382
|
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,33 @@
|
|
|
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
|
+
},
|
|
10
|
+
create(context) {
|
|
11
|
+
return {
|
|
12
|
+
CallExpression(node) {
|
|
13
|
+
if (node.callee.type === "MemberExpression" && "name" in node.callee.object && "name" in node.callee.property) {
|
|
14
|
+
const objectName = node.callee.object.name;
|
|
15
|
+
const methodName = node.callee.property.name;
|
|
16
|
+
if (objectName === "assert" && methodName !== "ifError") {
|
|
17
|
+
const expectedMessageArgIndex = methodName === "ok" || methodName === "strict" ? 1 : 2;
|
|
18
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
19
|
+
context.report({
|
|
20
|
+
node,
|
|
21
|
+
message: `Missing message argument in ${methodName}() method.`
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
require_assert_message_default as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtYXNzZXJ0LW1lc3NhZ2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBVUEsSUFBTyxpQ0FBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxlQUFlLE1BQU07QUFDbkIsWUFBSSxLQUFLLE9BQU8sU0FBUyxzQkFBc0IsVUFBVSxLQUFLLE9BQU8sVUFBVSxVQUFVLEtBQUssT0FBTyxVQUFVO0FBQzdHLGdCQUFNLGFBQWEsS0FBSyxPQUFPLE9BQU87QUFDdEMsZ0JBQU0sYUFBYSxLQUFLLE9BQU8sU0FBUztBQUV4QyxjQUFJLGVBQWUsWUFBWSxlQUFlLFdBQVc7QUFDdkQsa0JBQU0sMEJBQTBCLGVBQWUsUUFBUSxlQUFlLFdBQVcsSUFBSTtBQUNyRixnQkFBSSxLQUFLLFVBQVUsVUFBVSx5QkFBeUI7QUFDcEQsc0JBQVEsT0FBTztBQUFBLGdCQUNiO0FBQUEsZ0JBQ0EsU0FBUywrQkFBK0IsVUFBVTtBQUFBLGNBQ3BELENBQUM7QUFBQSxZQUNIO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
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-45d2","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,39 @@
|
|
|
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
|
+
},
|
|
19
|
+
create(context) {
|
|
20
|
+
return {
|
|
21
|
+
CallExpression(node) {
|
|
22
|
+
if (node.callee.type === 'MemberExpression' && 'name' in node.callee.object && 'name' in node.callee.property) {
|
|
23
|
+
const objectName = node.callee.object.name;
|
|
24
|
+
const methodName = node.callee.property.name;
|
|
25
|
+
|
|
26
|
+
if (objectName === 'assert' && methodName !== 'ifError') {
|
|
27
|
+
const expectedMessageArgIndex = methodName === 'ok' || methodName === 'strict' ? 1 : 2;
|
|
28
|
+
if (node.arguments.length <= expectedMessageArgIndex) {
|
|
29
|
+
context.report({
|
|
30
|
+
node,
|
|
31
|
+
message: `Missing message argument in ${methodName}() method.`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
} 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
|