eslint-plugin-jsdoc 43.1.1 → 44.0.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/README.md +58 -24393
- package/dist/WarnSettings.js.map +1 -1
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js.map +1 -1
- package/dist/iterateJsdoc.js +2 -2
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkExamples.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/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js.map +1 -1
- 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/informativeDocs.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/noBadBlocks.js.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.js.map +1 -1
- package/dist/rules/noBlankBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.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/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/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/textEscaping.js.map +1 -1
- package/dist/rules/validTypes.js.map +1 -1
- package/dist/utils/hasReturnValue.js.map +1 -1
- package/docs/advanced.md +102 -0
- package/docs/rules/check-access.md +193 -0
- package/docs/rules/check-alignment.md +169 -0
- package/docs/rules/check-examples.md +784 -0
- package/docs/rules/check-indentation.md +296 -0
- package/docs/rules/check-line-alignment.md +995 -0
- package/docs/rules/check-param-names.md +1035 -0
- package/docs/rules/check-property-names.md +244 -0
- package/docs/rules/check-syntax.md +80 -0
- package/docs/rules/check-tag-names.md +1117 -0
- package/docs/rules/check-types.md +1198 -0
- package/docs/rules/check-values.md +409 -0
- package/docs/rules/empty-tags.md +220 -0
- package/docs/rules/implements-on-classes.md +219 -0
- package/docs/rules/informative-docs.md +400 -0
- package/docs/rules/match-description.md +979 -0
- package/docs/rules/match-name.md +243 -0
- package/docs/rules/multiline-blocks.md +398 -0
- package/docs/rules/no-bad-blocks.md +174 -0
- package/docs/rules/no-blank-block-descriptions.md +91 -0
- package/docs/rules/no-blank-blocks.md +98 -0
- package/docs/rules/no-defaults.md +207 -0
- package/docs/rules/no-missing-syntax.md +269 -0
- package/docs/rules/no-multi-asterisks.md +278 -0
- package/docs/rules/no-restricted-syntax.md +377 -0
- package/docs/rules/no-types.md +168 -0
- package/docs/rules/no-undefined-types.md +731 -0
- package/docs/rules/require-asterisk-prefix.md +297 -0
- package/docs/rules/require-description-complete-sentence.md +584 -0
- package/docs/rules/require-description.md +820 -0
- package/docs/rules/require-example.md +390 -0
- package/docs/rules/require-file-overview.md +317 -0
- package/docs/rules/require-hyphen-before-param-description.md +258 -0
- package/docs/rules/require-jsdoc.md +1837 -0
- package/docs/rules/require-param-description.md +1816 -0
- package/docs/rules/require-param-name.md +238 -0
- package/docs/rules/require-param-type.md +163 -0
- package/docs/rules/require-param.md +227 -0
- package/docs/rules/require-property-description.md +128 -0
- package/docs/rules/require-property-name.md +88 -0
- package/docs/rules/require-property-type.md +79 -0
- package/docs/rules/require-property.md +79 -0
- package/docs/rules/require-returns-check.md +1164 -0
- package/docs/rules/require-returns-description.md +1053 -0
- package/docs/rules/require-returns-type.md +181 -0
- package/docs/rules/require-returns.md +144 -0
- package/docs/rules/require-throws.md +326 -0
- package/docs/rules/require-yields-check.md +823 -0
- package/docs/rules/require-yields.md +544 -0
- package/docs/rules/sort-tags.md +635 -0
- package/docs/rules/tag-lines.md +551 -0
- package/docs/rules/text-escaping.md +177 -0
- package/docs/rules/valid-types.md +834 -0
- package/docs/settings.md +355 -0
- package/package.json +15 -15
package/dist/jsdocUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsdocUtils.js","names":["_jsdoccomment","require","_WarnSettings","_interopRequireDefault","_getDefaultTagStructureForMode","_tagNames","_hasReturnValue","obj","__esModule","default","tagStructure","setTagStructure","mode","getDefaultTagStructureForMode","flattenRoots","params","root","hasRestElement","hasPropertyRest","rests","names","reduce","acc","cur","Array","isArray","nms","flattened","inner","filter","Boolean","push","concat","isRestProperty","restElement","name","getPropertiesFromPropertySignature","propSignature","type","undefined","typeAnnotation","key","members","map","member","getFunctionParameterNames","functionNode","checkDefaultObjects","_functionNode$value","getParamName","param","isProperty","_param$left","_param$left3","hasLeftTypeAnnotation","left","_typeAnnotation$typeA","propertyNames","annotationParamName","hasLeftName","_param$left2","properties","roots","prop","value","elements","idx","right","raw","_param$left4","includes","argument","parameter","Error","hasParams","length","getJsdocTagsDeep","jsdoc","targetTagName","ret","tag","tags","entries","modeWarnSettings","WarnSettings","getTagNamesForMode","context","jsdocTags","typeScriptTags","closureTags","hasBeenWarned","report","loc","start","column","line","message","markSettingAsWarned","getPreferredTagName","tagPreference","_Object$entries$find","prefValues","Object","values","some","prefVal","replacement","tagPreferenceFixed","fromEntries","replace","prototype","hasOwnProperty","call","tagNames","preferredTagName","find","aliases","isValidTag","definedTags","validTagNames","keys","flat","additionalTags","allTags","hasTag","targetTagLower","toLowerCase","doc","hasATag","targetTagNames","mayBeUndefinedTypeTag","tagType","trim","parsedTypes","tryParse","elem","ensureMap","has","set","Map","get","overrideTagStructure","structuredTags","tagMap","required","tagStruct","requiredName","requiredType","typeOrNameRequired","getTagStructureForMode","isNamepathDefiningTag","tagMustHaveTypePosition","tagMightHaveTypePosition","namepathTypes","Set","tagMightHaveNamePosition","tagMightHaveNamepath","tagMustHaveNamePosition","tagMightHaveEitherTypeOrNamePosition","tagMustHaveEitherTypeOrNamePosition","tagMissingRequiredTypeOrNamepath","mustHaveTypePosition","mightHaveTypePosition","hasTypePosition","hasNameOrNamepathPosition","mustHaveEither","hasEither","hasNonFunctionYield","node","checkYieldReturnValue","body","bodyNode","arguments","element","expression","test","consequent","alternate","block","handler","finalizer","cases","someCase","nde","declarations","id","init","expressions","subExpression","property","computed","quasi","object","source","parent","hasYieldValue","generator","hasThrowValue","innerFunction","async","parseClosureTemplateTag","split","enforcedContexts","defaultContexts","settings","_context$options$","contexts","options","getContextObject","checkJsdoc","selInfo","lastIndex","selector","comment","bind","old","args","filterTags","tagsWithNamesAndDescriptions","getTagsByType","descName","tagsWithoutNames","tagsWithNames","tagName","tagWithName","getIndent","sourceCode","_sourceCode$text$matc","text","match","isConstructor","_node$parent","kind","isGetter","_node$parent2","isSetter","_node$parent3","hasAccessorPair","sourceKind","sourceName","oppositeKind","children","exemptSpeciaMethods","schema","hasSchemaOption","_context$options$2","schemaProperties","checkGetters","checkSetters","dropPathSegmentQuotes","str","comparePaths","otherPathName","pathDoesNotBeginWith","startsWith","getRegexFromString","regexString","requiredFlags","flags","regex","uniqueFlags","join","RegExp","_default","hasReturnValue","hasValueOrExecutorHasNonEmptyResolveValue","exports","module"],"sources":["../src/jsdocUtils.js"],"sourcesContent":["/* eslint-disable jsdoc/no-undefined-types */\n\nimport {\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport WarnSettings from './WarnSettings';\nimport getDefaultTagStructureForMode from './getDefaultTagStructureForMode';\nimport {\n jsdocTags,\n closureTags,\n typeScriptTags,\n} from './tagNames';\nimport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n} from './utils/hasReturnValue';\n\n/**\n * @typedef {\"jsdoc\"|\"typescript\"|\"closure\"} ParserMode\n */\n\nlet tagStructure;\n\nconst setTagStructure = (mode) => {\n tagStructure = getDefaultTagStructureForMode(mode);\n};\n\n// Given a nested array of property names, reduce them to a single array,\n// appending the name of the root element along the way if present.\nconst flattenRoots = (params, root = '') => {\n let hasRestElement = false;\n let hasPropertyRest = false;\n const rests = [];\n\n const names = params.reduce((acc, cur) => {\n if (Array.isArray(cur)) {\n let nms;\n if (Array.isArray(cur[1])) {\n nms = cur[1];\n } else {\n if (cur[1].hasRestElement) {\n hasRestElement = true;\n }\n\n if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n nms = cur[1].names;\n }\n\n const flattened = flattenRoots(nms, root ? `${root}.${cur[0]}` : cur[0]);\n if (flattened.hasRestElement) {\n hasRestElement = true;\n }\n\n if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n const inner = [\n root ? `${root}.${cur[0]}` : cur[0],\n ...flattened.names,\n ].filter(Boolean);\n rests.push(false, ...flattened.rests);\n\n return acc.concat(inner);\n }\n\n if (typeof cur === 'object') {\n if (cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n\n if (cur.restElement) {\n hasRestElement = true;\n }\n\n acc.push(root ? `${root}.${cur.name}` : cur.name);\n } else if (typeof cur !== 'undefined') {\n rests.push(false);\n acc.push(root ? `${root}.${cur}` : cur);\n }\n\n return acc;\n }, []);\n\n return {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n };\n};\n\n/**\n * @param {object} propSignature\n * @returns {undefined|Array|string}\n */\nconst getPropertiesFromPropertySignature = (propSignature) => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [\n propSignature.key.name, propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(member);\n }),\n ];\n }\n\n return propSignature.key.name;\n};\n\n/**\n * @param {object} functionNode\n * @param {boolean} checkDefaultObjects\n * @returns {Array}\n */\nconst getFunctionParameterNames = (\n functionNode, checkDefaultObjects,\n) => {\n // eslint-disable-next-line complexity\n const getParamName = (param, isProperty) => {\n const hasLeftTypeAnnotation = 'left' in param && 'typeAnnotation' in param.left;\n\n if ('typeAnnotation' in param || hasLeftTypeAnnotation) {\n const typeAnnotation = hasLeftTypeAnnotation ? param.left.typeAnnotation : param.typeAnnotation;\n\n if (typeAnnotation?.typeAnnotation?.type === 'TSTypeLiteral') {\n const propertyNames = typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(member);\n });\n const flattened = {\n ...flattenRoots(propertyNames),\n annotationParamName: param.name,\n };\n const hasLeftName = 'left' in param && 'name' in param.left;\n\n if ('name' in param || hasLeftName) {\n return [\n hasLeftName ? param.left.name : param.name, flattened,\n ];\n }\n\n return [\n undefined, flattened,\n ];\n }\n }\n\n if ('name' in param) {\n return param.name;\n }\n\n if ('left' in param && 'name' in param.left) {\n return param.left.name;\n }\n\n if (param.type === 'ObjectPattern' || param.left?.type === 'ObjectPattern') {\n const properties = param.properties || param.left?.properties;\n const roots = properties.map((prop) => {\n return getParamName(prop, true);\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if (param.type === 'Property') {\n // eslint-disable-next-line default-case\n switch (param.value.type) {\n case 'ArrayPattern':\n return [\n param.key.name, param.value.elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop.type === 'RestElement',\n };\n }),\n ];\n case 'ObjectPattern':\n return [\n param.key.name, param.value.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n case 'AssignmentPattern': {\n // eslint-disable-next-line default-case\n switch (param.value.left.type) {\n case 'Identifier':\n // Default parameter\n if (checkDefaultObjects && param.value.right.type === 'ObjectExpression') {\n return [\n param.key.name, param.value.right.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n }\n\n break;\n case 'ObjectPattern':\n return [\n param.key.name, param.value.left.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n case 'ArrayPattern':\n return [\n param.key.name, param.value.left.elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop.type === 'RestElement',\n };\n }),\n ];\n }\n }\n }\n\n switch (param.key.type) {\n case 'Identifier':\n return param.key.name;\n\n // The key of an object could also be a string or number\n case 'Literal':\n return param.key.raw ||\n // istanbul ignore next -- `raw` may not be present in all parsers\n param.key.value;\n\n // case 'MemberExpression':\n default:\n // Todo: We should really create a structure (and a corresponding\n // option analogous to `checkRestProperty`) which allows for\n // (and optionally requires) dynamic properties to have a single\n // line of documentation\n return undefined;\n }\n }\n\n if (param.type === 'ArrayPattern' || param.left?.type === 'ArrayPattern') {\n const elements = param.elements || param.left?.elements;\n const roots = elements.map((prop, idx) => {\n return {\n name: `\"${idx}\"`,\n restElement: prop?.type === 'RestElement',\n };\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if ([\n 'RestElement', 'ExperimentalRestProperty',\n ].includes(param.type)) {\n return {\n isRestProperty: isProperty,\n name: param.argument.name,\n restElement: true,\n };\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(param.parameter, true);\n }\n\n throw new Error(`Unsupported function signature format: \\`${param.type}\\`.`);\n };\n\n if (!functionNode) {\n return [];\n }\n\n return (functionNode.params || functionNode.value?.params || []).map((param) => {\n return getParamName(param);\n });\n};\n\n/**\n * @param {Node} functionNode\n * @returns {Integer}\n */\nconst hasParams = (functionNode) => {\n // Should also check `functionNode.value.params` if supporting `MethodDefinition`\n return functionNode.params.length;\n};\n\n/**\n * Gets all names of the target type, including those that refer to a path, e.g.\n * \"@param foo; @param foo.bar\".\n *\n * @param {object} jsdoc\n * @param {string} targetTagName\n * @returns {Array<object>}\n */\nconst getJsdocTagsDeep = (jsdoc, targetTagName) => {\n const ret = [];\n for (const [\n idx,\n {\n name,\n tag,\n type,\n },\n ] of jsdoc.tags.entries()) {\n if (tag !== targetTagName) {\n continue;\n }\n\n ret.push({\n idx,\n name,\n type,\n });\n }\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\n\n/**\n * @param {string} mode\n * @param context\n */\nconst getTagNamesForMode = (mode, context) => {\n switch (mode) {\n case 'jsdoc':\n return jsdocTags;\n case 'typescript':\n return typeScriptTags;\n case 'closure': case 'permissive':\n return closureTags;\n default:\n if (!modeWarnSettings.hasBeenWarned(context, 'mode')) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: `Unrecognized value \\`${mode}\\` for \\`settings.jsdoc.mode\\`.`,\n });\n modeWarnSettings.markSettingAsWarned(context, 'mode');\n }\n\n // We'll avoid breaking too many other rules\n return jsdocTags;\n }\n};\n\n/**\n * @param context\n * @param {ParserMode} mode\n * @param {string} name\n * @param {object} tagPreference\n * @returns {string|object}\n */\nconst getPreferredTagName = (\n context,\n mode,\n name,\n tagPreference = {},\n) => {\n const prefValues = Object.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n // Allow keys to have a 'tag ' prefix to avoid upstream bug in ESLint\n // that disallows keys that conflict with Object.prototype,\n // e.g. 'tag constructor' for 'constructor':\n // https://github.com/eslint/eslint/issues/13289\n // https://github.com/gajus/eslint-plugin-jsdoc/issues/537\n const tagPreferenceFixed = Object.fromEntries(\n Object\n .entries(tagPreference)\n .map(([\n key,\n value,\n ]) => {\n return [\n key.replace(/^tag /u, ''), value,\n ];\n }),\n );\n\n if (Object.prototype.hasOwnProperty.call(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([\n , aliases,\n ]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\n/**\n * @param context\n * @param {ParserMode} mode\n * @param {string} name\n * @param {Array} definedTags\n * @returns {boolean}\n */\nconst isValidTag = (\n context,\n mode,\n name,\n definedTags,\n) => {\n const tagNames = getTagNamesForMode(mode, context);\n\n const validTagNames = Object.keys(tagNames).concat(Object.values(tagNames).flat());\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\n/**\n * @param {object} jsdoc\n * @param {string} targetTagName\n * @returns {boolean}\n */\nconst hasTag = (jsdoc, targetTagName) => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return jsdoc.tags.some((doc) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\n/**\n * @param {object} jsdoc\n * @param {Array} targetTagNames\n * @returns {boolean}\n */\nconst hasATag = (jsdoc, targetTagNames) => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment has an undefined type.\n *\n * @param {JsDocTag} tag\n * the tag which should be checked.\n * @param {\"jsdoc\"|\"closure\"|\"typescript\"} mode\n * @returns {boolean}\n * true in case a defined type is undeclared; otherwise false.\n */\nconst mayBeUndefinedTypeTag = (tag, mode) => {\n // The function should not continue in the event the type is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return true;\n }\n\n // .. same applies if it declares an `{undefined}` or `{void}` type\n const tagType = tag.type.trim();\n\n // Exit early if matching\n if (\n tagType === 'undefined' || tagType === 'void' ||\n tagType === '*' || tagType === 'any'\n ) {\n return true;\n }\n\n let parsedTypes;\n try {\n parsedTypes = tryParse(\n tagType,\n mode === 'permissive' ? undefined : [\n mode,\n ],\n );\n } catch {\n // Ignore\n }\n\n if (\n // We do not traverse deeply as it could be, e.g., `Promise<void>`\n parsedTypes &&\n parsedTypes.type === 'JsdocTypeUnion' &&\n parsedTypes.elements.find((elem) => {\n return elem.type === 'JsdocTypeUndefined' ||\n elem.type === 'JsdocTypeName' && elem.value === 'void';\n })) {\n return true;\n }\n\n // In any other case, a type is present\n return false;\n};\n\n/**\n * @param map\n * @param tag\n * @returns {Map}\n */\nconst ensureMap = (map, tag) => {\n if (!map.has(tag)) {\n map.set(tag, new Map());\n }\n\n return map.get(tag);\n};\n\n/**\n * @param structuredTags\n * @param tagMap\n */\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n for (const [\n tag,\n {\n name,\n type,\n required = [],\n },\n ] of Object.entries(structuredTags)) {\n const tagStruct = ensureMap(tagMap, tag);\n\n tagStruct.set('nameContents', name);\n tagStruct.set('typeAllowed', type);\n\n const requiredName = required.includes('name');\n if (requiredName && name === false) {\n throw new Error('Cannot add \"name\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n tagStruct.set('nameRequired', requiredName);\n\n const requiredType = required.includes('type');\n if (requiredType && type === false) {\n throw new Error('Cannot add \"type\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeRequired', requiredType);\n\n const typeOrNameRequired = required.includes('typeOrNameRequired');\n if (typeOrNameRequired && name === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n }\n};\n\n/**\n * @param mode\n * @param structuredTags\n * @returns {Map}\n */\nconst getTagStructureForMode = (mode, structuredTags) => {\n const tagStruct = getDefaultTagStructureForMode(mode);\n\n try {\n overrideTagStructure(structuredTags, tagStruct);\n } catch {\n //\n }\n\n return tagStruct;\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst isNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameContents') === 'namepath-defining';\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveTypePosition = (tag, tagMap = tagStructure) => {\n if (tagMustHaveTypePosition(tag, tagMap)) {\n return true;\n }\n\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('typeAllowed');\n\n return ret === undefined ? true : ret;\n};\n\nconst namepathTypes = new Set([\n 'namepath-defining', 'namepath-referencing',\n]);\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('nameContents');\n\n return ret === undefined ? true : Boolean(ret);\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return namepathTypes.has(tagStruct.get('nameContents'));\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return tagMightHaveTypePosition(tag, tagMap) || tagMightHaveNamepath(tag, tagMap);\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeOrNameRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => {\n const mustHaveTypePosition = tagMustHaveTypePosition(tag.tag, tagMap);\n const mightHaveTypePosition = tagMightHaveTypePosition(tag.tag, tagMap);\n const hasTypePosition = mightHaveTypePosition && Boolean(tag.type);\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition(tag.tag, tagMap) ||\n tagMightHaveNamepath(tag.tag, tagMap)\n ) && Boolean(tag.name);\n const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap);\n const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) &&\n (hasTypePosition || hasNameOrNamepathPosition);\n\n return mustHaveEither && !hasEither && !mustHaveTypePosition;\n};\n\n// eslint-disable-next-line complexity\nconst hasNonFunctionYield = (node, checkYieldReturnValue) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return ![\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(bodyNode.type) && hasNonFunctionYield(\n bodyNode, checkYieldReturnValue,\n );\n });\n }\n\n // istanbul ignore next -- In Babel?\n case 'OptionalCallExpression':\n case 'CallExpression':\n return node.arguments.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'ChainExpression':\n case 'ExpressionStatement': {\n return hasNonFunctionYield(node.expression, checkYieldReturnValue);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasNonFunctionYield(node.body, checkYieldReturnValue);\n }\n\n case 'ConditionalExpression':\n case 'IfStatement': {\n return hasNonFunctionYield(node.test, checkYieldReturnValue) ||\n hasNonFunctionYield(node.consequent, checkYieldReturnValue) ||\n hasNonFunctionYield(node.alternate, checkYieldReturnValue);\n }\n\n case 'TryStatement': {\n return hasNonFunctionYield(node.block, checkYieldReturnValue) ||\n hasNonFunctionYield(node.handler && node.handler.body, checkYieldReturnValue) ||\n hasNonFunctionYield(node.finalizer, checkYieldReturnValue);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n },\n );\n }\n\n case 'ArrayPattern':\n case 'ArrayExpression':\n return node.elements.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'AssignmentPattern':\n return hasNonFunctionYield(node.right, checkYieldReturnValue);\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonFunctionYield(node.id, checkYieldReturnValue) ||\n hasNonFunctionYield(node.init, checkYieldReturnValue);\n }\n\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonFunctionYield(node.left, checkYieldReturnValue) ||\n hasNonFunctionYield(node.right, checkYieldReturnValue);\n }\n\n // Comma\n case 'SequenceExpression':\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonFunctionYield(subExpression, checkYieldReturnValue);\n });\n\n case 'ObjectPattern':\n case 'ObjectExpression':\n return node.properties.some((property) => {\n return hasNonFunctionYield(property, checkYieldReturnValue);\n });\n\n // istanbul ignore next -- In Babel?\n case 'PropertyDefinition':\n /* eslint-disable no-fallthrough */\n // istanbul ignore next -- In Babel?\n case 'ObjectProperty':\n // istanbul ignore next -- In Babel?\n case 'ClassProperty':\n case 'Property':\n /* eslint-enable no-fallthrough */\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n hasNonFunctionYield(node.value, checkYieldReturnValue);\n // istanbul ignore next -- In Babel?\n case 'ObjectMethod':\n // istanbul ignore next -- In Babel?\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n node.arguments.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n\n case 'SpreadElement':\n case 'UnaryExpression':\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n\n case 'TaggedTemplateExpression':\n return hasNonFunctionYield(node.quasi, checkYieldReturnValue);\n\n // ?.\n // istanbul ignore next -- In Babel?\n case 'OptionalMemberExpression':\n case 'MemberExpression':\n return hasNonFunctionYield(node.object, checkYieldReturnValue) ||\n hasNonFunctionYield(node.property, checkYieldReturnValue);\n\n // istanbul ignore next -- In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonFunctionYield(node.source, checkYieldReturnValue);\n\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n }\n\n case 'YieldExpression': {\n if (checkYieldReturnValue) {\n if (node.parent.type === 'VariableDeclarator') {\n return true;\n }\n\n return false;\n }\n\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\nconst hasYieldValue = (node, checkYieldReturnValue) => {\n return node.generator && (\n node.expression || hasNonFunctionYield(node.body, checkYieldReturnValue)\n );\n};\n\n/**\n * Checks if a node has a throws statement.\n *\n * @param {object} node\n * @param {boolean} innerFunction\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n\n // There are cases where a function may execute its inner function which\n // throws, but we're treating functions atomically rather than trying to\n // follow them\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return !innerFunction && !node.async && hasThrowValue(node.body, true);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasThrowValue(node.body);\n }\n\n case 'IfStatement': {\n return hasThrowValue(node.consequent) || hasThrowValue(node.alternate);\n }\n\n // We only consider it to throw an error if the catch or finally blocks throw an error.\n case 'TryStatement': {\n return hasThrowValue(node.handler && node.handler.body) ||\n hasThrowValue(node.finalizer);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasThrowValue(nde);\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @param {string} tag\n */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /u.test(tag);\n};\n*/\n\n/**\n * Parses GCC Generic/Template types\n *\n * @see {https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @see {https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#template}\n * @param {JsDocTag} tag\n * @returns {Array<string>}\n */\nconst parseClosureTemplateTag = (tag) => {\n return tag.name\n .split(',')\n .map((type) => {\n return type.trim().replace(/^\\[(?<name>.*?)=.*\\]$/u, '$<name>');\n });\n};\n\n/**\n * @typedef {true|string[]} DefaultContexts\n */\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n *\n * @param {*} context\n * @param {DefaultContexts} defaultContexts\n * @param settings\n * @returns {string[]}\n */\nconst enforcedContexts = (context, defaultContexts, settings) => {\n const contexts = context.options[0]?.contexts || settings.contexts || (defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ] : defaultContexts);\n\n return contexts;\n};\n\n/**\n * @param {string[]} contexts\n * @param {Function} checkJsdoc\n * @param {Function} handler\n */\nconst getContextObject = (contexts, checkJsdoc, handler) => {\n const properties = {};\n\n for (const [\n idx,\n prop,\n ] of contexts.entries()) {\n let property;\n let value;\n\n if (typeof prop === 'object') {\n const selInfo = {\n lastIndex: idx,\n selector: prop.context,\n };\n if (prop.comment) {\n property = prop.context;\n value = checkJsdoc.bind(\n null, {\n ...selInfo,\n comment: prop.comment,\n }, handler.bind(null, prop.comment),\n );\n } else {\n property = prop.context;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n } else {\n const selInfo = {\n lastIndex: idx,\n selector: prop,\n };\n property = prop;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n\n const old = properties[property];\n properties[property] = old ? function (...args) {\n old(...args);\n value(...args);\n } : value;\n }\n\n return properties;\n};\n\nconst filterTags = (tags, filter) => {\n return tags.filter((tag) => {\n return filter(tag);\n });\n};\n\nconst tagsWithNamesAndDescriptions = new Set([\n 'param', 'arg', 'argument', 'property', 'prop',\n 'template',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'return',\n]);\n\nconst getTagsByType = (context, mode, tags, tagPreference) => {\n const descName = getPreferredTagName(context, mode, 'description', tagPreference);\n const tagsWithoutNames = [];\n const tagsWithNames = filterTags(tags, (tag) => {\n const {\n tag: tagName,\n } = tag;\n const tagWithName = tagsWithNamesAndDescriptions.has(tagName);\n if (!tagWithName && tagName !== descName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\nconst getIndent = (sourceCode) => {\n return (sourceCode.text.match(/^\\n*([ \\t]+)/u)?.[1] ?? '') + ' ';\n};\n\nconst isConstructor = (node) => {\n return node?.type === 'MethodDefinition' && node.kind === 'constructor' ||\n node?.parent?.kind === 'constructor';\n};\n\nconst isGetter = (node) => {\n return node && node.parent?.kind === 'get';\n};\n\nconst isSetter = (node) => {\n return node && node.parent?.kind === 'set';\n};\n\nconst hasAccessorPair = (node) => {\n const {\n type,\n kind: sourceKind,\n key: {\n name: sourceName,\n },\n } = node;\n const oppositeKind = sourceKind === 'get' ? 'set' : 'get';\n\n const children = type === 'MethodDefinition' ? 'body' : 'properties';\n\n return node.parent[children].some(({\n kind,\n key: {\n name,\n },\n }) => {\n return kind === oppositeKind && name === sourceName;\n });\n};\n\nconst exemptSpeciaMethods = (jsdoc, node, context, schema) => {\n const hasSchemaOption = (prop) => {\n const schemaProperties = schema[0].properties;\n\n return context.options[0]?.[prop] ??\n (schemaProperties[prop] && schemaProperties[prop].default);\n };\n\n const checkGetters = hasSchemaOption('checkGetters');\n const checkSetters = hasSchemaOption('checkSetters');\n\n return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n isGetter(node) && (\n !checkGetters ||\n checkGetters === 'no-setter' && hasAccessorPair(node.parent)\n ) ||\n isSetter(node) && (\n !checkSetters ||\n checkSetters === 'no-getter' && hasAccessorPair(node.parent)\n );\n};\n\n/**\n * Since path segments may be unquoted (if matching a reserved word,\n * identifier or numeric literal) or single or double quoted, in either\n * the `@param` or in source, we need to strip the quotes to give a fair\n * comparison.\n *\n * @param {string} str\n * @returns {string}\n */\nconst dropPathSegmentQuotes = (str) => {\n return str.replace(/\\.(['\"])(.*)\\1/gu, '.$2');\n};\n\n/**\n * @param {string} name\n * @returns {(otherPathName: string) => void}\n */\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\n};\n\n/**\n * @param {string} name\n * @param {string} otherPathName\n * @returns {boolean}\n */\nconst pathDoesNotBeginWith = (name, otherPathName) => {\n return !name.startsWith(otherPathName) &&\n !dropPathSegmentQuotes(name).startsWith(dropPathSegmentQuotes(otherPathName));\n};\n\n/**\n * @param {string} regexString\n * @param {string} requiredFlags\n * @returns {RegExp}\n */\nconst getRegexFromString = (regexString, requiredFlags) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyus]*)$/us);\n let flags = 'u';\n let regex = regexString;\n if (match) {\n [\n , regex,\n flags,\n ] = match;\n if (!flags) {\n flags = 'u';\n }\n }\n\n const uniqueFlags = [\n ...new Set(flags + (requiredFlags || '')),\n ];\n flags = uniqueFlags.join('');\n\n return new RegExp(regex, flags);\n};\n\nexport default {\n comparePaths,\n dropPathSegmentQuotes,\n enforcedContexts,\n exemptSpeciaMethods,\n filterTags,\n flattenRoots,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n getJsdocTagsDeep,\n getPreferredTagName,\n getRegexFromString,\n getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasParams,\n hasReturnValue,\n hasTag,\n hasThrowValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n hasYieldValue,\n isConstructor,\n isGetter,\n isNamepathDefiningTag,\n isSetter,\n isValidTag,\n mayBeUndefinedTypeTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n pathDoesNotBeginWith,\n setTagStructure,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jsdocUtils.js","names":["_jsdoccomment","require","_WarnSettings","_interopRequireDefault","_getDefaultTagStructureForMode","_tagNames","_hasReturnValue","obj","__esModule","default","tagStructure","setTagStructure","mode","getDefaultTagStructureForMode","flattenRoots","params","root","hasRestElement","hasPropertyRest","rests","names","reduce","acc","cur","Array","isArray","nms","flattened","inner","filter","Boolean","push","concat","isRestProperty","restElement","name","getPropertiesFromPropertySignature","propSignature","type","undefined","typeAnnotation","key","members","map","member","getFunctionParameterNames","functionNode","checkDefaultObjects","_functionNode$value","getParamName","param","isProperty","_param$left","_param$left3","hasLeftTypeAnnotation","left","_typeAnnotation$typeA","propertyNames","annotationParamName","hasLeftName","_param$left2","properties","roots","prop","value","elements","idx","right","raw","_param$left4","includes","argument","parameter","Error","hasParams","length","getJsdocTagsDeep","jsdoc","targetTagName","ret","tag","tags","entries","modeWarnSettings","WarnSettings","getTagNamesForMode","context","jsdocTags","typeScriptTags","closureTags","hasBeenWarned","report","loc","start","column","line","message","markSettingAsWarned","getPreferredTagName","tagPreference","_Object$entries$find","prefValues","Object","values","some","prefVal","replacement","tagPreferenceFixed","fromEntries","replace","prototype","hasOwnProperty","call","tagNames","preferredTagName","find","aliases","isValidTag","definedTags","validTagNames","keys","flat","additionalTags","allTags","hasTag","targetTagLower","toLowerCase","doc","hasATag","targetTagNames","mayBeUndefinedTypeTag","tagType","trim","parsedTypes","tryParse","elem","ensureMap","has","set","Map","get","overrideTagStructure","structuredTags","tagMap","required","tagStruct","requiredName","requiredType","typeOrNameRequired","getTagStructureForMode","isNamepathDefiningTag","tagMustHaveTypePosition","tagMightHaveTypePosition","namepathTypes","Set","tagMightHaveNamePosition","tagMightHaveNamepath","tagMustHaveNamePosition","tagMightHaveEitherTypeOrNamePosition","tagMustHaveEitherTypeOrNamePosition","tagMissingRequiredTypeOrNamepath","mustHaveTypePosition","mightHaveTypePosition","hasTypePosition","hasNameOrNamepathPosition","mustHaveEither","hasEither","hasNonFunctionYield","node","checkYieldReturnValue","body","bodyNode","arguments","element","expression","test","consequent","alternate","block","handler","finalizer","cases","someCase","nde","declarations","id","init","expressions","subExpression","property","computed","quasi","object","source","parent","hasYieldValue","generator","hasThrowValue","innerFunction","async","parseClosureTemplateTag","split","enforcedContexts","defaultContexts","settings","_context$options$","contexts","options","getContextObject","checkJsdoc","selInfo","lastIndex","selector","comment","bind","old","args","filterTags","tagsWithNamesAndDescriptions","getTagsByType","descName","tagsWithoutNames","tagsWithNames","tagName","tagWithName","getIndent","sourceCode","_sourceCode$text$matc","text","match","isConstructor","_node$parent","kind","isGetter","_node$parent2","isSetter","_node$parent3","hasAccessorPair","sourceKind","sourceName","oppositeKind","children","exemptSpeciaMethods","schema","hasSchemaOption","_context$options$2","schemaProperties","checkGetters","checkSetters","dropPathSegmentQuotes","str","comparePaths","otherPathName","pathDoesNotBeginWith","startsWith","getRegexFromString","regexString","requiredFlags","flags","regex","uniqueFlags","join","RegExp","_default","hasReturnValue","hasValueOrExecutorHasNonEmptyResolveValue","exports","module"],"sources":["../src/jsdocUtils.js"],"sourcesContent":["/* eslint-disable jsdoc/no-undefined-types */\n\nimport {\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport WarnSettings from './WarnSettings';\nimport getDefaultTagStructureForMode from './getDefaultTagStructureForMode';\nimport {\n jsdocTags,\n closureTags,\n typeScriptTags,\n} from './tagNames';\nimport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n} from './utils/hasReturnValue';\n\n/**\n * @typedef {\"jsdoc\"|\"typescript\"|\"closure\"} ParserMode\n */\n\nlet tagStructure;\n\nconst setTagStructure = (mode) => {\n tagStructure = getDefaultTagStructureForMode(mode);\n};\n\n// Given a nested array of property names, reduce them to a single array,\n// appending the name of the root element along the way if present.\nconst flattenRoots = (params, root = '') => {\n let hasRestElement = false;\n let hasPropertyRest = false;\n const rests = [];\n\n const names = params.reduce((acc, cur) => {\n if (Array.isArray(cur)) {\n let nms;\n if (Array.isArray(cur[1])) {\n nms = cur[1];\n } else {\n if (cur[1].hasRestElement) {\n hasRestElement = true;\n }\n\n if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n nms = cur[1].names;\n }\n\n const flattened = flattenRoots(nms, root ? `${root}.${cur[0]}` : cur[0]);\n if (flattened.hasRestElement) {\n hasRestElement = true;\n }\n\n if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n const inner = [\n root ? `${root}.${cur[0]}` : cur[0],\n ...flattened.names,\n ].filter(Boolean);\n rests.push(false, ...flattened.rests);\n\n return acc.concat(inner);\n }\n\n if (typeof cur === 'object') {\n if (cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n\n if (cur.restElement) {\n hasRestElement = true;\n }\n\n acc.push(root ? `${root}.${cur.name}` : cur.name);\n } else if (typeof cur !== 'undefined') {\n rests.push(false);\n acc.push(root ? `${root}.${cur}` : cur);\n }\n\n return acc;\n }, []);\n\n return {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n };\n};\n\n/**\n * @param {object} propSignature\n * @returns {undefined|Array|string}\n */\nconst getPropertiesFromPropertySignature = (propSignature) => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [\n propSignature.key.name, propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(member);\n }),\n ];\n }\n\n return propSignature.key.name;\n};\n\n/**\n * @param {object} functionNode\n * @param {boolean} checkDefaultObjects\n * @returns {Array}\n */\nconst getFunctionParameterNames = (\n functionNode, checkDefaultObjects,\n) => {\n // eslint-disable-next-line complexity\n const getParamName = (param, isProperty) => {\n const hasLeftTypeAnnotation = 'left' in param && 'typeAnnotation' in param.left;\n\n if ('typeAnnotation' in param || hasLeftTypeAnnotation) {\n const typeAnnotation = hasLeftTypeAnnotation ? param.left.typeAnnotation : param.typeAnnotation;\n\n if (typeAnnotation?.typeAnnotation?.type === 'TSTypeLiteral') {\n const propertyNames = typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(member);\n });\n const flattened = {\n ...flattenRoots(propertyNames),\n annotationParamName: param.name,\n };\n const hasLeftName = 'left' in param && 'name' in param.left;\n\n if ('name' in param || hasLeftName) {\n return [\n hasLeftName ? param.left.name : param.name, flattened,\n ];\n }\n\n return [\n undefined, flattened,\n ];\n }\n }\n\n if ('name' in param) {\n return param.name;\n }\n\n if ('left' in param && 'name' in param.left) {\n return param.left.name;\n }\n\n if (param.type === 'ObjectPattern' || param.left?.type === 'ObjectPattern') {\n const properties = param.properties || param.left?.properties;\n const roots = properties.map((prop) => {\n return getParamName(prop, true);\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if (param.type === 'Property') {\n // eslint-disable-next-line default-case\n switch (param.value.type) {\n case 'ArrayPattern':\n return [\n param.key.name, param.value.elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop.type === 'RestElement',\n };\n }),\n ];\n case 'ObjectPattern':\n return [\n param.key.name, param.value.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n case 'AssignmentPattern': {\n // eslint-disable-next-line default-case\n switch (param.value.left.type) {\n case 'Identifier':\n // Default parameter\n if (checkDefaultObjects && param.value.right.type === 'ObjectExpression') {\n return [\n param.key.name, param.value.right.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n }\n\n break;\n case 'ObjectPattern':\n return [\n param.key.name, param.value.left.properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n case 'ArrayPattern':\n return [\n param.key.name, param.value.left.elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop.type === 'RestElement',\n };\n }),\n ];\n }\n }\n }\n\n switch (param.key.type) {\n case 'Identifier':\n return param.key.name;\n\n // The key of an object could also be a string or number\n case 'Literal':\n return param.key.raw ||\n // istanbul ignore next -- `raw` may not be present in all parsers\n param.key.value;\n\n // case 'MemberExpression':\n default:\n // Todo: We should really create a structure (and a corresponding\n // option analogous to `checkRestProperty`) which allows for\n // (and optionally requires) dynamic properties to have a single\n // line of documentation\n return undefined;\n }\n }\n\n if (param.type === 'ArrayPattern' || param.left?.type === 'ArrayPattern') {\n const elements = param.elements || param.left?.elements;\n const roots = elements.map((prop, idx) => {\n return {\n name: `\"${idx}\"`,\n restElement: prop?.type === 'RestElement',\n };\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if ([\n 'RestElement', 'ExperimentalRestProperty',\n ].includes(param.type)) {\n return {\n isRestProperty: isProperty,\n name: param.argument.name,\n restElement: true,\n };\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(param.parameter, true);\n }\n\n throw new Error(`Unsupported function signature format: \\`${param.type}\\`.`);\n };\n\n if (!functionNode) {\n return [];\n }\n\n return (functionNode.params || functionNode.value?.params || []).map((param) => {\n return getParamName(param);\n });\n};\n\n/**\n * @param {Node} functionNode\n * @returns {Integer}\n */\nconst hasParams = (functionNode) => {\n // Should also check `functionNode.value.params` if supporting `MethodDefinition`\n return functionNode.params.length;\n};\n\n/**\n * Gets all names of the target type, including those that refer to a path, e.g.\n * \"@param foo; @param foo.bar\".\n *\n * @param {object} jsdoc\n * @param {string} targetTagName\n * @returns {Array<object>}\n */\nconst getJsdocTagsDeep = (jsdoc, targetTagName) => {\n const ret = [];\n for (const [\n idx,\n {\n name,\n tag,\n type,\n },\n ] of jsdoc.tags.entries()) {\n if (tag !== targetTagName) {\n continue;\n }\n\n ret.push({\n idx,\n name,\n type,\n });\n }\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\n\n/**\n * @param {string} mode\n * @param context\n */\nconst getTagNamesForMode = (mode, context) => {\n switch (mode) {\n case 'jsdoc':\n return jsdocTags;\n case 'typescript':\n return typeScriptTags;\n case 'closure': case 'permissive':\n return closureTags;\n default:\n if (!modeWarnSettings.hasBeenWarned(context, 'mode')) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: `Unrecognized value \\`${mode}\\` for \\`settings.jsdoc.mode\\`.`,\n });\n modeWarnSettings.markSettingAsWarned(context, 'mode');\n }\n\n // We'll avoid breaking too many other rules\n return jsdocTags;\n }\n};\n\n/**\n * @param context\n * @param {ParserMode} mode\n * @param {string} name\n * @param {object} tagPreference\n * @returns {string|object}\n */\nconst getPreferredTagName = (\n context,\n mode,\n name,\n tagPreference = {},\n) => {\n const prefValues = Object.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n // Allow keys to have a 'tag ' prefix to avoid upstream bug in ESLint\n // that disallows keys that conflict with Object.prototype,\n // e.g. 'tag constructor' for 'constructor':\n // https://github.com/eslint/eslint/issues/13289\n // https://github.com/gajus/eslint-plugin-jsdoc/issues/537\n const tagPreferenceFixed = Object.fromEntries(\n Object\n .entries(tagPreference)\n .map(([\n key,\n value,\n ]) => {\n return [\n key.replace(/^tag /u, ''), value,\n ];\n }),\n );\n\n if (Object.prototype.hasOwnProperty.call(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([\n , aliases,\n ]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\n/**\n * @param context\n * @param {ParserMode} mode\n * @param {string} name\n * @param {Array} definedTags\n * @returns {boolean}\n */\nconst isValidTag = (\n context,\n mode,\n name,\n definedTags,\n) => {\n const tagNames = getTagNamesForMode(mode, context);\n\n const validTagNames = Object.keys(tagNames).concat(Object.values(tagNames).flat());\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\n/**\n * @param {object} jsdoc\n * @param {string} targetTagName\n * @returns {boolean}\n */\nconst hasTag = (jsdoc, targetTagName) => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return jsdoc.tags.some((doc) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\n/**\n * @param {object} jsdoc\n * @param {Array} targetTagNames\n * @returns {boolean}\n */\nconst hasATag = (jsdoc, targetTagNames) => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment has an undefined type.\n *\n * @param {JsDocTag} tag\n * the tag which should be checked.\n * @param {\"jsdoc\"|\"closure\"|\"typescript\"} mode\n * @returns {boolean}\n * true in case a defined type is undeclared; otherwise false.\n */\nconst mayBeUndefinedTypeTag = (tag, mode) => {\n // The function should not continue in the event the type is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return true;\n }\n\n // .. same applies if it declares an `{undefined}` or `{void}` type\n const tagType = tag.type.trim();\n\n // Exit early if matching\n if (\n tagType === 'undefined' || tagType === 'void' ||\n tagType === '*' || tagType === 'any'\n ) {\n return true;\n }\n\n let parsedTypes;\n try {\n parsedTypes = tryParse(\n tagType,\n mode === 'permissive' ? undefined : [\n mode,\n ],\n );\n } catch {\n // Ignore\n }\n\n if (\n // We do not traverse deeply as it could be, e.g., `Promise<void>`\n parsedTypes &&\n parsedTypes.type === 'JsdocTypeUnion' &&\n parsedTypes.elements.find((elem) => {\n return elem.type === 'JsdocTypeUndefined' ||\n elem.type === 'JsdocTypeName' && elem.value === 'void';\n })) {\n return true;\n }\n\n // In any other case, a type is present\n return false;\n};\n\n/**\n * @param map\n * @param tag\n * @returns {Map}\n */\nconst ensureMap = (map, tag) => {\n if (!map.has(tag)) {\n map.set(tag, new Map());\n }\n\n return map.get(tag);\n};\n\n/**\n * @param structuredTags\n * @param tagMap\n */\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n for (const [\n tag,\n {\n name,\n type,\n required = [],\n },\n ] of Object.entries(structuredTags)) {\n const tagStruct = ensureMap(tagMap, tag);\n\n tagStruct.set('nameContents', name);\n tagStruct.set('typeAllowed', type);\n\n const requiredName = required.includes('name');\n if (requiredName && name === false) {\n throw new Error('Cannot add \"name\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n tagStruct.set('nameRequired', requiredName);\n\n const requiredType = required.includes('type');\n if (requiredType && type === false) {\n throw new Error('Cannot add \"type\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeRequired', requiredType);\n\n const typeOrNameRequired = required.includes('typeOrNameRequired');\n if (typeOrNameRequired && name === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n }\n};\n\n/**\n * @param mode\n * @param structuredTags\n * @returns {Map}\n */\nconst getTagStructureForMode = (mode, structuredTags) => {\n const tagStruct = getDefaultTagStructureForMode(mode);\n\n try {\n overrideTagStructure(structuredTags, tagStruct);\n } catch {\n //\n }\n\n return tagStruct;\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst isNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameContents') === 'namepath-defining';\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveTypePosition = (tag, tagMap = tagStructure) => {\n if (tagMustHaveTypePosition(tag, tagMap)) {\n return true;\n }\n\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('typeAllowed');\n\n return ret === undefined ? true : ret;\n};\n\nconst namepathTypes = new Set([\n 'namepath-defining', 'namepath-referencing',\n]);\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('nameContents');\n\n return ret === undefined ? true : Boolean(ret);\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return namepathTypes.has(tagStruct.get('nameContents'));\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return tagMightHaveTypePosition(tag, tagMap) || tagMightHaveNamepath(tag, tagMap);\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeOrNameRequired');\n};\n\n/**\n * @param tag\n * @param {Map} tagMap\n * @returns {boolean}\n */\nconst tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => {\n const mustHaveTypePosition = tagMustHaveTypePosition(tag.tag, tagMap);\n const mightHaveTypePosition = tagMightHaveTypePosition(tag.tag, tagMap);\n const hasTypePosition = mightHaveTypePosition && Boolean(tag.type);\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition(tag.tag, tagMap) ||\n tagMightHaveNamepath(tag.tag, tagMap)\n ) && Boolean(tag.name);\n const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap);\n const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) &&\n (hasTypePosition || hasNameOrNamepathPosition);\n\n return mustHaveEither && !hasEither && !mustHaveTypePosition;\n};\n\n// eslint-disable-next-line complexity\nconst hasNonFunctionYield = (node, checkYieldReturnValue) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return ![\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(bodyNode.type) && hasNonFunctionYield(\n bodyNode, checkYieldReturnValue,\n );\n });\n }\n\n // istanbul ignore next -- In Babel?\n case 'OptionalCallExpression':\n case 'CallExpression':\n return node.arguments.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'ChainExpression':\n case 'ExpressionStatement': {\n return hasNonFunctionYield(node.expression, checkYieldReturnValue);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasNonFunctionYield(node.body, checkYieldReturnValue);\n }\n\n case 'ConditionalExpression':\n case 'IfStatement': {\n return hasNonFunctionYield(node.test, checkYieldReturnValue) ||\n hasNonFunctionYield(node.consequent, checkYieldReturnValue) ||\n hasNonFunctionYield(node.alternate, checkYieldReturnValue);\n }\n\n case 'TryStatement': {\n return hasNonFunctionYield(node.block, checkYieldReturnValue) ||\n hasNonFunctionYield(node.handler && node.handler.body, checkYieldReturnValue) ||\n hasNonFunctionYield(node.finalizer, checkYieldReturnValue);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n },\n );\n }\n\n case 'ArrayPattern':\n case 'ArrayExpression':\n return node.elements.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'AssignmentPattern':\n return hasNonFunctionYield(node.right, checkYieldReturnValue);\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonFunctionYield(node.id, checkYieldReturnValue) ||\n hasNonFunctionYield(node.init, checkYieldReturnValue);\n }\n\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonFunctionYield(node.left, checkYieldReturnValue) ||\n hasNonFunctionYield(node.right, checkYieldReturnValue);\n }\n\n // Comma\n case 'SequenceExpression':\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonFunctionYield(subExpression, checkYieldReturnValue);\n });\n\n case 'ObjectPattern':\n case 'ObjectExpression':\n return node.properties.some((property) => {\n return hasNonFunctionYield(property, checkYieldReturnValue);\n });\n\n // istanbul ignore next -- In Babel?\n case 'PropertyDefinition':\n /* eslint-disable no-fallthrough */\n // istanbul ignore next -- In Babel?\n case 'ObjectProperty':\n // istanbul ignore next -- In Babel?\n case 'ClassProperty':\n case 'Property':\n /* eslint-enable no-fallthrough */\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n hasNonFunctionYield(node.value, checkYieldReturnValue);\n // istanbul ignore next -- In Babel?\n case 'ObjectMethod':\n // istanbul ignore next -- In Babel?\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n node.arguments.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n\n case 'SpreadElement':\n case 'UnaryExpression':\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n\n case 'TaggedTemplateExpression':\n return hasNonFunctionYield(node.quasi, checkYieldReturnValue);\n\n // ?.\n // istanbul ignore next -- In Babel?\n case 'OptionalMemberExpression':\n case 'MemberExpression':\n return hasNonFunctionYield(node.object, checkYieldReturnValue) ||\n hasNonFunctionYield(node.property, checkYieldReturnValue);\n\n // istanbul ignore next -- In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonFunctionYield(node.source, checkYieldReturnValue);\n\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n }\n\n case 'YieldExpression': {\n if (checkYieldReturnValue) {\n if (node.parent.type === 'VariableDeclarator') {\n return true;\n }\n\n return false;\n }\n\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\nconst hasYieldValue = (node, checkYieldReturnValue) => {\n return node.generator && (\n node.expression || hasNonFunctionYield(node.body, checkYieldReturnValue)\n );\n};\n\n/**\n * Checks if a node has a throws statement.\n *\n * @param {object} node\n * @param {boolean} innerFunction\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n\n // There are cases where a function may execute its inner function which\n // throws, but we're treating functions atomically rather than trying to\n // follow them\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return !innerFunction && !node.async && hasThrowValue(node.body, true);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasThrowValue(node.body);\n }\n\n case 'IfStatement': {\n return hasThrowValue(node.consequent) || hasThrowValue(node.alternate);\n }\n\n // We only consider it to throw an error if the catch or finally blocks throw an error.\n case 'TryStatement': {\n return hasThrowValue(node.handler && node.handler.body) ||\n hasThrowValue(node.finalizer);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasThrowValue(nde);\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @param {string} tag\n */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /u.test(tag);\n};\n*/\n\n/**\n * Parses GCC Generic/Template types\n *\n * @see {https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @see {https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#template}\n * @param {JsDocTag} tag\n * @returns {Array<string>}\n */\nconst parseClosureTemplateTag = (tag) => {\n return tag.name\n .split(',')\n .map((type) => {\n return type.trim().replace(/^\\[(?<name>.*?)=.*\\]$/u, '$<name>');\n });\n};\n\n/**\n * @typedef {true|string[]} DefaultContexts\n */\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n *\n * @param {*} context\n * @param {DefaultContexts} defaultContexts\n * @param settings\n * @returns {string[]}\n */\nconst enforcedContexts = (context, defaultContexts, settings) => {\n const contexts = context.options[0]?.contexts || settings.contexts || (defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ] : defaultContexts);\n\n return contexts;\n};\n\n/**\n * @param {string[]} contexts\n * @param {Function} checkJsdoc\n * @param {Function} handler\n */\nconst getContextObject = (contexts, checkJsdoc, handler) => {\n const properties = {};\n\n for (const [\n idx,\n prop,\n ] of contexts.entries()) {\n let property;\n let value;\n\n if (typeof prop === 'object') {\n const selInfo = {\n lastIndex: idx,\n selector: prop.context,\n };\n if (prop.comment) {\n property = prop.context;\n value = checkJsdoc.bind(\n null, {\n ...selInfo,\n comment: prop.comment,\n }, handler.bind(null, prop.comment),\n );\n } else {\n property = prop.context;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n } else {\n const selInfo = {\n lastIndex: idx,\n selector: prop,\n };\n property = prop;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n\n const old = properties[property];\n properties[property] = old ? function (...args) {\n old(...args);\n value(...args);\n } : value;\n }\n\n return properties;\n};\n\nconst filterTags = (tags, filter) => {\n return tags.filter((tag) => {\n return filter(tag);\n });\n};\n\nconst tagsWithNamesAndDescriptions = new Set([\n 'param', 'arg', 'argument', 'property', 'prop',\n 'template',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'return',\n]);\n\nconst getTagsByType = (context, mode, tags, tagPreference) => {\n const descName = getPreferredTagName(context, mode, 'description', tagPreference);\n const tagsWithoutNames = [];\n const tagsWithNames = filterTags(tags, (tag) => {\n const {\n tag: tagName,\n } = tag;\n const tagWithName = tagsWithNamesAndDescriptions.has(tagName);\n if (!tagWithName && tagName !== descName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\nconst getIndent = (sourceCode) => {\n return (sourceCode.text.match(/^\\n*([ \\t]+)/u)?.[1] ?? '') + ' ';\n};\n\nconst isConstructor = (node) => {\n return node?.type === 'MethodDefinition' && node.kind === 'constructor' ||\n node?.parent?.kind === 'constructor';\n};\n\nconst isGetter = (node) => {\n return node && node.parent?.kind === 'get';\n};\n\nconst isSetter = (node) => {\n return node && node.parent?.kind === 'set';\n};\n\nconst hasAccessorPair = (node) => {\n const {\n type,\n kind: sourceKind,\n key: {\n name: sourceName,\n },\n } = node;\n const oppositeKind = sourceKind === 'get' ? 'set' : 'get';\n\n const children = type === 'MethodDefinition' ? 'body' : 'properties';\n\n return node.parent[children].some(({\n kind,\n key: {\n name,\n },\n }) => {\n return kind === oppositeKind && name === sourceName;\n });\n};\n\nconst exemptSpeciaMethods = (jsdoc, node, context, schema) => {\n const hasSchemaOption = (prop) => {\n const schemaProperties = schema[0].properties;\n\n return context.options[0]?.[prop] ??\n (schemaProperties[prop] && schemaProperties[prop].default);\n };\n\n const checkGetters = hasSchemaOption('checkGetters');\n const checkSetters = hasSchemaOption('checkSetters');\n\n return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n isGetter(node) && (\n !checkGetters ||\n checkGetters === 'no-setter' && hasAccessorPair(node.parent)\n ) ||\n isSetter(node) && (\n !checkSetters ||\n checkSetters === 'no-getter' && hasAccessorPair(node.parent)\n );\n};\n\n/**\n * Since path segments may be unquoted (if matching a reserved word,\n * identifier or numeric literal) or single or double quoted, in either\n * the `@param` or in source, we need to strip the quotes to give a fair\n * comparison.\n *\n * @param {string} str\n * @returns {string}\n */\nconst dropPathSegmentQuotes = (str) => {\n return str.replace(/\\.(['\"])(.*)\\1/gu, '.$2');\n};\n\n/**\n * @param {string} name\n * @returns {(otherPathName: string) => void}\n */\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\n};\n\n/**\n * @param {string} name\n * @param {string} otherPathName\n * @returns {boolean}\n */\nconst pathDoesNotBeginWith = (name, otherPathName) => {\n return !name.startsWith(otherPathName) &&\n !dropPathSegmentQuotes(name).startsWith(dropPathSegmentQuotes(otherPathName));\n};\n\n/**\n * @param {string} regexString\n * @param {string} requiredFlags\n * @returns {RegExp}\n */\nconst getRegexFromString = (regexString, requiredFlags) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyus]*)$/us);\n let flags = 'u';\n let regex = regexString;\n if (match) {\n [\n , regex,\n flags,\n ] = match;\n if (!flags) {\n flags = 'u';\n }\n }\n\n const uniqueFlags = [\n ...new Set(flags + (requiredFlags || '')),\n ];\n flags = uniqueFlags.join('');\n\n return new RegExp(regex, flags);\n};\n\nexport default {\n comparePaths,\n dropPathSegmentQuotes,\n enforcedContexts,\n exemptSpeciaMethods,\n filterTags,\n flattenRoots,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n getJsdocTagsDeep,\n getPreferredTagName,\n getRegexFromString,\n getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasParams,\n hasReturnValue,\n hasTag,\n hasThrowValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n hasYieldValue,\n isConstructor,\n isGetter,\n isNamepathDefiningTag,\n isSetter,\n isValidTag,\n mayBeUndefinedTypeTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n pathDoesNotBeginWith,\n setTagStructure,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAccess.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","accessLevels","_default","iterateJsdoc","report","utils","forEachPreferredTag","jsdocParameter","targetTagName","desc","name","description","includes","trim","accessLength","getTags","length","individualTagLength","getPresentTags","checkPrivate","iterateAllJsdocs","meta","docs","url","type","exports","module"],"sources":["../../src/rules/checkAccess.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst accessLevels = [\n 'package', 'private', 'protected', 'public',\n];\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {\n const desc = jsdocParameter.name + ' ' + jsdocParameter.description;\n\n if (!accessLevels.includes(desc.trim())) {\n report(\n `Missing valid JSDoc @${targetTagName} level.`,\n null,\n jsdocParameter,\n );\n }\n });\n const accessLength = utils.getTags('access').length;\n const individualTagLength = utils.getPresentTags(accessLevels).length;\n if (accessLength && individualTagLength) {\n report(\n 'The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).',\n );\n }\n\n if (accessLength > 1 || individualTagLength > 1) {\n report(\n 'At most one access-control tag may be present on a jsdoc block.',\n );\n }\n}, {\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that `@access` tags have a valid value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-access',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,YAAY,GAAG,CACnB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAC5C;AAAC,IAAAC,QAAA,GAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,QAAQ,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACrE,MAAMC,IAAI,GAAGF,cAAc,CAACG,IAAI,GAAG,GAAG,GAAGH,cAAc,CAACI,WAAW;IAEnE,IAAI,CAACV,YAAY,CAACW,QAAQ,CAACH,IAAI,CAACI,IAAI,
|
|
1
|
+
{"version":3,"file":"checkAccess.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","accessLevels","_default","iterateJsdoc","report","utils","forEachPreferredTag","jsdocParameter","targetTagName","desc","name","description","includes","trim","accessLength","getTags","length","individualTagLength","getPresentTags","checkPrivate","iterateAllJsdocs","meta","docs","url","type","exports","module"],"sources":["../../src/rules/checkAccess.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst accessLevels = [\n 'package', 'private', 'protected', 'public',\n];\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {\n const desc = jsdocParameter.name + ' ' + jsdocParameter.description;\n\n if (!accessLevels.includes(desc.trim())) {\n report(\n `Missing valid JSDoc @${targetTagName} level.`,\n null,\n jsdocParameter,\n );\n }\n });\n const accessLength = utils.getTags('access').length;\n const individualTagLength = utils.getPresentTags(accessLevels).length;\n if (accessLength && individualTagLength) {\n report(\n 'The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).',\n );\n }\n\n if (accessLength > 1 || individualTagLength > 1) {\n report(\n 'At most one access-control tag may be present on a jsdoc block.',\n );\n }\n}, {\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that `@access` tags have a valid value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-access',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,YAAY,GAAG,CACnB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAC5C;AAAC,IAAAC,QAAA,GAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJA,KAAK,CAACC,mBAAmB,CAAC,QAAQ,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACrE,MAAMC,IAAI,GAAGF,cAAc,CAACG,IAAI,GAAG,GAAG,GAAGH,cAAc,CAACI,WAAW;IAEnE,IAAI,CAACV,YAAY,CAACW,QAAQ,CAACH,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,EAAE;MACvCT,MAAM,CACH,wBAAuBI,aAAc,SAAQ,EAC9C,IAAI,EACJD,cACF,CAAC;IACH;EACF,CAAC,CAAC;EACF,MAAMO,YAAY,GAAGT,KAAK,CAACU,OAAO,CAAC,QAAQ,CAAC,CAACC,MAAM;EACnD,MAAMC,mBAAmB,GAAGZ,KAAK,CAACa,cAAc,CAACjB,YAAY,CAAC,CAACe,MAAM;EACrE,IAAIF,YAAY,IAAIG,mBAAmB,EAAE;IACvCb,MAAM,CACJ,iHACF,CAAC;EACH;EAEA,IAAIU,YAAY,GAAG,CAAC,IAAIG,mBAAmB,GAAG,CAAC,EAAE;IAC/Cb,MAAM,CACJ,iEACF,CAAC;EACH;AACF,CAAC,EAAE;EACDe,YAAY,EAAE,IAAI;EAClBC,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJX,WAAW,EAAE,gDAAgD;MAC7DY,GAAG,EAAE;IACP,CAAC;IACDC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,OAAA,CAAAzB,OAAA,GAAAE,QAAA;AAAAwB,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAzB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkExamples.js","names":["_eslint","require","_semver","_interopRequireDefault","_iterateJsdoc","obj","__esModule","default","zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","defaultMdRules","defaultExpressionRules","quotes","semi","strict","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","_default","iterateJsdoc","report","utils","context","globalState","semver","gte","ESLint","version","column","line","has","set","Map","matchingFileNameMap","get","options","exampleCodeRegex","rejectExampleCodeRegex","checkDefaults","checkParams","checkProperties","noDefaultExampleRules","checkEslintrc","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","mdRules","undefined","expressionRules","getRegexFromString","checkSource","filename","defaultFileName","rules","lines","cols","skipInit","source","targetTagName","sources","tag","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","CLIEngine","config","getConfigForFile","results","messages","executeOnText","number","codeStartLine","codeStartCol","message","severity","ruleId","startLine","startCol","targetSource","getFilenameInfo","ext","jsFileName","getFilename","includes","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","index","n0","n1","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","exports","module"],"sources":["../../src/rules/checkExamples.js"],"sourcesContent":["// Todo: When replace `CLIEngine` with `ESLint` when feature set complete per https://github.com/eslint/eslint/issues/14745\n// https://github.com/eslint/eslint/blob/master/docs/user-guide/migrating-to-7.0.0.md#-the-cliengine-class-has-been-deprecated\nimport {\n CLIEngine,\n ESLint,\n} from 'eslint';\nimport semver from 'semver';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/u;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n};\n\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gu')) || []).length;\n};\n\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\nconst defaultExpressionRules = {\n ...defaultMdRules,\n 'chai-friendly/no-unused-expressions': 'off',\n 'no-empty-function': 'off',\n 'no-new': 'off',\n 'no-unused-expressions': 'off',\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 'off',\n};\n\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n globalState,\n}) => {\n if (semver.gte(ESLint.version, '8.0.0')) {\n report(\n 'This rule cannot yet be supported for ESLint 8; you ' +\n 'should either downgrade to ESLint 7 or disable this rule. The ' +\n 'possibility for ESLint 8 support is being tracked at https://github.com/eslint/eslint/issues/14745',\n {\n column: 1,\n line: 1,\n },\n );\n\n return;\n }\n\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n\n const matchingFileNameMap = globalState.get('checkExamples-matchingFileName');\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n checkDefaults = false,\n checkParams = false,\n checkProperties = false,\n noDefaultExampleRules = false,\n checkEslintrc = true,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);\n }\n\n const checkSource = ({\n filename,\n defaultFileName,\n rules = expressionRules,\n lines = 0,\n cols = 0,\n skipInit,\n source,\n targetTagName,\n sources = [],\n tag = {\n line: 0,\n },\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n // Todo: Make fixable\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gu'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {\n results: [\n {\n messages,\n },\n ],\n } = cliFile.executeOnText(src);\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n for (const {\n message,\n line,\n column,\n severity,\n ruleId,\n } of messages) {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n }\n };\n\n for (const targetSource of sources) {\n checkRules(targetSource);\n }\n };\n\n /**\n *\n * @param {string} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{defaultFileName: string, fileName: string}}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\..*?$/u, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${utils.getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = utils.getPreferredTagName({\n tagName: 'example',\n });\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = utils.getTagDescription(tag);\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {\n index,\n '0': n0,\n '1': n1,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-examples',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkExamples.js","names":["_eslint","require","_semver","_interopRequireDefault","_iterateJsdoc","obj","__esModule","default","zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","defaultMdRules","defaultExpressionRules","quotes","semi","strict","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","_default","iterateJsdoc","report","utils","context","globalState","semver","gte","ESLint","version","column","line","has","set","Map","matchingFileNameMap","get","options","exampleCodeRegex","rejectExampleCodeRegex","checkDefaults","checkParams","checkProperties","noDefaultExampleRules","checkEslintrc","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","mdRules","undefined","expressionRules","getRegexFromString","checkSource","filename","defaultFileName","rules","lines","cols","skipInit","source","targetTagName","sources","tag","push","nonJSPrefacingCols","nonJSPrefacingLines","string","checkRules","cliConfig","useEslintrc","cliConfigStr","JSON","stringify","src","fileNameMapKey","file","cliFile","cli","CLIEngine","config","getConfigForFile","results","messages","executeOnText","number","codeStartLine","codeStartCol","message","severity","ruleId","startLine","startCol","targetSource","getFilenameInfo","ext","jsFileName","getFilename","includes","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","test","startingIndex","lastStringCount","exampleCode","lastIndex","exec","index","n0","n1","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","type","exports","module"],"sources":["../../src/rules/checkExamples.js"],"sourcesContent":["// Todo: When replace `CLIEngine` with `ESLint` when feature set complete per https://github.com/eslint/eslint/issues/14745\n// https://github.com/eslint/eslint/blob/master/docs/user-guide/migrating-to-7.0.0.md#-the-cliengine-class-has-been-deprecated\nimport {\n CLIEngine,\n ESLint,\n} from 'eslint';\nimport semver from 'semver';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/u;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n};\n\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gu')) || []).length;\n};\n\nconst defaultMdRules = {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n};\n\nconst defaultExpressionRules = {\n ...defaultMdRules,\n 'chai-friendly/no-unused-expressions': 'off',\n 'no-empty-function': 'off',\n 'no-new': 'off',\n 'no-unused-expressions': 'off',\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 'off',\n};\n\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n globalState,\n}) => {\n if (semver.gte(ESLint.version, '8.0.0')) {\n report(\n 'This rule cannot yet be supported for ESLint 8; you ' +\n 'should either downgrade to ESLint 7 or disable this rule. The ' +\n 'possibility for ESLint 8 support is being tracked at https://github.com/eslint/eslint/issues/14745',\n {\n column: 1,\n line: 1,\n },\n );\n\n return;\n }\n\n if (!globalState.has('checkExamples-matchingFileName')) {\n globalState.set('checkExamples-matchingFileName', new Map());\n }\n\n const matchingFileNameMap = globalState.get('checkExamples-matchingFileName');\n\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n checkDefaults = false,\n checkParams = false,\n checkProperties = false,\n noDefaultExampleRules = false,\n checkEslintrc = true,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n if (exampleCodeRegex) {\n exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);\n }\n\n const checkSource = ({\n filename,\n defaultFileName,\n rules = expressionRules,\n lines = 0,\n cols = 0,\n skipInit,\n source,\n targetTagName,\n sources = [],\n tag = {\n line: 0,\n },\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n // Todo: Make fixable\n const checkRules = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const cliConfig = {\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: checkEslintrc,\n };\n const cliConfigStr = JSON.stringify(cliConfig);\n\n const src = paddedIndent ?\n string.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gu'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const fileNameMapKey = filename ?\n 'a' + cliConfigStr + filename :\n 'b' + cliConfigStr + defaultFileName;\n const file = filename || defaultFileName;\n let cliFile;\n if (matchingFileNameMap.has(fileNameMapKey)) {\n cliFile = matchingFileNameMap.get(fileNameMapKey);\n } else {\n const cli = new CLIEngine(cliConfig);\n let config;\n if (filename || checkEslintrc) {\n config = cli.getConfigForFile(file);\n }\n\n // We need a new instance to ensure that the rules that may only\n // be available to `file` (if it has its own `.eslintrc`),\n // will be defined.\n cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: {\n ...baseConfig,\n ...config,\n },\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: false,\n });\n matchingFileNameMap.set(fileNameMapKey, cliFile);\n }\n\n const {\n results: [\n {\n messages,\n },\n ],\n } = cliFile.executeOnText(src);\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n for (const {\n message,\n line,\n column,\n severity,\n ruleId,\n } of messages) {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n }\n };\n\n for (const targetSource of sources) {\n checkRules(targetSource);\n }\n };\n\n /**\n *\n * @param {string} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{defaultFileName: string, fileName: string}}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n const jsFileName = context.getFilename();\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\..*?$/u, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n utils.forEachPreferredTag('default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${utils.getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n utils.forEachPreferredTag('param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n utils.forEachPreferredTag('property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n const tagName = utils.getPreferredTagName({\n tagName: 'example',\n });\n if (!utils.hasTag(tagName)) {\n return;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n let source = utils.getTagDescription(tag);\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegex.lastIndex = 0;\n while ((exampleCode = exampleCodeRegex.exec(source)) !== null) {\n const {\n index,\n '0': n0,\n '1': n1,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegex.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegex.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n rules: mdRules,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-examples',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n checkDefaults: {\n default: false,\n type: 'boolean',\n },\n checkEslintrc: {\n default: true,\n type: 'boolean',\n },\n checkParams: {\n default: false,\n type: 'boolean',\n },\n checkProperties: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n matchingFileNameDefaults: {\n type: 'string',\n },\n matchingFileNameParams: {\n type: 'string',\n },\n matchingFileNameProperties: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\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,"file":"checkLineAlignment.js","names":["_commentParser","require","_alignTransform","_interopRequireDefault","_iterateJsdoc","obj","__esModule","default","flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","test","description","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","postDelimiter","line","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","exports","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import {\n transforms,\n} from 'comment-parser';\nimport alignTransform from '../alignTransform';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n let spacerProps;\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'u');\n const hasNoHyphen = !(/^\\s*-(?!$)/u).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s*/u;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\nconst checkAlignment = ({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' + jsdocNode.value + '*/';\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n indent,\n jsdoc,\n jsdocNode,\n report,\n context,\n utils,\n}) => {\n const {\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return',\n ],\n preserveMainDescriptionPostDelimiter,\n customSpacings,\n wrapIndent = '',\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!jsdocNode.value.includes('\\n')) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(utils, tag, customSpacings);\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n if (tokens.postDelimiter.slice(1) !== wrapIndent) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt() + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-line-alignment',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n properties: {\n postDelimiter: {\n type: 'integer',\n },\n postHyphen: {\n type: 'integer',\n },\n postName: {\n type: 'integer',\n },\n postTag: {\n type: 'integer',\n },\n postType: {\n type: 'integer',\n },\n },\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkLineAlignment.js","names":["_commentParser","require","_alignTransform","_interopRequireDefault","_iterateJsdoc","obj","__esModule","default","flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","test","description","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","postDelimiter","line","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","exports","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import {\n transforms,\n} from 'comment-parser';\nimport alignTransform from '../alignTransform';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n let spacerProps;\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'u');\n const hasNoHyphen = !(/^\\s*-(?!$)/u).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s*/u;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\nconst checkAlignment = ({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' + jsdocNode.value + '*/';\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n indent,\n jsdoc,\n jsdocNode,\n report,\n context,\n utils,\n}) => {\n const {\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return',\n ],\n preserveMainDescriptionPostDelimiter,\n customSpacings,\n wrapIndent = '',\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!jsdocNode.value.includes('\\n')) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(utils, tag, customSpacings);\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n if (tokens.postDelimiter.slice(1) !== wrapIndent) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt() + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-line-alignment',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n properties: {\n postDelimiter: {\n type: 'integer',\n },\n postHyphen: {\n type: 'integer',\n },\n postName: {\n type: 'integer',\n },\n postTag: {\n type: 'integer',\n },\n postType: {\n type: 'integer',\n },\n },\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
|