@pnpm/core 6.0.2 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/lib/api.d.ts +0 -2
  2. package/lib/api.js +1 -6
  3. package/lib/api.js.map +1 -1
  4. package/lib/getPeerDependencyIssues.js +6 -31
  5. package/lib/getPeerDependencyIssues.js.map +1 -1
  6. package/lib/install/allProjectsAreUpToDate.d.ts +1 -1
  7. package/lib/install/allProjectsAreUpToDate.js +3 -2
  8. package/lib/install/allProjectsAreUpToDate.js.map +1 -1
  9. package/lib/install/extendInstallOptions.d.ts +3 -2
  10. package/lib/install/extendInstallOptions.js +12 -36
  11. package/lib/install/extendInstallOptions.js.map +1 -1
  12. package/lib/install/index.d.ts +12 -7
  13. package/lib/install/index.js +114 -99
  14. package/lib/install/index.js.map +1 -1
  15. package/lib/install/link.d.ts +1 -1
  16. package/lib/install/link.js +11 -33
  17. package/lib/install/link.js.map +1 -1
  18. package/lib/install/reportPeerDependencyIssues.d.ts +2 -2
  19. package/lib/install/reportPeerDependencyIssues.js +5 -5
  20. package/lib/install/reportPeerDependencyIssues.js.map +1 -1
  21. package/lib/link/index.d.ts +1 -1
  22. package/lib/link/index.js +8 -30
  23. package/lib/link/index.js.map +1 -1
  24. package/lib/link/options.js +2 -25
  25. package/lib/link/options.js.map +1 -1
  26. package/lib/parseWantedDependencies.d.ts +1 -1
  27. package/lib/parseWantedDependencies.js +6 -8
  28. package/lib/parseWantedDependencies.js.map +1 -1
  29. package/lib/pnpmPkgJson.d.ts +2 -2
  30. package/lib/pnpmPkgJson.js +5 -4
  31. package/lib/pnpmPkgJson.js.map +1 -1
  32. package/lib/uninstall/removeDeps.d.ts +1 -1
  33. package/lib/uninstall/removeDeps.js +3 -2
  34. package/lib/uninstall/removeDeps.js.map +1 -1
  35. package/package.json +41 -41
  36. package/lib/err.d.ts +0 -1
  37. package/lib/err.js +0 -15
  38. package/lib/err.js.map +0 -1
@@ -1,53 +1,30 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.addDependenciesToPackage = exports.createObjectChecksum = exports.mutateModules = exports.install = void 0;
6
+ exports.addDependenciesToPackage = exports.createObjectChecksum = exports.mutateModules = exports.mutateModulesInSingleProject = exports.install = void 0;
30
7
  const crypto_1 = __importDefault(require("crypto"));
31
8
  const path_1 = __importDefault(require("path"));
32
- const build_modules_1 = __importStar(require("@pnpm/build-modules"));
9
+ const build_modules_1 = require("@pnpm/build-modules");
33
10
  const constants_1 = require("@pnpm/constants");
34
11
  const core_loggers_1 = require("@pnpm/core-loggers");
35
12
  const crypto_base32_hash_1 = require("@pnpm/crypto.base32-hash");
36
- const error_1 = __importDefault(require("@pnpm/error"));
37
- const get_context_1 = __importDefault(require("@pnpm/get-context"));
38
- const headless_1 = __importDefault(require("@pnpm/headless"));
39
- const lifecycle_1 = __importStar(require("@pnpm/lifecycle"));
40
- const link_bins_1 = __importStar(require("@pnpm/link-bins"));
13
+ const error_1 = require("@pnpm/error");
14
+ const get_context_1 = require("@pnpm/get-context");
15
+ const headless_1 = require("@pnpm/headless");
16
+ const lifecycle_1 = require("@pnpm/lifecycle");
17
+ const link_bins_1 = require("@pnpm/link-bins");
41
18
  const lockfile_file_1 = require("@pnpm/lockfile-file");
42
19
  const lockfile_to_pnp_1 = require("@pnpm/lockfile-to-pnp");
