{
  "version": 3,
  "sources": ["../../../../../src/packages/core/install/extendInstallOptions.ts"],
  "sourcesContent": ["import { WANTED_LOCKFILE } from '../../constants/index.ts';\nimport type { Catalogs } from '../../catalogs.types/index.ts';\nimport { PnpmError } from '../../error/index.ts';\nimport type { HookOptions, ProjectOptions } from '../../get-context/index.ts';\nimport type { HoistingLimits } from '../../headless/index.ts';\nimport { createReadPackageHook } from '../../hooks.read-package-hook/index.ts';\nimport type { IncludedDependencies } from '../../modules-yaml/index.ts';\nimport {\n  normalizeRegistries,\n  DEFAULT_REGISTRIES,\n} from '../../normalize-registries/index.ts';\nimport type { WorkspacePackages } from '../../resolver-base/index.ts';\nimport type {\n  PackageResponse,\n  StoreController,\n} from '../../store-controller-types/index.ts';\nimport type {\n  SupportedArchitectures,\n  AllowedDeprecatedVersions,\n  PackageExtension,\n  ReadPackageHook,\n  Registries,\n  PrepareExecutionEnv,\n  ModulesDir,\n  LockFileDir,\n  GlobalPkgDir,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  WorkspaceDir,\n} from '../../types/index.ts';\nimport {\n  parseOverrides,\n  type PackageSelector,\n} from '../../parse-overrides/index.ts';\nimport { pnpmPkgJson } from '../pnpmPkgJson.ts';\nimport type { ReporterFunction } from '../types.ts';\nimport type { PreResolutionHookContext } from '../../hooks.types/index.ts';\nimport type { LockfileObject } from '../../lockfile.types/index.ts';\n\nexport type StrictInstallOptions = {\n  autoInstallPeers: boolean;\n  autoInstallPeersFromHighestMatch: boolean;\n  catalogs: Catalogs;\n  frozenLockfile: boolean;\n  frozenLockfileIfExists: boolean;\n  enablePnp: boolean;\n  extraBinPaths: string[];\n  extraEnv: Record<string, string>;\n  hoistingLimits: HoistingLimits;\n  externalDependencies?: Set<string> | undefined;\n  useLockfile: boolean;\n  saveLockfile: boolean;\n  useGitBranchLockfile: boolean;\n  mergeGitBranchLockfiles: boolean;\n  linkWorkspacePackagesDepth: number;\n  lockfileOnly: boolean;\n  forceFullResolution: boolean;\n  fixLockfile: boolean;\n  dedupe: boolean;\n  ignoreCompatibilityDb: boolean;\n  ignoreDepScripts: boolean;\n  ignorePackageManifest: boolean;\n  preferFrozenLockfile: boolean;\n  saveWorkspaceProtocol: boolean | 'rolling';\n  lockfileCheck?:\n    | ((prev: LockfileObject, next: LockfileObject) => void)\n    | undefined;\n  lockfileIncludeTarballUrl: boolean;\n  preferWorkspacePackages: boolean;\n  preserveWorkspaceProtocol: boolean;\n  scriptsPrependNodePath: boolean | 'warn-only';\n  scriptShell?: string | undefined;\n  shellEmulator: boolean;\n  storeController: StoreController<\n    PackageResponse,\n    PackageResponse,\n    {\n      isBuilt: boolean;\n      importMethod?: string | undefined;\n    }\n  >;\n  storeDir: string;\n  reporter: ReporterFunction;\n  force: boolean;\n  forcePublicHoistPattern: boolean;\n  depth: number;\n  lockfileDir: LockFileDir;\n  modulesDir: ModulesDir;\n  rawConfig: Record<string, any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n  verifyStoreIntegrity?: boolean | undefined;\n  engineStrict: boolean;\n  ignoredBuiltDependencies?: string[] | undefined;\n  neverBuiltDependencies?: string[] | undefined;\n  onlyBuiltDependencies?: string[] | undefined;\n  onlyBuiltDependenciesFile?: string | undefined;\n  nodeExecPath?: string | undefined;\n  nodeLinker: 'isolated' | 'hoisted' | 'pnp';\n  nodeVersion?: string | undefined;\n  packageExtensions: Record<string, PackageExtension>;\n  ignoredOptionalDependencies: string[];\n  pnpmfile: string;\n  ignorePnpmfile: boolean;\n  packageManager: {\n    name: string;\n    version: string;\n  };\n  pruneLockfileImporters: boolean;\n  hooks: {\n    readPackage?: ReadPackageHook[] | undefined;\n    preResolution?:\n      | ((ctx: PreResolutionHookContext) => Promise<void>)\n      | undefined;\n    afterAllResolved?:\n      | Array<\n          (lockfile: LockfileObject) => LockfileObject | Promise<LockfileObject>\n        >\n      | undefined;\n    calculatePnpmfileChecksum?: (() => Promise<string | undefined>) | undefined;\n  };\n  sideEffectsCacheRead: boolean;\n  sideEffectsCacheWrite: boolean;\n  strictPeerDependencies: boolean;\n  include: IncludedDependencies;\n  includeDirect: IncludedDependencies;\n  ignoreCurrentPrefs: boolean;\n  ignoreScripts: boolean;\n  childConcurrency: number;\n  userAgent: string;\n  unsafePerm: boolean;\n  registries: Registries;\n  tag: string;\n  overrides: Record<string, string>;\n  ownLifecycleHooksStdio: 'inherit' | 'pipe';\n  // We can automatically calculate these\n  // unless installation runs on a workspace\n  // that doesn't share a lockfile\n  workspacePackages?: WorkspacePackages | undefined;\n  pruneStore: boolean;\n  virtualStoreDir?: string | undefined;\n  dir:\n    | WorkspaceDir\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | LockFileDir;\n  symlink: boolean;\n  enableModulesDir: boolean;\n  modulesCacheMaxAge: number;\n  allowedDeprecatedVersions: AllowedDeprecatedVersions;\n  allowNonAppliedPatches: boolean;\n  preferSymlinkedExecutables: boolean;\n  resolutionMode: 'highest' | 'time-based' | 'lowest-direct';\n  resolvePeersFromWorkspaceRoot: boolean;\n  ignoreWorkspaceCycles: boolean;\n  disallowWorkspaceCycles: boolean;\n\n  publicHoistPattern: string[] | undefined;\n  hoistPattern: string[] | undefined;\n  forceHoistPattern: boolean;\n\n  shamefullyHoist: boolean;\n  forceShamefullyHoist: boolean;\n\n  global: boolean;\n  globalBin?: string | undefined;\n  patchedDependencies?: Record<string, string> | undefined;\n\n  allProjects: (ProjectOptions & HookOptions & { binsDir: string })[];\n  resolveSymlinksInInjectedDirs: boolean;\n  dedupeDirectDeps: boolean;\n  dedupeInjectedDeps: boolean;\n  dedupePeerDependents: boolean;\n  extendNodePath: boolean;\n  excludeLinksFromLockfile: boolean;\n  confirmModulesPurge: boolean;\n  /**\n   * Don't relink local directory dependencies if they are not hard linked from the local directory.\n   *\n   * This option was added to fix an issue with Bit CLI.\n   * Bit compile adds dist directories to the injected dependencies, so if pnpm were to relink them,\n   * the dist directories would be deleted.\n   *\n   * The option might be used in the future to improve performance.\n   */\n  disableRelinkLocalDirDeps: boolean;\n\n  supportedArchitectures?: SupportedArchitectures | undefined;\n  hoistWorkspacePackages?: boolean | undefined;\n  virtualStoreDirMaxLength: number;\n  peersSuffixMaxLength: number;\n  prepareExecutionEnv?: PrepareExecutionEnv | undefined;\n  returnListOfDepsRequiringBuild?: boolean | undefined;\n  injectWorkspacePackages?: boolean | undefined;\n};\n\nexport type InstallOptions = Partial<\n  Omit<StrictInstallOptions, 'storeDir' | 'storeController' | 'lockfileDir'>\n> &\n  Pick<StrictInstallOptions, 'storeDir' | 'storeController' | 'lockfileDir'>;\n\nfunction defaults(opts: InstallOptions): StrictInstallOptions {\n  const packageManager = opts.packageManager ?? {\n    name: pnpmPkgJson.name,\n    version: pnpmPkgJson.version,\n  };\n\n  return {\n    forceShamefullyHoist: false,\n    global: false,\n    allProjects: [],\n    disableRelinkLocalDirDeps: false,\n    ignorePnpmfile: false,\n    dir: '' as LockFileDir,\n    preferSymlinkedExecutables: false,\n    forceHoistPattern: false,\n    reporter: () => {},\n    forcePublicHoistPattern: false,\n    modulesDir: 'node_modules' as ModulesDir,\n    pnpmfile: '',\n    hoistingLimits: new Map(),\n    linkWorkspacePackagesDepth: 0,\n    fixLockfile: false,\n    dedupe: false,\n    catalogs: {},\n    frozenLockfileIfExists: false,\n    extraBinPaths: [],\n    extraEnv: {},\n    allowedDeprecatedVersions: {},\n    allowNonAppliedPatches: false,\n    autoInstallPeers: true,\n    autoInstallPeersFromHighestMatch: false,\n    childConcurrency: 5,\n    confirmModulesPurge: opts.force !== true,\n    depth: 0,\n    dedupeInjectedDeps: true,\n    enablePnp: false,\n    engineStrict: false,\n    force: false,\n    forceFullResolution: false,\n    frozenLockfile: false,\n    hoistPattern: undefined,\n    publicHoistPattern: undefined,\n    hooks: {},\n    ignoreCurrentPrefs: false,\n    ignoreDepScripts: false,\n    ignoreScripts: false,\n    include: {\n      dependencies: true,\n      devDependencies: true,\n      optionalDependencies: true,\n    },\n    includeDirect: {\n      dependencies: true,\n      devDependencies: true,\n      optionalDependencies: true,\n    },\n    lockfileDir:\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      opts.lockfileDir ??\n      (opts.dir as LockFileDir | undefined) ??\n      (process.cwd() as LockFileDir),\n    lockfileOnly: false,\n    nodeVersion: opts.nodeVersion,\n    nodeLinker: 'isolated',\n    overrides: {},\n    ownLifecycleHooksStdio: 'inherit',\n    ignoreCompatibilityDb: false,\n    ignorePackageManifest: false,\n    packageExtensions: {},\n    ignoredOptionalDependencies: [] as string[],\n    packageManager,\n    preferFrozenLockfile: true,\n    preferWorkspacePackages: false,\n    preserveWorkspaceProtocol: true,\n    pruneLockfileImporters: false,\n    pruneStore: false,\n    rawConfig: {},\n    registries: DEFAULT_REGISTRIES,\n    resolutionMode: 'lowest-direct',\n    saveWorkspaceProtocol: 'rolling',\n    lockfileIncludeTarballUrl: false,\n    scriptsPrependNodePath: false,\n    shamefullyHoist: false,\n    shellEmulator: false,\n    sideEffectsCacheRead: false,\n    sideEffectsCacheWrite: false,\n    symlink: true,\n    storeController: opts.storeController,\n    storeDir: opts.storeDir,\n    strictPeerDependencies: false,\n    tag: 'latest',\n    unsafePerm:\n      process.platform === 'win32' ||\n      process.platform === 'cygwin' ||\n      !process.setgid ||\n      process.getuid?.() !== 0,\n    useLockfile: true,\n    saveLockfile: true,\n    useGitBranchLockfile: false,\n    mergeGitBranchLockfiles: false,\n    userAgent: `${packageManager.name}/${packageManager.version} npm/? node/${process.version} ${process.platform} ${process.arch}`,\n    verifyStoreIntegrity: true,\n    enableModulesDir: true,\n    modulesCacheMaxAge: 7 * 24 * 60,\n    resolveSymlinksInInjectedDirs: false,\n    dedupeDirectDeps: true,\n    dedupePeerDependents: true,\n    resolvePeersFromWorkspaceRoot: true,\n    extendNodePath: true,\n    ignoreWorkspaceCycles: false,\n    disallowWorkspaceCycles: false,\n    excludeLinksFromLockfile: false,\n    virtualStoreDirMaxLength: 120,\n    peersSuffixMaxLength: 1000,\n  };\n}\n\nexport type ProcessedInstallOptions = StrictInstallOptions & {\n  readPackageHook?: ReadPackageHook | undefined;\n  parsedOverrides: Array<\n    | {\n        parentPkg: PackageSelector;\n        targetPkg: PackageSelector;\n        selector: string;\n        newPref: string;\n      }\n    | {\n        targetPkg: PackageSelector;\n        selector: string;\n        newPref: string;\n      }\n  >;\n};\n\nexport function extendOptions(opts: InstallOptions): ProcessedInstallOptions {\n  if (typeof opts !== 'undefined') {\n    for (const key in opts) {\n      if (opts[key as keyof InstallOptions] === undefined) {\n        delete opts[key as keyof InstallOptions];\n      }\n    }\n  }\n\n  if (\n    opts.neverBuiltDependencies == null &&\n    opts.onlyBuiltDependencies == null &&\n    opts.onlyBuiltDependenciesFile == null\n  ) {\n    opts.onlyBuiltDependencies = [];\n  }\n\n  if (opts.onlyBuiltDependencies && opts.neverBuiltDependencies) {\n    throw new PnpmError(\n      'CONFIG_CONFLICT_BUILT_DEPENDENCIES',\n      'Cannot have both neverBuiltDependencies and onlyBuiltDependencies'\n    );\n  }\n\n  const defaultOpts = defaults(opts);\n\n  const extendedOpts: ProcessedInstallOptions = {\n    ...defaultOpts,\n    ...opts,\n    storeDir: defaultOpts.storeDir,\n    parsedOverrides: parseOverrides(opts.overrides ?? {}, opts.catalogs ?? {}),\n  };\n\n  extendedOpts.readPackageHook = createReadPackageHook({\n    ignoreCompatibilityDb: extendedOpts.ignoreCompatibilityDb,\n    readPackageHook: extendedOpts.hooks.readPackage,\n    overrides: extendedOpts.parsedOverrides,\n    lockfileDir: extendedOpts.lockfileDir,\n    packageExtensions: extendedOpts.packageExtensions,\n    ignoredOptionalDependencies: extendedOpts.ignoredOptionalDependencies,\n  });\n\n  if (extendedOpts.lockfileOnly) {\n    extendedOpts.ignoreScripts = true;\n\n    if (!extendedOpts.useLockfile) {\n      throw new PnpmError(\n        'CONFIG_CONFLICT_LOCKFILE_ONLY_WITH_NO_LOCKFILE',\n        `Cannot generate a ${WANTED_LOCKFILE} because lockfile is set to false`\n      );\n    }\n  }\n\n  if (extendedOpts.userAgent.startsWith('npm/')) {\n    extendedOpts.userAgent = `${extendedOpts.packageManager.name}/${extendedOpts.packageManager.version} ${extendedOpts.userAgent}`;\n  }\n\n  extendedOpts.registries = normalizeRegistries(extendedOpts.registries);\n\n  extendedOpts.rawConfig['registry'] = extendedOpts.registries.default;\n\n  return extendedOpts;\n}\n"],
  "mappings": "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",
  "names": []
}
