{
  "version": 3,
  "sources": ["../../../../../src/packages/plugin-commands-rebuild/implementation/extendRebuildOptions.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport { type Config, getOptionsFromRootManifest } from '../../config/index.ts';\nimport {\n  normalizeRegistries,\n  DEFAULT_REGISTRIES,\n} from '../../normalize-registries/index.ts';\nimport type {\n  PackageResponse,\n  StoreController,\n} from '../../store-controller-types/index.ts';\nimport type {\n  GlobalPkgDir,\n  LockFileDir,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  Registries,\n  WorkspaceDir,\n} from '../../types/index.ts';\nimport { loadJsonFile } from 'load-json-file';\nimport type { ReporterFunction } from '../../headless/index.ts';\n\nexport type StrictRebuildOptions<IP> = {\n  autoInstallPeers?: boolean | undefined;\n  cacheDir: string;\n  childConcurrency: number;\n  excludeLinksFromLockfile?: boolean | undefined;\n  extraBinPaths?: string[] | undefined;\n  extraEnv?: Record<string, string> | undefined;\n  lockfileDir: LockFileDir;\n  nodeLinker?: 'isolated' | 'hoisted' | 'pnp' | undefined;\n  preferSymlinkedExecutables?: boolean;\n  scriptShell?: string | undefined;\n  sideEffectsCacheRead?: boolean | undefined;\n  sideEffectsCacheWrite?: boolean | undefined;\n  scriptsPrependNodePath?: boolean | 'warn-only' | undefined;\n  shellEmulator?: boolean | undefined;\n  skipIfHasSideEffectsCache?: boolean | undefined;\n  storeDir: string; // TODO: remove this property\n  storeController?:\n    | StoreController<PackageResponse, PackageResponse, IP>\n    | undefined;\n  force?: boolean | undefined;\n  useLockfile: boolean;\n  registries: Registries;\n  dir:\n    | ProjectRootDir\n    | ProjectRootDirRealPath\n    | GlobalPkgDir\n    | WorkspaceDir\n    | LockFileDir;\n  pnpmHomeDir: string;\n\n  reporter?: ReporterFunction | undefined;\n  production: boolean;\n  development: boolean;\n  optional: boolean;\n  rawConfig: object;\n  userConfig?: Record<string, string> | undefined;\n  userAgent?: string | undefined;\n  packageManager: {\n    name: string;\n    version: string;\n  };\n  unsafePerm?: boolean | undefined;\n  pending?: boolean | undefined;\n  shamefullyHoist: boolean;\n  deployAllFiles?: boolean | undefined;\n  neverBuiltDependencies?: string[] | undefined;\n  onlyBuiltDependencies?: string[] | undefined;\n  virtualStoreDirMaxLength: number;\n  peersSuffixMaxLength?: number | undefined;\n  strictStorePkgContentCheck?: boolean | undefined;\n  fetchFullMetadata?: boolean | undefined;\n} & Pick<\n  Config,\n  | 'sslConfigs'\n  | 'onlyBuiltDependencies'\n  | 'onlyBuiltDependenciesFile'\n  | 'neverBuiltDependencies'\n>;\n\nexport type RebuildOptions<IP> = Partial<StrictRebuildOptions<IP>> &\n  Pick<StrictRebuildOptions<IP>, 'cacheDir' | 'storeDir' | 'storeController'> &\n  Pick<Config, 'rootProjectManifest' | 'rootProjectManifestDir'>;\n\nconst defaults = async <IP>(\n  opts: RebuildOptions<IP>\n): Promise<StrictRebuildOptions<IP>> => {\n  const packageManager =\n    opts.packageManager ??\n    (await loadJsonFile<{ name: string; version: string }>(\n      path.join(__dirname, '../../package.json')\n    ));\n\n  const dir = opts.dir ?? process.cwd();\n\n  const lockfileDir = opts.lockfileDir ?? dir;\n\n  return {\n    cacheDir: opts.cacheDir,\n    childConcurrency: 5,\n    development: true,\n    dir,\n    force: false,\n    lockfileDir,\n    nodeLinker: 'isolated',\n    optional: true,\n    packageManager,\n    pending: false,\n    production: true,\n    rawConfig: {},\n    registries: DEFAULT_REGISTRIES,\n    scriptsPrependNodePath: false,\n    shamefullyHoist: false,\n    shellEmulator: false,\n    sideEffectsCacheRead: false,\n    storeDir: opts.storeDir,\n    unsafePerm:\n      process.platform === 'win32' ||\n      process.platform === 'cygwin' ||\n      !process.setgid ||\n      process.getuid?.() !== 0,\n    useLockfile: true,\n    userAgent: `${packageManager.name}/${packageManager.version} npm/? node/${process.version} ${process.platform} ${process.arch}`,\n    // TODO: fix as\n  } as StrictRebuildOptions<IP>;\n};\n\nexport async function extendRebuildOptions<IP>(\n  opts: RebuildOptions<IP>\n): Promise<StrictRebuildOptions<IP>> {\n  // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions, @typescript-eslint/no-unnecessary-condition\n  if (opts) {\n    for (const key in opts) {\n      if (opts[key as keyof RebuildOptions<IP>] === undefined) {\n        delete opts[key as keyof RebuildOptions<IP>];\n      }\n    }\n  }\n\n  const defaultOpts = await defaults(opts);\n\n  const extendedOpts = {\n    ...defaultOpts,\n    ...opts,\n    storeDir: defaultOpts.storeDir,\n    ...(opts.rootProjectManifest\n      ? getOptionsFromRootManifest(\n          opts.rootProjectManifestDir,\n          opts.rootProjectManifest\n        )\n      : {}),\n  };\n\n  extendedOpts.registries = normalizeRegistries(extendedOpts.registries);\n\n  if (\n    extendedOpts.neverBuiltDependencies == null &&\n    extendedOpts.onlyBuiltDependencies == null &&\n    extendedOpts.onlyBuiltDependenciesFile == null\n  ) {\n    extendedOpts.onlyBuiltDependencies = [];\n  }\n\n  return extendedOpts;\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB,SAAsB,kCAAkC;AACxD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAaP,SAAS,oBAAoB;AAmE7B,MAAM,WAAW,OACf,SACsC;AACtC,QAAM,iBACJ,KAAK,kBACJ,MAAM;AAAA,IACL,KAAK,KAAK,WAAW,oBAAoB;AAAA,EAC3C;AAEF,QAAM,MAAM,KAAK,OAAO,QAAQ,IAAI;AAEpC,QAAM,cAAc,KAAK,eAAe;AAExC,SAAO;AAAA,IACL,UAAU,KAAK;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW,CAAC;AAAA,IACZ,YAAY;AAAA,IACZ,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,UAAU,KAAK;AAAA,IACf,YACE,QAAQ,aAAa,WACrB,QAAQ,aAAa,YACrB,CAAC,QAAQ,UACT,QAAQ,SAAS,MAAM;AAAA,IACzB,aAAa;AAAA,IACb,WAAW,GAAG,eAAe,IAAI,IAAI,eAAe,OAAO,eAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,IAAI,QAAQ,IAAI;AAAA;AAAA,EAE/H;AACF;AAEA,eAAsB,qBACpB,MACmC;AAEnC,MAAI,MAAM;AACR,eAAW,OAAO,MAAM;AACtB,UAAI,KAAK,GAA+B,MAAM,QAAW;AACvD,eAAO,KAAK,GAA+B;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,SAAS,IAAI;AAEvC,QAAM,eAAe;AAAA,IACnB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU,YAAY;AAAA,IACtB,GAAI,KAAK,sBACL;AAAA,MACE,KAAK;AAAA,MACL,KAAK;AAAA,IACP,IACA,CAAC;AAAA,EACP;AAEA,eAAa,aAAa,oBAAoB,aAAa,UAAU;AAErE,MACE,aAAa,0BAA0B,QACvC,aAAa,yBAAyB,QACtC,aAAa,6BAA6B,MAC1C;AACA,iBAAa,wBAAwB,CAAC;AAAA,EACxC;AAEA,SAAO;AACT;",
  "names": []
}