43
20
  const lockfile_utils_1 = require("@pnpm/lockfile-utils");
44
- const logger_1 = __importStar(require("@pnpm/logger"));
21
+ const logger_1 = require("@pnpm/logger");
45
22
  const manifest_utils_1 = require("@pnpm/manifest-utils");
46
23
  const modules_yaml_1 = require("@pnpm/modules-yaml");
47
- const read_modules_dir_1 = __importDefault(require("@pnpm/read-modules-dir"));
24
+ const read_modules_dir_1 = require("@pnpm/read-modules-dir");
48
25
  const read_project_manifest_1 = require("@pnpm/read-project-manifest");
49
26
  const remove_bins_1 = require("@pnpm/remove-bins");
50
- const resolve_dependencies_1 = __importStar(require("@pnpm/resolve-dependencies"));
27
+ const resolve_dependencies_1 = require("@pnpm/resolve-dependencies");
51
28
  const rimraf_1 = __importDefault(require("@zkochan/rimraf"));
52
29
  const is_inner_link_1 = __importDefault(require("is-inner-link"));
53
30
  const p_filter_1 = __importDefault(require("p-filter"));
@@ -59,49 +36,66 @@ const isEmpty_1 = __importDefault(require("ramda/src/isEmpty"));
59
36
  const pipeWith_1 = __importDefault(require("ramda/src/pipeWith"));
60
37
  const props_1 = __importDefault(require("ramda/src/props"));
61
38
  const unnest_1 = __importDefault(require("ramda/src/unnest"));
62
- const parseWantedDependencies_1 = __importDefault(require("../parseWantedDependencies"));
63
- const removeDeps_1 = __importDefault(require("../uninstall/removeDeps"));
64
- const allProjectsAreUpToDate_1 = __importDefault(require("./allProjectsAreUpToDate"));
65
- const extendInstallOptions_1 = __importDefault(require("./extendInstallOptions"));
39
+ const parseWantedDependencies_1 = require("../parseWantedDependencies");
40
+ const removeDeps_1 = require("../uninstall/removeDeps");
41
+ const allProjectsAreUpToDate_1 = require("./allProjectsAreUpToDate");
42
+ const extendInstallOptions_1 = require("./extendInstallOptions");
66
43
  const getPreferredVersions_1 = require("./getPreferredVersions");
67
- const link_1 = __importDefault(require("./link"));
68
- const reportPeerDependencyIssues_1 = __importDefault(require("./reportPeerDependencyIssues"));
44
+ const link_1 = require("./link");
45
+ const reportPeerDependencyIssues_1 = require("./reportPeerDependencyIssues");
69
46
  const BROKEN_LOCKFILE_INTEGRITY_ERRORS = new Set([
70
47
  'ERR_PNPM_UNEXPECTED_PKG_CONTENT_IN_STORE',
71
48
  'ERR_PNPM_TARBALL_INTEGRITY',
72
49
  ]);
73
50
  const DEV_PREINSTALL = 'pnpm:devPreinstall';
74
51
  async function install(manifest, opts) {
52
+ const rootDir = opts.dir ?? process.cwd();
75
53
  const projects = await mutateModules([
76
54
  {
77
- buildIndex: 0,
78
- manifest,
79
55
  mutation: 'install',
80
56
  pruneDirectDependencies: opts.pruneDirectDependencies,
81
- rootDir: opts.dir ?? process.cwd(),
57
+ rootDir,
82
58
  },
83
- ], opts);
59
+ ], {
60
+ ...opts,
61
+ allProjects: [{
62
+ buildIndex: 0,
63
+ manifest,
64
+ rootDir,
65
+ }],
66
+ });
84
67
  return projects[0].manifest;
85
68
  }
86
69
  exports.install = install;
