@checkdigit/eslint-plugin 5.3.0-PR.44-c84d → 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 -39
- 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 -53
- package/src/require-strict-assert.ts +0 -68
- /package/dist-types/{require-strict-assert.d.ts → require-assert-message.d.ts} +0 -0
package/dist-cjs/index.cjs
CHANGED
|
@@ -321,50 +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 assert }";
|
|
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
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
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
|
+
});
|
|
366
347
|
}
|
|
367
|
-
}
|
|
348
|
+
}
|
|
368
349
|
}
|
|
369
350
|
}
|
|
370
351
|
};
|
|
@@ -377,7 +358,7 @@ var src_default = {
|
|
|
377
358
|
"file-path-comment": file_path_comment_default,
|
|
378
359
|
"no-card-numbers": no_card_numbers_default,
|
|
379
360
|
"no-uuid": no_uuid_default,
|
|
380
|
-
"require-
|
|
361
|
+
"require-assert-message": require_assert_message_default
|
|
381
362
|
},
|
|
382
363
|
configs: {
|
|
383
364
|
all: {
|
|
@@ -385,7 +366,7 @@ var src_default = {
|
|
|
385
366
|
"@checkdigit/no-card-numbers": "error",
|
|
386
367
|
"@checkdigit/file-path-comment": "error",
|
|
387
368
|
"@checkdigit/no-uuid": "error",
|
|
388
|
-
"@checkdigit/require-
|
|
369
|
+
"@checkdigit/require-assert-message": "error"
|
|
389
370
|
}
|
|
390
371
|
},
|
|
391
372
|
recommended: {
|
|
@@ -393,10 +374,10 @@ var src_default = {
|
|
|
393
374
|
"@checkdigit/no-card-numbers": "error",
|
|
394
375
|
"@checkdigit/file-path-comment": "off",
|
|
395
376
|
"@checkdigit/no-uuid": "error",
|
|
396
|
-
"@checkdigit/require-
|
|
377
|
+
"@checkdigit/require-assert-message": "error"
|
|
397
378
|
}
|
|
398
379
|
}
|
|
399
380
|
}
|
|
400
381
|
};
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9yZXF1aXJlLWFzc2VydC1tZXNzYWdlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFDakQsVUFBTSxlQUFlLFFBQVEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBRXJELFFBQUksY0FBYyxVQUFhLGlCQUFpQixRQUFXO0FBQ3pELGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxPQUFPO0FBQ0wsZ0JBQVEsT0FB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
|
|
402
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,53 +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 assert }";
|
|
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 && callee.object.name === "assert" && "name" in callee.property && (callee.property.name.includes("strict") || callee.property.name.includes("Strict"))) {
|
|
34
|
-
const strictFunctionName = callee.property.name;
|
|
35
|
-
const functionName = strictFunctionName.includes("strict") ? strictFunctionName.split("strict").join("") : strictFunctionName.split("Strict").join("");
|
|
36
|
-
const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
|
|
37
|
-
const nonStrictFunctionName = `assert.${fixedFunctionName}`;
|
|
38
|
-
context.report({
|
|
39
|
-
node,
|
|
40
|
-
message: "Use non-strict counterpart for assert function.",
|
|
41
|
-
fix(fixer) {
|
|
42
|
-
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
export {
|
|
51
|
-
require_strict_assert_default as default
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFVQSxJQUFPLGdDQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLFlBQUksS0FBSyxVQUFVLGlCQUFpQixLQUFLLE9BQU8sU0FBUyxxQkFBcUI7QUFDNUUsZ0JBQU0sb0JBQW9CLEtBQUs7QUFDL0IsZ0JBQU0sbUJBQW1CLGtCQUFrQixXQUFXO0FBQUEsWUFDcEQsQ0FBQyxjQUFjLFVBQVUsU0FBUyw0QkFBNEIsVUFBVSxTQUFTO0FBQUEsVUFDbkY7QUFFQSxjQUFJLGtCQUFrQjtBQUNwQixrQkFBTSx5QkFBeUIsa0JBQWtCLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDL0Qsa0JBQU0saUJBQWlCLGlCQUFpQixTQUFTO0FBQ2pELGtCQUFNLGdCQUFnQjtBQUV0QixvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixTQUFTO0FBQUEsY0FDVCxLQUFLLENBQUMsVUFBVSxNQUFNLGlCQUFpQixnQkFBZ0IsYUFBYTtBQUFBLFlBQ3RFLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLGVBQWUsTUFBTTtBQUNuQixjQUFNLFNBQVMsS0FBSztBQUNwQixZQUNFLE9BQU8sU0FBUyxzQkFDaEIsVUFBVSxPQUFPLFVBQ2pCLE9BQU8sT0FBTyxTQUFTLFlBQ3ZCLFVBQVUsT0FBTyxhQUNoQixPQUFPLFNBQVMsS0FBSyxTQUFTLFFBQVEsS0FBSyxPQUFPLFNBQVMsS0FBSyxTQUFTLFFBQVEsSUFDbEY7QUFDQSxnQkFBTSxxQkFBcUIsT0FBTyxTQUFTO0FBQzNDLGdCQUFNLGVBQWUsbUJBQW1CLFNBQVMsUUFBUSxJQUNyRCxtQkFBbUIsTUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQzFDLG1CQUFtQixNQUFNLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDOUMsZ0JBQU0sb0JBQW9CLEdBQUcsYUFBYSxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxhQUFhLE1BQU0sQ0FBQyxDQUFDO0FBQ3pGLGdCQUFNLHdCQUF3QixVQUFVLGlCQUFpQjtBQUN6RCxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsU0FBUztBQUFBLFlBQ1QsSUFBSSxPQUFPO0FBQ1QscUJBQU8sTUFBTSxZQUFZLFFBQVEscUJBQXFCO0FBQUEsWUFDeEQ7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,68 +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 assert }';
|
|
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
|
-
callee.object.name === 'assert' &&
|
|
48
|
-
'name' in callee.property &&
|
|
49
|
-
(callee.property.name.includes('strict') || callee.property.name.includes('Strict'))
|
|
50
|
-
) {
|
|
51
|
-
const strictFunctionName = callee.property.name;
|
|
52
|
-
const functionName = strictFunctionName.includes('strict')
|
|
53
|
-
? strictFunctionName.split('strict').join('')
|
|
54
|
-
: strictFunctionName.split('Strict').join('');
|
|
55
|
-
const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
|
|
56
|
-
const nonStrictFunctionName = `assert.${fixedFunctionName}`;
|
|
57
|
-
context.report({
|
|
58
|
-
node,
|
|
59
|
-
message: 'Use non-strict counterpart for assert function.',
|
|
60
|
-
fix(fixer) {
|
|
61
|
-
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
},
|
|
68
|
-
} as Rule.RuleModule;
|
|
File without changes
|