eslint-plugin-jsdoc 46.9.0 → 46.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/exportParser.js +5 -7
  2. package/dist/exportParser.js.map +1 -1
  3. package/dist/generateRule.js +1 -0
  4. package/dist/generateRule.js.map +1 -1
  5. package/dist/iterateJsdoc.js +37 -34
  6. package/dist/iterateJsdoc.js.map +1 -1
  7. package/dist/jsdocUtils.js +17 -26
  8. package/dist/jsdocUtils.js.map +1 -1
  9. package/dist/rules/checkExamples.js +1 -1
  10. package/dist/rules/checkExamples.js.map +1 -1
  11. package/dist/rules/checkLineAlignment.js +2 -2
  12. package/dist/rules/checkLineAlignment.js.map +1 -1
  13. package/dist/rules/checkTagNames.js +1 -1
  14. package/dist/rules/checkTagNames.js.map +1 -1
  15. package/dist/rules/checkTypes.js +2 -2
  16. package/dist/rules/checkTypes.js.map +1 -1
  17. package/dist/rules/importsAsDependencies.js +0 -1
  18. package/dist/rules/importsAsDependencies.js.map +1 -1
  19. package/dist/rules/matchName.js +2 -2
  20. package/dist/rules/matchName.js.map +1 -1
  21. package/dist/rules/multilineBlocks.js +2 -2
  22. package/dist/rules/multilineBlocks.js.map +1 -1
  23. package/dist/rules/noMissingSyntax.js +1 -0
  24. package/dist/rules/noMissingSyntax.js.map +1 -1
  25. package/dist/rules/noUndefinedTypes.js +3 -2
  26. package/dist/rules/noUndefinedTypes.js.map +1 -1
  27. package/dist/rules/requireJsdoc.js +6 -6
  28. package/dist/rules/requireJsdoc.js.map +1 -1
  29. package/dist/rules/requireParam.js +1 -0
  30. package/dist/rules/requireParam.js.map +1 -1
  31. package/dist/rules/requireReturnsCheck.js +1 -1
  32. package/dist/rules/requireReturnsCheck.js.map +1 -1
  33. package/dist/rules/sortTags.js +7 -7
  34. package/dist/rules/sortTags.js.map +1 -1
  35. package/dist/rules/tagLines.js +2 -2
  36. package/dist/rules/tagLines.js.map +1 -1
  37. package/dist/utils/hasReturnValue.js +15 -18
  38. package/dist/utils/hasReturnValue.js.map +1 -1
  39. package/eslint.config.mjs +72 -0
  40. package/package.json +24 -23