70
+ async function mutateModulesInSingleProject(project, maybeOpts) {
71
+ const [updatedProject] = await mutateModules([project], {
72
+ ...maybeOpts,
73
+ allProjects: [{
74
+ buildIndex: 0,
75
+ ...project,
76
+ }],
77
+ });
78
+ return updatedProject;
79
+ }
80
+ exports.mutateModulesInSingleProject = mutateModulesInSingleProject;
87
81
  async function mutateModules(projects, maybeOpts) {
88
82
  const reporter = maybeOpts?.reporter;
89
83
  if ((reporter != null) && typeof reporter === 'function') {
90
84
  logger_1.streamParser.on('data', reporter);
91
85
  }
92
- const opts = await (0, extendInstallOptions_1.default)(maybeOpts);
86
+ const opts = await (0, extendInstallOptions_1.extendOptions)(maybeOpts);
93
87
  if (!opts.include.dependencies && opts.include.optionalDependencies) {
94
- throw new error_1.default('OPTIONAL_DEPS_REQUIRE_PROD_DEPS', 'Optional dependencies cannot be installed without production dependencies');
88
+ throw new error_1.PnpmError('OPTIONAL_DEPS_REQUIRE_PROD_DEPS', 'Optional dependencies cannot be installed without production dependencies');
95
89
  }
96
90
  const installsOnly = projects.every((project) => project.mutation === 'install');
97
91
  if (!installsOnly)
98
92
  opts.strictPeerDependencies = false;
99
93
  opts['forceNewModules'] = installsOnly;
100
- const rootProjectManifest = projects.find(({ rootDir }) => rootDir === opts.lockfileDir)?.manifest ??
94
+ const rootProjectManifest = opts.allProjects.find(({ rootDir }) => rootDir === opts.lockfileDir)?.manifest ??
101
95
  // When running install/update on a subset of projects, the root project might not be included,
102
96
  // so reading its manifest explicitly here.
103
97
  await (0, read_project_manifest_1.safeReadProjectManifestOnly)(opts.lockfileDir);
104
- const ctx = await (0, get_context_1.default)(projects, opts);
98
+ const ctx = await (0, get_context_1.getContext)(opts);
105
99
  if (opts.hooks.preResolution) {
106
100
  await opts.hooks.preResolution({
107
101
  currentLockfile: ctx.currentLockfile,
@@ -116,7 +110,7 @@ async function mutateModules(projects, maybeOpts) {
116
110
  ? cacheExpired(ctx.modulesFile.prunedAt, opts.modulesCacheMaxAge)
117
111
  : true;
118
112
  if (!maybeOpts.ignorePackageManifest) {
119
- for (const { manifest, rootDir } of ctx.projects) {
113
+ for (const { manifest, rootDir } of Object.values(ctx.projects)) {
120
114
  if (!manifest) {
121
115
  throw new Error(`No package.json found in "${rootDir}"`);
122
116
  }
@@ -146,7 +140,7 @@ async function mutateModules(projects, maybeOpts) {
146
140
  unsafePerm: opts.unsafePerm || false,
147
141
  };
148
142
  if (!opts.ignoreScripts && !opts.ignorePackageManifest && rootProjectManifest?.scripts?.[DEV_PREINSTALL]) {
149
- await (0, lifecycle_1.default)(DEV_PREINSTALL, rootProjectManifest, {
143
+ await (0, lifecycle_1.runLifecycleHook)(DEV_PREINSTALL, rootProjectManifest, {
150
144
  ...scriptsOpts,
151
145
  depPath: opts.lockfileDir,
152
146
  pkgRoot: opts.lockfileDir,
@@ -189,37 +183,37 @@ async function mutateModules(projects, maybeOpts) {
189
183
  opts.ignorePackageManifest ||
190
184
  !needsFullResolution &&
191
185
  opts.preferFrozenLockfile &&
192
- (!opts.pruneLockfileImporters || Object.keys(ctx.wantedLockfile.importers).length === ctx.projects.length) &&
186
+ (!opts.pruneLockfileImporters || Object.keys(ctx.wantedLockfile.importers).length === Object.keys(ctx.projects).length) &&
193
187
  ctx.existsWantedLockfile &&
194
188
  ctx.wantedLockfile.lockfileVersion === constants_1.LOCKFILE_VERSION &&
195
- await (0, allProjectsAreUpToDate_1.default)(ctx.projects, {
189
+ await (0, allProjectsAreUpToDate_1.allProjectsAreUpToDate)(Object.values(ctx.projects), {
196
190
  autoInstallPeers: opts.autoInstallPeers,
197
191
  linkWorkspacePackages: opts.linkWorkspacePackagesDepth >= 0,
198
192
  wantedLockfile: ctx.wantedLockfile,
199
193
  workspacePackages: opts.workspacePackages,
200
194
  }))) {
201
195
  if (needsFullResolution) {
202
- throw new error_1.default('FROZEN_LOCKFILE_WITH_OUTDATED_LOCKFILE', 'Cannot perform a frozen installation because the lockfile needs updates', {
196
+ throw new error_1.PnpmError('FROZEN_LOCKFILE_WITH_OUTDATED_LOCKFILE', 'Cannot perform a frozen installation because the lockfile needs updates', {
203
197
  hint: 'Note that in CI environments this setting is true by default. If you still need to run install in such cases, use "pnpm install --no-frozen-lockfile"',
204
198
  });
205
199
  }
206
200
  if (opts.lockfileOnly) {
207
- return projects;
201
+ return projects.map((mutatedProject) => ctx.projects[mutatedProject.rootDir]);
208
202
  }
209
203
  if (!ctx.existsWantedLockfile) {
210
- if (ctx.projects.some((project) => pkgHasDependencies(project.manifest))) {
204
+ if (Object.values(ctx.projects).some((project) => pkgHasDependencies(project.manifest))) {
211
205
  throw new Error(`Headless installation requires a ${constants_1.WANTED_LOCKFILE} file`);
212
206
  }
213
207
  }
214
208
  else {
215
209
  if (maybeOpts.ignorePackageManifest) {
216
- logger_1.default.info({ message: 'Importing packages to virtual store', prefix: opts.lockfileDir });
210
+ logger_1.logger.info({ message: 'Importing packages to virtual store', prefix: opts.lockfileDir });
217
211
  }
218
212
  else {
219
- logger_1.default.info({ message: 'Lockfile is up to date, resolution step is skipped', prefix: opts.lockfileDir });
213
+ logger_1.logger.info({ message: 'Lockfile is up to date, resolution step is skipped', prefix: opts.lockfileDir });
220
214
  }
221
215
  try {
222
- await (0, headless_1.default)({
216
+ await (0, headless_1.headlessInstall)({
223
217
  ...ctx,
224
218
  ...opts,
225
219
  currentEngine: {
@@ -227,7 +221,8 @@ async function mutateModules(projects, maybeOpts) {
227
221
  pnpmVersion: opts.packageManager.name === 'pnpm' ? opts.packageManager.version : '',
228
222
  },
229
223
  patchedDependencies: patchedDependenciesWithResolvedPath,
230
- projects: ctx.projects,
224
+ selectedProjectDirs: projects.map((project) => project.rootDir),
225
+ allProjects: ctx.projects,
231
226
  prunedAt: ctx.modulesFile?.prunedAt,
232
227
  pruneVirtualStore,
233
228
  wantedLockfile: maybeOpts.ignorePackageManifest ? undefined : ctx.wantedLockfile,
@@ -244,7 +239,13 @@ async function mutateModules(projects, maybeOpts) {
244
239
  mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
245
240
  });
246
241
  }
247
- return projects;
242
+ return projects.map((mutatedProject) => {
243
+ const project = ctx.projects[mutatedProject.rootDir];
244
+ return {
245
+ ...project,
246
+ manifest: project.originalManifest ?? project.manifest,
247
+ };
248
+ });
248
249
  }
249
250
  catch (error) { // eslint-disable-line
250
251
  if (frozenLockfile ||
@@ -256,24 +257,28 @@ async function mutateModules(projects, maybeOpts) {
256
257
  opts.update = true;
257
258
  }
258
259
  // A broken lockfile may be caused by a badly resolved Git conflict
259
- logger_1.default.warn({
260
+ logger_1.logger.warn({
260
261
  error,
261
262
  message: error.message,
262
263
  prefix: ctx.lockfileDir,
263
264
  });
264
- logger_1.default.error(new error_1.default(error.code, 'The lockfile is broken! Resolution step will be performed to fix it.'));
265
+ logger_1.logger.error(new error_1.PnpmError(error.code, 'The lockfile is broken! Resolution step will be performed to fix it.'));
265
266
  }
266
267
  }
267
268
  }
268
269
  const projectsToInstall = [];
269
270
  let preferredSpecs = null;
270
271
  // TODO: make it concurrent
271
- for (const project of ctx.projects) {
272
+ for (const project of projects) {
273
+ const projectOpts = {
274
+ ...project,
275
+ ...ctx.projects[project.rootDir],
276
+ };
272
277
  switch (project.mutation) {
273
278
  case 'uninstallSome':
274
279
  projectsToInstall.push({
275
280
  pruneDirectDependencies: false,
276
- ...project,
281
+ ...projectOpts,
277
282
  removePackages: project.dependencyNames,
278
283
  updatePackageManifest: true,
279
284
  wantedDependencies: [],
@@ -281,46 +286,47 @@ async function mutateModules(projects, maybeOpts) {
281
286
  break;
282
287
  case 'install': {
283
288
  await installCase({
284
- ...project,
289
+ ...projectOpts,
285
290
  updatePackageManifest: opts.updatePackageManifest ?? opts.update,
286
291
  });
287
292
  break;
288
293
  }
289
294
  case 'installSome': {
290
295
  await installSome({
291
- ...project,
296
+ ...projectOpts,
292
297
  updatePackageManifest: opts.updatePackageManifest !== false,
293
298
  });
294
299
  break;
295
300
  }
296
301
  case 'unlink': {
297
- const packageDirs = await (0, read_modules_dir_1.default)(project.modulesDir);
298
- const externalPackages = await (0, p_filter_1.default)(packageDirs, async (packageDir) => isExternalLink(ctx.storeDir, project.modulesDir, packageDir));
299
- const allDeps = (0, manifest_utils_1.getAllDependenciesFromManifest)(project.manifest);
302
+ const packageDirs = await (0, read_modules_dir_1.readModulesDir)(projectOpts.modulesDir);
303
+ const externalPackages = await (0, p_filter_1.default)(packageDirs, async (packageDir) => isExternalLink(ctx.storeDir, projectOpts.modulesDir, packageDir));
304
+ const allDeps = (0, manifest_utils_1.getAllDependenciesFromManifest)(projectOpts.manifest);
300
305
  const packagesToInstall = [];
301
306
  for (const pkgName of externalPackages) {
302
- await (0, rimraf_1.default)(path_1.default.join(project.modulesDir, pkgName));
307
+ await (0, rimraf_1.default)(path_1.default.join(projectOpts.modulesDir, pkgName));
303
308
  if (allDeps[pkgName]) {
304
309
  packagesToInstall.push(pkgName);
305
310
  }
306
311
  }
307
- if (packagesToInstall.length === 0)
308
- return projects;
312
+ if (packagesToInstall.length === 0) {
313
+ return projects.map((mutatedProject) => ctx.projects[mutatedProject.rootDir]);
314
+ }
309
315
  // TODO: install only those that were unlinked
310
316
  // but don't update their version specs in package.json
311
- await installCase({ ...project, mutation: 'install' });
317
+ await installCase({ ...projectOpts, mutation: 'install' });
312
318
  break;
313
319
  }
314
320
  case 'unlinkSome': {
315
- if (project.manifest?.name && opts.globalBin) {
316
- await (0, remove_bins_1.removeBin)(path_1.default.join(opts.globalBin, project.manifest?.name));
321
+ if (projectOpts.manifest?.name && opts.globalBin) {
322
+ await (0, remove_bins_1.removeBin)(path_1.default.join(opts.globalBin, projectOpts.manifest?.name));
317
323
  }
318
324
  const packagesToInstall = [];
319
- const allDeps = (0, manifest_utils_1.getAllDependenciesFromManifest)(project.manifest);
325
+ const allDeps = (0, manifest_utils_1.getAllDependenciesFromManifest)(projectOpts.manifest);
320
326
  for (const depName of project.dependencyNames) {
321
327
  try {
322
- if (!await isExternalLink(ctx.storeDir, project.modulesDir, depName)) {
323
- logger_1.default.warn({
328
+ if (!await isExternalLink(ctx.storeDir, projectOpts.modulesDir, depName)) {
329
+ logger_1.logger.warn({
324
330
  message: `${depName} is not an external link`,
325
331
  prefix: project.rootDir,
326
332
  });
@@ -331,17 +337,18 @@ async function mutateModules(projects, maybeOpts) {
331
337
  if (err['code'] !== 'ENOENT')
332
338
  throw err;
333
339
  }
334
- await (0, rimraf_1.default)(path_1.default.join(project.modulesDir, depName));
340
+ await (0, rimraf_1.default)(path_1.default.join(projectOpts.modulesDir, depName));
335
341
  if (allDeps[depName]) {
336
342
  packagesToInstall.push(depName);
337
343
  }
338
344
  }
339
- if (packagesToInstall.length === 0)
340
- return projects;
345
+ if (packagesToInstall.length === 0) {
346
+ return projects.map((mutatedProject) => ctx.projects[mutatedProject.rootDir]);
347
+ }
341
348
  // TODO: install only those that were unlinked
342
349
  // but don't update their version specs in package.json
343
350
  await installSome({
344
- ...project,
351
+ ...projectOpts,
345
352
  dependencySelectors: packagesToInstall,
346
353
  mutation: 'installSome',
347
354
  updatePackageManifest: false,
@@ -381,7 +388,7 @@ async function mutateModules(projects, maybeOpts) {
381
388
  if (preferredSpecs == null) {
382
389
  preferredSpecs = (0, getPreferredVersions_1.getAllUniqueSpecs)((0, flatten_1.default)(Object.values(opts.workspacePackages).map(obj => Object.values(obj))).map(({ manifest }) => manifest));
383
390
  }
384
- const wantedDeps = (0, parseWantedDependencies_1.default)(project.dependencySelectors, {
391
+ const wantedDeps = (0, parseWantedDependencies_1.parseWantedDependencies)(project.dependencySelectors, {
385
392
  allowNew: project.allowNew !== false,
386
393
  currentPrefs,
387
394
  defaultTag: opts.tag,
@@ -472,28 +479,35 @@ function forgetResolutionsOfPrevWantedDeps(importer, wantedDeps) {
472
479
  }
473
480
  }
474
481
  async function addDependenciesToPackage(manifest, dependencySelectors, opts) {
482
+ const rootDir = opts.dir ?? process.cwd();
475
483
  const projects = await mutateModules([
476
484
  {
477
- binsDir: opts.bin,
478
485
  allowNew: opts.allowNew,
479
486
  dependencySelectors,
480
- manifest,
481
487
  mutation: 'installSome',
482
488
  peer: opts.peer,
483
489
  pinnedVersion: opts.pinnedVersion,
484
- rootDir: opts.dir ?? process.cwd(),
490
+ rootDir,
485
491
  targetDependenciesField: opts.targetDependenciesField,
486
492
  },
487
493
  ], {
488
494
  ...opts,
489
495
  lockfileDir: opts.lockfileDir ?? opts.dir,
496
+ allProjects: [
497
+ {
498
+ buildIndex: 0,
499
+ binsDir: opts.bin,
500
+ manifest,
501
+ rootDir,
502
+ },
503
+ ],
490
504
  });
491
505
  return projects[0].manifest;
492
506
  }
493
507
  exports.addDependenciesToPackage = addDependenciesToPackage;
494
508
  const _installInContext = async (projects, ctx, opts) => {
495
509
  if (opts.lockfileOnly && ctx.existsCurrentLockfile) {
496
- logger_1.default.warn({
510
+ logger_1.logger.warn({
497
511
  message: '`node_modules` is present. Lockfile only installation will make it out-of-date',
498
512
  prefix: ctx.lockfileDir,
499
513
  });
@@ -516,7 +530,7 @@ const _installInContext = async (projects, ctx, opts) => {
516
530
  .map(async (project) => {
517
531
  if (project.mutation !== 'uninstallSome')
518
532
  return;
519
- const _removeDeps = async (manifest) => (0, removeDeps_1.default)(manifest, project.dependencyNames, { prefix: project.rootDir, saveType: project.targetDependenciesField });
533
+ const _removeDeps = async (manifest) => (0, removeDeps_1.removeDeps)(manifest, project.dependencyNames, { prefix: project.rootDir, saveType: project.targetDependenciesField });
520
534
  project.manifest = await _removeDeps(project.manifest);
521
535
  if (project.originalManifest != null) {
522
536
  project.originalManifest = await _removeDeps(project.originalManifest);
@@ -552,7 +566,7 @@ const _installInContext = async (projects, ctx, opts) => {
552
566
  },
553
567
  }), {});
554
568
  }
555
- let { dependenciesGraph, dependenciesByProjectId, finishLockfileUpdates, linkedDependenciesByProjectId, newLockfile, outdatedDependencies, peerDependencyIssuesByProjects, wantedToBeSkippedPackageIds, waitTillAllFetchingsFinish, } = await (0, resolve_dependencies_1.default)(projects, {
569
+ let { dependenciesGraph, dependenciesByProjectId, finishLockfileUpdates, linkedDependenciesByProjectId, newLockfile, outdatedDependencies, peerDependencyIssuesByProjects, wantedToBeSkippedPackageIds, waitTillAllFetchingsFinish, } = await (0, resolve_dependencies_1.resolveDependencies)(projects, {
556
570
  allowBuild: createAllowBuildFunction(opts),
557
571
  allowedDeprecatedVersions: opts.allowedDeprecatedVersions,
558
572
  allowNonAppliedPatches: opts.allowNonAppliedPatches,
@@ -623,7 +637,7 @@ const _installInContext = async (projects, ctx, opts) => {
623
637
  mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
624
638
  };
625
639
  if (!opts.lockfileOnly && opts.enableModulesDir) {
626
- const result = await (0, link_1.default)(projects, dependenciesGraph, {
640
+ const result = await (0, link_1.linkPackages)(projects, dependenciesGraph, {
627
641
  currentLockfile: ctx.currentLockfile,
628
642
  dependenciesByProjectId,
629
643
  depsStateCache,
@@ -685,7 +699,7 @@ const _installInContext = async (projects, ctx, opts) => {
685
699
  ...(0, lifecycle_1.makeNodeRequireOption)(path_1.default.join(opts.lockfileDir, '.pnp.cjs')),
686
700
  };
687
701
  }
688
- await (0, build_modules_1.default)(dependenciesGraph, rootNodes, {
702
+ await (0, build_modules_1.buildModules)(dependenciesGraph, rootNodes, {
689
703
  childConcurrency: opts.childConcurrency,
690
704
  depsStateCache,
691
705
  depsToBuild: new Set(result.newDepPaths),
@@ -708,7 +722,7 @@ const _installInContext = async (projects, ctx, opts) => {
708
722
  });
709
723
  }
710
724
  }
711
- const binWarn = (prefix, message) => logger_1.default.info({ message, prefix });
725
+ const binWarn = (prefix, message) => logger_1.logger.info({ message, prefix });
712
726
  if (result.newDepPaths?.length) {
713
727
  const newPkgs = (0, props_1.default)(result.newDepPaths, dependenciesGraph);
714
728
  await linkAllBins(newPkgs, dependenciesGraph, {
@@ -727,7 +741,7 @@ const _installInContext = async (projects, ctx, opts) => {
727
741
  }
728
742
  return prev;
729
743
  }, {});
730
- linkedPackages = await (0, link_bins_1.default)(project.modulesDir, project.binsDir, {
744
+ linkedPackages = await (0, link_bins_1.linkBins)(project.modulesDir, project.binsDir, {
731
745
  allowExoticManifests: true,
732
746
  preferSymlinkedExecutables: opts.preferSymlinkedExecutables,
733
747
  projectManifest: project.manifest,
@@ -765,7 +779,7 @@ const _installInContext = async (projects, ctx, opts) => {
765
779
  if (opts.global && projectToInstall.mutation.includes('install')) {
766
780
  projectToInstall.wantedDependencies.forEach(pkg => {
767
781
  if (!linkedPackages?.includes(pkg.alias)) {
768
- logger_1.default.warn({ message: `${pkg.alias} has no binaries`, prefix: opts.lockfileDir });
782
+ logger_1.logger.warn({ message: `${pkg.alias ?? pkg.pref} has no binaries`, prefix: opts.lockfileDir });
769
783
  }
770
784
  });
771
785
  }
@@ -791,7 +805,7 @@ const _installInContext = async (projects, ctx, opts) => {
791
805
  injectedDeps[project.id] = project.targetDirs.map((targetDir) => path_1.default.relative(opts.lockfileDir, targetDir));
792
806
  }
793
807
  }
794
- return (0, modules_yaml_1.write)(ctx.rootModulesDir, {
808
+ return (0, modules_yaml_1.writeModulesManifest)(ctx.rootModulesDir, {
795
809
  ...ctx.modulesFile,
796
810
  hoistedDependencies: result.newHoistedDependencies,
797
811
  hoistPattern: ctx.hoistPattern,
@@ -839,7 +853,7 @@ const _installInContext = async (projects, ctx, opts) => {
839
853
  await waitTillAllFetchingsFinish();
840
854
  core_loggers_1.summaryLogger.debug({ prefix: opts.lockfileDir });
841
855
  await opts.storeController.close();
842
- (0, reportPeerDependencyIssues_1.default)(peerDependencyIssuesByProjects, {
856
+ (0, reportPeerDependencyIssues_1.reportPeerDependencyIssues)(peerDependencyIssuesByProjects, {
843
857
  lockfileDir: opts.lockfileDir,
844
858
  strictPeerDependencies: opts.strictPeerDependencies,
845
859
  });
@@ -870,14 +884,15 @@ const installInContext = async (projects, ctx, opts) => {
870
884
  ...opts,
871
885
  lockfileOnly: true,
872
886
  });
873
- await (0, headless_1.default)({
887
+ await (0, headless_1.headlessInstall)({
874
888
  ...ctx,
875
889
  ...opts,
876
890
  currentEngine: {
877
891
  nodeVersion: opts.nodeVersion,
878
892
  pnpmVersion: opts.packageManager.name === 'pnpm' ? opts.packageManager.version : '',
879
893
  },
880
- projects: ctx.projects,
894
+ selectedProjectDirs: projects.map((project) => project.rootDir),
895
+ allProjects: ctx.projects,
881
896
  prunedAt: ctx.modulesFile?.prunedAt,
882
897
  wantedLockfile: result.newLockfile,
883
898
  });
@@ -891,12 +906,12 @@ const installInContext = async (projects, ctx, opts) => {
891
906
  opts.needsFullResolution = true;
892
907
  // Ideally, we would not update but currently there is no other way to redownload the integrity of the package
893
908
  opts.update = true;
894
- logger_1.default.warn({
909
+ logger_1.logger.warn({
895
910
  error,
896
911
  message: error.message,
897
912
  prefix: ctx.lockfileDir,
898
913
  });
899
- logger_1.default.error(new error_1.default(error.code, 'The lockfile is broken! A full installation will be performed in an attempt to fix it.'));
914
+ logger_1.logger.error(new error_1.PnpmError(error.code, 'The lockfile is broken! A full installation will be performed in an attempt to fix it.'));
900
915
  return _installInContext(projects, ctx, opts);
901
916
  }
902
917
  };