nx 22.0.0-beta.5 → 22.0.0-beta.6

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 (41) hide show
  1. package/package.json +11 -11
  2. package/src/command-line/init/implementation/angular/index.d.ts.map +1 -1
  3. package/src/command-line/init/implementation/angular/index.js +4 -6
  4. package/src/command-line/migrate/migrate.d.ts.map +1 -1
  5. package/src/command-line/migrate/migrate.js +25 -8
  6. package/src/devkit-internals.d.ts +1 -0
  7. package/src/devkit-internals.d.ts.map +1 -1
  8. package/src/devkit-internals.js +3 -1
  9. package/src/plugins/js/lock-file/lock-file.d.ts.map +1 -1
  10. package/src/plugins/js/lock-file/lock-file.js +1 -1
  11. package/src/plugins/js/lock-file/pnpm-parser.d.ts +1 -1
  12. package/src/plugins/js/lock-file/pnpm-parser.d.ts.map +1 -1
  13. package/src/plugins/js/lock-file/pnpm-parser.js +12 -4
  14. package/src/plugins/js/lock-file/project-graph-pruning.d.ts +2 -2
  15. package/src/plugins/js/lock-file/project-graph-pruning.d.ts.map +1 -1
  16. package/src/plugins/js/lock-file/project-graph-pruning.js +22 -9
  17. package/src/plugins/js/package-json/create-package-json.d.ts.map +1 -1
  18. package/src/plugins/js/package-json/create-package-json.js +17 -5
  19. package/src/utils/catalog/index.d.ts +10 -0
  20. package/src/utils/catalog/index.d.ts.map +1 -0
  21. package/src/utils/catalog/index.js +38 -0
  22. package/src/utils/catalog/manager-factory.d.ts +6 -0
  23. package/src/utils/catalog/manager-factory.d.ts.map +1 -0
  24. package/src/utils/catalog/manager-factory.js +17 -0
  25. package/src/utils/catalog/manager.d.ts +40 -0
  26. package/src/utils/catalog/manager.d.ts.map +1 -0
  27. package/src/utils/catalog/manager.js +2 -0
  28. package/src/utils/catalog/pnpm-manager.d.ts +22 -0
  29. package/src/utils/catalog/pnpm-manager.d.ts.map +1 -0
  30. package/src/utils/catalog/pnpm-manager.js +257 -0
  31. package/src/utils/catalog/types.d.ts +5 -0
  32. package/src/utils/catalog/types.d.ts.map +1 -0
  33. package/src/utils/catalog/types.js +2 -0
  34. package/src/utils/package-json.d.ts +79 -0
  35. package/src/utils/package-json.d.ts.map +1 -1
  36. package/src/utils/package-json.js +81 -2
  37. package/src/utils/package-manager.d.ts.map +1 -1
  38. package/src/utils/package-manager.js +23 -6
  39. package/src/utils/pnpm-workspace.d.ts +9 -0
  40. package/src/utils/pnpm-workspace.d.ts.map +1 -0
  41. package/src/utils/pnpm-workspace.js +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "22.0.0-beta.5",
3
+ "version": "22.0.0-beta.6",
4
4
  "private": false,
5
5
  "description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
6
6
  "repository": {
@@ -83,16 +83,16 @@
83
83
  }
84
84
  },
85
85
  "optionalDependencies": {
86
- "@nx/nx-darwin-arm64": "22.0.0-beta.5",
87
- "@nx/nx-darwin-x64": "22.0.0-beta.5",
88
- "@nx/nx-freebsd-x64": "22.0.0-beta.5",
89
- "@nx/nx-linux-arm-gnueabihf": "22.0.0-beta.5",
90
- "@nx/nx-linux-arm64-gnu": "22.0.0-beta.5",
91
- "@nx/nx-linux-arm64-musl": "22.0.0-beta.5",
92
- "@nx/nx-linux-x64-gnu": "22.0.0-beta.5",
93
- "@nx/nx-linux-x64-musl": "22.0.0-beta.5",
94
- "@nx/nx-win32-arm64-msvc": "22.0.0-beta.5",
95
- "@nx/nx-win32-x64-msvc": "22.0.0-beta.5"
86
+ "@nx/nx-darwin-arm64": "22.0.0-beta.6",
87
+ "@nx/nx-darwin-x64": "22.0.0-beta.6",
88
+ "@nx/nx-freebsd-x64": "22.0.0-beta.6",
89
+ "@nx/nx-linux-arm-gnueabihf": "22.0.0-beta.6",
90
+ "@nx/nx-linux-arm64-gnu": "22.0.0-beta.6",
91
+ "@nx/nx-linux-arm64-musl": "22.0.0-beta.6",
92
+ "@nx/nx-linux-x64-gnu": "22.0.0-beta.6",
93
+ "@nx/nx-linux-x64-musl": "22.0.0-beta.6",
94
+ "@nx/nx-win32-arm64-msvc": "22.0.0-beta.6",
95
+ "@nx/nx-win32-x64-msvc": "22.0.0-beta.6"
96
96
  },