@@ -1 +1 @@
1
- {"version":3,"file":"matchName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type","comment","required","module"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n match: {\n additionalProperties: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"matchName.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type","comment","required","module"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[/** @type {import('../iterateJsdoc.js').Integer} */ (lastIndex)];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n match: {\n additionalProperties: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -83,13 +83,13 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
83
83
  delimiter
84
84
  } = line;
85
85
  for (const prop of ['delimiter', 'postDelimiter', 'tag', 'type', 'lineEnd', 'postType', 'postTag', 'name', 'postName', 'description']) {
86
- finalLineTokens[
86
+ finalLineTokens[(
87
87
  /**
88
88
  * @type {"delimiter"|"postDelimiter"|"tag"|"type"|
89
89
  * "lineEnd"|"postType"|"postTag"|"name"|
90
90
  * "postName"|"description"}
91
91
  */
92
- prop] = '';
92
+ prop)] = '';
93
93
  }
94
94
  utils.addLine(jsdoc.source.length - 1, {
95
95
  ...line,
@@ -1 +1 @@
1
- {"version":3,"file":"multilineBlocks.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","allowMultipleTags","noFinalLineText","noZeroLineText","noSingleLineBlocks","singleLineTags","noMultilineBlocks","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","desc","type","typ","name","nme","lineEnd","postType","postName","postTag","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","anyOf","enum","items","module"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n noFinalLineText = true,\n noZeroLineText = true,\n noSingleLineBlocks = false,\n singleLineTags = [\n 'lends', 'type',\n ],\n noMultilineBlocks = false,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n tag: tg,\n type: typ,\n name: nme,\n lineEnd,\n postType,\n postName,\n postTag,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\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":"multilineBlocks.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","allowMultipleTags","noFinalLineText","noZeroLineText","noSingleLineBlocks","singleLineTags","noMultilineBlocks","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","desc","type","typ","name","nme","lineEnd","postType","postName","postTag","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","anyOf","enum","items","module"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n noFinalLineText = true,\n noZeroLineText = true,\n noSingleLineBlocks = false,\n singleLineTags = [\n 'lends', 'type',\n ],\n noMultilineBlocks = false,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n /**\n * @param {string} tagName\n * @returns {boolean}\n */\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[\n /**\n * @type {\"delimiter\"|\"postDelimiter\"|\"tag\"|\"type\"|\n * \"lineEnd\"|\"postType\"|\"postTag\"|\"name\"|\n * \"postName\"|\"description\"}\n */ (\n prop\n )\n ] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n tag: tg,\n type: typ,\n name: nme,\n lineEnd,\n postType,\n postName,\n postTag,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\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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"}
@@ -18,6 +18,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
18
18
  /**
19
19
  * @typedef {string|ContextObject} Context
20
20
  */
21
+
21
22
  /**
22
23
  * @param {import('../iterateJsdoc.js').StateObject} state
23
24
  * @returns {void}
@@ -1 +1 @@
1
- {"version":3,"file":"noMissingSyntax.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","setDefaults","state","selectorMap","incrementSelector","selector","comment","_default","exports","iterateJsdoc","context","info","utils","options","contexts","contextStr","findContext","String","contextSelected","exit","settings","length","report","loc","end","column","line","start","message","some","cntxt","contextKey","minimum","Object","values","every","cmmnt","data","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","module"],"sources":["../../src/rules/noMissingSyntax.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {{\n * comment: string,\n * context: string,\n * message: string,\n * minimum: import('../iterateJsdoc.js').Integer\n * }} ContextObject\n */\n\n/**\n * @typedef {string|ContextObject} Context\n */\n\n/**\n * @param {import('../iterateJsdoc.js').StateObject} state\n * @returns {void}\n */\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\n/**\n * @param {import('../iterateJsdoc.js').StateObject} state\n * @param {string} selector\n * @param {string} comment\n * @returns {void}\n */\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n context,\n info: {\n comment,\n },\n state,\n utils,\n}) => {\n if (!context.options[0]) {\n // Handle error later\n return;\n }\n\n /**\n * @type {Context[]}\n */\n const contexts = context.options[0].contexts;\n\n const {\n contextStr,\n } = utils.findContext(contexts, comment);\n\n setDefaults(state);\n\n incrementSelector(state, contextStr, String(comment));\n}, {\n contextSelected: true,\n exit ({\n context,\n settings,\n state,\n }) {\n if (!context.options.length && !settings.contexts) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `contexts` option.',\n });\n\n return;\n }\n\n setDefaults(state);\n\n /**\n * @type {Context[]}\n */\n const contexts = (context.options[0] ?? {}).contexts ?? settings?.contexts;\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = typeof cntxt === 'string' ? '' : cntxt?.comment;\n\n const contextKey = contextStr === 'any' ? 'undefined' : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (\n // @ts-expect-error comment would need an object, not string\n cntxt?.minimum ?? 1\n )) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (\n // @ts-expect-error comment would need an object, not string\n cntxt?.minimum ?? 1\n );\n }))\n ) {\n const message = typeof cntxt === 'string' ?\n 'Syntax is required: {{context}}' :\n cntxt?.message ?? ('Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : ''));\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\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":"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"}
1
+ {"version":3,"file":"noMissingSyntax.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","setDefaults","state","selectorMap","incrementSelector","selector","comment","_default","exports","iterateJsdoc","context","info","utils","options","contexts","contextStr","findContext","String","contextSelected","exit","settings","length","report","loc","end","column","line","start","message","some","cntxt","contextKey","minimum","Object","values","every","cmmnt","data","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","module"],"sources":["../../src/rules/noMissingSyntax.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {{\n * comment: string,\n * context: string,\n * message: string,\n * minimum: import('../iterateJsdoc.js').Integer\n * }} ContextObject\n */\n\n/**\n * @typedef {string|ContextObject} Context\n */\n\n/**\n * @param {import('../iterateJsdoc.js').StateObject} state\n * @returns {void}\n */\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\n/**\n * @param {import('../iterateJsdoc.js').StateObject} state\n * @param {string} selector\n * @param {string} comment\n * @returns {void}\n */\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n context,\n info: {\n comment,\n },\n state,\n utils,\n}) => {\n if (!context.options[0]) {\n // Handle error later\n return;\n }\n\n /**\n * @type {Context[]}\n */\n const contexts = context.options[0].contexts;\n\n const {\n contextStr,\n } = utils.findContext(contexts, comment);\n\n setDefaults(state);\n\n incrementSelector(state, contextStr, String(comment));\n}, {\n contextSelected: true,\n exit ({\n context,\n settings,\n state,\n }) {\n if (!context.options.length && !settings.contexts) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `contexts` option.',\n });\n\n return;\n }\n\n setDefaults(state);\n\n /**\n * @type {Context[]}\n */\n const contexts = (context.options[0] ?? {}).contexts ?? settings?.contexts;\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = typeof cntxt === 'string' ? '' : cntxt?.comment;\n\n const contextKey = contextStr === 'any' ? 'undefined' : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (\n // @ts-expect-error comment would need an object, not string\n cntxt?.minimum ?? 1\n )) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (\n // @ts-expect-error comment would need an object, not string\n cntxt?.minimum ?? 1\n );\n }))\n ) {\n const message = typeof cntxt === 'string' ?\n 'Syntax is required: {{context}}' :\n cntxt?.message ?? ('Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : ''));\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\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":"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"}
@@ -128,7 +128,8 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
128
128
  })
129
129
 
130
130
  // If the file is a module, concat the variables from the module scope.
131
- .concat(cjsOrESMScope ? globalScope.childScopes.flatMap(({
131
+ .concat( /* istanbul ignore next */
132
+ cjsOrESMScope ? globalScope.childScopes.flatMap(({
132
133
  variables
133
134
  }) => {
134
135
  return variables;
@@ -161,7 +162,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
161
162
  const tagToParsedType = propertyName => {
162
163
  return tag => {
163
164
  try {
164
- const potentialType = tag[/** @type {"type"|"name"|"namepathOrURL"} */propertyName];
165
+ const potentialType = tag[( /** @type {"type"|"name"|"namepathOrURL"} */propertyName)];
165
166
  return {
166
167
  parsedType: mode === 'permissive' ? (0, _jsdoccomment.tryParse)( /** @type {string} */potentialType) : (0, _jsdoccomment.parse)( /** @type {string} */potentialType, mode),
167
168
  tag
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.js","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdoccomment","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","preferredTypes","structuredTags","mode","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","_currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const typedefDeclarations = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n tag,\n parsedType,\n } of tagsWithTypes) {\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n /* istanbul ignore else */\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"noUndefinedTypes.js","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdoccomment","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","preferredTypes","structuredTags","mode","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","_currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const typedefDeclarations = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n /* istanbul ignore next */\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n tag,\n parsedType,\n } of tagsWithTypes) {\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n /* istanbul ignore else */\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -17,6 +17,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
17
  * initWindow: boolean
18
18
  * }} RequireJsdocOpts
19
19
  */
20
+
20
21
  /** @type {import('json-schema').JSONSchema4} */
21
22
  const OPTIONS_SCHEMA = {
22
23
  additionalProperties: false,
@@ -157,8 +158,7 @@ const getOption = (context, baseObject, option, key) => {
157
158
  typeof context.options[0][option] === 'boolean' || key in context.options[0][option])) {
158
159
  return context.options[0][option][key];
159
160
  }
160
- return (/** @type {{[key: string]: {default?: boolean|undefined}}} */baseObject.properties[key].default
161
- );
161
+ return /** @type {{[key: string]: {default?: boolean|undefined}}} */baseObject.properties[key].default;
162
162
  };
163
163
 
164
164
  /**
@@ -210,9 +210,9 @@ const getOptions = (context, settings) => {
210
210
  }
211
211
  return properties;
212
212
  })( /** @type {import('json-schema').JSONSchema4Object} */
213
- /** @type {import('json-schema').JSONSchema4Object} */
214
- /** @type {import('json-schema').JSONSchema4Object} */
215
- OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
213
+ ( /** @type {import('json-schema').JSONSchema4Object} */
214
+ ( /** @type {import('json-schema').JSONSchema4Object} */
215
+ OPTIONS_SCHEMA.properties.publicOnly).oneOf)[1]),
216
216
  require: (baseObj => {
217
217
  /** @type {{[key: string]: boolean|undefined}} */
218
218
  const properties = {};
@@ -344,7 +344,7 @@ var _default = exports.default = {
344
344
  }
345
345
  const indent = _jsdocUtils.default.getIndent({
346
346
  text: sourceCode.getText( /** @type {import('eslint').Rule.Node} */baseNode, /** @type {import('eslint').AST.SourceLocation} */
347
- /** @type {import('eslint').Rule.Node} */baseNode.loc.start.column)
347
+ ( /** @type {import('eslint').Rule.Node} */baseNode.loc).start.column)
348
348
  });
349
349
  const {
350
350
  inlineCommentBlock
@@ -1 +1 @@
1
- {"version":3,"file":"requireJsdoc.js","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","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","exports","create","sourceCode","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","node","some","ctxt","count","underMinLine","_sourceCode$getText$m","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n getSettings,\n} from '../iterateJsdoc.js';\nimport jsdocUtils from '../jsdocUtils.js';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/** @type {import('json-schema').JSONSchema4} */\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\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\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\n // 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 /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\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 /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n // istanbul ignore next -- Fallback to deprecated method\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n require: requireOption,\n contexts,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\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 } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (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 description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\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 = /** @type {import('eslint').Rule.ReportFixer} */ (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 /** @type {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Decorator} */\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 /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\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(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\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 /**\n * @param {string} prop\n * @returns {boolean}\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) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (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) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (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, /** @type {import('eslint').Rule.Node} */ (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/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\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":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAI8B,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMG,cAAc,GAAG;EACrBC,oBAAoB,EAAE,KAAK;EAC3BC,UAAU,EAAE;IACVC,iBAAiB,EAAE;MACjBJ,OAAO,EAAE,IAAI;MACbK,IAAI,EAAE;IACR,CAAC;IACDC,YAAY,EAAE;MACZC,KAAK,EAAE,CACL;QACEF,IAAI,EAAE;MACR,CAAC,EACD;QACEG,IAAI,EAAE,CACJ,WAAW,CACZ;QACDH,IAAI,EAAE;MACR,CAAC,CACF;MACDL,OAAO,EAAE;IACX,CAAC;IACDS,YAAY,EAAE;MACZF,KAAK,EAAE,CACL;QACEF,IAAI,EAAE;MACR,CAAC,EACD;QACEG,IAAI,EAAE,CACJ,WAAW,CACZ;QACDH,IAAI,EAAE;MACR,CAAC,CACF;MACDL,OAAO,EAAE;IACX,CAAC;IACDU,QAAQ,EAAE;MACRC,KAAK,EAAE;QACLJ,KAAK,EAAE,CACL;UACEF,IAAI,EAAE;QACR,CAAC,EACD;UACEH,oBAAoB,EAAE,KAAK;UAC3BC,UAAU,EAAE;YACVS,OAAO,EAAE;cACPP,IAAI,EAAE;YACR,CAAC;YACDQ,kBAAkB,EAAE;cAClBR,IAAI,EAAE;YACR,CAAC;YACDS,YAAY,EAAE;cACZT,IAAI,EAAE;YACR;UACF,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;MAEL,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IACDU,WAAW,EAAE;MACXf,OAAO,EAAE,IAAI;MACbK,IAAI,EAAE;IACR,CAAC;IACDW,uBAAuB,EAAE;MACvBhB,OAAO,EAAE,KAAK;MACdK,IAAI,EAAE;IACR,CAAC;IACDY,oBAAoB,EAAE;MACpBjB,OAAO,EAAE,KAAK;MACdK,IAAI,EAAE;IACR,CAAC;IACDa,YAAY,EAAE;MACZlB,OAAO,EAAE,EAAE;MACXK,IAAI,EAAE;IACR,CAAC;IACDS,YAAY,EAAE;MACZT,IAAI,EAAE;IACR,CAAC;IACDc,UAAU,EAAE;MACVC,KAAK,EAAE,CACL;QACEpB,OAAO,EAAE,KAAK;QACdK,IAAI,EAAE;MACR,CAAC,EACD;QACEH,oBAAoB,EAAE,KAAK;QAC3BF,OAAO,EAAE,CAAC,CAAC;QACXG,UAAU,EAAE;UACVkB,aAAa,EAAE;YACbhB,IAAI,EAAE;UACR,CAAC;UACDiB,GAAG,EAAE;YACHjB,IAAI,EAAE;UACR,CAAC;UACDkB,GAAG,EAAE;YACHlB,IAAI,EAAE;UACR,CAAC;UACDmB,MAAM,EAAE;YACNnB,IAAI,EAAE;UACR;QACF,CAAC;QACDA,IAAI,EAAE;MACR,CAAC;IAEL,CAAC;IACDX,OAAO,EAAE;MACPQ,oBAAoB,EAAE,KAAK;MAC3BF,OAAO,EAAE,CAAC,CAAC;MACXG,UAAU,EAAE;QACVsB,uBAAuB,EAAE;UACvBzB,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDqB,gBAAgB,EAAE;UAChB1B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDsB,eAAe,EAAE;UACf3B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDuB,mBAAmB,EAAE;UACnB5B,OAAO,EAAE,IAAI;UACbK,IAAI,EAAE;QACR,CAAC;QACDwB,kBAAkB,EAAE;UAClB7B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDyB,gBAAgB,EAAE;UAChB9B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR;EACF,CAAC;EACDA,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,SAAS,GAAGA,CAACnB,OAAO,EAAEoB,UAAU,EAAEC,MAAM,EAAEC,GAAG,KAAK;EACtD,IAAItB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,IAAIF,MAAM,IAAIrB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC;EACpD;EACA;EACC,OAAOvB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,CAACF,MAAM,CAAC,KAAK,SAAS,IAChDC,GAAG,IAAItB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,CAACF,MAAM,CAAC,CAAC,EAClC;IACA,OAAOrB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,CAACF,MAAM,CAAC,CAACC,GAAG,CAAC;EACxC;EAEA,OAAO,8DACLF,UAAU,CAAC7B,UAAU,CACrB+B,GAAG,CAAC,CAAClC;EAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMoC,UAAU,GAAGA,CAACxB,OAAO,EAAEyB,QAAQ,KAAK;EACxC,MAAM;IACJlB,UAAU;IACVT,QAAQ,GAAG2B,QAAQ,CAAC3B,QAAQ,IAAI,EAAE;IAClCM,uBAAuB,GAAG,IAAI;IAC9BC,oBAAoB,GAAG,KAAK;IAC5BF,WAAW,GAAG,IAAI;IAClBG,YAAY,GAAG,EAAE;IACjBJ,YAAY,GAAGwB;EACjB,CAAC,GAAG1B,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,OAAO;IACLzB,QAAQ;IACRK,WAAW;IACXC,uBAAuB;IACvBC,oBAAoB;IACpBC,YAAY;IACZJ,YAAY;IACZK,UAAU,EAAE,CAAEoB,OAAO,IAAK;MACxB,IAAI,CAACpB,UAAU,EAAE;QACf,OAAO,KAAK;MACd;;MAEA;MACA,MAAMhB,UAAU,GAAG,CAAC,CAAC;MACrB,KAAK,MAAMqC,IAAI,IAAIC,MAAM,CAACC,IAAI,EAC5B;MACA,sDACIH,OAAO,CACPpC,UACN,CAAC,EAAE;QACD,MAAMwC,GAAG,GAAGZ,SAAS,CACnBnB,OAAO,EACP,sDAAwD2B,OAAO,EAC/D,YAAY,EACZC,IACF,CAAC;QAEDrC,UAAU,CAACqC,IAAI,CAAC,GAAGG,GAAG;MACxB;MAEA,OAAOxC,UAAU;IACnB,CAAC,GACC;IAEE;IAEE;IAEEF,cAAc,CAACE,UAAU,CACzBgB,UAAU,CACZC,KAAK,CACP,CAAC,CACL,CAAC;IACD1B,OAAO,EAAE,CAAE6C,OAAO,IAAK;MACrB;MACA,MAAMpC,UAAU,GAAG,CAAC,CAAC;MACrB,KAAK,MAAMqC,IAAI,IAAIC,MAAM,CAACC,IAAI,EAC5B;MACA,sDACIH,OAAO,CACPpC,UACN,CAAC,EAAE;QACD,MAAMwC,GAAG,GAAGZ,SAAS,CACnBnB,OAAO,EACP;QACC2B,OAAO,EACR,SAAS,EACTC,IACF,CAAC;QACDrC,UAAU,CAACqC,IAAI,CAAC,GAAGG,GAAG;MACxB;MAEA,OAAOxC,UAAU;IACnB,CAAC,GACC;IACCF,cAAc,CAACE,UAAU,CAAET,OAC9B;EACF,CAAC;AACH,CAAC;;AAED;AAAA,IAAAkD,QAAA,GAAAC,OAAA,CAAA7C,OAAA,GACe;EACb8C,MAAMA,CAAElC,OAAO,EAAE;IACf;IACA,MAAM;MACJmC,UAAU,GAAGnC,OAAO,CAACoC,aAAa,CAAC;IACrC,CAAC,GAAGpC,OAAO;IACX,MAAMyB,QAAQ,GAAG,IAAAY,yBAAW,EAACrC,OAAO,CAAC;IACrC,IAAI,CAACyB,QAAQ,EAAE;MACb,OAAO,CAAC,CAAC;IACX;IAEA,MAAMa,IAAI,GAAGd,UAAU,CAACxB,OAAO,EAAEyB,QAAQ,CAAC;IAE1C,MAAM;MACJ3C,OAAO,EAAEyD,aAAa;MACtBzC,QAAQ;MACRO,oBAAoB;MACpBD,uBAAuB;MACvBD,WAAW;MACXG,YAAY;MACZJ;IACF,CAAC,GAAGoC,IAAI;IAER,MAAM/B,UAAU;IAEd;AACN;AACA;AACA;AACA;IACQ+B,IAAI,CAAC/B,UACN;;IAEH;AACJ;AACA;IACI,MAAMiC,UAAU,GAAGA,CAACC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,KAAK;MAC3C;MACE;MACAzC,YAAY,KAAKwB,SAAS,IAAI5B,QAAQ,CAAC8C,IAAI,CAAEC,IAAI,IAAK;QACpD,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;UAC5B,OAAO,KAAK;QACd;QAEA,MAAM;UACJ3C,YAAY,EAAE4C;QAChB,CAAC,GAAGD,IAAI;QACR,OAAOC,KAAK,KAAKpB,SAAS;MAC5B,CAAC,CAAC,EACF;QACA;AACR;AACA;QACQ,MAAMqB,YAAY,GAAID,KAAK,IAAK;UAAA,IAAAE,qBAAA;UAC9B,OAAOF,KAAK,KAAKpB,SAAS,IAAIoB,KAAK,GACjC,CAAC,EAAAE,qBAAA,GAAAb,UAAU,CAACc,OAAO,CAACN,IAAI,CAAC,CAACO,KAAK,CAAC,MAAM,CAAC,cAAAF,qBAAA,uBAAtCA,qBAAA,CAAwCG,MAAM,KAAI,CAAC,IAAI,CAAC;QAC7D,CAAC;QAED,IAAIJ,YAAY,CAAC7C,YAAY,CAAC,EAAE;UAC9B;QACF;QAEA,MAAM;UACJA,YAAY,EAAEkD;QAChB,CAAC;QACC;AACV;AACA;AACA;AACA;AACA;AACA;QAAetD,QAAQ,CAACuD,IAAI,CAAER,IAAI,IAAK;UAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,KAAK;UACd;UAEA,MAAM;YACJ7C,OAAO,EAAEsD;UACX,CAAC,GAAGT,IAAI;UACR,OAAOS,GAAG,MAAMb,IAAI,CAACc,QAAQ,IAAIZ,IAAI,CAAClD,IAAI,CAAC;QAC7C,CAAC,CAAC,IAAK,CAAC,CAAC;QACX,IAAIsD,YAAY,CAACK,mBAAmB,CAAC,EAAE;UACrC;QACF;MACF;MAEA,MAAMI,SAAS,GAAG,IAAAC,6BAAe,EAACtB,UAAU,EAAEQ,IAAI,EAAElB,QAAQ,CAAC;MAE7D,IAAI+B,SAAS,EAAE;QACb;MACF;;MAEA;MACA;MACA,IAAIE,mBAAU,CAACC,mBAAmB,CAChC;QACEC,WAAW,EAAE,EAAE;QACfC,UAAU,EAAE,EAAE;QACdC,QAAQ,EAAE,EAAE;QACZC,MAAM,EAAE,EAAE;QACVC,IAAI,EAAE;MACR,CAAC,EACDrB,IAAI,EACJ3C,OAAO,EACP,CACEX,cAAc,CAElB,CAAC,EAAE;QACD;MACF;MAEA;MACE;MACA;MACAgB,oBAAoB,IAAIoC,IAAI,CAACwB,iBAAiB;MAE9C;MACA;MACA7D,uBAAuB,IAAIsD,mBAAU,CAACQ,aAAa,CAACvB,IAAI,CAAC,EACzD;QACA,MAAMwB,sBAAsB,GAAGT,mBAAU,CAACU,yBAAyB,CAACzB,IAAI,CAAC;QACzE,IAAI,CAACwB,sBAAsB,CAAChB,MAAM,IAAI,CAACO,mBAAU,CAACW,cAAc,CAAC1B,IAAI,CAAC,EAAE;UACtE;QACF;MACF;MAEA,MAAM2B,GAAG,GAAG,gDAAkDC,KAAK,IAAK;QACtE;QACA,MAAMC,KAAK,GAAG/C,QAAQ,CAACgD,QAAQ,KAAK,CAAC,IAAIhD,QAAQ,CAACiD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAGjD,QAAQ,CAACgD,QAAQ;QACvF;QACA,IAAIE,QAAQ,GAAG,IAAAC,+BAAiB,EAACjC,IAAI,EAAER,UAAU,CAAC;QAElD,MAAM0C,SAAS,GAAG,IAAAC,0BAAY,EAACH,QAAQ,CAAC;QACxC,IAAIE,SAAS,EAAE;UACbF,QAAQ,GAAGE,SAAS;QACtB;QAEA,MAAME,MAAM,GAAGrB,mBAAU,CAACsB,SAAS,CAAC;UAClCC,IAAI,EAAE9C,UAAU,CAACc,OAAO,EACtB,yCAA2C0B,QAAQ,EACnD;UAEE,yCAA2CA,QAAQ,CAAEO,GAAG,CACxDC,KAAK,CAACC,MACV;QACF,CAAC,CAAC;QAEF,MAAM;UACJnF;QACF,CAAC;QACC;AACV;AACA;AACA;AACA;AACA;AACA;QAAeH,QAAQ,CAACuD,IAAI,CAAEgC,MAAM,IAAK;UAC7B,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,KAAK;UACd;UAEA,MAAM;YACJrF,OAAO,EAAE6C;UACX,CAAC,GAAGwC,MAAM;UACV,OAAOxC,IAAI,KAAKF,IAAI,CAAClD,IAAI;QAC3B,CAAC,CAAC,IAAK,CAAC,CAAC;QACX,MAAM6F,SAAS,GAAG,CAACrF,kBAAkB,GAClC,OAAMK,YAAa,EAAC,GACpB,QAAOyE,MAAO,IAAGzE,YAAa,KAAIyE,MAAO,EAAC,IACxC,KAAI,IAAI,CAACQ,MAAM,CAACf,KAAK,CAAE,GAAEO,MAAM,CAACS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAC;QAEnD,OAAOjB,KAAK,CAACkB,gBAAgB,EAC3B;QACCd,QAAQ,EACTW,SACF,CAAC;MACH,CAAC;MAED,MAAMI,MAAM,GAAGA,CAAA,KAAM;QACnB,MAAM;UACJP;QACF,CAAC,GAAG,kDAAoDxC,IAAI,CAACuC,GAAI;QACjE,MAAMA,GAAG,GAAG;UACVS,GAAG,EAAE;YACHP,MAAM,EAAE,CAAC;YACTQ,IAAI,EAAET,KAAK,CAACS,IAAI,GAAG;UACrB,CAAC;UACDT;QACF,CAAC;QACDnF,OAAO,CAAC0F,MAAM,CAAC;UACbpB,GAAG,EAAEnE,WAAW,GAAGmE,GAAG,GAAG,IAAI;UAC7BY,GAAG;UACHW,SAAS,EAAE,cAAc;UACzBlD;QACF,CAAC,CAAC;MACJ,CAAC;MAED,IAAIpC,UAAU,EAAE;QACd;QACA,MAAMwB,GAAG,GAAG;UACVtB,aAAa,EAAEqF,OAAO,CAAC,CAAAvF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEE,aAAa,KAAI,KAAK,CAAC;UAC1DE,GAAG,EAAEmF,OAAO,CAAC,CAAAvF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEI,GAAG,KAAI,IAAI,CAAC;UACrCoF,iBAAiB,EAAED,OAAO,CAAC,CAAAvF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEG,GAAG,KAAI,IAAI,CAAC;UACnDsF,UAAU,EAAEF,OAAO,CAAC,CAAAvF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEK,MAAM,KAAI,KAAK;QACjD,CAAC;QACD,MAAMqF,QAAQ,GAAGC,qBAAY,CAACC,mBAAmB,CAACxD,IAAI,EAAER,UAAU,EAAEJ,GAAG,EAAEN,QAAQ,CAAC;QAElF,IAAIwE,QAAQ,EAAE;UACZP,MAAM,CAAC,CAAC;QACV;MACF,CAAC,MAAM;QACLA,MAAM,CAAC,CAAC;MACV;IACF,CAAC;;IAED;AACJ;AACA;AACA;IACI,MAAMU,SAAS,GAAIxE,IAAI,IAAK;MAC1B,OAAOW,aAAa,CAACX,IAAI,CAAC,IAAI9B,QAAQ,CAAC8C,IAAI,CAAEC,IAAI,IAAK;QACpD,OAAO,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,CAAC7C,OAAO,KAAK4B,IAAI,GAAGiB,IAAI,KAAKjB,IAAI;MACzE,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;MACL,GAAG8B,mBAAU,CAAC2C,gBAAgB,CAC5B3C,mBAAU,CAAC4C,gBAAgB,CAACtG,OAAO,EAAE,EAAE,EAAEyB,QAAQ,CAAC,EAClDe,UACF,CAAC;MACD3B,uBAAuBA,CAAE8B,IAAI,EAAE;QAC7B,IAAI,CAACyD,SAAS,CAAC,yBAAyB,CAAC,EAAE;UACzC;QACF;QAEA,IACE,CACE,oBAAoB,EAAE,sBAAsB,EAAE,0BAA0B,CACzE,CAACG,QAAQ,CAAC5D,IAAI,CAAC6D,MAAM,CAAC/G,IAAI,CAAC,IAC5B,CACE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,CACpE,CAAC8G,QAAQ,CAAC5D,IAAI,CAAC6D,MAAM,CAAC/G,IAAI,CAAC,IAC1BkD,IAAI;QACF;AACd;AACA;AACA;AACA;QACeA,IAAI,CAAC6D,MAAM,CAAEC,KAAK,EACvB;UACAjE,UAAU,CAAC;YACTyB,iBAAiB,EAAE;UACrB,CAAC,EAAE,IAAI,EAAEtB,IAAI,CAAC;QAChB;MACF,CAAC;MAED7B,gBAAgBA,CAAE6B,IAAI,EAAE;QACtB,IAAI,CAACyD,SAAS,CAAC,kBAAkB,CAAC,EAAE;UAClC;QACF;QAEA5D,UAAU,CAAC;UACTyB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAEtB,IAAI,CAAC;MAChB,CAAC;MAED5B,eAAeA,CAAE4B,IAAI,EAAE;QACrB,IAAI,CAACyD,SAAS,CAAC,iBAAiB,CAAC,EAAE;UACjC;QACF;QAEA5D,UAAU,CAAC;UACTyB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAEtB,IAAI,CAAC;MAChB,CAAC;MAED3B,mBAAmBA,CAAE2B,IAAI,EAAE;QACzB,IAAI,CAACyD,SAAS,CAAC,qBAAqB,CAAC,EAAE;UACrC;QACF;QAEA5D,UAAU,CAAC;UACTyB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAEtB,IAAI,CAAC;MAChB,CAAC;MAED1B,kBAAkBA,CAAE0B,IAAI,EAAE;QACxB,IAAI,CAACyD,SAAS,CAAC,oBAAoB,CAAC,EAAE;UACpC;QACF;QAEA,IACE,CACE,oBAAoB,EAAE,sBAAsB,EAAE,0BAA0B,CACzE,CAACG,QAAQ,CAAC5D,IAAI,CAAC6D,MAAM,CAAC/G,IAAI,CAAC,IAC5B,CACE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,CACpE,CAAC8G,QAAQ,CAAC5D,IAAI,CAAC6D,MAAM,CAAC/G,IAAI,CAAC,IAC1BkD,IAAI;QACF;AACd;AACA;AACA;AACA;QACeA,IAAI,CAAC6D,MAAM,CAAEC,KAAK,EACvB;UACAjE,UAAU,CAAC;YACTyB,iBAAiB,EAAE;UACrB,CAAC,EAAE,IAAI,EAAEtB,IAAI,CAAC;QAChB;MACF,CAAC;MAEDzB,gBAAgBA,CAAEyB,IAAI,EAAE;QACtB,IAAI,CAACyD,SAAS,CAAC,kBAAkB,CAAC,EAAE;UAClC;QACF;QAEA5D,UAAU,CAAC;UACTyB,iBAAiB,EAAE,IAAI;UACvBV,QAAQ,EAAE;QACZ,CAAC,EAAE,IAAI,EAAE,yCAA2CZ,IAAI,CAAC8D,KAAM,CAAC;MAClE;IACF,CAAC;EACH,CAAC;EACDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,QAAQ,EAAE,kBAAkB;MAC5BhD,WAAW,EAAE,wBAAwB;MACrCiD,WAAW,EAAE,IAAI;MACjBC,GAAG,EAAE;IACP,CAAC;IAEDC,OAAO,EAAE,MAAM;IAEfC,QAAQ,EAAE;MACRC,YAAY,EAAE;IAChB,CAAC;IAEDC,MAAM,EAAE,CACN7H,cAAc,CACf;IAEDI,IAAI,EAAE;EACR;AACF,CAAC;AAAA0H,MAAA,CAAAlF,OAAA,GAAAA,OAAA,CAAA7C,OAAA"}
1
+ {"version":3,"file":"requireJsdoc.js","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","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","exports","create","sourceCode","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","node","some","ctxt","count","underMinLine","_sourceCode$getText$m","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n getSettings,\n} from '../iterateJsdoc.js';\nimport jsdocUtils from '../jsdocUtils.js';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/** @type {import('json-schema').JSONSchema4} */\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\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\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\n // 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 /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\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 /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n // istanbul ignore next -- Fallback to deprecated method\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n require: requireOption,\n contexts,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\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 } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (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 description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\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 = /** @type {import('eslint').Rule.ReportFixer} */ (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 /** @type {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Decorator} */\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 /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\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(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\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 /**\n * @param {string} prop\n * @returns {boolean}\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) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (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) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (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, /** @type {import('eslint').Rule.Node} */ (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/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\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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"}
@@ -9,6 +9,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
9
9
  /**
10
10
  * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn
11
11
  */
12
+
12
13
  /**
13
14
  * @param {string[]} desiredRoots
14
15
  * @param {number} currentIndex