{
  "version": 3,
  "sources": ["../../../../src/packages/tools.plugin-commands-self-updater/selfUpdate.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport { docsUrl } from '../cli-utils/index.ts';\nimport { packageManager, isExecutedByCorepack } from '../cli-meta/index.ts';\nimport { createResolver } from '../client/index.ts';\nimport { pickRegistryForPackage } from '../pick-registry-for-package/index.ts';\nimport { type Config, types as allTypes } from '../config/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport { globalWarn } from '../logger/index.ts';\nimport { readProjectManifest } from '../read-project-manifest/index.ts';\nimport { linkBins } from '../link-bins/index.ts';\nimport pick from 'ramda/src/pick';\nimport renderHelp from 'render-help';\nimport { installPnpmToTools } from './installPnpmToTools.ts';\nimport type { ModulesDir } from '../types/project.ts';\n\nexport function rcOptionsTypes(): Record<string, unknown> {\n  return pick.default([], allTypes);\n}\n\nexport function cliOptionsTypes(): Record<string, unknown> {\n  return {\n    ...rcOptionsTypes(),\n  };\n}\n\nexport const commandNames = ['self-update'];\n\nexport function help(): string {\n  return renderHelp({\n    description: 'Updates pnpm to the latest version (or the one specified)',\n    descriptionLists: [],\n    url: docsUrl('self-update'),\n    usages: [\n      'pnpm self-update',\n      'pnpm self-update 9',\n      'pnpm self-update next-10',\n      'pnpm self-update 9.10.0',\n    ],\n  });\n}\n\nexport type SelfUpdateCommandOptions = Pick<\n  Config,\n  | 'cacheDir'\n  | 'dir'\n  | 'lockfileDir'\n  | 'managePackageManagerVersions'\n  | 'modulesDir'\n  | 'pnpmHomeDir'\n  | 'rawConfig'\n  | 'registries'\n  | 'rootProjectManifestDir'\n  | 'wantedPackageManager'\n>;\n\nexport async function handler(\n  opts: SelfUpdateCommandOptions,\n  params: string[]\n): Promise<undefined | string> {\n  if (isExecutedByCorepack()) {\n    throw new PnpmError(\n      'CANT_SELF_UPDATE_IN_COREPACK',\n      'You should update pnpm with corepack'\n    );\n  }\n\n  const { resolve } = createResolver({ ...opts, authConfig: opts.rawConfig });\n\n  const pkgName = 'pnpm';\n\n  const pref = params[0] ?? 'latest';\n\n  const resolution = await resolve(\n    { alias: pkgName, pref },\n    {\n      lockfileDir: opts.lockfileDir, // ?? opts.dir,\n      preferredVersions: {},\n      projectDir: opts.dir,\n      registry: pickRegistryForPackage(opts.registries, pkgName, pref),\n    }\n  );\n\n  if (typeof resolution.manifest === 'undefined') {\n    throw new PnpmError(\n      'CANNOT_RESOLVE_PNPM',\n      `Cannot find \"${pref}\" version of pnpm`\n    );\n  }\n\n  if (resolution.manifest.version === packageManager.version) {\n    return `The currently active ${packageManager.name} v${packageManager.version} is already \"${pref}\" and doesn't need an update`;\n  }\n\n  if (\n    opts.wantedPackageManager?.name === packageManager.name &&\n    opts.managePackageManagerVersions\n  ) {\n    const { manifest, writeProjectManifest } = await readProjectManifest(\n      opts.rootProjectManifestDir\n    );\n\n    manifest.packageManager = `pnpm@${resolution.manifest.version}`;\n\n    await writeProjectManifest(manifest);\n\n    return `The current project has been updated to use pnpm v${resolution.manifest.version}`;\n  }\n\n  const { baseDir, alreadyExisted } = await installPnpmToTools(\n    resolution.manifest.version,\n    opts\n  );\n\n  await linkBins(\n    path.join(baseDir, opts.modulesDir ?? 'node_modules') as ModulesDir,\n    opts.pnpmHomeDir,\n    {\n      warn: globalWarn,\n    }\n  );\n\n  return alreadyExisted\n    ? `The ${pref} version, v${resolution.manifest.version}, is already present on the system. It was activated by linking it from ${baseDir}.`\n    : undefined;\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB,SAAS,eAAe;AACxB,SAAS,gBAAgB,4BAA4B;AACrD,SAAS,sBAAsB;AAC/B,SAAS,8BAA8B;AACvC,SAAsB,SAAS,gBAAgB;AAC/C,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AACzB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,0BAA0B;AAG5B,SAAS,iBAA0C;AACxD,SAAO,KAAK,QAAQ,CAAC,GAAG,QAAQ;AAClC;AAEO,SAAS,kBAA2C;AACzD,SAAO;AAAA,IACL,GAAG,eAAe;AAAA,EACpB;AACF;AAEO,MAAM,eAAe,CAAC,aAAa;AAEnC,SAAS,OAAe;AAC7B,SAAO,WAAW;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB,CAAC;AAAA,IACnB,KAAK,QAAQ,aAAa;AAAA,IAC1B,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAgBA,eAAsB,QACpB,MACA,QAC6B;AAC7B,MAAI,qBAAqB,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,IAAI,eAAe,EAAE,GAAG,MAAM,YAAY,KAAK,UAAU,CAAC;AAE1E,QAAM,UAAU;AAEhB,QAAM,OAAO,OAAO,CAAC,KAAK;AAE1B,QAAM,aAAa,MAAM;AAAA,IACvB,EAAE,OAAO,SAAS,KAAK;AAAA,IACvB;AAAA,MACE,aAAa,KAAK;AAAA;AAAA,MAClB,mBAAmB,CAAC;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,UAAU,uBAAuB,KAAK,YAAY,SAAS,IAAI;AAAA,IACjE;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,aAAa,aAAa;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,gBAAgB,IAAI;AAAA,IACtB;AAAA,EACF;AAEA,MAAI,WAAW,SAAS,YAAY,eAAe,SAAS;AAC1D,WAAO,wBAAwB,eAAe,IAAI,KAAK,eAAe,OAAO,gBAAgB,IAAI;AAAA,EACnG;AAEA,MACE,KAAK,sBAAsB,SAAS,eAAe,QACnD,KAAK,8BACL;AACA,UAAM,EAAE,UAAU,qBAAqB,IAAI,MAAM;AAAA,MAC/C,KAAK;AAAA,IACP;AAEA,aAAS,iBAAiB,QAAQ,WAAW,SAAS,OAAO;AAE7D,UAAM,qBAAqB,QAAQ;AAEnC,WAAO,qDAAqD,WAAW,SAAS,OAAO;AAAA,EACzF;AAEA,QAAM,EAAE,SAAS,eAAe,IAAI,MAAM;AAAA,IACxC,WAAW,SAAS;AAAA,IACpB;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,KAAK,KAAK,SAAS,KAAK,cAAc,cAAc;AAAA,IACpD,KAAK;AAAA,IACL;AAAA,MACE,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO,iBACH,OAAO,IAAI,cAAc,WAAW,SAAS,OAAO,2EAA2E,OAAO,MACtI;AACN;",
  "names": []
}
