eslint-plugin-jsdoc 39.3.5 → 39.3.12

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.
Files changed (124) hide show
  1. package/README.md +273 -52
  2. package/dist/WarnSettings.js +0 -5
  3. package/dist/WarnSettings.js.map +1 -1
  4. package/dist/alignTransform.js +69 -61
  5. package/dist/alignTransform.js.map +1 -1
  6. package/dist/bin/generateRule.js +7 -26
  7. package/dist/bin/generateRule.js.map +1 -1
  8. package/dist/defaultTagOrder.js +30 -14
  9. package/dist/defaultTagOrder.js.map +1 -1
  10. package/dist/exportParser.js +34 -143
  11. package/dist/exportParser.js.map +1 -1
  12. package/dist/generateRule.js +7 -26
  13. package/dist/generateRule.js.map +1 -1
  14. package/dist/getDefaultTagStructureForMode.js +189 -93
  15. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  16. package/dist/index.js +0 -51
  17. package/dist/index.js.map +1 -1
  18. package/dist/iterateJsdoc.js +44 -207
  19. package/dist/iterateJsdoc.js.map +1 -1
  20. package/dist/jsdocUtils.js +72 -221
  21. package/dist/jsdocUtils.js.map +1 -1
  22. package/dist/rules/checkAccess.js +0 -8
  23. package/dist/rules/checkAccess.js.map +1 -1
  24. package/dist/rules/checkAlignment.js +0 -8
  25. package/dist/rules/checkAlignment.js.map +1 -1
  26. package/dist/rules/checkExamples.js +25 -63
  27. package/dist/rules/checkExamples.js.map +1 -1
  28. package/dist/rules/checkIndentation.js +0 -7
  29. package/dist/rules/checkIndentation.js.map +1 -1
  30. package/dist/rules/checkLineAlignment.js +9 -30
  31. package/dist/rules/checkLineAlignment.js.map +1 -1
  32. package/dist/rules/checkParamNames.js +9 -47
  33. package/dist/rules/checkParamNames.js.map +1 -1
  34. package/dist/rules/checkPropertyNames.js +1 -18
  35. package/dist/rules/checkPropertyNames.js.map +1 -1
  36. package/dist/rules/checkSyntax.js +2 -5
  37. package/dist/rules/checkSyntax.js.map +1 -1
  38. package/dist/rules/checkTagNames.js +0 -18
  39. package/dist/rules/checkTagNames.js.map +1 -1
  40. package/dist/rules/checkTypes.js +17 -46
  41. package/dist/rules/checkTypes.js.map +1 -1
  42. package/dist/rules/checkValues.js +0 -18
  43. package/dist/rules/checkValues.js.map +1 -1
  44. package/dist/rules/emptyTags.js +6 -11
  45. package/dist/rules/emptyTags.js.map +1 -1
  46. package/dist/rules/implementsOnClasses.js +0 -6
  47. package/dist/rules/implementsOnClasses.js.map +1 -1
  48. package/dist/rules/matchDescription.js +0 -20
  49. package/dist/rules/matchDescription.js.map +1 -1
  50. package/dist/rules/matchName.js +2 -17
  51. package/dist/rules/matchName.js.map +1 -1
  52. package/dist/rules/multilineBlocks.js +10 -34
  53. package/dist/rules/multilineBlocks.js.map +1 -1
  54. package/dist/rules/newlineAfterDescription.js +0 -8
  55. package/dist/rules/newlineAfterDescription.js.map +1 -1
  56. package/dist/rules/noBadBlocks.js +2 -16
  57. package/dist/rules/noBadBlocks.js.map +1 -1
  58. package/dist/rules/noDefaults.js +0 -7
  59. package/dist/rules/noDefaults.js.map +1 -1
  60. package/dist/rules/noMissingSyntax.js +2 -16
  61. package/dist/rules/noMissingSyntax.js.map +1 -1
  62. package/dist/rules/noMultiAsterisks.js +2 -16
  63. package/dist/rules/noMultiAsterisks.js.map +1 -1
  64. package/dist/rules/noRestrictedSyntax.js +3 -9
  65. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  66. package/dist/rules/noTypes.js +0 -7
  67. package/dist/rules/noTypes.js.map +1 -1
  68. package/dist/rules/noUndefinedTypes.js +13 -34
  69. package/dist/rules/noUndefinedTypes.js.map +1 -1
  70. package/dist/rules/requireAsteriskPrefix.js +2 -26
  71. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  72. package/dist/rules/requireDescription.js +0 -17
  73. package/dist/rules/requireDescription.js.map +1 -1
  74. package/dist/rules/requireDescriptionCompleteSentence.js +13 -34
  75. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  76. package/dist/rules/requireExample.js +0 -9
  77. package/dist/rules/requireExample.js.map +1 -1
  78. package/dist/rules/requireFileOverview.js +0 -16
  79. package/dist/rules/requireFileOverview.js.map +1 -1
  80. package/dist/rules/requireHyphenBeforeParamDescription.js +2 -16
  81. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  82. package/dist/rules/requireJsdoc.js +13 -58
  83. package/dist/rules/requireJsdoc.js.map +1 -1
  84. package/dist/rules/requireParam.js +6 -53
  85. package/dist/rules/requireParam.js.map +1 -1
  86. package/dist/rules/requireParamDescription.js +0 -4
  87. package/dist/rules/requireParamDescription.js.map +1 -1
  88. package/dist/rules/requireParamName.js +0 -4
  89. package/dist/rules/requireParamName.js.map +1 -1
  90. package/dist/rules/requireParamType.js +0 -4
  91. package/dist/rules/requireParamType.js.map +1 -1
  92. package/dist/rules/requireProperty.js +0 -9
  93. package/dist/rules/requireProperty.js.map +1 -1
  94. package/dist/rules/requirePropertyDescription.js +0 -4
  95. package/dist/rules/requirePropertyDescription.js.map +1 -1
  96. package/dist/rules/requirePropertyName.js +0 -4
  97. package/dist/rules/requirePropertyName.js.map +1 -1
  98. package/dist/rules/requirePropertyType.js +0 -4
  99. package/dist/rules/requirePropertyType.js.map +1 -1
  100. package/dist/rules/requireReturns.js +13 -23
  101. package/dist/rules/requireReturns.js.map +1 -1
  102. package/dist/rules/requireReturnsCheck.js +12 -20
  103. package/dist/rules/requireReturnsCheck.js.map +1 -1
  104. package/dist/rules/requireReturnsDescription.js +0 -6
  105. package/dist/rules/requireReturnsDescription.js.map +1 -1
  106. package/dist/rules/requireReturnsType.js +0 -4
  107. package/dist/rules/requireReturnsType.js.map +1 -1
  108. package/dist/rules/requireThrows.js +6 -15
  109. package/dist/rules/requireThrows.js.map +1 -1
  110. package/dist/rules/requireYields.js +13 -29
  111. package/dist/rules/requireYields.js.map +1 -1
  112. package/dist/rules/requireYieldsCheck.js +8 -29
  113. package/dist/rules/requireYieldsCheck.js.map +1 -1
  114. package/dist/rules/sortTags.js +17 -30
  115. package/dist/rules/sortTags.js.map +1 -1
  116. package/dist/rules/tagLines.js +0 -26
  117. package/dist/rules/tagLines.js.map +1 -1
  118. package/dist/rules/validTypes.js +22 -53
  119. package/dist/rules/validTypes.js.map +1 -1
  120. package/dist/tagNames.js +7 -4
  121. package/dist/tagNames.js.map +1 -1
  122. package/dist/utils/hasReturnValue.js +22 -66
  123. package/dist/utils/hasReturnValue.js.map +1 -1
  124. package/package.json +16 -16
