eslint-plugin-jsdoc 39.2.7 → 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.
- package/CONTRIBUTING.md +12 -12
- package/README.md +45 -0
- package/dist/WarnSettings.js.map +1 -1
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/defaultTagOrder.js.map +1 -1
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js.map +1 -1
- package/dist/getDefaultTagStructureForMode.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/iterateJsdoc.js +57 -16
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +5 -1
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkAlignment.js.map +1 -1
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkSyntax.js.map +1 -1
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js +25 -12
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/implementsOnClasses.js.map +1 -1
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/newlineAfterDescription.js.map +1 -1
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireParamDescription.js.map +1 -1
- package/dist/rules/requireParamName.js.map +1 -1
- package/dist/rules/requireParamType.js.map +1 -1
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requirePropertyDescription.js.map +1 -1
- package/dist/rules/requirePropertyName.js.map +1 -1
- package/dist/rules/requirePropertyType.js.map +1 -1
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireReturnsDescription.js.map +1 -1
- package/dist/rules/requireReturnsType.js.map +1 -1
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/requireYieldsCheck.js.map +1 -1
- package/dist/rules/sortTags.js.map +1 -1
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/validTypes.js.map +1 -1
- package/dist/tagNames.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/matchDescription.js"],"names":["matchDescriptionDefault","stringOrDefault","value","userDefault","jsdoc","report","context","utils","mainDescription","matchDescription","message","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","keys","length","hasOptionTag","Boolean","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n tags,\n } = context.options[0] || {};\n\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n if (!tags || !Object.keys(tags).length) {\n return;\n }\n\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasOptionTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description',\n },\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 mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"matchDescription.js"}
|
|
1
|
+
{"version":3,"file":"matchDescription.js","names":["matchDescriptionDefault","stringOrDefault","value","userDefault","iterateJsdoc","jsdoc","report","context","utils","mainDescription","matchDescription","message","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","keys","length","hasOptionTag","Boolean","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum"],"sources":["../../src/rules/matchDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n tags,\n } = context.options[0] || {};\n\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n if (!tags || !Object.keys(tags).length) {\n return;\n }\n\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasOptionTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description',\n },\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 mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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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"}
|