{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-installation/installConfigDeps.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport getNpmTarballUrl from 'get-npm-tarball-url';\nimport { PnpmError } from '../error/index.ts';\nimport { pickRegistryForPackage } from '../pick-registry-for-package/index.ts';\nimport { readModulesDir } from '../read-modules-dir/index.ts';\nimport rimraf from '@zkochan/rimraf';\nimport { safeReadPackageJsonFromDir } from '../read-package-json/index.ts';\nimport type {\n  PackageResponse,\n  StoreController,\n} from '../package-store/index.ts';\nimport type {\n  GlobalPkgDir,\n  LockFileDir,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  Registries,\n  WorkspaceDir,\n} from '../types/index.ts';\n\nexport async function installConfigDeps<IP>(\n  configDeps: Record<string, string>,\n  opts: {\n    registries: Registries;\n    rootDir:\n      | ProjectRootDir\n      | ProjectRootDirRealPath\n      | GlobalPkgDir\n      | WorkspaceDir\n      | LockFileDir;\n    store: StoreController<PackageResponse, PackageResponse, IP>;\n  }\n): Promise<void> {\n  const configModulesDir = path.join(opts.rootDir, 'node_modules/.pnpm-config');\n\n  const existingConfigDeps: string[] =\n    (await readModulesDir(configModulesDir)) ?? [];\n\n  await Promise.all(\n    existingConfigDeps.map(async (existingConfigDep) => {\n      if (typeof configDeps[existingConfigDep] === 'undefined') {\n        await rimraf(path.join(configModulesDir, existingConfigDep));\n      }\n    })\n  );\n\n  await Promise.all(\n    Object.entries(configDeps).map(\n      async ([pkgName, pkgSpec]: [string, string]): Promise<void> => {\n        const configDepPath = path.join(configModulesDir, pkgName);\n\n        const sepIndex = pkgSpec.indexOf('+');\n\n        if (sepIndex === -1) {\n          throw new PnpmError(\n            'CONFIG_DEP_NO_INTEGRITY',\n            `Your config dependency called \"${pkgName}\" at \"pnpm.configDependencies\" doesn't have an integrity checksum`,\n            {\n              hint: `\n  All config dependencies should have their integrity checksum inlined in the version specifier. For example:\n\n  {\n    \"pnpm\": {\n      \"configDependencies\": {\n        \"my-config\": \"1.0.0+sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==\"\n      },\n    }\n  }`,\n            }\n          );\n        }\n\n        const version = pkgSpec.substring(0, sepIndex);\n\n        const integrity = pkgSpec.substring(sepIndex + 1);\n\n        if (existingConfigDeps.includes(pkgName)) {\n          const configDepPkgJson =\n            await safeReadPackageJsonFromDir(configDepPath);\n\n          if (\n            configDepPkgJson == null ||\n            configDepPkgJson.name !== pkgName ||\n            configDepPkgJson.version !== version\n          ) {\n            await rimraf(configDepPath);\n          }\n        }\n\n        const registry = pickRegistryForPackage(opts.registries, pkgName);\n\n        const { fetching } = await opts.store.fetchPackage({\n          force: true,\n          lockfileDir: opts.rootDir,\n          pkg: {\n            id: `${pkgName}@${version}`,\n            resolution: {\n              tarball: getNpmTarballUrl(pkgName, version, { registry }),\n              integrity,\n            },\n          },\n        });\n\n        if (typeof fetching === 'function') {\n          const { files: filesResponse } = await fetching();\n\n          await opts.store.importPackage(configDepPath, {\n            force: true,\n            requiresBuild: false,\n            filesResponse,\n          });\n        }\n      }\n    )\n  );\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,sBAAsB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,8BAA8B;AACvC,SAAS,sBAAsB;AAC/B,OAAO,YAAY;AACnB,SAAS,kCAAkC;AAc3C,eAAsB,kBACpB,YACA,MAUe;AACf,QAAM,mBAAmB,KAAK,KAAK,KAAK,SAAS,2BAA2B;AAE5E,QAAM,qBACH,MAAM,eAAe,gBAAgB,KAAM,CAAC;AAE/C,QAAM,QAAQ;AAAA,IACZ,mBAAmB,IAAI,OAAO,sBAAsB;AAClD,UAAI,OAAO,WAAW,iBAAiB,MAAM,aAAa;AACxD,cAAM,OAAO,KAAK,KAAK,kBAAkB,iBAAiB,CAAC;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ;AAAA,IACZ,OAAO,QAAQ,UAAU,EAAE;AAAA,MACzB,OAAO,CAAC,SAAS,OAAO,MAAuC;AAC7D,cAAM,gBAAgB,KAAK,KAAK,kBAAkB,OAAO;AAEzD,cAAM,WAAW,QAAQ,QAAQ,GAAG;AAEpC,YAAI,aAAa,IAAI;AACnB,gBAAM,IAAI;AAAA,YACR;AAAA,YACA,kCAAkC,OAAO;AAAA,YACzC;AAAA,cACE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAUR;AAAA,UACF;AAAA,QACF;AAEA,cAAM,UAAU,QAAQ,UAAU,GAAG,QAAQ;AAE7C,cAAM,YAAY,QAAQ,UAAU,WAAW,CAAC;AAEhD,YAAI,mBAAmB,SAAS,OAAO,GAAG;AACxC,gBAAM,mBACJ,MAAM,2BAA2B,aAAa;AAEhD,cACE,oBAAoB,QACpB,iBAAiB,SAAS,WAC1B,iBAAiB,YAAY,SAC7B;AACA,kBAAM,OAAO,aAAa;AAAA,UAC5B;AAAA,QACF;AAEA,cAAM,WAAW,uBAAuB,KAAK,YAAY,OAAO;AAEhE,cAAM,EAAE,SAAS,IAAI,MAAM,KAAK,MAAM,aAAa;AAAA,UACjD,OAAO;AAAA,UACP,aAAa,KAAK;AAAA,UAClB,KAAK;AAAA,YACH,IAAI,GAAG,OAAO,IAAI,OAAO;AAAA,YACzB,YAAY;AAAA,cACV,SAAS,iBAAiB,SAAS,SAAS,EAAE,SAAS,CAAC;AAAA,cACxD;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAED,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,EAAE,OAAO,cAAc,IAAI,MAAM,SAAS;AAEhD,gBAAM,KAAK,MAAM,cAAc,eAAe;AAAA,YAC5C,OAAO;AAAA,YACP,eAAe;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
  "names": []
}
