@checkdigit/eslint-plugin 5.4.0-PR.44-36b2 → 5.4.0

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.
@@ -321,6 +321,86 @@ var no_uuid_default = {
321
321
  }
322
322
  };
323
323
 
324
+ // src/no-wallaby-comment.ts
325
+ var wallabyRegex = /\s*(?:[?]{1,2}\.?|file\.only|file\.skip)\s*/gu;
326
+ var commentRegex = /\s*(?:\/\/|<!--)\s*(?<comment>\?{1,2}\.?\s*|file\.(?:only|skip))\s*/gu;
327
+ function removeWallabyComment(context, sourceCode, start, end) {
328
+ context.report({
329
+ loc: {
330
+ start: sourceCode.getLocFromIndex(start),
331
+ end: sourceCode.getLocFromIndex(end)
332
+ },
333
+ message: "Remove wallaby-specific comments",
334
+ fix: (fixer) => fixer.removeRange([start, end])
335
+ });
336
+ }
337
+ function processLineComment(context, sourceCode, comment) {
338
+ if (comment.loc) {
339
+ const line = sourceCode.getLines()[comment.loc.start.line - 1];
340
+ if (line) {
341
+ let match;
342
+ while ((match = commentRegex.exec(line)) !== null) {
343
+ const start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: match.index });
344
+ const end = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.end.column });
345
+ removeWallabyComment(context, sourceCode, start, end);
346
+ }
347
+ }
348
+ }
349
+ }
350
+ function processBlockComment(context, sourceCode, comment) {
351
+ const commentValues = comment.value.split("\n");
352
+ const blockCommentRegex = /^(?:\s*\*\s*)?(?:file\.only|file\.skip)$/gu;
353
+ commentValues.forEach((commentValue) => {
354
+ let startLine = comment.loc?.start.line ?? 0;
355
+ const endLine = comment.loc?.end.line ?? 0;
356
+ let match;
357
+ while (comment.loc && (match = wallabyRegex.exec(commentValue)) !== null) {
358
+ let start = 0;
359
+ let end = 0;
360
+ const removeEntireComment = blockCommentRegex.test(comment.value.trim());
361
+ if (removeEntireComment) {
362
+ start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.start.column });
363
+ end = sourceCode.getIndexFromLoc({ line: comment.loc.end.line, column: comment.loc.end.column });
364
+ } else {
365
+ let lineNumber = 0;
366
+ while (startLine <= endLine) {
367
+ const line = sourceCode.getLines()[startLine];
368
+ if (line && line.includes(match.input)) {
369
+ lineNumber = startLine;
370
+ break;
371
+ }
372
+ startLine++;
373
+ }
374
+ start = sourceCode.getIndexFromLoc({ line: lineNumber + 1, column: comment.loc.start.column });
375
+ end = sourceCode.getIndexFromLoc({ line: lineNumber + 2, column: 0 });
376
+ }
377
+ removeWallabyComment(context, sourceCode, start, end);
378
+ }
379
+ });
380
+ }
381
+ var no_wallaby_comment_default = {
382
+ meta: {
383
+ type: "problem",
384
+ docs: {
385
+ description: "Detects wallaby-specific temporary comments like // ? or // ?? or // ?. or // ??. or // file.only or // file.skip and fix it",
386
+ url: "https://github.com/checkdigit/eslint-plugin"
387
+ },
388
+ fixable: "code"
389
+ },
390
+ create(context) {
391
+ const sourceCode = context.sourceCode;
392
+ const comments = sourceCode.getAllComments();
393
+ comments.forEach((comment) => {
394
+ if (comment.type === "Line") {
395
+ processLineComment(context, sourceCode, comment);
396
+ } else {
397
+ processBlockComment(context, sourceCode, comment);
398
+ }
399
+ });
400
+ return {};
401
+ }
402
+ };
403
+
324
404
  // src/regular-expression-comment.ts
