eslint-plugin-jsdoc 40.0.2 → 40.0.3

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 (64) hide show
  1. package/README.md +10 -0
  2. package/dist/WarnSettings.js.map +1 -1
  3. package/dist/alignTransform.js.map +1 -1
  4. package/dist/bin/generateRule.js.map +1 -1
  5. package/dist/defaultTagOrder.js.map +1 -1
  6. package/dist/exportParser.js.map +1 -1
  7. package/dist/generateRule.js.map +1 -1
  8. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/iterateJsdoc.js.map +1 -1
  11. package/dist/jsdocUtils.js.map +1 -1
  12. package/dist/rules/checkAccess.js.map +1 -1
  13. package/dist/rules/checkAlignment.js.map +1 -1
  14. package/dist/rules/checkExamples.js.map +1 -1
  15. package/dist/rules/checkIndentation.js.map +1 -1
  16. package/dist/rules/checkLineAlignment.js.map +1 -1
  17. package/dist/rules/checkParamNames.js.map +1 -1
  18. package/dist/rules/checkPropertyNames.js.map +1 -1
  19. package/dist/rules/checkSyntax.js.map +1 -1
  20. package/dist/rules/checkTagNames.js.map +1 -1
  21. package/dist/rules/checkTypes.js.map +1 -1
  22. package/dist/rules/checkValues.js.map +1 -1
  23. package/dist/rules/emptyTags.js.map +1 -1
  24. package/dist/rules/implementsOnClasses.js.map +1 -1
  25. package/dist/rules/matchDescription.js.map +1 -1
  26. package/dist/rules/matchName.js.map +1 -1
  27. package/dist/rules/multilineBlocks.js.map +1 -1
  28. package/dist/rules/newlineAfterDescription.js.map +1 -1
  29. package/dist/rules/noBadBlocks.js.map +1 -1
  30. package/dist/rules/noDefaults.js.map +1 -1
  31. package/dist/rules/noMissingSyntax.js.map +1 -1
  32. package/dist/rules/noMultiAsterisks.js.map +1 -1
  33. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  34. package/dist/rules/noTypes.js.map +1 -1
  35. package/dist/rules/noUndefinedTypes.js.map +1 -1
  36. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  37. package/dist/rules/requireDescription.js.map +1 -1
  38. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  39. package/dist/rules/requireExample.js.map +1 -1
  40. package/dist/rules/requireFileOverview.js.map +1 -1
  41. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  42. package/dist/rules/requireJsdoc.js.map +1 -1
  43. package/dist/rules/requireParam.js.map +1 -1
  44. package/dist/rules/requireParamDescription.js.map +1 -1
  45. package/dist/rules/requireParamName.js.map +1 -1
  46. package/dist/rules/requireParamType.js.map +1 -1
  47. package/dist/rules/requireProperty.js.map +1 -1
  48. package/dist/rules/requirePropertyDescription.js.map +1 -1
  49. package/dist/rules/requirePropertyName.js.map +1 -1
  50. package/dist/rules/requirePropertyType.js.map +1 -1
  51. package/dist/rules/requireReturns.js.map +1 -1
  52. package/dist/rules/requireReturnsCheck.js.map +1 -1
  53. package/dist/rules/requireReturnsDescription.js.map +1 -1
  54. package/dist/rules/requireReturnsType.js.map +1 -1
  55. package/dist/rules/requireThrows.js.map +1 -1
  56. package/dist/rules/requireYields.js.map +1 -1
  57. package/dist/rules/requireYieldsCheck.js.map +1 -1
  58. package/dist/rules/sortTags.js.map +1 -1
  59. package/dist/rules/tagLines.js.map +1 -1
  60. package/dist/rules/textEscaping.js.map +1 -1
  61. package/dist/rules/validTypes.js.map +1 -1
  62. package/dist/tagNames.js.map +1 -1
  63. package/dist/utils/hasReturnValue.js.map +1 -1
  64. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"requireDescriptionCompleteSentence.js","names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","matchAll","map","sentEnd","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","filter","Boolean","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","escapeStringRegexp","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","iterateJsdoc","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","indices","match","index","reverse","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\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 // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/ug;\n\n const puncts = [\n ...txt.matchAll(sentenceEndGrouping),\n ].map((sentEnd) => {\n return sentEnd[0];\n });\n\n return txt\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return !puncts[idx] && /^\\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+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description).filter(Boolean);\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').filter(Boolean).pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(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(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(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*)' + escapeStringRegexp(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 (/^[.?!]$/u).test(sentence);\n })) {\n report('Sentences must be more than punctuation.', null, tag);\n }\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentences 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('Sentences 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 the 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 escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n let {\n description,\n } = utils.getDescription();\n\n const indices = [\n ...description.matchAll(/```[\\s\\S]*```/gu),\n ].map((match) => {\n const {\n index,\n } = match;\n const [\n {\n length,\n },\n ] = match;\n return {\n index,\n length,\n };\n }).reverse();\n\n for (const {\n index,\n length,\n } of indices) {\n description = description.slice(0, index) + description.slice(index + length);\n }\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 {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\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 = utils.getTagDescription(tag).replace(/^- /u, '').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"],"mappings":"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"}
