eslint-plugin-jsdoc 39.3.5 → 39.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +273 -52
  2. package/dist/WarnSettings.js +0 -5
  3. package/dist/WarnSettings.js.map +1 -1
  4. package/dist/alignTransform.js +69 -61
  5. package/dist/alignTransform.js.map +1 -1
  6. package/dist/bin/generateRule.js +7 -26
  7. package/dist/bin/generateRule.js.map +1 -1
  8. package/dist/defaultTagOrder.js +30 -14
  9. package/dist/defaultTagOrder.js.map +1 -1
  10. package/dist/exportParser.js +34 -143
  11. package/dist/exportParser.js.map +1 -1
  12. package/dist/generateRule.js +7 -26
  13. package/dist/generateRule.js.map +1 -1
  14. package/dist/getDefaultTagStructureForMode.js +189 -93
  15. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  16. package/dist/index.js +0 -51
  17. package/dist/index.js.map +1 -1
  18. package/dist/iterateJsdoc.js +44 -207
  19. package/dist/iterateJsdoc.js.map +1 -1
  20. package/dist/jsdocUtils.js +72 -221
  21. package/dist/jsdocUtils.js.map +1 -1
  22. package/dist/rules/checkAccess.js +0 -8
  23. package/dist/rules/checkAccess.js.map +1 -1
  24. package/dist/rules/checkAlignment.js +0 -8
  25. package/dist/rules/checkAlignment.js.map +1 -1
  26. package/dist/rules/checkExamples.js +25 -63
  27. package/dist/rules/checkExamples.js.map +1 -1
  28. package/dist/rules/checkIndentation.js +0 -7
  29. package/dist/rules/checkIndentation.js.map +1 -1
  30. package/dist/rules/checkLineAlignment.js +9 -30
  31. package/dist/rules/checkLineAlignment.js.map +1 -1
  32. package/dist/rules/checkParamNames.js +9 -47
  33. package/dist/rules/checkParamNames.js.map +1 -1
  34. package/dist/rules/checkPropertyNames.js +1 -18
  35. package/dist/rules/checkPropertyNames.js.map +1 -1
  36. package/dist/rules/checkSyntax.js +2 -5
  37. package/dist/rules/checkSyntax.js.map +1 -1
  38. package/dist/rules/checkTagNames.js +0 -18
  39. package/dist/rules/checkTagNames.js.map +1 -1
  40. package/dist/rules/checkTypes.js +17 -46
  41. package/dist/rules/checkTypes.js.map +1 -1
  42. package/dist/rules/checkValues.js +0 -18
  43. package/dist/rules/checkValues.js.map +1 -1
  44. package/dist/rules/emptyTags.js +6 -11
  45. package/dist/rules/emptyTags.js.map +1 -1
  46. package/dist/rules/implementsOnClasses.js +0 -6
  47. package/dist/rules/implementsOnClasses.js.map +1 -1
  48. package/dist/rules/matchDescription.js +0 -20
  49. package/dist/rules/matchDescription.js.map +1 -1
  50. package/dist/rules/matchName.js +2 -17
  51. package/dist/rules/matchName.js.map +1 -1
  52. package/dist/rules/multilineBlocks.js +10 -34
  53. package/dist/rules/multilineBlocks.js.map +1 -1
  54. package/dist/rules/newlineAfterDescription.js +0 -8
  55. package/dist/rules/newlineAfterDescription.js.map +1 -1
  56. package/dist/rules/noBadBlocks.js +2 -16
  57. package/dist/rules/noBadBlocks.js.map +1 -1
  58. package/dist/rules/noDefaults.js +0 -7
  59. package/dist/rules/noDefaults.js.map +1 -1
  60. package/dist/rules/noMissingSyntax.js +2 -16
  61. package/dist/rules/noMissingSyntax.js.map +1 -1
  62. package/dist/rules/noMultiAsterisks.js +2 -16
  63. package/dist/rules/noMultiAsterisks.js.map +1 -1
  64. package/dist/rules/noRestrictedSyntax.js +3 -9
  65. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  66. package/dist/rules/noTypes.js +0 -7
  67. package/dist/rules/noTypes.js.map +1 -1
  68. package/dist/rules/noUndefinedTypes.js +13 -34
  69. package/dist/rules/noUndefinedTypes.js.map +1 -1
  70. package/dist/rules/requireAsteriskPrefix.js +2 -26
  71. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  72. package/dist/rules/requireDescription.js +0 -17
  73. package/dist/rules/requireDescription.js.map +1 -1
  74. package/dist/rules/requireDescriptionCompleteSentence.js +13 -34
  75. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  76. package/dist/rules/requireExample.js +0 -9
  77. package/dist/rules/requireExample.js.map +1 -1
  78. package/dist/rules/requireFileOverview.js +0 -16
  79. package/dist/rules/requireFileOverview.js.map +1 -1
  80. package/dist/rules/requireHyphenBeforeParamDescription.js +2 -16
  81. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  82. package/dist/rules/requireJsdoc.js +13 -58
  83. package/dist/rules/requireJsdoc.js.map +1 -1
  84. package/dist/rules/requireParam.js +6 -53
  85. package/dist/rules/requireParam.js.map +1 -1
  86. package/dist/rules/requireParamDescription.js +0 -4
  87. package/dist/rules/requireParamDescription.js.map +1 -1
  88. package/dist/rules/requireParamName.js +0 -4
  89. package/dist/rules/requireParamName.js.map +1 -1
  90. package/dist/rules/requireParamType.js +0 -4
  91. package/dist/rules/requireParamType.js.map +1 -1
  92. package/dist/rules/requireProperty.js +0 -9
  93. package/dist/rules/requireProperty.js.map +1 -1
  94. package/dist/rules/requirePropertyDescription.js +0 -4
  95. package/dist/rules/requirePropertyDescription.js.map +1 -1
  96. package/dist/rules/requirePropertyName.js +0 -4
  97. package/dist/rules/requirePropertyName.js.map +1 -1
  98. package/dist/rules/requirePropertyType.js +0 -4
  99. package/dist/rules/requirePropertyType.js.map +1 -1
  100. package/dist/rules/requireReturns.js +13 -23
  101. package/dist/rules/requireReturns.js.map +1 -1
  102. package/dist/rules/requireReturnsCheck.js +12 -20
  103. package/dist/rules/requireReturnsCheck.js.map +1 -1
  104. package/dist/rules/requireReturnsDescription.js +0 -6
  105. package/dist/rules/requireReturnsDescription.js.map +1 -1
  106. package/dist/rules/requireReturnsType.js +0 -4
  107. package/dist/rules/requireReturnsType.js.map +1 -1
  108. package/dist/rules/requireThrows.js +6 -15
  109. package/dist/rules/requireThrows.js.map +1 -1
  110. package/dist/rules/requireYields.js +13 -29
  111. package/dist/rules/requireYields.js.map +1 -1
  112. package/dist/rules/requireYieldsCheck.js +8 -29
  113. package/dist/rules/requireYieldsCheck.js.map +1 -1
  114. package/dist/rules/sortTags.js +17 -30
  115. package/dist/rules/sortTags.js.map +1 -1
  116. package/dist/rules/tagLines.js +0 -26
  117. package/dist/rules/tagLines.js.map +1 -1
  118. package/dist/rules/validTypes.js +22 -53
  119. package/dist/rules/validTypes.js.map +1 -1
  120. package/dist/tagNames.js +7 -4
  121. package/dist/tagNames.js.map +1 -1
  122. package/dist/utils/hasReturnValue.js +22 -66
  123. package/dist/utils/hasReturnValue.js.map +1 -1
  124. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"iterateJsdoc.js","names":["rewireSpecs","seedTokens","util","globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","ignoreReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","commentStringify","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","length","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","getFirstLine","firstLine","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","getJSDocComment","parseComment","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","indnt","charAt","repeat","jsdc","iterateAllJsdocs","contexts","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","commentHandler","reducedNode","getReducedASTNode","has","nonComment","add","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"sources":["../src/iterateJsdoc.js"],"sourcesContent":["import {\n getReducedASTNode,\n getJSDocComment,\n commentHandler,\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n util,\n} from 'comment-parser';\nimport jsdocUtils from './jsdocUtils';\n\nconst {\n rewireSpecs,\n seedTokens,\n} = util;\n\n// todo: Change these `any` types once importing types properly.\n\n/**\n * Should use ESLint rule's typing.\n *\n * @typedef {any} EslintRuleMeta\n */\n\n/**\n * A plain object for tracking state as needed by rules across iterations.\n *\n * @typedef {any} StateObject\n */\n\n/**\n * The Node AST as supplied by the parser.\n *\n * @typedef {any} Node\n */\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {\n tagNamePreference,\n mode,\n}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({\n tagName,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n ignoreReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag([\n 'callback', 'function', 'func', 'method',\n ]);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {\n end,\n lineEnd,\n postDelimiter,\n tag,\n postTag,\n name,\n type,\n description,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({\n tokens: {\n description,\n tag,\n end,\n },\n }, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description || (descriptions.length ? '' : '\\n'));\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n for (const [\n idx,\n src,\n ] of tag.source.entries()) {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n }\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [\n {\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n },\n ];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({\n tokens: {\n tag,\n end,\n },\n }) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n\n // Todo: Once rewiring of tags may be fixed in comment-parser to reflect missing tags,\n // this step should be added here (so that, e.g., if accessing `jsdoc.tags`,\n // such as to add a new tag, the correct information will be available)\n };\n\n utils.addTag = (\n targetTagName,\n number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? jsdoc.source.findIndex(({\n tokens: {\n tag,\n },\n }) => {\n return tag;\n }) - 1) + 1,\n tokens = {},\n ) => {\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n ...tokens,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.getFirstLine = () => {\n let firstLine;\n for (const {\n number,\n tokens: {\n tag,\n },\n } of jsdoc.source) {\n if (tag) {\n firstLine = number;\n break;\n }\n }\n\n return firstLine;\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n for (const prop of [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ]) {\n tokens[prop] = '';\n }\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n\n const makeLines = () => {\n return Array.from({\n length: numLines,\n }, makeLine);\n };\n\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.makeMultiline = () => {\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n postDelimiter,\n description,\n lineEnd,\n tag,\n name,\n type,\n } = tokens;\n\n let {\n tokens: {\n postName,\n postTag,\n postType,\n },\n } = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n [\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({\n tagName,\n });\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({\n tagName,\n skipReportingBlockedTag = false,\n allowObjectReturn = false,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n ignoreReplacesDocs !== false &&\n (utils.hasTag('ignore') || utils.classHasTag('ignore')) ||\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag([\n 'augments', 'extends',\n ]) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : [\n 'inheritdoc',\n ],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n for (const method of [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {\n otherMode: true,\n } : false;\n };\n }\n\n for (const method of [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {\n otherMode: false,\n };\n };\n }\n\n for (const method of [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ]) {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n }\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if ([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {\n tags,\n } = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [\n ...ancestors, node,\n ].reverse().find((parent) => {\n return parent && [\n 'ClassDeclaration', 'ClassExpression',\n ].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n return parseComment(classJsdocNode, '');\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(matchingJsdocTag, targetTagName);\n }\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable canonical/sort-keys */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`,\n // `require-returns`, `require-throw`, `require-yields`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n ignoreReplacesDocs: context.settings.jsdoc?.ignoreReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable canonical/sort-keys */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {\n column: 0,\n line: lineNumber,\n },\n start: {\n column: 0,\n line: lineNumber,\n },\n };\n\n // Todo: Remove ignore once `check-examples` can be restored for ESLint 8+\n // istanbul ignore if\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/* eslint-disable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: Node | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n/* eslint-enable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (\n utils.hasTag('private') ||\n jsdoc.tags\n .filter(({\n tag,\n }) => {\n return tag === 'access';\n })\n .some(({\n description,\n }) => {\n return description === 'private';\n })\n )\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, '');\n\n return [\n indnt, jsdc,\n ];\n};\n\n/**\n *\n * @typedef {{node: Node, state: StateObject}} NonCommentArgs\n */\n\n/**\n * Our internal dynamic set of utilities.\n *\n * @todo Document\n * @typedef {any} Utils\n */\n\n/**\n * @typedef {object} RuleConfig\n * @property {EslintRuleMeta} meta ESLint rule meta\n * @property {import('./jsdocUtils').DefaultContexts} [contextDefaults] Any default contexts\n * @property {true} [contextSelected] Whether to force a `contexts` check\n * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default\n * regardless of context\n * @property {(context, state: StateObject, utils: Utils) => void} [exit] Handler to be executed\n * upon exiting iteration of program AST\n * @property {(NonCommentArgs) => void} [nonComment] Handler to be executed if rule wishes\n * to be supplied nodes without comments\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig The rule's configuration\n * @param contexts The `contexts` containing relevant `comment` info.\n * @param {boolean} additiveCommentContexts If true, will have a separate\n * iteration for each matching comment context. Otherwise, will iterate\n * once if there is a single matching comment context.\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveCommentContexts) => {\n const trackedJsdocs = new Set();\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n for (const jsdocNode of jsdocNodes) {\n if (!(/^\\/\\*\\*\\s/u).test(sourceCode.getText(jsdocNode))) {\n continue;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveCommentContexts) {\n for (const [\n idx,\n {\n comment,\n },\n ] of contexts.entries()) {\n if (comment && handler(comment, jsdoc) === false) {\n continue;\n }\n\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n continue;\n }\n\n let lastComment;\n let lastIndex;\n // eslint-disable-next-line no-loop-func\n if (contexts && contexts.every(({\n comment,\n }, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n continue;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.has(commentNode)) {\n return;\n }\n\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.add(commentNode);\n callIterator(context, node, [\n commentNode,\n ], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.has(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {\n lines,\n } = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n // eslint-disable-next-line unicorn/prefer-export-from -- Avoid experimental parser\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || ![\n 'problem', 'suggestion', 'layout',\n ].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {\n ...obj,\n context: 'any',\n };\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n if (!jsdocNode) {\n return;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n for (const prop of [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ]) {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n }\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"iterateJsdoc.js","names":["rewireSpecs","seedTokens","util","globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","ignoreReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","commentStringify","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","length","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","getFirstLine","firstLine","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","getJSDocComment","parseComment","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","indnt","charAt","repeat","jsdc","iterateAllJsdocs","contexts","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","commentHandler","reducedNode","getReducedASTNode","has","nonComment","add","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"sources":["../src/iterateJsdoc.js"],"sourcesContent":["import {\n getReducedASTNode,\n getJSDocComment,\n commentHandler,\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n util,\n} from 'comment-parser';\nimport jsdocUtils from './jsdocUtils';\n\nconst {\n rewireSpecs,\n seedTokens,\n} = util;\n\n// todo: Change these `any` types once importing types properly.\n\n/**\n * Should use ESLint rule's typing.\n *\n * @typedef {any} EslintRuleMeta\n */\n\n/**\n * A plain object for tracking state as needed by rules across iterations.\n *\n * @typedef {any} StateObject\n */\n\n/**\n * The Node AST as supplied by the parser.\n *\n * @typedef {any} Node\n */\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {\n tagNamePreference,\n mode,\n}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({\n tagName,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n ignoreReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag([\n 'callback', 'function', 'func', 'method',\n ]);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {\n end,\n lineEnd,\n postDelimiter,\n tag,\n postTag,\n name,\n type,\n description,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({\n tokens: {\n description,\n tag,\n end,\n },\n }, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description || (descriptions.length ? '' : '\\n'));\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n for (const [\n idx,\n src,\n ] of tag.source.entries()) {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n }\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [\n {\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n },\n ];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({\n tokens: {\n tag,\n end,\n },\n }) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n\n // Todo: Once rewiring of tags may be fixed in comment-parser to reflect missing tags,\n // this step should be added here (so that, e.g., if accessing `jsdoc.tags`,\n // such as to add a new tag, the correct information will be available)\n };\n\n utils.addTag = (\n targetTagName,\n number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? jsdoc.source.findIndex(({\n tokens: {\n tag,\n },\n }) => {\n return tag;\n }) - 1) + 1,\n tokens = {},\n ) => {\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n ...tokens,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.getFirstLine = () => {\n let firstLine;\n for (const {\n number,\n tokens: {\n tag,\n },\n } of jsdoc.source) {\n if (tag) {\n firstLine = number;\n break;\n }\n }\n\n return firstLine;\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n for (const prop of [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ]) {\n tokens[prop] = '';\n }\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n\n const makeLines = () => {\n return Array.from({\n length: numLines,\n }, makeLine);\n };\n\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.makeMultiline = () => {\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n postDelimiter,\n description,\n lineEnd,\n tag,\n name,\n type,\n } = tokens;\n\n let {\n tokens: {\n postName,\n postTag,\n postType,\n },\n } = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n [\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({\n tagName,\n });\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({\n tagName,\n skipReportingBlockedTag = false,\n allowObjectReturn = false,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n ignoreReplacesDocs !== false &&\n (utils.hasTag('ignore') || utils.classHasTag('ignore')) ||\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag([\n 'augments', 'extends',\n ]) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : [\n 'inheritdoc',\n ],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n for (const method of [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {\n otherMode: true,\n } : false;\n };\n }\n\n for (const method of [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {\n otherMode: false,\n };\n };\n }\n\n for (const method of [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ]) {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n }\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if ([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {\n tags,\n } = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [\n ...ancestors, node,\n ].reverse().find((parent) => {\n return parent && [\n 'ClassDeclaration', 'ClassExpression',\n ].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n return parseComment(classJsdocNode, '');\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(matchingJsdocTag, targetTagName);\n }\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable canonical/sort-keys */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`,\n // `require-returns`, `require-throw`, `require-yields`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n ignoreReplacesDocs: context.settings.jsdoc?.ignoreReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable canonical/sort-keys */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {\n column: 0,\n line: lineNumber,\n },\n start: {\n column: 0,\n line: lineNumber,\n },\n };\n\n // Todo: Remove ignore once `check-examples` can be restored for ESLint 8+\n // istanbul ignore if\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/* eslint-disable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: Node | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n/* eslint-enable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (\n utils.hasTag('private') ||\n jsdoc.tags\n .filter(({\n tag,\n }) => {\n return tag === 'access';\n })\n .some(({\n description,\n }) => {\n return description === 'private';\n })\n )\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, '');\n\n return [\n indnt, jsdc,\n ];\n};\n\n/**\n *\n * @typedef {{node: Node, state: StateObject}} NonCommentArgs\n */\n\n/**\n * Our internal dynamic set of utilities.\n *\n * @todo Document\n * @typedef {any} Utils\n */\n\n/**\n * @typedef {object} RuleConfig\n * @property {EslintRuleMeta} meta ESLint rule meta\n * @property {import('./jsdocUtils').DefaultContexts} [contextDefaults] Any default contexts\n * @property {true} [contextSelected] Whether to force a `contexts` check\n * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default\n * regardless of context\n * @property {(context, state: StateObject, utils: Utils) => void} [exit] Handler to be executed\n * upon exiting iteration of program AST\n * @property {(NonCommentArgs) => void} [nonComment] Handler to be executed if rule wishes\n * to be supplied nodes without comments\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig The rule's configuration\n * @param contexts The `contexts` containing relevant `comment` info.\n * @param {boolean} additiveCommentContexts If true, will have a separate\n * iteration for each matching comment context. Otherwise, will iterate\n * once if there is a single matching comment context.\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveCommentContexts) => {\n const trackedJsdocs = new Set();\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n for (const jsdocNode of jsdocNodes) {\n if (!(/^\\/\\*\\*\\s/u).test(sourceCode.getText(jsdocNode))) {\n continue;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveCommentContexts) {\n for (const [\n idx,\n {\n comment,\n },\n ] of contexts.entries()) {\n if (comment && handler(comment, jsdoc) === false) {\n continue;\n }\n\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n continue;\n }\n\n let lastComment;\n let lastIndex;\n // eslint-disable-next-line no-loop-func\n if (contexts && contexts.every(({\n comment,\n }, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n continue;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.has(commentNode)) {\n return;\n }\n\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.add(commentNode);\n callIterator(context, node, [\n commentNode,\n ], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.has(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {\n lines,\n } = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n // eslint-disable-next-line unicorn/prefer-export-from -- Avoid experimental parser\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {RuleConfig} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || ![\n 'problem', 'suggestion', 'layout',\n ].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {\n ...obj,\n context: 'any',\n };\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n if (!jsdocNode) {\n return;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n for (const prop of [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ]) {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n }\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"mappings":"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"}