eslint-plugin-jsdoc 39.2.9 → 39.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/WarnSettings.js.map +1 -1
  2. package/dist/alignTransform.js.map +1 -1
  3. package/dist/bin/generateRule.js.map +1 -1
  4. package/dist/defaultTagOrder.js.map +1 -1
  5. package/dist/exportParser.js.map +1 -1
  6. package/dist/generateRule.js.map +1 -1
  7. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/iterateJsdoc.js +57 -16
  10. package/dist/iterateJsdoc.js.map +1 -1
  11. package/dist/jsdocUtils.js +5 -1
  12. package/dist/jsdocUtils.js.map +1 -1
  13. package/dist/rules/checkAccess.js.map +1 -1
  14. package/dist/rules/checkAlignment.js.map +1 -1
  15. package/dist/rules/checkExamples.js.map +1 -1
  16. package/dist/rules/checkIndentation.js.map +1 -1
  17. package/dist/rules/checkLineAlignment.js.map +1 -1
  18. package/dist/rules/checkParamNames.js.map +1 -1
  19. package/dist/rules/checkPropertyNames.js.map +1 -1
  20. package/dist/rules/checkSyntax.js.map +1 -1
  21. package/dist/rules/checkTagNames.js.map +1 -1
  22. package/dist/rules/checkTypes.js.map +1 -1
  23. package/dist/rules/checkValues.js.map +1 -1
  24. package/dist/rules/emptyTags.js.map +1 -1
  25. package/dist/rules/implementsOnClasses.js.map +1 -1
  26. package/dist/rules/matchDescription.js.map +1 -1
  27. package/dist/rules/matchName.js.map +1 -1
  28. package/dist/rules/multilineBlocks.js.map +1 -1
  29. package/dist/rules/newlineAfterDescription.js.map +1 -1
  30. package/dist/rules/noBadBlocks.js.map +1 -1
  31. package/dist/rules/noDefaults.js.map +1 -1
  32. package/dist/rules/noMissingSyntax.js.map +1 -1
  33. package/dist/rules/noMultiAsterisks.js.map +1 -1
  34. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  35. package/dist/rules/noTypes.js.map +1 -1
  36. package/dist/rules/noUndefinedTypes.js.map +1 -1
  37. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  38. package/dist/rules/requireDescription.js.map +1 -1
  39. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  40. package/dist/rules/requireExample.js.map +1 -1
  41. package/dist/rules/requireFileOverview.js.map +1 -1
  42. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  43. package/dist/rules/requireJsdoc.js.map +1 -1
  44. package/dist/rules/requireParam.js.map +1 -1
  45. package/dist/rules/requireParamDescription.js.map +1 -1
  46. package/dist/rules/requireParamName.js.map +1 -1
  47. package/dist/rules/requireParamType.js.map +1 -1
  48. package/dist/rules/requireProperty.js.map +1 -1
  49. package/dist/rules/requirePropertyDescription.js.map +1 -1
  50. package/dist/rules/requirePropertyName.js.map +1 -1
  51. package/dist/rules/requirePropertyType.js.map +1 -1
  52. package/dist/rules/requireReturns.js.map +1 -1
  53. package/dist/rules/requireReturnsCheck.js.map +1 -1
  54. package/dist/rules/requireReturnsDescription.js.map +1 -1
  55. package/dist/rules/requireReturnsType.js.map +1 -1
  56. package/dist/rules/requireThrows.js.map +1 -1
  57. package/dist/rules/requireYields.js.map +1 -1
  58. package/dist/rules/requireYieldsCheck.js.map +1 -1
  59. package/dist/rules/sortTags.js.map +1 -1
  60. package/dist/rules/tagLines.js.map +1 -1
  61. package/dist/rules/validTypes.js.map +1 -1
  62. package/dist/tagNames.js.map +1 -1
  63. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/matchName.js"],"names":["context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperies","properties","items","type","comment","required"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[lastIndex];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[lastIndex];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-name',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n match: {\n additionalProperies: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"matchName.js"}