325
405
  var regular_expression_comment_default = {
326
406
  meta: {
@@ -354,82 +434,13 @@ var regular_expression_comment_default = {
354
434
  }
355
435
  };
356
436
 
357
- // src/require-strict-assert.ts
358
- var NODE_ASSERT_STRICT = "node:assert/strict";
359
- var NODE_ASSERT = "node:assert";
360
- var require_strict_assert_default = {
361
- meta: {
362
- type: "problem",
363
- docs: {
364
- description: "Require importing strict version of node:assert and using non-strict assert functions.",
365
- url: "https://github.com/checkdigit/eslint-plugin"
366
- },
367
- fixable: "code"
368
- },
369
- create(context) {
370
- const nodeValues = {};
371
- return {
372
- Literal(node) {
373
- if (typeof node.value === "string" && node.parent.type === "ImportDeclaration" && node.parent.specifiers.length > 0) {
374
- const importSpecifier = node.parent.specifiers[0];
375
- if (importSpecifier) {
376
- nodeValues[importSpecifier.local.name] = node.value;
377
- }
378
- if (node.value === NODE_ASSERT || node.value === NODE_ASSERT_STRICT) {
379
- const importDeclaration = node.parent;
380
- const defaultSpecifier = importDeclaration.specifiers.find(
381
- (specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
382
- );
383
- if (defaultSpecifier !== void 0) {
384
- const importDeclarationRange = importDeclaration.range ?? [0, 0];
385
- let rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
386
- let correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
387
- if (node.value === NODE_ASSERT_STRICT && defaultSpecifier.range && importDeclaration.source.range) {
388
- rangeToReplace = [defaultSpecifier.range[0], importDeclaration.source.range[1]];
389
- correctedText = `{ strict as ${defaultSpecifier.local.name} } from '${NODE_ASSERT}'`;
390
- }
391
- context.report({
392
- node: importDeclaration,
393
- message: "Invalid form of strict assertion mode",
394
- fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
395
- });
396
- }
397
- }
398
- }
399
- },
400
- CallExpression(node) {
401
- const callee = node.callee;
402
- if (callee.type === "MemberExpression" && callee.object.type === "Identifier" && callee.object.name !== "" && callee.property.type === "Identifier" && callee.property.name !== "" && (callee.property.name.includes("strict") || callee.property.name.includes("Strict"))) {
403
- const nodeValue = nodeValues[callee.object.name];
404
- if (nodeValue === NODE_ASSERT || nodeValue === NODE_ASSERT_STRICT) {
405
- let nonStrictFunctionName = "";
406
- const strictFunctionName = callee.property.name;
407
- if (strictFunctionName === "strict") {
408
- nonStrictFunctionName = `${callee.object.name}.equal`;
409
- } else {
410
- const functionName = strictFunctionName.includes("strict") ? strictFunctionName.split("strict").join("") : strictFunctionName.split("Strict").join("");
411
- const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
412
- nonStrictFunctionName = `${callee.object.name}.${fixedFunctionName}`;
413
- }
414
- context.report({
415
- node,
416
- message: "strict method not required when in strict assertion mode.",
417
- fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName)
418
- });
419
- }
420
- }
421
- }
422
- };
423
- }
424
- };
425
-
426
437
  // src/index.ts
427
438
  var src_default = {
428
439
  rules: {
429
440
  "file-path-comment": file_path_comment_default,
430
441
  "no-card-numbers": no_card_numbers_default,
431
442
  "no-uuid": no_uuid_default,
432
- "require-strict-assert": require_strict_assert_default,
443
+ "no-wallaby-comment": no_wallaby_comment_default,
433
444
  "regular-expression-comment": regular_expression_comment_default
434
445
  },
435
446
  configs: {
@@ -438,7 +449,7 @@ var src_default = {
438
449
  "@checkdigit/no-card-numbers": "error",
439
450
  "@checkdigit/file-path-comment": "error",
440
451
  "@checkdigit/no-uuid": "error",
441
- "@checkdigit/require-strict-assert": "error",
452
+ "@checkdigit/no-wallaby-comment": "error",
442
453
  "@checkdigit/regular-expression-comment": "error"
443
454
  }
444
455
  },
@@ -447,11 +458,11 @@ var src_default = {
447
458
  "@checkdigit/no-card-numbers": "error",
448
459
  "@checkdigit/file-path-comment": "off",
449
460
  "@checkdigit/no-uuid": "error",
450
- "@checkdigit/require-strict-assert": "error",
461
+ "@checkdigit/no-wallaby-comment": "off",
451
462
  "@checkdigit/regular-expression-comment": "error"
452
463
  }
453
464
  }
454
465
  }
455
466
  };
456
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9yZWd1bGFyLWV4cHJlc3Npb24tY29tbWVudC50cyIsICIuLi9zcmMvcmVxdWlyZS1zdHJpY3QtYXNzZXJ0LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFDakQsVUFBTSxlQUFlLFFBQVEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBRXJELFFBQUksY0FBYyxVQUFhLGlCQUFpQixRQUFXO0FBQ3pELGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEs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
467
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIiwgIi4uL3NyYy9uby13YWxsYWJ5LWNvbW1lbnQudHMiLCAiLi4vc3JjL3JlZ3VsYXItZXhwcmVzc2lvbi1jb21tZW50LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFDakQsVUFBTSxlQUFlLFFBQVEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBRXJELFFBQUksY0FBYyxVQUFhLGlCQUFpQixRQUFXO0FBQ3pELGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFD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
457
468
  module.exports = module.exports.default;
@@ -15,18 +15,18 @@
15
15
  "imports": [],
16
16
  "format": "esm"
17
17
  },