97
97
  "nx-migrations": {
98
98
  "migrations": "./migrations.json",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/nx/src/command-line/init/implementation/angular/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,SAAS,CAAC;AAa1D,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,OAAO,iBAqC3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/nx/src/command-line/init/implementation/angular/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,SAAS,CAAC;AAa1D,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,OAAO,iBAqC3D"}
@@ -7,6 +7,7 @@ const fileutils_1 = require("../../../../utils/fileutils");
7
7
  const versions_1 = require("../../../../utils/versions");
8
8
  const object_sort_1 = require("../../../../utils/object-sort");
9
9
  const output_1 = require("../../../../utils/output");
10
+ const package_json_1 = require("../../../../utils/package-json");
10
11
  const utils_1 = require("../utils");
11
12
  const integrated_workspace_1 = require("./integrated-workspace");
12
13
  const legacy_angular_versions_1 = require("./legacy-angular-versions");
@@ -92,12 +93,9 @@ function addPluginDependencies() {
92
93
  '@angular-devkit/schematics',
93
94
  '@schematics/angular',
94
95
  ];
95
- const angularCliVersion = packageJson.devDependencies['@angular/cli'] ??
96
- packageJson.dependencies?.['@angular/cli'] ??
97
- packageJson.devDependencies['@angular-devkit/build-angular'] ??
98
- packageJson.dependencies?.['@angular-devkit/build-angular'] ??
99
- packageJson.devDependencies['@angular/build'] ??
100
- packageJson.dependencies?.['@angular/build'];
96
+ const angularCliVersion = (0, package_json_1.getDependencyVersionFromPackageJson)('@angular/cli', repoRoot, packageJson) ??
97
+ (0, package_json_1.getDependencyVersionFromPackageJson)('@angular-devkit/build-angular', repoRoot, packageJson) ??
98
+ (0, package_json_1.getDependencyVersionFromPackageJson)('@angular/build', repoRoot, packageJson);
101
99
  for (const dep of peerDepsToInstall) {
102
100
  if (!packageJson.devDependencies[dep] && !packageJson.dependencies?.[dep]) {
103
101
  packageJson.devDependencies[dep] = angularCliVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ const nx_cloud_utils_1 = require("../../utils/nx-cloud-utils");
37
37
  const project_graph_1 = require("../../project-graph/project-graph");
38
38
  const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
39
39
  const provenance_1 = require("../../utils/provenance");
40
+ const catalog_1 = require("../../utils/catalog");
40
41
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
41
42
  function normalizeVersion(version) {
42
43
  const [semver, ...prereleaseTagParts] = version.split('-');
@@ -722,7 +723,21 @@ async function updatePackageJson(root, updatedPackages) {
722
723
  }
723
724
  const parseOptions = {};
724
725
  const json = (0, fileutils_1.readJsonFile)(packageJsonPath, parseOptions);
726
+ const manager = (0, catalog_1.getCatalogManager)(root);
727
+ const catalogUpdates = [];
725
728
  Object.keys(updatedPackages).forEach((p) => {
729
+ const existingVersion = json.dependencies?.[p] ?? json.devDependencies?.[p];
730
+ if (existingVersion && manager?.isCatalogReference(existingVersion)) {
731
+ const { catalogName } = manager.parseCatalogReference(existingVersion);
732
+ catalogUpdates.push({
733
+ packageName: p,
734
+ version: updatedPackages[p].version,
735
+ catalogName,
736
+ });
737
+ // don't overwrite the catalog reference with the new version
738
+ return;
739
+ }
740
+ // Update non-catalog packages in package.json
726
741
  if (json.devDependencies?.[p]) {
727
742
  json.devDependencies[p] = updatedPackages[p].version;
728
743
  return;
@@ -740,6 +755,11 @@ async function updatePackageJson(root, updatedPackages) {
740
755
  await writeFormattedJsonFile(packageJsonPath, json, {
741
756
  appendNewLine: parseOptions.endsWithNewline,
742
757
  });
758
+ // Update catalog definitions
759
+ if (catalogUpdates.length) {
760
+ // manager is guaranteed to be defined when there are catalog updates
761
+ manager.updateCatalogVersions(root, catalogUpdates);
762
+ }
743
763
  }
744
764
  async function updateInstallationDetails(root, updatedPackages) {
745
765
  const nxJsonPath = (0, path_1.join)(root, 'nx.json');
@@ -777,13 +797,10 @@ async function isMigratingToNewMajor(from, to) {
777
797
  }
778
798
  return (0, semver_1.major)(from) < (0, semver_1.major)(to);
779
799
  }
780
- function readNxVersion(packageJson) {
781
- return (packageJson?.devDependencies?.['nx'] ??
782
- packageJson?.dependencies?.['nx'] ??
783
- packageJson?.devDependencies?.['@nx/workspace'] ??
784
- packageJson?.dependencies?.['@nx/workspace'] ??
785
- packageJson?.devDependencies?.['@nrwl/workspace'] ??
786
- packageJson?.dependencies?.['@nrwl/workspace']);
800
+ function readNxVersion(packageJson, root) {
801
+ return ((0, package_json_1.getDependencyVersionFromPackageJson)('nx', root, packageJson) ??
802
+ (0, package_json_1.getDependencyVersionFromPackageJson)('@nx/workspace', root, packageJson) ??
803
+ (0, package_json_1.getDependencyVersionFromPackageJson)('@nrwl/workspace', root, packageJson));
787
804
  }
788
805
  async function generateMigrationsJsonAndUpdatePackageJson(root, opts) {
789
806
  const pmc = (0, package_manager_1.getPackageManagerCommand)();
@@ -794,7 +811,7 @@ async function generateMigrationsJsonAndUpdatePackageJson(root, opts) {
794
811
  : null;
795
812
  const originalNxJson = (0, configuration_1.readNxJson)();
796
813
  const from = originalNxJson.installation?.version ??
797
- readNxVersion(originalPackageJson);
814
+ readNxVersion(originalPackageJson, root);
798
815
  logger_1.logger.info(`Fetching meta data about packages.`);
799
816
  logger_1.logger.info(`It may take a few minutes.`);
800
817
  const migrator = new Migrator({
@@ -27,4 +27,5 @@ export { registerTsProject } from './plugins/js/utils/register';
27
27
  export { interpolate } from './tasks-runner/utils';
28
28
  export { isCI } from './utils/is-ci';
29
29
  export { isUsingPrettierInTree } from './utils/is-using-prettier';
30
+ export { readYamlFile } from './utils/fileutils';
30
31
  //# sourceMappingURL=devkit-internals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"devkit-internals.d.ts","sourceRoot":"","sources":["../../../../packages/nx/src/devkit-internals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,gDAAgD,EAAE,MAAM,gDAAgD,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kDAAkD,EAClD,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"devkit-internals.d.ts","sourceRoot":"","sources":["../../../../packages/nx/src/devkit-internals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,gDAAgD,EAAE,MAAM,gDAAgD,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kDAAkD,EAClD,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isUsingPrettierInTree = exports.isCI = exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashMultiGlobWithWorkspaceContext = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.installPackageToTmp = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.getIgnoreObjectForTree = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.parseExecutor = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
3
+ exports.readYamlFile = exports.isUsingPrettierInTree = exports.isCI = exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashMultiGlobWithWorkspaceContext = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.installPackageToTmp = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.getIgnoreObjectForTree = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.parseExecutor = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /**
6
6
  * Note to developers: STOP! These exports are available via requireNx in @nx/devkit.
@@ -59,3 +59,5 @@ var is_ci_1 = require("./utils/is-ci");
59
59
  Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return is_ci_1.isCI; } });
60
60
  var is_using_prettier_1 = require("./utils/is-using-prettier");
61
61
  Object.defineProperty(exports, "isUsingPrettierInTree", { enumerable: true, get: function () { return is_using_prettier_1.isUsingPrettierInTree; } });
62
+ var fileutils_1 = require("./utils/fileutils");
63
+ Object.defineProperty(exports, "readYamlFile", { enumerable: true, get: function () { return fileutils_1.readYamlFile; } });
@@ -1 +1 @@
1
- {"version":3,"file":"lock-file.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/lock-file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,YAAY,EACZ,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAGzF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAEL,cAAc,EACf,MAAM,gCAAgC,CAAC;AA8BxC,eAAO,MAAM,SAAS,UAMrB,CAAC;AAQF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAqC1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,GACjC,yBAAyB,EAAE,CA8B7B;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAgBtE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAiBtE;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAgCtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,cAAc,GAAE,cAAoD,GACnE,MAAM,CA8CR"}
1
+ {"version":3,"file":"lock-file.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/lock-file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,YAAY,EACZ,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAGzF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAEL,cAAc,EACf,MAAM,gCAAgC,CAAC;AA8BxC,eAAO,MAAM,SAAS,UAMrB,CAAC;AAQF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAqC1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,GACjC,yBAAyB,EAAE,CA8B7B;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAgBtE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAiBtE;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAgCtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,cAAc,GAAE,cAAoD,GACnE,MAAM,CAmDR"}
@@ -204,7 +204,7 @@ function createLockFile(packageJson, graph, packageManager = (0, package_manager
204
204
  }
205
205
  if (packageManager === 'pnpm') {
206
206
  const prunedGraph = (0, project_graph_pruning_1.pruneProjectGraph)(graph, packageJson);
207
- return (0, pnpm_parser_1.stringifyPnpmLockfile)(prunedGraph, content, normalizedPackageJson);
207
+ return (0, pnpm_parser_1.stringifyPnpmLockfile)(prunedGraph, content, normalizedPackageJson, workspace_root_1.workspaceRoot);
208
208
  }
209
209
  if (packageManager === 'npm') {
210
210
  const prunedGraph = (0, project_graph_pruning_1.pruneProjectGraph)(graph, packageJson);
@@ -4,5 +4,5 @@ import { ProjectGraph, ProjectGraphExternalNode } from '../../../config/project-
4
4
  import { CreateDependenciesContext } from '../../../project-graph/plugins';
5
5
  export declare function getPnpmLockfileNodes(lockFileContent: string, lockFileHash: string): Record<string, ProjectGraphExternalNode>;
6
6
  export declare function getPnpmLockfileDependencies(lockFileContent: string, lockFileHash: string, ctx: CreateDependenciesContext): RawProjectGraphDependency[];
7
- export declare function stringifyPnpmLockfile(graph: ProjectGraph, rootLockFileContent: string, packageJson: NormalizedPackageJson): string;
7
+ export declare function stringifyPnpmLockfile(graph: ProjectGraph, rootLockFileContent: string, packageJson: NormalizedPackageJson, workspaceRoot: string): string;
8
8
  //# sourceMappingURL=pnpm-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pnpm-parser.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/pnpm-parser.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EAE1B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEL,YAAY,EACZ,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AA0B3E,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAS1C;AAED,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,yBAAyB,+BAU/B;AAkUD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,qBAAqB,GACjC,MAAM,CA8BR"}
1
+ {"version":3,"file":"pnpm-parser.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/pnpm-parser.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,EAE1B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEL,YAAY,EACZ,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AA2B3E,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAS1C;AAED,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,yBAAyB,+BAU/B;AAkUD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,qBAAqB,EAClC,aAAa,EAAE,MAAM,GACpB,MAAM,CAqCR"}
@@ -9,6 +9,7 @@ const object_sort_1 = require("../../../utils/object-sort");
9
9
  const project_graph_builder_1 = require("../../../project-graph/project-graph-builder");
10
10
  const project_graph_1 = require("../../../config/project-graph");
11
11
  const file_hasher_1 = require("../../../hasher/file-hasher");
12
+ const catalog_1 = require("../../../utils/catalog");
12
13
  const project_graph_pruning_1 = require("./project-graph-pruning");
13
14
  const path_1 = require("path");
14
15
  const get_workspace_packages_from_graph_1 = require("../utils/get-workspace-packages-from-graph");
@@ -278,10 +279,10 @@ function getDependencies(data, keyMap, isV5, ctx) {
278
279
  function parseBaseVersion(rawVersion, isV5) {
279
280
  return isV5 ? rawVersion.split('_')[0] : rawVersion.split('(')[0];
280
281
  }
281
- function stringifyPnpmLockfile(graph, rootLockFileContent, packageJson) {
282
+ function stringifyPnpmLockfile(graph, rootLockFileContent, packageJson, workspaceRoot) {
282
283
  const data = (0, pnpm_normalizer_1.parseAndNormalizePnpmLockfile)(rootLockFileContent);
283
284
  const { lockfileVersion, packages, importers } = data;
284
- const { snapshot: rootSnapshot, importers: requiredImporters } = mapRootSnapshot(packageJson, importers, packages, graph, +lockfileVersion);
285
+ const { snapshot: rootSnapshot, importers: requiredImporters } = mapRootSnapshot(packageJson, importers, packages, graph, +lockfileVersion, workspaceRoot);
285
286
  const snapshots = mapSnapshots(data.packages, graph.externalNodes, +lockfileVersion);
286
287
  const workspaceDependencyImporters = {};
287
288
  for (const [packageName, importerPath] of Object.entries(requiredImporters)) {
@@ -407,7 +408,7 @@ function versionIsAlias(key, versionExpr, lockfileVersion) {
407
408
  ? key.startsWith(`${packageName}/${version}`)
408
409
  : key.startsWith(`${packageName}@${version}`);
409
410
  }
410
- function mapRootSnapshot(packageJson, rootImporters, packages, graph, lockfileVersion) {
411
+ function mapRootSnapshot(packageJson, rootImporters, packages, graph, lockfileVersion, workspaceRoot) {
411
412
  const workspaceModules = (0, get_workspace_packages_from_graph_1.getWorkspacePackagesFromGraph)(graph);
412
413
  const snapshot = { specifiers: {} };
413
414
  const importers = {};
@@ -419,7 +420,14 @@ function mapRootSnapshot(packageJson, rootImporters, packages, graph, lockfileVe
419
420
  ].forEach((depType) => {
420
421
  if (packageJson[depType]) {
421
422
  Object.keys(packageJson[depType]).forEach((packageName) => {
422
- const version = packageJson[depType][packageName];
423
+ let version = packageJson[depType][packageName];
424
+ const manager = (0, catalog_1.getCatalogManager)(workspaceRoot);
425
+ if (manager?.isCatalogReference(version)) {
426
+ version = manager.resolveCatalogReference(packageName, version, workspaceRoot);
427
+ if (!version) {
428
+ throw new Error(`Could not resolve catalog reference for package ${packageName}@${version}.`);
429
+ }
430
+ }
423
431
  if (workspaceModules.has(packageName)) {
424
432
  for (const [importerPath, importerSnapshot] of Object.entries(rootImporters)) {
425
433
  const workspaceDep = importerSnapshot.dependencies &&
@@ -1,11 +1,11 @@
1
1
  import { ProjectGraph, ProjectGraphExternalNode, ProjectGraphProjectNode } from '../../../config/project-graph';
2
- import { PackageJson } from '../../../utils/package-json';
3
2
  import { ProjectGraphBuilder } from '../../../project-graph/project-graph-builder';
3
+ import { PackageJson } from '../../../utils/package-json';
4
4
  /**
5
5
  * Prune project graph's external nodes and their dependencies
6
6
  * based on the pruned package.json
7
7
  */
8
- export declare function pruneProjectGraph(graph: ProjectGraph, prunedPackageJson: PackageJson): ProjectGraph;
8
+ export declare function pruneProjectGraph(graph: ProjectGraph, prunedPackageJson: PackageJson, workspaceRootPath?: string): ProjectGraph;
9
9
  export declare function findNodeMatchingVersion(graph: ProjectGraph, packageName: string, versionExpr: string): ProjectGraphExternalNode;
10
10
  export declare function addNodesAndDependencies(graph: ProjectGraph, packageJsonDeps: Record<string, string>, workspacePackages: Map<string, ProjectGraphProjectNode>, builder: ProjectGraphBuilder): void;
11
11
  export declare function rehoistNodes(graph: ProjectGraph, packageJsonDeps: Record<string, string>, builder: ProjectGraphBuilder): void;
@@ -1 +1 @@
1
- {"version":3,"file":"project-graph-pruning.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/project-graph-pruning.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAInF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,WAAW,GAC7B,YAAY,CA0Bd;AAmDD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,4BAsBpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,OAAO,EAAE,mBAAmB,QAgB7B;AA+BD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,mBAAmB,QAiD7B"}
1
+ {"version":3,"file":"project-graph-pruning.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/project-graph-pruning.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,WAAW,EAC9B,iBAAiB,GAAE,MAAsB,GACxC,YAAY,CA2Bd;AA0ED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,4BAsBpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,OAAO,EAAE,mBAAmB,QAgB7B;AA+BD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,mBAAmB,QAiD7B"}
@@ -5,17 +5,19 @@ exports.findNodeMatchingVersion = findNodeMatchingVersion;
5
5
  exports.addNodesAndDependencies = addNodesAndDependencies;
6
6
  exports.rehoistNodes = rehoistNodes;
7
7
  const semver_1 = require("semver");
8
- const project_graph_builder_1 = require("../../../project-graph/project-graph-builder");
9
8
  const operators_1 = require("../../../project-graph/operators");
9
+ const project_graph_builder_1 = require("../../../project-graph/project-graph-builder");
10
+ const catalog_1 = require("../../../utils/catalog");
11
+ const workspace_root_1 = require("../../../utils/workspace-root");
10
12
  const get_workspace_packages_from_graph_1 = require("../utils/get-workspace-packages-from-graph");
11
13
  /**
12
14
  * Prune project graph's external nodes and their dependencies
13
15
  * based on the pruned package.json
14
16
  */
15
- function pruneProjectGraph(graph, prunedPackageJson) {
17
+ function pruneProjectGraph(graph, prunedPackageJson, workspaceRootPath = workspace_root_1.workspaceRoot) {
16
18
  const builder = new project_graph_builder_1.ProjectGraphBuilder();
17
19
  const workspacePackages = (0, get_workspace_packages_from_graph_1.getWorkspacePackagesFromGraph)(graph);
18
- const combinedDependencies = normalizeDependencies(prunedPackageJson, graph, workspacePackages);
20
+ const combinedDependencies = normalizeDependencies(prunedPackageJson, graph, workspacePackages, workspaceRootPath);
19
21
  addNodesAndDependencies(graph, combinedDependencies, workspacePackages, builder);
20
22
  for (const project of workspacePackages.values()) {
21
23
  const node = graph.nodes[project.name];
@@ -28,7 +30,7 @@ function pruneProjectGraph(graph, prunedPackageJson) {
28
30
  }
29
31
  // ensure that dependency ranges from package.json (e.g. ^1.0.0)
30
32
  // are replaced with the actual version based on the available nodes (e.g. 1.0.1)
31
- function normalizeDependencies(packageJson, graph, workspacePackages) {
33
+ function normalizeDependencies(packageJson, graph, workspacePackages, workspaceRootPath) {
32
34
  const { dependencies, devDependencies, optionalDependencies, peerDependencies, } = packageJson;
33
35
  const combinedDependencies = {
34
36
  ...dependencies,
@@ -37,24 +39,35 @@ function normalizeDependencies(packageJson, graph, workspacePackages) {
37
39
  ...peerDependencies,
38
40
  };
39
41
  Object.entries(combinedDependencies).forEach(([packageName, versionRange]) => {
40
- if (graph.externalNodes[`npm:${packageName}@${versionRange}`]) {
42
+ let resolvedVersionRange = versionRange;
43
+ const manager = (0, catalog_1.getCatalogManager)(workspaceRootPath);
44
+ if (manager?.isCatalogReference(versionRange)) {
45
+ const resolvedVersionRange = manager.resolveCatalogReference(packageName, versionRange, workspaceRootPath);
46
+ if (!resolvedVersionRange) {
47
+ throw new Error(`Could not resolve catalog reference for ${packageName}@${versionRange}.`);
48
+ }
49
+ }
50
+ if (graph.externalNodes[`npm:${packageName}@${resolvedVersionRange}`]) {
51
+ combinedDependencies[packageName] = resolvedVersionRange;
41
52
  return;
42
53
  }
43
54
  if (graph.externalNodes[`npm:${packageName}`] &&
44
- graph.externalNodes[`npm:${packageName}`].data.version === versionRange) {
55
+ graph.externalNodes[`npm:${packageName}`].data.version ===
56
+ resolvedVersionRange) {
57
+ combinedDependencies[packageName] = resolvedVersionRange;
45
58
  return;
46
59
  }
47
60
  // otherwise we need to find the correct version
48
- const node = findNodeMatchingVersion(graph, packageName, versionRange);
61
+ const node = findNodeMatchingVersion(graph, packageName, resolvedVersionRange);
49
62
  if (node) {
50
63
  combinedDependencies[packageName] = node.data.version;
51
64
  }
52
65
  else if (workspacePackages.has(packageName)) {
53
66
  // workspace module, leave as is
54
- combinedDependencies[packageName] = versionRange;
67
+ combinedDependencies[packageName] = resolvedVersionRange;
55
68
  }
56
69
  else {
57
- throw new Error(`Pruned lock file creation failed. The following package was not found in the root lock file: ${packageName}@${versionRange}`);
70
+ throw new Error(`Pruned lock file creation failed. The following package was not found in the root lock file: ${packageName}@${resolvedVersionRange}`);
58
71
  }
59
72
  });
60
73
  return combinedDependencies;
@@ -1 +1 @@
1
- {"version":3,"file":"create-package-json.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/package-json/create-package-json.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY1D,UAAU,OAAO;IACf,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,EACN,OAAO,GAAE,cAAqB,GAC7B,WAAW,CA0Lb;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,uBAAuB,EACpC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,WAAW,EAC5B,OAAO,EAAE;IACP,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,EACD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CA8CT"}
1
+ {"version":3,"file":"create-package-json.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/package-json/create-package-json.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,WAAW,EACZ,MAAM,6BAA6B,CAAC;AAYrC,UAAU,OAAO;IACf,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,EACN,OAAO,GAAE,cAAqB,GAC7B,WAAW,CA6Mb;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,uBAAuB,EACpC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,WAAW,EAC5B,OAAO,EAAE;IACP,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,EACD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CA8CT"}
@@ -5,6 +5,7 @@ exports.findProjectsNpmDependencies = findProjectsNpmDependencies;
5
5
  const fileutils_1 = require("../../../utils/fileutils");
6
6
  const object_sort_1 = require("../../../utils/object-sort");
7
7
  const project_graph_1 = require("../../../config/project-graph");
8
+ const package_json_1 = require("../../../utils/package-json");
8
9
  const fs_1 = require("fs");
9
10
  const workspace_root_1 = require("../../../utils/workspace-root");
10
11
  const configuration_1 = require("../../../config/configuration");
@@ -21,7 +22,8 @@ const output_1 = require("../../../utils/output");
21
22
  function createPackageJson(projectName, graph, options = {}, fileMap = null) {
22
23
  const projectNode = graph.nodes[projectName];
23
24
  const isLibrary = projectNode.type === 'lib';
24
- const rootPackageJson = (0, fileutils_1.readJsonFile)((0, path_1.join)(options.root ?? workspace_root_1.workspaceRoot, 'package.json'));
25
+ const root = options.root ?? workspace_root_1.workspaceRoot;
26
+ const rootPackageJson = (0, fileutils_1.readJsonFile)((0, path_1.join)(root, 'package.json'));
25
27
  const npmDeps = findProjectsNpmDependencies(projectNode, graph, options.target, rootPackageJson, {
26
28
  helperDependencies: options.helperDependencies,
27
29
  isProduction: options.isProduction,
@@ -31,7 +33,7 @@ function createPackageJson(projectName, graph, options = {}, fileMap = null) {
31
33
  name: projectName,
32
34
  version: '0.0.1',
33
35
  };
34
- const projectPackageJsonPath = (0, path_1.join)(options.root ?? workspace_root_1.workspaceRoot, projectNode.data.root, 'package.json');
36
+ const projectPackageJsonPath = (0, path_1.join)(root, projectNode.data.root, 'package.json');
35
37
  if ((0, fs_1.existsSync)(projectPackageJsonPath)) {
36
38
  try {
37
39
  packageJson = (0, fileutils_1.readJsonFile)(projectPackageJsonPath);
@@ -55,9 +57,19 @@ function createPackageJson(projectName, graph, options = {}, fileMap = null) {
55
57
  catch (e) { }
56
58
  }
57
59
  const getVersion = (packageName, version, section) => {
58
- return (packageJson[section][packageName] ||
59
- (isLibrary && rootPackageJson[section]?.[packageName]) ||
60
- version);
60
+ // Try project package.json first (single section)
61
+ const projectVersion = (0, package_json_1.getDependencyVersionFromPackageJson)(packageName, root, packageJson, [section]);
62
+ if (projectVersion) {
63
+ return projectVersion;
64
+ }
65
+ // For libraries, fall back to root package.json (single section)
66
+ if (isLibrary) {
67
+ const rootVersion = (0, package_json_1.getDependencyVersionFromPackageJson)(packageName, root, rootPackageJson, [section]);
68
+ if (rootVersion) {
69
+ return rootVersion;
70
+ }
71
+ }
72
+ return version;
61
73
  };
62
74
  Object.entries(npmDeps.dependencies).forEach(([packageName, version]) => {
63
75
  if (rootPackageJson.devDependencies?.[packageName] &&
@@ -0,0 +1,10 @@
1
+ import type { Tree } from '../../generators/tree';
2
+ import type { CatalogManager } from './manager';
3
+ import { getCatalogManager } from './manager-factory';
4
+ export { getCatalogManager };
5
+ /**
6
+ * Detects which packages in a package.json use catalog references
7
+ * Returns Map of package name -> catalog name (undefined for default catalog)
8
+ */
9
+ export declare function getCatalogDependenciesFromPackageJson(tree: Tree, packageJsonPath: string, manager: CatalogManager): Map<string, string | undefined>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,cAAc,GACtB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CA+BjC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCatalogManager = void 0;
4
+ exports.getCatalogDependenciesFromPackageJson = getCatalogDependenciesFromPackageJson;
5
+ const json_1 = require("../../generators/utils/json");
6
+ const manager_factory_1 = require("./manager-factory");
7
+ Object.defineProperty(exports, "getCatalogManager", { enumerable: true, get: function () { return manager_factory_1.getCatalogManager; } });
8
+ /**
9
+ * Detects which packages in a package.json use catalog references
10
+ * Returns Map of package name -> catalog name (undefined for default catalog)
11
+ */
12
+ function getCatalogDependenciesFromPackageJson(tree, packageJsonPath, manager) {
13
+ const catalogDeps = new Map();
14
+ if (!tree.exists(packageJsonPath)) {
15
+ return catalogDeps;
16
+ }
17
+ try {
18
+ const packageJson = (0, json_1.readJson)(tree, packageJsonPath);
19
+ const allDependencies = {
20
+ ...packageJson.dependencies,
21
+ ...packageJson.devDependencies,
22
+ ...packageJson.peerDependencies,
23
+ ...packageJson.optionalDependencies,
24
+ };
25
+ for (const [packageName, version] of Object.entries(allDependencies || {})) {
26
+ if (manager.isCatalogReference(version)) {
27
+ const catalogRef = manager.parseCatalogReference(version);
28
+ if (catalogRef) {
29
+ catalogDeps.set(packageName, catalogRef.catalogName);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ catch (error) {
35
+ // If we can't read the package.json, return empty map
36
+ }
37
+ return catalogDeps;
38
+ }
@@ -0,0 +1,6 @@
1
+ import type { CatalogManager } from './manager';
2
+ /**
3
+ * Factory function to get the appropriate catalog manager based on the package manager
4
+ */
5
+ export declare function getCatalogManager(workspaceRoot: string): CatalogManager | null;
6
+ //# sourceMappingURL=manager-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager-factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/catalog/manager-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,GACpB,cAAc,GAAG,IAAI,CASvB"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCatalogManager = getCatalogManager;
4
+ const package_manager_1 = require("../package-manager");
5
+ const pnpm_manager_1 = require("./pnpm-manager");
6
+ /**
7
+ * Factory function to get the appropriate catalog manager based on the package manager
8
+ */
9
+ function getCatalogManager(workspaceRoot) {
10
+ const packageManager = (0, package_manager_1.detectPackageManager)(workspaceRoot);
11
+ switch (packageManager) {
12
+ case 'pnpm':
13
+ return new pnpm_manager_1.PnpmCatalogManager();
14
+ default:
15
+ return null;
16
+ }
17
+ }
@@ -0,0 +1,40 @@
1
+ import type { Tree } from '../../generators/tree';
2
+ import type { PnpmWorkspaceYaml } from '../pnpm-workspace';
3
+ import type { CatalogReference } from './types';
4
+ /**
5
+ * Interface for catalog managers that handle package manager-specific catalog implementations.
6
+ */
7
+ export interface CatalogManager {
8
+ readonly name: string;
9
+ isCatalogReference(version: string): boolean;
10
+ parseCatalogReference(version: string): CatalogReference | null;
11
+ /**
12
+ * Get catalog definitions from the workspace.
13
+ */
14
+ getCatalogDefinitions(workspaceRoot: string): PnpmWorkspaceYaml | null;
15
+ getCatalogDefinitions(tree: Tree): PnpmWorkspaceYaml | null;
16
+ /**
17
+ * Resolve a catalog reference to an actual version.
18
+ */
19
+ resolveCatalogReference(workspaceRoot: string, packageName: string, version: string): string | null;
20
+ resolveCatalogReference(tree: Tree, packageName: string, version: string): string | null;
21
+ /**
22
+ * Check that a catalog reference is valid.
23
+ */
24
+ validateCatalogReference(workspaceRoot: string, packageName: string, version: string): void;
25
+ validateCatalogReference(tree: Tree, packageName: string, version: string): void;
26
+ /**
27
+ * Updates catalog definitions for specified packages in their respective catalogs.
28
+ */
29
+ updateCatalogVersions(tree: Tree, updates: Array<{
30
+ packageName: string;
31
+ version: string;
32
+ catalogName?: string;
33
+ }>): void;
34
+ updateCatalogVersions(workspaceRoot: string, updates: Array<{
35
+ packageName: string;
36
+ version: string;
37
+ catalogName?: string;
38
+ }>): void;
39
+ }
40
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/catalog/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACvE,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,uBAAuB,CACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAAC;IACjB,uBAAuB,CACrB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAAC;IAEjB;;OAEG;IACH,wBAAwB,CACtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;IACR,wBAAwB,CACtB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;IAER;;OAEG;IACH,qBAAqB,CACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI,CAAC;IACR,qBAAqB,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI,CAAC;CACT"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ import type { Tree } from '../../generators/tree';
2
+ import type { PnpmWorkspaceYaml } from '../pnpm-workspace';
3
+ import type { CatalogManager } from './manager';
4
+ import type { CatalogReference } from './types';
5
+ /**
6
+ * PNPM-specific catalog manager implementation
7
+ */
8
+ export declare class PnpmCatalogManager implements CatalogManager {
9
+ readonly name = "pnpm";
10
+ readonly catalogProtocol = "catalog:";
11
+ isCatalogReference(version: string): boolean;
12
+ parseCatalogReference(version: string): CatalogReference | null;
13
+ getCatalogDefinitions(treeOrRoot: Tree | string): PnpmWorkspaceYaml | null;
14
+ resolveCatalogReference(treeOrRoot: Tree | string, packageName: string, version: string): string | null;
15
+ validateCatalogReference(treeOrRoot: Tree | string, packageName: string, version: string): void;
16
+ updateCatalogVersions(treeOrRoot: Tree | string, updates: Array<{
17
+ packageName: string;
18
+ version: string;
19
+ catalogName?: string;
20
+ }>): void;
21
+ }
22
+ //# sourceMappingURL=pnpm-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnpm-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/catalog/pnpm-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,eAAe,cAAc;IAEtC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI5C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAe/D,qBAAqB,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAe1E,uBAAuB,CACrB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI;IAuBhB,wBAAwB,CACtB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,IAAI;IA0HP,qBAAqB,CACnB,UAAU,EAAE,IAAI,GAAG,MAAM,EACzB,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,IAAI;CAgFR"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PnpmCatalogManager = void 0;
4
+ const js_yaml_1 = require("@zkochan/js-yaml");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const fileutils_1 = require("../fileutils");
8
+ const output_1 = require("../output");
9
+ /**
10
+ * PNPM-specific catalog manager implementation
11
+ */
12
+ class PnpmCatalogManager {
13
+ constructor() {
14
+ this.name = 'pnpm';
15
+ this.catalogProtocol = 'catalog:';
16
+ }
17
+ isCatalogReference(version) {
18
+ return version.startsWith(this.catalogProtocol);
19
+ }
20
+ parseCatalogReference(version) {
21
+ if (!this.isCatalogReference(version)) {
22
+ return null;
23
+ }
24
+ const catalogName = version.substring(this.catalogProtocol.length);
25
+ // Normalize both "catalog:" and "catalog:default" to the same representation
26
+ const isDefault = !catalogName || catalogName === 'default';
27
+ return {
28
+ catalogName: isDefault ? undefined : catalogName,
29
+ isDefaultCatalog: isDefault,
30
+ };
31
+ }
32
+ getCatalogDefinitions(treeOrRoot) {
33
+ if (typeof treeOrRoot === 'string') {
34
+ const pnpmWorkspacePath = (0, node_path_1.join)(treeOrRoot, 'pnpm-workspace.yaml');
35
+ if (!(0, node_fs_1.existsSync)(pnpmWorkspacePath)) {
36
+ return null;
37
+ }
38
+ return readYamlFileFromFs(pnpmWorkspacePath);
39
+ }
40
+ else {
41
+ if (!treeOrRoot.exists('pnpm-workspace.yaml')) {
42
+ return null;
43
+ }
44
+ return readYamlFileFromTree(treeOrRoot, 'pnpm-workspace.yaml');
45
+ }
46
+ }
47
+ resolveCatalogReference(treeOrRoot, packageName, version) {
48
+ const catalogRef = this.parseCatalogReference(version);
49
+ if (!catalogRef) {
50
+ return null;
51
+ }
52
+ const workspaceConfig = this.getCatalogDefinitions(treeOrRoot);
53
+ if (!workspaceConfig) {
54
+ return null;
55
+ }
56
+ let catalogToUse;
57
+ if (catalogRef.isDefaultCatalog) {
58
+ // Check both locations for default catalog
59
+ catalogToUse =
60
+ workspaceConfig.catalog ?? workspaceConfig.catalogs?.default;
61
+ }
62
+ else if (catalogRef.catalogName) {
63
+ catalogToUse = workspaceConfig.catalogs?.[catalogRef.catalogName];
64
+ }
65
+ return catalogToUse?.[packageName] || null;
66
+ }
67
+ validateCatalogReference(treeOrRoot, packageName, version) {
68
+ const catalogRef = this.parseCatalogReference(version);
69
+ if (!catalogRef) {
70
+ throw new Error(`Invalid catalog reference syntax: "${version}". Expected format: "catalog:" or "catalog:name"`);
71
+ }
72
+ const workspaceConfig = this.getCatalogDefinitions(treeOrRoot);
73
+ if (!workspaceConfig) {
74
+ throw new Error(formatCatalogError('Cannot get Pnpm catalog definitions. No pnpm-workspace.yaml found in workspace root.', ['Create a pnpm-workspace.yaml file in your workspace root']));
75
+ }
76
+ let catalogToUse;
77
+ if (catalogRef.isDefaultCatalog) {
78
+ const hasCatalog = !!workspaceConfig.catalog;
79
+ const hasCatalogsDefault = !!workspaceConfig.catalogs?.default;
80
+ // Error if both defined (matches pnpm behavior)
81
+ if (hasCatalog && hasCatalogsDefault) {
82
+ throw new Error("The 'default' catalog was defined multiple times. Use the 'catalog' field or 'catalogs.default', but not both.");
83
+ }
84
+ catalogToUse =
85
+ workspaceConfig.catalog ?? workspaceConfig.catalogs?.default;
86
+ if (!catalogToUse) {
87
+ const availableCatalogs = Object.keys(workspaceConfig.catalogs || {});
88
+ const suggestions = [
89
+ 'Define a default catalog in pnpm-workspace.yaml under the "catalog" key',
90
+ ];
91
+ if (availableCatalogs.length > 0) {
92
+ suggestions.push(`Or select from the available named catalogs: ${availableCatalogs
93
+ .map((c) => `"catalog:${c}"`)
94
+ .join(', ')}`);
95
+ }
96
+ throw new Error(formatCatalogError('No default catalog defined in pnpm-workspace.yaml', suggestions));
97
+ }
98
+ }
99
+ else if (catalogRef.catalogName) {
100
+ catalogToUse = workspaceConfig.catalogs?.[catalogRef.catalogName];
101
+ if (!catalogToUse) {
102
+ const availableCatalogs = Object.keys(workspaceConfig.catalogs || {}).filter((c) => c !== 'default');
103
+ const defaultCatalog = !!workspaceConfig.catalog
104
+ ? 'catalog'
105
+ : !workspaceConfig.catalogs?.default
106
+ ? 'catalogs.default'
107
+ : null;
108
+ const suggestions = [
109
+ 'Define the catalog in pnpm-workspace.yaml under the "catalogs" key',
110
+ ];
111
+ if (availableCatalogs.length > 0) {
112
+ suggestions.push(`Or select from the available named catalogs: ${availableCatalogs
113
+ .map((c) => `"catalog:${c}"`)
114
+ .join(', ')}`);
115
+ }
116
+ if (defaultCatalog) {
117
+ suggestions.push(`Or use the default catalog ("${defaultCatalog}")`);
118
+ }
119
+ throw new Error(formatCatalogError(`Catalog "${catalogRef.catalogName}" not found in pnpm-workspace.yaml`, suggestions));
120
+ }
121
+ }
122
+ if (!catalogToUse[packageName]) {
123
+ let catalogName;
124
+ if (catalogRef.isDefaultCatalog) {
125
+ // Context-aware messaging based on which location exists
126
+ const hasCatalog = !!workspaceConfig.catalog;
127
+ catalogName = hasCatalog
128
+ ? 'default catalog ("catalog")'
129
+ : 'default catalog ("catalogs.default")';
130
+ }
131
+ else {
132
+ catalogName = `catalog '${catalogRef.catalogName}'`;
133
+ }
134
+ const availablePackages = Object.keys(catalogToUse);
135
+ const suggestions = [
136
+ `Add "${packageName}" to ${catalogName} in pnpm-workspace.yaml`,
137
+ ];
138
+ if (availablePackages.length > 0) {
139
+ suggestions.push(`Or select from the available packages in ${catalogName}: ${availablePackages
140
+ .map((p) => `"${p}"`)
141
+ .join(', ')}`);
142
+ }
143
+ throw new Error(formatCatalogError(`Package "${packageName}" not found in ${catalogName}`, suggestions));
144
+ }
145
+ }
146
+ updateCatalogVersions(treeOrRoot, updates) {
147
+ let checkExists;
148
+ let readYaml;
149
+ let writeYaml;
150
+ if (typeof treeOrRoot === 'string') {
151
+ const workspaceYamlPath = (0, node_path_1.join)(treeOrRoot, 'pnpm-workspace.yaml');
152
+ checkExists = () => (0, node_fs_1.existsSync)(workspaceYamlPath);
153
+ readYaml = () => (0, node_fs_1.readFileSync)(workspaceYamlPath, 'utf-8');
154
+ writeYaml = (content) => (0, node_fs_1.writeFileSync)(workspaceYamlPath, content, 'utf-8');
155
+ }
156
+ else {
157
+ checkExists = () => treeOrRoot.exists('pnpm-workspace.yaml');
158
+ readYaml = () => treeOrRoot.read('pnpm-workspace.yaml', 'utf-8');
159
+ writeYaml = (content) => treeOrRoot.write('pnpm-workspace.yaml', content);
160
+ }
161
+ if (!checkExists()) {
162
+ output_1.output.warn({
163
+ title: 'No pnpm-workspace.yaml found',
164
+ bodyLines: [
165
+ 'Cannot update catalog versions without a pnpm-workspace.yaml file.',
166
+ 'Create a pnpm-workspace.yaml file to use catalogs.',
167
+ ],
168
+ });
169
+ return;
170
+ }
171
+ try {
172
+ const workspaceContent = readYaml();
173
+ const workspaceData = (0, js_yaml_1.load)(workspaceContent) || {};
174
+ let hasChanges = false;
175
+ for (const update of updates) {
176
+ const { packageName, version, catalogName } = update;
177
+ const normalizedCatalogName = catalogName === 'default' ? undefined : catalogName;
178
+ let targetCatalog;
179
+ if (!normalizedCatalogName) {
180
+ // Default catalog - update whichever exists, prefer catalog over catalogs.default
181
+ if (workspaceData.catalog) {
182
+ targetCatalog = workspaceData.catalog;
183
+ }
184
+ else if (workspaceData.catalogs?.default) {
185
+ targetCatalog = workspaceData.catalogs.default;
186
+ }
187
+ else {
188
+ // Neither exists, create catalog (shorthand syntax)
189
+ workspaceData.catalog ??= {};
190
+ targetCatalog = workspaceData.catalog;
191
+ }
192
+ }
193
+ else {
194
+ // Named catalog
195
+ workspaceData.catalogs ??= {};
196
+ workspaceData.catalogs[normalizedCatalogName] ??= {};
197
+ targetCatalog = workspaceData.catalogs[normalizedCatalogName];
198
+ }
199
+ if (targetCatalog[packageName] !== version) {
200
+ targetCatalog[packageName] = version;
201
+ hasChanges = true;
202
+ }
203
+ }
204
+ if (hasChanges) {
205
+ writeYaml((0, js_yaml_1.dump)(workspaceData, {
206
+ indent: 2,
207
+ quotingType: '"',
208
+ forceQuotes: true,
209
+ }));
210
+ }
211
+ }
212
+ catch (error) {
213
+ output_1.output.error({
214
+ title: 'Failed to update catalog versions',
215
+ bodyLines: [error instanceof Error ? error.message : String(error)],
216
+ });
217
+ throw error;
218
+ }
219
+ }
220
+ }
221
+ exports.PnpmCatalogManager = PnpmCatalogManager;
222
+ function readYamlFileFromFs(path) {
223
+ try {
224
+ return (0, fileutils_1.readYamlFile)(path);
225
+ }
226
+ catch (error) {
227
+ output_1.output.warn({
228
+ title: 'Unable to parse pnpm-workspace.yaml',
229
+ bodyLines: [error.toString()],
230
+ });
231
+ return null;
232
+ }
233
+ }
234
+ function readYamlFileFromTree(tree, path) {
235
+ const content = tree.read(path, 'utf-8');
236
+ const { load } = require('@zkochan/js-yaml');
237
+ try {
238
+ return load(content, { filename: path });
239
+ }
240
+ catch (error) {
241
+ output_1.output.warn({
242
+ title: 'Unable to parse pnpm-workspace.yaml',
243
+ bodyLines: [error.toString()],
244
+ });
245
+ return null;
246
+ }
247
+ }
248
+ function formatCatalogError(error, suggestions) {
249
+ let message = error;
250
+ if (suggestions && suggestions.length > 0) {
251
+ message += '\n\nSuggestions:';
252
+ suggestions.forEach((suggestion) => {
253
+ message += `\n • ${suggestion}`;
254
+ });
255
+ }
256
+ return message;
257
+ }
@@ -0,0 +1,5 @@
1
+ export interface CatalogReference {
2
+ catalogName?: string;
3
+ isDefaultCatalog: boolean;
4
+ }
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/catalog/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,6 @@
1
1
  import { NxJsonConfiguration } from '../config/nx-json';
2
2
  import { ProjectConfiguration, ProjectMetadata, TargetConfiguration } from '../config/workspace-json-project-json';
3
+ import type { Tree } from '../generators/tree';
3
4
  import { PackageManagerCommands } from './package-manager';
4
5
  export interface NxProjectPackageJsonConfiguration extends Partial<ProjectConfiguration> {
5
6
  includedScripts?: string[];
@@ -13,6 +14,7 @@ export type MixedPackageGroup = (string | {
13
14
  version: string;
14
15
  })[] | Record<string, string>;
15
16
  export type PackageGroup = MixedPackageGroup | ArrayPackageGroup;
17
+ export type PackageJsonDependencySection = 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies';
16
18
  export interface NxMigrationsConfiguration {
17
19
  migrations?: string;
18
20
  packageGroup?: PackageGroup;
@@ -108,5 +110,82 @@ export declare function installPackageToTmp(pkg: string, requiredVersion: string
108
110
  tempDir: string;
109
111
  cleanup: () => void;
110
112
  };
113
+ /**
114
+ * Get the resolved version of a dependency from package.json.
115
+ *
116
+ * Retrieves a package version and automatically resolves PNPM catalog references
117
+ * (e.g., "catalog:default") to their actual version strings. By default, searches
118
+ * `dependencies` first, then falls back to `devDependencies`.
119
+ *
120
+ * **Tree-based usage** (generators and migrations):
121
+ * Use when you have a `Tree` object, which is typical in Nx generators and migrations.
122
+ *
123
+ * **Filesystem-based usage** (CLI commands and scripts):
124
+ * Use when reading directly from the filesystem without a `Tree` object.
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // Tree-based - from root package.json (checks dependencies then devDependencies)
129
+ * const reactVersion = getDependencyVersionFromPackageJson(tree, 'react');
130
+ * // Returns: "^18.0.0" (resolves "catalog:default" if present)
131
+ *
132
+ * // Tree-based - check only dependencies section
133
+ * const version = getDependencyVersionFromPackageJson(
134
+ * tree,
135
+ * 'react',
136
+ * 'package.json',
137
+ * ['dependencies']
138
+ * );
139
+ *
140
+ * // Tree-based - check only devDependencies section
141
+ * const version = getDependencyVersionFromPackageJson(
142
+ * tree,
143
+ * 'jest',
144
+ * 'package.json',
145
+ * ['devDependencies']
146
+ * );
147
+ *
148
+ * // Tree-based - custom lookup order
149
+ * const version = getDependencyVersionFromPackageJson(
150
+ * tree,
151
+ * 'pkg',
152
+ * 'package.json',
153
+ * ['devDependencies', 'dependencies', 'peerDependencies']
154
+ * );
155
+ *
156
+ * // Tree-based - with pre-loaded package.json
157
+ * const packageJson = readJson(tree, 'package.json');
158
+ * const version = getDependencyVersionFromPackageJson(
159
+ * tree,
160
+ * 'react',
161
+ * packageJson,
162
+ * ['dependencies']
163
+ * );
164
+ * ```
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Filesystem-based - from current directory
169
+ * const reactVersion = getDependencyVersionFromPackageJson('react');
170
+ *
171
+ * // Filesystem-based - with workspace root
172
+ * const version = getDependencyVersionFromPackageJson('react', '/path/to/workspace');
173
+ *
174
+ * // Filesystem-based - with specific package.json and section
175
+ * const version = getDependencyVersionFromPackageJson(
176
+ * 'react',
177
+ * '/path/to/workspace',
178
+ * 'apps/my-app/package.json',
179
+ * ['dependencies']
180
+ * );
181
+ * ```
182
+ *
183
+ * @param dependencyLookup Array of dependency sections to check in order. Defaults to ['dependencies', 'devDependencies']
184
+ * @returns The resolved version string, or `null` if the package is not found in any of the specified sections
185
+ */
186
+ export declare function getDependencyVersionFromPackageJson(tree: Tree, packageName: string, packageJsonPath?: string, dependencyLookup?: PackageJsonDependencySection[]): string | null;
187
+ export declare function getDependencyVersionFromPackageJson(tree: Tree, packageName: string, packageJson?: PackageJson, dependencyLookup?: PackageJsonDependencySection[]): string | null;
188
+ export declare function getDependencyVersionFromPackageJson(packageName: string, workspaceRootPath?: string, packageJsonPath?: string, dependencyLookup?: PackageJsonDependencySection[]): string | null;
189
+ export declare function getDependencyVersionFromPackageJson(packageName: string, workspaceRootPath?: string, packageJson?: PackageJson, dependencyLookup?: PackageJsonDependencySection[]): string | null;
111
190
  export {};
112
191
  //# sourceMappingURL=package-json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-json.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,18 @@ exports.readTargetsFromPackageJson = readTargetsFromPackageJson;
9
9
  exports.readModulePackageJsonWithoutFallbacks = readModulePackageJsonWithoutFallbacks;
10
10
  exports.readModulePackageJson = readModulePackageJson;
11
11
  exports.installPackageToTmp = installPackageToTmp;
12
+ exports.getDependencyVersionFromPackageJson = getDependencyVersionFromPackageJson;
13
+ const child_process_1 = require("child_process");
12
14
  const fs_1 = require("fs");
13
15
  const path_1 = require("path");
16
+ const tmp_1 = require("tmp");
17
+ const json_1 = require("../generators/utils/json");
14
18
  const project_configuration_utils_1 = require("../project-graph/utils/project-configuration-utils");
19
+ const catalog_1 = require("./catalog");
15
20
  const fileutils_1 = require("./fileutils");
16
21
  const installation_directory_1 = require("./installation-directory");
17
22
  const package_manager_1 = require("./package-manager");
18
- const tmp_1 = require("tmp");
19
- const child_process_1 = require("child_process");
23
+ const workspace_root_1 = require("./workspace-root");
20
24
  function normalizePackageGroup(packageGroup) {
21
25
  return Array.isArray(packageGroup)
22
26
  ? packageGroup.map((x) => typeof x === 'string' ? { package: x, version: '*' } : x)
@@ -228,6 +232,81 @@ function installPackageToTmp(pkg, requiredVersion) {
228
232
  cleanup,
229
233
  };
230
234
  }
235
+ function getDependencyVersionFromPackageJson(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot, dependencyLookup) {
236
+ if (typeof treeOrPackageName !== 'string') {
237
+ return getDependencyVersionFromPackageJsonFromTree(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot, dependencyLookup);
238
+ }
239
+ else {
240
+ return getDependencyVersionFromPackageJsonFromFileSystem(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot, dependencyLookup);
241
+ }
242
+ }
243
+ /**
244
+ * Tree-based implementation for getDependencyVersionFromPackageJson
245
+ */
246
+ function getDependencyVersionFromPackageJsonFromTree(tree, packageName, packageJsonPathOrObject = 'package.json', dependencyLookup = [
247
+ 'dependencies',
248
+ 'devDependencies',
249
+ ]) {
250
+ let packageJson;
251
+ if (typeof packageJsonPathOrObject === 'object') {
252
+ packageJson = packageJsonPathOrObject;
253
+ }
254
+ else if (tree.exists(packageJsonPathOrObject)) {
255
+ packageJson = (0, json_1.readJson)(tree, packageJsonPathOrObject);
256
+ }
257
+ else {
258
+ return null;
259
+ }
260
+ let version = null;
261
+ for (const section of dependencyLookup) {
262
+ const foundVersion = packageJson[section]?.[packageName];
263
+ if (foundVersion) {
264
+ version = foundVersion;
265
+ break;
266
+ }
267
+ }
268
+ // Resolve catalog reference if needed
269
+ const manager = (0, catalog_1.getCatalogManager)(tree.root);
270
+ if (version && manager?.isCatalogReference(version)) {
271
+ version = manager.resolveCatalogReference(tree, packageName, version);
272
+ }
273
+ return version;
274
+ }
275
+ /**
276
+ * Filesystem-based implementation for getDependencyVersionFromPackageJson
277
+ */
278
+ function getDependencyVersionFromPackageJsonFromFileSystem(packageName, root = workspace_root_1.workspaceRoot, packageJsonPathOrObject = 'package.json', dependencyLookup = [
279
+ 'dependencies',
280
+ 'devDependencies',
281
+ ]) {
282
+ let packageJson;
283
+ if (typeof packageJsonPathOrObject === 'object') {
284
+ packageJson = packageJsonPathOrObject;
285
+ }
286
+ else {
287
+ const packageJsonPath = (0, path_1.resolve)(root, packageJsonPathOrObject);
288
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
289
+ packageJson = (0, fileutils_1.readJsonFile)(packageJsonPath);
290
+ }
291
+ else {
292
+ return null;
293
+ }
294
+ }
295
+ let version = null;
296
+ for (const section of dependencyLookup) {
297
+ const foundVersion = packageJson[section]?.[packageName];
298
+ if (foundVersion) {
299
+ version = foundVersion;
300
+ break;
301
+ }
302
+ }
303
+ // Resolve catalog reference if needed
304
+ const manager = (0, catalog_1.getCatalogManager)(root);
305
+ if (version && manager?.isCatalogReference(version)) {
306
+ version = manager.resolveCatalogReference(packageName, version, root);
307
+ }
308
+ return version;
309
+ }
231
310
  /**
232
311
  * Generates necessary files needed for the package manager to work
233
312
  * and for the node_modules to be accessible.
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAE/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,CACP,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,MAAM,KACR,MAAM,CAAC;IAEZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAW,GAAG,cAAc,CAYrE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,GAAE,cAAuC,EACvD,IAAI,GAAE,MAAsB,GAC3B,OAAO,CAmBT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,GAAE,cAAuC,EACvD,IAAI,GAAE,MAAsB,GAC3B,sBAAsB,CA8HxB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,GAAE,cAAuC,EACvD,GAAG,SAAgB,GAClB,MAAM,CAwBR;AAED,wBAAgB,mCAAmC,CACjD,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,MAAM,GAAG,SAAS,GAC3C,IAAI,GAAG,MAAM,CAkBf;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAsB,GAChC,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,QAuCpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,UAAQ;;;EAsBtD;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAED;;;;GAIG;AACH,wBAAsB,sCAAsC,CAC1D,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBlC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,GAAE,cAAuC,EACvD,IAAI,GAAE,MAAsB,GAC3B,MAAM,EAAE,CAoBV;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,cAAuC,EACvD,UAAU,GAAE,MAAM,EAAyC,EAC3D,IAAI,GAAE,MAAsB,GAC3B,IAAI,CAiEN"}
@@ -18,14 +18,15 @@ exports.getPackageWorkspaces = getPackageWorkspaces;
18
18
  exports.addPackagePathToWorkspaces = addPackagePathToWorkspaces;
19
19
  const child_process_1 = require("child_process");
20
20
  const fs_1 = require("fs");
21
- const yaml_1 = require("yaml");
22
21
  const promises_1 = require("node:fs/promises");
23
22
  const path_1 = require("path");
24
23
  const semver_1 = require("semver");
25
24
  const tmp_1 = require("tmp");
26
25
  const util_1 = require("util");
26
+ const yaml_1 = require("yaml");
27
27
  const configuration_1 = require("../config/configuration");
28
28
  const file_utils_1 = require("../project-graph/file-utils");
29
+ const catalog_1 = require("./catalog");
29
30
  const fileutils_1 = require("./fileutils");
30
31
  const installation_directory_1 = require("./installation-directory");
31
32
  const package_json_1 = require("./package-json");
@@ -366,9 +367,17 @@ function createTempNpmDirectory(skipCopy = false) {
366
367
  */
367
368
  async function resolvePackageVersionUsingRegistry(packageName, version) {
368
369
  try {
369
- const result = await packageRegistryView(packageName, version, 'version');
370
+ let resolvedVersion = version;
371
+ const manager = (0, catalog_1.getCatalogManager)(workspace_root_1.workspaceRoot);
372
+ if (manager?.isCatalogReference(version)) {
373
+ resolvedVersion = manager.resolveCatalogReference(packageName, version, workspace_root_1.workspaceRoot);
374
+ if (!resolvedVersion) {
375
+ throw new Error(`Unable to resolve catalog reference ${packageName}@${version}.`);
376
+ }
377
+ }
378
+ const result = await packageRegistryView(packageName, resolvedVersion, 'version');
370
379
  if (!result) {
371
- throw new Error(`Unable to resolve version ${packageName}@${version}.`);
380
+ throw new Error(`Unable to resolve version ${packageName}@${resolvedVersion}.`);
372
381
  }
373
382
  const lines = result.split('\n');
374
383
  if (lines.length === 1) {
@@ -381,12 +390,12 @@ async function resolvePackageVersionUsingRegistry(packageName, version) {
381
390
  *
382
391
  * <package>@<version> '<version>'
383
392
  */
384
- const resolvedVersion = lines
393
+ const finalResolvedVersion = lines
385
394
  .map((line) => line.split(' ')[1])
386
395
  .sort()
387
396
  .pop()
388
397
  .replace(/'/g, '');
389
- return resolvedVersion;
398
+ return finalResolvedVersion;
390
399
  }
391
400
  catch {
392
401
  throw new Error(`Unable to resolve version ${packageName}@${version}.`);
@@ -400,8 +409,16 @@ async function resolvePackageVersionUsingRegistry(packageName, version) {
400
409
  async function resolvePackageVersionUsingInstallation(packageName, version) {
401
410
  const { dir, cleanup } = createTempNpmDirectory();
402
411
  try {
412
+ let resolvedVersion = version;
413
+ const manager = (0, catalog_1.getCatalogManager)(workspace_root_1.workspaceRoot);
414
+ if (manager.isCatalogReference(version)) {
415
+ resolvedVersion = manager.resolveCatalogReference(packageName, version, workspace_root_1.workspaceRoot);
416
+ if (!resolvedVersion) {
417
+ throw new Error(`Unable to resolve catalog reference ${packageName}@${version}.`);
418
+ }
419
+ }
403
420
  const pmc = getPackageManagerCommand();
404
- await execAsync(`${pmc.add} ${packageName}@${version}`, {
421
+ await execAsync(`${pmc.add} ${packageName}@${resolvedVersion}`, {
405
422
  cwd: dir,
406
423
  windowsHide: true,
407
424
  });
@@ -0,0 +1,9 @@
1
+ export interface PnpmCatalogEntry {
2
+ [packageName: string]: string;
3
+ }
4
+ export interface PnpmWorkspaceYaml {
5
+ packages?: string[];
6
+ catalog?: PnpmCatalogEntry;
7
+ catalogs?: Record<string, PnpmCatalogEntry>;
8
+ }
9
+ //# sourceMappingURL=pnpm-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnpm-workspace.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/pnpm-workspace.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });