eslint-plugin-jsdoc 37.4.0 → 37.5.1

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 (53) hide show
  1. package/README.md +120 -1
  2. package/dist/alignTransform.js.map +1 -1
  3. package/dist/bin/generateRule.js.map +1 -1
  4. package/dist/exportParser.js.map +1 -1
  5. package/dist/generateRule.js.map +1 -1
  6. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/iterateJsdoc.js.map +1 -1
  9. package/dist/jsdocUtils.js.map +1 -1
  10. package/dist/rules/checkAccess.js.map +1 -1
  11. package/dist/rules/checkExamples.js +2 -2
  12. package/dist/rules/checkExamples.js.map +1 -1
  13. package/dist/rules/checkIndentation.js.map +1 -1
  14. package/dist/rules/checkLineAlignment.js.map +1 -1
  15. package/dist/rules/checkParamNames.js.map +1 -1
  16. package/dist/rules/checkPropertyNames.js.map +1 -1
  17. package/dist/rules/checkSyntax.js.map +1 -1
  18. package/dist/rules/checkTagNames.js.map +1 -1
  19. package/dist/rules/checkTypes.js.map +1 -1
  20. package/dist/rules/emptyTags.js.map +1 -1
  21. package/dist/rules/matchDescription.js +1 -1
  22. package/dist/rules/matchDescription.js.map +1 -1
  23. package/dist/rules/matchName.js.map +1 -1
  24. package/dist/rules/multilineBlocks.js.map +1 -1
  25. package/dist/rules/newlineAfterDescription.js.map +1 -1
  26. package/dist/rules/noBadBlocks.js.map +1 -1
  27. package/dist/rules/noDefaults.js.map +1 -1
  28. package/dist/rules/noMissingSyntax.js.map +1 -1
  29. package/dist/rules/noMultiAsterisks.js +25 -5
  30. package/dist/rules/noMultiAsterisks.js.map +1 -1
  31. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  32. package/dist/rules/noTypes.js.map +1 -1
  33. package/dist/rules/noUndefinedTypes.js +12 -16
  34. package/dist/rules/noUndefinedTypes.js.map +1 -1
  35. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  36. package/dist/rules/requireDescription.js.map +1 -1
  37. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  38. package/dist/rules/requireExample.js.map +1 -1
  39. package/dist/rules/requireFileOverview.js.map +1 -1
  40. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  41. package/dist/rules/requireJsdoc.js.map +1 -1
  42. package/dist/rules/requireParam.js.map +1 -1
  43. package/dist/rules/requireProperty.js.map +1 -1
  44. package/dist/rules/requireReturns.js.map +1 -1
  45. package/dist/rules/requireReturnsCheck.js.map +1 -1
  46. package/dist/rules/requireReturnsDescription.js.map +1 -1
  47. package/dist/rules/requireThrows.js.map +1 -1
  48. package/dist/rules/requireYields.js.map +1 -1
  49. package/dist/rules/requireYieldsCheck.js.map +1 -1
  50. package/dist/rules/tagLines.js.map +1 -1
  51. package/dist/rules/validTypes.js.map +1 -1
  52. package/dist/tagNames.js.map +1 -1
  53. package/package.json +22 -21
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireYieldsCheck.js"],"names":["canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","context","next","checkGeneratorsOnly","options","preferredYieldTagName","yieldTag","shouldReportYields","type","trim","hasYieldValue","isGenerator","hasDefinedTypeTag","preferredNextTagName","nextTag","shouldReportNext","hasYieldReturnValue","meta","docs","description","url","schema","additionalProperties","properties","default","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a yield is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing yield.\n 'abstract',\n 'virtual',\n\n // Constructor functions do not have a yield value\n // so we can bail here, too.\n 'class',\n 'constructor',\n\n // This seems to imply a class as well\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = utils.getPreferredTagName({tagName});\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length === 0) {\n return [];\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n\n return [];\n }\n\n return [preferredTagName, tags[0]];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n if (canSkip(utils, settings)) {\n return;\n }\n\n const {\n next = false,\n checkGeneratorsOnly = false,\n } = context.options[0] || {};\n\n const [preferredYieldTagName, yieldTag] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (yieldTag.type.trim() === 'never') {\n if (utils.hasYieldValue()) {\n report(`JSDoc @${preferredYieldTagName} declaration set with \"never\" but yield expression is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return utils.hasDefinedTypeTag(yieldTag) && !utils.hasYieldValue();\n };\n\n // In case a yield value is declared in JSDoc, we also expect one in the code.\n if (shouldReportYields()) {\n report(`JSDoc @${preferredYieldTagName} declaration present but yield expression not available in function.`);\n }\n }\n\n if (next) {\n const [preferredNextTagName, nextTag] = checkTagName(\n utils, report, 'next',\n );\n if (preferredNextTagName) {\n const shouldReportNext = () => {\n if (nextTag.type.trim() === 'never') {\n if (utils.hasYieldReturnValue()) {\n report(`JSDoc @${preferredNextTagName} declaration set with \"never\" but yield expression with return value is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return utils.hasDefinedTypeTag(nextTag) && !utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`JSDoc @${preferredNextTagName} declaration present but yield expression with return value not available in function.`);\n }\n }\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-yields-check',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkGeneratorsOnly: {\n default: false,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireYieldsCheck.js"}
1
+ {"version":3,"sources":["../../src/rules/requireYieldsCheck.js"],"names":["canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","context","next","checkGeneratorsOnly","options","preferredYieldTagName","yieldTag","shouldReportYields","type","trim","hasYieldValue","isGenerator","hasDefinedTypeTag","preferredNextTagName","nextTag","shouldReportNext","hasYieldReturnValue","meta","docs","description","url","schema","additionalProperties","properties","default","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a yield is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing yield.\n 'abstract',\n 'virtual',\n\n // Constructor functions do not have a yield value\n // so we can bail here, too.\n 'class',\n 'constructor',\n\n // This seems to imply a class as well\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = utils.getPreferredTagName({\n tagName,\n });\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length === 0) {\n return [];\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n\n return [];\n }\n\n return [\n preferredTagName, tags[0],\n ];\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n if (canSkip(utils, settings)) {\n return;\n }\n\n const {\n next = false,\n checkGeneratorsOnly = false,\n } = context.options[0] || {};\n\n const [\n preferredYieldTagName,\n yieldTag,\n ] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (yieldTag.type.trim() === 'never') {\n if (utils.hasYieldValue()) {\n report(`JSDoc @${preferredYieldTagName} declaration set with \"never\" but yield expression is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return utils.hasDefinedTypeTag(yieldTag) && !utils.hasYieldValue();\n };\n\n // In case a yield value is declared in JSDoc, we also expect one in the code.\n if (shouldReportYields()) {\n report(`JSDoc @${preferredYieldTagName} declaration present but yield expression not available in function.`);\n }\n }\n\n if (next) {\n const [\n preferredNextTagName,\n nextTag,\n ] = checkTagName(\n utils, report, 'next',\n );\n if (preferredNextTagName) {\n const shouldReportNext = () => {\n if (nextTag.type.trim() === 'never') {\n if (utils.hasYieldReturnValue()) {\n report(`JSDoc @${preferredNextTagName} declaration set with \"never\" but yield expression with return value is present in function.`);\n }\n\n return false;\n }\n\n if (checkGeneratorsOnly && !utils.isGenerator()) {\n return true;\n }\n\n return utils.hasDefinedTypeTag(nextTag) && !utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`JSDoc @${preferredNextTagName} declaration present but yield expression with return value not available in function.`);\n }\n }\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-yields-check',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkGeneratorsOnly: {\n default: false,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireYieldsCheck.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","idx","tokens","tag","name","type","description","end","source","entries","includes","slice","lines","fixer","removeTagItem","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","length","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperies","properties","patternProperties","additionalProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n noEndLines = false,\n tags = {},\n } = {},\n ] = context.options;\n\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n\n let reportIndex = null;\n for (const [idx, {tokens: {tag, name, type, description, end}}] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && ['any', 'always'].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n if (\n !tag && !name && !type && !description && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n lastTag = tag;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTagItem(tagIdx, reportIndex);\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {line: tg.source[0].number + 1},\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [idx, {number, tokens: {tag, name, type, description, end}}] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({idx, number});\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'any', 'never'],\n type: 'string',\n },\n {\n additionalProperies: false,\n properties: {\n count: {\n type: 'integer',\n },\n noEndLines: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"tagLines.js"}
1
+ {"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","idx","tokens","tag","name","type","description","end","source","entries","includes","slice","lines","fixer","removeTagItem","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","length","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperies","properties","patternProperties","additionalProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n noEndLines = false,\n tags = {},\n } = {},\n ] = context.options;\n\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n\n let reportIndex = null;\n for (const [\n idx,\n {\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && [\n 'any', 'always',\n ].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n if (\n !tag && !name && !type && !description && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n lastTag = tag;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTagItem(tagIdx, reportIndex);\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {\n line: tg.source[0].number + 1,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [\n idx,\n {\n number,\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({\n idx,\n number,\n });\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'any', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperies: false,\n properties: {\n count: {\n type: 'integer',\n },\n noEndLines: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"tagLines.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","suppressTypes","Set","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","parsedTypes","node","value","undefined","has","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse, parse, traverse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n 'unusedPrivateMembers',\n 'useOfGoogProvide',\n 'uselessCode',\n 'visibility',\n 'with',\n]);\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {mode} = settings;\n\n for (const tag of jsdoc.tags) {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n // eslint-disable-next-line default-case\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if (['#', '.', '~'].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt();\n if (['#', '.', '~'].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n const {value: type} = node;\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in supresss type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
1
+ {"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","suppressTypes","Set","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","parsedTypes","node","value","undefined","has","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse,\n parse,\n traverse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n 'unusedPrivateMembers',\n 'useOfGoogProvide',\n 'uselessCode',\n 'visibility',\n 'with',\n]);\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {\n mode,\n } = settings;\n\n for (const tag of jsdoc.tags) {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n // eslint-disable-next-line default-case\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if ([\n '#', '.', '~',\n ].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt();\n if ([\n '#', '.', '~',\n ].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n const {\n value: type,\n } = node;\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in supresss type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = [\n 'jsdoc', 'typescript', 'closure', 'permissive',\n ].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
@@ -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","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","undocumentedClosureTags","closurePrimitive","customElement","expose","hidden","idGenerator","meaning","mixinClass","mixinFunction","ngInject","owner","typeSummary","wizaction","typeScriptTagsInClosure","closureTags","define","dict","export","externs","final","implicitCast","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","record","return","struct","suppress","unrestricted"],"mappings":";;;;;;AAAA,MAAMA,qBAAqB,GAAG;AAC5B;AACA;AACA;AACAC,EAAAA,QAAQ,EAAE;AAJkB,CAA9B;AAOA,MAAMC,SAAS,GAAG,EAChB,GAAGF,qBADa;AAEhBG,EAAAA,QAAQ,EAAE,CACR,SADQ,CAFM;AAKhBC,EAAAA,MAAM,EAAE,EALQ;AAMhBC,EAAAA,KAAK,EAAE,EANS;AAOhBC,EAAAA,KAAK,EAAE,EAPS;AAQhBC,EAAAA,QAAQ,EAAE,CACR,SADQ,CARM;AAWhBC,EAAAA,MAAM,EAAE,EAXQ;AAYhBC,EAAAA,OAAO,EAAE,EAZO;AAahBC,EAAAA,QAAQ,EAAE,EAbM;AAchBC,EAAAA,KAAK,EAAE,CACL,aADK,CAdS;AAiBhBC,EAAAA,SAAS,EAAE,EAjBK;AAkBhBC,EAAAA,QAAQ,EAAE,CACR,OADQ,CAlBM;AAqBhBC,EAAAA,UAAU,EAAE,EArBI;AAsBhBC,EAAAA,SAAS,EAAE,EAtBK;AAuBhBC,EAAAA,OAAO,EAAE,CACP,cADO,CAvBO;AA0BhBC,EAAAA,UAAU,EAAE,EA1BI;AA2BhBC,EAAAA,WAAW,EAAE,CACX,MADW,CA3BG;AA8BhBC,EAAAA,IAAI,EAAE,EA9BU;AA+BhBC,EAAAA,KAAK,EAAE,EA/BS;AAgChBC,EAAAA,OAAO,EAAE,EAhCO;AAiChBC,EAAAA,OAAO,EAAE,EAjCO;AAkChBC,EAAAA,QAAQ,EAAE,CACR,MADQ,CAlCM;AAqChBC,EAAAA,IAAI,EAAE,CACJ,cADI,EAEJ,UAFI,CArCU;AAyChBC,EAAAA,KAAK,EAAE,CACL,OADK,CAzCS;AA4ChBC,EAAAA,QAAQ,EAAE,CACR,MADQ,EAER,QAFQ,CA5CM;AAgDhBC,EAAAA,SAAS,EAAE,EAhDK;AAiDhBC,EAAAA,MAAM,EAAE,EAjDQ;AAkDhBC,EAAAA,eAAe,EAAE,EAlDD;AAmDhBC,EAAAA,MAAM,EAAE,EAnDQ;AAoDhBC,EAAAA,UAAU,EAAE,EApDI;AAqDhBC,EAAAA,UAAU,EAAE,EArDI;AAuDhB;AACAC,EAAAA,UAAU,EAAE,EAxDI;AA0DhBC,EAAAA,KAAK,EAAE,EA1DS;AA2DhBC,EAAAA,QAAQ,EAAE,EA3DM;AA4DhBC,EAAAA,SAAS,EAAE,EA5DK;AA6DhBC,EAAAA,IAAI,EAAE,EA7DU;AA8DhBC,EAAAA,KAAK,EAAE,EA9DS;AA+DhBC,EAAAA,OAAO,EAAE,EA/DO;AAgEhBC,EAAAA,OAAO,EAAE,EAhEO;AAiEhBC,EAAAA,MAAM,EAAE,CACN,KADM,CAjEQ;AAoEhBC,EAAAA,QAAQ,EAAE,EApEM;AAqEhB,eAAa,EArEG;AAsEhBC,EAAAA,KAAK,EAAE,EAtES;AAuEhBC,EAAAA,KAAK,EAAE,EAvES;AAyEhBC,EAAAA,MAAM,EAAE,EAzEQ;AA0EhBC,EAAAA,IAAI,EAAE,EA1EU;AA2EhBC,EAAAA,SAAS,EAAE,EA3EK;AA4EhBC,EAAAA,QAAQ,EAAE,EA5EM;AA6EhBC,EAAAA,OAAO,EAAE,EA7EO;AA8EhBC,EAAAA,KAAK,EAAE,CACL,KADK,EAEL,UAFK,CA9ES;AAkFhBC,EAAAA,OAAO,EAAE,EAlFO;AAmFhBC,EAAAA,QAAQ,EAAE,CACR,MADQ,CAnFM;AAsFhBC,EAAAA,SAAS,EAAE,EAtFK;AAuFhBC,EAAAA,MAAM,EAAE,EAvFQ;AAwFhBC,EAAAA,QAAQ,EAAE,EAxFM;AAyFhBC,EAAAA,QAAQ,EAAE,EAzFM;AA0FhBC,EAAAA,OAAO,EAAE,CACP,QADO,CA1FO;AA6FhBC,EAAAA,GAAG,EAAE,EA7FW;AA8FhBC,EAAAA,KAAK,EAAE,EA9FS;AA+FhBC,EAAAA,MAAM,EAAE,EA/FQ;AAgGhBC,EAAAA,OAAO,EAAE,EAhGO;AAkGhBC,EAAAA,IAAI,EAAE,EAlGU;AAmGhBC,EAAAA,MAAM,EAAE,CACN,WADM,CAnGQ;AAsGhBC,EAAAA,IAAI,EAAE,EAtGU;AAuGhBC,EAAAA,QAAQ,EAAE,EAvGM;AAwGhBC,EAAAA,IAAI,EAAE,EAxGU;AAyGhBC,EAAAA,OAAO,EAAE,EAzGO;AA0GhBC,EAAAA,SAAS,EAAE,EA1GK;AA2GhBC,EAAAA,OAAO,EAAE,EA3GO;AA4GhBC,EAAAA,MAAM,EAAE,CACN,OADM;AA5GQ,CAAlB;;AAiHA,MAAMC,cAAc,GAAG,EACrB,GAAGrE,SADkB;AAGrB;AACA;AACAsE,EAAAA,QAAQ,EAAE;AALW,CAAvB;;AAQA,MAAMC,uBAAuB,GAAG;AAC9B;AACA;AACAC,EAAAA,gBAAgB,EAAE,EAHY;AAI9BC,EAAAA,aAAa,EAAE,EAJe;AAK9BC,EAAAA,MAAM,EAAE,EALsB;AAM9BC,EAAAA,MAAM,EAAE,EANsB;AAO9BC,EAAAA,WAAW,EAAE,EAPiB;AAQ9BC,EAAAA,OAAO,EAAE,EARqB;AAS9BC,EAAAA,UAAU,EAAE,EATkB;AAU9BC,EAAAA,aAAa,EAAE,EAVe;AAW9BC,EAAAA,QAAQ,EAAE,EAXoB;AAY9BC,EAAAA,KAAK,EAAE,EAZuB;AAa9BC,EAAAA,WAAW,EAAE,EAbiB;AAc9BC,EAAAA,SAAS,EAAE;AAdmB,CAAhC;AAiBA,MAAM;AACJ;AACArD,EAAAA,UAFI;AAIJ;AACAyB,EAAAA,OALI;;AAMJ;AACA,KAAG6B;AAPC,IAQFf,cARJ;AAUA,MAAMgB,WAAW,GAAG,EAClB,GAAGD,uBADe;AAElB,KAAGb,uBAFe;AAIlB;AACA;AACA;AAEA;AACAe,EAAAA,MAAM,EAAE,EATU;AAWlBC,EAAAA,IAAI,EAAE,EAXY;AAYlBC,EAAAA,MAAM,EAAE,EAZU;AAalBC,EAAAA,OAAO,EAAE,EAbS;AAclBC,EAAAA,KAAK,EAAE,EAdW;AAgBlB;AACAC,EAAAA,YAAY,EAAE,EAjBI;AAmBlBC,EAAAA,OAAO,EAAE,EAnBS;AAoBlBC,EAAAA,UAAU,EAAE,EApBM;AAqBlBC,EAAAA,SAAS,EAAE,EArBO;AAsBlBC,EAAAA,QAAQ,EAAE,EAtBQ;AAuBlBC,EAAAA,aAAa,EAAE,EAvBG;AAwBlBC,EAAAA,OAAO,EAAE,EAxBS;AAyBlBC,EAAAA,eAAe,EAAE,EAzBC;AA0BlBC,EAAAA,QAAQ,EAAE,EA1BQ;AA4BlB;AACAC,EAAAA,MAAM,EAAE,EA7BU;AA+BlBC,EAAAA,MAAM,EAAE,CACN,SADM,CA/BU;AAmClBC,EAAAA,MAAM,EAAE,EAnCU;AAoClBC,EAAAA,QAAQ,EAAE,EApCQ;AAsClBC,EAAAA,YAAY,EAAE;AAtCI,CAApB","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\n // Allowing casing distinct from jsdoc `definitions.js` (required in Closure)\n inheritDoc: [],\n\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 undocumentedClosureTags = {\n // These are in Closure source but not in jsdoc source nor in the Closure\n // docs: https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/Annotation.java\n closurePrimitive: [],\n customElement: [],\n expose: [],\n hidden: [],\n idGenerator: [],\n meaning: [],\n mixinClass: [],\n mixinFunction: [],\n ngInject: [],\n owner: [],\n typeSummary: [],\n wizaction: [],\n};\n\nconst {\n /* eslint-disable no-unused-vars */\n inheritdoc,\n\n // Will be inverted to prefer `return`\n returns,\n /* eslint-enable no-unused-vars */\n ...typeScriptTagsInClosure\n} = typeScriptTags;\n\nconst closureTags = {\n ...typeScriptTagsInClosure,\n ...undocumentedClosureTags,\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 noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n\n // Defined as a synonym of `interface` in jsdoc `definitions.js`\n record: [],\n\n return: [\n 'returns',\n ],\n\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {\n jsdocTags, closureTags, typeScriptTags,\n};\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","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","undocumentedClosureTags","closurePrimitive","customElement","expose","hidden","idGenerator","meaning","mixinClass","mixinFunction","ngInject","owner","typeSummary","wizaction","typeScriptTagsInClosure","closureTags","define","dict","export","externs","final","implicitCast","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","record","return","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\n // Allowing casing distinct from jsdoc `definitions.js` (required in Closure)\n inheritDoc: [],\n\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 undocumentedClosureTags = {\n // These are in Closure source but not in jsdoc source nor in the Closure\n // docs: https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/Annotation.java\n closurePrimitive: [],\n customElement: [],\n expose: [],\n hidden: [],\n idGenerator: [],\n meaning: [],\n mixinClass: [],\n mixinFunction: [],\n ngInject: [],\n owner: [],\n typeSummary: [],\n wizaction: [],\n};\n\nconst {\n /* eslint-disable no-unused-vars */\n inheritdoc,\n\n // Will be inverted to prefer `return`\n returns,\n /* eslint-enable no-unused-vars */\n ...typeScriptTagsInClosure\n} = typeScriptTags;\n\nconst closureTags = {\n ...typeScriptTagsInClosure,\n ...undocumentedClosureTags,\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 noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n\n // Defined as a synonym of `interface` in jsdoc `definitions.js`\n record: [],\n\n return: [\n 'returns',\n ],\n\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {\n jsdocTags,\n closureTags,\n typeScriptTags,\n};\n"],"file":"tagNames.js"}
package/package.json CHANGED
@@ -5,40 +5,40 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "@es-joy/jsdoccomment": "0.13.0",
8
+ "@es-joy/jsdoccomment": "0.14.2",
9
9
  "comment-parser": "1.3.0",
10
10
  "debug": "^4.3.3",
11
11
  "escape-string-regexp": "^4.0.0",
12
12
  "esquery": "^1.4.0",
13
- "jsdoc-type-pratt-parser": "^2.0.0",
13
+ "jsdoc-type-pratt-parser": "^2.0.2",
14
14
  "regextras": "^0.8.0",
15
15
  "semver": "^7.3.5",
16
16
  "spdx-expression-parse": "^3.0.1"
17
17
  },
18
18
  "description": "JSDoc linting rules for ESLint.",
19
19
  "devDependencies": {
20
- "@babel/cli": "^7.16.0",
21
- "@babel/core": "^7.16.5",
20
+ "@babel/cli": "^7.16.7",
21
+ "@babel/core": "^7.16.7",
22
22
  "@babel/eslint-parser": "^7.16.5",
23
- "@babel/node": "^7.16.5",
23
+ "@babel/node": "^7.16.7",
24
24
  "@babel/plugin-syntax-class-properties": "^7.12.13",
25
- "@babel/plugin-transform-flow-strip-types": "^7.16.5",
26
- "@babel/preset-env": "^7.16.5",
27
- "@babel/register": "^7.16.5",
25
+ "@babel/plugin-transform-flow-strip-types": "^7.16.7",
26
+ "@babel/preset-env": "^7.16.7",
27
+ "@babel/register": "^7.16.7",
28
28
  "@hkdobrev/run-if-changed": "^0.3.1",
29
- "@typescript-eslint/parser": "^5.7.0",
29
+ "@typescript-eslint/parser": "^5.8.1",
30
30
  "babel-plugin-add-module-exports": "^1.0.4",
31
31
  "babel-plugin-istanbul": "^6.1.1",
32
- "camelcase": "^6.2.1",
32
+ "camelcase": "^6.3.0",
33
33
  "chai": "^4.3.4",
34
34
  "cross-env": "^7.0.3",
35
35
  "decamelize": "^5.0.1",
36
- "eslint": "^8.4.1",
37
- "eslint-config-canonical": "^32.46.1",
36
+ "eslint": "^8.6.0",
37
+ "eslint-config-canonical": "^33.0.0",
38
38
  "gitdown": "^3.1.4",
39
39
  "glob": "^7.2.0",
40
40
  "husky": "^7.0.4",
41
- "lint-staged": "^12.1.2",
41
+ "lint-staged": "^12.1.5",
42
42
  "lodash.defaultsdeep": "^4.6.1",
43
43
  "mocha": "^9.1.3",
44
44
  "nyc": "^15.1.0",
@@ -57,10 +57,11 @@
57
57
  ],
58
58
  "license": "BSD-3-Clause",
59
59
  "lint-staged": {
60
- "./*.js": "npm run lint-arg --",
61
- ".eslintignore": "npm run lint",
62
- "src/**/*.js": "npm run lint-arg --",
63
- "test/**/*.js": "npm run lint-arg --"
60
+ ".eslintignore": [
61
+ "npm run lint-fix",
62
+ "git add ."
63
+ ],
64
+ "*.js": "npm run lint-arg -- --fix"
64
65
  },
65
66
  "main": "./dist/index.js",
66
67
  "name": "eslint-plugin-jsdoc",
@@ -98,14 +99,14 @@
98
99
  "create-readme": "babel-node ./src/bin/generateReadme.js",
99
100
  "create-rule": "babel-node ./src/bin/generateRule.js",
100
101
  "install-offline": "npm install --prefer-offline --no-audit",
101
- "lint": "eslint --report-unused-disable-directives --ignore-pattern '!.ncurc.js' ./src ./test .ncurc.js",
102
+ "lint": "npm run lint-arg -- .",
102
103
  "lint-arg": "eslint --report-unused-disable-directives",
103
- "lint-fix": "eslint --report-unused-disable-directives --fix ./src ./test",
104
+ "lint-fix": "npm run lint-arg -- --fix .",
104
105
  "prepare": "husky install",
105
106
  "test": "cross-env BABEL_ENV=test nyc --reporter text-summary mocha --reporter dot --recursive --require @babel/register --timeout 12000",
106
- "test-cov": "cross-env BABEL_ENV=test nyc mocha --reporter dot --recursive --require @babel/register --timeout 12000",
107
+ "test-cov": "cross-env BABEL_ENV=test TIMING=1 nyc mocha --reporter dot --recursive --require @babel/register --timeout 12000",
107
108
  "test-index": "cross-env BABEL_ENV=test mocha --recursive --require @babel/register --reporter progress --timeout 12000 test/rules/index.js",
108
109
  "test-no-cov": "cross-env BABEL_ENV=test mocha --reporter dot --recursive --require @babel/register --timeout 12000"
109
110
  },
110
- "version": "37.4.0"
111
+ "version": "37.5.1"
111
112
  }