18
- "src/regular-expression-comment.ts": {
19
- "bytes": 1137,
18
+ "src/no-wallaby-comment.ts": {
19
+ "bytes": 3455,
20
20
  "imports": [],
21
21
  "format": "esm"
22
22
  },
23
- "src/require-strict-assert.ts": {
24
- "bytes": 3759,
23
+ "src/regular-expression-comment.ts": {
24
+ "bytes": 1137,
25
25
  "imports": [],
26
26
  "format": "esm"
27
27
  },
28
28
  "src/index.ts": {
29
- "bytes": 1240,
29
+ "bytes": 1220,
30
30
  "imports": [
31
31
  {
32
32
  "path": "src/file-path-comment.ts",
@@ -44,14 +44,14 @@
44
44
  "original": "./no-uuid"
45
45
  },
46
46
  {
47
- "path": "src/regular-expression-comment.ts",
47
+ "path": "src/no-wallaby-comment.ts",
48
48
  "kind": "import-statement",
49
- "original": "./regular-expression-comment"
49
+ "original": "./no-wallaby-comment"
50
50
  },
51
51
  {
52
- "path": "src/require-strict-assert.ts",
52
+ "path": "src/regular-expression-comment.ts",
53
53
  "kind": "import-statement",
54
- "original": "./require-strict-assert"
54
+ "original": "./regular-expression-comment"
55
55
  }
56
56
  ],
57
57
  "format": "esm"
@@ -64,7 +64,7 @@
64
64
  "entryPoint": "src/index.ts",
65
65
  "inputs": {
66
66
  "src/index.ts": {
67
- "bytesInOutput": 1027
67
+ "bytesInOutput": 1013
68
68
  },
69
69
  "src/file-path-comment.ts": {
70
70
  "bytesInOutput": 1961
@@ -75,14 +75,14 @@
75
75
  "src/no-uuid.ts": {
76
76
  "bytesInOutput": 2256
77
77
  },
78
+ "src/no-wallaby-comment.ts": {
79
+ "bytesInOutput": 3026
80
+ },
78
81
  "src/regular-expression-comment.ts": {
79
82
  "bytesInOutput": 932
80
- },
81
- "src/require-strict-assert.ts": {
82
- "bytesInOutput": 3362
83
83
  }
84
84
  },
85
- "bytes": 25097
85
+ "bytes": 24864
86
86
  }
87
87
  }
88
88
  }
@@ -2,14 +2,14 @@
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 noWallabyComment from "./no-wallaby-comment.mjs";
5
6
  import regexComment from "./regular-expression-comment.mjs";
6
- import requireStrictAssert from "./require-strict-assert.mjs";
7
7
  var src_default = {
8
8
  rules: {
9
9
  "file-path-comment": filePathComment,
10
10
  "no-card-numbers": noCardNumbers,
11
11
  "no-uuid": noUuid,
12
- "require-strict-assert": requireStrictAssert,
12
+ "no-wallaby-comment": noWallabyComment,
13
13
  "regular-expression-comment": regexComment
14
14
  },
15
15
  configs: {
@@ -18,7 +18,7 @@ var src_default = {
18
18
  "@checkdigit/no-card-numbers": "error",
19
19
  "@checkdigit/file-path-comment": "error",
20
20
  "@checkdigit/no-uuid": "error",
21
- "@checkdigit/require-strict-assert": "error",
21
+ "@checkdigit/no-wallaby-comment": "error",
22
22
  "@checkdigit/regular-expression-comment": "error"
23
23
  }
24
24
  },
@@ -27,7 +27,7 @@ var src_default = {
27
27
  "@checkdigit/no-card-numbers": "error",
28
28
  "@checkdigit/file-path-comment": "off",
29
29
  "@checkdigit/no-uuid": "error",
30
- "@checkdigit/require-strict-assert": "error",
30
+ "@checkdigit/no-wallaby-comment": "off",
31
31
  "@checkdigit/regular-expression-comment": "error"
32
32
  }
33
33
  }
@@ -36,4 +36,4 @@ var src_default = {
36
36
  export {
37
37
  src_default as default
38
38
  };
39
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sWUFBWTtBQUNuQixPQUFPLGtCQUFrQjtBQUN6QixPQUFPLHlCQUF5QjtBQUVoQyxJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHlCQUF5QjtBQUFBLElBQ3pCLDhCQUE4QjtBQUFBLEVBQ2hDO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixxQ0FBcUM7QUFBQSxRQUNyQywwQ0FBMEM7QUFBQSxNQUM1QztBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLDBDQUEwQztBQUFBLE1BQzVDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
39
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sWUFBWTtBQUNuQixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLGtCQUFrQjtBQUV6QixJQUFPLGNBQVE7QUFBQSxFQUNiLE9BQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLElBQ3JCLG1CQUFtQjtBQUFBLElBQ25CLFdBQVc7QUFBQSxJQUNYLHNCQUFzQjtBQUFBLElBQ3RCLDhCQUE4QjtBQUFBLEVBQ2hDO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsTUFDSCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxRQUN2QixrQ0FBa0M7QUFBQSxRQUNsQywwQ0FBMEM7QUFBQSxNQUM1QztBQUFBLElBQ0Y7QUFBQSxJQUNBLGFBQWE7QUFBQSxNQUNYLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLGtDQUFrQztBQUFBLFFBQ2xDLDBDQUEwQztBQUFBLE1BQzVDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,83 @@
1
+ // src/no-wallaby-comment.ts
2
+ var wallabyRegex = /\s*(?:[?]{1,2}\.?|file\.only|file\.skip)\s*/gu;
3
+ var commentRegex = /\s*(?:\/\/|<!--)\s*(?<comment>\?{1,2}\.?\s*|file\.(?:only|skip))\s*/gu;
4
+ function removeWallabyComment(context, sourceCode, start, end) {
5
+ context.report({
6
+ loc: {
7
+ start: sourceCode.getLocFromIndex(start),
8
+ end: sourceCode.getLocFromIndex(end)
9
+ },
10
+ message: "Remove wallaby-specific comments",
11
+ fix: (fixer) => fixer.removeRange([start, end])
12
+ });
13
+ }
14
+ function processLineComment(context, sourceCode, comment) {
15
+ if (comment.loc) {
16
+ const line = sourceCode.getLines()[comment.loc.start.line - 1];
17
+ if (line) {
18
+ let match;
19
+ while ((match = commentRegex.exec(line)) !== null) {
20
+ const start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: match.index });
21
+ const end = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.end.column });
22
+ removeWallabyComment(context, sourceCode, start, end);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ function processBlockComment(context, sourceCode, comment) {
28
+ const commentValues = comment.value.split("\n");
29
+ const blockCommentRegex = /^(?:\s*\*\s*)?(?:file\.only|file\.skip)$/gu;
30
+ commentValues.forEach((commentValue) => {
31
+ let startLine = comment.loc?.start.line ?? 0;
32
+ const endLine = comment.loc?.end.line ?? 0;
33
+ let match;
34
+ while (comment.loc && (match = wallabyRegex.exec(commentValue)) !== null) {
35
+ let start = 0;
36
+ let end = 0;
37
+ const removeEntireComment = blockCommentRegex.test(comment.value.trim());
38
+ if (removeEntireComment) {
39
+ start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.start.column });
40
+ end = sourceCode.getIndexFromLoc({ line: comment.loc.end.line, column: comment.loc.end.column });
41
+ } else {
42
+ let lineNumber = 0;
43
+ while (startLine <= endLine) {
44
+ const line = sourceCode.getLines()[startLine];
45
+ if (line && line.includes(match.input)) {
46
+ lineNumber = startLine;
47
+ break;
48
+ }
49
+ startLine++;
50
+ }
51
+ start = sourceCode.getIndexFromLoc({ line: lineNumber + 1, column: comment.loc.start.column });
52
+ end = sourceCode.getIndexFromLoc({ line: lineNumber + 2, column: 0 });
53
+ }
54
+ removeWallabyComment(context, sourceCode, start, end);
55
+ }
56
+ });
57
+ }
58
+ var no_wallaby_comment_default = {
59
+ meta: {
60
+ type: "problem",
61
+ docs: {
62
+ description: "Detects wallaby-specific temporary comments like // ? or // ?? or // ?. or // ??. or // file.only or // file.skip and fix it",
63
+ url: "https://github.com/checkdigit/eslint-plugin"
64
+ },
65
+ fixable: "code"
66
+ },
67
+ create(context) {
68
+ const sourceCode = context.sourceCode;
69
+ const comments = sourceCode.getAllComments();
70
+ comments.forEach((comment) => {
71
+ if (comment.type === "Line") {
72
+ processLineComment(context, sourceCode, comment);
73
+ } else {
74
+ processBlockComment(context, sourceCode, comment);
75
+ }
76
+ });
77
+ return {};
78
+ }
79
+ };
80
+ export {
81
+ no_wallaby_comment_default as default
82
+ };
83
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXdhbGxhYnktY29tbWVudC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFXQSxJQUFNLGVBQWU7QUFDckIsSUFBTSxlQUFlO0FBQ3JCLFNBQVMscUJBQXFCLFNBQTJCLFlBQXdCLE9BQWUsS0FBbUI7QUFDakgsVUFBUSxPQUFPO0FBQUEsSUFDYixLQUFLO0FBQUEsTUFDSCxPQUFPLFdBQVcsZ0JBQWdCLEtBQUs7QUFBQSxNQUN2QyxLQUFLLFdBQVcsZ0JBQWdCLEdBQUc7QUFBQSxJQUNyQztBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsS0FBSyxDQUFDLFVBQVUsTUFBTSxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUM7QUFBQSxFQUNoRCxDQUFDO0FBQ0g7QUFFQSxTQUFTLG1CQUFtQixTQUEyQixZQUF3QixTQUF3QjtBQUNyRyxNQUFJLFFBQVEsS0FBSztBQUNmLFVBQU0sT0FBTyxXQUFXLFNBQVMsRUFBRSxRQUFRLElBQUksTUFBTSxPQUFPLENBQUM7QUFDN0QsUUFBSSxNQUFNO0FBQ1IsVUFBSTtBQUNKLGNBQVEsUUFBUSxhQUFhLEtBQUssSUFBSSxPQUFPLE1BQU07QUFDakQsY0FBTSxRQUFRLFdBQVcsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLElBQUksTUFBTSxNQUFNLFFBQVEsTUFBTSxNQUFNLENBQUM7QUFDOUYsY0FBTSxNQUFNLFdBQVcsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLElBQUksTUFBTSxNQUFNLFFBQVEsUUFBUSxJQUFJLElBQUksT0FBTyxDQUFDO0FBQ3ZHLDZCQUFxQixTQUFTLFlBQVksT0FBTyxHQUFHO0FBQUEsTUFDdEQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxvQkFBb0IsU0FBMkIsWUFBd0IsU0FBd0I7QUFDdEcsUUFBTSxnQkFBZ0IsUUFBUSxNQUFNLE1BQU0sSUFBSTtBQUM5QyxRQUFNLG9CQUFvQjtBQUMxQixnQkFBYyxRQUFRLENBQUMsaUJBQWlCO0FBQ3RDLFFBQUksWUFBWSxRQUFRLEtBQUssTUFBTSxRQUFRO0FBQzNDLFVBQU0sVUFBVSxRQUFRLEtBQUssSUFBSSxRQUFRO0FBQ3pDLFFBQUk7QUFDSixXQUFPLFFBQVEsUUFBUSxRQUFRLGFBQWEsS0FBSyxZQUFZLE9BQU8sTUFBTTtBQUN4RSxVQUFJLFFBQVE7QUFDWixVQUFJLE1BQU07QUFDVixZQUFNLHNCQUFzQixrQkFBa0IsS0FBSyxRQUFRLE1BQU0sS0FBSyxDQUFDO0FBQ3ZFLFVBQUkscUJBQXFCO0FBQ3ZCLGdCQUFRLFdBQVcsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLElBQUksTUFBTSxNQUFNLFFBQVEsUUFBUSxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBQ3JHLGNBQU0sV0FBVyxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsSUFBSSxJQUFJLE1BQU0sUUFBUSxRQUFRLElBQUksSUFBSSxPQUFPLENBQUM7QUFBQSxNQUNqRyxPQUFPO0FBQ0wsWUFBSSxhQUFhO0FBQ2pCLGVBQU8sYUFBYSxTQUFTO0FBQzNCLGdCQUFNLE9BQU8sV0FBVyxTQUFTLEVBQUUsU0FBUztBQUM1QyxjQUFJLFFBQVEsS0FBSyxTQUFTLE1BQU0sS0FBSyxHQUFHO0FBQ3RDLHlCQUFhO0FBQ2I7QUFBQSxVQUNGO0FBQ0E7QUFBQSxRQUNGO0FBQ0EsZ0JBQVEsV0FBVyxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsR0FBRyxRQUFRLFFBQVEsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUM3RixjQUFNLFdBQVcsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLEdBQUcsUUFBUSxFQUFFLENBQUM7QUFBQSxNQUN0RTtBQUNBLDJCQUFxQixTQUFTLFlBQVksT0FBTyxHQUFHO0FBQUEsSUFDdEQ7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUVBLElBQU8sNkJBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQ0U7QUFBQSxNQUNGLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsT0FBTyxTQUEyQjtBQUNoQyxVQUFNLGFBQWEsUUFBUTtBQUMzQixVQUFNLFdBQVcsV0FBVyxlQUFlO0FBQzNDLGFBQVMsUUFBUSxDQUFDLFlBQVk7QUFDNUIsVUFBSSxRQUFRLFNBQVMsUUFBUTtBQUMzQiwyQkFBbUIsU0FBUyxZQUFZLE9BQU87QUFBQSxNQUNqRCxPQUFPO0FBQ0wsNEJBQW9CLFNBQVMsWUFBWSxPQUFPO0FBQUEsTUFDbEQ7QUFBQSxJQUNGLENBQUM7QUFFRCxXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -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-strict-assert': import("eslint").Rule.RuleModule;
6
+ 'no-wallaby-comment': import("eslint").Rule.RuleModule;
7
7
  'regular-expression-comment': import("eslint").Rule.RuleModule;
