eslint-plugin-jsdoc 54.0.0 → 54.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -257,8 +257,10 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
257
257
  }).filter(Boolean);
258
258
  }
259
259
  return [];
260
- })()).concat(...getValidRuntimeIdentifiers(node && (sourceCode.getScope && /* c8 ignore next 2 */
261
- sourceCode.getScope(node) || context.getScope()))).concat(settings.mode === 'jsdoc' ? [] : [...(settings.mode === 'typescript' ? typescriptGlobals : []), ...closureGenericTypes]));
260
+ })()).concat(...getValidRuntimeIdentifiers(node && (sourceCode.getScope && /* c8 ignore next 3 */
261
+ sourceCode.getScope(node) ||
262
+ // @ts-expect-error ESLint 8
263
+ context.getScope()))).concat(settings.mode === 'jsdoc' ? [] : [...(settings.mode === 'typescript' ? typescriptGlobals : []), ...closureGenericTypes]));
262
264
 
263
265
  /**
264
266
  * @typedef {{
@@ -355,8 +357,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
355
357
  } else if (markVariablesAsUsed && !extraTypes.includes(val)) {
356
358
  if (sourceCode.markVariableAsUsed) {
357
359
  sourceCode.markVariableAsUsed(val);
358
- /* c8 ignore next 3 */
360
+ /* c8 ignore next 4 */
359
361
  } else {
362
+ // @ts-expect-error ESLint 8
360
363
  context.markVariableAsUsed(val);
361
364
  }
