blob: 31c118c3f652a624149587bd1f582d48efd2dd23 [file] [log] [blame]
{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["globalState","Map","skipSeeLink","parser","str","data","tag","match","parseComment","commentNode","indent","trim","value","parsers","commentParser","PARSERS","parse_tag","includes","parse_type","parse_name","errors","length","result","description","undefined","source","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","getPreferredTagNameObject","tagName","ret","jsdocUtils","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","type","isVirtualFunction","hasATag","stringify","tagBlock","getIndent","slice","reportJSDoc","msg","handler","fixer","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocTagsDeep","name","getJsdocTags","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamePosition","tagMightHaveEitherTypeOrNamePosition","tagMustHaveNamePosition","tagMightHaveNamePosition","tagMustHaveTypePosition","tagMightHaveTypePosition","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","getClassJsdoc","classNode","classJsdocNode","repeat","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","getSettings","ignorePrivate","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterate","ruleConfig","lines","iterator","state","sourceLine","charAt","noTrim","checkPrivate","some","iterateAllJsdocs","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","exit","create","reducedNode","comment","nonComment","push","allComments","getAllComments","untrackedJSdoc","meta","checkFile","iterateJsdoc","metaType","TypeError","contexts","contextDefaults","enforcedContexts","checkJsdoc","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment, {getReducedASTNode} from './eslint/getJSDocComment';\n\nconst globalState = new Map();\n\nconst skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/\\{@link.+?\\}/u)) {\n return null;\n }\n\n return parser(str, data);\n };\n};\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @param {boolean} [trim=true]\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(\n (str, data) => {\n if (['default', 'defaultvalue'].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_type(str, data);\n },\n ),\n skipSeeLink(\n (str, data) => {\n if ([\n 'example', 'return', 'returns', 'throws', 'exception',\n 'access', 'version', 'since', 'license', 'author',\n 'default', 'defaultvalue',\n ].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^ ?((.|\\s)+)?/u);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\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.getPreferredTagNameObject = ({tagName}) => {\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) => {\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 implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node && node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node && node.parent.kind === 'set';\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getJsdocTags = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTags(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\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 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 = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamePosition = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamePosition(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamePosition = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamePosition(mode, tagName);\n };\n\n utils.tagMustHaveNamePosition = (tagName) => {\n return jsdocUtils.tagMustHaveNamePosition(tagName);\n };\n\n utils.tagMightHaveNamePosition = (tagName) => {\n return jsdocUtils.tagMightHaveNamePosition(tagName);\n };\n\n utils.tagMustHaveTypePosition = (tagName) => {\n return jsdocUtils.tagMustHaveTypePosition(mode, tagName);\n };\n\n utils.tagMightHaveTypePosition = (tagName) => {\n return jsdocUtils.tagMightHaveTypePosition(mode, tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(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 tags = _.get(context, 'options[0].tags');\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].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 const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\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 const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n const settings = {\n // All rules\n ignorePrivate: Boolean(_.get(context, 'settings.jsdoc.ignorePrivate')),\n maxLines: Number(_.get(context, 'settings.jsdoc.maxLines', 1)),\n minLines: Number(_.get(context, 'settings.jsdoc.minLines', 0)),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: _.get(context, 'settings.jsdoc.tagNamePreference') || {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: _.get(context, 'settings.jsdoc.preferredTypes') || {},\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n overrideReplacesDocs: _.get(context, 'settings.jsdoc.overrideReplacesDocs'),\n implementsReplacesDocs: _.get(context, 'settings.jsdoc.implementsReplacesDocs'),\n augmentsExtendsReplacesDocs: _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs'),\n\n // Many rules, e.g., `check-tag-names`\n mode: _.get(context, 'settings.jsdoc.mode') || 'jsdoc',\n };\n /* eslint-enable sort-keys-fix/sort-keys-fix */\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 const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\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/**\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: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdoc = parseComment(jsdocNode, indent, !ruleConfig.noTrim);\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 );\n\n if (\n settings.ignorePrivate &&\n !ruleConfig.checkPrivate &&\n (utils.hasTag('private') || _.filter(jsdoc.tags, {\n tag: 'access',\n }).some(({description}) => {\n return description === 'private';\n }))\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\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 {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n const trackedJsdocs = [];\n\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n iterate(\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\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 const settings = getSettings(context);\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 comment = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(comment)) {\n return;\n }\n if (!comment) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(comment);\n callIterator(context, node, [comment], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(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 {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = 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 parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\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 let contexts;\n if (ruleConfig.contextDefaults) {\n contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n if (contexts.includes('any')) {\n return iterateAllJsdocs(iterator, ruleConfig).create(context);\n }\n }\n\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n const {lines} = sourceCode;\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n iterate(\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n );\n };\n\n if (ruleConfig.contextDefaults) {\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}