8
8
  };
9
9
  configs: {
@@ -12,7 +12,7 @@ declare const _default: {
12
12
  '@checkdigit/no-card-numbers': string;
13
13
  '@checkdigit/file-path-comment': string;
14
14
  '@checkdigit/no-uuid': string;
15
- '@checkdigit/require-strict-assert': string;
15
+ '@checkdigit/no-wallaby-comment': string;
16
16
  '@checkdigit/regular-expression-comment': string;
17
17
  };
18
18
  };
@@ -21,7 +21,7 @@ declare const _default: {
21
21
  '@checkdigit/no-card-numbers': string;
22
22
  '@checkdigit/file-path-comment': string;
23
23
  '@checkdigit/no-uuid': string;
24
- '@checkdigit/require-strict-assert': string;
24
+ '@checkdigit/no-wallaby-comment': string;
25
25
  '@checkdigit/regular-expression-comment': string;
26
26
  };
27
27
  };
package/package.json CHANGED
@@ -1 +1,84 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"5.4.0-PR.44-36b2","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
+ {
2
+ "name": "@checkdigit/eslint-plugin",
3
+ "version": "5.4.0",
4
+ "description": "Check Digit eslint plugins",
5
+ "prettier": "@checkdigit/prettier-config",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist-types/index.d.ts",
10
+ "require": "./dist-cjs/index.cjs",
11
+ "import": "./dist-mjs/index.mjs",
12
+ "default": "./dist-mjs/index.mjs"
13
+ }
14
+ },
15
+ "keywords": [
16
+ "eslint",
17
+ "eslintplugin"
18
+ ],
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/checkdigit/eslint-plugin.git"
25
+ },
26
+ "author": "Check Digit, LLC",
27
+ "license": "MIT",
28
+ "bugs": {
29
+ "url": "https://github.com/checkdigit/eslint-plugin/issues"
30
+ },
31
+ "homepage": "https://github.com/checkdigit/eslint-plugin#readme",
32
+ "peerDependencies": {
33
+ "eslint": ">=8 <9"
34
+ },
35
+ "devDependencies": {
36
+ "@checkdigit/jest-config": "^3.1.0",
37
+ "@checkdigit/prettier-config": "^4.1.0",
38
+ "@checkdigit/typescript-config": "^5.1.0",
39
+ "@types/eslint": "^8.44.6",
40
+ "@typescript-eslint/eslint-plugin": "^6.9.0",
41
+ "@typescript-eslint/parser": "^6.9.0",
42
+ "eslint-config-prettier": "^9.0.0",
43
+ "eslint-plugin-eslint-plugin": "^5.1.1",
44
+ "eslint-plugin-import": "^2.29.0",
45
+ "eslint-plugin-no-only-tests": "^3.1.0",
46
+ "eslint-plugin-no-secrets": "^0.8.9",
47
+ "eslint-plugin-node": "^11.1.0",
48
+ "eslint-plugin-sonarjs": "^0.21.0"
49
+ },
50
+ "scripts": {
51
+ "prepublishOnly": "npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-mjs",
52
+ "build:dist-types": "rimraf dist-types && npx builder --type=types --outDir=dist-types",
53
+ "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",
54
+ "build:dist-mjs": "rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs",
55
+ "lint:fix": "eslint --ignore-path .gitignore . --fix",
56
+ "lint": "eslint --max-warnings 0 --ignore-path .gitignore .",
57
+ "prettier": "prettier --ignore-path .gitignore --list-different .",
58
+ "prettier:fix": "prettier --ignore-path .gitignore --write .",
59
+ "test": "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style",
60
+ "ci:compile": "tsc --noEmit",
61
+ "ci:test": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage=false",
62
+ "ci:coverage": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage=true",
63
+ "ci:lint": "npm run lint",
64
+ "ci:style": "npm run prettier"
65
+ },
66
+ "jest": {
67
+ "preset": "@checkdigit/jest-config"
68
+ },
69
+ "files": [
70
+ "src",
71
+ "dist-types",
72
+ "dist-cjs",
73
+ "dist-mjs",
74
+ "!src/**/*.test.ts",
75
+ "!src/**/*.spec.ts",
76
+ "!dist-types/**/*.test.d.ts",
77
+ "!dist-types/**/*.spec.d.ts",
78
+ "!dist-cjs/**/*.test.cjs",
79
+ "!dist-cjs/**/*.spec.cjs",
80
+ "!dist-mjs/**/*.test.mjs",
81
+ "!dist-mjs/**/*.spec.mjs",
82
+ "SECURITY.md"
83
+ ]
84
+ }
package/src/index.ts CHANGED
@@ -9,15 +9,15 @@
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 noWallabyComment from './no-wallaby-comment';
12
13
  import regexComment from './regular-expression-comment';
