eslint-plugin-jsdoc 37.0.1 → 37.0.2

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 (65) hide show
  1. package/dist/alignTransform.js +3 -1
  2. package/dist/alignTransform.js.map +1 -1
  3. package/dist/bin/generateRule.js.map +1 -1
  4. package/dist/exportParser.js +29 -17
  5. package/dist/exportParser.js.map +1 -1
  6. package/dist/generateRule.js.map +1 -1
  7. package/dist/iterateJsdoc.js +37 -30
  8. package/dist/iterateJsdoc.js.map +1 -1
  9. package/dist/jsdocUtils.js +18 -10
  10. package/dist/jsdocUtils.js.map +1 -1
  11. package/dist/rules/checkAccess.js.map +1 -1
  12. package/dist/rules/checkExamples.js +7 -4
  13. package/dist/rules/checkExamples.js.map +1 -1
  14. package/dist/rules/checkLineAlignment.js +6 -4
  15. package/dist/rules/checkLineAlignment.js.map +1 -1
  16. package/dist/rules/checkParamNames.js +17 -12
  17. package/dist/rules/checkParamNames.js.map +1 -1
  18. package/dist/rules/checkPropertyNames.js.map +1 -1
  19. package/dist/rules/checkTagNames.js +4 -4
  20. package/dist/rules/checkTagNames.js.map +1 -1
  21. package/dist/rules/checkTypes.js +7 -6
  22. package/dist/rules/checkTypes.js.map +1 -1
  23. package/dist/rules/checkValues.js.map +1 -1
  24. package/dist/rules/emptyTags.js +3 -2
  25. package/dist/rules/emptyTags.js.map +1 -1
  26. package/dist/rules/matchDescription.js.map +1 -1
  27. package/dist/rules/matchName.js +6 -4
  28. package/dist/rules/matchName.js.map +1 -1
  29. package/dist/rules/multilineBlocks.js +4 -2
  30. package/dist/rules/multilineBlocks.js.map +1 -1
  31. package/dist/rules/noBadBlocks.js +3 -3
  32. package/dist/rules/noBadBlocks.js.map +1 -1
  33. package/dist/rules/noDefaults.js +7 -4
  34. package/dist/rules/noDefaults.js.map +1 -1
  35. package/dist/rules/noMissingSyntax.js.map +1 -1
  36. package/dist/rules/noMultiAsterisks.js +1 -1
  37. package/dist/rules/noMultiAsterisks.js.map +1 -1
  38. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  39. package/dist/rules/noTypes.js +6 -3
  40. package/dist/rules/noTypes.js.map +1 -1
  41. package/dist/rules/noUndefinedTypes.js +5 -4
  42. package/dist/rules/noUndefinedTypes.js.map +1 -1
  43. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  44. package/dist/rules/requireDescription.js +2 -2
  45. package/dist/rules/requireDescription.js.map +1 -1
  46. package/dist/rules/requireDescriptionCompleteSentence.js +1 -1
  47. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  48. package/dist/rules/requireExample.js +2 -2
  49. package/dist/rules/requireExample.js.map +1 -1
  50. package/dist/rules/requireFileOverview.js.map +1 -1
  51. package/dist/rules/requireHyphenBeforeParamDescription.js +10 -7
  52. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  53. package/dist/rules/requireJsdoc.js +8 -4
  54. package/dist/rules/requireJsdoc.js.map +1 -1
  55. package/dist/rules/requireParam.js +34 -28
  56. package/dist/rules/requireParam.js.map +1 -1
  57. package/dist/rules/requireProperty.js +3 -3
  58. package/dist/rules/requireProperty.js.map +1 -1
  59. package/dist/rules/requireReturns.js.map +1 -1
  60. package/dist/rules/requireReturnsCheck.js.map +1 -1
  61. package/dist/rules/tagLines.js +11 -8
  62. package/dist/rules/tagLines.js.map +1 -1
  63. package/dist/rules/validTypes.js +15 -13
  64. package/dist/rules/validTypes.js.map +1 -1
  65. package/package.json +33 -33
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireAsteriskPrefix.js"],"names":["context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [defaultRequireValue = 'always', {\n tags: tagMap = {},\n } = {}] = context.options;\n\n const {source} = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({number, tokens}) => {\n const {delimiter, tag, end, description} = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n if (checkNever('*description')) {\n return true;\n }\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireAsteriskPrefix.js"}
1
+ {"version":3,"sources":["../../src/rules/requireAsteriskPrefix.js"],"names":["context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [defaultRequireValue = 'always', {\n tags: tagMap = {},\n } = {}] = context.options;\n\n const {source} = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({number, tokens}) => {\n const {delimiter, tag, end, description} = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireAsteriskPrefix.js"}
@@ -83,11 +83,11 @@ var _default = (0, _iterateJsdoc.default)(({
83
83
  return;
84
84
  }
85
85
 
86
- functionExamples.forEach(example => {
86
+ for (const example of functionExamples) {
87
87
  if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {
88
88
  report(`Missing JSDoc @${targetTagName} description.`, null, example);
89
89
  }
90
- });
90
+ }
91
91
  }, {
92
92
  contextDefaults: true,
93
93
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","getDescription","descTags","getPresentTags","tag","functionExamples","filter","tags","forEach","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n const {description} = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags(['desc', 'description']);\n if (descTags.length) {\n const [{tag: tagName}] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n functionExamples.forEach((example) => {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\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 descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
1
+ {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","getDescription","descTags","getPresentTags","tag","functionExamples","filter","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n const {description} = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags(['desc', 'description']);\n if (descTags.length) {\n const [{tag: tagName}] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\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 descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
@@ -26,7 +26,7 @@ const extractSentences = (text, abbreviationsRegex) => {
26
26
  const txt = text // Remove all {} tags.
27
27
  .replace(/\{[\s\S]*?\}\s*/gu, '') // Remove custom abbreviations
28
28
  .replace(abbreviationsRegex, '');
29
- const sentenceEndGrouping = /([.?!])(?:\s+|$)/u; // eslint-disable-next-line unicorn/no-array-method-this-argument
29
+ const sentenceEndGrouping = /([.?!])(?:\s+|$)/u; // eslint-disable-next-line unicorn/no-array-method-this-argument, unicorn/no-array-callback-reference
30
30
 
31
31
  const puncts = new _mainUmd.RegExtras(sentenceEndGrouping).map(txt, punct => {
32
32
  return punct;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","RegExtras","map","punct","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","_","escapeRegExp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimStart","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {\n RegExtras,\n} from 'regextras/dist/main-umd';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/u;\n\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n const puncts = new RegExtras(sentenceEndGrouping).map(txt, (punct) => {\n return punct;\n });\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${_.escapeRegExp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${_.escapeRegExp(tag.tag)}.*)${_.escapeRegExp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + _.escapeRegExp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return _.escapeRegExp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {description} = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {tagsWithNames} = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({tag: tagName}) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({tag}) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = _.trimStart(utils.getTagDescription(tag), '- ').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescriptionCompleteSentence.js"}
1
+ {"version":3,"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","RegExtras","map","punct","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","_","escapeRegExp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimStart","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {\n RegExtras,\n} from 'regextras/dist/main-umd';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/u;\n\n // eslint-disable-next-line unicorn/no-array-method-this-argument, unicorn/no-array-callback-reference\n const puncts = new RegExtras(sentenceEndGrouping).map(txt, (punct) => {\n return punct;\n });\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${_.escapeRegExp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${_.escapeRegExp(tag.tag)}.*)${_.escapeRegExp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + _.escapeRegExp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return _.escapeRegExp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {description} = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {tagsWithNames} = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({tag: tagName}) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({tag}) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = _.trimStart(utils.getTagDescription(tag), '- ').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescriptionCompleteSentence.js"}
@@ -41,13 +41,13 @@ var _default = (0, _iterateJsdoc.default)(({
41
41
  return;
42
42
  }
43
43
 
44
- functionExamples.forEach(example => {
44
+ for (const example of functionExamples) {
45
45
  const exampleContent = _lodash.default.compact(`${example.name} ${utils.getTagDescription(example)}`.trim().split('\n'));
46
46
 
47
47
  if (!exampleContent.length) {
48
48
  report(`Missing JSDoc @${targetTagName} description.`, null, example);
49
49
  }
50
- });
50
+ }
51
51
  }, {
52
52
  contextDefaults: true,
53
53
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireExample.js"],"names":["context","jsdoc","report","utils","avoidDocs","exemptNoArguments","options","targetTagName","functionExamples","_","filter","tags","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","forEach","example","exampleContent","compact","name","getTagDescription","trim","split","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":";;;;;;;AAAA;;AACA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,OAD2B;AAE3BC,EAAAA,KAF2B;AAG3BC,EAAAA,MAH2B;AAI3BC,EAAAA;AAJ2B,CAAD,KAKtB;AACJ,MAAIA,KAAK,CAACC,SAAN,EAAJ,EAAuB;AACrB;AACD;;AAED,QAAM;AACJC,IAAAA,iBAAiB,GAAG;AADhB,MAEFL,OAAO,CAACM,OAAR,CAAgB,CAAhB,KAAsB,EAF1B;AAIA,QAAMC,aAAa,GAAG,SAAtB;;AAEA,QAAMC,gBAAgB,GAAGC,gBAAEC,MAAF,CAAST,KAAK,CAACU,IAAf,EAAqB;AAC5CC,IAAAA,GAAG,EAAEL;AADuC,GAArB,CAAzB;;AAIA,MAAI,CAACC,gBAAgB,CAACK,MAAtB,EAA8B;AAC5B,QAAIR,iBAAiB,IAAIF,KAAK,CAACW,mBAAN,EAArB,IACF,CAACX,KAAK,CAACY,SAAN,EADH,EAEE;AACA;AACD;;AAEDZ,IAAAA,KAAK,CAACa,WAAN,CAAmB,kBAAiBT,aAAc,eAAlD,EAAkE,IAAlE,EAAwE,MAAM;AAC5EJ,MAAAA,KAAK,CAACc,MAAN,CAAaV,aAAb;AACD,KAFD;AAIA;AACD;;AAEDC,EAAAA,gBAAgB,CAACU,OAAjB,CAA0BC,OAAD,IAAa;AACpC,UAAMC,cAAc,GAAGX,gBAAEY,OAAF,CAAW,GAAEF,OAAO,CAACG,IAAK,IAAGnB,KAAK,CAACoB,iBAAN,CAAwBJ,OAAxB,CAAiC,EAApD,CAAsDK,IAAtD,GAA6DC,KAA7D,CAAmE,IAAnE,CAAV,CAAvB;;AAEA,QAAI,CAACL,cAAc,CAACP,MAApB,EAA4B;AAC1BX,MAAAA,MAAM,CAAE,kBAAiBK,aAAc,eAAjC,EAAiD,IAAjD,EAAuDY,OAAvD,CAAN;AACD;AACF,GAND;AAOD,CAzCc,EAyCZ;AACDO,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,4CADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,iBAAiB,EAAE;AACjBC,UAAAA,OAAO,EAAE,IADQ;AAEjBC,UAAAA,IAAI,EAAE;AAFW,SADT;AAKVC,QAAAA,YAAY,EAAE;AACZF,UAAAA,OAAO,EAAE,KADG;AAEZC,UAAAA,IAAI,EAAE;AAFM,SALJ;AASVE,QAAAA,YAAY,EAAE;AACZH,UAAAA,OAAO,EAAE,KADG;AAEZC,UAAAA,IAAI,EAAE;AAFM,SATJ;AAaVG,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEL,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEJ,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVS,gBAAAA,OAAO,EAAE;AACPN,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVrC,gBAAAA,OAAO,EAAE;AACPqC,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SAbA;AAmCVO,QAAAA,UAAU,EAAE;AACVH,UAAAA,KAAK,EAAE;AACLJ,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI,SAnCF;AAyCVhC,QAAAA,iBAAiB,EAAE;AACjB+B,UAAAA,OAAO,EAAE,KADQ;AAEjBC,UAAAA,IAAI,EAAE;AAFW;AAzCT,OAFd;AAgDEA,MAAAA,IAAI,EAAE;AAhDR,KADM,CANJ;AA0DJA,IAAAA,IAAI,EAAE;AA1DF;AAFL,CAzCY,C","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n exemptNoArguments = false,\n } = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n if (exemptNoArguments && utils.isIteratingFunction() &&\n !utils.hasParams()\n ) {\n return;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {\n utils.addTag(targetTagName);\n });\n\n return;\n }\n\n functionExamples.forEach((example) => {\n const exampleContent = _.compact(`${example.name} ${utils.getTagDescription(example)}`.trim().split('\\n'));\n\n if (!exampleContent.length) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have examples.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-example',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\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 exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptNoArguments: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireExample.js"}
1
+ {"version":3,"sources":["../../src/rules/requireExample.js"],"names":["context","jsdoc","report","utils","avoidDocs","exemptNoArguments","options","targetTagName","functionExamples","_","filter","tags","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","example","exampleContent","compact","name","getTagDescription","trim","split","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n exemptNoArguments = false,\n } = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n if (exemptNoArguments && utils.isIteratingFunction() &&\n !utils.hasParams()\n ) {\n return;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {\n utils.addTag(targetTagName);\n });\n\n return;\n }\n\n for (const example of functionExamples) {\n const exampleContent = _.compact(`${example.name} ${utils.getTagDescription(example)}`.trim().split('\\n'));\n\n if (!exampleContent.length) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have examples.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-example',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\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 exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptNoArguments: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireExample.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireFileOverview.js"],"names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","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"],"mappings":"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","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({tagName});\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 ({context, state, utils}) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [tagName, {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n }] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({tagName});\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 if (preventDuplicates && state.hasDuplicates[tagName]) {\n utils.reportSettings(\n `Duplicate @${targetTagName}`,\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 ({state, node}) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\n },\n});\n"],"file":"requireFileOverview.js"}
1
+ {"version":3,"sources":["../../src/rules/requireFileOverview.js"],"names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","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"],"mappings":"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","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({tagName});\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 ({context, state, utils}) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [tagName, {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n }] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({tagName});\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 ({state, node}) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\n },\n});\n"],"file":"requireFileOverview.js"}
@@ -58,31 +58,34 @@ var _default = (0, _iterateJsdoc.default)(({
58
58
 
59
59
  if (tags) {
60
60
  const tagEntries = Object.entries(tags);
61
- tagEntries.forEach(([tagName, circumstance]) => {
61
+
62
+ for (const [tagName, circumstance] of tagEntries) {
62
63
  if (tagName === '*') {
63
64
  const preferredParamTag = utils.getPreferredTagName({
64
65
  tagName: 'param'
65
66
  });
66
- jsdoc.tags.forEach(({
67
+
68
+ for (const {
67
69
  tag
68
- }) => {
70
+ } of jsdoc.tags) {
69
71
  if (tag === preferredParamTag || tagEntries.some(([tagNme]) => {
70
72
  return tagNme !== '*' && tagNme === tag;
71
73
  })) {
72
- return;
74
+ continue;
73
75
  }
74
76
 
75
77
  utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {
76
78
  checkHyphens(jsdocTag, targetTagName, circumstance);
77
79
  });
78
- });
79
- return;
80
+ }
81
+
82
+ continue;
80
83
  }
81
84
 
82
85
  utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {
83
86
  checkHyphens(jsdocTag, targetTagName, circumstance);
84
87
  });
85
- });
88
+ }
86
89
  }
87
90
  }, {
88
91
  iterateAllJsdocs: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"names":["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","forEach","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [mainCircumstance, {tags} = {}] = 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 [unwantedPart] = /^\\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 tagEntries.forEach(([tagName, circumstance]) => {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({tagName: 'param'});\n jsdoc.tags.forEach(({tag}) => {\n if (tag === preferredParamTag || tagEntries.some(([tagNme]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n return;\n }\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n });\n\n return;\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: ['always', 'never'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: ['always', 'never'],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: ['any'],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireHyphenBeforeParamDescription.js"}
1
+ {"version":3,"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"names":["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"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [mainCircumstance, {tags} = {}] = 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 [unwantedPart] = /^\\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 [tagName, circumstance] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({tagName: 'param'});\n for (const {tag} of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([tagNme]) => {\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: ['always', 'never'],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: ['always', 'never'],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: ['any'],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireHyphenBeforeParamDescription.js"}
@@ -165,18 +165,22 @@ const getOptions = context => {
165
165
  }
166
166
 
167
167
  const properties = {};
168
- Object.keys(baseObj.properties).forEach(prop => {
168
+
169
+ for (const prop of Object.keys(baseObj.properties)) {
169
170
  const opt = getOption(context, baseObj, 'publicOnly', prop);
170
171
  properties[prop] = opt;
171
- });
172
+ }
173
+
172
174
  return properties;
173
175
  })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
174
176
  require: (baseObj => {
175
177
  const properties = {};
176
- Object.keys(baseObj.properties).forEach(prop => {
178
+
179
+ for (const prop of Object.keys(baseObj.properties)) {
177
180
  const opt = getOption(context, baseObj, 'require', prop);
178
181
  properties[prop] = opt;
179
- });
182
+ }
183
+
180
184
  return properties;
181
185
  })(OPTIONS_SCHEMA.properties.require)
182
186
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","_","has","options","getOptions","baseObj","Object","keys","forEach","prop","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","getText","loc","start","column","find","ctxt","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","some","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment, getReducedASTNode, getDecorator,\n} from '@es-joy/jsdoccomment';\nimport _ from 'lodash';\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: ['no-setter'],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: ['no-getter'],\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 },\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 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 (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n Object.keys(baseObj.properties).forEach((prop) => {\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 Object.keys(baseObj.properties).forEach((prop) => {\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, exemptEmptyFunctions, exemptEmptyConstructors, enableFixer, fixerMessage,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\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 {tags: []}, node, context, [OPTIONS_SCHEMA],\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 {inlineCommentBlock} = contexts.find(({context: ctxt}) => {\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 loc = {\n end: node.loc.start + 1,\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 ['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) ||\n ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({isFunctionContext: true}, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: false}, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: false}, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: true}, null, node);\n },\n\n FunctionExpression (node) {\n if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {\n checkJsDoc({isFunctionContext: true}, null, node);\n\n return;\n }\n\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n ['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) ||\n ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({isFunctionContext: true}, null, node);\n }\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"],"file":"requireJsdoc.js"}
1
+ {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","_","has","options","getOptions","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","getText","loc","start","column","find","ctxt","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","some","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment, getReducedASTNode, getDecorator,\n} from '@es-joy/jsdoccomment';\nimport _ from 'lodash';\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: ['no-setter'],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: ['no-getter'],\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 },\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 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 (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\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, exemptEmptyFunctions, exemptEmptyConstructors, enableFixer, fixerMessage,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\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 {tags: []}, node, context, [OPTIONS_SCHEMA],\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 {inlineCommentBlock} = contexts.find(({context: ctxt}) => {\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 loc = {\n end: node.loc.start + 1,\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 ['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) ||\n ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({isFunctionContext: true}, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: false}, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: false}, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({isFunctionContext: true}, null, node);\n },\n\n FunctionExpression (node) {\n if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {\n checkJsDoc({isFunctionContext: true}, null, node);\n\n return;\n }\n\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n ['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) ||\n ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({isFunctionContext: true}, null, node);\n }\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"],"file":"requireJsdoc.js"}