eslint-plugin-jsdoc 15.11.0 → 15.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","report","settings","sourceCode","scopeManager","utils","globalScope","options","definedTypes","definedPreferredTypes","preferredTypes","Object","keys","length","_","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","templateTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","jsdocUtils","parseClosureTemplateTag","allDefinedTypes","variables","variable","__options","nodejsScope","isModule","childScopes","reduce","arr","push","jsdocTags","filterTags","tagMightHaveType","forEach","parsedType","type","error","includes","markVariableAsUsed","iterateAllJsdocs","meta","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse as parseType, traverse} from 'jsdoctypeparser';\nimport iterateJsdoc, {parseComment} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'symbol', 'boolean', 'object',\n 'function',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n sourceCode: {scopeManager},\n utils,\n}) => {\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes} = settings;\n if (Object.keys(preferredTypes).length) {\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTypes = _.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 if (!preferredType) {\n return undefined;\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 }).filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = _(context.getAllComments())\n .filter((comment) => {\n return comment.value.startsWith('*');\n })\n .map(parseComment)\n .flatMap((doc) => {\n return (doc.tags || []).filter(({tag}) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n })\n .value();\n\n let templateTags = utils.getPresentTags('template');\n const classJsdoc = utils.getClassJsdoc();\n if (classJsdoc && classJsdoc.tags) {\n templateTags = templateTags.concat(\n classJsdoc.tags\n .filter((tag) => {\n return tag.tag === 'template';\n })\n );\n }\n\n const closureGenericTypes = _.flatMap(templateTags, (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n });\n\n const allDefinedTypes = globalScope.variables.map((variable) => {\n return variable.name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n\n // This covers `commonjs` as well as `node`\n scopeManager.__options.nodejsScope ||\n scopeManager.isModule() ?\n globalScope.childScopes.reduce((arr, {variables}) => {\n // Flatten\n arr.push(...variables);\n\n return arr;\n }, []).map(({name}) => {\n return name;\n }) : []\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(closureGenericTypes);\n\n const jsdocTags = utils.filterTags((tag) => {\n return utils.tagMightHaveType(tag.tag);\n });\n\n jsdocTags.forEach((tag) => {\n let parsedType;\n\n try {\n parsedType = parseType(tag.type);\n } catch (error) {\n // On syntax error, will be handled by valid-types.\n return;\n }\n\n traverse(parsedType, ({type, name}) => {\n if (type === 'NAME') {\n if (!allDefinedTypes.includes(name)) {\n report(`The type '${name}' is undefined.`, null, tag);\n } else if (!_.includes(extraTypes, name)) {\n context.markVariableAsUsed(name);\n }\n }\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noUndefinedTypes.js"}
1
+ {"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","report","settings","sourceCode","scopeManager","utils","globalScope","options","definedTypes","definedPreferredTypes","preferredTypes","Object","keys","length","_","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","templateTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","jsdocUtils","parseClosureTemplateTag","allDefinedTypes","variables","variable","__options","nodejsScope","isModule","childScopes","reduce","arr","push","jsdocTags","filterTags","tagMightHaveType","forEach","parsedType","type","error","includes","markVariableAsUsed","iterateAllJsdocs","meta","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse as parseType, traverse} from 'jsdoctypeparser';\nimport iterateJsdoc, {parseComment} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'symbol', 'boolean', 'object',\n 'function',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n sourceCode: {scopeManager},\n utils,\n}) => {\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes} = settings;\n if (Object.keys(preferredTypes).length) {\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTypes = _.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 if (!preferredType) {\n return undefined;\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 }).filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = _(context.getAllComments())\n .filter((comment) => {\n return comment.value.startsWith('*');\n })\n .map(parseComment)\n .flatMap((doc) => {\n return (doc.tags || []).filter(({tag}) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n })\n .value();\n\n let templateTags = utils.getPresentTags('template');\n const classJsdoc = utils.getClassJsdoc();\n if (classJsdoc && classJsdoc.tags) {\n templateTags = templateTags.concat(\n classJsdoc.tags\n .filter((tag) => {\n return tag.tag === 'template';\n }),\n );\n }\n\n const closureGenericTypes = _.flatMap(templateTags, (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n });\n\n const allDefinedTypes = globalScope.variables.map((variable) => {\n return variable.name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n\n // This covers `commonjs` as well as `node`\n scopeManager.__options.nodejsScope ||\n scopeManager.isModule() ?\n globalScope.childScopes.reduce((arr, {variables}) => {\n // Flatten\n arr.push(...variables);\n\n return arr;\n }, []).map(({name}) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(closureGenericTypes);\n\n const jsdocTags = utils.filterTags((tag) => {\n return utils.tagMightHaveType(tag.tag);\n });\n\n jsdocTags.forEach((tag) => {\n let parsedType;\n\n try {\n parsedType = parseType(tag.type);\n } catch (error) {\n // On syntax error, will be handled by valid-types.\n return;\n }\n\n traverse(parsedType, ({type, name}) => {\n if (type === 'NAME') {\n if (!allDefinedTypes.includes(name)) {\n report(`The type '${name}' is undefined.`, null, tag);\n } else if (!_.includes(extraTypes, name)) {\n context.markVariableAsUsed(name);\n }\n }\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noUndefinedTypes.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","options","descriptionStyle","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","functionExamples","filter","tags","tag","forEach","example","name","contextDefaults","meta","schema","additionalProperties","properties","contexts","items","type","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n if (checkDescription(jsdoc.description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n report('Missing JSDoc block description.');\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`\n );\n\n return;\n }\n\n functionExamples.forEach((example) => {\n if (!checkDescription(`${example.name} ${example.description}`)) {\n report(`Missing JSDoc @${targetTagName} description.`);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
1
+ {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","options","descriptionStyle","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","functionExamples","filter","tags","tag","forEach","example","name","contextDefaults","meta","schema","additionalProperties","properties","contexts","items","type","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n if (checkDescription(jsdoc.description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n report('Missing JSDoc block description.');\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n functionExamples.forEach((example) => {\n if (!checkDescription(`${example.name} ${example.description}`)) {\n report(`Missing JSDoc @${targetTagName} description.`);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescription.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","contexts","items","type","exemptEmptyFunctions","default","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","context","baseObject","option","key","_","has","options","getOptions","baseObj","get","Object","keys","reduce","obj","prop","opt","meta","doc","category","description","recommended","url","fixable","messages","missingJsDoc","schema","create","sourceCode","getSourceCode","requireOption","settings","checkJsDoc","node","jsDocNode","functionParameterNames","jsdocUtils","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","indent","getIndent","insertion","repeat","slice","baseNode","includes","parent","insertTextBefore","report","loc","end","start","messageId","Boolean","initModuleExports","initWindow","parseResult","exportParser","parse","ast","exported","isExported","assign","getContextObject","enforcedContexts","value"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport jsdocUtils from '../jsdocUtils';\nimport exportParser from '../exportParser';\nimport getJSDocComment from '../eslint/getJSDocComment';\nimport warnRemovedSettings from '../warnRemovedSettings';\nimport {getSettings} from '../iterateJsdoc';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n return {\n exemptEmptyFunctions: context.options[0] ? context.options[0].exemptEmptyFunctions : false,\n publicOnly: ((baseObj) => {\n const publicOnly = _.get(context, 'options[0].publicOnly');\n if (!publicOnly) {\n return false;\n }\n\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'require', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\n/* eslint-disable sort-keys */\nexport default {\n meta: {\n doc: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n create (context) {\n warnRemovedSettings(context, 'require-jsdoc');\n\n const sourceCode = context.getSourceCode();\n\n const {require: requireOption, publicOnly, exemptEmptyFunctions} = getOptions(context);\n\n const settings = getSettings(context);\n\n const checkJsDoc = (node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n if (exemptEmptyFunctions) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node, context)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n const indent = jsdocUtils.getIndent(sourceCode);\n const insertion = `/**\\n${indent}*\\n${indent}*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n const baseNode = [\n 'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n ].includes(node.parent && node.parent.type) ? node.parent : node;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix,\n messageId: 'missingJsDoc',\n node,\n loc,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(_.get(publicOnly, 'ancestorsOnly', false)),\n esm: Boolean(_.get(publicOnly, 'esm', true)),\n initModuleExports: Boolean(_.get(publicOnly, 'cjs', true)),\n initWindow: Boolean(_.get(publicOnly, 'window', false)),\n };\n const parseResult = exportParser.parse(sourceCode.ast, node, opt);\n const exported = exportParser.isExported(node, parseResult, opt);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n // eslint-disable-next-line fp/no-mutating-assign\n return Object.assign(\n jsdocUtils.getContextObject(jsdocUtils.enforcedContexts(context, []), checkJsDoc),\n {\n ArrowFunctionExpression (node) {\n if (!requireOption.ArrowFunctionExpression) {\n return;\n }\n\n if (!['VariableDeclarator', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassDeclaration (node) {\n if (!requireOption.ClassDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassExpression (node) {\n if (!requireOption.ClassExpression) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionDeclaration (node) {\n if (!requireOption.FunctionDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionExpression (node) {\n if (requireOption.MethodDefinition && node.parent.type === 'MethodDefinition') {\n checkJsDoc(node);\n\n return;\n }\n\n if (!requireOption.FunctionExpression) {\n return;\n }\n\n if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n checkJsDoc(node);\n } else if (node.parent.type === 'Property' && node === node.parent.value) {\n checkJsDoc(node);\n }\n },\n }\n );\n },\n};\n"],"file":"requireJsdoc.js"}
1
+ {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","contexts","items","type","exemptEmptyFunctions","default","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","context","baseObject","option","key","_","has","options","getOptions","baseObj","get","Object","keys","reduce","obj","prop","opt","meta","doc","category","description","recommended","url","fixable","messages","missingJsDoc","schema","create","sourceCode","getSourceCode","requireOption","settings","checkJsDoc","node","jsDocNode","functionParameterNames","jsdocUtils","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","indent","getIndent","insertion","repeat","slice","baseNode","includes","parent","insertTextBefore","report","loc","end","start","messageId","Boolean","initModuleExports","initWindow","parseResult","exportParser","parse","ast","exported","isExported","assign","getContextObject","enforcedContexts","value"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,cAAc,GAAG;AACrBC,EAAAA,oBAAoB,EAAE,KADD;AAErBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,KAAK,EAAE;AACLC,QAAAA,IAAI,EAAE;AADD,OADC;AAIRA,MAAAA,IAAI,EAAE;AAJE,KADA;AAOVC,IAAAA,oBAAoB,EAAE;AACpBC,MAAAA,OAAO,EAAE,KADW;AAEpBF,MAAAA,IAAI,EAAE;AAFc,KAPZ;AAWVG,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,CACL;AACEF,QAAAA,OAAO,EAAE,KADX;AAEEF,QAAAA,IAAI,EAAE;AAFR,OADK,EAKL;AACEJ,QAAAA,oBAAoB,EAAE,KADxB;AAEEM,QAAAA,OAAO,EAAE,EAFX;AAGEL,QAAAA,UAAU,EAAE;AACVQ,UAAAA,aAAa,EAAE;AACbL,YAAAA,IAAI,EAAE;AADO,WADL;AAIVM,UAAAA,GAAG,EAAE;AACHN,YAAAA,IAAI,EAAE;AADH,WAJK;AAOVO,UAAAA,GAAG,EAAE;AACHP,YAAAA,IAAI,EAAE;AADH,WAPK;AAUVQ,UAAAA,MAAM,EAAE;AACNR,YAAAA,IAAI,EAAE;AADA;AAVE,SAHd;AAiBEA,QAAAA,IAAI,EAAE;AAjBR,OALK;AADG,KAXF;AAsCVS,IAAAA,OAAO,EAAE;AACPb,MAAAA,oBAAoB,EAAE,KADf;AAEPM,MAAAA,OAAO,EAAE,EAFF;AAGPL,MAAAA,UAAU,EAAE;AACVa,QAAAA,uBAAuB,EAAE;AACvBR,UAAAA,OAAO,EAAE,KADc;AAEvBF,UAAAA,IAAI,EAAE;AAFiB,SADf;AAKVW,QAAAA,gBAAgB,EAAE;AAChBT,UAAAA,OAAO,EAAE,KADO;AAEhBF,UAAAA,IAAI,EAAE;AAFU,SALR;AASVY,QAAAA,eAAe,EAAE;AACfV,UAAAA,OAAO,EAAE,KADM;AAEfF,UAAAA,IAAI,EAAE;AAFS,SATP;AAaVa,QAAAA,mBAAmB,EAAE;AACnBX,UAAAA,OAAO,EAAE,IADU;AAEnBF,UAAAA,IAAI,EAAE;AAFa,SAbX;AAiBVc,QAAAA,kBAAkB,EAAE;AAClBZ,UAAAA,OAAO,EAAE,KADS;AAElBF,UAAAA,IAAI,EAAE;AAFY,SAjBV;AAqBVe,QAAAA,gBAAgB,EAAE;AAChBb,UAAAA,OAAO,EAAE,KADO;AAEhBF,UAAAA,IAAI,EAAE;AAFU;AArBR,OAHL;AA6BPA,MAAAA,IAAI,EAAE;AA7BC;AAtCC,GAFS;AAwErBA,EAAAA,IAAI,EAAE;AAxEe,CAAvB;;AA2EA,MAAMgB,SAAS,GAAG,CAACC,OAAD,EAAUC,UAAV,EAAsBC,MAAtB,EAA8BC,GAA9B,KAAsC;AACtD,MAAI,CAACC,gBAAEC,GAAF,CAAML,OAAN,EAAgB,cAAaE,MAAO,KAAIC,GAAI,GAA5C,CAAL,EAAsD;AACpD,WAAOF,UAAU,CAACrB,UAAX,CAAsBuB,GAAtB,EAA2BlB,OAAlC;AACD;;AAED,SAAOe,OAAO,CAACM,OAAR,CAAgB,CAAhB,EAAmBJ,MAAnB,EAA2BC,GAA3B,CAAP;AACD,CAND;;AAQA,MAAMI,UAAU,GAAIP,OAAD,IAAa;AAC9B,SAAO;AACLhB,IAAAA,oBAAoB,EAAEgB,OAAO,CAACM,OAAR,CAAgB,CAAhB,IAAqBN,OAAO,CAACM,OAAR,CAAgB,CAAhB,EAAmBtB,oBAAxC,GAA+D,KADhF;AAELE,IAAAA,UAAU,EAAE,CAAEsB,OAAD,IAAa;AACxB,YAAMtB,UAAU,GAAGkB,gBAAEK,GAAF,CAAMT,OAAN,EAAe,uBAAf,CAAnB;;AACA,UAAI,CAACd,UAAL,EAAiB;AACf,eAAO,KAAP;AACD;;AAED,aAAOwB,MAAM,CAACC,IAAP,CAAYH,OAAO,CAAC5B,UAApB,EAAgCgC,MAAhC,CAAuC,CAACC,GAAD,EAAMC,IAAN,KAAe;AAC3D,cAAMC,GAAG,GAAGhB,SAAS,CAACC,OAAD,EAAUQ,OAAV,EAAmB,YAAnB,EAAiCM,IAAjC,CAArB;AACAD,QAAAA,GAAG,CAACC,IAAD,CAAH,GAAYC,GAAZ;AAEA,eAAOF,GAAP;AACD,OALM,EAKJ,EALI,CAAP;AAMD,KAZW,EAYTnC,cAAc,CAACE,UAAf,CAA0BM,UAA1B,CAAqCC,KAArC,CAA2C,CAA3C,CAZS,CAFP;AAeLK,IAAAA,OAAO,EAAE,CAAEgB,OAAD,IAAa;AACrB,aAAOE,MAAM,CAACC,IAAP,CAAYH,OAAO,CAAC5B,UAApB,EAAgCgC,MAAhC,CAAuC,CAACC,GAAD,EAAMC,IAAN,KAAe;AAC3D,cAAMC,GAAG,GAAGhB,SAAS,CAACC,OAAD,EAAUQ,OAAV,EAAmB,SAAnB,EAA8BM,IAA9B,CAArB;AACAD,QAAAA,GAAG,CAACC,IAAD,CAAH,GAAYC,GAAZ;AAEA,eAAOF,GAAP;AACD,OALM,EAKJ,EALI,CAAP;AAMD,KAPQ,EAONnC,cAAc,CAACE,UAAf,CAA0BY,OAPpB;AAfJ,GAAP;AAwBD,CAzBD;AA2BA;;;eACe;AACbwB,EAAAA,IAAI,EAAE;AACJC,IAAAA,GAAG,EAAE;AACHC,MAAAA,QAAQ,EAAE,kBADP;AAEHC,MAAAA,WAAW,EAAE,wBAFV;AAGHC,MAAAA,WAAW,EAAE,MAHV;AAIHC,MAAAA,GAAG,EAAE;AAJF,KADD;AAQJC,IAAAA,OAAO,EAAE,MARL;AAUJC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,YAAY,EAAE;AADN,KAVN;AAcJC,IAAAA,MAAM,EAAE,CACN/C,cADM,CAdJ;AAkBJK,IAAAA,IAAI,EAAE;AAlBF,GADO;;AAqBb2C,EAAAA,MAAM,CAAE1B,OAAF,EAAW;AACf,sCAAoBA,OAApB,EAA6B,eAA7B;AAEA,UAAM2B,UAAU,GAAG3B,OAAO,CAAC4B,aAAR,EAAnB;;AAHe,wBAKoDrB,UAAU,CAACP,OAAD,CAL9D;AAAA,UAKC6B,aALD,eAKRrC,OALQ;AAAA,UAKgBN,UALhB,eAKgBA,UALhB;AAAA,UAK4BF,oBAL5B,eAK4BA,oBAL5B;;AAOf,UAAM8C,QAAQ,GAAG,+BAAY9B,OAAZ,CAAjB;;AAEA,UAAM+B,UAAU,GAAIC,IAAD,IAAU;AAC3B,YAAMC,SAAS,GAAG,8BAAgBN,UAAhB,EAA4BK,IAA5B,EAAkCF,QAAlC,CAAlB;;AAEA,UAAIG,SAAJ,EAAe;AACb;AACD;;AAED,UAAIjD,oBAAJ,EAA0B;AACxB,cAAMkD,sBAAsB,GAAGC,oBAAWC,yBAAX,CAAqCJ,IAArC,CAA/B;;AACA,YAAI,CAACE,sBAAsB,CAACG,MAAxB,IAAkC,CAACF,oBAAWG,cAAX,CAA0BN,IAA1B,EAAgChC,OAAhC,CAAvC,EAAiF;AAC/E;AACD;AACF;;AAED,YAAMuC,GAAG,GAAIC,KAAD,IAAW;AACrB;AACA,cAAMC,KAAK,GAAGX,QAAQ,CAACY,QAAT,KAAsB,CAAtB,IAA2BZ,QAAQ,CAACa,QAAT,IAAqB,CAAhD,GAAoD,CAApD,GAAwDb,QAAQ,CAACY,QAA/E;;AACA,cAAME,MAAM,GAAGT,oBAAWU,SAAX,CAAqBlB,UAArB,CAAf;;AACA,cAAMmB,SAAS,GAAI,QAAOF,MAAO,MAAKA,MAAO,KAAI,KAAKG,MAAL,CAAYN,KAAZ,CAAmB,GAAEG,MAAM,CAACI,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAoB,EAA1F;AACA,cAAMC,QAAQ,GAAG,CACf,0BADe,EACa,wBADb,EAEfC,QAFe,CAENlB,IAAI,CAACmB,MAAL,IAAenB,IAAI,CAACmB,MAAL,CAAYpE,IAFrB,IAE6BiD,IAAI,CAACmB,MAFlC,GAE2CnB,IAF5D;AAIA,eAAOQ,KAAK,CAACY,gBAAN,CAAuBH,QAAvB,EAAiCH,SAAjC,CAAP;AACD,OAVD;;AAYA,YAAMO,MAAM,GAAG,MAAM;AACnB,cAAMC,GAAG,GAAG;AACVC,UAAAA,GAAG,EAAEvB,IAAI,CAACsB,GAAL,CAASE,KAAT,GAAiB,CADZ;AAEVA,UAAAA,KAAK,EAAExB,IAAI,CAACsB,GAAL,CAASE;AAFN,SAAZ;AAIAxD,QAAAA,OAAO,CAACqD,MAAR,CAAe;AACbd,UAAAA,GADa;AAEbkB,UAAAA,SAAS,EAAE,cAFE;AAGbzB,UAAAA,IAHa;AAIbsB,UAAAA;AAJa,SAAf;AAMD,OAXD;;AAaA,UAAIpE,UAAJ,EAAgB;AACd,cAAM6B,GAAG,GAAG;AACV3B,UAAAA,aAAa,EAAEsE,OAAO,CAACtD,gBAAEK,GAAF,CAAMvB,UAAN,EAAkB,eAAlB,EAAmC,KAAnC,CAAD,CADZ;AAEVI,UAAAA,GAAG,EAAEoE,OAAO,CAACtD,gBAAEK,GAAF,CAAMvB,UAAN,EAAkB,KAAlB,EAAyB,IAAzB,CAAD,CAFF;AAGVyE,UAAAA,iBAAiB,EAAED,OAAO,CAACtD,gBAAEK,GAAF,CAAMvB,UAAN,EAAkB,KAAlB,EAAyB,IAAzB,CAAD,CAHhB;AAIV0E,UAAAA,UAAU,EAAEF,OAAO,CAACtD,gBAAEK,GAAF,CAAMvB,UAAN,EAAkB,QAAlB,EAA4B,KAA5B,CAAD;AAJT,SAAZ;;AAMA,cAAM2E,WAAW,GAAGC,sBAAaC,KAAb,CAAmBpC,UAAU,CAACqC,GAA9B,EAAmChC,IAAnC,EAAyCjB,GAAzC,CAApB;;AACA,cAAMkD,QAAQ,GAAGH,sBAAaI,UAAb,CAAwBlC,IAAxB,EAA8B6B,WAA9B,EAA2C9C,GAA3C,CAAjB;;AAEA,YAAIkD,QAAJ,EAAc;AACZZ,UAAAA,MAAM;AACP;AACF,OAbD,MAaO;AACLA,QAAAA,MAAM;AACP;AACF,KAvDD,CATe,CAkEf;;;AACA,WAAO3C,MAAM,CAACyD,MAAP,CACLhC,oBAAWiC,gBAAX,CAA4BjC,oBAAWkC,gBAAX,CAA4BrE,OAA5B,EAAqC,EAArC,CAA5B,EAAsE+B,UAAtE,CADK,EAEL;AACEtC,MAAAA,uBAAuB,CAAEuC,IAAF,EAAQ;AAC7B,YAAI,CAACH,aAAa,CAACpC,uBAAnB,EAA4C;AAC1C;AACD;;AAED,YAAI,CAAC,CAAC,oBAAD,EAAuB,0BAAvB,EAAmDyD,QAAnD,CAA4DlB,IAAI,CAACmB,MAAL,CAAYpE,IAAxE,CAAL,EAAoF;AAClF;AACD;;AAEDgD,QAAAA,UAAU,CAACC,IAAD,CAAV;AACD,OAXH;;AAaEtC,MAAAA,gBAAgB,CAAEsC,IAAF,EAAQ;AACtB,YAAI,CAACH,aAAa,CAACnC,gBAAnB,EAAqC;AACnC;AACD;;AAEDqC,QAAAA,UAAU,CAACC,IAAD,CAAV;AACD,OAnBH;;AAqBErC,MAAAA,eAAe,CAAEqC,IAAF,EAAQ;AACrB,YAAI,CAACH,aAAa,CAAClC,eAAnB,EAAoC;AAClC;AACD;;AAEDoC,QAAAA,UAAU,CAACC,IAAD,CAAV;AACD,OA3BH;;AA6BEpC,MAAAA,mBAAmB,CAAEoC,IAAF,EAAQ;AACzB,YAAI,CAACH,aAAa,CAACjC,mBAAnB,EAAwC;AACtC;AACD;;AAEDmC,QAAAA,UAAU,CAACC,IAAD,CAAV;AACD,OAnCH;;AAqCEnC,MAAAA,kBAAkB,CAAEmC,IAAF,EAAQ;AACxB,YAAIH,aAAa,CAAC/B,gBAAd,IAAkCkC,IAAI,CAACmB,MAAL,CAAYpE,IAAZ,KAAqB,kBAA3D,EAA+E;AAC7EgD,UAAAA,UAAU,CAACC,IAAD,CAAV;AAEA;AACD;;AAED,YAAI,CAACH,aAAa,CAAChC,kBAAnB,EAAuC;AACrC;AACD;;AAED,YAAI,CAAC,oBAAD,EAAuB,sBAAvB,EAA+C,0BAA/C,EAA2EqD,QAA3E,CAAoFlB,IAAI,CAACmB,MAAL,CAAYpE,IAAhG,CAAJ,EAA2G;AACzGgD,UAAAA,UAAU,CAACC,IAAD,CAAV;AACD,SAFD,MAEO,IAAIA,IAAI,CAACmB,MAAL,CAAYpE,IAAZ,KAAqB,UAArB,IAAmCiD,IAAI,KAAKA,IAAI,CAACmB,MAAL,CAAYmB,KAA5D,EAAmE;AACxEvC,UAAAA,UAAU,CAACC,IAAD,CAAV;AACD;AACF;;AArDH,KAFK,CAAP;AA0DD;;AAlJY,C","sourcesContent":["import _ from 'lodash';\nimport jsdocUtils from '../jsdocUtils';\nimport exportParser from '../exportParser';\nimport getJSDocComment from '../eslint/getJSDocComment';\nimport warnRemovedSettings from '../warnRemovedSettings';\nimport {getSettings} from '../iterateJsdoc';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n return {\n exemptEmptyFunctions: context.options[0] ? context.options[0].exemptEmptyFunctions : false,\n publicOnly: ((baseObj) => {\n const publicOnly = _.get(context, 'options[0].publicOnly');\n if (!publicOnly) {\n return false;\n }\n\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'require', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\n/* eslint-disable sort-keys */\nexport default {\n meta: {\n doc: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n create (context) {\n warnRemovedSettings(context, 'require-jsdoc');\n\n const sourceCode = context.getSourceCode();\n\n const {require: requireOption, publicOnly, exemptEmptyFunctions} = getOptions(context);\n\n const settings = getSettings(context);\n\n const checkJsDoc = (node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n if (exemptEmptyFunctions) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node, context)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n const indent = jsdocUtils.getIndent(sourceCode);\n const insertion = `/**\\n${indent}*\\n${indent}*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n const baseNode = [\n 'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n ].includes(node.parent && node.parent.type) ? node.parent : node;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix,\n messageId: 'missingJsDoc',\n node,\n loc,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(_.get(publicOnly, 'ancestorsOnly', false)),\n esm: Boolean(_.get(publicOnly, 'esm', true)),\n initModuleExports: Boolean(_.get(publicOnly, 'cjs', true)),\n initWindow: Boolean(_.get(publicOnly, 'window', false)),\n };\n const parseResult = exportParser.parse(sourceCode.ast, node, opt);\n const exported = exportParser.isExported(node, parseResult, opt);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n // eslint-disable-next-line fp/no-mutating-assign\n return Object.assign(\n jsdocUtils.getContextObject(jsdocUtils.enforcedContexts(context, []), checkJsDoc),\n {\n ArrowFunctionExpression (node) {\n if (!requireOption.ArrowFunctionExpression) {\n return;\n }\n\n if (!['VariableDeclarator', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassDeclaration (node) {\n if (!requireOption.ClassDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassExpression (node) {\n if (!requireOption.ClassExpression) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionDeclaration (node) {\n if (!requireOption.FunctionDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionExpression (node) {\n if (requireOption.MethodDefinition && node.parent.type === 'MethodDefinition') {\n checkJsDoc(node);\n\n return;\n }\n\n if (!requireOption.FunctionExpression) {\n return;\n }\n\n if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n checkJsDoc(node);\n } else if (node.parent.type === 'Property' && node === node.parent.value) {\n checkJsDoc(node);\n }\n },\n },\n );\n },\n};\n"],"file":"requireJsdoc.js"}
@@ -29,42 +29,68 @@ var _default = (0, _iterateJsdoc.default)(({
29
29
  return;
30
30
  }
31
31
 
32
- const findExpectedIndex = (jsdocTags, funcParmOrder, tagName) => {
33
- const docTags = jsdocTags.filter(({
32
+ const preferredTagName = utils.getPreferredTagName({
33
+ tagName: 'param'
34
+ });
35
+
36
+ const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
37
+ const functionTags = jsdocTags.filter(({
34
38
  tag
35
39
  }) => {
36
- return tag === tagName;
40
+ return tag === preferredTagName;
37
41
  });
38
42
  let expectedIndex = jsdocTags.length;
39
- jsdocTags.forEach((tag, idx) => {
40
- if (tag.tag === tagName) {
41
- expectedIndex = docTags.indexOf(tag) < funcParmOrder ? idx + 1 : idx - 1;
43
+ jsdocTags.forEach((tag, index) => {
44
+ if (tag.tag === preferredTagName) {
45
+ expectedIndex = index;
46
+
47
+ if (functionTags.indexOf(tag) < indexAtFunctionParams) {
48
+ expectedIndex += 1;
49
+ }
42
50
  }
43
51
  });
44
52
  return expectedIndex;
45
53
  };
46
54
 
55
+ const missingTags = [];
47
56
  functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {
48
57
  if (['<ObjectPattern>', '<ArrayPattern>'].includes(functionParameterName)) {
49
58
  return;
50
59
  }
51
60
 
52
61
  if (!jsdocParameterNames.includes(functionParameterName)) {
53
- const preferredTagName = utils.getPreferredTagName({
54
- tagName: 'param'
62
+ missingTags.push({
63
+ functionParameterIdx,
64
+ functionParameterName
55
65
  });
56
- utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, () => {
57
- if (!jsdoc.tags) {
58
- jsdoc.tags = [];
59
- }
66
+ }
67
+ });
60
68
 
61
- const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx, preferredTagName);
62
- jsdoc.tags.splice(expectedIdx, 0, {
63
- name: functionParameterName,
64
- tag: preferredTagName
65
- });
69
+ const fixAll = (missings, tags) => {
70
+ missings.forEach(({
71
+ functionParameterIdx,
72
+ functionParameterName
73
+ }) => {
74
+ const expectedIdx = findExpectedIndex(tags, functionParameterIdx);
75
+ tags.splice(expectedIdx, 0, {
76
+ name: functionParameterName,
77
+ tag: preferredTagName
66
78
  });
67
- }
79
+ });
80
+ };
81
+
82
+ missingTags.forEach(({
83
+ functionParameterName
84
+ }, index) => {
85
+ // Fix all missing tags the first time.
86
+ const fixer = index > 0 ? null : () => {
87
+ if (!jsdoc.tags) {
88
+ jsdoc.tags = [];
89
+ }
90
+
91
+ fixAll(missingTags, jsdoc.tags);
92
+ };
93
+ utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, fixer);
68
94
  });
69
95
  }, {
70
96
  meta: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireParam.js"],"names":["jsdoc","utils","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocParameterNames","avoidDocs","hasTag","findExpectedIndex","jsdocTags","funcParmOrder","tagName","docTags","filter","tag","expectedIndex","length","forEach","idx","indexOf","functionParameterName","functionParameterIdx","includes","preferredTagName","getPreferredTagName","reportJSDoc","tags","expectedIdx","splice","name","meta","fixable","schema","additionalProperties","properties","exemptedBy","items","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,KAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJ,QAAMC,sBAAsB,GAAGD,KAAK,CAACE,yBAAN,EAA/B;AACA,QAAMC,mBAAmB,GAAGH,KAAK,CAACI,sBAAN,EAA5B;;AACA,MAAI,CAACD,mBAAL,EAA0B;AACxB;AACD;;AAED,MAAIH,KAAK,CAACK,SAAN,EAAJ,EAAuB;AACrB;AACD,GATG,CAWJ;;;AACA,MAAIL,KAAK,CAACM,MAAN,CAAa,MAAb,CAAJ,EAA0B;AACxB;AACD;;AACD,QAAMC,iBAAiB,GAAG,CAACC,SAAD,EAAYC,aAAZ,EAA2BC,OAA3B,KAAuC;AAC/D,UAAMC,OAAO,GAAGH,SAAS,CAACI,MAAV,CAAiB,CAAC;AAACC,MAAAA;AAAD,KAAD,KAAW;AAC1C,aAAOA,GAAG,KAAKH,OAAf;AACD,KAFe,CAAhB;AAGA,QAAII,aAAa,GAAGN,SAAS,CAACO,MAA9B;AACAP,IAAAA,SAAS,CAACQ,OAAV,CAAkB,CAACH,GAAD,EAAMI,GAAN,KAAc;AAC9B,UAAIJ,GAAG,CAACA,GAAJ,KAAYH,OAAhB,EAAyB;AACvBI,QAAAA,aAAa,GAAGH,OAAO,CAACO,OAAR,CAAgBL,GAAhB,IAAuBJ,aAAvB,GAAuCQ,GAAG,GAAG,CAA7C,GAAiDA,GAAG,GAAG,CAAvE;AACD;AACF,KAJD;AAMA,WAAOH,aAAP;AACD,GAZD;;AAcAb,EAAAA,sBAAsB,CAACe,OAAvB,CAA+B,CAACG,qBAAD,EAAwBC,oBAAxB,KAAiD;AAC9E,QAAI,CAAC,iBAAD,EAAoB,gBAApB,EAAsCC,QAAtC,CAA+CF,qBAA/C,CAAJ,EAA2E;AACzE;AACD;;AACD,QAAI,CAAChB,mBAAmB,CAACkB,QAApB,CAA6BF,qBAA7B,CAAL,EAA0D;AACxD,YAAMG,gBAAgB,GAAGtB,KAAK,CAACuB,mBAAN,CAA0B;AAACb,QAAAA,OAAO,EAAE;AAAV,OAA1B,CAAzB;AACAV,MAAAA,KAAK,CAACwB,WAAN,CAAmB,kBAAiBF,gBAAiB,KAAIH,qBAAsB,gBAA/E,EAAgG,IAAhG,EAAsG,MAAM;AAC1G,YAAI,CAACpB,KAAK,CAAC0B,IAAX,EAAiB;AACf1B,UAAAA,KAAK,CAAC0B,IAAN,GAAa,EAAb;AACD;;AAED,cAAMC,WAAW,GAAGnB,iBAAiB,CAACR,KAAK,CAAC0B,IAAP,EAAaL,oBAAb,EAAmCE,gBAAnC,CAArC;AACAvB,QAAAA,KAAK,CAAC0B,IAAN,CAAWE,MAAX,CAAkBD,WAAlB,EAA+B,CAA/B,EAAkC;AAChCE,UAAAA,IAAI,EAAET,qBAD0B;AAEhCN,UAAAA,GAAG,EAAES;AAF2B,SAAlC;AAID,OAVD;AAWD;AACF,GAlBD;AAmBD,CAnDc,EAmDZ;AACDO,EAAAA,IAAI,EAAE;AACJC,IAAAA,OAAO,EAAE,IADL;AAEJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,UAAU,EAAE;AACVC,UAAAA,KAAK,EAAE;AACLC,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI;AADF,OAFd;AAUEA,MAAAA,IAAI,EAAE;AAVR,KADM,CAFJ;AAgBJA,IAAAA,IAAI,EAAE;AAhBF;AADL,CAnDY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n}) => {\n const functionParameterNames = utils.getFunctionParameterNames();\n const jsdocParameterNames = utils.getJsdocParameterNames();\n if (!jsdocParameterNames) {\n return;\n }\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n const findExpectedIndex = (jsdocTags, funcParmOrder, tagName) => {\n const docTags = jsdocTags.filter(({tag}) => {\n return tag === tagName;\n });\n let expectedIndex = jsdocTags.length;\n jsdocTags.forEach((tag, idx) => {\n if (tag.tag === tagName) {\n expectedIndex = docTags.indexOf(tag) < funcParmOrder ? idx + 1 : idx - 1;\n }\n });\n\n return expectedIndex;\n };\n\n functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {\n if (['<ObjectPattern>', '<ArrayPattern>'].includes(functionParameterName)) {\n return;\n }\n if (!jsdocParameterNames.includes(functionParameterName)) {\n const preferredTagName = utils.getPreferredTagName({tagName: 'param'});\n utils.reportJSDoc(`Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`, null, () => {\n if (!jsdoc.tags) {\n jsdoc.tags = [];\n }\n\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx, preferredTagName);\n jsdoc.tags.splice(expectedIdx, 0, {\n name: functionParameterName,\n tag: preferredTagName,\n });\n });\n }\n });\n}, {\n meta: {\n fixable: true,\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
1
+ {"version":3,"sources":["../../src/rules/requireParam.js"],"names":["jsdoc","utils","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocParameterNames","avoidDocs","hasTag","preferredTagName","getPreferredTagName","tagName","findExpectedIndex","jsdocTags","indexAtFunctionParams","functionTags","filter","tag","expectedIndex","length","forEach","index","indexOf","missingTags","functionParameterName","functionParameterIdx","includes","push","fixAll","missings","tags","expectedIdx","splice","name","fixer","reportJSDoc","meta","fixable","schema","additionalProperties","properties","exemptedBy","items","type"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n}) => {\n const functionParameterNames = utils.getFunctionParameterNames();\n const jsdocParameterNames = utils.getJsdocParameterNames();\n if (!jsdocParameterNames) {\n return;\n }\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const preferredTagName = utils.getPreferredTagName({tagName: 'param'});\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const functionTags = jsdocTags.filter(({tag}) => {\n return tag === preferredTagName;\n });\n let expectedIndex = jsdocTags.length;\n jsdocTags.forEach((tag, index) => {\n if (tag.tag === preferredTagName) {\n expectedIndex = index;\n if (functionTags.indexOf(tag) < indexAtFunctionParams) {\n expectedIndex += 1;\n }\n }\n });\n\n return expectedIndex;\n };\n\n const missingTags = [];\n\n functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {\n if (['<ObjectPattern>', '<ArrayPattern>'].includes(functionParameterName)) {\n return;\n }\n if (!jsdocParameterNames.includes(functionParameterName)) {\n missingTags.push({\n functionParameterIdx,\n functionParameterName,\n });\n }\n });\n\n const fixAll = (missings, tags) => {\n missings.forEach(({functionParameterIdx, functionParameterName}) => {\n const expectedIdx = findExpectedIndex(tags, functionParameterIdx);\n tags.splice(expectedIdx, 0, {\n name: functionParameterName,\n tag: preferredTagName,\n });\n });\n };\n\n missingTags.forEach(({functionParameterName}, index) => {\n // Fix all missing tags the first time.\n const fixer = index > 0 ? null : () => {\n if (!jsdoc.tags) {\n jsdoc.tags = [];\n }\n\n fixAll(missingTags, jsdoc.tags);\n };\n utils.reportJSDoc(`Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`, null, fixer);\n });\n}, {\n meta: {\n fixable: true,\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireParamDescription.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","description","name","meta","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,WAApB,EAAiC;AAC/BL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,gBADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.description) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamDescription.js"}
1
+ {"version":3,"sources":["../../src/rules/requireParamDescription.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","description","name","meta","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,WAApB,EAAiC;AAC/BL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,gBADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.description) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamDescription.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireParamName.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAID,cAAc,CAACE,GAAf,IAAsBF,cAAc,CAACG,IAAf,KAAwB,EAAlD,EAAsD;AACpDN,MAAAA,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAf,KAAwB,EAAxB,GAA6B,MAA7B,GAAsC,KAAM,GAD/F,EAEJ,IAFI,EAGJJ,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDK,EAAAA,IAAI,EAAE;AACJD,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamName.js"}
1
+ {"version":3,"sources":["../../src/rules/requireParamName.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAID,cAAc,CAACE,GAAf,IAAsBF,cAAc,CAACG,IAAf,KAAwB,EAAlD,EAAsD;AACpDN,MAAAA,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAf,KAAwB,EAAxB,GAA6B,MAA7B,GAAsC,KAAM,GAD/F,EAEJ,IAFI,EAGJJ,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDK,EAAAA,IAAI,EAAE;AACJD,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamName.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireParamType.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","type","name","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,IAApB,EAA0B;AACxBL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,SADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJF,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.type) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamType.js"}
1
+ {"version":3,"sources":["../../src/rules/requireParamType.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","type","name","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,IAApB,EAA0B;AACxBL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,SADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJF,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.type) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamType.js"}
package/dist/tagNames.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.closureTags = exports.jsdocTags = void 0;
6
+ exports.typeScriptTags = exports.closureTags = exports.jsdocTags = void 0;
7
7
 
8
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
9
9
 
@@ -90,13 +90,16 @@ const jsdocTags = _objectSpread({}, jsdocTagsUndocumented, {
90
90
  });
91
91
 
92
92
  exports.jsdocTags = jsdocTags;
93
- const TypeScriptTags = {
93
+
94
+ const typeScriptTags = _objectSpread({}, jsdocTags, {
94
95
  // `@template` is also in TypeScript per:
95
96
  // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc
96
97
  template: []
97
- };
98
+ });
99
+
100
+ exports.typeScriptTags = typeScriptTags;
98
101
 
99
- const closureTags = _objectSpread({}, TypeScriptTags, {
102
+ const closureTags = _objectSpread({}, typeScriptTags, {
100
103
  // From https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler
101
104
  // These are all recognized in https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js
102
105
  // except for the experimental `noinline` and the casing differences noted below
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tagNames.js"],"names":["jsdocTagsUndocumented","modifies","jsdocTags","abstract","access","alias","async","augments","author","borrows","callback","class","classdesc","constant","constructs","copyright","default","deprecated","description","enum","event","example","exports","external","file","fires","function","generator","global","hideconstructor","ignore","implements","inheritdoc","inner","instance","interface","kind","lends","license","listens","member","memberof","mixes","mixin","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","this","throws","todo","tutorial","type","typedef","variation","version","yields","TypeScriptTags","template","closureTags","define","dict","export","externs","final","implicitCast","inheritDoc","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","struct","suppress","unrestricted"],"mappings":"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","sourcesContent":["const jsdocTagsUndocumented = {\n // Undocumented but present; see\n // https://github.com/jsdoc/jsdoc/issues/1283#issuecomment-516816802\n // https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js#L594\n modifies: [],\n};\n\nconst jsdocTags = {\n ...jsdocTagsUndocumented,\n abstract: [\n 'virtual',\n ],\n access: [],\n alias: [],\n async: [],\n augments: [\n 'extends',\n ],\n author: [],\n borrows: [],\n callback: [],\n class: [\n 'constructor',\n ],\n classdesc: [],\n constant: [\n 'const',\n ],\n constructs: [],\n copyright: [],\n default: [\n 'defaultvalue',\n ],\n deprecated: [],\n description: [\n 'desc',\n ],\n enum: [],\n event: [],\n example: [],\n exports: [],\n external: [\n 'host',\n ],\n file: [\n 'fileoverview',\n 'overview',\n ],\n fires: [\n 'emits',\n ],\n function: [\n 'func',\n 'method',\n ],\n generator: [],\n global: [],\n hideconstructor: [],\n ignore: [],\n implements: [],\n inheritdoc: [],\n inner: [],\n instance: [],\n interface: [],\n kind: [],\n lends: [],\n license: [],\n listens: [],\n member: [\n 'var',\n ],\n memberof: [],\n 'memberof!': [],\n mixes: [],\n mixin: [],\n\n module: [],\n name: [],\n namespace: [],\n override: [],\n package: [],\n param: [\n 'arg',\n 'argument',\n ],\n private: [],\n property: [\n 'prop',\n ],\n protected: [],\n public: [],\n readonly: [],\n requires: [],\n returns: [\n 'return',\n ],\n see: [],\n since: [],\n static: [],\n summary: [],\n\n this: [],\n throws: [\n 'exception',\n ],\n todo: [],\n tutorial: [],\n type: [],\n typedef: [],\n variation: [],\n version: [],\n yields: [\n 'yield',\n ],\n};\n\nconst TypeScriptTags = {\n // `@template` is also in TypeScript per:\n // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc\n template: [],\n};\n\nconst closureTags = {\n ...TypeScriptTags,\n\n // From https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler\n // These are all recognized in https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js\n // except for the experimental `noinline` and the casing differences noted below\n\n // Defined as a synonym of `const` in jsdoc `definitions.js`\n define: [],\n\n dict: [],\n export: [],\n externs: [],\n final: [],\n\n // With casing distinct from jsdoc `definitions.js`\n implicitCast: [],\n\n // With casing distinct from jsdoc `definitions.js`\n inheritDoc: [],\n\n noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {jsdocTags, closureTags};\n"],"file":"tagNames.js"}
1
+ {"version":3,"sources":["../src/tagNames.js"],"names":["jsdocTagsUndocumented","modifies","jsdocTags","abstract","access","alias","async","augments","author","borrows","callback","class","classdesc","constant","constructs","copyright","default","deprecated","description","enum","event","example","exports","external","file","fires","function","generator","global","hideconstructor","ignore","implements","inheritdoc","inner","instance","interface","kind","lends","license","listens","member","memberof","mixes","mixin","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","this","throws","todo","tutorial","type","typedef","variation","version","yields","typeScriptTags","template","closureTags","define","dict","export","externs","final","implicitCast","inheritDoc","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","struct","suppress","unrestricted"],"mappings":"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","sourcesContent":["const jsdocTagsUndocumented = {\n // Undocumented but present; see\n // https://github.com/jsdoc/jsdoc/issues/1283#issuecomment-516816802\n // https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js#L594\n modifies: [],\n};\n\nconst jsdocTags = {\n ...jsdocTagsUndocumented,\n abstract: [\n 'virtual',\n ],\n access: [],\n alias: [],\n async: [],\n augments: [\n 'extends',\n ],\n author: [],\n borrows: [],\n callback: [],\n class: [\n 'constructor',\n ],\n classdesc: [],\n constant: [\n 'const',\n ],\n constructs: [],\n copyright: [],\n default: [\n 'defaultvalue',\n ],\n deprecated: [],\n description: [\n 'desc',\n ],\n enum: [],\n event: [],\n example: [],\n exports: [],\n external: [\n 'host',\n ],\n file: [\n 'fileoverview',\n 'overview',\n ],\n fires: [\n 'emits',\n ],\n function: [\n 'func',\n 'method',\n ],\n generator: [],\n global: [],\n hideconstructor: [],\n ignore: [],\n implements: [],\n inheritdoc: [],\n inner: [],\n instance: [],\n interface: [],\n kind: [],\n lends: [],\n license: [],\n listens: [],\n member: [\n 'var',\n ],\n memberof: [],\n 'memberof!': [],\n mixes: [],\n mixin: [],\n\n module: [],\n name: [],\n namespace: [],\n override: [],\n package: [],\n param: [\n 'arg',\n 'argument',\n ],\n private: [],\n property: [\n 'prop',\n ],\n protected: [],\n public: [],\n readonly: [],\n requires: [],\n returns: [\n 'return',\n ],\n see: [],\n since: [],\n static: [],\n summary: [],\n\n this: [],\n throws: [\n 'exception',\n ],\n todo: [],\n tutorial: [],\n type: [],\n typedef: [],\n variation: [],\n version: [],\n yields: [\n 'yield',\n ],\n};\n\nconst typeScriptTags = {\n ...jsdocTags,\n\n // `@template` is also in TypeScript per:\n // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc\n template: [],\n};\n\nconst closureTags = {\n ...typeScriptTags,\n\n // From https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler\n // These are all recognized in https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js\n // except for the experimental `noinline` and the casing differences noted below\n\n // Defined as a synonym of `const` in jsdoc `definitions.js`\n define: [],\n\n dict: [],\n export: [],\n externs: [],\n final: [],\n\n // With casing distinct from jsdoc `definitions.js`\n implicitCast: [],\n\n // With casing distinct from jsdoc `definitions.js`\n inheritDoc: [],\n\n noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {jsdocTags, closureTags, typeScriptTags};\n"],"file":"tagNames.js"}
package/package.json CHANGED
@@ -14,26 +14,26 @@
14
14
  },
15
15
  "description": "JSDoc linting rules for ESLint.",
16
16
  "devDependencies": {
17
- "@babel/cli": "^7.6.3",
18
- "@babel/core": "^7.6.3",
17
+ "@babel/cli": "^7.6.4",
18
+ "@babel/core": "^7.6.4",
19
19
  "@babel/node": "^7.6.3",
20
20
  "@babel/plugin-transform-flow-strip-types": "^7.6.3",
21
21
  "@babel/preset-env": "^7.6.3",
22
22
  "@babel/register": "^7.6.2",
23
- "@typescript-eslint/parser": "^2.3.3",
23
+ "@typescript-eslint/parser": "^2.5.0",
24
24
  "babel-eslint": "^10.0.3",
25
25
  "babel-plugin-add-module-exports": "^1.0.2",
26
26
  "babel-plugin-istanbul": "^5.2.0",
27
27
  "chai": "^4.2.0",
28
- "eslint": "6.5.1",
28
+ "eslint": "6.6.0",
29
29
  "eslint-config-canonical": "^17.7.0",
30
30
  "gitdown": "^3.1.1",
31
- "glob": "^7.1.4",
32
- "husky": "^3.0.8",
33
- "mocha": "^6.2.1",
31
+ "glob": "^7.1.5",
32
+ "husky": "^3.0.9",
33
+ "mocha": "^6.2.2",
34
34
  "nyc": "^14.1.1",
35
- "semantic-release": "^15.13.24",
36
- "typescript": "^3.6.3"
35
+ "semantic-release": "^15.13.28",
36
+ "typescript": "^3.6.4"
37
37
  },
38
38
  "engines": {
39
39
  "node": ">=6"
@@ -84,5 +84,5 @@
84
84
  "functions": 100,
85
85
  "statements": 100
86
86
  },
87
- "version": "15.11.0"
87
+ "version": "15.12.2"
88
88
  }