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
@@ -1 +1 @@
1
- {"version":3,"file":"requireFileOverview.js","names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","iterateJsdoc","jsdocNode","utils","context","tags","options","tagName","Object","keys","targetTagName","getPreferredTagName","hasDuplicate","hasNonComment","range","exit","entries","obj","getPreferredTagNameObject","blocked","reportSettings","replacement","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","patternProperties","type","nonComment","node"],"sources":["../../src/rules/requireFileOverview.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultTags = {\n file: {\n initialCommentsOnly: true,\n mustExist: true,\n preventDuplicates: true,\n },\n};\n\nconst setDefaults = (state) => {\n // First iteration\n if (!state.globalTags) {\n state.globalTags = {};\n state.hasDuplicates = {};\n state.hasTag = {};\n state.hasNonCommentBeforeTag = {};\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n state,\n utils,\n context,\n}) => {\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n setDefaults(state);\n\n for (const tagName of Object.keys(tags)) {\n const targetTagName = utils.getPreferredTagName({\n tagName,\n });\n\n const hasTag = targetTagName && utils.hasTag(targetTagName);\n\n state.hasTag[tagName] = hasTag || state.hasTag[tagName];\n\n const hasDuplicate = state.hasDuplicates[tagName];\n\n if (hasDuplicate === false) {\n // Was marked before, so if a tag now, is a dupe\n state.hasDuplicates[tagName] = hasTag;\n } else if (!hasDuplicate && hasTag) {\n // No dupes set before, but has first tag, so change state\n // from `undefined` to `false` so can detect next time\n state.hasDuplicates[tagName] = false;\n state.hasNonCommentBeforeTag[tagName] = state.hasNonComment &&\n state.hasNonComment < jsdocNode.range[0];\n }\n }\n}, {\n exit ({\n context,\n state,\n utils,\n }) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [\n tagName,\n {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n },\n ] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({\n tagName,\n });\n if (obj && obj.blocked) {\n utils.reportSettings(\n `\\`settings.jsdoc.tagNamePreference\\` cannot block @${obj.tagName} ` +\n 'for the `require-file-overview` rule',\n );\n } else {\n const targetTagName = obj && obj.replacement || obj;\n if (mustExist && !state.hasTag[tagName]) {\n utils.reportSettings(`Missing @${targetTagName}`);\n }\n\n if (preventDuplicates && state.hasDuplicates[tagName]) {\n utils.reportSettings(\n `Duplicate @${targetTagName}`,\n );\n }\n\n if (initialCommentsOnly &&\n state.hasNonCommentBeforeTag[tagName]\n ) {\n utils.reportSettings(\n `@${targetTagName} should be at the beginning of the file`,\n );\n }\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-file-overview',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n initialCommentsOnly: {\n type: 'boolean',\n },\n mustExist: {\n type: 'boolean',\n },\n preventDuplicates: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonComment ({\n state,\n node,\n }) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireFileOverview.js","names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","iterateJsdoc","jsdocNode","utils","context","tags","options","tagName","Object","keys","targetTagName","getPreferredTagName","hasDuplicate","hasNonComment","range","exit","entries","obj","getPreferredTagNameObject","blocked","reportSettings","replacement","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","patternProperties","type","nonComment","node"],"sources":["../../src/rules/requireFileOverview.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultTags = {\n file: {\n initialCommentsOnly: true,\n mustExist: true,\n preventDuplicates: true,\n },\n};\n\nconst setDefaults = (state) => {\n // First iteration\n if (!state.globalTags) {\n state.globalTags = {};\n state.hasDuplicates = {};\n state.hasTag = {};\n state.hasNonCommentBeforeTag = {};\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n state,\n utils,\n context,\n}) => {\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n setDefaults(state);\n\n for (const tagName of Object.keys(tags)) {\n const targetTagName = utils.getPreferredTagName({\n tagName,\n });\n\n const hasTag = targetTagName && utils.hasTag(targetTagName);\n\n state.hasTag[tagName] = hasTag || state.hasTag[tagName];\n\n const hasDuplicate = state.hasDuplicates[tagName];\n\n if (hasDuplicate === false) {\n // Was marked before, so if a tag now, is a dupe\n state.hasDuplicates[tagName] = hasTag;\n } else if (!hasDuplicate && hasTag) {\n // No dupes set before, but has first tag, so change state\n // from `undefined` to `false` so can detect next time\n state.hasDuplicates[tagName] = false;\n state.hasNonCommentBeforeTag[tagName] = state.hasNonComment &&\n state.hasNonComment < jsdocNode.range[0];\n }\n }\n}, {\n exit ({\n context,\n state,\n utils,\n }) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [\n tagName,\n {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n },\n ] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({\n tagName,\n });\n if (obj && obj.blocked) {\n utils.reportSettings(\n `\\`settings.jsdoc.tagNamePreference\\` cannot block @${obj.tagName} ` +\n 'for the `require-file-overview` rule',\n );\n } else {\n const targetTagName = obj && obj.replacement || obj;\n if (mustExist && !state.hasTag[tagName]) {\n utils.reportSettings(`Missing @${targetTagName}`);\n }\n\n if (preventDuplicates && state.hasDuplicates[tagName]) {\n utils.reportSettings(\n `Duplicate @${targetTagName}`,\n );\n }\n\n if (initialCommentsOnly &&\n state.hasNonCommentBeforeTag[tagName]\n ) {\n utils.reportSettings(\n `@${targetTagName} should be at the beginning of the file`,\n );\n }\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-file-overview',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n initialCommentsOnly: {\n type: 'boolean',\n },\n mustExist: {\n type: 'boolean',\n },\n preventDuplicates: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonComment ({\n state,\n node,\n }) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\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
  sourceCode,
14
11
  utils,
@@ -20,23 +17,20 @@ var _default = (0, _iterateJsdoc.default)(({
20
17
  const [mainCircumstance, {
21
18
  tags
22
19
  } = {}] = context.options;
23
-
24
20
  const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {
25
21
  const always = !circumstance || circumstance === 'always';
26
22
  const desc = utils.getTagDescription(jsdocTag);
27
-
28
23
  if (!desc.trim()) {
29
24
  return;
30
25
  }
31
-
32
26
  const startsWithHyphen = /^\s*-/u.test(desc);
33
-
34
27
  if (always) {
35
28
  if (!startsWithHyphen) {
36
29
  report(`There must be a hyphen before @${targetTagName} description.`, fixer => {
37
30
  const lineIndex = jsdocTag.line;
38
- const sourceLines = sourceCode.getText(jsdocNode).split('\n'); // Get start index of description, accounting for multi-line descriptions
31
+ const sourceLines = sourceCode.getText(jsdocNode).split('\n');
39
32
 
33
+ // Get start index of description, accounting for multi-line descriptions
40
34
  const description = desc.split('\n')[0];
41
35
  const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);
42
36
  const replacementLine = sourceLines[lineIndex].slice(0, descriptionIndex) + '- ' + description;
@@ -53,18 +47,14 @@ var _default = (0, _iterateJsdoc.default)(({
53
47
  }, jsdocTag);
54
48
  }
55
49
  };
56
-
57
50
  utils.forEachPreferredTag('param', checkHyphens);
58
-
59
51
  if (tags) {
60
52
  const tagEntries = Object.entries(tags);
61
-
62
53
  for (const [tagName, circumstance] of tagEntries) {
63
54
  if (tagName === '*') {
64
55
  const preferredParamTag = utils.getPreferredTagName({
65
56
  tagName: 'param'
66
57
  });
67
-
68
58
  for (const {
69
59
  tag
70
60
  } of jsdoc.tags) {
@@ -73,15 +63,12 @@ var _default = (0, _iterateJsdoc.default)(({
73
63
  })) {
74
64
  continue;
75
65
  }
76
-
77
66
  utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {
78
67
  checkHyphens(jsdocTag, targetTagName, circumstance);
79
68
  });
80
69
  }
81
-
82
70
  continue;
83
71
  }
84
-
85
72
  utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {
86
73
  checkHyphens(jsdocTag, targetTagName, circumstance);
87
74
  });
@@ -121,7 +108,6 @@ var _default = (0, _iterateJsdoc.default)(({
121
108
  type: 'layout'
122
109
  }
123
110
  });
124
-
125
111
  exports.default = _default;
126
112
  module.exports = exports.default;
127
113
  //# sourceMappingURL=requireHyphenBeforeParamDescription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","unwantedPart","exec","replace","length","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n report(`There must be no hyphen before @${targetTagName} description.`, (fixer) => {\n const [\n unwantedPart,\n ] = /^\\s*-\\s*/u.exec(desc);\n\n const replacement = sourceCode\n .getText(jsdocNode)\n .replace(desc, desc.slice(unwantedPart.length));\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","unwantedPart","exec","replace","length","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n report(`There must be no hyphen before @${targetTagName} description.`, (fixer) => {\n const [\n unwantedPart,\n ] = /^\\s*-\\s*/u.exec(desc);\n\n const replacement = sourceCode\n .getText(jsdocNode)\n .replace(desc, desc.slice(unwantedPart.length));\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
@@ -4,17 +4,11 @@ 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 _exportParser = _interopRequireDefault(require("../exportParser"));
11
-
12
9
  var _iterateJsdoc = require("../iterateJsdoc");
13
-
14
10
  var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  const OPTIONS_SCHEMA = {
19
13
  additionalProperties: false,
20
14
  properties: {
@@ -139,16 +133,14 @@ const OPTIONS_SCHEMA = {
139
133
  },
140
134
  type: 'object'
141
135
  };
142
-
143
136
  const getOption = (context, baseObject, option, key) => {
144
- if (context.options[0] && option in context.options[0] && ( // Todo: boolean shouldn't be returning property, but tests currently require
137
+ if (context.options[0] && option in context.options[0] && (
138
+ // Todo: boolean shouldn't be returning property, but tests currently require
145
139
  typeof context.options[0][option] === 'boolean' || key in context.options[0][option])) {
146
140
  return context.options[0][option][key];
147
141
  }
148
-
149
142
  return baseObject.properties[key].default;
150
143
  };
151
-
152
144
  const getOptions = context => {
153
145
  const {
154
146
  publicOnly,
@@ -170,38 +162,30 @@ const getOptions = context => {
170
162
  if (!publicOnly) {
171
163
  return false;
172
164
  }
173
-
174
165
  const properties = {};
175
-
176
166
  for (const prop of Object.keys(baseObj.properties)) {
177
167
  const opt = getOption(context, baseObj, 'publicOnly', prop);
178
168
  properties[prop] = opt;
179
169
  }
180
-
181
170
  return properties;
182
171
  })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
183
172
  require: (baseObj => {
184
173
  const properties = {};
185
-
186
174
  for (const prop of Object.keys(baseObj.properties)) {
187
175
  const opt = getOption(context, baseObj, 'require', prop);
188
176
  properties[prop] = opt;
189
177
  }
190
-
191
178
  return properties;
192
179
  })(OPTIONS_SCHEMA.properties.require)
193
180
  };
194
181
  };
195
-
196
182
  var _default = {
197
183
  create(context) {
198
184
  const sourceCode = context.getSourceCode();
199
185
  const settings = (0, _iterateJsdoc.getSettings)(context);
200
-
201
186
  if (!settings) {
202
187
  return {};
203
188
  }
204
-
205
189
  const {
206
190
  require: requireOption,
207
191
  contexts,
@@ -212,9 +196,9 @@ var _default = {
212
196
  fixerMessage,
213
197
  minLineCount
214
198
  } = getOptions(context);
215
-
216
199
  const checkJsDoc = (info, handler, node) => {
217
- if ( // Optimize
200
+ if (
201
+ // Optimize
218
202
  minLineCount !== undefined || contexts.some(({
219
203
  minLineCount: count
220
204
  }) => {
@@ -222,14 +206,11 @@ var _default = {
222
206
  })) {
223
207
  const underMinLine = count => {
224
208
  var _sourceCode$getText$m;
225
-
226
209
  return count !== undefined && count > (((_sourceCode$getText$m = sourceCode.getText(node).match(/\n/gu)) === null || _sourceCode$getText$m === void 0 ? void 0 : _sourceCode$getText$m.length) ?? 0) + 1;
227
210
  };
228
-
229
211
  if (underMinLine(minLineCount)) {
230
212
  return;
231
213
  }
232
-
233
214
  const {
234
215
  minLineCount: contextMinLineCount
235
216
  } = contexts.find(({
@@ -237,52 +218,45 @@ var _default = {
237
218
  }) => {
238
219
  return ctxt === (info.selector || node.type);
239
220
  }) || {};
240
-
241
221
  if (underMinLine(contextMinLineCount)) {
242
222
  return;
243
223
  }
244
224
  }
245
-
246
225
  const jsDocNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, node, settings);
247
-
248
226
  if (jsDocNode) {
249
227
  return;
250
- } // For those who have options configured against ANY constructors (or
251
- // setters or getters) being reported
252
-
228
+ }
253
229
 
230
+ // For those who have options configured against ANY constructors (or
231
+ // setters or getters) being reported
254
232
  if (_jsdocUtils.default.exemptSpeciaMethods({
255
233
  tags: []
256
234
  }, node, context, [OPTIONS_SCHEMA])) {
257
235
  return;
258
236
  }
259
-
260
- if ( // Avoid reporting param-less, return-less functions (when
237
+ if (
238
+ // Avoid reporting param-less, return-less functions (when
261
239
  // `exemptEmptyFunctions` option is set)
262
- exemptEmptyFunctions && info.isFunctionContext || // Avoid reporting param-less, return-less constructor methods (when
240
+ exemptEmptyFunctions && info.isFunctionContext ||
241
+ // Avoid reporting param-less, return-less constructor methods (when
263
242
  // `exemptEmptyConstructors` option is set)
264
243
  exemptEmptyConstructors && _jsdocUtils.default.isConstructor(node)) {
265
244
  const functionParameterNames = _jsdocUtils.default.getFunctionParameterNames(node);
266
-
267
245
  if (!functionParameterNames.length && !_jsdocUtils.default.hasReturnValue(node)) {
268
246
  return;
269
247
  }
270
248
  }
271
-
272
249
  const fix = fixer => {
273
250
  // Default to one line break if the `minLines`/`maxLines` settings allow
274
251
  const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;
275
252
  let baseNode = (0, _jsdoccomment.getReducedASTNode)(node, sourceCode);
276
253
  const decorator = (0, _jsdoccomment.getDecorator)(baseNode);
277
-
278
254
  if (decorator) {
279
255
  baseNode = decorator;
280
256
  }
281
-
282
257
  const indent = _jsdocUtils.default.getIndent({
283
258
  text: sourceCode.getText(baseNode, baseNode.loc.start.column)
284
259
  });
285
-
286
260
  const {
287
261
  inlineCommentBlock
288
262
  } = contexts.find(({
@@ -293,7 +267,6 @@ var _default = {
293
267
  const insertion = (inlineCommentBlock ? `/** ${fixerMessage}` : `/**\n${indent}*${fixerMessage}\n${indent}`) + `*/${'\n'.repeat(lines)}${indent.slice(0, -1)}`;
294
268
  return fixer.insertTextBefore(baseNode, insertion);
295
269
  };
296
-
297
270
  const report = () => {
298
271
  const {
299
272
  start
@@ -312,7 +285,6 @@ var _default = {
312
285
  node
313
286
  });
314
287
  };
315
-
316
288
  if (publicOnly) {
317
289
  const opt = {
318
290
  ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false),
@@ -320,9 +292,7 @@ var _default = {
320
292
  initModuleExports: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.cjs) ?? true),
321
293
  initWindow: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.window) ?? false)
322
294
  };
323
-
324
295
  const exported = _exportParser.default.isUncommentedExport(node, sourceCode, opt, settings);
325
-
326
296
  if (exported) {
327
297
  report();
328
298
  }
@@ -330,83 +300,68 @@ var _default = {
330
300
  report();
331
301
  }
332
302
  };
333
-
334
303
  const hasOption = prop => {
335
304
  return requireOption[prop] || contexts.some(ctxt => {
336
305
  return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;
337
306
  });
338
307
  };
339
-
340
- return { ..._jsdocUtils.default.getContextObject(_jsdocUtils.default.enforcedContexts(context, []), checkJsDoc),
341
-
308
+ return {
309
+ ..._jsdocUtils.default.getContextObject(_jsdocUtils.default.enforcedContexts(context, []), checkJsDoc),
342
310
  ArrowFunctionExpression(node) {
343
311
  if (!hasOption('ArrowFunctionExpression')) {
344
312
  return;
345
313
  }
346
-
347
314
  if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value) {
348
315
  checkJsDoc({
349
316
  isFunctionContext: true
350
317
  }, null, node);
351
318
  }
352
319
  },
353
-
354
320
  ClassDeclaration(node) {
355
321
  if (!hasOption('ClassDeclaration')) {
356
322
  return;
357
323
  }
358
-
359
324
  checkJsDoc({
360
325
  isFunctionContext: false
361
326
  }, null, node);
362
327
  },
363
-
364
328
  ClassExpression(node) {
365
329
  if (!hasOption('ClassExpression')) {
366
330
  return;
367
331
  }
368
-
369
332
  checkJsDoc({
370
333
  isFunctionContext: false
371
334
  }, null, node);
372
335
  },
373
-
374
336
  FunctionDeclaration(node) {
375
337
  if (!hasOption('FunctionDeclaration')) {
376
338
  return;
377
339
  }
378
-
379
340
  checkJsDoc({
380
341
  isFunctionContext: true
381
342
  }, null, node);
382
343
  },
383
-
384
344
  FunctionExpression(node) {
385
345
  if (!hasOption('FunctionExpression')) {
386
346
  return;
387
347
  }
388
-
389
348
  if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value) {
390
349
  checkJsDoc({
391
350
  isFunctionContext: true
392
351
  }, null, node);
393
352
  }
394
353
  },
395
-
396
354
  MethodDefinition(node) {
397
355
  if (!hasOption('MethodDefinition')) {
398
356
  return;
399
357
  }
400
-
401
358
  checkJsDoc({
402
359
  isFunctionContext: true,
403
360
  selector: 'MethodDefinition'
404
361
  }, null, node.value);
405
362
  }
406
-
407
363
  };
408
364
  },
409
-
410
365
  meta: {
411
366
  docs: {
412
367
  category: 'Stylistic Issues',
@@ -1 +1 @@
1
- {"version":3,"file":"requireJsdoc.js","names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const {\n start,\n } = node.loc;\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireJsdoc.js","names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const {\n start,\n } = node.loc;\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}