1
+ {"version":3,"file":"requireDescriptionCompleteSentence.js","names":["_escapeStringRegexp","_interopRequireDefault","require","_iterateJsdoc","obj","__esModule","default","otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","matchAll","map","sentEnd","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","filter","Boolean","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","escapeStringRegexp","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","_default","iterateJsdoc","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","indices","match","index","reverse","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type","exports","module"],"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\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 // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/ug;\n\n const puncts = [\n ...txt.matchAll(sentenceEndGrouping),\n ].map((sentEnd) => {\n return sentEnd[0];\n });\n\n return txt\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return !puncts[idx] && /^\\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+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description).filter(Boolean);\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').filter(Boolean).pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(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(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(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*)' + escapeStringRegexp(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 (/^[.?!]$/u).test(sentence);\n })) {\n report('Sentences must be more than punctuation.', null, tag);\n }\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentences 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('Sentences 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 the 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 escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n let {\n description,\n } = utils.getDescription();\n\n const indices = [\n ...description.matchAll(/```[\\s\\S]*```/gu),\n ].map((match) => {\n const {\n index,\n } = match;\n const [\n {\n length,\n },\n ] = match;\n return {\n index,\n length,\n };\n }).reverse();\n\n for (const {\n index,\n length,\n } of indices) {\n description = description.slice(0, index) + description.slice(index + length);\n }\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 {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\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 = utils.getTagDescription(tag).replace(/^- /u, '').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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requireExample.js","names":["iterateJsdoc","context","jsdoc","report","utils","avoidDocs","enableFixer","exemptNoArguments","options","targetTagName","functionExamples","tags","filter","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","example","exampleContent","name","getTagDescription","trim","split","Boolean","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"sources":["../../src/rules/requireExample.js"],"sourcesContent":["import 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 enableFixer = true,\n exemptNoArguments = false,\n } = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = jsdoc.tags.filter(({\n tag,\n }) => {\n return 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 if (enableFixer) {\n utils.addTag(targetTagName);\n }\n });\n\n return;\n }\n\n for (const example of functionExamples) {\n const exampleContent = `${example.name} ${utils.getTagDescription(example)}`\n .trim()\n .split('\\n')\n .filter(Boolean);\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 enableFixer: {\n default: true,\n type: 'boolean',\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"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,KAAK;EACLC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,IAAIA,KAAK,CAACC,SAAS,EAAE,EAAE;IACrB;EACF;EAEA,MAAM;IACJC,WAAW,GAAG,IAAI;IAClBC,iBAAiB,GAAG;EACtB,CAAC,GAAGN,OAAO,CAACO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,aAAa,GAAG,SAAS;EAE/B,MAAMC,gBAAgB,GAAGR,KAAK,CAACS,IAAI,CAACC,MAAM,CAAC,CAAC;IAC1CC;EACF,CAAC,KAAK;IACJ,OAAOA,GAAG,KAAKJ,aAAa;EAC9B,CAAC,CAAC;EAEF,IAAI,CAACC,gBAAgB,CAACI,MAAM,EAAE;IAC5B,IAAIP,iBAAiB,IAAIH,KAAK,CAACW,mBAAmB,EAAE,IAClD,CAACX,KAAK,CAACY,SAAS,EAAE,EAClB;MACA;IACF;IAEAZ,KAAK,CAACa,WAAW,CAAE,kBAAiBR,aAAc,eAAc,EAAE,IAAI,EAAE,MAAM;MAC5E,IAAIH,WAAW,EAAE;QACfF,KAAK,CAACc,MAAM,CAACT,aAAa,CAAC;MAC7B;IACF,CAAC,CAAC;IAEF;EACF;EAEA,KAAK,MAAMU,OAAO,IAAIT,gBAAgB,EAAE;IACtC,MAAMU,cAAc,GAAI,GAAED,OAAO,CAACE,IAAK,IAAGjB,KAAK,CAACkB,iBAAiB,CAACH,OAAO,CAAE,EAAC,CACzEI,IAAI,EAAE,CACNC,KAAK,CAAC,IAAI,CAAC,CACXZ,MAAM,CAACa,OAAO,CAAC;IAElB,IAAI,CAACL,cAAc,CAACN,MAAM,EAAE;MAC1BX,MAAM,CAAE,kBAAiBM,aAAc,eAAc,EAAE,IAAI,EAAEU,OAAO,CAAC;IACvE;EACF;AACF,CAAC,EAAE;EACDO,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,4CAA4C;MACzDC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,iBAAiB,EAAE;UACjBC,OAAO,EAAE,IAAI;UACbC,IAAI,EAAE;QACR,CAAC;QACDC,YAAY,EAAE;UACZF,OAAO,EAAE,KAAK;UACdC,IAAI,EAAE;QACR,CAAC;QACDE,YAAY,EAAE;UACZH,OAAO,EAAE,KAAK;UACdC,IAAI,EAAE;QACR,CAAC;QACDG,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEL,IAAI,EAAE;YACR,CAAC,EACD;cACEJ,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVS,OAAO,EAAE;kBACPN,IAAI,EAAE;gBACR,CAAC;gBACDpC,OAAO,EAAE;kBACPoC,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD/B,WAAW,EAAE;UACX8B,OAAO,EAAE,IAAI;UACbC,IAAI,EAAE;QACR,CAAC;QACDO,UAAU,EAAE;UACVH,KAAK,EAAE;YACLJ,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD9B,iBAAiB,EAAE;UACjB6B,OAAO,EAAE,KAAK;UACdC,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requireExample.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","context","jsdoc","report","utils","avoidDocs","enableFixer","exemptNoArguments","options","targetTagName","functionExamples","tags","filter","tag","length","isIteratingFunction","hasParams","reportJSDoc","addTag","example","exampleContent","name","getTagDescription","trim","split","Boolean","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","checkConstructors","type","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","exports","module"],"sources":["../../src/rules/requireExample.js"],"sourcesContent":["import 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 enableFixer = true,\n exemptNoArguments = false,\n } = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = jsdoc.tags.filter(({\n tag,\n }) => {\n return 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 if (enableFixer) {\n utils.addTag(targetTagName);\n }\n });\n\n return;\n }\n\n for (const example of functionExamples) {\n const exampleContent = `${example.name} ${utils.getTagDescription(example)}`\n .trim()\n .split('\\n')\n .filter(Boolean);\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 enableFixer: {\n default: true,\n type: 'boolean',\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"],"mappings":"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"}
@@ -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":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","_default","iterateJsdoc","jsdocNode","utils","context","tags","options","tagName","Object","keys","targetTagName","getPreferredTagName","hasDuplicate","hasNonComment","range","exit","entries","getPreferredTagNameObject","blocked","reportSettings","replacement","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","patternProperties","type","nonComment","node","exports","module"],"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 +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","_interopRequireDefault","require","obj","__esModule","default","_default","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","exports","module"],"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 +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","settings","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","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, settings) => {\n const {\n publicOnly,\n contexts = settings.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, settings);\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, [], settings),\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":["_jsdoccomment","require","_exportParser","_interopRequireDefault","_iterateJsdoc","_jsdocUtils","obj","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","settings","undefined","baseObj","prop","Object","keys","opt","_default","create","sourceCode","getSourceCode","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","_sourceCode$getText$m","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","exports","module"],"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, settings) => {\n const {\n publicOnly,\n contexts = settings.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, settings);\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, [], settings),\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 +1 @@
1
- {"version":3,"file":"requireParam.js","names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\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 enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireParam.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","exports","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\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 enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requireParamDescription.js","names":["iterateJsdoc","context","report","settings","utils","defaultDestructuredRootDescription","setDefaultDestructuredRootDescription","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","description","trim","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postName","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment"],"sources":["../../src/rules/requireParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootDescription = 'The root object',\n setDefaultDestructuredRootDescription = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.description.trim()) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootDescription) {\n utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n description: defaultDestructuredRootDescription,\n postName: ' ',\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-description',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootDescription: {\n type: 'string',\n },\n setDefaultDestructuredRootDescription: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,kCAAkC,GAAG,iBAAiB;IACtDC,qCAAqC,GAAG;EAC1C,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,EAAE;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,WAAW,CAACC,IAAI,EAAE,EAAE;MACtC,IAAIC,KAAK,CAACC,OAAO,CAACX,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACiB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAId,qCAAqC,EAAE;UACzCF,KAAK,CAACiB,WAAW,CAAE,iCAAgCR,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YACzFR,KAAK,CAACkB,SAAS,CAACV,cAAc,EAAE;cAC9BI,WAAW,EAAEX,kCAAkC;cAC/CkB,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEArB,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,gBAAe,EACvE,IAAI,EACJF,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDY,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,4DAA4D;MACzEW,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEL,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBACR,CAAC;gBACDlC,OAAO,EAAE;kBACPkC,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD9B,kCAAkC,EAAE;UAClC8B,IAAI,EAAE;QACR,CAAC;QACD7B,qCAAqC,EAAE;UACrC6B,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requireParamDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","context","report","settings","utils","defaultDestructuredRootDescription","setDefaultDestructuredRootDescription","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","description","trim","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postName","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exports","module"],"sources":["../../src/rules/requireParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootDescription = 'The root object',\n setDefaultDestructuredRootDescription = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.description.trim()) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootDescription) {\n utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n description: defaultDestructuredRootDescription,\n postName: ' ',\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-description',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootDescription: {\n type: 'string',\n },\n setDefaultDestructuredRootDescription: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,kCAAkC,GAAG,iBAAiB;IACtDC,qCAAqC,GAAG;EAC1C,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,EAAE;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,WAAW,CAACC,IAAI,EAAE,EAAE;MACtC,IAAIC,KAAK,CAACC,OAAO,CAACX,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACiB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAId,qCAAqC,EAAE;UACzCF,KAAK,CAACiB,WAAW,CAAE,iCAAgCR,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YACzFR,KAAK,CAACkB,SAAS,CAACV,cAAc,EAAE;cAC9BI,WAAW,EAAEX,kCAAkC;cAC/CkB,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEArB,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,gBAAe,EACvE,IAAI,EACJF,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDY,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,4DAA4D;MACzEW,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEL,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBACR,CAAC;gBACDlC,OAAO,EAAE;kBACPkC,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD9B,kCAAkC,EAAE;UAClC8B,IAAI,EAAE;QACR,CAAC;QACD7B,qCAAqC,EAAE;UACrC6B,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAE,OAAA,CAAAvC,OAAA,GAAAC,QAAA;AAAAuC,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAvC,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requireParamName.js","names":["iterateJsdoc","report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/requireParamName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-name',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpE,IAAID,cAAc,CAACE,GAAG,IAAIF,cAAc,CAACG,IAAI,KAAK,EAAE,EAAE;MACpDN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EACrG,IAAI,EACJJ,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,mDAAmD;MAChEC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEX,IAAI,EAAE;YACR,CAAC,EACD;cACEO,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPZ,IAAI,EAAE;gBACR,CAAC;gBACDa,OAAO,EAAE;kBACPb,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requireParamName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","exports","module"],"sources":["../../src/rules/requireParamName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-name',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpE,IAAID,cAAc,CAACE,GAAG,IAAIF,cAAc,CAACG,IAAI,KAAK,EAAE,EAAE;MACpDN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EACrG,IAAI,EACJJ,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,mDAAmD;MAChEC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEX,IAAI,EAAE;YACR,CAAC,EACD;cACEO,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPZ,IAAI,EAAE;gBACR,CAAC;gBACDa,OAAO,EAAE;kBACPb,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAc,OAAA,CAAAxB,OAAA,GAAAC,QAAA;AAAAwB,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAxB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requireParamType.js","names":["iterateJsdoc","context","report","settings","utils","defaultDestructuredRootType","setDefaultDestructuredRootType","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","type","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postType","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment"],"sources":["../../src/rules/requireParamType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootType = 'object',\n setDefaultDestructuredRootType = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.type) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootType) {\n utils.reportJSDoc(`Missing root type for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n postType: ' ',\n type: `{${defaultDestructuredRootType}}`,\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-type',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootType: {\n type: 'string',\n },\n setDefaultDestructuredRootType: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,2BAA2B,GAAG,QAAQ;IACtCC,8BAA8B,GAAG;EACnC,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,EAAE;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,IAAI,EAAE;MACxB,IAAIC,KAAK,CAACC,OAAO,CAACV,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACgB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAIb,8BAA8B,EAAE;UAClCF,KAAK,CAACgB,WAAW,CAAE,0BAAyBP,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YAClFR,KAAK,CAACiB,SAAS,CAACT,cAAc,EAAE;cAC9BU,QAAQ,EAAE,GAAG;cACbN,IAAI,EAAG,IAAGX,2BAA4B;YACxC,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEAH,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,SAAQ,EAChE,IAAI,EACJF,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDW,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,qDAAqD;MAClEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACElB,IAAI,EAAE;YACR,CAAC,EACD;cACEc,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPnB,IAAI,EAAE;gBACR,CAAC;gBACDf,OAAO,EAAE;kBACPe,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDX,2BAA2B,EAAE;UAC3BW,IAAI,EAAE;QACR,CAAC;QACDV,8BAA8B,EAAE;UAC9BU,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requireParamType.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","context","report","settings","utils","defaultDestructuredRootType","setDefaultDestructuredRootType","options","functionParameterNames","getFunctionParameterNames","rootCount","forEachPreferredTag","jsdocParameter","targetTagName","name","includes","type","Array","isArray","exemptDestructuredRootsFromChecks","reportJSDoc","changeTag","postType","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","exports","module"],"sources":["../../src/rules/requireParamType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootType = 'object',\n setDefaultDestructuredRootType = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.type) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootType) {\n utils.reportJSDoc(`Missing root type for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n postType: ' ',\n type: `{${defaultDestructuredRootType}}`,\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-type',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootType: {\n type: 'string',\n },\n setDefaultDestructuredRootType: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,2BAA2B,GAAG,QAAQ;IACtCC,8BAA8B,GAAG;EACnC,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,sBAAsB,GAAGJ,KAAK,CAACK,yBAAyB,EAAE;EAEhE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClBN,KAAK,CAACO,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpEH,SAAS,IAAIE,cAAc,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtD,IAAI,CAACH,cAAc,CAACI,IAAI,EAAE;MACxB,IAAIC,KAAK,CAACC,OAAO,CAACV,sBAAsB,CAACE,SAAS,CAAC,CAAC,EAAE;QACpD,IAAIP,QAAQ,CAACgB,iCAAiC,EAAE;UAC9C;QACF;QAEA,IAAIb,8BAA8B,EAAE;UAClCF,KAAK,CAACgB,WAAW,CAAE,0BAAyBP,aAAc,GAAE,EAAED,cAAc,EAAE,MAAM;YAClFR,KAAK,CAACiB,SAAS,CAACT,cAAc,EAAE;cAC9BU,QAAQ,EAAE,GAAG;cACbN,IAAI,EAAG,IAAGX,2BAA4B;YACxC,CAAC,CAAC;UACJ,CAAC,CAAC;UACF;QACF;MACF;MAEAH,MAAM,CACH,kBAAiBW,aAAc,KAAID,cAAc,CAACE,IAAK,SAAQ,EAChE,IAAI,EACJF,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDW,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,qDAAqD;MAClEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACElB,IAAI,EAAE;YACR,CAAC,EACD;cACEc,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPnB,IAAI,EAAE;gBACR,CAAC;gBACDf,OAAO,EAAE;kBACPe,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDX,2BAA2B,EAAE;UAC3BW,IAAI,EAAE;QACR,CAAC;QACDV,8BAA8B,EAAE;UAC9BU,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAoB,OAAA,CAAAtC,OAAA,GAAAC,QAAA;AAAAsC,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAtC,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requireProperty.js","names":["iterateJsdoc","utils","propertyAssociatedTags","filterTags","tag","includes","length","targetTagName","getPreferredTagName","tagName","hasATag","propertyAssociatedTag","type","reportJSDoc","addTag","iterateAllJsdocs","meta","docs","description","url","fixable"],"sources":["../../src/rules/requireProperty.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n const propertyAssociatedTags = utils.filterTags(({\n tag,\n }) => {\n return [\n 'typedef', 'namespace',\n ].includes(tag);\n });\n if (!propertyAssociatedTags.length) {\n return;\n }\n\n const targetTagName = utils.getPreferredTagName({\n tagName: 'property',\n });\n\n if (utils.hasATag([\n targetTagName,\n ])) {\n return;\n }\n\n for (const propertyAssociatedTag of propertyAssociatedTags) {\n if (![\n 'object', 'Object', 'PlainObject',\n ].includes(propertyAssociatedTag.type)) {\n continue;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {\n utils.addTag(targetTagName);\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property',\n },\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC;AACF,CAAC,KAAK;EACJ,MAAMC,sBAAsB,GAAGD,KAAK,CAACE,UAAU,CAAC,CAAC;IAC/CC;EACF,CAAC,KAAK;IACJ,OAAO,CACL,SAAS,EAAE,WAAW,CACvB,CAACC,QAAQ,CAACD,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,IAAI,CAACF,sBAAsB,CAACI,MAAM,EAAE;IAClC;EACF;EAEA,MAAMC,aAAa,GAAGN,KAAK,CAACO,mBAAmB,CAAC;IAC9CC,OAAO,EAAE;EACX,CAAC,CAAC;EAEF,IAAIR,KAAK,CAACS,OAAO,CAAC,CAChBH,aAAa,CACd,CAAC,EAAE;IACF;EACF;EAEA,KAAK,MAAMI,qBAAqB,IAAIT,sBAAsB,EAAE;IAC1D,IAAI,CAAC,CACH,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAClC,CAACG,QAAQ,CAACM,qBAAqB,CAACC,IAAI,CAAC,EAAE;MACtC;IACF;IAEAX,KAAK,CAACY,WAAW,CAAE,kBAAiBN,aAAc,GAAE,EAAE,IAAI,EAAE,MAAM;MAChEN,KAAK,CAACa,MAAM,CAACP,aAAa,CAAC;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,EAAE;EACDQ,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sIAAsI;MACnJC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfR,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requireProperty.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","utils","propertyAssociatedTags","filterTags","tag","includes","length","targetTagName","getPreferredTagName","tagName","hasATag","propertyAssociatedTag","type","reportJSDoc","addTag","iterateAllJsdocs","meta","docs","description","url","fixable","exports","module"],"sources":["../../src/rules/requireProperty.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n const propertyAssociatedTags = utils.filterTags(({\n tag,\n }) => {\n return [\n 'typedef', 'namespace',\n ].includes(tag);\n });\n if (!propertyAssociatedTags.length) {\n return;\n }\n\n const targetTagName = utils.getPreferredTagName({\n tagName: 'property',\n });\n\n if (utils.hasATag([\n targetTagName,\n ])) {\n return;\n }\n\n for (const propertyAssociatedTag of propertyAssociatedTags) {\n if (![\n 'object', 'Object', 'PlainObject',\n ].includes(propertyAssociatedTag.type)) {\n continue;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {\n utils.addTag(targetTagName);\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property',\n },\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC;AACF,CAAC,KAAK;EACJ,MAAMC,sBAAsB,GAAGD,KAAK,CAACE,UAAU,CAAC,CAAC;IAC/CC;EACF,CAAC,KAAK;IACJ,OAAO,CACL,SAAS,EAAE,WAAW,CACvB,CAACC,QAAQ,CAACD,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,IAAI,CAACF,sBAAsB,CAACI,MAAM,EAAE;IAClC;EACF;EAEA,MAAMC,aAAa,GAAGN,KAAK,CAACO,mBAAmB,CAAC;IAC9CC,OAAO,EAAE;EACX,CAAC,CAAC;EAEF,IAAIR,KAAK,CAACS,OAAO,CAAC,CAChBH,aAAa,CACd,CAAC,EAAE;IACF;EACF;EAEA,KAAK,MAAMI,qBAAqB,IAAIT,sBAAsB,EAAE;IAC1D,IAAI,CAAC,CACH,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAClC,CAACG,QAAQ,CAACM,qBAAqB,CAACC,IAAI,CAAC,EAAE;MACtC;IACF;IAEAX,KAAK,CAACY,WAAW,CAAE,kBAAiBN,aAAc,GAAE,EAAE,IAAI,EAAE,MAAM;MAChEN,KAAK,CAACa,MAAM,CAACP,aAAa,CAAC;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,EAAE;EACDQ,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sIAAsI;MACnJC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfR,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAS,OAAA,CAAAvB,OAAA,GAAAC,QAAA;AAAAuB,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAvB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requirePropertyDescription.js","names":["iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","description","trim","name","iterateAllJsdocs","meta","docs","url","type"],"sources":["../../src/rules/requirePropertyDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (!jsdoc.description.trim()) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdoc.name}\" description.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that each `@property` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property-description',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAI,CAACD,KAAK,CAACE,WAAW,CAACC,IAAI,EAAE,EAAE;MAC7BN,MAAM,CACH,kBAAiBI,aAAc,KAAID,KAAK,CAACI,IAAK,gBAAe,EAC9D,IAAI,EACJJ,KAAK,CACN;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJL,WAAW,EAAE,+DAA+D;MAC5EM,GAAG,EAAE;IACP,CAAC;IACDC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requirePropertyDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","description","trim","name","iterateAllJsdocs","meta","docs","url","type","exports","module"],"sources":["../../src/rules/requirePropertyDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (!jsdoc.description.trim()) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdoc.name}\" description.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that each `@property` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property-description',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAI,CAACD,KAAK,CAACE,WAAW,CAACC,IAAI,EAAE,EAAE;MAC7BN,MAAM,CACH,kBAAiBI,aAAc,KAAID,KAAK,CAACI,IAAK,gBAAe,EAC9D,IAAI,EACJJ,KAAK,CACN;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJL,WAAW,EAAE,+DAA+D;MAC5EM,GAAG,EAAE;IACP,CAAC;IACDC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,OAAA,CAAAhB,OAAA,GAAAC,QAAA;AAAAgB,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAhB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"requirePropertyName.js","names":["iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","tag","name","type","iterateAllJsdocs","meta","docs","description","url"],"sources":["../../src/rules/requirePropertyName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (jsdoc.tag && jsdoc.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdoc.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all function `@property` tags have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property-name',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAID,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,IAAI,KAAK,EAAE,EAAE;MAClCN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,KAAK,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EAC5F,IAAI,EACJJ,KAAK,CACN;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yDAAyD;MACtEC,GAAG,EAAE;IACP,CAAC;IACDL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"requirePropertyName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","report","utils","forEachPreferredTag","jsdoc","targetTagName","tag","name","type","iterateAllJsdocs","meta","docs","description","url","exports","module"],"sources":["../../src/rules/requirePropertyName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (jsdoc.tag && jsdoc.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdoc.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all function `@property` tags have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property-name',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,UAAU,EAAE,CAACC,KAAK,EAAEC,aAAa,KAAK;IAC9D,IAAID,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,IAAI,KAAK,EAAE,EAAE;MAClCN,MAAM,CACH,sCAAqCI,aAAc,IAAGD,KAAK,CAACI,IAAI,KAAK,EAAE,GAAG,MAAM,GAAG,KAAM,GAAE,EAC5F,IAAI,EACJJ,KAAK,CACN;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDK,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yDAAyD;MACtEC,GAAG,EAAE;IACP,CAAC;IACDL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAM,OAAA,CAAAhB,OAAA,GAAAC,QAAA;AAAAgB,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAhB,OAAA"}