13
- import requireStrictAssert from './require-strict-assert';
14
14
 
15
15
  export default {
16
16
  rules: {
17
17
  'file-path-comment': filePathComment,
18
18
  'no-card-numbers': noCardNumbers,
19
19
  'no-uuid': noUuid,
20
- 'require-strict-assert': requireStrictAssert,
20
+ 'no-wallaby-comment': noWallabyComment,
21
21
  'regular-expression-comment': regexComment,
22
22
  },
23
23
  configs: {
@@ -26,7 +26,7 @@ export default {
26
26
  '@checkdigit/no-card-numbers': 'error',
27
27
  '@checkdigit/file-path-comment': 'error',
28
28
  '@checkdigit/no-uuid': 'error',
29
- '@checkdigit/require-strict-assert': 'error',
29
+ '@checkdigit/no-wallaby-comment': 'error',
30
30
  '@checkdigit/regular-expression-comment': 'error',
31
31
  },
32
32
  },
@@ -35,7 +35,7 @@ export default {
35
35
  '@checkdigit/no-card-numbers': 'error',
36
36
  '@checkdigit/file-path-comment': 'off',
37
37
  '@checkdigit/no-uuid': 'error',
38
- '@checkdigit/require-strict-assert': 'error',
38
+ '@checkdigit/no-wallaby-comment': 'off',
39
39
  '@checkdigit/regular-expression-comment': 'error',
40
40
  },
41
41
  },
