{
  "version": 3,
  "sources": ["../../../../src/packages/package-requester/packageRequester.ts"],
  "sourcesContent": ["import { createReadStream, promises as fs } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport {\n  getFilePathByModeInCafs as _getFilePathByModeInCafs,\n  getIndexFilePathInCafs as _getIndexFilePathInCafs,\n  type PackageFilesIndex,\n} from '../store.cafs/index.ts';\nimport {\n  fetchingProgressLogger,\n  progressLogger,\n} from '../core-loggers/index.ts';\nimport { pickFetcher } from '../pick-fetcher/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport type { FetchOptions, GitFetcherResult } from '../fetcher-base/index.ts';\nimport type {\n  Cafs,\n  PackageFileInfo,\n  PackageFiles,\n  PackageFilesResponse,\n} from '../cafs-types/index.ts';\nimport gfs from '../graceful-fs/index.ts';\nimport { globalWarn, logger } from '../logger/index.ts';\nimport { packageIsInstallable } from '../package-is-installable/index.ts';\nimport { readPackageJson } from '../read-package-json/index.ts';\nimport type {\n  Resolution,\n  ResolveFunction,\n  ResolveResult,\n  TarballResolution,\n  WorkspaceResolveResult,\n} from '../resolver-base/index.ts';\nimport type {\n  BundledManifest,\n  FetchPackageToStoreFunction,\n  FetchPackageToStoreOptions,\n  GetFilesIndexFilePath,\n  PackageResponse,\n  PkgNameVersion,\n  PkgRequestFetchResult,\n  RequestPackageFunction,\n  RequestPackageOptions,\n} from '../store-controller-types/index.ts';\nimport type { DependencyManifest } from '../types/index.ts';\nimport { depPathToFilename } from '../dependency-path/index.ts';\nimport { readPkgFromCafs as _readPkgFromCafs } from '../worker/index.ts';\nimport PQueue from 'p-queue';\nimport pDefer, { type DeferredPromise } from 'p-defer';\nimport pShare from 'promise-share';\nimport pick from 'ramda/src/pick';\nimport semver from 'semver';\nimport ssri from 'ssri';\nimport { equalOrSemverEqual } from './equalOrSemverEqual.ts';\nimport type { TarballFetchers } from '../tarball-fetcher/index.ts';\nimport type { WantedDependency } from '../resolve-dependencies/index.ts';\n\nconst TARBALL_INTEGRITY_FILENAME = 'tarball-integrity';\nconst packageRequestLogger = logger('package-requester');\n\nconst pickBundledManifest = pick.default([\n  'bin',\n  'bundledDependencies',\n  'bundleDependencies',\n  'dependencies',\n  'directories',\n  'engines',\n  'name',\n  'optionalDependencies',\n  'os',\n  'peerDependencies',\n  'peerDependenciesMeta',\n  'scripts',\n  'version',\n]);\n\nfunction normalizeBundledManifest(\n  manifest: DependencyManifest\n): BundledManifest {\n  return {\n    ...pickBundledManifest(manifest),\n    version:\n      semver.clean(manifest.version || '0.0.0', { loose: true }) ??\n      manifest.version,\n  };\n}\n\nexport function createPackageRequester(opts: {\n  engineStrict?: boolean | undefined;\n  force?: boolean | undefined;\n  nodeVersion?: string | undefined;\n  pnpmVersion?: string | undefined;\n  resolve: ResolveFunction;\n  fetchers: TarballFetchers;\n  cafs: Cafs;\n  ignoreFile?: ((filename: string) => boolean) | undefined;\n  networkConcurrency?: number | undefined;\n  storeDir: string;\n  verifyStoreIntegrity?: boolean | undefined;\n  virtualStoreDirMaxLength: number;\n  strictStorePkgContentCheck?: boolean | undefined;\n}): ((\n  wantedDependency: WantedDependency & {\n    optional?: boolean | undefined;\n  },\n  options: RequestPackageOptions\n) => Promise<\n  | PackageResponse\n  | {\n      body: PackageResponse['body'];\n    }\n>) & {\n  fetchPackageToStore: (\n    opts: FetchPackageToStoreOptions\n  ) => Promise<PackageResponse>;\n  getFilesIndexFilePath: (\n    opts: Pick<FetchPackageToStoreOptions, 'pkg' | 'ignoreScripts'>\n  ) => {\n    filesIndexFile: string;\n    target: string;\n  };\n  requestPackage: (\n    wantedDependency: WantedDependency & {\n      optional?: boolean | undefined;\n    },\n    options: RequestPackageOptions\n  ) => Promise<\n    | PackageResponse\n    | {\n        body: PackageResponse['body'];\n      }\n  >;\n} {\n  // A lower bound of 16 is enforced to prevent performance degradation,\n  // especially in CI environments. Tests with a threshold lower than 16\n  // have shown consistent underperformance.\n  const networkConcurrency =\n    opts.networkConcurrency ??\n    Math.max(os.availableParallelism() || os.cpus().length, 16);\n\n  const requestsQueue = new PQueue({\n    concurrency: networkConcurrency,\n  });\n\n  const getIndexFilePathInCafs = _getIndexFilePathInCafs.bind(\n    null,\n    opts.storeDir\n  );\n\n  const fetch = fetcher.bind<\n    null,\n    [fetcherByHostingType: TarballFetchers, cafs: Cafs],\n    [packageId: string, resolution: Resolution, opts: FetchOptions],\n    Promise<\n      | {\n          filesIndex: PackageFiles | Record<string, string>;\n          manifest: DependencyManifest | undefined;\n          requiresBuild: boolean;\n          local?: boolean | undefined;\n          packageImportMethod?: never | undefined;\n        }\n      | GitFetcherResult\n    >\n  >(null, opts.fetchers, opts.cafs);\n\n  const fetchPackageToStore = _fetchPackageToStore.bind(null, {\n    readPkgFromCafs: _readPkgFromCafs.bind<\n      null,\n      [string, boolean],\n      [filesIndexFile: string, readManifest?: boolean | undefined],\n      Promise<{\n        verified: boolean;\n        pkgFilesIndex: PackageFilesIndex;\n        manifest?: DependencyManifest | undefined;\n        requiresBuild: boolean;\n      }>\n    >(null, opts.storeDir, opts.verifyStoreIntegrity ?? false),\n    fetch,\n    fetchingLocker: new Map<string, FetchLock>(),\n    getFilePathByModeInCafs: _getFilePathByModeInCafs.bind(null, opts.storeDir),\n    getIndexFilePathInCafs,\n    requestsQueue: Object.assign(requestsQueue, {\n      counter: 0,\n      concurrency: networkConcurrency,\n    }),\n    storeDir: opts.storeDir,\n    virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: opts.strictStorePkgContentCheck,\n  });\n\n  const requestPackage = resolveAndFetch.bind(null, {\n    engineStrict: opts.engineStrict,\n    nodeVersion: opts.nodeVersion,\n    pnpmVersion: opts.pnpmVersion,\n    force: opts.force,\n    fetchPackageToStore,\n    requestsQueue,\n    resolve: opts.resolve,\n    storeDir: opts.storeDir,\n  });\n\n  return Object.assign<\n    (\n      wantedDependency: WantedDependency & {\n        optional?: boolean | undefined;\n      },\n      options: RequestPackageOptions\n    ) => Promise<\n      | PackageResponse\n      | {\n          body: PackageResponse['body'];\n        }\n    >,\n    {\n      fetchPackageToStore: (\n        opts: FetchPackageToStoreOptions\n      ) => Promise<PackageResponse>;\n      getFilesIndexFilePath: (\n        opts: Pick<FetchPackageToStoreOptions, 'pkg' | 'ignoreScripts'>\n      ) => {\n        filesIndexFile: string;\n        target: string;\n      };\n      requestPackage: (\n        wantedDependency: WantedDependency & {\n          optional?: boolean | undefined;\n        },\n        options: RequestPackageOptions\n      ) => Promise<\n        | PackageResponse\n        | {\n            body: PackageResponse['body'];\n          }\n      >;\n    }\n  >(requestPackage, {\n    fetchPackageToStore,\n    getFilesIndexFilePath: getFilesIndexFilePath.bind(null, {\n      getIndexFilePathInCafs,\n      storeDir: opts.storeDir,\n      virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    }),\n    requestPackage,\n  });\n}\n\nexport function createServerPackageRequester(opts: {\n  engineStrict?: boolean | undefined;\n  force?: boolean | undefined;\n  nodeVersion?: string | undefined;\n  pnpmVersion?: string | undefined;\n  resolve: ResolveFunction;\n  fetchers: TarballFetchers;\n  cafs: Cafs;\n  ignoreFile?: ((filename: string) => boolean) | undefined;\n  networkConcurrency?: number | undefined;\n  storeDir: string;\n  verifyStoreIntegrity?: boolean | undefined;\n  virtualStoreDirMaxLength: number;\n  strictStorePkgContentCheck?: boolean | undefined;\n}): RequestPackageFunction<PackageResponse> & {\n  fetchPackageToStore: FetchPackageToStoreFunction<PackageResponse>;\n  getFilesIndexFilePath: GetFilesIndexFilePath;\n  requestPackage: RequestPackageFunction<PackageResponse>;\n} {\n  // A lower bound of 16 is enforced to prevent performance degradation,\n  // especially in CI environments. Tests with a threshold lower than 16\n  // have shown consistent underperformance.\n  const networkConcurrency =\n    opts.networkConcurrency ??\n    Math.max(os.availableParallelism() || os.cpus().length, 16);\n\n  const requestsQueue = new PQueue({\n    concurrency: networkConcurrency,\n  });\n\n  const getIndexFilePathInCafs = _getIndexFilePathInCafs.bind(\n    null,\n    opts.storeDir\n  );\n\n  const fetch = fetcher.bind<\n    null,\n    [fetcherByHostingType: TarballFetchers, cafs: Cafs],\n    [packageId: string, resolution: Resolution, opts: FetchOptions],\n    Promise<\n      | {\n          filesIndex: PackageFiles | Record<string, string>;\n          manifest: DependencyManifest | undefined;\n          requiresBuild: boolean;\n          local?: boolean | undefined;\n          packageImportMethod?: never | undefined;\n        }\n      | GitFetcherResult\n    >\n  >(null, opts.fetchers, opts.cafs);\n\n  const fetchPackageToStore = _fetchPackageToStore.bind(null, {\n    readPkgFromCafs: _readPkgFromCafs.bind<\n      null,\n      [string, boolean],\n      [filesIndexFile: string, readManifest?: boolean | undefined],\n      Promise<{\n        verified: boolean;\n        pkgFilesIndex: PackageFilesIndex;\n        manifest?: DependencyManifest | undefined;\n        requiresBuild: boolean;\n      }>\n    >(null, opts.storeDir, opts.verifyStoreIntegrity ?? false),\n    fetch,\n    fetchingLocker: new Map<string, FetchLock>(),\n    getFilePathByModeInCafs: _getFilePathByModeInCafs.bind(null, opts.storeDir),\n    getIndexFilePathInCafs,\n    requestsQueue: Object.assign(requestsQueue, {\n      counter: 0,\n      concurrency: networkConcurrency,\n    }),\n    storeDir: opts.storeDir,\n    virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: opts.strictStorePkgContentCheck,\n  });\n\n  const requestPackage = resolveAndFetch.bind(null, {\n    engineStrict: opts.engineStrict,\n    nodeVersion: opts.nodeVersion,\n    pnpmVersion: opts.pnpmVersion,\n    force: opts.force,\n    fetchPackageToStore,\n    requestsQueue,\n    resolve: opts.resolve,\n    storeDir: opts.storeDir,\n  });\n\n  const obj = Object.assign(requestPackage, {\n    fetchPackageToStore,\n    getFilesIndexFilePath: getFilesIndexFilePath.bind(null, {\n      getIndexFilePathInCafs,\n      storeDir: opts.storeDir,\n      virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    }),\n    requestPackage,\n  });\n\n  return obj;\n}\n\nexport function createNewStorePackageRequester(opts: {\n  engineStrict?: boolean | undefined;\n  force?: boolean | undefined;\n  nodeVersion?: string | undefined;\n  pnpmVersion?: string | undefined;\n  resolve: ResolveFunction;\n  fetchers: TarballFetchers;\n  cafs: Cafs;\n  ignoreFile?: ((filename: string) => boolean) | undefined;\n  networkConcurrency?: number | undefined;\n  storeDir: string;\n  verifyStoreIntegrity?: boolean | undefined;\n  virtualStoreDirMaxLength: number;\n  strictStorePkgContentCheck?: boolean | undefined;\n}): RequestPackageFunction<PackageResponse> & {\n  fetchPackageToStore: FetchPackageToStoreFunction<PackageResponse>;\n  getFilesIndexFilePath: GetFilesIndexFilePath;\n  requestPackage: RequestPackageFunction<PackageResponse>;\n} {\n  // A lower bound of 16 is enforced to prevent performance degradation,\n  // especially in CI environments. Tests with a threshold lower than 16\n  // have shown consistent underperformance.\n  const networkConcurrency =\n    opts.networkConcurrency ??\n    Math.max(os.availableParallelism() || os.cpus().length, 16);\n\n  const requestsQueue = new PQueue({\n    concurrency: networkConcurrency,\n  });\n\n  const getIndexFilePathInCafs = _getIndexFilePathInCafs.bind(\n    null,\n    opts.storeDir\n  );\n\n  const fetch = fetcher.bind<\n    null,\n    [fetcherByHostingType: TarballFetchers, cafs: Cafs],\n    [packageId: string, resolution: Resolution, opts: FetchOptions],\n    Promise<\n      | {\n          filesIndex: PackageFiles | Record<string, string>;\n          manifest: DependencyManifest | undefined;\n          requiresBuild: boolean;\n          local?: boolean | undefined;\n          packageImportMethod?: never | undefined;\n        }\n      | GitFetcherResult\n    >\n  >(null, opts.fetchers, opts.cafs);\n\n  const fetchPackageToStore = _fetchPackageToStore.bind(null, {\n    readPkgFromCafs: _readPkgFromCafs.bind<\n      null,\n      [string, boolean],\n      [filesIndexFile: string, readManifest?: boolean | undefined],\n      Promise<{\n        verified: boolean;\n        pkgFilesIndex: PackageFilesIndex;\n        manifest?: DependencyManifest | undefined;\n        requiresBuild: boolean;\n      }>\n    >(null, opts.storeDir, opts.verifyStoreIntegrity ?? false),\n    fetch,\n    fetchingLocker: new Map<string, FetchLock>(),\n    getFilePathByModeInCafs: _getFilePathByModeInCafs.bind(null, opts.storeDir),\n    getIndexFilePathInCafs,\n    requestsQueue: Object.assign(requestsQueue, {\n      counter: 0,\n      concurrency: networkConcurrency,\n    }),\n    storeDir: opts.storeDir,\n    virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: opts.strictStorePkgContentCheck,\n  });\n\n  const requestPackage = resolveAndFetch.bind(null, {\n    engineStrict: opts.engineStrict,\n    nodeVersion: opts.nodeVersion,\n    pnpmVersion: opts.pnpmVersion,\n    force: opts.force,\n    fetchPackageToStore,\n    requestsQueue,\n    resolve: opts.resolve,\n    storeDir: opts.storeDir,\n  });\n\n  return Object.assign(requestPackage, {\n    fetchPackageToStore,\n    getFilesIndexFilePath: getFilesIndexFilePath.bind(null, {\n      getIndexFilePathInCafs,\n      storeDir: opts.storeDir,\n      virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,\n    }),\n    requestPackage,\n  });\n}\n\nasync function resolveAndFetch(\n  ctx: {\n    engineStrict?: boolean | undefined;\n    force?: boolean | undefined;\n    nodeVersion?: string | undefined;\n    pnpmVersion?: string | undefined;\n    requestsQueue: {\n      add: <T>(fn: () => Promise<T>, opts: { priority: number }) => Promise<T>;\n    };\n    resolve: ResolveFunction;\n    fetchPackageToStore: FetchPackageToStoreFunction<PackageResponse>;\n    storeDir: string;\n  },\n  wantedDependency: WantedDependency & { optional?: boolean | undefined },\n  options: RequestPackageOptions\n): Promise<PackageResponse | { body: PackageResponse['body'] }> {\n  let latest: string | undefined;\n\n  let manifest: DependencyManifest | undefined;\n\n  let normalizedPref: string | undefined;\n\n  let resolution = options.currentPkg?.resolution;\n\n  let pkgId = options.currentPkg?.id;\n\n  const skipResolution =\n    typeof resolution !== 'undefined' && typeof options.update === 'undefined';\n\n  let forceFetch = false;\n  let updated = false;\n  let resolvedVia: string | undefined;\n  let publishedAt: string | undefined;\n\n  // When fetching is skipped, resolution cannot be skipped.\n  // We need the package's manifest when doing `lockfile-only` installs.\n  // When we don't fetch, the only way to get the package's manifest is via resolving it.\n  //\n  // The resolution step is never skipped for local dependencies.\n  if (\n    !skipResolution ||\n    options.skipFetch === true ||\n    Boolean(pkgId?.startsWith('file:')) ||\n    wantedDependency.optional === true\n  ) {\n    const resolveResult = await ctx.requestsQueue.add<\n      ResolveResult | WorkspaceResolveResult\n    >(\n      async (): Promise<ResolveResult | WorkspaceResolveResult> => {\n        return ctx.resolve(wantedDependency, {\n          alwaysTryWorkspacePackages: options.alwaysTryWorkspacePackages,\n          defaultTag: options.defaultTag,\n          publishedBy: options.publishedBy,\n          pickLowestVersion: options.pickLowestVersion,\n          lockfileDir: options.lockfileDir,\n          preferredVersions: options.preferredVersions,\n          preferWorkspacePackages: options.preferWorkspacePackages,\n          projectDir: options.projectDir,\n          registry: options.registry,\n          workspacePackages: options.workspacePackages,\n          updateToLatest: options.update === 'latest',\n          injectWorkspacePackages: options.injectWorkspacePackages,\n        });\n      },\n      { priority: options.downloadPriority }\n    );\n\n    manifest = resolveResult.manifest;\n    latest = resolveResult.latest;\n    resolvedVia = resolveResult.resolvedVia;\n    publishedAt = resolveResult.publishedAt;\n\n    // If the integrity of a local tarball dependency has changed,\n    // the local tarball should be unpacked, so a fetch to the store should be forced\n    forceFetch = Boolean(\n      typeof options.currentPkg?.resolution !== 'undefined' &&\n        pkgId?.startsWith('file:') === true &&\n        (options.currentPkg.resolution as TarballResolution).integrity !==\n          (resolveResult.resolution as TarballResolution).integrity\n    );\n\n    updated = pkgId !== resolveResult.id || !resolution || forceFetch;\n    resolution = resolveResult.resolution;\n    pkgId = resolveResult.id;\n    normalizedPref = resolveResult.normalizedPref;\n  }\n\n  const id = pkgId;\n\n  if (typeof id === 'undefined') {\n    throw new Error('Package ID is undefined');\n  }\n\n  if (\n    typeof resolution !== 'undefined' &&\n    'type' in resolution &&\n    resolution.type === 'directory' &&\n    id.startsWith('file:') !== true\n  ) {\n    if (typeof manifest === 'undefined') {\n      throw new Error(\n        `Couldn't read package.json of local dependency ${typeof wantedDependency.alias === 'string' ? `${wantedDependency.alias}@` : ''}${wantedDependency.pref}`\n      );\n    }\n\n    return {\n      body: {\n        id,\n        isLocal: true,\n        manifest,\n        normalizedPref,\n        resolution,\n        resolvedVia,\n        updated,\n      },\n    };\n  }\n\n  const isInstallable =\n    ctx.force === true ||\n    (manifest == null\n      ? undefined\n      : await packageIsInstallable(id, manifest, {\n          engineStrict: ctx.engineStrict,\n          lockfileDir: options.lockfileDir,\n          nodeVersion: ctx.nodeVersion,\n          optional: wantedDependency.optional === true,\n          supportedArchitectures: options.supportedArchitectures,\n        }));\n\n  if (typeof resolution === 'undefined') {\n    throw new Error('Resolution is undefined');\n  }\n\n  // We can skip fetching the package only if the manifest\n  // is present after resolution\n  if (\n    (options.skipFetch === true || isInstallable === false) &&\n    manifest != null\n  ) {\n    return {\n      body: {\n        id,\n        isLocal: false as const,\n        isInstallable,\n        latest,\n        manifest,\n        normalizedPref,\n        resolution,\n        resolvedVia,\n        updated,\n        publishedAt,\n      },\n    };\n  }\n\n  const pkg: PkgNameVersion =\n    manifest != null ? pick.default(['name', 'version'], manifest) : {};\n\n  const fetchResult = await ctx.fetchPackageToStore({\n    fetchRawManifest: true,\n    force: forceFetch,\n    ignoreScripts: options.ignoreScripts,\n    lockfileDir: options.lockfileDir,\n    pkg: {\n      ...pkg,\n      id,\n      resolution,\n    },\n    expectedPkg:\n      options.expectedPkg?.name != null\n        ? updated\n          ? { name: options.expectedPkg.name, version: pkg.version }\n          : options.expectedPkg\n        : pkg,\n    onFetchError: options.onFetchError,\n  });\n\n  if (\n    typeof manifest === 'undefined' &&\n    typeof fetchResult.fetching === 'function'\n  ) {\n    manifest = (await fetchResult.fetching()).bundledManifest;\n  }\n\n  return {\n    body: {\n      id,\n      isLocal: false as const,\n      isInstallable: isInstallable ?? undefined,\n      latest,\n      manifest,\n      normalizedPref,\n      resolution,\n      resolvedVia,\n      updated,\n      publishedAt,\n    },\n    fetching: fetchResult.fetching,\n    filesIndexFile: fetchResult.filesIndexFile,\n  };\n}\n\ntype FetchLock = {\n  fetching?: Promise<PkgRequestFetchResult<PackageResponse>> | undefined;\n  filesIndexFile: string;\n  fetchRawManifest?: boolean | undefined;\n};\n\nfunction getFilesIndexFilePath(\n  ctx: {\n    getIndexFilePathInCafs: (integrity: string, pkgId: string) => string;\n    storeDir: string;\n    virtualStoreDirMaxLength: number;\n  },\n  opts: Pick<FetchPackageToStoreOptions, 'pkg' | 'ignoreScripts'>\n): { filesIndexFile: string; target: string } {\n  const targetRelative = depPathToFilename(\n    opts.pkg.id,\n    ctx.virtualStoreDirMaxLength\n  );\n\n  const target = path.join(ctx.storeDir, targetRelative);\n\n  const integrity = (opts.pkg.resolution as TarballResolution).integrity;\n\n  const filesIndexFile =\n    typeof integrity === 'undefined'\n      ? path.join(\n          target,\n          opts.ignoreScripts === true\n            ? 'integrity-not-built.json'\n            : 'integrity.json'\n        )\n      : ctx.getIndexFilePathInCafs(integrity, opts.pkg.id);\n\n  return { filesIndexFile, target };\n}\n\n// async function fetchToStore(\n//   ctx: {\n//     readPkgFromCafs: (\n//       filesIndexFile: string,\n//       readManifest?: boolean | undefined\n//     ) => Promise<{\n//       verified: boolean;\n//       pkgFilesIndex: PackageFilesIndex;\n//       manifest?: DependencyManifest | undefined;\n//       requiresBuild: boolean;\n//     }>;\n//     fetch: (\n//       packageId: string,\n//       resolution: Resolution,\n//       opts: FetchOptions\n//     ) => Promise<FetchResult>;\n//     fetchingLocker: Map<\n//       string,\n//       FetchLock\n//     >;\n//     getIndexFilePathInCafs: (integrity: string, pkgId: string) => string;\n//     getFilePathByModeInCafs: (integrity: string, mode: number) => string;\n//     requestsQueue: {\n//       add: <T>(fn: () => Promise<T>, opts: { priority: number }) => Promise<T>;\n//       counter: number;\n//       concurrency: number;\n//     };\n//     storeDir: string;\n//     virtualStoreDirMaxLength: number;\n//     strictStorePkgContentCheck?: boolean | undefined;\n//   },\n//   opts: FetchPackageToStoreOptions\n// ): Promise<PackageResponse> {\n//   if (typeof opts.pkg.name === 'undefined') {\n//     opts.fetchRawManifest = true;\n//   }\n\n//   if (!ctx.fetchingLocker.has(opts.pkg.id)) {\n//     const fetching = pDefer<{\n//       files: {\n//         unprocessed: boolean;\n//         resolvedFrom: 'local-dir' | 'remote' | 'store';\n//         filesIndex: PackageFiles;\n//         packageImportMethod: 'hardlink';\n//         requiresBuild: boolean;\n//         sideEffects?: SideEffects | undefined;\n//       };\n//       bundledManifest: BundledManifest | undefined;\n//     }>();\n\n//     const { filesIndexFile, target } = getFilesIndexFilePath(ctx, opts);\n\n//     doFetchToStore(filesIndexFile, fetching, target);\n\n//     ctx.fetchingLocker.set(opts.pkg.id, {\n//       fetching: removeKeyOnFail(fetching.promise),\n//       filesIndexFile,\n//       fetchRawManifest: opts.fetchRawManifest,\n//     });\n\n//     // When files resolves, the cached result has to set fromStore to true, without\n//     // affecting previous invocations: so we need to replace the cache.\n//     //\n//     // Changing the value of fromStore is needed for correct reporting of `pnpm server`.\n//     // Otherwise, if a package was not in store when the server started, it will always be\n//     // reported as \"downloaded\" instead of \"reused\".\n//     fetching.promise\n//       .then((cache) => {\n//         progressLogger.debug({\n//           packageId: opts.pkg.id,\n//           requester: opts.lockfileDir,\n//           status:\n//             cache.files.resolvedFrom === 'remote'\n//               ? 'fetched'\n//               : 'found_in_store',\n//         });\n\n//         // If it's already in the store, we don't need to update the cache\n//         if (cache.files.resolvedFrom !== 'remote') {\n//           return;\n//         }\n\n//         const tmp = ctx.fetchingLocker.get(opts.pkg.id);\n\n//         // If fetching failed then it was removed from the cache.\n//         // It is OK. In that case there is no need to update it.\n//         if (tmp == null) return;\n\n//         ctx.fetchingLocker.set(opts.pkg.id, {\n//           ...tmp,\n//           fetching: Promise.resolve({\n//             ...cache,\n//             files: {\n//               ...cache.files,\n//               resolvedFrom: 'store',\n//             },\n//           }),\n//         });\n//       })\n//       .catch(() => {\n//         ctx.fetchingLocker.delete(opts.pkg.id);\n//       });\n//   }\n\n//   const result = ctx.fetchingLocker.get(opts.pkg.id);\n\n//   if (typeof result === 'undefined') {\n//     throw new Error('Fetch lock not found');\n//   }\n\n//   if (opts.fetchRawManifest === true && result.fetchRawManifest !== true) {\n//     result.fetching = removeKeyOnFail(\n//       result.fetching.then(async ({ files }) => {\n//         const file: PackageFileInfo | undefined =\n//           files.filesIndex['package.json'];\n\n//         if (typeof file === 'undefined') {\n//           return {\n//             files,\n//             bundledManifest: undefined,\n//           };\n//         }\n\n//         if (files.unprocessed === true) {\n//           const { integrity, mode } = file;\n\n//           const manifestPath = ctx.getFilePathByModeInCafs(integrity, mode);\n\n//           return {\n//             files,\n//             bundledManifest: await readBundledManifest(manifestPath),\n//           };\n//         }\n\n//         return {\n//           files,\n//           bundledManifest: undefined,\n//         };\n//       })\n//     );\n\n//     result.fetchRawManifest = true;\n//   }\n\n//   return {\n//     fetching: pShare(result.fetching),\n//     filesIndexFile: result.filesIndexFile,\n//   };\n\n//   async function removeKeyOnFail<T>(p: Promise<T>): Promise<T> {\n//     try {\n//       return await p;\n//       // eslint-disable-next-line @typescript-eslint/no-explicit-any\n//     } catch (err: any) {\n//       ctx.fetchingLocker.delete(opts.pkg.id);\n//       if (opts.onFetchError) {\n//         throw opts.onFetchError(err);\n//       }\n//       throw err;\n//     }\n//   }\n\n//   async function doFetchToStore(\n//     filesIndexFile: string,\n//     fetching: DeferredPromise<{\n//       files: {\n//         unprocessed: boolean;\n//         resolvedFrom: 'local-dir' | 'remote' | 'store';\n//         filesIndex: PackageFiles;\n//         packageImportMethod: 'hardlink';\n//         requiresBuild: boolean;\n//         sideEffects?: SideEffects | undefined;\n//       };\n//       bundledManifest: BundledManifest | undefined;\n//     }>,\n//     target: string\n//   ): Promise<void> {\n//     try {\n//       const isLocalTarballDep = opts.pkg.id.startsWith('file:');\n\n//       const resolution = opts.pkg.resolution;\n\n//       if (typeof resolution === 'undefined') {\n//         throw new Error('Resolution is undefined');\n//       }\n\n//       const isLocalPkg = resolution.type === 'directory';\n\n//       if (\n//         !opts.force &&\n//         (!isLocalTarballDep ||\n//           (await tarballIsUpToDate(resolution, target, opts.lockfileDir))) &&\n//         !isLocalPkg\n//       ) {\n//         const { verified, pkgFilesIndex, manifest, requiresBuild } =\n//           await ctx.readPkgFromCafs(filesIndexFile, opts.fetchRawManifest);\n//         if (verified) {\n//           if (\n//             (pkgFilesIndex.name != null &&\n//               opts.expectedPkg?.name != null &&\n//               pkgFilesIndex.name.toLowerCase() !==\n//                 opts.expectedPkg.name.toLowerCase()) ||\n//             (pkgFilesIndex.version != null &&\n//               opts.expectedPkg?.version != null &&\n//               // We used to not normalize the package versions before writing them to the lockfile and store.\n//               // So it may happen that the version will be in different formats.\n//               // For instance, v1.0.0 and 1.0.0\n//               // Hence, we need to use semver.eq() to compare them.\n//               !equalOrSemverEqual(\n//                 pkgFilesIndex.version,\n//                 opts.expectedPkg.version\n//               ))\n//           ) {\n//             const msg = `Package name mismatch found while reading ${JSON.stringify(opts.pkg.resolution)} from the store.`;\n//             const hint = `This means that either the lockfile is broken or the package metadata (name and version) inside the package's package.json file doesn't match the metadata in the registry. \\\n// Expected package: ${opts.expectedPkg.name}@${opts.expectedPkg.version}. \\\n// Actual package in the store with the given integrity: ${pkgFilesIndex.name}@${pkgFilesIndex.version}.`;\n//             if (ctx.strictStorePkgContentCheck ?? true) {\n//               throw new PnpmError('UNEXPECTED_PKG_CONTENT_IN_STORE', msg, {\n//                 hint: `${hint}\\n\\nIf you want to ignore this issue, set the strict-store-pkg-content-check to false.`,\n//               });\n//             }\n\n//             globalWarn(`${msg} ${hint}`);\n//           }\n\n//           fetching.resolve({\n//             files: {\n//               packageImportMethod: 'hardlink',\n//               unprocessed: true,\n//               filesIndex: pkgFilesIndex.files,\n//               resolvedFrom: 'store',\n//               sideEffects: pkgFilesIndex.sideEffects,\n//               requiresBuild,\n//             },\n//             bundledManifest:\n//               manifest == null ? manifest : normalizeBundledManifest(manifest),\n//           });\n\n//           return;\n//         }\n\n//         // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n//         if (pkgFilesIndex.files != null) {\n//           packageRequestLogger.warn({\n//             message: `Refetching ${target} to store. It was either modified or had no integrity checksums`,\n//             prefix: opts.lockfileDir,\n//           });\n//         }\n//       }\n\n//       // We fetch into targetStage directory first and then fs.rename() it to the\n//       // target directory.\n\n//       // Tarballs are requested first because they are bigger than metadata files.\n//       // However, when one line is left available, allow it to be picked up by a metadata request.\n//       // This is done in order to avoid situations when tarballs are downloaded in chunks\n//       // As many tarballs should be downloaded simultaneously as possible.\n//       const priority =\n//         (++ctx.requestsQueue.counter % ctx.requestsQueue.concurrency === 0\n//           ? -1\n//           : 1) * 1000;\n\n//       const fetchedPackage = await ctx.requestsQueue.add(\n//         async () => {\n//           return ctx.fetch(opts.pkg.id, resolution, {\n//             filesIndexFile,\n//             lockfileDir: opts.lockfileDir,\n//             readManifest: opts.fetchRawManifest,\n//             onProgress: (downloaded: number): void => {\n//               fetchingProgressLogger.debug({\n//                 downloaded,\n//                 packageId: opts.pkg.id,\n//                 status: 'in_progress',\n//               });\n//             },\n//             onStart: (size, attempt) => {\n//               fetchingProgressLogger.debug({\n//                 attempt,\n//                 packageId: opts.pkg.id,\n//                 size,\n//                 status: 'started',\n//               });\n//             },\n//             pkg: {\n//               name: opts.pkg.name,\n//               version: opts.pkg.version,\n//             },\n//           });\n//         },\n//         { priority }\n//       );\n\n//       const integrity = (opts.pkg.resolution as TarballResolution).integrity;\n\n//       if (isLocalTarballDep && typeof integrity === 'string') {\n//         await fs.mkdir(target, { recursive: true });\n\n//         await gfs.writeFile(\n//           path.join(target, TARBALL_INTEGRITY_FILENAME),\n//           integrity,\n//           'utf8'\n//         );\n//       }\n\n//       fetching.resolve({\n//         files: {\n//           unprocessed: false,\n//           resolvedFrom: fetchedPackage.local === true ? 'local-dir' : 'remote',\n//           filesIndex: fetchedPackage.filesIndex,\n//           packageImportMethod: fetchedPackage.packageImportMethod,\n//           requiresBuild: fetchedPackage.requiresBuild,\n//         },\n//         bundledManifest:\n//           fetchedPackage.manifest == null\n//             ? fetchedPackage.manifest\n//             : normalizeBundledManifest(fetchedPackage.manifest),\n//       });\n//       // eslint-disable-next-line @typescript-eslint/no-explicit-any\n//     } catch (err: any) {\n//       fetching.reject(err);\n//     }\n//   }\n// }\n\n// {\n//   files: {\n//     unprocessed: boolean;\n//     resolvedFrom: 'local-dir' | 'remote' | 'store';\n//     filesIndex: PackageFiles;\n//     requiresBuild: boolean;\n//     sideEffects?: SideEffects | undefined;\n//     packageImportMethod?:\n//       | 'auto'\n//       | 'hardlink'\n//       | 'copy'\n//       | 'clone'\n//       | 'clone-or-copy'\n//       | undefined;\n//   };\n//   bundledManifest: BundledManifest | undefined;\n// }\n\nasync function _fetchPackageToStore(\n  ctx: {\n    readPkgFromCafs: (\n      filesIndexFile: string,\n      readManifest?: boolean | undefined\n    ) => Promise<{\n      verified: boolean;\n      pkgFilesIndex: PackageFilesIndex;\n      manifest?: DependencyManifest | undefined;\n      requiresBuild: boolean;\n    }>;\n\n    fetch: (\n      packageId: string,\n      resolution: Resolution,\n      opts: FetchOptions\n    ) => Promise<\n      | GitFetcherResult\n      | {\n          filesIndex: PackageFiles | Record<string, string>;\n          manifest: DependencyManifest | undefined;\n          requiresBuild: boolean;\n          local?: boolean | undefined;\n          packageImportMethod?: never | undefined;\n        }\n    >;\n\n    fetchingLocker: Map<string, FetchLock>;\n\n    getIndexFilePathInCafs: (integrity: string, pkgId: string) => string;\n    getFilePathByModeInCafs: (integrity: string, mode: number) => string;\n    requestsQueue: {\n      add: <T>(fn: () => Promise<T>, opts: { priority: number }) => Promise<T>;\n      counter: number;\n      concurrency: number;\n    };\n    storeDir: string;\n    virtualStoreDirMaxLength: number;\n    strictStorePkgContentCheck?: boolean | undefined;\n  },\n  opts: FetchPackageToStoreOptions\n): Promise<PackageResponse> {\n  if (typeof opts.pkg.name === 'undefined') {\n    opts.fetchRawManifest = true;\n  }\n\n  if (!ctx.fetchingLocker.has(opts.pkg.id)) {\n    const fetching = pDefer<PkgRequestFetchResult<PackageResponse>>();\n\n    const { filesIndexFile, target } = getFilesIndexFilePath(ctx, opts);\n\n    doFetchToStore(filesIndexFile, fetching, target);\n\n    ctx.fetchingLocker.set(opts.pkg.id, {\n      fetching: removeKeyOnFail(fetching.promise),\n      filesIndexFile,\n      fetchRawManifest: opts.fetchRawManifest,\n    });\n\n    // When files resolves, the cached result has to set fromStore to true, without\n    // affecting previous invocations: so we need to replace the cache.\n    //\n    // Changing the value of fromStore is needed for correct reporting of `pnpm server`.\n    // Otherwise, if a package was not in store when the server started, it will always be\n    // reported as \"downloaded\" instead of \"reused\".\n    fetching.promise\n      .then((cache: PkgRequestFetchResult<PackageResponse>): void => {\n        progressLogger.debug({\n          packageId: opts.pkg.id,\n          requester: opts.lockfileDir,\n          status:\n            cache.files.resolvedFrom === 'remote'\n              ? 'fetched'\n              : 'found_in_store',\n        });\n\n        // If it's already in the store, we don't need to update the cache\n        if (cache.files.resolvedFrom !== 'remote') {\n          return;\n        }\n\n        const tmp = ctx.fetchingLocker.get(opts.pkg.id);\n\n        // If fetching failed then it was removed from the cache.\n        // It is OK. In that case there is no need to update it.\n        if (tmp == null) {\n          return;\n        }\n\n        ctx.fetchingLocker.set(opts.pkg.id, {\n          ...tmp,\n          fetching: Promise.resolve({\n            ...cache,\n            files: {\n              ...cache.files,\n              resolvedFrom: 'store',\n            },\n          }),\n        });\n      })\n      .catch((): void => {\n        ctx.fetchingLocker.delete(opts.pkg.id);\n      });\n  }\n\n  const result = ctx.fetchingLocker.get(opts.pkg.id);\n\n  if (typeof result === 'undefined') {\n    throw new Error('Fetch lock not found');\n  }\n\n  if (\n    opts.fetchRawManifest === true &&\n    result.fetchRawManifest !== true &&\n    typeof result.fetching !== 'undefined'\n  ) {\n    result.fetching = removeKeyOnFail(\n      result.fetching.then(\n        async ({\n          files,\n        }): Promise<\n          | {\n              files: PackageFilesResponse;\n              bundledManifest: undefined;\n            }\n          | {\n              files: PackageFilesResponse;\n              bundledManifest: BundledManifest;\n            }\n        > => {\n          const file: string | PackageFileInfo | undefined =\n            files.filesIndex['package.json'];\n\n          if (typeof file === 'undefined') {\n            return {\n              files,\n              bundledManifest: undefined,\n            };\n          }\n\n          if (files.unprocessed === true && typeof file !== 'string') {\n            const { integrity, mode } = file;\n\n            const manifestPath = ctx.getFilePathByModeInCafs(integrity, mode);\n\n            return {\n              files,\n              bundledManifest: await readBundledManifest(manifestPath),\n            };\n          }\n\n          return {\n            files,\n            bundledManifest: undefined,\n          };\n        }\n      )\n    );\n\n    result.fetchRawManifest = true;\n  }\n\n  return {\n    fetching:\n      typeof result.fetching === 'undefined'\n        ? undefined\n        : pShare(result.fetching),\n    filesIndexFile: result.filesIndexFile,\n  };\n\n  async function removeKeyOnFail<T>(p: Promise<T>): Promise<T> {\n    try {\n      return await p;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    } catch (err: any) {\n      ctx.fetchingLocker.delete(opts.pkg.id);\n      if (opts.onFetchError) {\n        throw opts.onFetchError(err);\n      }\n      throw err;\n    }\n  }\n\n  async function doFetchToStore(\n    filesIndexFile: string,\n    fetching: DeferredPromise<PkgRequestFetchResult<PackageResponse>>,\n    target: string\n  ): Promise<void> {\n    try {\n      const isLocalTarballDep = opts.pkg.id.startsWith('file:');\n\n      const resolution = opts.pkg.resolution;\n\n      if (typeof resolution === 'undefined') {\n        throw new Error('Resolution is undefined');\n      }\n\n      const isLocalPkg =\n        'type' in resolution && resolution.type === 'directory';\n\n      if (\n        opts.force !== true &&\n        (!isLocalTarballDep ||\n          (await tarballIsUpToDate(resolution, target, opts.lockfileDir))) &&\n        !isLocalPkg\n      ) {\n        const { verified, pkgFilesIndex, manifest, requiresBuild } =\n          await ctx.readPkgFromCafs(filesIndexFile, opts.fetchRawManifest);\n\n        if (verified) {\n          if (\n            (pkgFilesIndex.name != null &&\n              opts.expectedPkg?.name != null &&\n              pkgFilesIndex.name.toLowerCase() !==\n                opts.expectedPkg.name.toLowerCase()) ||\n            (pkgFilesIndex.version != null &&\n              opts.expectedPkg?.version != null &&\n              // We used to not normalize the package versions before writing them to the lockfile and store.\n              // So it may happen that the version will be in different formats.\n              // For instance, v1.0.0 and 1.0.0\n              // Hence, we need to use semver.eq() to compare them.\n              !equalOrSemverEqual(\n                pkgFilesIndex.version,\n                opts.expectedPkg.version\n              ))\n          ) {\n            const msg = `Package name mismatch found while reading ${JSON.stringify(opts.pkg.resolution)} from the store.`;\n            const hint = `This means that either the lockfile is broken or the package metadata (name and version) inside the package's package.json file doesn't match the metadata in the registry. \\\nExpected package: ${opts.expectedPkg.name}@${opts.expectedPkg.version}. \\\nActual package in the store with the given integrity: ${pkgFilesIndex.name}@${pkgFilesIndex.version}.`;\n            if (ctx.strictStorePkgContentCheck ?? true) {\n              throw new PnpmError('UNEXPECTED_PKG_CONTENT_IN_STORE', msg, {\n                hint: `${hint}\\n\\nIf you want to ignore this issue, set the strict-store-pkg-content-check to false.`,\n              });\n            }\n\n            globalWarn(`${msg} ${hint}`);\n          }\n\n          fetching.resolve({\n            files: {\n              packageImportMethod: 'hardlink',\n              unprocessed: true,\n              filesIndex: pkgFilesIndex.files,\n              resolvedFrom: 'store',\n              sideEffects: pkgFilesIndex.sideEffects,\n              requiresBuild,\n            },\n            bundledManifest:\n              manifest == null ? manifest : normalizeBundledManifest(manifest),\n          });\n\n          return;\n        }\n\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        if (pkgFilesIndex.files != null) {\n          packageRequestLogger.warn({\n            message: `Refetching ${target} to store. It was either modified or had no integrity checksums`,\n            prefix: opts.lockfileDir,\n          });\n        }\n      }\n\n      // We fetch into targetStage directory first and then fs.rename() it to the\n      // target directory.\n\n      // Tarballs are requested first because they are bigger than metadata files.\n      // However, when one line is left available, allow it to be picked up by a metadata request.\n      // This is done in order to avoid situations when tarballs are downloaded in chunks\n      // As many tarballs should be downloaded simultaneously as possible.\n      const priority =\n        (++ctx.requestsQueue.counter % ctx.requestsQueue.concurrency === 0\n          ? -1\n          : 1) * 1000;\n\n      const fetchedPackage = await ctx.requestsQueue.add(\n        async () => {\n          return ctx.fetch(opts.pkg.id, resolution, {\n            filesIndexFile,\n            lockfileDir: opts.lockfileDir,\n            readManifest: opts.fetchRawManifest,\n            onProgress: (downloaded: number): void => {\n              fetchingProgressLogger.debug({\n                downloaded,\n                packageId: opts.pkg.id,\n                status: 'in_progress',\n              });\n            },\n            onStart: (size: number | null, attempt: number): void => {\n              fetchingProgressLogger.debug({\n                attempt,\n                packageId: opts.pkg.id,\n                size,\n                status: 'started',\n              });\n            },\n            pkg: {\n              name: opts.pkg.name,\n              version: opts.pkg.version,\n            },\n          });\n        },\n        { priority }\n      );\n\n      const integrity = (opts.pkg.resolution as TarballResolution).integrity;\n\n      if (isLocalTarballDep && typeof integrity === 'string') {\n        await fs.mkdir(target, { recursive: true });\n\n        await gfs.writeFile(\n          path.join(target, TARBALL_INTEGRITY_FILENAME),\n          integrity,\n          'utf8'\n        );\n      }\n\n      fetching.resolve({\n        files: {\n          unprocessed: false,\n          resolvedFrom: fetchedPackage.local === true ? 'local-dir' : 'remote',\n          filesIndex: fetchedPackage.filesIndex as PackageFiles,\n          packageImportMethod: fetchedPackage.packageImportMethod,\n          requiresBuild: fetchedPackage.requiresBuild,\n        },\n        bundledManifest:\n          fetchedPackage.manifest == null\n            ? fetchedPackage.manifest\n            : normalizeBundledManifest(fetchedPackage.manifest),\n      });\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    } catch (err: any) {\n      fetching.reject(err);\n    }\n  }\n}\n\nasync function readBundledManifest(\n  pkgJsonPath: string\n): Promise<BundledManifest> {\n  return pickBundledManifest(await readPackageJson(pkgJsonPath));\n}\n\nasync function tarballIsUpToDate(\n  resolution: Resolution,\n  pkgInStoreLocation: string,\n  lockfileDir: string\n): Promise<boolean> {\n  let currentIntegrity: string | undefined;\n\n  try {\n    currentIntegrity = await gfs.readFile(\n      path.join(pkgInStoreLocation, TARBALL_INTEGRITY_FILENAME),\n      'utf8'\n    );\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n  } catch (_err: any) {\n    return false;\n  }\n  if (\n    typeof resolution.integrity === 'string' &&\n    currentIntegrity !== resolution.integrity\n  ) {\n    return false;\n  }\n\n  const tarball = path.join(lockfileDir, resolution.tarball?.slice(5) ?? '');\n\n  const tarballStream = createReadStream(tarball);\n\n  try {\n    return Boolean(await ssri.checkStream(tarballStream, currentIntegrity));\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n  } catch (_err: any) {\n    return false;\n  }\n}\n\nasync function fetcher(\n  fetcherByHostingType: TarballFetchers,\n  cafs: Cafs,\n  packageId: string,\n  resolution: Resolution,\n  opts: FetchOptions\n): Promise<\n  | {\n      filesIndex: PackageFiles | Record<string, string>;\n      manifest: DependencyManifest | undefined;\n      requiresBuild: boolean;\n      local?: boolean | undefined;\n      packageImportMethod?: never | undefined;\n    }\n  | GitFetcherResult\n> {\n  const fetch = pickFetcher(fetcherByHostingType, resolution);\n\n  try {\n    return await fetch(cafs, resolution as any, opts); // eslint-disable-line @typescript-eslint/no-explicit-any\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } catch (err: any) {\n    packageRequestLogger.warn({\n      message: `Fetching ${packageId} failed!`,\n      prefix: opts.lockfileDir,\n    });\n\n    throw err;\n  }\n}\n"],
  "mappings": "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",
  "names": []
}
