{
  "version": 3,
  "sources": ["../../../../../src/packages/package-store/storeController/index.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport fs from 'node:fs';\nimport {\n  createCafsStore,\n  type CafsLocker,\n  createPackageImporterAsync,\n} from '../../create-cafs-store/index.ts';\nimport type { ResolveFunction } from '../../resolver-base/index.ts';\nimport type {\n  PackageResponse,\n  StoreController,\n  ImportIndexedPackageAsync,\n  NewStoreController,\n} from '../../store-controller-types/index.ts';\nimport {\n  addFilesFromDir,\n  importPackage,\n  initStoreDir,\n} from '../../worker/index.ts';\nimport { prune } from './prune.ts';\nimport type { StoreServerController } from 'src/packages/server/connectStoreController.ts';\nimport {\n  createPackageRequester,\n  createServerPackageRequester,\n  createNewStorePackageRequester,\n} from 'src/packages/package-requester/packageRequester.ts';\nimport type { TarballFetchers } from 'src/packages/tarball-fetcher/index.ts';\nimport type { ImportPackageOpts } from 'src/packages/cafs-types/index.ts';\nexport type { CafsLocker };\n\nexport function createPackageStore(\n  resolve: ResolveFunction,\n  fetchers: TarballFetchers,\n  initOpts: {\n    cafsLocker?: CafsLocker | undefined;\n    engineStrict?: boolean | undefined;\n    force?: boolean | undefined;\n    nodeVersion?: string | undefined;\n    importPackage?: ImportIndexedPackageAsync | undefined;\n    pnpmVersion?: string | undefined;\n    ignoreFile?: ((filename: string) => boolean) | undefined;\n    cacheDir: string;\n    storeDir: string;\n    networkConcurrency?: number | undefined;\n    packageImportMethod?:\n      | 'auto'\n      | 'hardlink'\n      | 'copy'\n      | 'clone'\n      | 'clone-or-copy'\n      | undefined;\n    verifyStoreIntegrity?: boolean | undefined;\n    virtualStoreDirMaxLength: number;\n    strictStorePkgContentCheck?: boolean | undefined;\n    clearResolutionCache: () => void;\n  }\n): StoreController<\n  PackageResponse,\n  PackageResponse,\n  { importMethod?: string | undefined; isBuilt: boolean }\n> {\n  const storeDir = initOpts.storeDir;\n\n  if (!fs.existsSync(path.join(storeDir, 'files'))) {\n    initStoreDir(storeDir).catch((error: unknown) => {\n      if (error instanceof Error) {\n        console.error(error.message);\n      } else if (typeof error === 'string') {\n        console.error(error);\n      } else {\n        console.error(JSON.stringify(error));\n      }\n    });\n  }\n\n  const cafs = createCafsStore(storeDir, {\n    cafsLocker: initOpts.cafsLocker,\n    packageImportMethod: initOpts.packageImportMethod,\n  });\n\n  const packageRequester = createPackageRequester({\n    force: initOpts.force,\n    engineStrict: initOpts.engineStrict,\n    nodeVersion: initOpts.nodeVersion,\n    pnpmVersion: initOpts.pnpmVersion,\n    resolve,\n    fetchers,\n    cafs,\n    ignoreFile: initOpts.ignoreFile,\n    networkConcurrency: initOpts.networkConcurrency,\n    storeDir: initOpts.storeDir,\n    verifyStoreIntegrity: initOpts.verifyStoreIntegrity,\n    virtualStoreDirMaxLength: initOpts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: initOpts.strictStorePkgContentCheck,\n  });\n\n  return {\n    close: async () => {}, // eslint-disable-line:no-empty\n    fetchPackage: packageRequester.fetchPackageToStore,\n    getFilesIndexFilePath: packageRequester.getFilesIndexFilePath,\n    importPackage:\n      typeof initOpts.importPackage === 'undefined'\n        ? (\n            targetDir,\n            opts\n          ): Promise<{\n            isBuilt: boolean;\n            importMethod?: string | undefined;\n          }> => {\n            return importPackage<{\n              isBuilt: boolean;\n              importMethod?: string | undefined;\n            }>({\n              ...opts,\n              packageImportMethod: initOpts.packageImportMethod,\n              storeDir: initOpts.storeDir,\n              targetDir,\n            });\n          }\n        : createPackageImporterAsync({\n            importIndexedPackage: initOpts.importPackage,\n            storeDir: cafs.storeDir,\n          }),\n    prune: prune.bind(null, { storeDir, cacheDir: initOpts.cacheDir }),\n    requestPackage: packageRequester.requestPackage,\n    upload,\n    clearResolutionCache: initOpts.clearResolutionCache,\n  };\n\n  async function upload(\n    builtPkgLocation: string,\n    opts: { filesIndexFile: string; sideEffectsCacheKey: string }\n  ): Promise<void> {\n    await addFilesFromDir({\n      storeDir: cafs.storeDir,\n      dir: builtPkgLocation,\n      sideEffectsCacheKey: opts.sideEffectsCacheKey,\n      filesIndexFile: opts.filesIndexFile,\n      pkg: {},\n    });\n  }\n}\n\nexport function createNewPackageStore(\n  resolve: ResolveFunction,\n  fetchers: TarballFetchers,\n  initOpts: {\n    cafsLocker?: CafsLocker | undefined;\n    engineStrict?: boolean | undefined;\n    force?: boolean | undefined;\n    nodeVersion?: string | undefined;\n    importPackage?: ImportIndexedPackageAsync | undefined;\n    pnpmVersion?: string | undefined;\n    ignoreFile?: ((filename: string) => boolean) | undefined;\n    cacheDir: string;\n    storeDir: string;\n    networkConcurrency?: number | undefined;\n    packageImportMethod?:\n      | 'auto'\n      | 'hardlink'\n      | 'copy'\n      | 'clone'\n      | 'clone-or-copy'\n      | undefined;\n    verifyStoreIntegrity?: boolean | undefined;\n    virtualStoreDirMaxLength: number;\n    strictStorePkgContentCheck?: boolean | undefined;\n    clearResolutionCache: () => void;\n  }\n): NewStoreController<\n  PackageResponse,\n  PackageResponse,\n  { isBuilt: boolean; importMethod?: string | undefined }\n> {\n  const storeDir = initOpts.storeDir;\n\n  if (!fs.existsSync(path.join(storeDir, 'files'))) {\n    initStoreDir(storeDir).catch((error: unknown) => {\n      if (error instanceof Error) {\n        console.error(error.message);\n      } else if (typeof error === 'string') {\n        console.error(error);\n      } else {\n        console.error(JSON.stringify(error));\n      }\n    });\n  }\n\n  const cafs = createCafsStore(storeDir, {\n    cafsLocker: initOpts.cafsLocker,\n    packageImportMethod: initOpts.packageImportMethod,\n  });\n\n  const packageRequester = createNewStorePackageRequester({\n    force: initOpts.force,\n    engineStrict: initOpts.engineStrict,\n    nodeVersion: initOpts.nodeVersion,\n    pnpmVersion: initOpts.pnpmVersion,\n    resolve,\n    fetchers,\n    cafs,\n    ignoreFile: initOpts.ignoreFile,\n    networkConcurrency: initOpts.networkConcurrency,\n    storeDir: initOpts.storeDir,\n    verifyStoreIntegrity: initOpts.verifyStoreIntegrity,\n    virtualStoreDirMaxLength: initOpts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: initOpts.strictStorePkgContentCheck,\n  });\n\n  return {\n    close: async () => {}, // eslint-disable-line:no-empty\n    fetchPackage: packageRequester.fetchPackageToStore,\n    getFilesIndexFilePath: packageRequester.getFilesIndexFilePath,\n    importPackage:\n      typeof initOpts.importPackage === 'undefined'\n        ? (\n            targetDir,\n            opts\n          ): Promise<{\n            isBuilt: boolean;\n            importMethod?: string | undefined;\n          }> => {\n            return importPackage<{\n              isBuilt: boolean;\n              importMethod?: string | undefined;\n            }>({\n              ...opts,\n              packageImportMethod: initOpts.packageImportMethod,\n              storeDir: initOpts.storeDir,\n              targetDir,\n            });\n          }\n        : createPackageImporterAsync({\n            importIndexedPackage: initOpts.importPackage,\n            storeDir: cafs.storeDir,\n          }),\n    prune: prune.bind(null, { storeDir, cacheDir: initOpts.cacheDir }),\n    requestPackage: packageRequester.requestPackage,\n    upload,\n    clearResolutionCache: initOpts.clearResolutionCache,\n  };\n\n  async function upload(\n    builtPkgLocation: string,\n    opts: { filesIndexFile: string; sideEffectsCacheKey: string }\n  ): Promise<void> {\n    await addFilesFromDir({\n      storeDir: cafs.storeDir,\n      dir: builtPkgLocation,\n      sideEffectsCacheKey: opts.sideEffectsCacheKey,\n      filesIndexFile: opts.filesIndexFile,\n      pkg: {},\n    });\n  }\n}\n\nexport function createServerPackageStore(\n  resolve: ResolveFunction,\n  fetchers: TarballFetchers,\n  initOpts: {\n    cafsLocker?: CafsLocker | undefined;\n    engineStrict?: boolean | undefined;\n    force?: boolean | undefined;\n    nodeVersion?: string | undefined;\n    importPackage?: ImportIndexedPackageAsync | undefined;\n    pnpmVersion?: string | undefined;\n    ignoreFile?: ((filename: string) => boolean) | undefined;\n    cacheDir: string;\n    storeDir: string;\n    networkConcurrency?: number | undefined;\n    packageImportMethod?:\n      | 'auto'\n      | 'hardlink'\n      | 'copy'\n      | 'clone'\n      | 'clone-or-copy'\n      | undefined;\n    verifyStoreIntegrity?: boolean | undefined;\n    virtualStoreDirMaxLength: number;\n    strictStorePkgContentCheck?: boolean | undefined;\n    clearResolutionCache: () => void;\n  }\n): StoreServerController<\n  PackageResponse,\n  PackageResponse,\n  {\n    isBuilt: boolean;\n    importMethod?: string | undefined;\n  }\n> {\n  const storeDir = initOpts.storeDir;\n\n  if (!fs.existsSync(path.join(storeDir, 'files'))) {\n    initStoreDir(storeDir).catch((error: unknown) => {\n      if (error instanceof Error) {\n        console.error(error.message);\n      } else if (typeof error === 'string') {\n        console.error(error);\n      } else {\n        console.error(JSON.stringify(error));\n      }\n    });\n  }\n\n  const cafs = createCafsStore(storeDir, {\n    cafsLocker: initOpts.cafsLocker,\n    packageImportMethod: initOpts.packageImportMethod,\n  });\n\n  const packageRequester = createServerPackageRequester({\n    force: initOpts.force,\n    engineStrict: initOpts.engineStrict,\n    nodeVersion: initOpts.nodeVersion,\n    pnpmVersion: initOpts.pnpmVersion,\n    resolve,\n    fetchers,\n    cafs,\n    ignoreFile: initOpts.ignoreFile,\n    networkConcurrency: initOpts.networkConcurrency,\n    storeDir: initOpts.storeDir,\n    verifyStoreIntegrity: initOpts.verifyStoreIntegrity,\n    virtualStoreDirMaxLength: initOpts.virtualStoreDirMaxLength,\n    strictStorePkgContentCheck: initOpts.strictStorePkgContentCheck,\n  });\n\n  return {\n    stop: async () => {},\n    close: async () => {},\n    fetchPackage: packageRequester.fetchPackageToStore,\n    getFilesIndexFilePath: packageRequester.getFilesIndexFilePath,\n    importPackage:\n      typeof initOpts.importPackage === 'undefined'\n        ? (\n            targetDir: string,\n            opts: ImportPackageOpts\n          ): Promise<{\n            isBuilt: boolean;\n            importMethod?: string | undefined;\n          }> => {\n            return importPackage<{\n              isBuilt: boolean;\n              importMethod?: string | undefined;\n            }>({\n              ...opts,\n              packageImportMethod: initOpts.packageImportMethod,\n              storeDir: initOpts.storeDir,\n              targetDir,\n            });\n          }\n        : createPackageImporterAsync({\n            importIndexedPackage: initOpts.importPackage,\n            storeDir: cafs.storeDir,\n          }),\n    prune: prune.bind(null, { storeDir, cacheDir: initOpts.cacheDir }),\n    requestPackage: packageRequester.requestPackage,\n    upload,\n    clearResolutionCache: initOpts.clearResolutionCache,\n  };\n\n  async function upload(\n    builtPkgLocation: string,\n    opts: { filesIndexFile: string; sideEffectsCacheKey: string }\n  ): Promise<void> {\n    await addFilesFromDir({\n      storeDir: cafs.storeDir,\n      dir: builtPkgLocation,\n      sideEffectsCacheKey: opts.sideEffectsCacheKey,\n      filesIndexFile: opts.filesIndexFile,\n      pkg: {},\n    });\n  }\n}\n"],
  "mappings": "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",
  "names": []
}