@@ -0,0 +1,94 @@
1
+ // no-wallaby-comment.ts
2
+
3
+ /*
4
+ * Copyright (c) 2022-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, SourceCode } from 'eslint';
10
+ import type { Comment } from 'estree';
11
+
12
+ const wallabyRegex = /\s*(?:[?]{1,2}\.?|file\.only|file\.skip)\s*/gu;
13
+ const commentRegex = /\s*(?:\/\/|<!--)\s*(?<comment>\?{1,2}\.?\s*|file\.(?:only|skip))\s*/gu;
14
+ function removeWallabyComment(context: Rule.RuleContext, sourceCode: SourceCode, start: number, end: number): void {
15
+ context.report({
16
+ loc: {
17
+ start: sourceCode.getLocFromIndex(start),
18
+ end: sourceCode.getLocFromIndex(end),
19
+ },
20
+ message: 'Remove wallaby-specific comments',
21
+ fix: (fixer) => fixer.removeRange([start, end]),
22
+ });
23
+ }
24
+
25
+ function processLineComment(context: Rule.RuleContext, sourceCode: SourceCode, comment: Comment): void {
26
+ if (comment.loc) {
27
+ const line = sourceCode.getLines()[comment.loc.start.line - 1];
28
+ if (line) {
29
+ let match;
30
+ while ((match = commentRegex.exec(line)) !== null) {
31
+ const start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: match.index });
32
+ const end = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.end.column });
33
+ removeWallabyComment(context, sourceCode, start, end);
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ function processBlockComment(context: Rule.RuleContext, sourceCode: SourceCode, comment: Comment): void {
40
+ const commentValues = comment.value.split('\n');
41
+ const blockCommentRegex = /^(?:\s*\*\s*)?(?:file\.only|file\.skip)$/gu;
42
+ commentValues.forEach((commentValue) => {
43
+ let startLine = comment.loc?.start.line ?? 0;
44
+ const endLine = comment.loc?.end.line ?? 0;
45
+ let match;
46
+ while (comment.loc && (match = wallabyRegex.exec(commentValue)) !== null) {
47
+ let start = 0;
48
+ let end = 0;
49
+ const removeEntireComment = blockCommentRegex.test(comment.value.trim());
50
+ if (removeEntireComment) {
51
+ start = sourceCode.getIndexFromLoc({ line: comment.loc.start.line, column: comment.loc.start.column });
52
+ end = sourceCode.getIndexFromLoc({ line: comment.loc.end.line, column: comment.loc.end.column });
53
+ } else {
54
+ let lineNumber = 0;
55
+ while (startLine <= endLine) {
56
+ const line = sourceCode.getLines()[startLine];
57
+ if (line && line.includes(match.input)) {
58
+ lineNumber = startLine;
59
+ break;
60
+ }
61
+ startLine++;
62
+ }
63
+ start = sourceCode.getIndexFromLoc({ line: lineNumber + 1, column: comment.loc.start.column });
64
+ end = sourceCode.getIndexFromLoc({ line: lineNumber + 2, column: 0 });
65
+ }
66
+ removeWallabyComment(context, sourceCode, start, end);
67
+ }
68
+ });
69
+ }
70
+
71
+ export default {
72
+ meta: {
73
+ type: 'problem',
74
+ docs: {
75
+ description:
76
+ 'Detects wallaby-specific temporary comments like // ? or // ?? or // ?. or // ??. or // file.only or // file.skip and fix it',
77
+ url: 'https://github.com/checkdigit/eslint-plugin',
78
+ },
79
+ fixable: 'code',
80
+ },
81
+ create(context: Rule.RuleContext) {
82
+ const sourceCode = context.sourceCode;
83
+ const comments = sourceCode.getAllComments();
84
+ comments.forEach((comment) => {
85
+ if (comment.type === 'Line') {
86
+ processLineComment(context, sourceCode, comment);
87
+ } else {
88
+ processBlockComment(context, sourceCode, comment);
89
+ }
90
+ });
91
+
92
+ return {};
93
+ },
94
+ } as Rule.RuleModule;
@@ -1,72 +0,0 @@
1
- // src/require-strict-assert.ts
2
- var NODE_ASSERT_STRICT = "node:assert/strict";
3
- var NODE_ASSERT = "node:assert";
4
- var require_strict_assert_default = {
5
- meta: {
6
- type: "problem",
7
- docs: {
8
- description: "Require importing strict version of node:assert and using non-strict assert functions.",
9
- url: "https://github.com/checkdigit/eslint-plugin"
10
- },
11
- fixable: "code"
12
- },
13
- create(context) {
14
- const nodeValues = {};
15
- return {
16
- Literal(node) {
17
- if (typeof node.value === "string" && node.parent.type === "ImportDeclaration" && node.parent.specifiers.length > 0) {
18
- const importSpecifier = node.parent.specifiers[0];
19
- if (importSpecifier) {
20
- nodeValues[importSpecifier.local.name] = node.value;
21
- }
22
- if (node.value === NODE_ASSERT || node.value === NODE_ASSERT_STRICT) {
23
- const importDeclaration = node.parent;
24
- const defaultSpecifier = importDeclaration.specifiers.find(
25
- (specifier) => specifier.type === "ImportDefaultSpecifier" || specifier.type === "ImportNamespaceSpecifier"
26
- );
27
- if (defaultSpecifier !== void 0) {
28
- const importDeclarationRange = importDeclaration.range ?? [0, 0];
29
- let rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
30
- let correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
31
- if (node.value === NODE_ASSERT_STRICT && defaultSpecifier.range && importDeclaration.source.range) {
32
- rangeToReplace = [defaultSpecifier.range[0], importDeclaration.source.range[1]];
33
- correctedText = `{ strict as ${defaultSpecifier.local.name} } from '${NODE_ASSERT}'`;
34
- }
35
- context.report({
36
- node: importDeclaration,
37
- message: "Invalid form of strict assertion mode",
38
- fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText)
39
- });
40
- }
41
- }
42
- }
43
- },
44
- CallExpression(node) {
45
- const callee = node.callee;
46
- if (callee.type === "MemberExpression" && callee.object.type === "Identifier" && callee.object.name !== "" && callee.property.type === "Identifier" && callee.property.name !== "" && (callee.property.name.includes("strict") || callee.property.name.includes("Strict"))) {
47
- const nodeValue = nodeValues[callee.object.name];
48
- if (nodeValue === NODE_ASSERT || nodeValue === NODE_ASSERT_STRICT) {
49
- let nonStrictFunctionName = "";
50
- const strictFunctionName = callee.property.name;
51
- if (strictFunctionName === "strict") {
52
- nonStrictFunctionName = `${callee.object.name}.equal`;
53
- } else {
54
- const functionName = strictFunctionName.includes("strict") ? strictFunctionName.split("strict").join("") : strictFunctionName.split("Strict").join("");
55
- const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
56
- nonStrictFunctionName = `${callee.object.name}.${fixedFunctionName}`;
57
- }
58
- context.report({
59
- node,
60
- message: "strict method not required when in strict assertion mode.",
61
- fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName)
62
- });
63
- }
64
- }
65
- }
66
- };
67
- }
68
- };
69
- export {
70
- require_strict_assert_default as default
71
- };
72
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtc3RyaWN0LWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFVQSxJQUFNLHFCQUFxQjtBQUMzQixJQUFNLGNBQWM7QUFFcEIsSUFBTyxnQ0FBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQXFDLENBQUM7QUFDNUMsV0FBTztBQUFBLE1BQ0wsUUFBUSxNQUFNO0FBQ1osWUFDRSxPQUFPLEtBQUssVUFBVSxZQUN0QixLQUFLLE9BQU8sU0FBUyx1QkFDckIsS0FBSyxPQUFPLFdBQVcsU0FBUyxHQUNoQztBQUNBLGdCQUFNLGtCQUFrQixLQUFLLE9BQU8sV0FBVyxDQUFDO0FBQ2hELGNBQUksaUJBQWlCO0FBQ25CLHVCQUFXLGdCQUFnQixNQUFNLElBQUksSUFBSSxLQUFLO0FBQUEsVUFDaEQ7QUFDQSxjQUFJLEtBQUssVUFBVSxlQUFlLEtBQUssVUFBVSxvQkFBb0I7QUFDbkUsa0JBQU0sb0JBQW9CLEtBQUs7QUFDL0Isa0JBQU0sbUJBQW1CLGtCQUFrQixXQUFXO0FBQUEsY0FDcEQsQ0FBQyxjQUNDLFVBQVUsU0FBUyw0QkFBNEIsVUFBVSxTQUFTO0FBQUEsWUFDdEU7QUFFQSxnQkFBSSxxQkFBcUIsUUFBVztBQUNsQyxvQkFBTSx5QkFBeUIsa0JBQWtCLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDL0Qsa0JBQUksaUJBQWlCLGlCQUFpQixTQUFTO0FBQy9DLGtCQUFJLGdCQUFnQixlQUFlLGlCQUFpQixNQUFNLElBQUk7QUFFOUQsa0JBQUksS0FBSyxVQUFVLHNCQUFzQixpQkFBaUIsU0FBUyxrQkFBa0IsT0FBTyxPQUFPO0FBQ2pHLGlDQUFpQixDQUFDLGlCQUFpQixNQUFNLENBQUMsR0FBRyxrQkFBa0IsT0FBTyxNQUFNLENBQUMsQ0FBQztBQUM5RSxnQ0FBZ0IsZUFBZSxpQkFBaUIsTUFBTSxJQUFJLFlBQVksV0FBVztBQUFBLGNBQ25GO0FBRUEsc0JBQVEsT0FBTztBQUFBLGdCQUNiLE1BQU07QUFBQSxnQkFDTixTQUFTO0FBQUEsZ0JBQ1QsS0FBSyxDQUFDLFVBQVUsTUFBTSxpQkFBaUIsZ0JBQWdCLGFBQWE7QUFBQSxjQUN0RSxDQUFDO0FBQUEsWUFDSDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZUFBZSxNQUFNO0FBQ25CLGNBQU0sU0FBUyxLQUFLO0FBQ3BCLFlBQ0UsT0FBTyxTQUFTLHNCQUNoQixPQUFPLE9BQU8sU0FBUyxnQkFDdkIsT0FBTyxPQUFPLFNBQVMsTUFDdkIsT0FBTyxTQUFTLFNBQVMsZ0JBQ3pCLE9BQU8sU0FBUyxTQUFTLE9BQ3hCLE9BQU8sU0FBUyxLQUFLLFNBQVMsUUFBUSxLQUFLLE9BQU8sU0FBUyxLQUFLLFNBQVMsUUFBUSxJQUNsRjtBQUNBLGdCQUFNLFlBQVksV0FBVyxPQUFPLE9BQU8sSUFBSTtBQUMvQyxjQUFJLGNBQWMsZUFBZSxjQUFjLG9CQUFvQjtBQUNqRSxnQkFBSSx3QkFBd0I7QUFDNUIsa0JBQU0scUJBQXFCLE9BQU8sU0FBUztBQUMzQyxnQkFBSSx1QkFBdUIsVUFBVTtBQUNuQyxzQ0FBd0IsR0FBRyxPQUFPLE9BQU8sSUFBSTtBQUFBLFlBQy9DLE9BQU87QUFDTCxvQkFBTSxlQUFlLG1CQUFtQixTQUFTLFFBQVEsSUFDckQsbUJBQW1CLE1BQU0sUUFBUSxFQUFFLEtBQUssRUFBRSxJQUMxQyxtQkFBbUIsTUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQzlDLG9CQUFNLG9CQUFvQixHQUFHLGFBQWEsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsYUFBYSxNQUFNLENBQUMsQ0FBQztBQUN6RixzQ0FBd0IsR0FBRyxPQUFPLE9BQU8sSUFBSSxJQUFJLGlCQUFpQjtBQUFBLFlBQ3BFO0FBQ0Esb0JBQVEsT0FBTztBQUFBLGNBQ2I7QUFBQSxjQUNBLFNBQVM7QUFBQSxjQUNULEtBQUssQ0FBQyxVQUFVLE1BQU0sWUFBWSxRQUFRLHFCQUFxQjtBQUFBLFlBQ2pFLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,95 +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
- const NODE_ASSERT_STRICT = 'node:assert/strict';
12
- const NODE_ASSERT = 'node:assert';
13
-
14
- export default {
15
- meta: {
16
- type: 'problem',
17
- docs: {
18
- description: 'Require importing strict version of node:assert and using non-strict assert functions.',
19
- url: 'https://github.com/checkdigit/eslint-plugin',
20
- },
21
- fixable: 'code',
22
- },
23
- create(context) {
24
- const nodeValues: Record<string, string> = {};
25
- return {
26
- Literal(node) {
27
- if (
28
- typeof node.value === 'string' &&
29
- node.parent.type === 'ImportDeclaration' &&
30
- node.parent.specifiers.length > 0
31
- ) {
32
- const importSpecifier = node.parent.specifiers[0];
33
- if (importSpecifier) {
34
- nodeValues[importSpecifier.local.name] = node.value;
35
- }
36
- if (node.value === NODE_ASSERT || node.value === NODE_ASSERT_STRICT) {
37
- const importDeclaration = node.parent;
38
- const defaultSpecifier = importDeclaration.specifiers.find(
39
- (specifier) =>
40
- specifier.type === 'ImportDefaultSpecifier' || specifier.type === 'ImportNamespaceSpecifier',
41
- );
42
-
43
- if (defaultSpecifier !== undefined) {
44
- const importDeclarationRange = importDeclaration.range ?? [0, 0];
45
- let rangeToReplace = defaultSpecifier.range ?? importDeclarationRange;
46
- let correctedText = `{ strict as ${defaultSpecifier.local.name} }`;
47
-
48
- if (node.value === NODE_ASSERT_STRICT && defaultSpecifier.range && importDeclaration.source.range) {
49
- rangeToReplace = [defaultSpecifier.range[0], importDeclaration.source.range[1]];
50
- correctedText = `{ strict as ${defaultSpecifier.local.name} } from '${NODE_ASSERT}'`;
51
- }
52
-
53
- context.report({
54
- node: importDeclaration,
55
- message: 'Invalid form of strict assertion mode',
56
- fix: (fixer) => fixer.replaceTextRange(rangeToReplace, correctedText),
57
- });
58
- }
59
- }
60
- }
61
- },
62
- CallExpression(node) {
63
- const callee = node.callee;
64
- if (
65
- callee.type === 'MemberExpression' &&
66
- callee.object.type === 'Identifier' &&
67
- callee.object.name !== '' &&
68
- callee.property.type === 'Identifier' &&
69
- callee.property.name !== '' &&
70
- (callee.property.name.includes('strict') || callee.property.name.includes('Strict'))
71
- ) {
72
- const nodeValue = nodeValues[callee.object.name];
73
- if (nodeValue === NODE_ASSERT || nodeValue === NODE_ASSERT_STRICT) {
74
- let nonStrictFunctionName = '';
75
- const strictFunctionName = callee.property.name;
76
- if (strictFunctionName === 'strict') {
77
- nonStrictFunctionName = `${callee.object.name}.equal`;
78
- } else {
79
- const functionName = strictFunctionName.includes('strict')
80
- ? strictFunctionName.split('strict').join('')
81
- : strictFunctionName.split('Strict').join('');
82
- const fixedFunctionName = `${functionName.charAt(0).toLowerCase()}${functionName.slice(1)}`;
83
- nonStrictFunctionName = `${callee.object.name}.${fixedFunctionName}`;
84
- }
85
- context.report({
86
- node,
87
- message: 'strict method not required when in strict assertion mode.',
88
- fix: (fixer) => fixer.replaceText(callee, nonStrictFunctionName),
89
- });
90
- }
91
- }
92
- },
93
- };
94
- },
95
- } as Rule.RuleModule;