projecte_ionic/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js.map
2022-02-09 18:30:03 +01:00

1 line
44 KiB
Plaintext
Executable file

{"version":3,"sources":["../src/jsdocUtils.js"],"names":["tagStructure","setTagStructure","mode","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","getParamName","param","isProperty","_","has","left","propertyNames","annotationParamName","properties","roots","prop","value","elements","idx","raw","includes","argument","parameter","Error","hasParams","length","getJsdocTagsDeep","jsdoc","targetTagName","ret","tags","forEach","tag","modeWarnSettings","getTagNamesForMode","context","jsdocTags","typeScriptTags","closureTags","hasBeenWarned","report","loc","start","column","line","message","markSettingAsWarned","getPreferredTagName","tagPreference","prefValues","Object","values","some","prefVal","replacement","tagPreferenceFixed","mapKeys","_value","replace","tagNames","preferredTagName","entries","find","aliases","isValidTag","definedTags","validTagNames","keys","flatten","additionalTags","allTags","hasTag","targetTagLower","toLowerCase","doc","hasATag","targetTagNames","hasDefinedTypeReturnTag","tagType","trim","ensureMap","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","hasReturnValue","node","expression","body","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","hasThrowValue","innerFunction","parseClosureTemplateTag","split","enforcedContexts","defaultContexts","contexts","options","getContextObject","checkJsdoc","filterTags","tagsWithNamesAndDescriptions","getTagsByType","descName","tagsWithoutNames","tagsWithNames","tagName","tagWithName","getIndent","sourceCode","indent","text","match","isConstructor","kind","parent","isGetter","isSetter","exemptSpeciaMethods","schema","hasSchemaOption","schemaProperties","default","dropPathSegmentQuotes","str","comparePaths","otherPathName"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport WarnSettings from './WarnSettings';\nimport getDefaultTagStructureForMode from './getDefaultTagStructureForMode';\nimport {\n jsdocTags, closureTags, typeScriptTags,\n} from './tagNames';\n\ntype ParserMode = \"jsdoc\"|\"typescript\"|\"closure\";\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 // eslint-disable-next-line unicorn/no-reduce\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 if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\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 if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\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 if (typeof cur === 'object') {\n if (cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n if (cur.restElement) {\n hasRestElement = true;\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\ntype T = string | [?string, T];\nconst getPropertiesFromPropertySignature = (propSignature): T => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [propSignature.key.name, propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(member);\n })];\n }\n\n return propSignature.key.name;\n};\n\nconst getFunctionParameterNames = (functionNode : Object) : Array<T> => {\n // eslint-disable-next-line complexity\n const getParamName = (param, isProperty) => {\n if (_.has(param, 'typeAnnotation') || _.has(param, 'left.typeAnnotation')) {\n const typeAnnotation = _.has(param, 'left.typeAnnotation') ? param.left.typeAnnotation : param.typeAnnotation;\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 if (_.has(param, 'name') || _.has(param, 'left.name')) {\n return [_.has(param, 'left.name') ? param.left.name : param.name, flattened];\n }\n\n return [undefined, flattened];\n }\n }\n\n if (_.has(param, 'name')) {\n return param.name;\n }\n\n if (_.has(param, 'left.name')) {\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 [undefined, flattenRoots(roots)];\n }\n\n if (param.type === 'Property') {\n if (param.value.type === 'ArrayPattern') {\n return [param.key.name, param.value.elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop.type === 'RestElement',\n };\n })];\n }\n if (param.value.type === 'ObjectPattern') {\n return [param.key.name, param.value.properties.map((prop) => {\n return getParamName(prop, isProperty);\n })];\n }\n if (param.value.type === 'AssignmentPattern') {\n if (param.value.left.type === 'ObjectPattern') {\n return [param.key.name, param.value.left.properties.map((prop) => {\n return getParamName(prop, isProperty);\n })];\n }\n if (param.value.left.type === 'ArrayPattern') {\n return [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 // As function parameters, these do not allow dynamic properties, etc.\n /* istanbul ignore else */\n if (param.key.type === 'Identifier') {\n return param.key.name;\n }\n\n // The key of an object could also be a string or number\n /* istanbul ignore else */\n if (param.key.type === 'Literal') {\n return param.key.raw ||\n // istanbul ignore next -- `raw` may not be present in all parsers\n param.key.value;\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 [undefined, flattenRoots(roots)];\n }\n\n if (['RestElement', 'ExperimentalRestProperty'].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.');\n };\n\n return (functionNode.params || functionNode.value.params).map((param) => {\n return getParamName(param);\n });\n};\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 */\nconst getJsdocTagsDeep = (jsdoc : Object, targetTagName : string) : Array<Object> => {\n const ret = [];\n (jsdoc.tags || []).forEach(({name, tag, type}, idx) => {\n if (tag !== targetTagName) {\n return;\n }\n ret.push({\n idx,\n name,\n type,\n });\n });\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\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\nconst getPreferredTagName = (\n context,\n mode : ParserMode,\n name : string,\n tagPreference : Object = {},\n) : string|Object => {\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 = _.mapKeys(tagPreference, (_value, key) => {\n return key.replace('tag ', '');\n });\n\n if (_.has(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([, aliases]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\nconst isValidTag = (\n context,\n mode : ParserMode,\n name : string,\n definedTags : Array,\n) : boolean => {\n const tagNames = getTagNamesForMode(mode, context);\n const validTagNames = Object.keys(tagNames).concat(_.flatten(Object.values(tagNames)));\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\nconst hasTag = (jsdoc : Object, targetTagName : string) : boolean => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return _.some(jsdoc.tags, (doc : Object) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\nconst hasATag = (jsdoc : Object, targetTagNames : Array) : boolean => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment declares a return value.\n *\n * @param {JsDocTag} tag\n * the tag which should be checked.\n * @returns {boolean}\n * true in case a return value is declared; otherwise false.\n */\nconst hasDefinedTypeReturnTag = (tag) => {\n // The function should not continue in the event @returns is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return false;\n }\n\n // .. same applies if it declares `@returns {undefined}` or `@returns {void}`\n const tagType = tag.type.trim();\n if (tagType === 'undefined' || tagType === 'void') {\n return false;\n }\n\n // In any other case, something must be returned, and\n // a return statement is expected\n return true;\n};\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\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n Object.entries(structuredTags).forEach(([tag, {\n name, type, required = [],\n }]) => {\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 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 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 if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n });\n};\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\nconst isNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameContents') === 'namepath-defining';\n};\n\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeRequired');\n};\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\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\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return namepathTypes.has(tagStruct.get('nameContents'));\n};\n\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('nameRequired');\n};\n\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return tagMightHaveTypePosition(tag, tagMap) || tagMightHaveNamepath(tag, tagMap);\n};\n\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return tagStruct.get('typeOrNameRequired');\n};\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/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node) => {\n if (!node) {\n return false;\n }\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression || hasReturnValue(node.body);\n }\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode);\n });\n }\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body);\n }\n case 'IfStatement': {\n return hasReturnValue(node.consequent) || hasReturnValue(node.alternate);\n }\n case 'TryStatement': {\n return hasReturnValue(node.block) ||\n hasReturnValue(node.handler && node.handler.body) ||\n hasReturnValue(node.finalizer);\n }\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some(hasReturnValue);\n },\n );\n }\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n default: {\n return false;\n }\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 */\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return !innerFunction && hasThrowValue(node.body, true);\n }\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\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 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 case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some(hasThrowValue);\n },\n );\n }\n case 'ThrowStatement': {\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/** @param {string} tag */\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();\n });\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 {true|string[]} defaultContexts\n * @returns {string[]}\n */\nconst enforcedContexts = (context, defaultContexts) => {\n const {\n contexts = defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ] : defaultContexts,\n } = context.options[0] || {};\n\n return contexts;\n};\n\n/**\n * @param {string[]} contexts\n * @param {Function} checkJsdoc\n */\nconst getContextObject = (contexts, checkJsdoc) => {\n const properties = {};\n\n contexts.forEach((prop) => {\n if (typeof prop === 'object') {\n properties[prop.context] = checkJsdoc;\n } else {\n properties[prop] = checkJsdoc;\n }\n });\n\n return properties;\n};\n\nconst filterTags = (tags = [], filter) => {\n return tags.filter(filter);\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 {tag: tagName} = 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 let indent = sourceCode.text.match(/^\\n*([ \\t]+)/u);\n indent = indent ? indent[1] + ' ' : ' ';\n\n return indent;\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 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 return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n !hasSchemaOption('checkGetters') &&\n isGetter(node) ||\n !hasSchemaOption('checkSetters') &&\n isSetter(node);\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\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\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 getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasDefinedTypeReturnTag,\n hasParams,\n hasReturnValue,\n hasTag,\n hasThrowValue,\n isConstructor,\n isGetter,\n isNamepathDefiningTag,\n isSetter,\n isValidTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n setTagStructure,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\n"],"file":"jsdocUtils.js"}