nx 22.0.0-beta.3 → 22.0.0-beta.5

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 (85) hide show
  1. package/migrations.json +5 -0
  2. package/package.json +11 -11
  3. package/release/changelog-renderer/index.d.ts +1 -0
  4. package/release/changelog-renderer/index.d.ts.map +1 -1
  5. package/release/changelog-renderer/index.js +46 -15
  6. package/schemas/nx-schema.json +254 -86
  7. package/src/command-line/configure-ai-agents/command-object.d.ts +1 -1
  8. package/src/command-line/configure-ai-agents/command-object.d.ts.map +1 -1
  9. package/src/command-line/configure-ai-agents/command-object.js +18 -4
  10. package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
  11. package/src/command-line/configure-ai-agents/configure-ai-agents.js +58 -31
  12. package/src/command-line/migrate/migrate.d.ts.map +1 -1
  13. package/src/command-line/migrate/migrate.js +0 -4
  14. package/src/command-line/nx-cloud/login/command-object.d.ts.map +1 -1
  15. package/src/command-line/nx-cloud/login/command-object.js +2 -2
  16. package/src/command-line/nx-cloud/logout/command-object.js +1 -1
  17. package/src/command-line/nx-commands.js +1 -1
  18. package/src/command-line/release/changelog.d.ts.map +1 -1
  19. package/src/command-line/release/changelog.js +58 -47
  20. package/src/command-line/release/command-object.d.ts +7 -3
  21. package/src/command-line/release/command-object.d.ts.map +1 -1
  22. package/src/command-line/release/config/config.d.ts +6 -2
  23. package/src/command-line/release/config/config.d.ts.map +1 -1
  24. package/src/command-line/release/config/config.js +124 -61
  25. package/src/command-line/release/config/version-plans.d.ts.map +1 -1
  26. package/src/command-line/release/config/version-plans.js +4 -1
  27. package/src/command-line/release/publish.d.ts.map +1 -1
  28. package/src/command-line/release/publish.js +35 -11
  29. package/src/command-line/release/release.d.ts.map +1 -1
  30. package/src/command-line/release/release.js +31 -30
  31. package/src/command-line/release/utils/git.d.ts +2 -2
  32. package/src/command-line/release/utils/git.d.ts.map +1 -1
  33. package/src/command-line/release/utils/git.js +5 -5
  34. package/src/command-line/release/utils/release-graph.d.ts +219 -0
  35. package/src/command-line/release/utils/release-graph.d.ts.map +1 -0
  36. package/src/command-line/release/utils/release-graph.js +658 -0
  37. package/src/command-line/release/utils/semver.d.ts +1 -2
  38. package/src/command-line/release/utils/semver.d.ts.map +1 -1
  39. package/src/command-line/release/utils/semver.js +3 -5
  40. package/src/command-line/release/utils/shared.d.ts +1 -1
  41. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  42. package/src/command-line/release/utils/shared.js +53 -19
  43. package/src/command-line/release/version/release-group-processor.d.ts +3 -152
  44. package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
  45. package/src/command-line/release/version/release-group-processor.js +58 -569
  46. package/src/command-line/release/version/resolve-current-version.d.ts +1 -1
  47. package/src/command-line/release/version/resolve-current-version.d.ts.map +1 -1
  48. package/src/command-line/release/version/resolve-current-version.js +1 -1
  49. package/src/command-line/release/version/test-utils.d.ts +13 -4
  50. package/src/command-line/release/version/test-utils.d.ts.map +1 -1
  51. package/src/command-line/release/version/test-utils.js +26 -11
  52. package/src/command-line/release/version/version-actions.d.ts +12 -5
  53. package/src/command-line/release/version/version-actions.d.ts.map +1 -1
  54. package/src/command-line/release/version/version-actions.js +36 -19
  55. package/src/command-line/release/version.d.ts +6 -1
  56. package/src/command-line/release/version.d.ts.map +1 -1
  57. package/src/command-line/release/version.js +57 -28
  58. package/src/config/nx-json.d.ts +139 -58
  59. package/src/config/nx-json.d.ts.map +1 -1
  60. package/src/config/nx-json.js +8 -8
  61. package/src/core/graph/main.js +1 -1
  62. package/src/daemon/client/client.d.ts +4 -0
  63. package/src/daemon/client/client.d.ts.map +1 -1
  64. package/src/daemon/client/client.js +23 -0
  65. package/src/daemon/message-types/register-project-graph-listener.d.ts +6 -0
  66. package/src/daemon/message-types/register-project-graph-listener.d.ts.map +1 -0
  67. package/src/daemon/message-types/register-project-graph-listener.js +11 -0
  68. package/src/daemon/server/project-graph-incremental-recomputation.d.ts +3 -1
  69. package/src/daemon/server/project-graph-incremental-recomputation.d.ts.map +1 -1
  70. package/src/daemon/server/project-graph-incremental-recomputation.js +13 -5
  71. package/src/daemon/server/project-graph-listener-sockets.d.ts +8 -0
  72. package/src/daemon/server/project-graph-listener-sockets.d.ts.map +1 -0
  73. package/src/daemon/server/project-graph-listener-sockets.js +24 -0
  74. package/src/daemon/server/server.d.ts.map +1 -1
  75. package/src/daemon/server/server.js +9 -2
  76. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts +3 -0
  77. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts.map +1 -0
  78. package/src/migrations/update-22-0-0/consolidate-release-tag-config.js +100 -0
  79. package/src/native/nx.wasm32-wasi.wasm +0 -0
  80. package/src/tasks-runner/is-tui-enabled.d.ts.map +1 -1
  81. package/src/tasks-runner/is-tui-enabled.js +0 -1
  82. package/src/tasks-runner/run-command.d.ts.map +1 -1
  83. package/src/tasks-runner/run-command.js +5 -2
  84. package/src/utils/package-manager.d.ts.map +1 -1
  85. package/src/utils/package-manager.js +1 -3
