@checkdigit/eslint-plugin 5.3.0-PR.44-c6db → 5.3.0-PR.44-e71b
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
CHANGED
|
@@ -322,23 +322,49 @@ var no_uuid_default = {
|
|
|
322
322
|
};
|
|
323
323
|
|
|
324
324
|
// src/require-strict-assert.ts
|
|
325
|
+
var STRICT_ASSERT_INDEX = 6;
|
|
325
326
|
var require_strict_assert_default = {
|
|
326
327
|
meta: {
|
|
327
328
|
type: "problem",
|
|
328
329
|
docs: {
|
|
329
|
-
description: "Require importing strict version of node:assert",
|
|
330
|
+
description: "Require importing strict version of node:assert and using non-strict assert functions.",
|
|
330
331
|
url: "https://github.com/checkdigit/eslint-plugin"
|
|
331
|
-
}
|
|
332
|
+
},
|
|
333
|
+
fixable: "code"
|
|
332
334
|
},
|
|
333
335
|
create(context) {
|
|
334
336
|
return {
|
|
335
|
-
|
|
336
|
-
if (node.
|
|
337
|
-
|
|
338
|
-
|
|
337
|
+
Literal(node) {
|
|
338
|
+
if (node.value === "node:assert" && node.parent.type === "ImportDeclaration") {
|
|
339
|
+
const importDeclaration = node.parent;
|
|
340
|
+
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
341
|
+
(specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
|
|
342
|
+
);
|
|
343
|
+
if (defaultSpecifier) {
|
|
344
|
+
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
345
|
+
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
346
|
+
const correctedText = "{ strict as assert }";
|
|
347
|
+
context.report({
|
|
348
|
+
node: importDeclaration,
|
|
349
|
+
message: "Require the strict version of node:assert.",
|
|
350
|
+
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
CallExpression(node) {
|
|
356
|
+
const callee = node.callee;
|
|
357
|
+
if (callee.type === "MemberExpression" && "name" in callee.object && callee.object.name === "assert" && "name" in callee.property && callee.property.name.startsWith("strict")) {
|
|
358
|
+
const functionName = callee.property.name.slice(STRICT_ASSERT_INDEX);
|
|
359
|
+
const firstChar = functionName.charAt(0).toLowerCase();
|
|
360
|
+
const restOfName = functionName.slice(1);
|
|
361
|
+
const nonStrictFunctionName = `assert.${firstChar}${restOfName}`;
|
|
339
362
|
context.report({
|
|
340
363
|
node,
|
|
341
|
-
message: "
|
|
364
|
+
message: "Use non-strict counterpart for assert function.",
|
|
365
|
+
fix(fixer) {
|
|
366
|
+
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
367
|
+
}
|
|
342
368
|
});
|
|
343
369
|
}
|
|
344
370
|
}
|
|
@@ -373,5 +399,5 @@ var src_default = {
|
|
|
373
399
|
}
|
|
374
400
|
}
|
|
375
401
|
};
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9yZXF1aXJlLXN0cmljdC1hc3NlcnQudHMiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ1VBLElBQU8sNEJBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsT0FBTyxTQUFTO0FBQ2QsVUFBTSxZQUFZLFFBQVEsV0FBVyxTQUFTLEVBQUUsQ0FBQztBQUNqRCxVQUFNLGVBQWUsUUFBUSxTQUFTLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFFckQsUUFBSSxjQUFjLFVBQWEsaUJBQWlCLFFBQVc7QUFDekQsYUFBTyxDQUFDO0FBQUEsSUFDVjtBQUVBLFFBQUksQ0FBQyxVQUFVLFdBQVcsSUFBSSxHQUFHO0FBQy9CLFVBQUksVUFBVSxXQUFXLElBQUksR0FBRztBQUM5QixnQkFBUSxPQUFPO0FBQUEsVUFDYixLQUFLO0FBQUEsWUFDSCxPQUFPO0FBQUEsY0FDTCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFlBQ0EsS0FBSztBQUFBLGNBQ0gsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxVQUNGO0FBQUEsVUFDQSxTQUFTO0FBQUEsVUFDVCxJQUFJLE9BQXVCO0FBQ3pCLG1CQUFPLE1BQU0sc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxZQUFZO0FBQUE7QUFBQSxDQUFNO0FBQUEsVUFDckU7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNILE9BQU87QUFDTCxnQkFBUSxPQUFPO0FBQUEsVUFDYixLQUFLO0FBQUEsWUFDSCxPQUFPO0FBQUEsY0FDTCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFlBQ0EsS0FBSztBQUFBLGNBQ0gsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxVQUNGO0FBQUEsVUFDQSxTQUFTO0FBQUEsVUFDVCxJQUFJLE9BQXVCO0FBQ3pCLG1CQUFPLE1BQU0sc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxZQUFZO0FBQUE7QUFBQSxDQUFNO0FBQUEsVUFDckU7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRixPQUFPO0FBQ0wsWUFBTSxnQkFBZ0IsVUFBVSxNQUFNLEtBQUssRUFBRSxDQUFDO0FBQzlDLFVBQUksaUJBQWlCLGVBQWU7QUFDbEMsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsVUFBVSxNQUFNLEdBQUcsTUFBTSxZQUFZLEVBQUU7QUFBQSxVQUMzRTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBRUEsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGOzs7QUM1RUEsSUFBTSxvQkFBb0I7QUFDMUIsSUFBTSxxQkFBcUI7QUFDM0IsSUFBTSxrQkFBa0I7QUFDeEIsSUFBTSxtQkFBbUI7QUFBQSxFQUN2QjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBRUEsU0FBUyxVQUFVLFlBQW9CO0FBQ3JDLFNBQ0UsV0FDRyxNQUFNLEVBQUUsRUFDUixRQUFRLEVBQ1IsSUFBSSxDQUFDLFVBQVUsU0FBUyxPQUFPLEVBQUUsQ0FBQyxFQUNsQyxPQUFPLENBQUMsZUFBZSxjQUFjLFVBQVU7QUFDOUMsUUFBSSxRQUFRO0FBQ1osUUFBSSxRQUFRLE1BQU0sR0FBRztBQUNuQixlQUFTO0FBRVQsVUFBSSxRQUFRLEdBQUc7QUFDYixnQkFBUyxRQUFRLEtBQU07QUFBQSxNQUN6QjtBQUFBLElBQ0Y7QUFDQSxXQUFPLGdCQUFnQjtBQUFBLEVBQ3pCLEdBQUcsQ0FBQyxJQUNKLE9BQ0Y7QUFFSjtBQUVBLFNBQVMsb0JBQW9CLE9BQWUsU0FBMkIsTUFBYSxLQUFzQjtBQUN4RyxRQUFNLFVBQVUsTUFBTSxNQUFNLGVBQWU7QUFDM0MsTUFBSSxZQUFZLE1BQU07QUFDcEI7QUFBQSxFQUNGO0FBQ0EsUUFBTSxjQUFjLFFBQVE7QUFBQSxJQUMxQixDQUFDLFVBQ0MsVUFBVSxLQUFLLEtBQ2YsQ0FBQyxpQkFBaUIsU0FBUyxLQUFLO0FBQUEsSUFFaEMsQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUNyQixDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQ3JCLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FDckIsQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUNyQixDQUFDLE1BQU0sV0FBVyxHQUFHO0FBQUEsRUFDekI7QUFDQSxNQUFJLFlBQVksV0FBVyxHQUFHO0FBQzVCLFVBQU0sYUFBYSxZQUFZLENBQUM7QUFDaEMsUUFBSSxlQUFlLFFBQVc7QUFDNUIsVUFBSSxTQUFTLFFBQVc7QUFDdEIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsV0FBVztBQUFBLFVBQ1gsTUFBTTtBQUFBLFlBQ0osUUFBUTtBQUFBLFVBQ1Y7QUFBQSxVQUNBO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxXQUFXLFFBQVEsUUFBVztBQUM1QixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsWUFDSixRQUFRO0FBQUEsVUFDVjtBQUFBLFVBQ0EsS0FBSztBQUFBLFlBQ0gsT0FBTyxJQUFJO0FBQUEsWUFDWCxLQUFLLElBQUk7QUFBQSxVQUNYO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGLFdBQVcsWUFBWSxTQUFTLEdBQUc7QUFDakMsUUFBSSxTQUFTLFFBQVc7QUFDdEIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixTQUFTLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDNUI7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxXQUFXLFFBQVEsUUFBVztBQUM1QixjQUFRLE9BQU87QUFBQSxRQUNiLFdBQVc7QUFBQSxRQUNYLE1BQU07QUFBQSxVQUNKLFNBQVMsUUFBUSxLQUFLLElBQUk7QUFBQSxRQUM1QjtBQUFBLFFBQ0EsS0FBSztBQUFBLFVBQ0gsT0FBTyxJQUFJO0FBQUEsVUFDWCxLQUFLLElBQUk7QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU8sMEJBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLGlCQUFpQixHQUFHO0FBQUEsTUFDckIsQ0FBQyxrQkFBa0IsR0FBRztBQUFBLElBQ3hCO0FBQUEsRUFDRjtBQUFBLEVBQ0EsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxXQUFXLFdBQVcsZUFBZTtBQUUzQyxhQUFTLFFBQVEsQ0FBQyxZQUFZO0FBQzVCLFVBQUksUUFBUSxRQUFRLFVBQWEsUUFBUSxRQUFRLE1BQU07QUFDckQsNEJBQW9CLFFBQVEsT0FBTyxTQUFTLFFBQVcsUUFBUSxHQUFHO0FBQUEsTUFDcEU7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPO0FBQUEsTUFDTCxRQUFRLE1BQU07QUFDWixZQUFJLEtBQUssVUFBVSxRQUFXO0FBQzVCO0FBQUEsUUFDRjtBQUNBLFlBQUksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLEtBQUssVUFBVSxVQUFVO0FBQ3BFO0FBQUEsUUFDRjtBQUNBLGNBQU0sUUFBUSxHQUFHLEtBQUssS0FBSztBQUMzQiw0QkFBb0IsT0FBTyxTQUFTLElBQUk7QUFBQSxNQUMxQztBQUFBLE1BQ0EsZ0JBQWdCLE1BQU07QUFDcEIsWUFBSSxPQUFPLEtBQUssTUFBTSxXQUFXLFVBQVU7QUFDekM7QUFBQSxRQUNGO0FBQ0EsNEJBQW9CLEtBQUssTUFBTSxRQUFRLFNBQVMsSUFBSTtBQUFBLE1BQ3REO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FDM0lBLElBQU0sYUFBYTtBQUNuQixJQUFNLGNBQWM7QUFDcEIsSUFBTSxZQUFZO0FBRWxCLFNBQVMsYUFBYSxPQUFlLFNBQTJCLE1BQWEsS0FBc0I7QUFDakcsUUFBTSxVQUFVLE1BQU0sTUFBTSxTQUFTO0FBQ3JDLE1BQUksWUFBWSxNQUFNO0FBQ3BCO0FBQUEsRUFDRjtBQUNBLE1BQUksUUFBUSxXQUFXLEdBQUc7QUFDeEIsUUFBSSxTQUFTLFFBQVc7QUFDdEIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixNQUFNLFFBQVEsQ0FBQztBQUFBLFFBQ2pCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixNQUFNLFFBQVEsQ0FBQztBQUFBLFFBQ2pCO0FBQUEsUUFDQSxLQUFLO0FBQUEsVUFDSCxPQUFPLElBQUk7QUFBQSxVQUNYLEtBQUssSUFBSTtBQUFBLFFBQ1g7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRixXQUFXLFFBQVEsU0FBUyxHQUFHO0FBQzdCLFFBQUksU0FBUyxRQUFXO0FBQ3RCLGNBQVEsT0FBTztBQUFBLFFBQ2IsV0FBVztBQUFBLFFBQ1gsTUFBTTtBQUFBLFVBQ0osT0FBTyxRQUFRLEtBQUssSUFBSTtBQUFBLFFBQzFCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixPQUFPLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDMUI7QUFBQSxRQUNBLEtBQUs7QUFBQSxVQUNILE9BQU8sSUFBSTtBQUFBLFVBQ1gsS0FBSyxJQUFJO0FBQUEsUUFDWDtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFPLGtCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxVQUFVLEdBQUc7QUFBQSxNQUNkLENBQUMsV0FBVyxHQUFHO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQWEsUUFBUTtBQUMzQixVQUFNLFdBQVcsV0FBVyxlQUFlO0FBRTNDLGFBQVMsUUFBUSxDQUFDLFlBQVk7QUFDNUIsVUFBSSxRQUFRLFFBQVEsVUFBYSxRQUFRLFFBQVEsTUFBTTtBQUNyRCxxQkFBYSxRQUFRLE9BQU8sU0FBUyxRQUFXLFFBQVEsR0FBRztBQUFBLE1BQzdEO0FBQUEsSUFDRixDQUFDO0FBQ0QsV0FBTztBQUFBLE1BQ0wsUUFBUSxNQUFNO0FBQ1osWUFBSSxLQUFLLFVBQVUsUUFBVztBQUM1QjtBQUFBLFFBQ0Y7QUFDQSxZQUFJLE9BQU8sS0FBSyxVQUFVLFVBQVU7QUFDbEM7QUFBQSxRQUNGO0FBQ0EsY0FBTSxRQUFRLEdBQUcsS0FBSyxLQUFLO0FBQzNCLHFCQUFhLE9BQU8sU0FBUyxJQUFJO0FBQUEsTUFDbkM7QUFBQSxNQUNBLGdCQUFnQixNQUFNO0FBQ3BCLFlBQUksT0FBTyxLQUFLLE1BQU0sV0FBVyxVQUFVO0FBQ3pDO0FBQUEsUUFDRjtBQUNBLHFCQUFhLEtBQUssTUFBTSxRQUFRLFNBQVMsSUFBSTtBQUFBLE1BQy9DO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FDL0ZBLElBQU0sc0JBQXNCO0FBQzVCLElBQU8sZ0NBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsUUFBUSxNQUFNO0FBQ1osWUFBSSxLQUFLLFVBQVUsaUJBQWlCLEtBQUssT0FBTyxTQUFTLHFCQUFxQjtBQUM1RSxnQkFBTSxvQkFBb0IsS0FBSztBQUMvQixnQkFBTSxtQkFBbUIsa0JBQWtCLFdBQVc7QUFBQSxZQUNwRCxDQUFDLGNBQWMsVUFBVSxTQUFTLDRCQUE0QixVQUFVLFNBQVM7QUFBQSxVQUNuRjtBQUVBLGNBQUksa0JBQWtCO0FBQ3BCLGtCQUFNLHlCQUF5QixrQkFBa0IsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUMvRCxrQkFBTSxpQkFBaUIsaUJBQWlCLFNBQVM7QUFDakQsa0JBQU0sZ0JBQWdCO0FBRXRCLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU07QUFBQSxjQUNOLFNBQVM7QUFBQSxjQUNULEtBQUssQ0FBQyxVQUFVLE1BQU0saUJBQWlCLGdCQUFnQixhQUFhO0FBQUEsWUFDdEUsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZUFBZSxNQUFNO0FBQ25CLGNBQU0sU0FBUyxLQUFLO0FBQ3BCLFlBQ0UsT0FBTyxTQUFTLHNCQUNoQixVQUFVLE9BQU8sVUFDakIsT0FBTyxPQUFPLFNBQVMsWUFDdkIsVUFBVSxPQUFPLFlBQ2pCLE9BQU8sU0FBUyxLQUFLLFdBQVcsUUFBUSxHQUN4QztBQUNBLGdCQUFNLGVBQWUsT0FBTyxTQUFTLEtBQUssTUFBTSxtQkFBbUI7QUFDbkUsZ0JBQU0sWUFBWSxhQUFhLE9BQU8sQ0FBQyxFQUFFLFlBQVk7QUFDckQsZ0JBQU0sYUFBYSxhQUFhLE1BQU0sQ0FBQztBQUN2QyxnQkFBTSx3QkFBd0IsVUFBVSxTQUFTLEdBQUcsVUFBVTtBQUM5RCxrQkFBUSxPQUFPO0FBQUEsWUFDYjtBQUFBLFlBQ0EsU0FBUztBQUFBLFlBQ1QsSUFBSSxPQUFPO0FBQ1QscUJBQU8sTUFBTSxZQUFZLFFBQVEscUJBQXFCO0FBQUEsWUFDeEQ7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7OztBSnJEQSxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHlCQUF5QjtBQUFBLEVBQzNCO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxNQUN2QztBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLE1BQ3ZDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
377
403
|
module.exports = module.exports.default;
|
|
@@ -1,21 +1,47 @@
|
|
|
1
1
|
// src/require-strict-assert.ts
|
|
2
|
+
var STRICT_ASSERT_INDEX = 6;
|
|
2
3
|
var require_strict_assert_default = {
|
|
3
4
|
meta: {
|
|
4
5
|
type: "problem",
|
|
5
6
|
docs: {
|
|
6
|
-
description: "Require importing strict version of node:assert",
|
|
7
|
+
description: "Require importing strict version of node:assert and using non-strict assert functions.",
|
|
7
8
|
url: "https://github.com/checkdigit/eslint-plugin"
|
|
8
|
-
}
|
|
9
|
+
},
|
|
10
|
+
fixable: "code"
|
|
9
11
|
},
|
|
10
12
|
create(context) {
|
|
11
13
|
return {
|
|
12
|
-
|
|
13
|
-
if (node.
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
Literal(node) {
|
|
15
|
+
if (node.value === "node:assert" && node.parent.type === "ImportDeclaration") {
|
|
16
|
+
const importDeclaration = node.parent;
|
|
17
|
+
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
18
|
+
(specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
|
|
19
|
+
);
|
|
20
|
+
if (defaultSpecifier) {
|
|
21
|
+
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
22
|
+
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
23
|
+
const correctedText = "{ strict as assert }";
|
|
24
|
+
context.report({
|
|
25
|
+
node: importDeclaration,
|
|
26
|
+
message: "Require the strict version of node:assert.",
|
|
27
|
+
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
CallExpression(node) {
|
|
33
|
+
const callee = node.callee;
|
|
34
|
+
if (callee.type === "MemberExpression" && "name" in callee.object && callee.object.name === "assert" && "name" in callee.property && callee.property.name.startsWith("strict")) {
|
|
35
|
+
const functionName = callee.property.name.slice(STRICT_ASSERT_INDEX);
|
|
36
|
+
const firstChar = functionName.charAt(0).toLowerCase();
|
|
37
|
+
const restOfName = functionName.slice(1);
|
|
38
|
+
const nonStrictFunctionName = `assert.${firstChar}${restOfName}`;
|
|
16
39
|
context.report({
|
|
17
40
|
node,
|
|
18
|
-
message: "
|
|
41
|
+
message: "Use non-strict counterpart for assert function.",
|
|
42
|
+
fix(fixer) {
|
|
43
|
+
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
44
|
+
}
|
|
19
45
|
});
|
|
20
46
|
}
|
|
21
47
|
}
|
|
@@ -25,4 +51,4 @@ var require_strict_assert_default = {
|
|
|
25
51
|
export {
|
|
26
52
|
require_strict_assert_default as default
|
|
27
53
|
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFVQSxJQUFNLHNCQUFzQjtBQUM1QixJQUFPLGdDQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLFlBQUksS0FBSyxVQUFVLGlCQUFpQixLQUFLLE9BQU8sU0FBUyxxQkFBcUI7QUFDNUUsZ0JBQU0sb0JBQW9CLEtBQUs7QUFDL0IsZ0JBQU0sbUJBQW1CLGtCQUFrQixXQUFXO0FBQUEsWUFDcEQsQ0FBQyxjQUFjLFVBQVUsU0FBUyw0QkFBNEIsVUFBVSxTQUFTO0FBQUEsVUFDbkY7QUFFQSxjQUFJLGtCQUFrQjtBQUNwQixrQkFBTSx5QkFBeUIsa0JBQWtCLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDL0Qsa0JBQU0saUJBQWlCLGlCQUFpQixTQUFTO0FBQ2pELGtCQUFNLGdCQUFnQjtBQUV0QixvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixTQUFTO0FBQUEsY0FDVCxLQUFLLENBQUMsVUFBVSxNQUFNLGlCQUFpQixnQkFBZ0IsYUFBYTtBQUFBLFlBQ3RFLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLGVBQWUsTUFBTTtBQUNuQixjQUFNLFNBQVMsS0FBSztBQUNwQixZQUNFLE9BQU8sU0FBUyxzQkFDaEIsVUFBVSxPQUFPLFVBQ2pCLE9BQU8sT0FBTyxTQUFTLFlBQ3ZCLFVBQVUsT0FBTyxZQUNqQixPQUFPLFNBQVMsS0FBSyxXQUFXLFFBQVEsR0FDeEM7QUFDQSxnQkFBTSxlQUFlLE9BQU8sU0FBUyxLQUFLLE1BQU0sbUJBQW1CO0FBQ25FLGdCQUFNLFlBQVksYUFBYSxPQUFPLENBQUMsRUFBRSxZQUFZO0FBQ3JELGdCQUFNLGFBQWEsYUFBYSxNQUFNLENBQUM7QUFDdkMsZ0JBQU0sd0JBQXdCLFVBQVUsU0FBUyxHQUFHLFVBQVU7QUFDOUQsa0JBQVEsT0FBTztBQUFBLFlBQ2I7QUFBQSxZQUNBLFNBQVM7QUFBQSxZQUNULElBQUksT0FBTztBQUNULHFCQUFPLE1BQU0sWUFBWSxRQUFRLHFCQUFxQjtBQUFBLFlBQ3hEO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"5.3.0-PR.44-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"5.3.0-PR.44-e71b","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.1","@checkdigit/prettier-config":"^4.1.0","@checkdigit/typescript-config":"^5.1.0","@types/eslint":"^8.44.6","@typescript-eslint/eslint-plugin":"^6.10.0","@typescript-eslint/parser":"^6.10.0","eslint-config-prettier":"^9.0.0","eslint-plugin-eslint-plugin":"^5.1.1","eslint-plugin-import":"^2.29.0","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.23.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"]}
|
|
@@ -1,33 +1,64 @@
|
|
|
1
1
|
// require-strict-assert.ts
|
|
2
2
|
|
|
3
|
-
import type { Rule } from 'eslint';
|
|
4
|
-
|
|
5
3
|
/*
|
|
6
4
|
* Copyright (c) 2021-2023 Check Digit, LLC
|
|
7
5
|
*
|
|
8
6
|
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
9
7
|
*/
|
|
10
8
|
|
|
9
|
+
import type { Rule } from 'eslint';
|
|
10
|
+
|
|
11
|
+
const STRICT_ASSERT_INDEX = 6;
|
|
11
12
|
export default {
|
|
12
13
|
meta: {
|
|
13
14
|
type: 'problem',
|
|
14
15
|
docs: {
|
|
15
|
-
description: 'Require importing strict version of node:assert',
|
|
16
|
+
description: 'Require importing strict version of node:assert and using non-strict assert functions.',
|
|
16
17
|
url: 'https://github.com/checkdigit/eslint-plugin',
|
|
17
18
|
},
|
|
19
|
+
fixable: 'code',
|
|
18
20
|
},
|
|
19
21
|
create(context) {
|
|
20
22
|
return {
|
|
21
|
-
|
|
23
|
+
Literal(node) {
|
|
24
|
+
if (node.value === 'node:assert' && node.parent.type === 'ImportDeclaration') {
|
|
25
|
+
const importDeclaration = node.parent;
|
|
26
|
+
const defaultSpecifier = importDeclaration.specifiers.find(
|
|
27
|
+
(specifier) => specifier.type === 'ImportDefaultSpecifier' || specifier.type === 'ImportNamespaceSpecifier',
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (defaultSpecifier) {
|
|
31
|
+
const importDeclarationRange = importDeclaration.range ?? [0, 0];
|
|
32
|
+
const rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
|
|
33
|
+
const correctedText = '{ strict as assert }';
|
|
34
|
+
|
|
35
|
+
context.report({
|
|
36
|
+
node: importDeclaration,
|
|
37
|
+
message: 'Require the strict version of node:assert.',
|
|
38
|
+
fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
CallExpression(node) {
|
|
44
|
+
const callee = node.callee;
|
|
22
45
|
if (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
46
|
+
callee.type === 'MemberExpression' &&
|
|
47
|
+
'name' in callee.object &&
|
|
48
|
+
callee.object.name === 'assert' &&
|
|
49
|
+
'name' in callee.property &&
|
|
50
|
+
callee.property.name.startsWith('strict')
|
|
27
51
|
) {
|
|
52
|
+
const functionName = callee.property.name.slice(STRICT_ASSERT_INDEX);
|
|
53
|
+
const firstChar = functionName.charAt(0).toLowerCase();
|
|
54
|
+
const restOfName = functionName.slice(1);
|
|
55
|
+
const nonStrictFunctionName = `assert.${firstChar}${restOfName}`;
|
|
28
56
|
context.report({
|
|
29
57
|
node,
|
|
30
|
-
message: '
|
|
58
|
+
message: 'Use non-strict counterpart for assert function.',
|
|
59
|
+
fix(fixer) {
|
|
60
|
+
return fixer.replaceText(callee, nonStrictFunctionName);
|
|
61
|
+
},
|
|
31
62
|
});
|
|
32
63
|
}
|
|
33
64
|
},
|