{
  "version": 3,
  "sources": ["../../../../src/packages/npm-resolver/index.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport {\n  FULL_META_DIR,\n  FULL_FILTERED_META_DIR,\n  ABBREVIATED_META_DIR,\n} from '../constants/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport type {\n  FetchFromRegistry,\n  GetAuthHeader,\n  RetryTimeoutOptions,\n} from '../fetching-types/index.ts';\nimport { resolveWorkspaceRange } from '../resolve-workspace-range/index.ts';\nimport type {\n  PreferredVersions,\n  ResolveResult,\n  WorkspacePackage,\n  WorkspacePackages,\n  WorkspacePackagesByVersion,\n  WorkspaceResolveResult,\n} from '../resolver-base/index.ts';\nimport { LRUCache } from 'lru-cache';\nimport normalize from 'normalize-path';\nimport pMemoize from 'p-memoize';\nimport clone from 'ramda/src/clone';\nimport semver from 'semver';\nimport ssri from 'ssri';\nimport {\n  type PackageInRegistry,\n  type PackageMeta,\n  type PackageMetaCache,\n  type PickPackageOptions,\n  pickPackage,\n} from './pickPackage.ts';\nimport { parsePref, type RegistryPackageSpec } from './parsePref.ts';\nimport { fromRegistry, RegistryResponseError } from './fetch.ts';\nimport { workspacePrefToNpm } from './workspacePrefToNpm.ts';\nimport type { WantedDependency } from '../resolve-dependencies/index.ts';\nimport type { PkgResolutionId } from '../types/misc.ts';\nimport type { LockFileDir } from '../types/project.ts';\n\nexport class NoMatchingVersionError extends PnpmError {\n  readonly packageMeta: PackageMeta;\n  constructor(opts: {\n    wantedDependency: WantedDependency;\n    packageMeta: PackageMeta;\n    registry: string;\n  }) {\n    const dep =\n      typeof opts.wantedDependency.alias === 'string'\n        ? `${opts.wantedDependency.alias}@${opts.wantedDependency.pref ?? ''}`\n        : (opts.wantedDependency.pref ?? '');\n\n    super(\n      'NO_MATCHING_VERSION',\n      `No matching version found for ${dep} while fetching it from ${opts.registry}`\n    );\n    this.packageMeta = opts.packageMeta;\n  }\n}\n\nexport {\n  parsePref,\n  workspacePrefToNpm,\n  type PackageMeta,\n  type PackageMetaCache,\n  type RegistryPackageSpec,\n  RegistryResponseError,\n};\n\nexport type ResolverFactoryOptions = {\n  cacheDir: string;\n  fullMetadata?: boolean | undefined;\n  filterMetadata?: boolean | undefined;\n  offline?: boolean | undefined;\n  preferOffline?: boolean | undefined;\n  retry?: RetryTimeoutOptions | undefined;\n  timeout?: number | undefined;\n};\n\nexport type NpmResolver = (\n  wantedDependency: WantedDependency,\n  opts: ResolveFromNpmOptions\n) => Promise<ResolveResult | WorkspaceResolveResult | null>;\n\nexport function createNpmResolver(\n  fetchFromRegistry: FetchFromRegistry,\n  getAuthHeader: GetAuthHeader,\n  opts: ResolverFactoryOptions\n): { resolveFromNpm: NpmResolver; clearCache: () => void } {\n  if (typeof opts.cacheDir !== 'string') {\n    throw new TypeError('`opts.cacheDir` is required and needs to be a string');\n  }\n\n  const fetchOpts = {\n    retry: opts.retry ?? {},\n    timeout: opts.timeout ?? 60_000,\n  };\n\n  const fetch = pMemoize(\n    fromRegistry.bind(null, fetchFromRegistry, fetchOpts),\n    {\n      cacheKey: (...args): string => {\n        return JSON.stringify(args);\n      },\n      // @ts-expect-error Object literal may only specify known properties, and 'maxAge' does not exist in type 'Options<(pkgName: string, registry: string, authHeaderValue?: string | undefined) => Promise<PackageMeta>, string>'.ts(2353)\n      maxAge: 1_000 * 20, // 20 seconds\n    }\n  );\n\n  const metaCache = new LRUCache<string, PackageMeta>({\n    max: 10_000,\n    ttl: 120 * 1_000, // 2 minutes\n  });\n\n  return {\n    resolveFromNpm: resolveNpm.bind(null, {\n      getAuthHeaderValueByURI: getAuthHeader,\n      pickPackage: pickPackage.bind(null, {\n        fetch,\n        filterMetadata: opts.filterMetadata,\n        metaCache,\n        metaDir:\n          opts.fullMetadata === true\n            ? opts.filterMetadata === true\n              ? FULL_FILTERED_META_DIR\n              : FULL_META_DIR\n            : ABBREVIATED_META_DIR,\n        offline: opts.offline,\n        preferOffline: opts.preferOffline,\n        cacheDir: opts.cacheDir,\n      }),\n    }),\n    clearCache: (): void => {\n      metaCache.clear();\n    },\n  };\n}\n\nexport type ResolveFromNpmOptions = {\n  alwaysTryWorkspacePackages?: boolean | undefined;\n  defaultTag?: string | undefined;\n  publishedBy?: Date | undefined;\n  pickLowestVersion?: boolean | undefined;\n  dryRun?: boolean | undefined;\n  lockfileDir: LockFileDir;\n  registry: string;\n  preferredVersions?: PreferredVersions | undefined;\n  preferWorkspacePackages?: boolean | undefined;\n  updateToLatest?: boolean | undefined;\n  injectWorkspacePackages?: boolean | undefined;\n} & (\n  | {\n      projectDir?: string | undefined;\n      workspacePackages?: undefined | undefined;\n    }\n  | {\n      projectDir: string;\n      workspacePackages: WorkspacePackages;\n    }\n);\n\nasync function resolveNpm(\n  ctx: {\n    pickPackage: (\n      spec: RegistryPackageSpec,\n      opts: PickPackageOptions\n    ) => ReturnType<typeof pickPackage>;\n    getAuthHeaderValueByURI: (registry: string) => string | undefined;\n  },\n  wantedDependency: WantedDependency & { injected?: boolean | undefined },\n  opts: ResolveFromNpmOptions\n): Promise<ResolveResult | WorkspaceResolveResult | null> {\n  const defaultTag = opts.defaultTag ?? 'latest';\n\n  if (wantedDependency.pref?.startsWith('workspace:') === true) {\n    if (wantedDependency.pref.startsWith('workspace:.')) {\n      return null;\n    }\n\n    const resolvedFromWorkspace = tryResolveFromWorkspace(wantedDependency, {\n      defaultTag,\n      lockfileDir: opts.lockfileDir,\n      projectDir: opts.projectDir,\n      registry: opts.registry,\n      workspacePackages: opts.workspacePackages,\n      injectWorkspacePackages: opts.injectWorkspacePackages,\n    });\n\n    if (resolvedFromWorkspace != null) {\n      return resolvedFromWorkspace;\n    }\n  }\n\n  const workspacePackages =\n    opts.alwaysTryWorkspacePackages === true\n      ? opts.workspacePackages\n      : undefined;\n\n  if (typeof wantedDependency.alias !== 'string') {\n    return null;\n  }\n\n  const spec =\n    typeof wantedDependency.pref === 'string' && wantedDependency.pref !== ''\n      ? parsePref(\n          wantedDependency.pref,\n          wantedDependency.alias,\n          defaultTag,\n          opts.registry\n        )\n      : defaultTagForAlias(wantedDependency.alias, defaultTag);\n\n  if (spec == null) {\n    return null;\n  }\n\n  const authHeaderValue = ctx.getAuthHeaderValueByURI(opts.registry);\n\n  let pickResult:\n    | {\n        meta: PackageMeta;\n        pickedPackage?: PackageInRegistry | undefined;\n      }\n    | undefined;\n  try {\n    pickResult = await ctx.pickPackage(spec, {\n      pickLowestVersion: opts.pickLowestVersion,\n      publishedBy: opts.publishedBy,\n      authHeaderValue,\n      dryRun: opts.dryRun === true,\n      preferredVersionSelectors: opts.preferredVersions?.[spec.name],\n      registry: opts.registry,\n      updateToLatest: opts.updateToLatest,\n    });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } catch (err: any) {\n    if (\n      typeof workspacePackages !== 'undefined' &&\n      typeof opts.projectDir === 'string'\n    ) {\n      try {\n        return tryResolveFromWorkspacePackages(workspacePackages, spec, {\n          wantedDependency,\n          projectDir: opts.projectDir,\n          lockfileDir: opts.lockfileDir,\n          hardLinkLocalPackages:\n            opts.injectWorkspacePackages === true || wantedDependency.injected,\n        });\n      } catch {\n        // ignore\n      }\n    }\n\n    throw err;\n  }\n\n  const pickedPackage = pickResult.pickedPackage;\n\n  const meta = pickResult.meta;\n\n  if (pickedPackage == null) {\n    if (\n      typeof workspacePackages !== 'undefined' &&\n      typeof opts.projectDir === 'string'\n    ) {\n      try {\n        return tryResolveFromWorkspacePackages(workspacePackages, spec, {\n          wantedDependency,\n          projectDir: opts.projectDir,\n          lockfileDir: opts.lockfileDir,\n          hardLinkLocalPackages:\n            opts.injectWorkspacePackages === true || wantedDependency.injected,\n        });\n      } catch {\n        // ignore\n      }\n    }\n    throw new NoMatchingVersionError({\n      wantedDependency,\n      packageMeta: meta,\n      registry: opts.registry,\n    });\n  }\n\n  const workspacePkgsMatchingName = workspacePackages?.get(pickedPackage.name);\n  if (workspacePkgsMatchingName && typeof opts.projectDir === 'string') {\n    const matchedPkg = workspacePkgsMatchingName.get(pickedPackage.version);\n\n    if (matchedPkg) {\n      return {\n        ...resolveFromLocalPackage(matchedPkg, spec.normalizedPref, {\n          projectDir: opts.projectDir,\n          lockfileDir: opts.lockfileDir,\n          hardLinkLocalPackages:\n            opts.injectWorkspacePackages === true || wantedDependency.injected,\n        }),\n        latest: meta['dist-tags'].latest,\n      };\n    }\n\n    const localVersion = pickMatchingLocalVersionOrNull(\n      workspacePkgsMatchingName,\n      spec\n    );\n\n    if (\n      localVersion !== null &&\n      (semver.gt(localVersion, pickedPackage.version) ||\n        opts.preferWorkspacePackages === true)\n    ) {\n      const wp = workspacePkgsMatchingName.get(localVersion);\n\n      if (wp === undefined) {\n        throw new Error(`Workspace package not found for ${localVersion}`);\n      }\n\n      return {\n        ...resolveFromLocalPackage(wp, spec.normalizedPref, {\n          projectDir: opts.projectDir,\n          lockfileDir: opts.lockfileDir,\n          hardLinkLocalPackages:\n            opts.injectWorkspacePackages === true || wantedDependency.injected,\n        }),\n        latest: meta['dist-tags'].latest,\n      };\n    }\n  }\n\n  const id =\n    `${pickedPackage.name}@${pickedPackage.version}` as PkgResolutionId;\n\n  const resolution = {\n    integrity: getIntegrity(pickedPackage.dist),\n    tarball: pickedPackage.dist.tarball,\n  };\n  return {\n    id,\n    latest: meta['dist-tags'].latest,\n    manifest: pickedPackage,\n    normalizedPref: spec.normalizedPref,\n    resolution,\n    resolvedVia: 'npm-registry',\n    publishedAt: meta.time?.[pickedPackage.version],\n  };\n}\n\nfunction tryResolveFromWorkspace(\n  wantedDependency: WantedDependency & { injected?: boolean | undefined },\n  opts: {\n    defaultTag: string;\n    lockfileDir: LockFileDir;\n    projectDir?: string | undefined;\n    registry: string;\n    workspacePackages?: WorkspacePackages | undefined;\n    injectWorkspacePackages?: boolean | undefined;\n  }\n): WorkspaceResolveResult | null {\n  if (wantedDependency.pref?.startsWith('workspace:') !== true) {\n    return null;\n  }\n\n  const pref = workspacePrefToNpm(wantedDependency.pref);\n\n  const spec = parsePref(\n    pref,\n    wantedDependency.alias,\n    opts.defaultTag,\n    opts.registry\n  );\n\n  if (spec == null) {\n    throw new Error(`Invalid workspace: spec (${wantedDependency.pref})`);\n  }\n\n  if (opts.workspacePackages == null) {\n    throw new Error(\n      'Cannot resolve package from workspace because opts.workspacePackages is not defined'\n    );\n  }\n  if (typeof opts.projectDir === 'undefined') {\n    throw new Error(\n      'Cannot resolve package from workspace because opts.projectDir is not defined'\n    );\n  }\n\n  return tryResolveFromWorkspacePackages(opts.workspacePackages, spec, {\n    wantedDependency,\n    projectDir: opts.projectDir,\n    hardLinkLocalPackages:\n      opts.injectWorkspacePackages === true || wantedDependency.injected,\n    lockfileDir: opts.lockfileDir,\n  });\n}\n\nfunction tryResolveFromWorkspacePackages(\n  workspacePackages: WorkspacePackages,\n  spec: RegistryPackageSpec,\n  opts: {\n    wantedDependency: WantedDependency;\n    hardLinkLocalPackages?: boolean | undefined;\n    projectDir: string;\n    lockfileDir: LockFileDir;\n  }\n): WorkspaceResolveResult {\n  const workspacePkgsMatchingName = workspacePackages.get(spec.name);\n\n  if (typeof workspacePkgsMatchingName === 'undefined') {\n    throw new PnpmError(\n      'WORKSPACE_PKG_NOT_FOUND',\n      `In ${path.relative(process.cwd(), opts.projectDir)}: \"${spec.name}@${opts.wantedDependency.pref ?? ''}\" is in the dependencies but no package named \"${spec.name}\" is present in the workspace`,\n      {\n        hint: `Packages found in the workspace: ${Object.keys(workspacePackages).join(', ')}`,\n      }\n    );\n  }\n\n  const localVersion = pickMatchingLocalVersionOrNull(\n    workspacePkgsMatchingName,\n    spec\n  );\n\n  if (localVersion === null) {\n    throw new PnpmError(\n      'NO_MATCHING_VERSION_INSIDE_WORKSPACE',\n      `In ${path.relative(process.cwd(), opts.projectDir)}: No matching version found for ${opts.wantedDependency.alias ?? ''}@${opts.wantedDependency.pref ?? ''} inside the workspace`\n    );\n  }\n\n  const wp = workspacePkgsMatchingName.get(localVersion);\n\n  if (wp === undefined) {\n    throw new Error(`Workspace package not found for ${localVersion}`);\n  }\n\n  return resolveFromLocalPackage(wp, spec.normalizedPref, opts);\n}\n\nfunction pickMatchingLocalVersionOrNull(\n  versions: WorkspacePackagesByVersion,\n  spec: RegistryPackageSpec\n): string | null {\n  switch (spec.type) {\n    case 'tag':\n      return semver.maxSatisfying(Array.from(versions.keys()), '*', {\n        includePrerelease: true,\n      });\n    case 'version':\n      return versions.has(spec.fetchSpec) ? spec.fetchSpec : null;\n    case 'range':\n      return resolveWorkspaceRange(spec.fetchSpec, Array.from(versions.keys()));\n    default:\n      return null;\n  }\n}\n\nfunction resolveFromLocalPackage(\n  localPackage: WorkspacePackage,\n  normalizedPref: string | undefined,\n  opts: {\n    hardLinkLocalPackages?: boolean | undefined;\n    projectDir: string;\n    lockfileDir: LockFileDir;\n  }\n): WorkspaceResolveResult {\n  let id: PkgResolutionId | undefined;\n\n  let directory: string | undefined;\n\n  const localPackageDir = resolveLocalPackageDir(localPackage);\n\n  if (opts.hardLinkLocalPackages === true) {\n    directory = normalize(path.relative(opts.lockfileDir, localPackageDir));\n\n    id = `file:${directory}` as PkgResolutionId;\n  } else {\n    directory = localPackageDir;\n    id =\n      `link:${normalize(path.relative(opts.projectDir, localPackageDir))}` as PkgResolutionId;\n  }\n\n  return {\n    id,\n    manifest: clone.default(localPackage.manifest),\n    normalizedPref,\n    resolution: {\n      directory,\n      type: 'directory',\n    },\n    resolvedVia: 'workspace',\n  };\n}\n\nfunction resolveLocalPackageDir(localPackage: WorkspacePackage): string {\n  if (\n    localPackage.manifest.publishConfig?.directory == null ||\n    localPackage.manifest.publishConfig.linkDirectory === false\n  ) {\n    return localPackage.rootDir;\n  }\n\n  return path.join(\n    localPackage.rootDir,\n    localPackage.manifest.publishConfig.directory\n  );\n}\n\nfunction defaultTagForAlias(\n  alias: string,\n  defaultTag: string\n): RegistryPackageSpec {\n  return {\n    fetchSpec: defaultTag,\n    name: alias,\n    type: 'tag',\n  };\n}\n\nfunction getIntegrity(dist: {\n  integrity?: string | undefined;\n  shasum: string;\n  tarball: string;\n}): string | undefined {\n  if (typeof dist.integrity === 'string') {\n    return dist.integrity;\n  }\n\n  if (!dist.shasum) {\n    return undefined;\n  }\n\n  const integrity = ssri.fromHex(dist.shasum, 'sha1');\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/strict-boolean-expressions\n  if (!integrity) {\n    throw new PnpmError(\n      'INVALID_TARBALL_INTEGRITY',\n      `Tarball \"${dist.tarball}\" has invalid shasum specified in its metadata: ${dist.shasum}`\n    );\n  }\n\n  return integrity.toString();\n}\n"],
  "mappings": "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",
  "names": []
}
