{"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","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","comments","getAllComments","comment","test","value","commentNode","parseComment","typedefDeclarations","flatMap","doc","tags","tag","isNamepathDefiningTag","name","importTags","_Object$values$","_Object$values$2","description","type","typePart","imprt","importsExports","parseImportsExports","trim","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","_currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","variables","add","upper","allDefinedTypes","concat","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","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',\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(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n  context,\n  node,\n  report,\n  settings,\n  sourceCode,\n  utils,\n}) => {\n  const {\n    scopeManager,\n  } = sourceCode;\n\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 comments = sourceCode.getAllComments()\n    .filter((comment) => {\n      return (/^\\*\\s/u).test(comment.value);\n    })\n    .map((commentNode) => {\n      return parseComment(commentNode, '');\n    });\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  const allDefinedTypes = new Set(globalScope.variables.map(({\n    name,\n  }) => {\n    return name;\n  })\n\n    // If the file is a module, concat the variables from the module scope.\n    .concat(\n      cjsOrESMScope ?\n        globalScope.childScopes.flatMap(({\n          variables,\n        }) => {\n          return variables;\n        }).map(({\n          name,\n        }) => {\n          return name;\n        /* c8 ignore next */\n        }) : [],\n    )\n    .concat(extraTypes)\n    .concat(typedefDeclarations)\n    .concat(importTags)\n    .concat(definedTypes)\n    .concat(/** @type {string[]} */ (definedPreferredTypes))\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) => {\n      const {\n        type,\n        value,\n      } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n      if (type === 'JsdocTypeName') {\n        const structuredTypes = structuredTags[tag.tag]?.type;\n        if (!allDefinedTypes.has(value) &&\n          (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n        ) {\n          if (!disableReporting) {\n            report(`The type '${value}' is undefined.`, null, tag);\n          }\n        } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n          if (sourceCode.markVariableAsUsed) {\n            sourceCode.markVariableAsUsed(value);\n          /* c8 ignore next 3 */\n          } else {\n            context.markVariableAsUsed(value);\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":[]}