{"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../src/util/yarn.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, log, spawn } from \"builder-util\"\nimport { pathExists } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { homedir } from \"os\"\nimport * as path from \"path\"\nimport { Configuration } from \"../configuration\"\nimport { executeAppBuilderAndWriteJson } from \"./appBuilder\"\nimport { PM, getPackageManagerCommand } from \"../node-module-collector\"\nimport { detectPackageManager } from \"../node-module-collector/packageManager\"\nimport { NodeModuleDirInfo } from \"./packageDependencies\"\nimport { rebuild as remoteRebuild } from \"./rebuild\"\nimport * as which from \"which\"\nimport { RebuildOptions as ElectronRebuildOptions } from \"@electron/rebuild\"\nimport { Nullish } from \"builder-util-runtime\"\n\nexport async function installOrRebuild(\n  config: Configuration,\n  { appDir, projectDir, workspaceRoot }: DirectoryPaths,\n  options: RebuildOptions,\n  forceInstall = false,\n  env: NodeJS.ProcessEnv\n) {\n  const effectiveOptions: RebuildOptions = {\n    buildFromSource: config.buildDependenciesFromSource === true,\n    additionalArgs: asArray(config.npmArgs),\n    ...options,\n  }\n  let isDependenciesInstalled = false\n\n  for (const fileOrDir of [\"node_modules\", \".pnp.js\"]) {\n    if ((await pathExists(path.join(projectDir, fileOrDir))) || (await pathExists(path.join(appDir, fileOrDir)))) {\n      isDependenciesInstalled = true\n\n      break\n    }\n  }\n\n  if (forceInstall || !isDependenciesInstalled) {\n    await installDependencies(config, { appDir, projectDir, workspaceRoot }, effectiveOptions, env)\n  } else {\n    await rebuild(config, { appDir, projectDir, workspaceRoot }, effectiveOptions)\n  }\n}\n\nexport interface DesktopFrameworkInfo {\n  version: string\n  useCustomDist: boolean\n}\n\nfunction getElectronGypCacheDir() {\n  return path.join(homedir(), \".electron-gyp\")\n}\n\nexport function getGypEnv(frameworkInfo: DesktopFrameworkInfo, platform: NodeJS.Platform, arch: string, buildFromSource: boolean) {\n  const npmConfigArch = arch === \"armv7l\" ? \"arm\" : arch\n  const common: any = {\n    ...process.env,\n    npm_config_arch: npmConfigArch,\n    npm_config_target_arch: npmConfigArch,\n    npm_config_platform: platform,\n    npm_config_build_from_source: buildFromSource,\n    // required for node-pre-gyp\n    npm_config_target_platform: platform,\n    npm_config_update_binary: true,\n    npm_config_fallback_to_build: true,\n  }\n\n  if (platform !== process.platform) {\n    common.npm_config_force = \"true\"\n  }\n  if (platform === \"win32\" || platform === \"darwin\") {\n    common.npm_config_target_libc = \"unknown\"\n  }\n\n  if (!frameworkInfo.useCustomDist) {\n    return common\n  }\n\n  // https://github.com/nodejs/node-gyp/issues/21\n  return {\n    ...common,\n    npm_config_disturl: common.npm_config_electron_mirror || \"https://electronjs.org/headers\",\n    npm_config_target: frameworkInfo.version,\n    npm_config_runtime: \"electron\",\n    npm_config_devdir: getElectronGypCacheDir(),\n  }\n}\n\nexport async function installDependencies(\n  config: Configuration,\n  { appDir, projectDir, workspaceRoot }: DirectoryPaths,\n  options: RebuildOptions,\n  env: NodeJS.ProcessEnv\n): Promise<any> {\n  const platform = options.platform || process.platform\n  const arch = options.arch || process.arch\n  const additionalArgs = options.additionalArgs\n\n  const searchPaths = [projectDir, appDir].concat(workspaceRoot ? [workspaceRoot] : [])\n  const { pm, resolvedDirectory: _resolvedWorkspaceDir } = await detectPackageManager(searchPaths)\n\n  log.info({ pm, platform, arch, projectDir, appDir, workspaceRoot: _resolvedWorkspaceDir }, \"installing dependencies\")\n\n  const execArgs = [\"install\"]\n  if (pm === PM.YARN) {\n    execArgs.push(\"--prefer-offline\")\n  } else if (pm === PM.YARN_BERRY) {\n    if (process.env.NPM_NO_BIN_LINKS === \"true\") {\n      execArgs.push(\"--no-bin-links\")\n    }\n  }\n\n  const execPath = getPackageManagerCommand(pm)\n\n  if (additionalArgs != null) {\n    execArgs.push(...additionalArgs)\n  }\n\n  await spawn(execPath, execArgs, {\n    cwd: appDir,\n    env: {\n      ...getGypEnv(options.frameworkInfo, platform, arch, options.buildFromSource === true),\n      ...env,\n    },\n  })\n\n  // Some native dependencies no longer use `install` hook for building their native module, (yarn 3+ removed implicit link of `install` and `rebuild` steps)\n  // https://github.com/electron-userland/electron-builder/issues/8024\n  return rebuild(config, { appDir, projectDir, workspaceRoot }, options)\n}\n\nexport async function nodeGypRebuild(platform: NodeJS.Platform, arch: string, frameworkInfo: DesktopFrameworkInfo) {\n  log.info({ platform, arch }, \"executing node-gyp rebuild\")\n  // this script must be used only for electron\n  const nodeGyp = process.platform === \"win32\" ? which.sync(\"node-gyp\") : \"node-gyp\"\n  const args = [\"rebuild\"]\n  // headers of old Electron versions do not have a valid config.gypi file\n  // and --force-process-config must be passed to node-gyp >= 8.4.0 to\n  // correctly build modules for them.\n  // see also https://github.com/nodejs/node-gyp/pull/2497\n  const [major, minor] = frameworkInfo.version\n    .split(\".\")\n    .slice(0, 2)\n    .map(n => parseInt(n, 10))\n  if (major <= 13 || (major == 14 && minor <= 1) || (major == 15 && minor <= 2)) {\n    args.push(\"--force-process-config\")\n  }\n  await spawn(nodeGyp, args, { env: getGypEnv(frameworkInfo, platform, arch, true) })\n}\nexport interface RebuildOptions {\n  frameworkInfo: DesktopFrameworkInfo\n  productionDeps: Lazy<Array<NodeModuleDirInfo>>\n\n  platform?: NodeJS.Platform\n  arch?: string\n\n  buildFromSource?: boolean\n\n  additionalArgs?: Array<string> | null\n}\n\nexport interface DirectoryPaths {\n  appDir: string\n  projectDir: string\n  workspaceRoot: string | Nullish\n}\n\n/** @internal */\nexport async function rebuild(config: Configuration, { appDir, projectDir, workspaceRoot }: DirectoryPaths, options: RebuildOptions) {\n  const buildFromSource = options.buildFromSource === true\n  const platform = options.platform || process.platform\n  const arch = options.arch || process.arch\n\n  if (config.nativeRebuilder === \"legacy\") {\n    const configuration = {\n      platform,\n      arch,\n      buildFromSource,\n      dependencies: await options.productionDeps.value,\n      nodeExecPath: process.execPath,\n      additionalArgs: options.additionalArgs,\n      execPath: process.env.npm_execpath || process.env.NPM_CLI_JS,\n    }\n    const env = getGypEnv(options.frameworkInfo, platform, arch, buildFromSource)\n    return executeAppBuilderAndWriteJson([\"rebuild-node-modules\"], configuration, { env, cwd: appDir })\n  }\n\n  const {\n    frameworkInfo: { version: electronVersion },\n  } = options\n  const projectRootPath = workspaceRoot || projectDir || appDir\n  const logInfo = {\n    electronVersion,\n    arch,\n    buildFromSource,\n    workspaceRoot,\n    projectDir: log.filePath(projectDir) || \"./\",\n    appDir: log.filePath(appDir) || \"./\",\n  }\n  log.info(logInfo, \"executing @electron/rebuild\")\n\n  const rebuildOptions: ElectronRebuildOptions = {\n    buildPath: appDir,\n    electronVersion,\n    arch,\n    platform,\n    buildFromSource,\n    projectRootPath,\n    mode: config.nativeRebuilder || \"sequential\",\n    disablePreGypCopy: true,\n  }\n  return remoteRebuild(rebuildOptions)\n}\n"]}