1
+ {"version":3,"file":"matchName.js","names":["iterateJsdoc","context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperies","properties","items","type","comment","required"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[lastIndex];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[lastIndex];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-name',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n match: {\n additionalProperies: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/multilineBlocks.js"],"names":["context","jsdoc","utils","allowMultipleTags","noFinalLineText","noZeroLineText","noSingleLineBlocks","singleLineTags","noMultilineBlocks","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","obj","desc","type","typ","name","nme","lineEnd","postType","postName","postTag","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties","anyOf","enum","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n noFinalLineText = true,\n noZeroLineText = true,\n noSingleLineBlocks = false,\n singleLineTags = [\n 'lends', 'type',\n ],\n noMultilineBlocks = false,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[prop] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n tag: tg,\n type: typ,\n name: nme,\n lineEnd,\n postType,\n postName,\n postTag,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-multiline-blocks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"multilineBlocks.js"}
1
+ {"version":3,"file":"multilineBlocks.js","names":["iterateJsdoc","context","jsdoc","utils","allowMultipleTags","noFinalLineText","noZeroLineText","noSingleLineBlocks","singleLineTags","noMultilineBlocks","minimumLengthForMultiline","Number","POSITIVE_INFINITY","multilineTags","options","source","tokens","description","tag","sourceLength","length","isInvalidSingleLine","tagName","includes","slice","fixer","makeMultiline","reportJSDoc","lineChecks","line","emptyTokens","delimiter","start","addLine","finalLine","finalLineTokens","trim","trimEnd","prop","end","tags","hasATag","filterTags","tg","number","reduce","obj","desc","type","typ","name","nme","lineEnd","postType","postName","postTag","nameOrDescription","seedTokens","postDelimiter","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties","anyOf","enum","items"],"sources":["../../src/rules/multilineBlocks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowMultipleTags = true,\n noFinalLineText = true,\n noZeroLineText = true,\n noSingleLineBlocks = false,\n singleLineTags = [\n 'lends', 'type',\n ],\n noMultilineBlocks = false,\n minimumLengthForMultiline = Number.POSITIVE_INFINITY,\n multilineTags = [\n '*',\n ],\n } = context.options[0] || {};\n\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n description,\n tag,\n } = tokens;\n const sourceLength = jsdoc.source.length;\n\n const isInvalidSingleLine = (tagName) => {\n return noSingleLineBlocks &&\n (!tagName ||\n !singleLineTags.includes(tagName) && !singleLineTags.includes('*'));\n };\n\n if (sourceLength === 1) {\n if (!isInvalidSingleLine(tag.slice(1))) {\n return;\n }\n\n const fixer = () => {\n utils.makeMultiline();\n };\n\n utils.reportJSDoc(\n 'Single line blocks are not permitted by your configuration.',\n null,\n fixer,\n true,\n );\n\n return;\n }\n\n const lineChecks = () => {\n if (\n noZeroLineText &&\n (tag || description)\n ) {\n const fixer = () => {\n const line = {\n ...tokens,\n };\n utils.emptyTokens(tokens);\n const {\n tokens: {\n delimiter,\n start,\n },\n } = jsdoc.source[1];\n utils.addLine(1, {\n ...line,\n delimiter,\n start,\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the \"0th\" line (after the `/**`).',\n null,\n fixer,\n );\n\n return;\n }\n\n const finalLine = jsdoc.source[jsdoc.source.length - 1];\n const finalLineTokens = finalLine.tokens;\n if (\n noFinalLineText &&\n finalLineTokens.description.trim()\n ) {\n const fixer = () => {\n const line = {\n ...finalLineTokens,\n };\n line.description = line.description.trimEnd();\n\n const {\n delimiter,\n } = line;\n\n for (const prop of [\n 'delimiter',\n 'postDelimiter',\n 'tag',\n 'type',\n 'lineEnd',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n ]) {\n finalLineTokens[prop] = '';\n }\n\n utils.addLine(jsdoc.source.length - 1, {\n ...line,\n delimiter,\n end: '',\n });\n };\n\n utils.reportJSDoc(\n 'Should have no text on the final line (before the `*/`).',\n null,\n fixer,\n );\n }\n };\n\n if (noMultilineBlocks) {\n if (\n jsdoc.tags.length &&\n (multilineTags.includes('*') || utils.hasATag(multilineTags))\n ) {\n lineChecks();\n\n return;\n }\n\n if (jsdoc.description.length >= minimumLengthForMultiline) {\n lineChecks();\n\n return;\n }\n\n if (\n noSingleLineBlocks &&\n (!jsdoc.tags.length ||\n !utils.filterTags(({\n tag: tg,\n }) => {\n return !isInvalidSingleLine(tg);\n }).length)\n ) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but fixing would result in a single ' +\n 'line block which you have prohibited with `noSingleLineBlocks`.',\n );\n\n return;\n }\n\n if (jsdoc.tags.length > 1) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has multiple tags.',\n );\n\n return;\n }\n } else if (jsdoc.tags.length === 1 && jsdoc.description.trim()) {\n if (!allowMultipleTags) {\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration but the block has a description with a tag.',\n );\n\n return;\n }\n } else {\n const fixer = () => {\n jsdoc.source = [\n {\n number: 1,\n source: '',\n tokens: jsdoc.source.reduce((obj, {\n tokens: {\n description: desc,\n tag: tg,\n type: typ,\n name: nme,\n lineEnd,\n postType,\n postName,\n postTag,\n },\n }) => {\n if (typ) {\n obj.type = typ;\n }\n\n if (tg && typ && nme) {\n obj.postType = postType;\n }\n\n if (nme) {\n obj.name += nme;\n }\n\n if (nme && desc) {\n obj.postName = postName;\n }\n\n obj.description += desc;\n\n const nameOrDescription = obj.description || obj.name;\n if (\n nameOrDescription && nameOrDescription.slice(-1) !== ' '\n ) {\n obj.description += ' ';\n }\n\n obj.lineEnd = lineEnd;\n\n // Already filtered for multiple tags\n obj.tag += tg;\n if (tg) {\n obj.postTag = postTag || ' ';\n }\n\n return obj;\n }, utils.seedTokens({\n delimiter: '/**',\n end: '*/',\n postDelimiter: ' ',\n })),\n },\n ];\n };\n\n utils.reportJSDoc(\n 'Multiline jsdoc blocks are prohibited by ' +\n 'your configuration.',\n null,\n fixer,\n );\n\n return;\n }\n }\n\n lineChecks();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-multiline-blocks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowMultipleTags: {\n type: 'boolean',\n },\n minimumLengthForMultiline: {\n type: 'integer',\n },\n multilineTags: {\n anyOf: [\n {\n enum: [\n '*',\n ],\n type: 'string',\n }, {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n noFinalLineText: {\n type: 'boolean',\n },\n noMultilineBlocks: {\n type: 'boolean',\n },\n noSingleLineBlocks: {\n type: 'boolean',\n },\n noZeroLineText: {\n type: 'boolean',\n },\n singleLineTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/newlineAfterDescription.js"],"names":["jsdoc","report","context","jsdocNode","sourceCode","indent","utils","always","description","trim","tags","length","options","lastDescriptionLine","getDescription","descriptionEndsWithANewline","test","sourceLines","getText","split","fixer","injectedLine","endsWith","splice","replaceText","join","line","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,KAD2B;AAE3BC,EAAAA,MAF2B;AAG3BC,EAAAA,OAH2B;AAI3BC,EAAAA,SAJ2B;AAK3BC,EAAAA,UAL2B;AAM3BC,EAAAA,MAN2B;AAO3BC,EAAAA;AAP2B,CAAD,KAQtB;AACJ,MAAIC,MAAJ;;AAEA,MAAI,CAACP,KAAK,CAACQ,WAAN,CAAkBC,IAAlB,EAAD,IAA6B,CAACT,KAAK,CAACU,IAAN,CAAWC,MAA7C,EAAqD;AACnD;AACD;;AAED,MAAI,KAAKT,OAAO,CAACU,OAAjB,EAA0B;AACxBL,IAAAA,MAAM,GAAGL,OAAO,CAACU,OAAR,CAAgB,CAAhB,MAAuB,QAAhC;AACD,GAFD,MAEO;AACLL,IAAAA,MAAM,GAAG,IAAT;AACD;;AAED,QAAM;AACJC,IAAAA,WADI;AAEJK,IAAAA;AAFI,MAGFP,KAAK,CAACQ,cAAN,EAHJ;AAIA,QAAMC,2BAA2B,GAAI,SAAD,CAAYC,IAAZ,CAAiBR,WAAjB,CAApC;;AAEA,MAAID,MAAJ,EAAY;AACV,QAAI,CAACQ,2BAAL,EAAkC;AAChC,YAAME,WAAW,GAAGb,UAAU,CAACc,OAAX,CAAmBf,SAAnB,EAA8BgB,KAA9B,CAAoC,IAApC,CAApB;AAEAlB,MAAAA,MAAM,CAAC,mEAAD,EAAuEmB,KAAD,IAAW;AACrF;AACA,cAAMC,YAAY,GAAI,GAAEhB,MAAO,IAAV,IAClBY,WAAW,CAACJ,mBAAD,CAAX,CAAiCS,QAAjC,CAA0C,IAA1C,IAAkD,IAAlD,GAAyD,EADvC,CAArB;AAEAL,QAAAA,WAAW,CAACM,MAAZ,CAAmBV,mBAAmB,GAAG,CAAzC,EAA4C,CAA5C,EAA+CQ,YAA/C;AAEA,eAAOD,KAAK,CAACI,WAAN,CAAkBrB,SAAlB,EAA6Bc,WAAW,CAACQ,IAAZ,CAAiB,IAAjB,CAA7B,CAAP;AACD,OAPK,EAOH;AACDC,QAAAA,IAAI,EAAEb;AADL,OAPG,CAAN;AAUD;AACF,GAfD,MAeO,IAAIE,2BAAJ,EAAiC;AACtC,UAAME,WAAW,GAAGb,UAAU,CAACc,OAAX,CAAmBf,SAAnB,EAA8BgB,KAA9B,CAAoC,IAApC,CAApB;AACAlB,IAAAA,MAAM,CAAC,oEAAD,EAAwEmB,KAAD,IAAW;AACtF;AACAH,MAAAA,WAAW,CAACM,MAAZ,CAAmBV,mBAAnB,EAAwC,CAAxC;AAEA,aAAOO,KAAK,CAACI,WAAN,CAAkBrB,SAAlB,EAA6Bc,WAAW,CAACQ,IAAZ,CAAiB,IAAjB,CAA7B,CAAP;AACD,KALK,EAKH;AACDC,MAAAA,IAAI,EAAEb;AADL,KALG,CAAN;AAQD;AACF,CArDc,EAqDZ;AACDc,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJrB,MAAAA,WAAW,EAAE,yDADT;AAEJsB,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,YALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,IAAI,EAAE,CACJ,QADI,EACM,OADN,CADR;AAIEC,MAAAA,IAAI,EAAE;AAJR,KADM,CANJ;AAcJA,IAAAA,IAAI,EAAE;AAdF;AAFL,CArDY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n jsdocNode,\n sourceCode,\n indent,\n utils,\n}) => {\n let always;\n\n if (!jsdoc.description.trim() || !jsdoc.tags.length) {\n return;\n }\n\n if (0 in context.options) {\n always = context.options[0] === 'always';\n } else {\n always = true;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n const descriptionEndsWithANewline = (/\\n\\r?$/u).test(description);\n\n if (always) {\n if (!descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n report('There must be a newline after the description of the JSDoc block.', (fixer) => {\n // Add the new line\n const injectedLine = `${indent} *` +\n (sourceLines[lastDescriptionLine].endsWith('\\r') ? '\\r' : '');\n sourceLines.splice(lastDescriptionLine + 1, 0, injectedLine);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n } else if (descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n report('There must be no newline after the description of the JSDoc block.', (fixer) => {\n // Remove the extra line\n sourceLines.splice(lastDescriptionLine, 1);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces a consistent padding of the block description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"newlineAfterDescription.js"}
1
+ {"version":3,"file":"newlineAfterDescription.js","names":["iterateJsdoc","jsdoc","report","context","jsdocNode","sourceCode","indent","utils","always","description","trim","tags","length","options","lastDescriptionLine","getDescription","descriptionEndsWithANewline","test","sourceLines","getText","split","fixer","injectedLine","endsWith","splice","replaceText","join","line","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type"],"sources":["../../src/rules/newlineAfterDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n jsdocNode,\n sourceCode,\n indent,\n utils,\n}) => {\n let always;\n\n if (!jsdoc.description.trim() || !jsdoc.tags.length) {\n return;\n }\n\n if (0 in context.options) {\n always = context.options[0] === 'always';\n } else {\n always = true;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n const descriptionEndsWithANewline = (/\\n\\r?$/u).test(description);\n\n if (always) {\n if (!descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n report('There must be a newline after the description of the JSDoc block.', (fixer) => {\n // Add the new line\n const injectedLine = `${indent} *` +\n (sourceLines[lastDescriptionLine].endsWith('\\r') ? '\\r' : '');\n sourceLines.splice(lastDescriptionLine + 1, 0, injectedLine);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n } else if (descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n report('There must be no newline after the description of the JSDoc block.', (fixer) => {\n // Remove the extra line\n sourceLines.splice(lastDescriptionLine, 1);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces a consistent padding of the block description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,KAD2B;EAE3BC,MAF2B;EAG3BC,OAH2B;EAI3BC,SAJ2B;EAK3BC,UAL2B;EAM3BC,MAN2B;EAO3BC;AAP2B,CAAD,KAQtB;EACJ,IAAIC,MAAJ;;EAEA,IAAI,CAACP,KAAK,CAACQ,WAAN,CAAkBC,IAAlB,EAAD,IAA6B,CAACT,KAAK,CAACU,IAAN,CAAWC,MAA7C,EAAqD;IACnD;EACD;;EAED,IAAI,KAAKT,OAAO,CAACU,OAAjB,EAA0B;IACxBL,MAAM,GAAGL,OAAO,CAACU,OAAR,CAAgB,CAAhB,MAAuB,QAAhC;EACD,CAFD,MAEO;IACLL,MAAM,GAAG,IAAT;EACD;;EAED,MAAM;IACJC,WADI;IAEJK;EAFI,IAGFP,KAAK,CAACQ,cAAN,EAHJ;EAIA,MAAMC,2BAA2B,GAAI,SAAD,CAAYC,IAAZ,CAAiBR,WAAjB,CAApC;;EAEA,IAAID,MAAJ,EAAY;IACV,IAAI,CAACQ,2BAAL,EAAkC;MAChC,MAAME,WAAW,GAAGb,UAAU,CAACc,OAAX,CAAmBf,SAAnB,EAA8BgB,KAA9B,CAAoC,IAApC,CAApB;MAEAlB,MAAM,CAAC,mEAAD,EAAuEmB,KAAD,IAAW;QACrF;QACA,MAAMC,YAAY,GAAI,GAAEhB,MAAO,IAAV,IAClBY,WAAW,CAACJ,mBAAD,CAAX,CAAiCS,QAAjC,CAA0C,IAA1C,IAAkD,IAAlD,GAAyD,EADvC,CAArB;QAEAL,WAAW,CAACM,MAAZ,CAAmBV,mBAAmB,GAAG,CAAzC,EAA4C,CAA5C,EAA+CQ,YAA/C;QAEA,OAAOD,KAAK,CAACI,WAAN,CAAkBrB,SAAlB,EAA6Bc,WAAW,CAACQ,IAAZ,CAAiB,IAAjB,CAA7B,CAAP;MACD,CAPK,EAOH;QACDC,IAAI,EAAEb;MADL,CAPG,CAAN;IAUD;EACF,CAfD,MAeO,IAAIE,2BAAJ,EAAiC;IACtC,MAAME,WAAW,GAAGb,UAAU,CAACc,OAAX,CAAmBf,SAAnB,EAA8BgB,KAA9B,CAAoC,IAApC,CAApB;IACAlB,MAAM,CAAC,oEAAD,EAAwEmB,KAAD,IAAW;MACtF;MACAH,WAAW,CAACM,MAAZ,CAAmBV,mBAAnB,EAAwC,CAAxC;MAEA,OAAOO,KAAK,CAACI,WAAN,CAAkBrB,SAAlB,EAA6Bc,WAAW,CAACQ,IAAZ,CAAiB,IAAjB,CAA7B,CAAP;IACD,CALK,EAKH;MACDC,IAAI,EAAEb;IADL,CALG,CAAN;EAQD;AACF,CArDc,EAqDZ;EACDc,gBAAgB,EAAE,IADjB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJrB,WAAW,EAAE,yDADT;MAEJsB,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,YALL;IAMJC,MAAM,EAAE,CACN;MACEC,IAAI,EAAE,CACJ,QADI,EACM,OADN,CADR;MAIEC,IAAI,EAAE;IAJR,CADM,CANJ;IAcJA,IAAI,EAAE;EAdF;AAFL,CArDY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noBadBlocks.js"],"names":["commentRegexp","extraAsteriskCommentRegexp","context","sourceCode","allComments","makeReport","ignore","preventAllMultiAsteriskBlocks","options","extraAsterisks","nonJsdocNodes","filter","comment","commentText","getText","sliceIndex","test","multiline","exec","length","tags","slice","some","tag","includes","node","report","fix","fixer","text","replaceText","replace","checkFile","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import {\n parse as commentParser,\n} from 'comment-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\n// Neither a single nor 3+ asterisks are valid jsdoc per\n// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code\nconst commentRegexp = /^\\/\\*(?!\\*)/u;\nconst extraAsteriskCommentRegexp = /^\\/\\*{3,}/u;\n\nexport default iterateJsdoc(({\n context,\n sourceCode,\n allComments,\n makeReport,\n}) => {\n const [\n {\n ignore = [\n 'ts-check',\n 'ts-expect-error',\n 'ts-ignore',\n 'ts-nocheck',\n ],\n preventAllMultiAsteriskBlocks = false,\n } = {},\n ] = context.options;\n\n let extraAsterisks = false;\n const nonJsdocNodes = allComments.filter((comment) => {\n const commentText = sourceCode.getText(comment);\n let sliceIndex = 2;\n if (!commentRegexp.test(commentText)) {\n const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];\n if (!multiline) {\n return false;\n }\n\n sliceIndex = multiline.length;\n extraAsterisks = true;\n if (preventAllMultiAsteriskBlocks) {\n return true;\n }\n }\n\n const [\n {\n tags = {},\n } = {},\n ] = commentParser(\n `${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`,\n );\n\n return tags.length && !tags.some(({\n tag,\n }) => {\n return ignore.includes(tag);\n });\n });\n\n if (!nonJsdocNodes.length) {\n return;\n }\n\n for (const node of nonJsdocNodes) {\n const report = makeReport(context, node);\n\n // eslint-disable-next-line no-loop-func\n const fix = (fixer) => {\n const text = sourceCode.getText(node);\n\n return fixer.replaceText(\n node,\n extraAsterisks ?\n text.replace(extraAsteriskCommentRegexp, '/**') :\n text.replace('/*', '/**'),\n );\n };\n\n report('Expected JSDoc-like comment to begin with two asterisks.', fix);\n }\n}, {\n checkFile: true,\n meta: {\n docs: {\n description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-bad-blocks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n ignore: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n preventAllMultiAsteriskBlocks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"noBadBlocks.js"}
1
+ {"version":3,"file":"noBadBlocks.js","names":["commentRegexp","extraAsteriskCommentRegexp","iterateJsdoc","context","sourceCode","allComments","makeReport","ignore","preventAllMultiAsteriskBlocks","options","extraAsterisks","nonJsdocNodes","filter","comment","commentText","getText","sliceIndex","test","multiline","exec","length","tags","commentParser","slice","some","tag","includes","node","report","fix","fixer","text","replaceText","replace","checkFile","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type"],"sources":["../../src/rules/noBadBlocks.js"],"sourcesContent":["import {\n parse as commentParser,\n} from 'comment-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\n// Neither a single nor 3+ asterisks are valid jsdoc per\n// https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code\nconst commentRegexp = /^\\/\\*(?!\\*)/u;\nconst extraAsteriskCommentRegexp = /^\\/\\*{3,}/u;\n\nexport default iterateJsdoc(({\n context,\n sourceCode,\n allComments,\n makeReport,\n}) => {\n const [\n {\n ignore = [\n 'ts-check',\n 'ts-expect-error',\n 'ts-ignore',\n 'ts-nocheck',\n ],\n preventAllMultiAsteriskBlocks = false,\n } = {},\n ] = context.options;\n\n let extraAsterisks = false;\n const nonJsdocNodes = allComments.filter((comment) => {\n const commentText = sourceCode.getText(comment);\n let sliceIndex = 2;\n if (!commentRegexp.test(commentText)) {\n const multiline = extraAsteriskCommentRegexp.exec(commentText)?.[0];\n if (!multiline) {\n return false;\n }\n\n sliceIndex = multiline.length;\n extraAsterisks = true;\n if (preventAllMultiAsteriskBlocks) {\n return true;\n }\n }\n\n const [\n {\n tags = {},\n } = {},\n ] = commentParser(\n `${commentText.slice(0, 2)}*${commentText.slice(sliceIndex)}`,\n );\n\n return tags.length && !tags.some(({\n tag,\n }) => {\n return ignore.includes(tag);\n });\n });\n\n if (!nonJsdocNodes.length) {\n return;\n }\n\n for (const node of nonJsdocNodes) {\n const report = makeReport(context, node);\n\n // eslint-disable-next-line no-loop-func\n const fix = (fixer) => {\n const text = sourceCode.getText(node);\n\n return fixer.replaceText(\n node,\n extraAsterisks ?\n text.replace(extraAsteriskCommentRegexp, '/**') :\n text.replace('/*', '/**'),\n );\n };\n\n report('Expected JSDoc-like comment to begin with two asterisks.', fix);\n }\n}, {\n checkFile: true,\n meta: {\n docs: {\n description: 'This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-bad-blocks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n ignore: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n preventAllMultiAsteriskBlocks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noDefaults.js"],"names":["context","utils","noOptionalParamNames","options","paramTags","getPresentTags","tag","optional","reportJSDoc","changeTag","name","replace","default","defaultTags","description","trim","postTag","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n const {\n noOptionalParamNames,\n } = context.options[0] || {};\n const paramTags = utils.getPresentTags([\n 'param', 'arg', 'argument',\n ]);\n for (const tag of paramTags) {\n if (noOptionalParamNames && tag.optional) {\n utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '$1'),\n });\n });\n } else if (tag.default) {\n utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '[$1]'),\n });\n });\n }\n }\n\n const defaultTags = utils.getPresentTags([\n 'default', 'defaultvalue',\n ]);\n for (const tag of defaultTags) {\n if (tag.description.trim()) {\n utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n description: '',\n postTag: '',\n });\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports defaults being used on the relevant portion of `@param` or `@default`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-defaults',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n noOptionalParamNames: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noDefaults.js"}
1
+ {"version":3,"file":"noDefaults.js","names":["iterateJsdoc","context","utils","noOptionalParamNames","options","paramTags","getPresentTags","tag","optional","reportJSDoc","changeTag","name","replace","default","defaultTags","description","trim","postTag","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","type","comment"],"sources":["../../src/rules/noDefaults.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n const {\n noOptionalParamNames,\n } = context.options[0] || {};\n const paramTags = utils.getPresentTags([\n 'param', 'arg', 'argument',\n ]);\n for (const tag of paramTags) {\n if (noOptionalParamNames && tag.optional) {\n utils.reportJSDoc(`Optional param names are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '$1'),\n });\n });\n } else if (tag.default) {\n utils.reportJSDoc(`Defaults are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n name: tag.name.replace(/([^=]*)(=.+)?/u, '[$1]'),\n });\n });\n }\n }\n\n const defaultTags = utils.getPresentTags([\n 'default', 'defaultvalue',\n ]);\n for (const tag of defaultTags) {\n if (tag.description.trim()) {\n utils.reportJSDoc(`Default values are not permitted on @${tag.tag}.`, tag, () => {\n utils.changeTag(tag, {\n description: '',\n postTag: '',\n });\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports defaults being used on the relevant portion of `@param` or `@default`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-defaults',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n noOptionalParamNames: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,OAD2B;EAE3BC;AAF2B,CAAD,KAGtB;EACJ,MAAM;IACJC;EADI,IAEFF,OAAO,CAACG,OAAR,CAAgB,CAAhB,KAAsB,EAF1B;EAGA,MAAMC,SAAS,GAAGH,KAAK,CAACI,cAAN,CAAqB,CACrC,OADqC,EAC5B,KAD4B,EACrB,UADqB,CAArB,CAAlB;;EAGA,KAAK,MAAMC,GAAX,IAAkBF,SAAlB,EAA6B;IAC3B,IAAIF,oBAAoB,IAAII,GAAG,CAACC,QAAhC,EAA0C;MACxCN,KAAK,CAACO,WAAN,CAAmB,8CAA6CF,GAAG,CAACA,GAAI,GAAxE,EAA4EA,GAA5E,EAAiF,MAAM;QACrFL,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;UACnBI,IAAI,EAAEJ,GAAG,CAACI,IAAJ,CAASC,OAAT,CAAiB,gBAAjB,EAAmC,IAAnC;QADa,CAArB;MAGD,CAJD;IAKD,CAND,MAMO,IAAIL,GAAG,CAACM,OAAR,EAAiB;MACtBX,KAAK,CAACO,WAAN,CAAmB,kCAAiCF,GAAG,CAACA,GAAI,GAA5D,EAAgEA,GAAhE,EAAqE,MAAM;QACzEL,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;UACnBI,IAAI,EAAEJ,GAAG,CAACI,IAAJ,CAASC,OAAT,CAAiB,gBAAjB,EAAmC,MAAnC;QADa,CAArB;MAGD,CAJD;IAKD;EACF;;EAED,MAAME,WAAW,GAAGZ,KAAK,CAACI,cAAN,CAAqB,CACvC,SADuC,EAC5B,cAD4B,CAArB,CAApB;;EAGA,KAAK,MAAMC,GAAX,IAAkBO,WAAlB,EAA+B;IAC7B,IAAIP,GAAG,CAACQ,WAAJ,CAAgBC,IAAhB,EAAJ,EAA4B;MAC1Bd,KAAK,CAACO,WAAN,CAAmB,wCAAuCF,GAAG,CAACA,GAAI,GAAlE,EAAsEA,GAAtE,EAA2E,MAAM;QAC/EL,KAAK,CAACQ,SAAN,CAAgBH,GAAhB,EAAqB;UACnBQ,WAAW,EAAE,EADM;UAEnBE,OAAO,EAAE;QAFU,CAArB;MAID,CALD;IAMD;EACF;AACF,CAvCc,EAuCZ;EACDC,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJL,WAAW,EAAE,0FADT;MAEJM,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YADR,CADK,EAIL;cACEL,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBADC,CADC;gBAIV5B,OAAO,EAAE;kBACP4B,IAAI,EAAE;gBADC;cAJC,CAFd;cAUEA,IAAI,EAAE;YAVR,CAJK;UADF,CADC;UAoBRA,IAAI,EAAE;QApBE,CADA;QAuBV1B,oBAAoB,EAAE;UACpB0B,IAAI,EAAE;QADc;MAvBZ,CAFd;MA6BEA,IAAI,EAAE;IA7BR,CADM,CANJ;IAuCJA,IAAI,EAAE;EAvCF;AAFL,CAvCY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noMissingSyntax.js"],"names":["setDefaults","state","selectorMap","incrementSelector","selector","comment","context","node","info","sourceCode","options","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","contextSelected","exit","length","report","loc","start","column","line","message","some","contextKey","undefined","minimum","Object","values","every","cmmnt","data","end","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type"],"mappings":"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","sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n info: {\n comment,\n },\n sourceCode,\n state,\n}) => {\n if (!context.options[0]) {\n // Handle error later\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n\n setDefaults(state);\n\n incrementSelector(state, contextStr, comment);\n}, {\n contextSelected: true,\n exit ({\n context,\n state,\n }) {\n if (!context.options.length) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `context` option.',\n });\n\n return;\n }\n\n setDefaults(state);\n\n const {\n contexts,\n } = context.options[0];\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = cntxt?.comment ?? '';\n\n const contextKey = contextStr === 'any' ? undefined : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (cntxt?.minimum ?? 1)) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (cntxt?.minimum ?? 1);\n }))\n ) {\n const message = cntxt?.message ?? 'Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {\n line: 1,\n },\n start: {\n line: 1,\n },\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-missing-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMissingSyntax.js"}
1
+ {"version":3,"file":"noMissingSyntax.js","names":["setDefaults","state","selectorMap","incrementSelector","selector","comment","iterateJsdoc","context","node","info","sourceCode","options","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","contextSelected","exit","length","report","loc","start","column","line","message","some","contextKey","undefined","minimum","Object","values","every","cmmnt","data","end","matchContext","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type"],"sources":["../../src/rules/noMissingSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst setDefaults = (state) => {\n if (!state.selectorMap) {\n state.selectorMap = {};\n }\n};\n\nconst incrementSelector = (state, selector, comment) => {\n if (!state.selectorMap[selector]) {\n state.selectorMap[selector] = {};\n }\n\n if (!state.selectorMap[selector][comment]) {\n state.selectorMap[selector][comment] = 0;\n }\n\n state.selectorMap[selector][comment]++;\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n info: {\n comment,\n },\n sourceCode,\n state,\n}) => {\n if (!context.options[0]) {\n // Handle error later\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n\n setDefaults(state);\n\n incrementSelector(state, contextStr, comment);\n}, {\n contextSelected: true,\n exit ({\n context,\n state,\n }) {\n if (!context.options.length) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: 'Rule `no-missing-syntax` is missing a `context` option.',\n });\n\n return;\n }\n\n setDefaults(state);\n\n const {\n contexts,\n } = context.options[0];\n\n // Report when MISSING\n contexts.some((cntxt) => {\n const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt;\n const comment = cntxt?.comment ?? '';\n\n const contextKey = contextStr === 'any' ? undefined : contextStr;\n\n if (\n (!state.selectorMap[contextKey] ||\n !state.selectorMap[contextKey][comment] ||\n state.selectorMap[contextKey][comment] < (cntxt?.minimum ?? 1)) &&\n (contextStr !== 'any' || Object.values(state.selectorMap).every((cmmnt) => {\n return !cmmnt[comment] || cmmnt[comment] < (cntxt?.minimum ?? 1);\n }))\n ) {\n const message = cntxt?.message ?? 'Syntax is required: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n context.report({\n data: {\n comment,\n context: contextStr,\n },\n loc: {\n end: {\n line: 1,\n },\n start: {\n line: 1,\n },\n },\n message,\n });\n\n return true;\n }\n\n return false;\n });\n },\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are always expected.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-missing-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n minimum: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noMultiAsterisks.js"],"names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noMultiAsterisks.js"}
1
+ {"version":3,"file":"noMultiAsterisks.js","names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noRestrictedSyntax.js"],"names":["node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"mappings":"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","sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noRestrictedSyntax.js"}
1
+ {"version":3,"file":"noRestrictedSyntax.js","names":["iterateJsdoc","node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,IAD2B;EAE3BC,OAF2B;EAG3BC,IAAI,EAAE;IACJC;EADI,CAHqB;EAM3BC,UAN2B;EAO3BC;AAP2B,CAAD,KAQtB;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAR,CAAgBC,MAArB,EAA6B;IAC3BF,MAAM,CAAC,4DAAD,CAAN;IAEA;EACD;;EAED,MAAM;IACJG;EADI,IAEFP,OAAO,CAACK,OAAR,CAAgB,CAAhB,CAFJ;EAIA,MAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAT,CAAeC,KAAD,IAAW;IAC5C,OAAO,OAAOA,KAAP,KAAiB,QAAjB,GACLC,gBAAA,CAAQC,OAAR,CAAgBb,IAAhB,EAAsBY,gBAAA,CAAQE,KAAR,CAAcH,KAAd,CAAtB,EAA4C,IAA5C,EAAkD;MAChDI,WAAW,EAAEX,UAAU,CAACW;IADwB,CAAlD,CADK,GAIL,CAAC,CAACJ,KAAK,CAACV,OAAP,IAAkBU,KAAK,CAACV,OAAN,KAAkB,KAApC,IAA6CW,gBAAA,CAAQC,OAAR,CAAgBb,IAAhB,EAAsBY,gBAAA,CAAQE,KAAR,CAAcH,KAAK,CAACV,OAApB,CAAtB,EAAoD,IAApD,EAA0D;MACtGc,WAAW,EAAEX,UAAU,CAACW;IAD8E,CAA1D,CAA9C,KAGEZ,OAAO,KAAKQ,KAAK,CAACR,OAPtB;EAQD,CAToB,CAArB,CAXI,CAsBJ;EACA;;EACA,IAAI,CAACM,YAAL,EAAmB;IACjB;EACD;;EAED,MAAMO,UAAU,GAAG,OAAOP,YAAP,KAAwB,QAAxB,GACjBA,YAAY,CAACR,OAAb,IAAwB,KADP,GAEjBQ,YAFF;EAGA,MAAMQ,OAAO,GAAG,CAAAR,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEQ,OAAd,KACd,uCACGd,OAAO,GAAG,mBAAH,GAAyB,EADnC,CADF;EAIAE,MAAM,CAACY,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsB;IAC1Bd,OAD0B;IAE1BF,OAAO,EAAEe;EAFiB,CAAtB,CAAN;AAID,CA/Cc,EA+CZ;EACDE,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVlB,QAAQ,EAAE;UACRmB,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YADR,CADK,EAIL;cACEJ,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVvB,OAAO,EAAE;kBACP0B,IAAI,EAAE;gBADC,CADC;gBAIV5B,OAAO,EAAE;kBACP4B,IAAI,EAAE;gBADC,CAJC;gBAOVZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBADC;cAPC,CAFd;cAaEA,IAAI,EAAE;YAbR,CAJK;UADF,CADC;UAuBRA,IAAI,EAAE;QAvBE;MADA,CAFd;MA6BEC,QAAQ,EAAE,CACR,UADQ,CA7BZ;MAgCED,IAAI,EAAE;IAhCR,CADM,CANJ;IA0CJA,IAAI,EAAE;EA1CF;AAFL,CA/CY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noTypes.js"],"names":["removeType","tokens","postTag","type","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,CAAC;AAClBC,EAAAA;AADkB,CAAD,KAEb;AACJA,EAAAA,MAAM,CAACC,OAAP,GAAiB,EAAjB;AACAD,EAAAA,MAAM,CAACE,IAAP,GAAc,EAAd;AACD,CALD;;eAOe,2BAAa,CAAC;AAC3BC,EAAAA;AAD2B,CAAD,KAEtB;AACJ,MAAI,CAACA,KAAK,CAACC,mBAAN,EAAD,IAAgC,CAACD,KAAK,CAACE,iBAAN,EAArC,EAAgE;AAC9D;AACD;;AAED,QAAMC,IAAI,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAChC,OADgC,EACvB,KADuB,EAChB,UADgB,EACJ,SADI,EACO,QADP,CAArB,CAAb;;AAIA,OAAK,MAAMC,GAAX,IAAkBF,IAAlB,EAAwB;AACtB,QAAIE,GAAG,CAACN,IAAR,EAAc;AACZC,MAAAA,KAAK,CAACM,WAAN,CAAmB,+BAA8BD,GAAG,CAACA,GAAI,GAAzD,EAA6DA,GAA7D,EAAkE,MAAM;AACtE,aAAK,MAAME,MAAX,IAAqBF,GAAG,CAACE,MAAzB,EAAiC;AAC/BX,UAAAA,UAAU,CAACW,MAAD,CAAV;AACD;AACF,OAJD;AAKD;AACF;AACF,CApBc,EAoBZ;AACDC,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,+DADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEpB,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEgB,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVI,gBAAAA,OAAO,EAAE;AACPrB,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVsB,gBAAAA,OAAO,EAAE;AACPtB,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE;AADA,OAFd;AA0BEA,MAAAA,IAAI,EAAE;AA1BR,KADM,CANJ;AAoCJA,IAAAA,IAAI,EAAE;AApCF;AAFL,CApBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noTypes.js"}
1
+ {"version":3,"file":"noTypes.js","names":["removeType","tokens","postTag","type","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,CAAC;EAClBC;AADkB,CAAD,KAEb;EACJA,MAAM,CAACC,OAAP,GAAiB,EAAjB;EACAD,MAAM,CAACE,IAAP,GAAc,EAAd;AACD,CALD;;eAOe,IAAAC,qBAAA,EAAa,CAAC;EAC3BC;AAD2B,CAAD,KAEtB;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAN,EAAD,IAAgC,CAACD,KAAK,CAACE,iBAAN,EAArC,EAAgE;IAC9D;EACD;;EAED,MAAMC,IAAI,GAAGH,KAAK,CAACI,cAAN,CAAqB,CAChC,OADgC,EACvB,KADuB,EAChB,UADgB,EACJ,SADI,EACO,QADP,CAArB,CAAb;;EAIA,KAAK,MAAMC,GAAX,IAAkBF,IAAlB,EAAwB;IACtB,IAAIE,GAAG,CAACP,IAAR,EAAc;MACZE,KAAK,CAACM,WAAN,CAAmB,+BAA8BD,GAAG,CAACA,GAAI,GAAzD,EAA6DA,GAA7D,EAAkE,MAAM;QACtE,KAAK,MAAME,MAAX,IAAqBF,GAAG,CAACE,MAAzB,EAAiC;UAC/BZ,UAAU,CAACY,MAAD,CAAV;QACD;MACF,CAJD;IAKD;EACF;AACF,CApBc,EAoBZ;EACDC,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACErB,IAAI,EAAE;YADR,CADK,EAIL;cACEiB,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPtB,IAAI,EAAE;gBADC,CADC;gBAIVuB,OAAO,EAAE;kBACPvB,IAAI,EAAE;gBADC;cAJC,CAFd;cAUEA,IAAI,EAAE;YAVR,CAJK;UADF,CADC;UAoBRA,IAAI,EAAE;QApBE;MADA,CAFd;MA0BEA,IAAI,EAAE;IA1BR,CADM,CANJ;IAoCJA,IAAI,EAAE;EApCF;AAFL,CApBY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\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,"file":"noUndefinedTypes.js","names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","tryParseType","parseType","traverse","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireAsteriskPrefix.js"],"names":["context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [\n defaultRequireValue = 'always',\n {\n tags: tagMap = {},\n } = {},\n ] = context.options;\n\n const {\n source,\n } = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({\n number,\n tokens,\n }) => {\n const {\n delimiter,\n tag,\n end,\n description,\n } = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"requireAsteriskPrefix.js"}
1
+ {"version":3,"file":"requireAsteriskPrefix.js","names":["iterateJsdoc","context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","slice","any","iterateAllJsdocs","meta","fixable","schema","enum","type","additionalProperties","properties","items"],"sources":["../../src/rules/requireAsteriskPrefix.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [\n defaultRequireValue = 'always',\n {\n tags: tagMap = {},\n } = {},\n ] = context.options;\n\n const {\n source,\n } = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n let currentTag;\n source.some(({\n number,\n tokens,\n }) => {\n const {\n delimiter,\n tag,\n end,\n description,\n } = tokens;\n\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["checkDescription","description","trim","split","filter","Boolean","length","jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","getDescription","descTags","getPresentTags","tag","functionExamples","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst checkDescription = (description) => {\n return description\n .trim()\n .split('\\n')\n .filter(Boolean)\n .length;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n descriptionStyle = 'body',\n } = 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\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n if (descriptionStyle !== 'tag') {\n const {\n description,\n } = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags([\n 'desc', 'description',\n ]);\n if (descTags.length) {\n const [\n {\n tag: tagName,\n },\n ] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n jsdoc.tags.filter(({\n tag,\n }) => {\n return 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 for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\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 descriptionStyle: {\n enum: [\n 'body', 'tag', 'any',\n ],\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,"file":"requireDescription.js","names":["checkDescription","description","trim","split","filter","Boolean","length","iterateJsdoc","jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","getDescription","descTags","getPresentTags","tag","functionExamples","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy"],"sources":["../../src/rules/requireDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst checkDescription = (description) => {\n return description\n .trim()\n .split('\\n')\n .filter(Boolean)\n .length;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n descriptionStyle = 'body',\n } = 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\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n if (descriptionStyle !== 'tag') {\n const {\n description,\n } = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags([\n 'desc', 'description',\n ]);\n if (descTags.length) {\n const [\n {\n tag: tagName,\n },\n ] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n jsdoc.tags.filter(({\n tag,\n }) => {\n return 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 for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\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 descriptionStyle: {\n enum: [\n 'body', 'tag', 'any',\n ],\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","matchAll","map","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/ug;\n\n const puncts = txt.matchAll(sentenceEndGrouping);\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description || (/^\\n+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + escapeStringRegexp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {\n description,\n } = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^- /u, '').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireDescriptionCompleteSentence.js"}
1
+ {"version":3,"file":"requireDescriptionCompleteSentence.js","names":["otherDescriptiveTags","Set","extractParagraphs","text","split","extractSentences","abbreviationsRegex","txt","replace","sentenceEndGrouping","puncts","matchAll","map","sentence","idx","test","isNewLinePrecededByAPeriod","lastLineEndsSentence","lines","some","line","isCapitalized","str","toUpperCase","isTable","charAt","capitalize","slice","validateDescription","description","reportOrig","jsdocNode","sourceCode","tag","newlineBeforeCapsAssumesBadSentenceEnd","paragraphs","paragraph","parIdx","sentences","fix","fixer","getText","pop","RegExp","escapeStringRegexp","filter","sentence_","beginning","reg","_$0","$1","replaceText","report","msg","tagObj","source","number","column","paragraphNoAbbreviations","iterateJsdoc","context","jsdoc","utils","options","abbreviations","length","abbreviation","join","getDescription","forEachPreferredTag","matchingJsdocTag","desc","name","getTagDescription","trim","tagsWithNames","getTagsByType","tags","tagsWithoutNames","filterTags","tagName","has","hasOptionTag","trimEnd","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","type"],"sources":["../../src/rules/requireDescriptionCompleteSentence.js"],"sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst otherDescriptiveTags = new Set([\n // 'copyright' and 'see' might be good addition, but as the former may be\n // sensitive text, and the latter may have just a link, they are not\n // included by default\n 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo',\n 'deprecated', 'throws', 'exception', 'yields', 'yield',\n]);\n\nconst extractParagraphs = (text) => {\n return text.split(/(?<![;:])\\n\\n/u);\n};\n\nconst extractSentences = (text, abbreviationsRegex) => {\n const txt = text\n\n // Remove all {} tags.\n .replace(/\\{[\\s\\S]*?\\}\\s*/gu, '')\n\n // Remove custom abbreviations\n .replace(abbreviationsRegex, '');\n\n const sentenceEndGrouping = /([.?!])(?:\\s+|$)/ug;\n\n const puncts = txt.matchAll(sentenceEndGrouping);\n\n return txt\n\n .split(/[.?!](?:\\s+|$)/u)\n\n // Re-add the dot.\n .map((sentence, idx) => {\n return /^\\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;\n });\n};\n\nconst isNewLinePrecededByAPeriod = (text) => {\n let lastLineEndsSentence;\n\n const lines = text.split('\\n');\n\n return !lines.some((line) => {\n if (lastLineEndsSentence === false && /^[A-Z][a-z]/u.test(line)) {\n return true;\n }\n\n lastLineEndsSentence = /[.:?!|]$/u.test(line);\n\n return false;\n });\n};\n\nconst isCapitalized = (str) => {\n return str[0] === str[0].toUpperCase();\n};\n\nconst isTable = (str) => {\n return str.charAt() === '|';\n};\n\nconst capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nconst validateDescription = (\n description, reportOrig, jsdocNode, abbreviationsRegex,\n sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,\n) => {\n if (!description || (/^\\n+$/u).test(description)) {\n return false;\n }\n\n const paragraphs = extractParagraphs(description);\n\n return paragraphs.some((paragraph, parIdx) => {\n const sentences = extractSentences(paragraph, abbreviationsRegex);\n\n const fix = (fixer) => {\n let text = sourceCode.getText(jsdocNode);\n\n if (!/[.:?!]$/u.test(paragraph)) {\n const line = paragraph.split('\\n').pop();\n\n text = text.replace(new RegExp(`${escapeStringRegexp(line)}$`, 'mu'), `${line}.`);\n }\n\n for (const sentence of sentences.filter((sentence_) => {\n return !(/^\\s*$/u).test(sentence_) && !isCapitalized(sentence_) &&\n !isTable(sentence_);\n })) {\n const beginning = sentence.split('\\n')[0];\n\n if (tag.tag) {\n const reg = new RegExp(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(beginning)}`, 'u');\n\n text = text.replace(reg, (_$0, $1) => {\n return $1 + capitalize(beginning);\n });\n } else {\n text = text.replace(new RegExp('((?:[.!?]|\\\\*|\\\\})\\\\s*)' + escapeStringRegexp(beginning), 'u'), '$1' + capitalize(beginning));\n }\n }\n\n return fixer.replaceText(jsdocNode, text);\n };\n\n const report = (msg, fixer, tagObj) => {\n if ('line' in tagObj) {\n tagObj.line += parIdx * 2;\n } else {\n tagObj.source[0].number += parIdx * 2;\n }\n\n // Avoid errors if old column doesn't exist here\n tagObj.column = 0;\n reportOrig(msg, fixer, tagObj);\n };\n\n if (sentences.some((sentence) => {\n return !(/^\\s*$/u).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);\n })) {\n report('Sentence should start with an uppercase character.', fix, tag);\n }\n\n const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');\n\n if (!/[.!?|]\\s*$/u.test(paragraphNoAbbreviations)) {\n report('Sentence must end with a period.', fix, tag);\n\n return true;\n }\n\n if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {\n report('A line of text is started with an uppercase character, but preceding line does not end the sentence.', null, tag);\n\n return true;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n context,\n jsdoc,\n report,\n jsdocNode,\n utils,\n}) => {\n const options = context.options[0] || {};\n const {\n abbreviations = [],\n newlineBeforeCapsAssumesBadSentenceEnd = false,\n } = options;\n\n const abbreviationsRegex = abbreviations.length ?\n new RegExp('\\\\b' + abbreviations.map((abbreviation) => {\n return escapeStringRegexp(abbreviation.replace(/\\.$/ug, '') + '.');\n }).join('|') + '(?:$|\\\\s)', 'gu') :\n '';\n\n const {\n description,\n } = utils.getDescription();\n\n if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {\n line: jsdoc.source[0].number + 1,\n }, newlineBeforeCapsAssumesBadSentenceEnd)) {\n return;\n }\n\n utils.forEachPreferredTag('description', (matchingJsdocTag) => {\n const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();\n validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);\n }, true);\n\n const {\n tagsWithNames,\n } = utils.getTagsByType(jsdoc.tags);\n const tagsWithoutNames = utils.filterTags(({\n tag: tagName,\n }) => {\n return otherDescriptiveTags.has(tagName) ||\n utils.hasOptionTag(tagName) && !tagsWithNames.some(({\n tag,\n }) => {\n // If user accidentally adds tags with names (or like `returns`\n // get parsed as having names), do not add to this list\n return tag === tagName;\n });\n });\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^- /u, '').trimEnd();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();\n\n return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n abbreviations: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n newlineBeforeCapsAssumesBadSentenceEnd: {\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}