@@ -3,7 +3,7 @@ import type { Tree } from '../../../generators/tree';
3
3
  import type { ReleaseGroupWithName } from '../config/filter-release-groups';
4
4
  import { getLatestGitTagForPattern } from '../utils/git';
5
5
  import { ProjectLogger } from './project-logger';
6
- import type { FinalConfigForProject } from './release-group-processor';
6
+ import type { FinalConfigForProject } from '../utils/release-graph';
7
7
  import { VersionActions } from './version-actions';
8
8
  export declare function resolveCurrentVersion(tree: Tree, projectGraphNode: ProjectGraphProjectNode, releaseGroup: ReleaseGroupWithName, versionActions: VersionActions, logger: ProjectLogger, cachedCurrentVersionsPerFixedReleaseGroup: Map<string, // release group name
9
9
  {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-current-version.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/resolve-current-version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,EACD,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,CAAC,MAAM,CAAC,CA8GjB;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,CAAC,CAiFjB"}
1
+ {"version":3,"file":"resolve-current-version.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/resolve-current-version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,EACD,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,CAAC,MAAM,CAAC,CA8GjB;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,CAAC,CAiFjB"}
@@ -48,7 +48,7 @@ async function resolveCurrentVersionFromDisk(tree, projectGraphNode, versionActi
48
48
  if (err === nullVersionError) {
49
49
  throw err;
50
50
  }
51
- throw new Error(`The project "${projectGraphNode.name}" does not have a ${versionActions.validManifestFilenames.join(' or ')} file available in ./${projectGraphNode.data.root}.
51
+ throw new Error(`The project "${projectGraphNode.name}" does not have a ${versionActions.validManifestFilenames.join(' or ')} file available in ${projectGraphNode.data.root}
52
52
 
53
53
  To fix this you will either need to add a ${versionActions.validManifestFilenames.join(' or ')} file at that location, or configure "release" within your nx.json to use a different "currentVersionResolver" or "versionActions" implementation that supports this setup`);
54
54
  }
@@ -2,7 +2,8 @@ import type { NxJsonConfiguration, NxReleaseVersionConfiguration } from '../../.
2
2
  import type { ProjectGraph } from '../../../config/project-graph';
3
3
  import type { Tree } from '../../../generators/tree';
4
4
  import { NxReleaseConfig } from '../config/config';
5
- import { FinalConfigForProject } from './release-group-processor';
5
+ import { type FinalConfigForProject } from '../utils/release-graph';
6
+ import { ReleaseGroupProcessor } from './release-group-processor';
6
7
  import { VersionActions } from './version-actions';
7
8
  export declare function createNxReleaseConfigAndPopulateWorkspace(tree: Tree, graphDefinition: string, additionalNxReleaseConfig: Exclude<NxJsonConfiguration['release'], 'groups'>, mockResolveCurrentVersion?: any, filters?: {
8
9
  projects?: string[];
@@ -10,13 +11,21 @@ export declare function createNxReleaseConfigAndPopulateWorkspace(tree: Tree, gr
10
11
  }): Promise<{
11
12
  projectGraph: ProjectGraph;
12
13
  nxReleaseConfig: NxReleaseConfig;
13
- releaseGroups: import("../config/filter-release-groups").ReleaseGroupWithName[];
14
- releaseGroupToFilteredProjects: Map<import("../config/filter-release-groups").ReleaseGroupWithName, Set<string>>;
15
14
  filters: {
16
15
  projects?: string[];
17
16
  groups?: string[];
18
17
  };
19
18
  }>;
19
+ export declare function createTestReleaseGroupProcessor(tree: Tree, projectGraph: ProjectGraph, nxReleaseConfig: NxReleaseConfig, filters: {
20
+ projects?: string[];
21
+ groups?: string[];
22
+ }, options?: {
23
+ dryRun?: boolean;
24
+ verbose?: boolean;
25
+ firstRelease?: boolean;
26
+ preid?: string;
27
+ userGivenSpecifier?: string;
28
+ }): Promise<ReleaseGroupProcessor>;
20
29
  /**
21
30
  * A non-production grade rust implementation to prove out loading multiple different versionActions in various setups
22
31
  */
@@ -77,7 +86,7 @@ export declare class ExampleNonSemverVersionActions extends VersionActions {
77
86
  export declare function parseGraphDefinition(definition: string): {
78
87
  projects: any;
79
88
  };
80
- export declare function mockResolveVersionActionsForProjectImplementation(tree: Tree, releaseGroup: any, projectGraphNode: any, finalConfigForProject: FinalConfigForProject, isInProjectsToProcess: boolean): Promise<{
89
+ export declare function mockResolveVersionActionsForProjectImplementation(tree: Tree, releaseGroup: any, projectGraphNode: any, finalConfigForProject: FinalConfigForProject): Promise<{
81
90
  versionActionsPath: string;
82
91
  versionActions: ExampleRustVersionActions;
83
92
  afterAllProjectsVersioned?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/test-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/test-utils.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExampleNonSemverVersionActions = exports.ExampleRustVersionActions = void 0;
4
4
  exports.createNxReleaseConfigAndPopulateWorkspace = createNxReleaseConfigAndPopulateWorkspace;
5
+ exports.createTestReleaseGroupProcessor = createTestReleaseGroupProcessor;
5
6
  exports.parseGraphDefinition = parseGraphDefinition;
6
7
  exports.mockResolveVersionActionsForProjectImplementation = mockResolveVersionActionsForProjectImplementation;
7
8
  const j_toml_1 = require("@ltd/j-toml");
@@ -9,7 +10,8 @@ const node_path_1 = require("node:path");
9
10
  const json_1 = require("../../../generators/utils/json");
10
11
  const file_map_utils_1 = require("../../../project-graph/file-map-utils");
11
12
  const config_1 = require("../config/config");
12
- const filter_release_groups_1 = require("../config/filter-release-groups");
13
+ const release_graph_1 = require("../utils/release-graph");
14
+ const release_group_processor_1 = require("./release-group-processor");
13
15
  const version_actions_1 = require("./version-actions");
14
16
  async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition, additionalNxReleaseConfig, mockResolveCurrentVersion, filters = {}) {
15
17
  const graph = parseGraphDefinition(graphDefinition);
@@ -21,10 +23,6 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
21
23
  if (configError) {
22
24
  throw configError;
23
25
  }
24
- let { error: filterError, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, filters.projects, filters.groups);
25
- if (filterError) {
26
- throw filterError;
27
- }
28
26
  // Mock the implementation of resolveCurrentVersion to reliably return the version of the project based on our graph definition
29
27
  mockResolveCurrentVersion?.mockImplementation((_, { name }) => {
30
28
  for (const [projectName, project] of Object.entries(graph.projects)) {
@@ -37,11 +35,28 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
37
35
  return {
38
36
  projectGraph,
39
37
  nxReleaseConfig: nxReleaseConfig,
40
- releaseGroups,
41
- releaseGroupToFilteredProjects,
42
38
  filters,
43
39
  };
44
40
  }
41
+ async function createTestReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, filters, options = {}) {
42
+ const releaseGraph = await (0, release_graph_1.createReleaseGraph)({
43
+ tree,
44
+ projectGraph,
45
+ nxReleaseConfig,
46
+ filters,
47
+ firstRelease: options.firstRelease ?? false,
48
+ preid: options.preid,
49
+ verbose: options.verbose ?? false,
50
+ });
51
+ return new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGraph, {
52
+ dryRun: options.dryRun ?? false,
53
+ verbose: options.verbose ?? false,
54
+ firstRelease: options.firstRelease ?? false,
55
+ preid: options.preid ?? '',
56
+ userGivenSpecifier: options.userGivenSpecifier,
57
+ filters,
58
+ });
59
+ }
45
60
  class ExampleRustVersionActions extends version_actions_1.VersionActions {
46
61
  constructor() {
47
62
  super(...arguments);
@@ -373,13 +388,13 @@ function setupGraph(tree, graph) {
373
388
  }
374
389
  const exampleRustVersionActions = '__EXAMPLE_RUST_VERSION_ACTIONS__';
375
390
  const exampleNonSemverVersionActions = '__EXAMPLE_NON_SEMVER_VERSION_ACTIONS__';
376
- async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject, isInProjectsToProcess) {
391
+ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject) {
377
392
  if (projectGraphNode.data.release?.versionActions ===
378
393
  exampleRustVersionActions ||
379
394
  releaseGroup.versionActions === exampleRustVersionActions) {
380
395
  const versionActions = new ExampleRustVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
381
396
  // Initialize the versionActions with all the required manifest paths etc
382
- await versionActions.init(tree, isInProjectsToProcess);
397
+ await versionActions.init(tree);
383
398
  return {
384
399
  versionActionsPath: exampleRustVersionActions,
385
400
  versionActions,
@@ -390,7 +405,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
390
405
  releaseGroup.versionActions === exampleNonSemverVersionActions) {
391
406
  const versionActions = new ExampleNonSemverVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
392
407
  // Initialize the versionActions with all the required manifest paths etc
393
- await versionActions.init(tree, isInProjectsToProcess);
408
+ await versionActions.init(tree);
394
409
  return {
395
410
  versionActionsPath: exampleNonSemverVersionActions,
396
411
  versionActions,
@@ -402,7 +417,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
402
417
  const JsVersionActions = loaded.default;
403
418
  const versionActions = new JsVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
404
419
  // Initialize the versionActions with all the required manifest paths etc
405
- await versionActions.init(tree, isInProjectsToProcess);
420
+ await versionActions.init(tree);
406
421
  return {
407
422
  versionActionsPath,
408
423
  versionActions: versionActions,
@@ -2,8 +2,8 @@ import { ReleaseType } from 'semver';
2
2
  import { NxReleaseVersionConfiguration } from '../../../config/nx-json';
3
3
  import type { ProjectGraph, ProjectGraphDependency, ProjectGraphProjectNode } from '../../../config/project-graph';
4
4
  import type { Tree } from '../../../generators/tree';
5
- import { ReleaseGroupWithName } from '../config/filter-release-groups';
6
- import { FinalConfigForProject } from './release-group-processor';
5
+ import type { ReleaseGroupWithName } from '../config/filter-release-groups';
6
+ import type { FinalConfigForProject } from '../utils/release-graph';
7
7
  export type SemverBumpType = ReleaseType | 'none';
8
8
  /**
9
9
  * Implementation details of performing any actions after all projects have been versioned.
@@ -27,7 +27,7 @@ export type AfterAllProjectsVersioned = (cwd: string, opts: {
27
27
  changedFiles: string[];
28
28
  deletedFiles: string[];
29
29
  }>;
30
- export declare function resolveVersionActionsForProject(tree: Tree, releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject, isInProjectsToProcess: boolean): Promise<{
30
+ export declare function resolveVersionActionsForProject(tree: Tree, releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject): Promise<{
31
31
  versionActionsPath: string;
32
32
  versionActions: VersionActions;
33
33
  afterAllProjectsVersioned: AfterAllProjectsVersioned;
@@ -59,9 +59,15 @@ export declare abstract class VersionActions {
59
59
  }[];
60
60
  constructor(releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject);
61
61
  /**
62
- * Asynchronous initialization of the version actions and validation of certain configuration options.
62
+ * Asynchronous initialization of the version actions and resolution of manifest paths.
63
+ * Note: This does NOT validate that manifest files exist - that happens later in validate().
63
64
  */
64
- init(tree: Tree, isInProjectsToProcess: boolean): Promise<void>;
65
+ init(tree: Tree): Promise<void>;
66
+ /**
67
+ * Validates that manifest files actually exist.
68
+ * This will be called after all preVersionCommands have run.
69
+ */
70
+ validate(tree: Tree): Promise<void>;
65
71
  /**
66
72
  * The default implementation will calculate the new version based on semver. If semver is not applicable to a
67
73
  * particular versioning use-case, this method should be overridden with custom logic.
@@ -171,6 +177,7 @@ export declare abstract class VersionActions {
171
177
  }
172
178
  export declare class NOOP_VERSION_ACTIONS extends VersionActions {
173
179
  validManifestFilenames: any;
180
+ validate(tree: Tree): Promise<void>;
174
181
  readCurrentVersionFromRegistry(tree: Tree, currentVersionResolverMetadata: NxReleaseVersionConfiguration['currentVersionResolverMetadata']): Promise<{
175
182
  currentVersion: string | null;
176
183
  logText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"version-actions.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/version-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-actions.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/version-actions.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ function resolveVersionActionsPath(path, projectGraphNode) {
32
32
  }
33
33
  }
34
34
  const versionActionsResolutionCache = new Map();
35
- async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphNode, finalConfigForProject, isInProjectsToProcess) {
35
+ async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphNode, finalConfigForProject) {
36
36
  // Project level release version config takes priority, if set
37
37
  const projectVersionConfig = projectGraphNode.data.release?.version;
38
38
  const releaseGroupVersionConfig = releaseGroup.version;
@@ -76,7 +76,7 @@ async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphN
76
76
  }
77
77
  const versionActions = new VersionActionsClass(releaseGroup, projectGraphNode, finalConfigForProject);
78
78
  // Initialize the version actions with all the required manifest paths etc
79
- await versionActions.init(tree, isInProjectsToProcess);
79
+ await versionActions.init(tree);
80
80
  return {
81
81
  versionActionsPath,
82
82
  versionActions,
@@ -99,9 +99,10 @@ class VersionActions {
99
99
  this.manifestsToUpdate = [];
100
100
  }
101
101
  /**
102
- * Asynchronous initialization of the version actions and validation of certain configuration options.
102
+ * Asynchronous initialization of the version actions and resolution of manifest paths.
103
+ * Note: This does NOT validate that manifest files exist - that happens later in validate().
103
104
  */
104
- async init(tree, isInProjectsToProcess) {
105
+ async init(tree) {
105
106
  // Default to the first available source manifest root, if applicable, if no custom manifest roots are provided
106
107
  if (this.validManifestFilenames?.length &&
107
108
  this.finalConfigForProject.manifestRootsToUpdate.length === 0) {
@@ -125,26 +126,38 @@ class VersionActions {
125
126
  }),
126
127
  };
127
128
  });
129
+ // Build manifestsToUpdate but don't validate existence yet as that could break release graph construction before preVersionCommands have run
128
130
  for (const interpolatedManifestRoot of interpolatedManifestRoots) {
129
- let hasValidManifest = false;
130
131
  for (const manifestFilename of this.validManifestFilenames) {
131
132
  const manifestPath = (0, node_path_1.join)(interpolatedManifestRoot.path, manifestFilename);
132
- if (tree.exists(manifestPath)) {
133
- this.manifestsToUpdate.push({
134
- ...interpolatedManifestRoot,
135
- manifestPath,
136
- });
137
- hasValidManifest = true;
138
- break;
139
- }
133
+ // Just add the first matching filename pattern, actual existence check happens in validate()
134
+ this.manifestsToUpdate.push({
135
+ ...interpolatedManifestRoot,
136
+ manifestPath,
137
+ });
138
+ break;
140
139
  }
141
- /**
142
- * If projects or groups filters are applied, it is possible that the project is not being actively processed
143
- * and we should not throw an error in this case.
144
- */
145
- if (!hasValidManifest && isInProjectsToProcess) {
140
+ }
141
+ }
142
+ /**
143
+ * Validates that manifest files actually exist.
144
+ * This will be called after all preVersionCommands have run.
145
+ */
146
+ async validate(tree) {
147
+ // Skip if no manifest files are expected
148
+ if (!this.validManifestFilenames?.length) {
149
+ return;
150
+ }
151
+ // Simply check each manifest exists
152
+ for (const manifest of this.manifestsToUpdate) {
153
+ if (!tree.exists(manifest.manifestPath)) {
146
154
  const validManifestFilenames = this.validManifestFilenames?.join(' or ');
147
- throw new Error(`The project "${this.projectGraphNode.name}" does not have a ${validManifestFilenames} file available in ./${interpolatedManifestRoot.path}.
155
+ // Get directory path for error message using Node's path module for cross-platform compatibility
156
+ let rootPath = manifest.manifestPath;
157
+ for (const filename of this.validManifestFilenames) {
158
+ rootPath = rootPath.replace(filename, '');
159
+ }
160
+ throw new Error(`The project "${this.projectGraphNode.name}" does not have a ${validManifestFilenames} file available in ${rootPath}
148
161
 
149
162
  To fix this you will either need to add a ${validManifestFilenames} file at that location, or configure "release" within your nx.json to exclude "${this.projectGraphNode.name}" from the current release group, or amend the "release.version.manifestRootsToUpdate" configuration to point to where the relevant manifest should be.
150
163
 
@@ -204,6 +217,10 @@ class NOOP_VERSION_ACTIONS extends VersionActions {
204
217
  super(...arguments);
205
218
  this.validManifestFilenames = null;
206
219
  }
220
+ async validate(tree) {
221
+ // Nothing to validate, patch base method
222
+ return;
223
+ }
207
224
  readCurrentVersionFromRegistry(tree, currentVersionResolverMetadata) {
208
225
  return Promise.resolve(null);
209
226
  }
@@ -1,7 +1,7 @@
1
1
  import { NxReleaseConfiguration } from '../../config/nx-json';
2
2
  import { VersionOptions } from './command-object';
3
+ import { ReleaseGraph } from './utils/release-graph';
3
4
  import { VersionData } from './utils/shared';
4
- export declare const validReleaseVersionPrefixes: readonly ["auto", "", "~", "^", "="];
5
5
  export interface NxReleaseVersionResult {
6
6
  /**
7
7
  * In one specific (and very common) case, an overall workspace version is relevant, for example when there is
@@ -15,6 +15,11 @@ export interface NxReleaseVersionResult {
15
15
  */
16
16
  workspaceVersion: (string | null) | undefined;
17
17
  projectsVersionData: VersionData;
18
+ /**
19
+ * The release graph that was built or reused during this operation.
20
+ * This can be passed to subsequent operations (changelog, publish) to avoid recomputing.
21
+ */
22
+ releaseGraph: ReleaseGraph;
18
23
  }
19
24
  export declare const releaseVersionCLIHandler: (args: VersionOptions) => Promise<number>;
20
25
  export declare function createAPI(overrideReleaseConfig: NxReleaseConfiguration): (args: VersionOptions) => Promise<NxReleaseVersionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/version.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EAGvB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAkBlD,OAAO,EACL,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AASxB,eAAO,MAAM,2BAA2B,sCAAuC,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;OASG;IACH,gBAAgB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,mBAAmB,EAAE,WAAW,CAAC;CAClC;AAED,eAAO,MAAM,wBAAwB,GAAI,MAAM,cAAc,oBACN,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAOnE,MAAM,cAAc,KACnB,OAAO,CAAC,sBAAsB,CAAC,CA0UnC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/version.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EAGvB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAclD,OAAO,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EACL,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AAKxB,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;OASG;IACH,gBAAgB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,mBAAmB,EAAE,WAAW,CAAC;IACjC;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,eAAO,MAAM,wBAAwB,GAAI,MAAM,cAAc,oBACN,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAOnE,MAAM,cAAc,KACnB,OAAO,CAAC,sBAAsB,CAAC,CAyWnC"}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.releaseVersionCLIHandler = exports.validReleaseVersionPrefixes = void 0;
3
+ exports.releaseVersionCLIHandler = void 0;
4
4
  exports.createAPI = createAPI;
5
5
  const chalk = require("chalk");
6
6
  const node_child_process_1 = require("node:child_process");
7
7
  const node_fs_1 = require("node:fs");
8
8
  const nx_json_1 = require("../../config/nx-json");
9
+ const run_commands_impl_1 = require("../../executors/run-commands/run-commands.impl");
9
10
  const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
10
11
  const tree_1 = require("../../generators/tree");
11
12
  const file_map_utils_1 = require("../../project-graph/file-map-utils");
@@ -16,18 +17,15 @@ const path_1 = require("../../utils/path");
16
17
  const workspace_root_1 = require("../../utils/workspace-root");
17
18
  const config_1 = require("./config/config");
18
19
  const deep_merge_json_1 = require("./config/deep-merge-json");
19
- const filter_release_groups_1 = require("./config/filter-release-groups");
20
20
  const version_plans_1 = require("./config/version-plans");
21
21
  const git_1 = require("./utils/git");
22
22
  const print_changes_1 = require("./utils/print-changes");
23
23
  const print_config_1 = require("./utils/print-config");
24
+ const release_graph_1 = require("./utils/release-graph");
24
25
  const resolve_nx_json_error_message_1 = require("./utils/resolve-nx-json-error-message");
25
26
  const shared_1 = require("./utils/shared");
26
- const release_group_processor_1 = require("./version/release-group-processor");
27
27
  const version_plan_utils_1 = require("./utils/version-plan-utils");
28
- const LARGE_BUFFER = 1024 * 1000000;
29
- // Reexport some utils for use in plugin release-version generator implementations
30
- exports.validReleaseVersionPrefixes = ['auto', '', '~', '^', '='];
28
+ const release_group_processor_1 = require("./version/release-group-processor");
31
29
  const releaseVersionCLIHandler = (args) => (0, handle_errors_1.handleErrors)(args.verbose, () => createAPI({})(args));
32
30
  exports.releaseVersionCLIHandler = releaseVersionCLIHandler;
33
31
  function createAPI(overrideReleaseConfig) {
@@ -71,27 +69,40 @@ function createAPI(overrideReleaseConfig) {
71
69
  });
72
70
  process.exit(1);
73
71
  }
74
- const { error: filterError, filterLog, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, args.projects, args.groups);
75
- if (filterError) {
76
- output_1.output.error(filterError);
77
- process.exit(1);
78
- }
79
- if (filterLog &&
72
+ const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, args.verbose);
73
+ // Use pre-built release graph if provided, otherwise create a new one
74
+ const releaseGraph = args.releaseGraph ||
75
+ (await (0, release_graph_1.createReleaseGraph)({
76
+ tree,
77
+ projectGraph,
78
+ nxReleaseConfig,
79
+ filters: {
80
+ projects: args.projects,
81
+ groups: args.groups,
82
+ },
83
+ firstRelease: args.firstRelease,
84
+ verbose: args.verbose,
85
+ preid: args.preid,
86
+ versionActionsOptionsOverrides: args.versionActionsOptionsOverrides,
87
+ }));
88
+ // Display filter log if filters were applied
89
+ if (releaseGraph.filterLog &&
80
90
  process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG !== 'true') {
81
- output_1.output.note(filterLog);
91
+ output_1.output.note(releaseGraph.filterLog);
82
92
  }
83
93
  if (!args.specifier) {
84
94
  const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
85
- await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
95
+ await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
86
96
  // Validate version plans against the filter after resolution
87
- const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGroups, releaseGroupToFilteredProjects);
97
+ const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
88
98
  if (versionPlanValidationError) {
89
99
  output_1.output.error(versionPlanValidationError);
90
100
  process.exit(1);
91
101
  }
92
102
  }
93
103
  else {
94
- if (args.verbose && releaseGroups.some((g) => !!g.versionPlans)) {
104
+ if (args.verbose &&
105
+ releaseGraph.releaseGroups.some((g) => !!g.versionPlans)) {
95
106
  console.log(`Skipping version plan discovery as a specifier was provided`);
96
107
  }
97
108
  }
@@ -108,14 +119,24 @@ function createAPI(overrideReleaseConfig) {
108
119
  });
109
120
  /**
110
121
  * Run any configured pre-version command for the selected release groups
122
+ * in topological order
111
123
  */
112
- for (const releaseGroup of releaseGroups) {
124
+ for (const groupName of releaseGraph.sortedReleaseGroups) {
125
+ const releaseGroup = releaseGraph.releaseGroups.find((g) => g.name === groupName);
126
+ if (!releaseGroup) {
127
+ // Release group was filtered out, skip
128
+ continue;
129
+ }
113
130
  runPreVersionCommand(releaseGroup.version?.groupPreVersionCommand, {
114
131
  dryRun: args.dryRun,
115
132
  verbose: args.verbose,
116
133
  }, releaseGroup);
117
134
  }
118
- const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, args.verbose);
135
+ /**
136
+ * Validate the resolved data for the release graph, e.g. that manifest files exist for all projects that will be processed.
137
+ * This happens after preVersionCommands run, as those commands may create manifest files needed for versioning.
138
+ */
139
+ await releaseGraph.validate(tree);
119
140
  const commitMessage = args.gitCommitMessage || nxReleaseConfig.version.git.commitMessage;
120
141
  /**
121
142
  * additionalChangedFiles are files which need to be updated as a side-effect of versioning (such as package manager lock files),
@@ -123,7 +144,7 @@ function createAPI(overrideReleaseConfig) {
123
144
  */
124
145
  const additionalChangedFiles = new Set();
125
146
  const additionalDeletedFiles = new Set();
126
- const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGroups, releaseGroupToFilteredProjects, {
147
+ const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGraph, {
127
148
  dryRun: args.dryRun,
128
149
  verbose: args.verbose,
129
150
  firstRelease: args.firstRelease,
@@ -136,7 +157,6 @@ function createAPI(overrideReleaseConfig) {
136
157
  versionActionsOptionsOverrides: args.versionActionsOptionsOverrides,
137
158
  });
138
159
  try {
139
- await processor.init();
140
160
  await processor.processGroups();
141
161
  // Delete processed version plan files if applicable
142
162
  if (args.deleteVersionPlans) {
@@ -174,8 +194,14 @@ function createAPI(overrideReleaseConfig) {
174
194
  }
175
195
  /**
176
196
  * Run any configured docker pre-version command for the selected release groups
197
+ * in topological order (dependencies before dependents)
177
198
  */
178
- for (const releaseGroup of releaseGroups) {
199
+ for (const groupName of releaseGraph.sortedReleaseGroups) {
200
+ const releaseGroup = releaseGraph.releaseGroups.find((g) => g.name === groupName);
201
+ if (!releaseGroup) {
202
+ // Release group was filtered out, skip
203
+ continue;
204
+ }
179
205
  if (releaseGroup.docker?.groupPreVersionCommand) {
180
206
  runPreVersionCommand(releaseGroup.docker.groupPreVersionCommand, {
181
207
  dryRun: args.dryRun,
@@ -184,7 +210,8 @@ function createAPI(overrideReleaseConfig) {
184
210
  }
185
211
  }
186
212
  // TODO(colum): Remove when Docker support is no longer experimental
187
- if (nxReleaseConfig.docker || releaseGroups.some((rg) => rg.docker)) {
213
+ if (nxReleaseConfig.docker ||
214
+ releaseGraph.releaseGroups.some((rg) => rg.docker)) {
188
215
  output_1.output.warn({
189
216
  title: 'Warning',
190
217
  bodyLines: [
@@ -196,15 +223,15 @@ function createAPI(overrideReleaseConfig) {
196
223
  const versionData = processor.getVersionData();
197
224
  // Resolve any git tags as early as possible so that we can hard error in case of any duplicates before reaching the actual git command
198
225
  const gitTagValues = args.gitTag ?? nxReleaseConfig.version.git.tag
199
- ? (0, shared_1.createGitTagValues)(releaseGroups, releaseGroupToFilteredProjects, versionData)
226
+ ? (0, shared_1.createGitTagValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData)
200
227
  : [];
201
228
  (0, shared_1.handleDuplicateGitTags)(gitTagValues);
202
229
  // Only applicable when there is a single release group with a fixed relationship
203
230
  let workspaceVersion = undefined;
204
- if (releaseGroups.length === 1) {
205
- const releaseGroup = releaseGroups[0];
231
+ if (releaseGraph.releaseGroups.length === 1) {
232
+ const releaseGroup = releaseGraph.releaseGroups[0];
206
233
  if (releaseGroup.projectsRelationship === 'fixed') {
207
- const releaseGroupProjectNames = Array.from(releaseGroupToFilteredProjects.get(releaseGroup));
234
+ const releaseGroupProjectNames = Array.from(releaseGraph.releaseGroupToFilteredProjects.get(releaseGroup));
208
235
  workspaceVersion = versionData[releaseGroupProjectNames[0]].newVersion; // all projects have the same version so we can just grab the first
209
236
  }
210
237
  }
@@ -218,6 +245,7 @@ function createAPI(overrideReleaseConfig) {
218
245
  return {
219
246
  workspaceVersion,
220
247
  projectsVersionData: versionData,
248
+ releaseGraph,
221
249
  };
222
250
  }
223
251
  if (args.gitCommit ?? nxReleaseConfig.version.git.commit) {
@@ -226,7 +254,7 @@ function createAPI(overrideReleaseConfig) {
226
254
  deletedFiles,
227
255
  isDryRun: !!args.dryRun,
228
256
  isVerbose: !!args.verbose,
229
- gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects, versionData, commitMessage),
257
+ gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData, commitMessage),
230
258
  gitCommitArgs: args.gitCommitArgs || nxReleaseConfig.version.git.commitArgs,
231
259
  });
232
260
  }
@@ -263,6 +291,7 @@ function createAPI(overrideReleaseConfig) {
263
291
  return {
264
292
  workspaceVersion,
265
293
  projectsVersionData: versionData,
294
+ releaseGraph,
266
295
  };
267
296
  };
268
297
  }
@@ -317,7 +346,7 @@ function runPreVersionCommand(preVersionCommand, { dryRun, verbose }, releaseGro
317
346
  try {
318
347
  (0, node_child_process_1.execSync)(preVersionCommand, {
319
348
  encoding: 'utf-8',
320
- maxBuffer: LARGE_BUFFER,
349
+ maxBuffer: run_commands_impl_1.LARGE_BUFFER,
321
350
  stdio,
322
351
  env,
323
352
  windowsHide: false,