@@ -4,18 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  const middleAsterisksBlockWS = /^([\t ]|\*(?!\*))+/u;
13
10
  const middleAsterisksNoBlockWS = /^\*+/u;
14
11
  const endAsterisksSingleLineBlockWS = /\*((?:\*|(?: |\t))*)\*$/u;
15
12
  const endAsterisksMultipleLineBlockWS = /((?:\*|(?: |\t))*)\*$/u;
16
13
  const endAsterisksSingleLineNoBlockWS = /\*(\**)\*$/u;
17
14
  const endAsterisksMultipleLineNoBlockWS = /(\**)\*$/u;
18
-
19
15
  var _default = (0, _iterateJsdoc.default)(({
20
16
  context,
21
17
  jsdoc,
@@ -26,8 +22,9 @@ var _default = (0, _iterateJsdoc.default)(({
26
22
  preventAtEnd = true,
27
23
  preventAtMiddleLines = true
28
24
  } = context.options[0] || {};
29
- const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS; // eslint-disable-next-line complexity -- Todo
25
+ const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;
30
26
 
27
+ // eslint-disable-next-line complexity -- Todo
31
28
  jsdoc.source.some(({
32
29
  tokens,
33
30
  number
@@ -41,47 +38,37 @@ var _default = (0, _iterateJsdoc.default)(({
41
38
  end,
42
39
  postDelimiter
43
40
  } = tokens;
44
-
45
41
  if (preventAtMiddleLines && !end && !tag && !type && !name && (!allowWhitespace && middleAsterisks.test(description) || allowWhitespace && middleAsterisks.test(postDelimiter + description))) {
46
42
  // console.log('description', JSON.stringify(description));
47
43
  const fix = () => {
48
44
  tokens.description = description.replace(middleAsterisks, '');
49
45
  };
50
-
51
46
  utils.reportJSDoc('Should be no multiple asterisks on middle lines.', {
52
47
  line: number
53
48
  }, fix, true);
54
49
  return true;
55
50
  }
56
-
57
51
  if (!preventAtEnd || !end) {
58
52
  return false;
59
53
  }
60
-
61
54
  const isSingleLineBlock = delimiter === '/**';
62
55
  const delim = isSingleLineBlock ? '*' : delimiter;
63
56
  let endAsterisks;
64
-
65
57
  if (allowWhitespace) {
66
58
  endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;
67
59
  } else {
68
60
  endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;
69
61
  }
70
-
71
62
  const endingAsterisksAndSpaces = (allowWhitespace ? postDelimiter + description + delim : description + delim).match(endAsterisks);
72
-
73
63
  if (!endingAsterisksAndSpaces || !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()) {
74
64
  return false;
75
65
  }
76
-
77
66
  const endFix = () => {
78
67
  if (!isSingleLineBlock) {
79
68
  tokens.delimiter = '';
80
69
  }
81
-
82
70
  tokens.description = (description + delim).replace(endAsterisks, '');
83
71
  };
84
-
85
72
  utils.reportJSDoc('Should be no multiple asterisks on end lines.', {
86
73
  line: number
87
74
  }, endFix, true);
@@ -113,7 +100,6 @@ var _default = (0, _iterateJsdoc.default)(({
113
100
  type: 'suggestion'
114
101
  }
115
102
  });
116
-
117
103
  exports.default = _default;
118
104
  module.exports = exports.default;
119
105
  //# sourceMappingURL=noMultiAsterisks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noMultiAsterisks.js","names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"noMultiAsterisks.js","names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _esquery = _interopRequireDefault(require("esquery"));
9
-
10
8
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  var _default = (0, _iterateJsdoc.default)(({
15
11
  node,
16
12
  context,
@@ -24,7 +20,6 @@ var _default = (0, _iterateJsdoc.default)(({
24
20
  report('Rule `no-restricted-syntax` is missing a `context` option.');
25
21
  return;
26
22
  }
27
-
28
23
  const {
29
24
  contexts
30
25
  } = context.options[0];
@@ -34,13 +29,13 @@ var _default = (0, _iterateJsdoc.default)(({
34
29
  }) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context), null, {
35
30
  visitorKeys: sourceCode.visitorKeys
36
31
  })) && comment === cntxt.comment;
37
- }); // We are not on the *particular* matching context/comment, so don't assume
38
- // we need reporting
32
+ });
39
33
 
34
+ // We are not on the *particular* matching context/comment, so don't assume
35
+ // we need reporting
40
36
  if (!foundContext) {
41
37
  return;
42
38
  }
43
-
44
39
  const contextStr = typeof foundContext === 'object' ? foundContext.context ?? 'any' : foundContext;
45
40
  const message = (foundContext === null || foundContext === void 0 ? void 0 : foundContext.message) ?? 'Syntax is restricted: {{context}}' + (comment ? ' with {{comment}}' : '');
46
41
  report(message, null, null, {
@@ -87,7 +82,6 @@ var _default = (0, _iterateJsdoc.default)(({
87
82
  type: 'suggestion'
88
83
  }
89
84
  });
90
-
91
85
  exports.default = _default;
92
86
  module.exports = exports.default;
93
87
  //# sourceMappingURL=noRestrictedSyntax.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noRestrictedSyntax.js","names":["iterateJsdoc","node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,IAD2B;EAE3BC,OAF2B;EAG3BC,IAAI,EAAE;IACJC;EADI,CAHqB;EAM3BC,UAN2B;EAO3BC;AAP2B,CAAD,KAQtB;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAR,CAAgBC,MAArB,EAA6B;IAC3BF,MAAM,CAAC,4DAAD,CAAN;IAEA;EACD;;EAED,MAAM;IACJG;EADI,IAEFP,OAAO,CAACK,OAAR,CAAgB,CAAhB,CAFJ;EAIA,MAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAT,CAAeC,KAAD,IAAW;IAC5C,OAAO,OAAOA,KAAP,KAAiB,QAAjB,GACLC,gBAAA,CAAQC,OAAR,CAAgBb,IAAhB,EAAsBY,gBAAA,CAAQE,KAAR,CAAcH,KAAd,CAAtB,EAA4C,IAA5C,EAAkD;MAChDI,WAAW,EAAEX,UAAU,CAACW;IADwB,CAAlD,CADK,GAIL,CAAC,CAACJ,KAAK,CAACV,OAAP,IAAkBU,KAAK,CAACV,OAAN,KAAkB,KAApC,IAA6CW,gBAAA,CAAQC,OAAR,CAAgBb,IAAhB,EAAsBY,gBAAA,CAAQE,KAAR,CAAcH,KAAK,CAACV,OAApB,CAAtB,EAAoD,IAApD,EAA0D;MACtGc,WAAW,EAAEX,UAAU,CAACW;IAD8E,CAA1D,CAA9C,KAGEZ,OAAO,KAAKQ,KAAK,CAACR,OAPtB;EAQD,CAToB,CAArB,CAXI,CAsBJ;EACA;;EACA,IAAI,CAACM,YAAL,EAAmB;IACjB;EACD;;EAED,MAAMO,UAAU,GAAG,OAAOP,YAAP,KAAwB,QAAxB,GACjBA,YAAY,CAACR,OAAb,IAAwB,KADP,GAEjBQ,YAFF;EAGA,MAAMQ,OAAO,GAAG,CAAAR,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEQ,OAAd,KACd,uCACGd,OAAO,GAAG,mBAAH,GAAyB,EADnC,CADF;EAIAE,MAAM,CAACY,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsB;IAC1Bd,OAD0B;IAE1BF,OAAO,EAAEe;EAFiB,CAAtB,CAAN;AAID,CA/Cc,EA+CZ;EACDE,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVlB,QAAQ,EAAE;UACRmB,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YADR,CADK,EAIL;cACEJ,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVvB,OAAO,EAAE;kBACP0B,IAAI,EAAE;gBADC,CADC;gBAIV5B,OAAO,EAAE;kBACP4B,IAAI,EAAE;gBADC,CAJC;gBAOVZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBADC;cAPC,CAFd;cAaEA,IAAI,EAAE;YAbR,CAJK;UADF,CADC;UAuBRA,IAAI,EAAE;QAvBE;MADA,CAFd;MA6BEC,QAAQ,EAAE,CACR,UADQ,CA7BZ;MAgCED,IAAI,EAAE;IAhCR,CADM,CANJ;IA0CJA,IAAI,EAAE;EA1CF;AAFL,CA/CY,C"}
1
+ {"version":3,"file":"noRestrictedSyntax.js","names":["iterateJsdoc","node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AACA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,IAAI;EACJC,OAAO;EACPC,IAAI,EAAE;IACJC;EACF,CAAC;EACDC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAO,CAACC,MAAM,EAAE;IAC3BF,MAAM,CAAC,4DAA4D,CAAC;IAEpE;EACF;EAEA,MAAM;IACJG;EACF,CAAC,GAAGP,OAAO,CAACK,OAAO,CAAC,CAAC,CAAC;EAEtB,MAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAI,CAAEC,KAAK,IAAK;IAC5C,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAC9BC,gBAAO,CAACC,OAAO,CAACb,IAAI,EAAEY,gBAAO,CAACE,KAAK,CAACH,KAAK,CAAC,EAAE,IAAI,EAAE;MAChDI,WAAW,EAAEX,UAAU,CAACW;IAC1B,CAAC,CAAC,GACF,CAAC,CAACJ,KAAK,CAACV,OAAO,IAAIU,KAAK,CAACV,OAAO,KAAK,KAAK,IAAIW,gBAAO,CAACC,OAAO,CAACb,IAAI,EAAEY,gBAAO,CAACE,KAAK,CAACH,KAAK,CAACV,OAAO,CAAC,EAAE,IAAI,EAAE;MACtGc,WAAW,EAAEX,UAAU,CAACW;IAC1B,CAAC,CAAC,KACAZ,OAAO,KAAKQ,KAAK,CAACR,OAAO;EAC/B,CAAC,CAAC;;EAEF;EACA;EACA,IAAI,CAACM,YAAY,EAAE;IACjB;EACF;EAEA,MAAMO,UAAU,GAAG,OAAOP,YAAY,KAAK,QAAQ,GACjDA,YAAY,CAACR,OAAO,IAAI,KAAK,GAC7BQ,YAAY;EACd,MAAMQ,OAAO,GAAG,CAAAR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,OAAO,KACnC,mCAAmC,IAChCd,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;EAExCE,MAAM,CAACY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1Bd,OAAO;IACPF,OAAO,EAAEe;EACX,CAAC,CAAC;AACJ,CAAC,EAAE;EACDE,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDAAsD;MACnEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlB,QAAQ,EAAE;UACRmB,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEJ,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVvB,OAAO,EAAE;kBACP0B,IAAI,EAAE;gBACR,CAAC;gBACD5B,OAAO,EAAE;kBACP4B,IAAI,EAAE;gBACR,CAAC;gBACDZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDC,QAAQ,EAAE,CACR,UAAU,CACX;MACDD,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
@@ -4,27 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  const removeType = ({
13
10
  tokens
14
11
  }) => {
15
12
  tokens.postTag = '';
16
13
  tokens.type = '';
17
14
  };
18
-
19
15
  var _default = (0, _iterateJsdoc.default)(({
20
16
  utils
21
17
  }) => {
22
18
  if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {
23
19
  return;
24
20
  }
25
-
26
21
  const tags = utils.getPresentTags(['param', 'arg', 'argument', 'returns', 'return']);
27
-
28
22
  for (const tag of tags) {
29
23
  if (tag.type) {
30
24
  utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {
@@ -70,7 +64,6 @@ var _default = (0, _iterateJsdoc.default)(({
70
64
  type: 'suggestion'
71
65
  }
72
66
  });
73
-
74
67
  exports.default = _default;
75
68
  module.exports = exports.default;
76
69
  //# sourceMappingURL=noTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noTypes.js","names":["removeType","tokens","postTag","type","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,CAAC;EAClBC;AADkB,CAAD,KAEb;EACJA,MAAM,CAACC,OAAP,GAAiB,EAAjB;EACAD,MAAM,CAACE,IAAP,GAAc,EAAd;AACD,CALD;;eAOe,IAAAC,qBAAA,EAAa,CAAC;EAC3BC;AAD2B,CAAD,KAEtB;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAN,EAAD,IAAgC,CAACD,KAAK,CAACE,iBAAN,EAArC,EAAgE;IAC9D;EACD;;EAED,MAAMC,IAAI,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAChC,OADgC,EACvB,KADuB,EAChB,UADgB,EACJ,SADI,EACO,QADP,CAArB,CAAb;;EAIA,KAAK,MAAMC,GAAX,IAAkBF,IAAlB,EAAwB;IACtB,IAAIE,GAAG,CAACP,IAAR,EAAc;MACZE,KAAK,CAACM,WAAN,CAAmB,+BAA8BD,GAAG,CAACA,GAAI,GAAzD,EAA6DA,GAA7D,EAAkE,MAAM;QACtE,KAAK,MAAME,MAAX,IAAqBF,GAAG,CAACE,MAAzB,EAAiC;UAC/BZ,UAAU,CAACY,MAAD,CAAV;QACD;MACF,CAJD;IAKD;EACF;AACF,CApBc,EAoBZ;EACDC,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACErB,IAAI,EAAE;YADR,CADK,EAIL;cACEiB,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPtB,IAAI,EAAE;gBADC,CADC;gBAIVuB,OAAO,EAAE;kBACPvB,IAAI,EAAE;gBADC;cAJC,CAFd;cAUEA,IAAI,EAAE;YAVR,CAJK;UADF,CADC;UAoBRA,IAAI,EAAE;QApBE;MADA,CAFd;MA0BEA,IAAI,EAAE;IA1BR,CADM,CANJ;IAoCJA,IAAI,EAAE;EApCF;AAFL,CApBY,C"}
1
+ {"version":3,"file":"noTypes.js","names":["removeType","tokens","postTag","type","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAE3C,MAAMA,UAAU,GAAG,CAAC;EAClBC;AACF,CAAC,KAAK;EACJA,MAAM,CAACC,OAAO,GAAG,EAAE;EACnBD,MAAM,CAACE,IAAI,GAAG,EAAE;AAClB,CAAC;AAAC,eAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC;AACF,CAAC,KAAK;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAmB,EAAE,IAAI,CAACD,KAAK,CAACE,iBAAiB,EAAE,EAAE;IAC9D;EACF;EAEA,MAAMC,IAAI,GAAGH,KAAK,CAACI,cAAc,CAAC,CAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAChD,CAAC;EAEF,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;IACtB,IAAIE,GAAG,CAACP,IAAI,EAAE;MACZE,KAAK,CAACM,WAAW,CAAE,+BAA8BD,GAAG,CAACA,GAAI,GAAE,EAAEA,GAAG,EAAE,MAAM;QACtE,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;UAC/BZ,UAAU,CAACY,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;AACF,CAAC,EAAE;EACDC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DAA+D;MAC5EC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACErB,IAAI,EAAE;YACR,CAAC,EACD;cACEiB,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPtB,IAAI,EAAE;gBACR,CAAC;gBACDuB,OAAO,EAAE;kBACPvB,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
@@ -4,27 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _jsdoccomment = require("@es-joy/jsdoccomment");
9
-
10
8
  var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc"));
11
-
12
9
  var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
13
-
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
11
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
12
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
+ const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function'];
19
14
 
20
- const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function']; // https://www.typescriptlang.org/docs/handbook/utility-types.html
21
-
15
+ // https://www.typescriptlang.org/docs/handbook/utility-types.html
22
16
  const typescriptGlobals = ['Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit', 'Exclude', 'Extract', 'NonNullable', 'Parameters', 'ConstructorParameters', 'ReturnType', 'InstanceType', 'ThisParameterType', 'OmitThisParameter', 'ThisType', 'Uppercase', 'Lowercase', 'Capitalize', 'Uncapitalize'];
23
-
24
17
  const stripPseudoTypes = str => {
25
18
  return str && str.replace(/(?:\.|<>|\.<>|\[\])$/u, '');
26
19
  };
27
-
28
20
  var _default = (0, _iterateJsdoc.default)(({
29
21
  context,
30
22
  node,
@@ -34,7 +26,6 @@ var _default = (0, _iterateJsdoc.default)(({
34
26
  utils
35
27
  }) => {
36
28
  var _globalScope$childSco, _globalScope$childSco2;
37
-
38
29
  const {
39
30
  scopeManager
40
31
  } = sourceCode;
@@ -50,28 +41,23 @@ var _default = (0, _iterateJsdoc.default)(({
50
41
  structuredTags,
51
42
  mode
52
43
  } = settings;
53
-
54
44
  if (Object.keys(preferredTypes).length) {
55
45
  definedPreferredTypes = Object.values(preferredTypes).map(preferredType => {
56
46
  if (typeof preferredType === 'string') {
57
47
  // May become an empty string but will be filtered out below
58
48
  return stripPseudoTypes(preferredType);
59
49
  }
60
-
61
50
  if (!preferredType) {
62
51
  return undefined;
63
52
  }
64
-
65
53
  if (typeof preferredType !== 'object') {
66
54
  utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.');
67
55
  }
68
-
69
56
  return stripPseudoTypes(preferredType.replacement);
70
57
  }).filter(preferredType => {
71
58
  return preferredType;
72
59
  });
73
60
  }
74
-
75
61
  const typedefDeclarations = context.getAllComments().filter(comment => {
76
62
  return /^\*\s/u.test(comment.value);
77
63
  }).map(commentNode => {
@@ -86,44 +72,43 @@ var _default = (0, _iterateJsdoc.default)(({
86
72
  return tag.name;
87
73
  });
88
74
  const ancestorNodes = [];
89
- let currentNode = node; // No need for Program node?
90
-
75
+ let currentNode = node;
76
+ // No need for Program node?
91
77
  while ((_currentNode = currentNode) !== null && _currentNode !== void 0 && _currentNode.parent) {
92
78
  var _currentNode;
93
-
94
79
  ancestorNodes.push(currentNode);
95
80
  currentNode = currentNode.parent;
96
81
  }
97
-
98
82
  const getTemplateTags = function (ancestorNode) {
99
83
  const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, ancestorNode, settings);
100
-
101
84
  if (!commentNode) {
102
85
  return [];
103
86
  }
104
-
105
87
  const jsdoc = (0, _iterateJsdoc.parseComment)(commentNode, '');
106
88
  return _jsdocUtils.default.filterTags(jsdoc.tags, tag => {
107
89
  return tag.tag === 'template';
108
90
  });
109
- }; // `currentScope` may be `null` or `Program`, so in such a case,
110
- // we look to present tags instead
111
-
91
+ };
112
92
 
93
+ // `currentScope` may be `null` or `Program`, so in such a case,
94
+ // we look to present tags instead
113
95
  const templateTags = ancestorNodes.length ? ancestorNodes.flatMap(ancestorNode => {
114
96
  return getTemplateTags(ancestorNode);
115
97
  }) : utils.getPresentTags('template');
116
98
  const closureGenericTypes = templateTags.flatMap(tag => {
117
99
  return utils.parseClosureTemplateTag(tag);
118
- }); // In modules, including Node, there is a global scope at top with the
119
- // Program scope inside
100
+ });
120
101
 
102
+ // In modules, including Node, there is a global scope at top with the
103
+ // Program scope inside
121
104
  const cjsOrESMScope = ((_globalScope$childSco = globalScope.childScopes[0]) === null || _globalScope$childSco === void 0 ? void 0 : (_globalScope$childSco2 = _globalScope$childSco.block) === null || _globalScope$childSco2 === void 0 ? void 0 : _globalScope$childSco2.type) === 'Program';
122
105
  const allDefinedTypes = new Set(globalScope.variables.map(({
123
106
  name
124
107
  }) => {
125
108
  return name;
126
- }) // If the file is a module, concat the variables from the module scope.
109
+ })
110
+
111
+ // If the file is a module, concat the variables from the module scope.
127
112
  .concat(cjsOrESMScope ? globalScope.childScopes.flatMap(({
128
113
  variables
129
114
  }) => {
@@ -138,26 +123,21 @@ var _default = (0, _iterateJsdoc.default)(({
138
123
  }) => {
139
124
  return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');
140
125
  });
141
-
142
126
  for (const tag of jsdocTagsWithPossibleType) {
143
127
  let parsedType;
144
-
145
128
  try {
146
129
  parsedType = mode === 'permissive' ? (0, _jsdoccomment.tryParse)(tag.type) : (0, _jsdoccomment.parse)(tag.type, mode);
147
130
  } catch {
148
131
  // On syntax error, will be handled by valid-types.
149
132
  continue;
150
133
  }
151
-
152
134
  (0, _jsdoccomment.traverse)(parsedType, ({
153
135
  type,
154
136
  value
155
137
  }) => {
156
138
  if (type === 'JsdocTypeName') {
157
139
  var _structuredTags$tag$t;
158
-
159
140
  const structuredTypes = (_structuredTags$tag$t = structuredTags[tag.tag]) === null || _structuredTags$tag$t === void 0 ? void 0 : _structuredTags$tag$t.type;
160
-
161
141
  if (!allDefinedTypes.has(value) && (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))) {
162
142
  report(`The type '${value}' is undefined.`, null, tag);
163
143
  } else if (!extraTypes.includes(value)) {
@@ -188,7 +168,6 @@ var _default = (0, _iterateJsdoc.default)(({
188
168
  type: 'suggestion'
189
169
  }
190
170
  });
191
-
192
171
  exports.default = _default;
193
172
  module.exports = exports.default;
194
173
  //# sourceMappingURL=noUndefinedTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.js","names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","tryParseType","parseType","traverse","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"noUndefinedTypes.js","names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","tryParseType","parseType","traverse","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  var _default = (0, _iterateJsdoc.default)(({
13
10
  context,
14
11
  jsdoc,
@@ -29,22 +26,18 @@ var _default = (0, _iterateJsdoc.default)(({
29
26
  tokens
30
27
  }) => {
31
28
  var _tagMap$any2;
32
-
33
29
  const {
34
30
  delimiter,
35
31
  tag,
36
32
  end,
37
33
  description
38
34
  } = tokens;
39
-
40
35
  const neverFix = () => {
41
36
  tokens.delimiter = '';
42
37
  tokens.postDelimiter = '';
43
38
  };
44
-
45
39
  const checkNever = checkValue => {
46
40
  var _tagMap$always, _tagMap$never;
47
-
48
41
  if (delimiter && delimiter !== '/**' && (never && !((_tagMap$always = tagMap.always) !== null && _tagMap$always !== void 0 && _tagMap$always.includes(checkValue)) || (_tagMap$never = tagMap.never) !== null && _tagMap$never !== void 0 && _tagMap$never.includes(checkValue))) {
49
42
  utils.reportJSDoc('Expected JSDoc line to have no prefix.', {
50
43
  column: 0,
@@ -52,22 +45,17 @@ var _default = (0, _iterateJsdoc.default)(({
52
45
  }, neverFix);
53
46
  return true;
54
47
  }
55
-
56
48
  return false;
57
49
  };
58
-
59
50
  const alwaysFix = () => {
60
51
  if (!tokens.start) {
61
52
  tokens.start = indent + ' ';
62
53
  }
63
-
64
54
  tokens.delimiter = '*';
65
55
  tokens.postDelimiter = tag || description ? ' ' : '';
66
56
  };
67
-
68
57
  const checkAlways = checkValue => {
69
58
  var _tagMap$never2, _tagMap$always2;
70
-
71
59
  if (!delimiter && (always && !((_tagMap$never2 = tagMap.never) !== null && _tagMap$never2 !== void 0 && _tagMap$never2.includes(checkValue)) || (_tagMap$always2 = tagMap.always) !== null && _tagMap$always2 !== void 0 && _tagMap$always2.includes(checkValue))) {
72
60
  utils.reportJSDoc('Expected JSDoc line to have the prefix.', {
73
61
  column: 0,
@@ -75,51 +63,40 @@ var _default = (0, _iterateJsdoc.default)(({
75
63
  }, alwaysFix);
76
64
  return true;
77
65
  }
78
-
79
66
  return false;
80
67
  };
81
-
82
68
  if (tag) {
83
69
  // Remove at sign
84
70
  currentTag = tag.slice(1);
85
71
  }
86
-
87
- if ( // If this is the end but has a tag, the delimiter will also be
72
+ if (
73
+ // If this is the end but has a tag, the delimiter will also be
88
74
  // populated and will be safely ignored later
89
75
  end && !tag) {
90
76
  return false;
91
77
  }
92
-
93
78
  if (!currentTag) {
94
79
  var _tagMap$any;
95
-
96
80
  if ((_tagMap$any = tagMap.any) !== null && _tagMap$any !== void 0 && _tagMap$any.includes('*description')) {
97
81
  return false;
98
82
  }
99
-
100
83
  if (checkNever('*description')) {
101
84
  return true;
102
85
  }
103
-
104
86
  if (checkAlways('*description')) {
105
87
  return true;
106
88
  }
107
-
108
89
  return false;
109
90
  }
110
-
111
91
  if ((_tagMap$any2 = tagMap.any) !== null && _tagMap$any2 !== void 0 && _tagMap$any2.includes(currentTag)) {
112
92
  return false;
113
93
  }
114
-
115
94
  if (checkNever(currentTag)) {
116
95
  return true;
117
96
  }
118
-
119
97
  if (checkAlways(currentTag)) {
120
98
  return true;
121
99
  }
122
-
123
100
  return false;
124
101
  });
125
102
  }, {
@@ -161,7 +138,6 @@ var _default = (0, _iterateJsdoc.default)(({
161
138
  type: 'layout'
162
139
  }
163
140
  });
164
-
165
141
  exports.default = _default;
166
142
  module.exports = exports.default;
167
143
  //# sourceMappingURL=requireAsteriskPrefix.js.map