362
365
  }
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.cjs","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdoccomment","_parseImportsExports","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","allComments","getAllComments","comments","comment","test","value","commentNode","parseComment","globals","flatMap","trim","split","concat","languageOptions","typedefDeclarations","doc","tags","tag","isNamepathDefiningTag","name","importTags","description","type","typePart","imprt","importsExports","parseImportsExports","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","variables","add","upper","imports","allDefinedTypes","identifiers","globalItem","body","item","property","key","init","callee","id","methodOrProp","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","parentNode","_parent","val","currNode","includes","right","structuredTypes","Array","isArray","markVariableAsUsed","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport {\n parseImportsExports,\n} from 'parse-imports-exports';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function', 'Intl',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n mode,\n preferredTypes,\n structuredTags,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const allComments = sourceCode.getAllComments();\n const comments = allComments\n .filter((comment) => {\n return (/^\\*\\s/v).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const globals = allComments\n .filter((comment) => {\n return (/^\\s*globals/v).test(comment.value);\n }).flatMap((commentNode) => {\n return commentNode.value.replace(/^\\s*globals/v, '').trim().split(/,\\s*/v);\n }).concat(Object.keys(context.languageOptions.globals ?? []));\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n description,\n name,\n type,\n } = tag;\n const typePart = type ? `{${type}} ` : '';\n const imprt = 'import ' + (description ?\n `${typePart}${name} ${description}` :\n `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt.trim());\n\n const types = [];\n const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];\n if (namedImports) {\n if (namedImports.default) {\n types.push(namedImports.default);\n }\n\n if (namedImports.names) {\n types.push(...Object.keys(namedImports.names));\n }\n }\n\n const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];\n if (namespaceImports) {\n if (namespaceImports.namespace) {\n types.push(namespaceImports.namespace);\n }\n\n if (namespaceImports.default) {\n types.push(namespaceImports.default);\n }\n }\n\n return types;\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set();\n\n let scp = scope;\n while (scp) {\n for (const {\n name,\n } of scp.variables) {\n result.add(name);\n }\n\n scp = scp.upper;\n }\n\n return result;\n };\n\n /**\n * We treat imports differently as we can't introspect their children.\n * @type {string[]}\n */\n const imports = [];\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).flatMap(({\n identifiers,\n name,\n }) => {\n const globalItem = /** @type {import('estree').Identifier & {parent: import('@typescript-eslint/types').TSESTree.Node}} */ (\n identifiers?.[0]\n )?.parent;\n switch (globalItem?.type) {\n case 'ClassDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.PropertyDefinition} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'ImportDefaultSpecifier':\n case 'ImportNamespaceSpecifier':\n case 'ImportSpecifier':\n imports.push(name);\n break;\n case 'TSInterfaceDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'VariableDeclarator':\n if (/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.CallExpression} */ (\n globalItem?.init\n )?.callee)?.name === 'require'\n ) {\n imports.push(/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n globalItem.id\n ).name);\n break;\n }\n\n return [];\n }\n\n return [\n name,\n ];\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat((() => {\n // Other methods are not in scope, but we need them, and we grab them here\n if (node?.type === 'MethodDefinition') {\n return /** @type {import('estree').ClassBody} */ (node.parent).body.flatMap((methodOrProp) => {\n if (methodOrProp.type === 'MethodDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n\n if (methodOrProp.type === 'PropertyDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n /* c8 ignore next 2 -- Not yet built */\n\n return '';\n }).filter(Boolean);\n }\n\n return [];\n })())\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 2 */\n sourceCode.getScope(node)) ||\n context.getScope()\n )))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n parsedType,\n tag,\n } of tagsWithTypes) {\n traverse(parsedType, (nde, parentNode) => {\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */\n // eslint-disable-next-line canonical/id-match -- Avoid clashes\n (nde)._parent = parentNode;\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n let val = value;\n\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult|undefined} */\n let currNode = nde;\n do {\n currNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (currNode)._parent;\n if (\n // Avoid appending for imports and globals since we don't want to\n // check their properties which may or may not exist\n !imports.includes(val) && !globals.includes(val) &&\n !importTags.includes(val) &&\n !extraTypes.includes(val) &&\n !typedefDeclarations.includes(val) &&\n currNode && 'right' in currNode &&\n currNode.right?.type === 'JsdocTypeProperty') {\n val = val + '.' + currNode.right.value;\n }\n } while (currNode?.type === 'JsdocTypeNamePath');\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(val) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(val))\n ) {\n if (!disableReporting) {\n report(`The type '${val}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(val)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(val);\n /* c8 ignore next 3 */\n } else {\n context.markVariableAsUsed(val);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"noUndefinedTypes.cjs","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdoccomment","_parseImportsExports","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","allComments","getAllComments","comments","comment","test","value","commentNode","parseComment","globals","flatMap","trim","split","concat","languageOptions","typedefDeclarations","doc","tags","tag","isNamepathDefiningTag","name","importTags","description","type","typePart","imprt","importsExports","parseImportsExports","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","variables","add","upper","imports","allDefinedTypes","identifiers","globalItem","body","item","property","key","init","callee","id","methodOrProp","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","parentNode","_parent","val","currNode","includes","right","structuredTypes","Array","isArray","markVariableAsUsed","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport {\n parseImportsExports,\n} from 'parse-imports-exports';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function', 'Intl',\n];\n\nconst typescriptGlobals = [\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n mode,\n preferredTypes,\n structuredTags,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const allComments = sourceCode.getAllComments();\n const comments = allComments\n .filter((comment) => {\n return (/^\\*\\s/v).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const globals = allComments\n .filter((comment) => {\n return (/^\\s*globals/v).test(comment.value);\n }).flatMap((commentNode) => {\n return commentNode.value.replace(/^\\s*globals/v, '').trim().split(/,\\s*/v);\n }).concat(Object.keys(context.languageOptions.globals ?? []));\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n description,\n name,\n type,\n } = tag;\n const typePart = type ? `{${type}} ` : '';\n const imprt = 'import ' + (description ?\n `${typePart}${name} ${description}` :\n `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt.trim());\n\n const types = [];\n const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];\n if (namedImports) {\n if (namedImports.default) {\n types.push(namedImports.default);\n }\n\n if (namedImports.names) {\n types.push(...Object.keys(namedImports.names));\n }\n }\n\n const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];\n if (namespaceImports) {\n if (namespaceImports.namespace) {\n types.push(namespaceImports.namespace);\n }\n\n if (namespaceImports.default) {\n types.push(namespaceImports.default);\n }\n }\n\n return types;\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdoc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags([\n 'template',\n ]);\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set();\n\n let scp = scope;\n while (scp) {\n for (const {\n name,\n } of scp.variables) {\n result.add(name);\n }\n\n scp = scp.upper;\n }\n\n return result;\n };\n\n /**\n * We treat imports differently as we can't introspect their children.\n * @type {string[]}\n */\n const imports = [];\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).flatMap(({\n identifiers,\n name,\n }) => {\n const globalItem = /** @type {import('estree').Identifier & {parent: import('@typescript-eslint/types').TSESTree.Node}} */ (\n identifiers?.[0]\n )?.parent;\n switch (globalItem?.type) {\n case 'ClassDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.PropertyDefinition} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'ImportDefaultSpecifier':\n case 'ImportNamespaceSpecifier':\n case 'ImportSpecifier':\n imports.push(name);\n break;\n case 'TSInterfaceDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'VariableDeclarator':\n if (/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.CallExpression} */ (\n globalItem?.init\n )?.callee)?.name === 'require'\n ) {\n imports.push(/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n globalItem.id\n ).name);\n break;\n }\n\n return [];\n }\n\n return [\n name,\n ];\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat((() => {\n // Other methods are not in scope, but we need them, and we grab them here\n if (node?.type === 'MethodDefinition') {\n return /** @type {import('estree').ClassBody} */ (node.parent).body.flatMap((methodOrProp) => {\n if (methodOrProp.type === 'MethodDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n\n if (methodOrProp.type === 'PropertyDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n /* c8 ignore next 2 -- Not yet built */\n\n return '';\n }).filter(Boolean);\n }\n\n return [];\n })())\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 3 */\n sourceCode.getScope(node)) ||\n // @ts-expect-error ESLint 8\n context.getScope()\n )))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n parsedType,\n tag,\n } of tagsWithTypes) {\n traverse(parsedType, (nde, parentNode) => {\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */\n // eslint-disable-next-line canonical/id-match -- Avoid clashes\n (nde)._parent = parentNode;\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n let val = value;\n\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult|undefined} */\n let currNode = nde;\n do {\n currNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (currNode)._parent;\n if (\n // Avoid appending for imports and globals since we don't want to\n // check their properties which may or may not exist\n !imports.includes(val) && !globals.includes(val) &&\n !importTags.includes(val) &&\n !extraTypes.includes(val) &&\n !typedefDeclarations.includes(val) &&\n currNode && 'right' in currNode &&\n currNode.right?.type === 'JsdocTypeProperty') {\n val = val + '.' + currNode.right.value;\n }\n } while (currNode?.type === 'JsdocTypeNamePath');\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(val) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(val))\n ) {\n if (!disableReporting) {\n report(`The type '${val}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(val)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(val);\n /* c8 ignore next 4 */\n } else {\n // @ts-expect-error ESLint 8\n context.markVariableAsUsed(val);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -204,8 +204,10 @@ const isExemptedImplementer = (node, sourceCode, context, settings) => {
204
204
  name: interfaceName
205
205
  } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */
206
206
  impl.expression;
207
- const interfaceMethodNode = getMethodOnInterface(interfaceName, methodName, node && (sourceCode.getScope && /* c8 ignore next 2 */
208
- sourceCode.getScope(node) || context.getScope()));
207
+ const interfaceMethodNode = getMethodOnInterface(interfaceName, methodName, node && (sourceCode.getScope && /* c8 ignore next 3 */
208
+ sourceCode.getScope(node) ||
209
+ // @ts-expect-error ESLint 8
210
+ context.getScope()));
209
211
  if (interfaceMethodNode) {
210
212
  // @ts-expect-error Ok
211
213
  const comment = (0, _jsdoccomment.getJSDocComment)(sourceCode, interfaceMethodNode, settings);
@@ -1 +1 @@
1
- {"version":3,"file":"requireJsdoc.cjs","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","e","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getMethodOnInterface","interfaceName","methodName","scope","scp","identifiers","name","variables","identifier","interfaceDeclaration","parent","bodyItem","body","methodSig","key","upper","isExemptedImplementer","node","sourceCode","settings","implments","implements","impl","expression","interfaceMethodNode","getScope","comment","getJSDocComment","getOption","baseObject","option","options","getOptions","undefined","baseObj","prop","Object","keys","opt","_default","exports","create","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","some","ctxt","count","underMinLine","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n getSettings,\n} from '../iterateJsdoc.js';\nimport {\n enforcedContexts,\n exemptSpeciaMethods,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n hasReturnValue,\n isConstructor,\n} from '../jsdocUtils.js';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/**\n * @typedef {import('eslint').Rule.Node|\n * import('@typescript-eslint/types').TSESTree.Node} ESLintOrTSNode\n */\n\n/** @type {import('json-schema').JSONSchema4} */\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\n/**\n * @param {string} interfaceName\n * @param {string} methodName\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {import('@typescript-eslint/types').TSESTree.TSMethodSignature|null}\n */\nconst getMethodOnInterface = (interfaceName, methodName, scope) => {\n let scp = scope;\n while (scp) {\n for (const {\n identifiers,\n name,\n } of scp.variables) {\n if (interfaceName !== name) {\n continue;\n }\n\n for (const identifier of identifiers) {\n const interfaceDeclaration = /** @type {import('@typescript-eslint/types').TSESTree.Identifier & {parent: import('@typescript-eslint/types').TSESTree.TSInterfaceDeclaration}} */ (\n identifier\n ).parent;\n /* c8 ignore next 3 -- TS */\n if (interfaceDeclaration.type !== 'TSInterfaceDeclaration') {\n continue;\n }\n\n for (const bodyItem of interfaceDeclaration.body.body) {\n const methodSig = /** @type {import('@typescript-eslint/types').TSESTree.TSMethodSignature} */ (\n bodyItem\n );\n if (methodName === /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n methodSig.key\n ).name) {\n return methodSig;\n }\n }\n }\n }\n\n scp = scp.upper;\n }\n\n return null;\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n */\nconst isExemptedImplementer = (node, sourceCode, context, settings) => {\n if (node.type === 'FunctionExpression' &&\n node.parent.type === 'MethodDefinition' &&\n node.parent.parent.type === 'ClassBody' &&\n node.parent.parent.parent.type === 'ClassDeclaration' &&\n 'implements' in node.parent.parent.parent\n ) {\n const implments = /** @type {import('@typescript-eslint/types').TSESTree.TSClassImplements[]} */ (\n node.parent.parent.parent.implements\n );\n\n const {\n name: methodName,\n } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n node.parent.key\n );\n\n for (const impl of implments) {\n const {\n name: interfaceName,\n } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n impl.expression\n );\n\n const interfaceMethodNode = getMethodOnInterface(interfaceName, methodName, node && (\n (sourceCode.getScope &&\n /* c8 ignore next 2 */\n sourceCode.getScope(node)) ||\n context.getScope()\n ));\n if (interfaceMethodNode) {\n // @ts-expect-error Ok\n const comment = getJSDocComment(sourceCode, interfaceMethodNode, settings);\n if (comment) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\n */\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but\n // tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\n * }}\n */\nconst getOptions = (context, settings) => {\n const {\n contexts = settings.contexts || [],\n enableFixer = true,\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n fixerMessage = '',\n minLineCount = undefined,\n publicOnly,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n /* c8 ignore next -- Fallback to deprecated method */\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n require: requireOption,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\n */\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gv)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (info.selector || node.type);\n })) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (exemptSpeciaMethods(\n {\n description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && isConstructor(node)\n ) {\n const functionParameterNames = getFunctionParameterNames(node);\n if (!functionParameterNames.length && !hasReturnValue(node)) {\n return;\n }\n }\n\n if (isExemptedImplementer(node, sourceCode, context, settings)) {\n return;\n }\n\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n /** @type {ESLintOrTSNode|import('@typescript-eslint/types').TSESTree.Decorator} */\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n );\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = getIndent({\n text: sourceCode.getText(\n /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\n return ctxt === node.type;\n })) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n /**\n * @param {string} prop\n * @returns {boolean}\n */\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...getContextObject(\n enforcedContexts(context, [], settings),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n ].includes(node.parent.type) ||\n [\n 'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n ].includes(node.parent.type) ||\n [\n 'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, /** @type {import('eslint').Rule.Node} */ (node.value));\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: true,\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"requireJsdoc.cjs","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","e","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getMethodOnInterface","interfaceName","methodName","scope","scp","identifiers","name","variables","identifier","interfaceDeclaration","parent","bodyItem","body","methodSig","key","upper","isExemptedImplementer","node","sourceCode","settings","implments","implements","impl","expression","interfaceMethodNode","getScope","comment","getJSDocComment","getOption","baseObject","option","options","getOptions","undefined","baseObj","prop","Object","keys","opt","_default","exports","create","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","some","ctxt","count","underMinLine","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n getSettings,\n} from '../iterateJsdoc.js';\nimport {\n enforcedContexts,\n exemptSpeciaMethods,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n hasReturnValue,\n isConstructor,\n} from '../jsdocUtils.js';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/**\n * @typedef {import('eslint').Rule.Node|\n * import('@typescript-eslint/types').TSESTree.Node} ESLintOrTSNode\n */\n\n/** @type {import('json-schema').JSONSchema4} */\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\n/**\n * @param {string} interfaceName\n * @param {string} methodName\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {import('@typescript-eslint/types').TSESTree.TSMethodSignature|null}\n */\nconst getMethodOnInterface = (interfaceName, methodName, scope) => {\n let scp = scope;\n while (scp) {\n for (const {\n identifiers,\n name,\n } of scp.variables) {\n if (interfaceName !== name) {\n continue;\n }\n\n for (const identifier of identifiers) {\n const interfaceDeclaration = /** @type {import('@typescript-eslint/types').TSESTree.Identifier & {parent: import('@typescript-eslint/types').TSESTree.TSInterfaceDeclaration}} */ (\n identifier\n ).parent;\n /* c8 ignore next 3 -- TS */\n if (interfaceDeclaration.type !== 'TSInterfaceDeclaration') {\n continue;\n }\n\n for (const bodyItem of interfaceDeclaration.body.body) {\n const methodSig = /** @type {import('@typescript-eslint/types').TSESTree.TSMethodSignature} */ (\n bodyItem\n );\n if (methodName === /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n methodSig.key\n ).name) {\n return methodSig;\n }\n }\n }\n }\n\n scp = scp.upper;\n }\n\n return null;\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n */\nconst isExemptedImplementer = (node, sourceCode, context, settings) => {\n if (node.type === 'FunctionExpression' &&\n node.parent.type === 'MethodDefinition' &&\n node.parent.parent.type === 'ClassBody' &&\n node.parent.parent.parent.type === 'ClassDeclaration' &&\n 'implements' in node.parent.parent.parent\n ) {\n const implments = /** @type {import('@typescript-eslint/types').TSESTree.TSClassImplements[]} */ (\n node.parent.parent.parent.implements\n );\n\n const {\n name: methodName,\n } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n node.parent.key\n );\n\n for (const impl of implments) {\n const {\n name: interfaceName,\n } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n impl.expression\n );\n\n const interfaceMethodNode = getMethodOnInterface(interfaceName, methodName, node && (\n (sourceCode.getScope &&\n /* c8 ignore next 3 */\n sourceCode.getScope(node)) ||\n // @ts-expect-error ESLint 8\n context.getScope()\n ));\n if (interfaceMethodNode) {\n // @ts-expect-error Ok\n const comment = getJSDocComment(sourceCode, interfaceMethodNode, settings);\n if (comment) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\n */\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but\n // tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\n * }}\n */\nconst getOptions = (context, settings) => {\n const {\n contexts = settings.contexts || [],\n enableFixer = true,\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n fixerMessage = '',\n minLineCount = undefined,\n publicOnly,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n /* c8 ignore next -- Fallback to deprecated method */\n const {\n sourceCode = context.getSourceCode(),\n } = context;\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n require: requireOption,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\n */\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gv)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (info.selector || node.type);\n })) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (exemptSpeciaMethods(\n {\n description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && isConstructor(node)\n ) {\n const functionParameterNames = getFunctionParameterNames(node);\n if (!functionParameterNames.length && !hasReturnValue(node)) {\n return;\n }\n }\n\n if (isExemptedImplementer(node, sourceCode, context, settings)) {\n return;\n }\n\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n /** @type {ESLintOrTSNode|import('@typescript-eslint/types').TSESTree.Decorator} */\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n );\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = getIndent({\n text: sourceCode.getText(\n /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\n return ctxt === node.type;\n })) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n /**\n * @param {string} prop\n * @returns {boolean}\n */\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...getContextObject(\n enforcedContexts(context, [], settings),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n ].includes(node.parent.type) ||\n [\n 'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n ].includes(node.parent.type) ||\n [\n 'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, /** @type {import('eslint').Rule.Node} */ (node.value));\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: true,\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,7 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
8
  var _jsdoccomment = require("@es-joy/jsdoccomment");
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  const inlineTags = new Set(['link', 'linkcode', 'linkplain', 'tutorial']);
11
- const jsdocTypePrattKeywords = new Set(['import', 'is', 'readonly', 'typeof']);
11
+ const jsdocTypePrattKeywords = new Set(['extends', 'import', 'is', 'readonly', 'typeof']);
12
12
  const asExpression = /as\s+/v;
13
13
  const suppressTypes = new Set([
14
14
  // https://github.com/google/closure-compiler/wiki/@suppress-annotations
@@ -1 +1 @@
1
- {"version":3,"file":"validTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","inlineTags","Set","jsdocTypePrattKeywords","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","context","jsdoc","report","settings","utils","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","has","handled","endChar","slice","includes","startsWith","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","description","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","url","schema","additionalProperties","properties","module"],"sources":["../../src/rules/validTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst inlineTags = new Set([\n 'link', 'linkcode', 'linkplain',\n 'tutorial',\n]);\n\nconst jsdocTypePrattKeywords = new Set([\n 'import',\n 'is',\n 'readonly',\n 'typeof',\n]);\n\nconst asExpression = /as\\s+/v;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkEs5InheritanceCorrectnessConditions',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureClassChecks',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'dangerousUnrecognizedTypeError',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'lintVarDeclarations',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingReturn',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'msgDescriptions',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictCheckTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n\n // Not documented?\n 'unusedPrivateMembers',\n 'uselessCode',\n 'useOfGoogProvide',\n 'visibility',\n 'with',\n]);\n\n/**\n * @param {string} path\n * @returns {boolean}\n */\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n settings,\n utils,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {\n mode,\n } = settings;\n\n for (const tag of jsdoc.tags) {\n /**\n * @param {string} namepath\n * @param {string} [tagName]\n * @returns {boolean}\n */\n const validNamepathParsing = function (namepath, tagName) {\n if (\n tryParsePathIgnoreError(namepath) ||\n jsdocTypePrattKeywords.has(namepath)\n ) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'memberof':\n case 'memberof!': {\n const endChar = namepath.slice(-1);\n if ([\n '#', '.', '~',\n ].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'module': case 'requires': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt(0);\n if ([\n '#', '.', '~',\n ].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n /**\n * @param {string} type\n * @returns {boolean}\n */\n const validTypeParsing = function (type) {\n let parsedTypes;\n try {\n if (mode === 'permissive') {\n parsedTypes = tryParse(type);\n } else {\n parsedTypes = parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n if (mode === 'closure' || mode === 'typescript') {\n traverse(parsedTypes, (node) => {\n const {\n type: typ,\n } = node;\n\n if (\n (typ === 'JsdocTypeObjectField' || typ === 'JsdocTypeKeyValue') &&\n node.right?.type === 'JsdocTypeNullable' &&\n node.right?.meta?.position === 'suffix'\n ) {\n report(`Syntax error in type: ${node.right.type}`, null, tag);\n }\n });\n }\n\n return true;\n };\n\n if (tag.problems.length) {\n const msg = tag.problems.reduce((str, {\n message,\n }) => {\n return str + '; ' + message;\n }, '').slice(2);\n report(`Invalid name: ${msg}`, null, tag);\n continue;\n }\n\n if (tag.tag === 'import') {\n // A named import will look like a type, but not be valid; we also don't\n // need to check the name/namepath\n continue;\n }\n\n if (tag.tag === 'borrows') {\n const thisNamepath = /** @type {string} */ (\n utils.getTagDescription(tag)\n ).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(/** @type {string} */ (\n utils.getTagDescription(tag)\n )) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n let type;\n if ('value' in node && typeof node.value === 'string') {\n type = node.value;\n }\n\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in suppress type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = /** @type {import('../jsdocUtils.js').ParserMode[]} */ ([\n 'jsdoc', 'typescript', 'closure', 'permissive',\n ]).filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // Documentation like `@returns {@link SomeType}` is technically ambiguous. Specifically it\n // could either be intepreted as a type `\"@link SomeType\"` or a description `\"{@link SomeType}\"`.\n // However this is a good heuristic.\n if (tag.type.trim().startsWith('@')) {\n tag.description = `{${tag.type}} ${tag.description}`;\n tag.type = '';\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'arg', 'argument', 'param',\n 'prop', 'property',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n\n for (const inlineTag of tag.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`, null, tag);\n }\n }\n }\n\n for (const inlineTag of jsdoc.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","inlineTags","Set","jsdocTypePrattKeywords","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","context","jsdoc","report","settings","utils","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","has","handled","endChar","slice","includes","startsWith","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","description","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","url","schema","additionalProperties","properties","module"],"sources":["../../src/rules/validTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst inlineTags = new Set([\n 'link', 'linkcode', 'linkplain',\n 'tutorial',\n]);\n\nconst jsdocTypePrattKeywords = new Set([\n 'extends',\n 'import',\n 'is',\n 'readonly',\n 'typeof',\n]);\n\nconst asExpression = /as\\s+/v;\n\nconst suppressTypes = new Set([\n // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n 'accessControls',\n 'checkDebuggerStatement',\n 'checkEs5InheritanceCorrectnessConditions',\n 'checkPrototypalTypes',\n 'checkRegExp',\n 'checkTypes',\n 'checkVars',\n 'closureClassChecks',\n 'closureDepMethodUsageChecks',\n 'const',\n 'constantProperty',\n 'dangerousUnrecognizedTypeError',\n 'deprecated',\n 'duplicate',\n 'es5Strict',\n 'externsValidation',\n 'extraProvide',\n 'extraRequire',\n 'globalThis',\n 'invalidCasts',\n 'lateProvide',\n 'legacyGoogScopeRequire',\n 'lintChecks',\n 'lintVarDeclarations',\n 'messageConventions',\n 'misplacedTypeAnnotation',\n 'missingOverride',\n 'missingPolyfill',\n 'missingProperties',\n 'missingProvide',\n 'missingRequire',\n 'missingReturn',\n 'missingSourcesWarnings',\n 'moduleLoad',\n 'msgDescriptions',\n 'nonStandardJsDocs',\n 'partialAlias',\n 'polymer',\n 'reportUnknownTypes',\n 'strictCheckTypes',\n 'strictMissingProperties',\n 'strictModuleDepCheck',\n 'strictPrimitiveOperators',\n 'suspiciousCode',\n\n // Not documented in enum\n 'switch',\n 'transitionalSuspiciousCodeWarnings',\n 'undefinedNames',\n 'undefinedVars',\n 'underscore',\n 'unknownDefines',\n 'untranspilableFeatures',\n 'unusedLocalVariables',\n\n // Not documented?\n 'unusedPrivateMembers',\n 'uselessCode',\n 'useOfGoogProvide',\n 'visibility',\n 'with',\n]);\n\n/**\n * @param {string} path\n * @returns {boolean}\n */\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n settings,\n utils,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {\n mode,\n } = settings;\n\n for (const tag of jsdoc.tags) {\n /**\n * @param {string} namepath\n * @param {string} [tagName]\n * @returns {boolean}\n */\n const validNamepathParsing = function (namepath, tagName) {\n if (\n tryParsePathIgnoreError(namepath) ||\n jsdocTypePrattKeywords.has(namepath)\n ) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'memberof':\n case 'memberof!': {\n const endChar = namepath.slice(-1);\n if ([\n '#', '.', '~',\n ].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'module': case 'requires': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt(0);\n if ([\n '#', '.', '~',\n ].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n /**\n * @param {string} type\n * @returns {boolean}\n */\n const validTypeParsing = function (type) {\n let parsedTypes;\n try {\n if (mode === 'permissive') {\n parsedTypes = tryParse(type);\n } else {\n parsedTypes = parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n if (mode === 'closure' || mode === 'typescript') {\n traverse(parsedTypes, (node) => {\n const {\n type: typ,\n } = node;\n\n if (\n (typ === 'JsdocTypeObjectField' || typ === 'JsdocTypeKeyValue') &&\n node.right?.type === 'JsdocTypeNullable' &&\n node.right?.meta?.position === 'suffix'\n ) {\n report(`Syntax error in type: ${node.right.type}`, null, tag);\n }\n });\n }\n\n return true;\n };\n\n if (tag.problems.length) {\n const msg = tag.problems.reduce((str, {\n message,\n }) => {\n return str + '; ' + message;\n }, '').slice(2);\n report(`Invalid name: ${msg}`, null, tag);\n continue;\n }\n\n if (tag.tag === 'import') {\n // A named import will look like a type, but not be valid; we also don't\n // need to check the name/namepath\n continue;\n }\n\n if (tag.tag === 'borrows') {\n const thisNamepath = /** @type {string} */ (\n utils.getTagDescription(tag)\n ).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(/** @type {string} */ (\n utils.getTagDescription(tag)\n )) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n if (tag.tag === 'suppress' && mode === 'closure') {\n let parsedTypes;\n\n try {\n parsedTypes = tryParse(tag.type);\n } catch {\n // Ignore\n }\n\n if (parsedTypes) {\n traverse(parsedTypes, (node) => {\n let type;\n if ('value' in node && typeof node.value === 'string') {\n type = node.value;\n }\n\n if (type !== undefined && !suppressTypes.has(type)) {\n report(`Syntax error in suppress type: ${type}`, null, tag);\n }\n });\n }\n }\n\n const otherModeMaps = /** @type {import('../jsdocUtils.js').ParserMode[]} */ ([\n 'jsdoc', 'typescript', 'closure', 'permissive',\n ]).filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // Documentation like `@returns {@link SomeType}` is technically ambiguous. Specifically it\n // could either be intepreted as a type `\"@link SomeType\"` or a description `\"{@link SomeType}\"`.\n // However this is a good heuristic.\n if (tag.type.trim().startsWith('@')) {\n tag.description = `{${tag.type}} ${tag.description}`;\n tag.type = '';\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'arg', 'argument', 'param',\n 'prop', 'property',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n\n for (const inlineTag of tag.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`, null, tag);\n }\n }\n }\n\n for (const inlineTag of jsdoc.inlineTags) {\n if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n report(`Inline tag \"${inlineTag.tag}\" missing content`);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "@es-joy/jsdoccomment": "~0.52.0",
8
+ "@es-joy/jsdoccomment": "~0.53.0",
9
9
  "are-docs-informative": "^0.0.2",
10
10
  "comment-parser": "1.4.1",
11
11
  "debug": "^4.4.1",
@@ -18,56 +18,55 @@
18
18
  },
19
19
  "description": "JSDoc linting rules for ESLint.",
20
20
  "devDependencies": {
21
- "@babel/cli": "^7.27.2",
22
- "@babel/core": "^7.27.4",
23
- "@babel/eslint-parser": "^7.27.5",
24
- "@babel/node": "^7.27.1",
21
+ "@babel/cli": "^7.28.3",
22
+ "@babel/core": "^7.28.3",
23
+ "@babel/eslint-parser": "^7.28.0",
24
+ "@babel/node": "^7.28.0",
25
25
  "@babel/plugin-syntax-class-properties": "^7.12.13",
26
26
  "@babel/plugin-transform-flow-strip-types": "^7.27.1",
27
- "@babel/preset-env": "^7.27.2",
27
+ "@babel/preset-env": "^7.28.3",
28
28
  "@es-joy/escodegen": "^3.5.1",
29
29
  "@es-joy/jsdoc-eslint-parser": "^0.21.1",
30
30
  "@hkdobrev/run-if-changed": "^0.6.3",
31
31
  "@semantic-release/commit-analyzer": "^13.0.1",
32
- "@semantic-release/github": "^11.0.3",
33
- "@semantic-release/npm": "^12.0.1",
32
+ "@semantic-release/github": "^11.0.4",
33
+ "@semantic-release/npm": "^12.0.2",
34
34
  "@types/chai": "^5.2.2",
35
35
  "@types/debug": "^4.1.12",
36
- "@types/eslint": "^9.6.1",
37
36
  "@types/espree": "^10.1.0",
38
37
  "@types/esquery": "^1.5.4",
39
38
  "@types/estree": "^1.0.8",
40
39
  "@types/json-schema": "^7.0.15",
41
40
  "@types/lodash.defaultsdeep": "^4.6.9",
42
41
  "@types/mocha": "^10.0.10",
43
- "@types/node": "^24.0.3",
42
+ "@types/node": "^24.3.0",
44
43
  "@types/semver": "^7.7.0",
45
44
  "@types/spdx-expression-parse": "^3.0.5",
46
- "@typescript-eslint/types": "^8.34.1",
45
+ "@typescript-eslint/types": "^8.39.1",
47
46
  "babel-plugin-add-module-exports": "^1.0.4",
48
47
  "babel-plugin-istanbul": "^7.0.0",
49
48
  "babel-plugin-transform-import-meta": "^2.3.3",
50
49
  "c8": "^10.1.3",
51
50
  "camelcase": "^8.0.0",
52
- "chai": "^5.2.0",
51
+ "chai": "^5.2.1",
53
52
  "decamelize": "^6.0.0",
54
- "eslint": "9.29.0",
55
- "eslint-config-canonical": "~44.9.5",
53
+ "eslint": "9.33.0",
54
+ "eslint-config-canonical": "~44.9.9",
56
55
  "gitdown": "^4.1.1",
57
56
  "glob": "^11.0.3",
58
- "globals": "^16.2.0",
57
+ "globals": "^16.3.0",
59
58
  "husky": "^9.1.7",
60
- "jsdoc-type-pratt-parser": "^4.1.0",
59
+ "jsdoc-type-pratt-parser": "^4.8.0",
61
60
  "json-schema": "^0.4.0",
62
- "lint-staged": "^16.1.2",
61
+ "lint-staged": "^16.1.5",
63
62
  "lodash.defaultsdeep": "^4.6.1",
64
- "mocha": "^11.7.0",
63
+ "mocha": "^11.7.1",
65
64
  "open-editor": "^5.1.0",
66
65
  "replace": "^1.2.2",
67
66
  "rimraf": "^6.0.1",
68
- "semantic-release": "^24.2.5",
69
- "typescript": "5.8.3",
70
- "typescript-eslint": "^8.34.1"
67
+ "semantic-release": "^24.2.7",
68
+ "typescript": "5.9.2",
69
+ "typescript-eslint": "^8.39.1"
71
70
  },
72
71
  "engines": {
73
72
  "node": ">=20.11.0"
@@ -154,5 +153,5 @@
154
153
  "test-cov": "TIMING=1 c8 --reporter text pnpm run test-no-cov",
155
154
  "test-index": "pnpm run test-no-cov test/rules/index.js"
156
155
  },
157
- "version": "54.0.0"
156
+ "version": "54.1.1"
158
157
  }
@@ -692,9 +692,10 @@ const getUtils = (
692
692
  (sc.getAncestors ?
693
693
  (
694
694
  sc.getAncestors(node)
695
- /* c8 ignore next 4 */
695
+ /* c8 ignore next 5 */
696
696
  ) :
697
697
  (
698
+ // @ts-expect-error ESLint 8
698
699
  context.getAncestors()
699
700
  )) :
700
701
  []);