{"version":3,"file":"noUndefinedTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_parseCommentStrategy","_jsdocUtils","_jsdoccomment","_parseImportsExports","e","__esModule","default","extraTypes","globalTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","state","utils","foundTypedefValues","scopeManager","globalScope","checkUsedTypedefs","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","allComments","getAllComments","comments","getJSDocCommentBlocks","globals","comment","test","value","flatMap","commentNode","trim","split","concat","languageOptions","typedefs","getDocumentNamepathDefiningTags","typedefDeclarations","tag","name","importTags","doc","tags","description","type","typePart","imprt","importsExports","parseImportsExports","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdc","parseCommentForSource","templateTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","variables","add","upper","getNamespaceTypes","prefix","moduleDeclaration","body","item","declaration","id","prop","key","propName","nestedName","imports","closedTypes","allDefinedTypes","identifiers","globalItem","property","init","callee","methodOrProp","programBody","ast","statement","expression","left","object","has","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","definedNamesAndNamepaths","isNameOrNamepathDefiningTag","tagsWithTypes","traverse","nde","parentNode","_parent","val","currNode","includes","right","structuredTypes","rootNamespace","isNamespaceValid","Array","isArray","typeParameters","some","typeParam","element","markVariableAsUsed","exit","loc","typedef","message","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n  parseCommentForSource,\n} from '../parseCommentStrategy.js';\nimport {\n  getDocumentNamepathDefiningTags,\n  getJSDocCommentBlocks,\n} from '../jsdocUtils.js';\nimport {\n  getJSDocComment,\n  parse as parseType,\n  traverse,\n  tryParse as tryParseType,\n} from '@ox-jsdoc/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 globalTypes = [\n  'globalThis', 'global', 'window', 'self',\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  state,\n  utils,\n}) => {\n  /** @type {string[]} */\n  const foundTypedefValues = [];\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     *   checkUsedTypedefs: boolean\n     *   definedTypes: string[],\n     *   disableReporting: boolean,\n     *   markVariablesAsUsed: boolean,\n     * }}\n     */ {\n      checkUsedTypedefs = false,\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 = getJSDocCommentBlocks(sourceCode, settings);\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 typedefs = getDocumentNamepathDefiningTags(sourceCode, settings);\n\n  const typedefDeclarations = typedefs\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 jsdc = parseCommentForSource(sourceCode, commentNode, settings, '');\n\n    return jsdc.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    // We err on the side of being too aggressive; checking only\n    //   present tags is not sufficient\n    comments.flatMap((doc) => {\n      return doc.tags.filter(({\n        tag,\n      }) => {\n        return tag === 'template';\n      });\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   * Recursively extracts types from a namespace declaration.\n   * @param {string} prefix - The namespace prefix (e.g., \"MyNamespace\" or \"Outer.Inner\").\n   * @param {import('@typescript-eslint/types').TSESTree.TSModuleDeclaration} moduleDeclaration - The module declaration node.\n   * @returns {string[]} Array of fully qualified type names.\n   */\n  const getNamespaceTypes = (prefix, moduleDeclaration) => {\n    /* c8 ignore next 3 -- Guard for ambient modules without body. */\n    if (!moduleDeclaration.body || moduleDeclaration.body.type !== 'TSModuleBlock') {\n      return [];\n    }\n\n    return moduleDeclaration.body.body.flatMap((item) => {\n      /** @type {import('@typescript-eslint/types').TSESTree.ProgramStatement | import('@typescript-eslint/types').TSESTree.NamedExportDeclarations | null} */\n      let declaration = item;\n\n      if (item.type === 'ExportNamedDeclaration' && item.declaration) {\n        declaration = item.declaration;\n      }\n\n      if (declaration.type === 'TSTypeAliasDeclaration' || declaration.type === 'ClassDeclaration') {\n        /* c8 ignore next 4 -- Guard for anonymous class declarations. */\n        if (!declaration.id) {\n          return [];\n        }\n\n        return [\n          `${prefix}.${declaration.id.name}`,\n        ];\n      }\n\n      if (declaration.type === 'TSInterfaceDeclaration') {\n        return [\n          `${prefix}.${declaration.id.name}`,\n          ...declaration.body.body.map((prop) => {\n            // Only `TSPropertySignature` and `TSMethodSignature` have 'key'.\n            if (prop.type !== 'TSPropertySignature' && prop.type !== 'TSMethodSignature') {\n              return '';\n            }\n\n            // Key can be computed or a literal, only handle Identifier.\n            if (prop.key.type !== 'Identifier') {\n              return '';\n            }\n\n            const propName = prop.key.name;\n            /* c8 ignore next -- `propName` is always truthy for Identifiers. */\n            return propName ? `${prefix}.${declaration.id.name}.${propName}` : '';\n          }).filter(Boolean),\n        ];\n      }\n\n      // Handle nested namespaces.\n      if (declaration.type === 'TSModuleDeclaration') {\n        /* c8 ignore next -- Nested string-literal modules aren't valid TS syntax. */\n        const nestedName = declaration.id?.type === 'Identifier' ? declaration.id.name : '';\n        /* c8 ignore next 3 -- Guard. */\n        if (!nestedName) {\n          return [];\n        }\n\n        return [\n          `${prefix}.${nestedName}`,\n          ...getNamespaceTypes(`${prefix}.${nestedName}`, declaration),\n        ];\n      }\n\n      // Fallback for unhandled declaration types (e.g., TSEnumDeclaration, FunctionDeclaration, etc.).\n      return [];\n    });\n  };\n\n  /**\n   * We treat imports differently as we can't introspect their children.\n   * @type {string[]}\n   */\n  const imports = [];\n\n  /** @type {Set<string>} */\n  const closedTypes = new Set();\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              closedTypes.add(name);\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 'TSModuleDeclaration':\n              closedTypes.add(name);\n              return [\n                name,\n                ...getNamespaceTypes(name, globalItem),\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              // Module scope names are also defined\n              return [\n                name,\n              ];\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((() => {\n      // Detect static property assignments like `MyClass.Prop = ...`\n      const programBody = /** @type {import('@typescript-eslint/types').TSESTree.Program} */ (\n        sourceCode.ast\n      ).body;\n\n      return programBody.flatMap((statement) => {\n        if (\n          statement.type === 'ExpressionStatement' &&\n          statement.expression.type === 'AssignmentExpression' &&\n          statement.expression.left.type === 'MemberExpression' &&\n          statement.expression.left.object.type === 'Identifier' &&\n          statement.expression.left.property.type === 'Identifier' &&\n          closedTypes.has(statement.expression.left.object.name)\n        ) {\n          return [\n            `${statement.expression.left.object.name}.${statement.expression.left.property.name}`,\n          ];\n        }\n\n        return [];\n      });\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('@ox-jsdoc/jsdoccomment').JsdocInlineTagNoType & {\n   *     line?: import('../iterateJsdoc.js').Integer\n   *   }\n   * }} TypeAndTagInfo\n   */\n\n  /**\n   * @param {string} propertyName\n   * @returns {(tag: (import('@ox-jsdoc/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 definedNamesAndNamepaths = new Set(utils.filterTags(({\n    tag,\n  }) => {\n    return utils.isNameOrNamepathDefiningTag(tag);\n  }).map(({\n    name,\n  }) => {\n    return name;\n  }));\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    // eslint-disable-next-line complexity -- Refactor\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          !globalTypes.includes(val) &&\n          currNode && 'right' in currNode &&\n          currNode.right?.type === 'JsdocTypeProperty'\n        ) {\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        const rootNamespace = val.split('.')[0];\n        const isNamespaceValid = (definedTypes.includes(rootNamespace) || allDefinedTypes.has(rootNamespace)) &&\n          !closedTypes.has(rootNamespace);\n\n        if (!allDefinedTypes.has(val) &&\n          !definedNamesAndNamepaths.has(val) &&\n          (!Array.isArray(structuredTypes) || !structuredTypes.includes(val)) && !isNamespaceValid\n        ) {\n          const parent =\n            /**\n             * @type {import('jsdoc-type-pratt-parser').RootResult & {\n             *   _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n             * }}\n             */ (nde)._parent;\n          if (parent?.type === 'JsdocTypeTypeParameter') {\n            return;\n          }\n\n          if (parent?.type === 'JsdocTypeFunction' &&\n            /** @type {import('jsdoc-type-pratt-parser').FunctionResult} */\n            (parent)?.typeParameters?.some((typeParam) => {\n              return value === typeParam.name.value;\n            })\n          ) {\n            return;\n          }\n\n          if (parent?.type === 'JsdocTypeInfer' && value === parent.element.value) {\n            allDefinedTypes.add(value);\n            return;\n          }\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        if (checkUsedTypedefs && typedefDeclarations.includes(val)) {\n          foundTypedefValues.push(val);\n        }\n      }\n    });\n  }\n\n  state.foundTypedefValues = foundTypedefValues;\n}, {\n  // We use this method rather than checking at end of handler above because\n  //   in that case, it is invoked too many times and would thus report errors\n  //   too many times.\n  exit ({\n    context,\n    settings,\n    state,\n    utils,\n  }) {\n    const {\n      checkUsedTypedefs = false,\n    } = context.options[0] || {};\n\n    if (!checkUsedTypedefs) {\n      return;\n    }\n\n    const allComments = context.sourceCode.getAllComments();\n    const comments = allComments\n      .filter((comment) => {\n        return (/^\\*(?!\\*)/v).test(comment.value);\n      })\n      .map((commentNode) => {\n        return {\n          doc: parseCommentForSource(context.sourceCode, commentNode, settings, ''),\n          loc: commentNode.loc,\n        };\n      });\n    const typedefs = comments\n      .flatMap(({\n        doc,\n        loc,\n      }) => {\n        const tags = doc.tags.filter(({\n          tag,\n        }) => {\n          return utils.isNameOrNamepathDefiningTag(tag);\n        });\n        if (!tags.length) {\n          return [];\n        }\n\n        return {\n          loc,\n          tags,\n        };\n      });\n\n    for (const typedef of typedefs) {\n      if (\n        !state.foundTypedefValues.includes(typedef.tags[0].name)\n      ) {\n        context.report({\n          loc: /** @type {import('@eslint/core').SourceLocation} */ (typedef.loc),\n          message: 'This typedef was not used within the file',\n        });\n      }\n    }\n  },\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Besides some expected built-in types, prohibits any types not specified as globals or within `@typedef`.',\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          checkUsedTypedefs: {\n            description: 'Whether to check typedefs for use within the file',\n            type: 'boolean',\n          },\n          definedTypes: {\n            description: `This array can be populated to indicate other types which\nare automatically considered as defined (in addition to globals, etc.).\nDefaults to an empty array.`,\n            items: {\n              type: 'string',\n            },\n            type: 'array',\n          },\n          disableReporting: {\n            description: `Whether to disable reporting of errors. Defaults to\n\\`false\\`. This may be set to \\`true\\` in order to take advantage of only\nmarking defined variables as used or checking used typedefs.`,\n            type: 'boolean',\n          },\n          markVariablesAsUsed: {\n            description: `Whether to mark variables as used for the purposes\nof the \\`no-unused-vars\\` rule when they are not found to be undefined.\nDefaults to \\`true\\`. May be set to \\`false\\` to enforce a practice of not\nimporting types unless used in code.`,\n            type: 'boolean',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}