nx 22.0.0-beta.2 → 22.0.0-beta.4
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.
- package/migrations.json +5 -0
- package/package.json +12 -12
- package/project.json +2 -1
- package/schemas/nx-schema.json +268 -162
- package/schemas/project-schema.json +72 -12
- package/src/adapter/angular-json.d.ts.map +1 -1
- package/src/adapter/angular-json.js +13 -17
- package/src/command-line/configure-ai-agents/command-object.d.ts +1 -1
- package/src/command-line/configure-ai-agents/command-object.d.ts.map +1 -1
- package/src/command-line/configure-ai-agents/command-object.js +18 -4
- package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
- package/src/command-line/configure-ai-agents/configure-ai-agents.js +58 -31
- package/src/command-line/init/init-v2.js +1 -1
- package/src/command-line/nx-cloud/login/command-object.d.ts.map +1 -1
- package/src/command-line/nx-cloud/login/command-object.js +2 -2
- package/src/command-line/nx-cloud/logout/command-object.js +1 -1
- package/src/command-line/release/changelog.d.ts.map +1 -1
- package/src/command-line/release/changelog.js +41 -32
- package/src/command-line/release/command-object.d.ts +7 -9
- package/src/command-line/release/command-object.d.ts.map +1 -1
- package/src/command-line/release/config/config.d.ts +1 -1
- package/src/command-line/release/config/config.d.ts.map +1 -1
- package/src/command-line/release/config/config.js +55 -133
- package/src/command-line/release/config/version-plans.d.ts.map +1 -1
- package/src/command-line/release/config/version-plans.js +4 -1
- package/src/command-line/release/plan-check.d.ts.map +1 -1
- package/src/command-line/release/plan-check.js +1 -3
- package/src/command-line/release/plan.d.ts.map +1 -1
- package/src/command-line/release/plan.js +1 -3
- package/src/command-line/release/publish.d.ts.map +1 -1
- package/src/command-line/release/publish.js +36 -14
- package/src/command-line/release/release.d.ts.map +1 -1
- package/src/command-line/release/release.js +32 -33
- package/src/command-line/release/utils/git.d.ts.map +1 -1
- package/src/command-line/release/utils/git.js +3 -1
- package/src/command-line/release/utils/release-graph.d.ts +219 -0
- package/src/command-line/release/utils/release-graph.d.ts.map +1 -0
- package/src/command-line/release/utils/release-graph.js +658 -0
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts +2 -1
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts.map +1 -1
- package/src/command-line/release/utils/semver.d.ts +14 -9
- package/src/command-line/release/utils/semver.d.ts.map +1 -1
- package/src/command-line/release/utils/semver.js +29 -25
- package/src/command-line/release/utils/shared.d.ts +5 -2
- package/src/command-line/release/utils/shared.d.ts.map +1 -1
- package/src/command-line/release/utils/shared.js +82 -26
- package/src/command-line/release/utils/test/test-utils.d.ts +20 -0
- package/src/command-line/release/utils/test/test-utils.d.ts.map +1 -0
- package/src/command-line/release/utils/test/test-utils.js +24 -0
- package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts.map +1 -1
- package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +10 -1
- package/src/command-line/release/version/release-group-processor.d.ts +3 -152
- package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
- package/src/command-line/release/version/release-group-processor.js +50 -570
- package/src/command-line/release/version/resolve-current-version.d.ts +1 -1
- package/src/command-line/release/version/resolve-current-version.d.ts.map +1 -1
- package/src/command-line/release/version/resolve-current-version.js +1 -1
- package/src/command-line/release/version/test-utils.d.ts +13 -4
- package/src/command-line/release/version/test-utils.d.ts.map +1 -1
- package/src/command-line/release/version/test-utils.js +26 -15
- package/src/command-line/release/version/version-actions.d.ts +12 -5
- package/src/command-line/release/version/version-actions.d.ts.map +1 -1
- package/src/command-line/release/version/version-actions.js +36 -19
- package/src/command-line/release/version.d.ts +6 -1
- package/src/command-line/release/version.d.ts.map +1 -1
- package/src/command-line/release/version.js +58 -36
- package/src/config/nx-json.d.ts +28 -35
- package/src/config/nx-json.d.ts.map +1 -1
- package/src/config/nx-json.js +8 -8
- package/src/config/workspace-json-project-json.d.ts +2 -2
- package/src/config/workspace-json-project-json.d.ts.map +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/devkit-exports.d.ts +1 -1
- package/src/devkit-exports.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-changelog-config-changes.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-version-config-changes.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-version-config-changes.js +5 -15
- package/src/migrations/update-22-0-0/release-version-config-changes.d.ts +3 -0
- package/src/migrations/update-22-0-0/release-version-config-changes.d.ts.map +1 -0
- package/src/migrations/update-22-0-0/release-version-config-changes.js +101 -0
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/plugins/js/index.d.ts +1 -2
- package/src/plugins/js/index.d.ts.map +1 -1
- package/src/plugins/js/index.js +28 -32
- package/src/plugins/js/lock-file/lock-file.d.ts +2 -2
- package/src/plugins/js/lock-file/lock-file.d.ts.map +1 -1
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +1 -1
- package/src/project-graph/plugins/loaded-nx-plugin.d.ts.map +1 -1
- package/src/project-graph/plugins/loaded-nx-plugin.js +8 -6
- package/src/project-graph/plugins/public-api.d.ts +1 -36
- package/src/project-graph/plugins/public-api.d.ts.map +1 -1
- package/src/project-graph/plugins/utils.d.ts +4 -2
- package/src/project-graph/plugins/utils.d.ts.map +1 -1
- package/src/tasks-runner/run-command.js +2 -2
- package/src/command-line/release/config/use-legacy-versioning.d.ts +0 -3
- package/src/command-line/release/config/use-legacy-versioning.d.ts.map +0 -1
- package/src/command-line/release/config/use-legacy-versioning.js +0 -9
- package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts +0 -8
- package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts.map +0 -1
- package/src/command-line/release/utils/batch-projects-by-generator-config.js +0 -39
- package/src/command-line/release/version-legacy.d.ts +0 -47
- package/src/command-line/release/version-legacy.d.ts.map +0 -1
- package/src/command-line/release/version-legacy.js +0 -453
|
@@ -12,8 +12,6 @@ const output_1 = require("../../utils/output");
|
|
|
12
12
|
const changelog_1 = require("./changelog");
|
|
13
13
|
const config_1 = require("./config/config");
|
|
14
14
|
const deep_merge_json_1 = require("./config/deep-merge-json");
|
|
15
|
-
const filter_release_groups_1 = require("./config/filter-release-groups");
|
|
16
|
-
const use_legacy_versioning_1 = require("./config/use-legacy-versioning");
|
|
17
15
|
const version_plans_1 = require("./config/version-plans");
|
|
18
16
|
const publish_1 = require("./publish");
|
|
19
17
|
const git_1 = require("./utils/git");
|
|
@@ -49,8 +47,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
49
47
|
// Apply default configuration to any optional user configuration
|
|
50
48
|
const { error: configError, nxReleaseConfig } = await (0, config_1.createNxReleaseConfig)(projectGraph, await (0, file_map_utils_1.createProjectFileMapUsingProjectGraph)(projectGraph), userProvidedReleaseConfig);
|
|
51
49
|
if (configError) {
|
|
52
|
-
|
|
53
|
-
return await (0, config_1.handleNxReleaseConfigError)(configError, USE_LEGACY_VERSIONING);
|
|
50
|
+
return await (0, config_1.handleNxReleaseConfigError)(configError);
|
|
54
51
|
}
|
|
55
52
|
// --print-config exits directly as it is not designed to be combined with any other programmatic operations
|
|
56
53
|
if (args.printConfig) {
|
|
@@ -60,16 +57,6 @@ function createAPI(overrideReleaseConfig) {
|
|
|
60
57
|
isDebug: args.printConfig === 'debug',
|
|
61
58
|
});
|
|
62
59
|
}
|
|
63
|
-
const { error: filterError, filterLog, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, args.projects, args.groups);
|
|
64
|
-
if (filterError) {
|
|
65
|
-
output_1.output.error(filterError);
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
if (filterLog) {
|
|
69
|
-
output_1.output.note(filterLog);
|
|
70
|
-
}
|
|
71
|
-
// Do not repeat the filter log in the release subcommands
|
|
72
|
-
process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG = 'true';
|
|
73
60
|
const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
|
|
74
61
|
if (args.specifier && rawVersionPlans.length > 0) {
|
|
75
62
|
output_1.output.error({
|
|
@@ -86,21 +73,21 @@ function createAPI(overrideReleaseConfig) {
|
|
|
86
73
|
const shouldStage = (shouldCommit || userProvidedReleaseConfig.git?.stageChanges) ?? false;
|
|
87
74
|
const shouldTag = userProvidedReleaseConfig.git?.tag ?? true;
|
|
88
75
|
const shouldCreateWorkspaceRemoteRelease = shouldCreateRemoteRelease(nxReleaseConfig.changelog.workspaceChangelog);
|
|
89
|
-
|
|
90
|
-
const shouldPush = (shouldCreateWorkspaceRemoteRelease ||
|
|
91
|
-
releaseGroups.some((group) => shouldCreateRemoteRelease(group.changelog))) ??
|
|
92
|
-
false;
|
|
93
|
-
const versionResult = await releaseVersion({
|
|
76
|
+
const { workspaceVersion, projectsVersionData, releaseGraph, } = await releaseVersion({
|
|
94
77
|
...args,
|
|
95
78
|
stageChanges: shouldStage,
|
|
96
79
|
gitCommit: false,
|
|
97
80
|
gitTag: false,
|
|
98
81
|
deleteVersionPlans: false,
|
|
99
82
|
});
|
|
83
|
+
// Suppress the filter log for the changelog command as it would have already been printed by the version command
|
|
84
|
+
process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG = 'true';
|
|
100
85
|
const changelogResult = await releaseChangelog({
|
|
101
86
|
...args,
|
|
102
|
-
|
|
103
|
-
|
|
87
|
+
// Re-use existing release graph
|
|
88
|
+
releaseGraph,
|
|
89
|
+
versionData: projectsVersionData,
|
|
90
|
+
version: workspaceVersion,
|
|
104
91
|
stageChanges: shouldStage,
|
|
105
92
|
gitCommit: false,
|
|
106
93
|
gitTag: false,
|
|
@@ -108,16 +95,16 @@ function createAPI(overrideReleaseConfig) {
|
|
|
108
95
|
createRelease: false,
|
|
109
96
|
deleteVersionPlans: false,
|
|
110
97
|
});
|
|
111
|
-
await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
|
|
98
|
+
await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
|
|
112
99
|
// Validate version plans against the filter after resolution
|
|
113
|
-
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGroups, releaseGroupToFilteredProjects);
|
|
100
|
+
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
|
|
114
101
|
if (versionPlanValidationError) {
|
|
115
102
|
output_1.output.error(versionPlanValidationError);
|
|
116
103
|
process.exit(1);
|
|
117
104
|
}
|
|
118
105
|
const planFiles = new Set();
|
|
119
|
-
releaseGroups.forEach((group) => {
|
|
120
|
-
const filteredProjects = releaseGroupToFilteredProjects.get(group);
|
|
106
|
+
releaseGraph.releaseGroups.forEach((group) => {
|
|
107
|
+
const filteredProjects = releaseGraph.releaseGroupToFilteredProjects.get(group);
|
|
121
108
|
if (group.resolvedVersionPlans) {
|
|
122
109
|
// Check each version plan individually to see if it should be deleted
|
|
123
110
|
const plansToDelete = [];
|
|
@@ -164,7 +151,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
164
151
|
if (shouldCommit) {
|
|
165
152
|
output_1.output.logSingleLine(`Committing changes with git`);
|
|
166
153
|
const commitMessage = nxReleaseConfig.git.commitMessage;
|
|
167
|
-
const commitMessageValues = (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects,
|
|
154
|
+
const commitMessageValues = (0, shared_1.createCommitMessageValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, projectsVersionData, commitMessage);
|
|
168
155
|
await (0, git_1.gitCommit)({
|
|
169
156
|
messages: commitMessageValues,
|
|
170
157
|
additionalArgs: nxReleaseConfig.git.commitArgs,
|
|
@@ -175,7 +162,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
175
162
|
if (shouldTag) {
|
|
176
163
|
output_1.output.logSingleLine(`Tagging commit with git`);
|
|
177
164
|
// 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
|
|
178
|
-
const gitTagValues = (0, shared_1.createGitTagValues)(releaseGroups, releaseGroupToFilteredProjects,
|
|
165
|
+
const gitTagValues = (0, shared_1.createGitTagValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, projectsVersionData);
|
|
179
166
|
(0, shared_1.handleDuplicateGitTags)(gitTagValues);
|
|
180
167
|
for (const tag of gitTagValues) {
|
|
181
168
|
await (0, git_1.gitTag)({
|
|
@@ -188,6 +175,10 @@ function createAPI(overrideReleaseConfig) {
|
|
|
188
175
|
}
|
|
189
176
|
}
|
|
190
177
|
let hasPushedChanges = false;
|
|
178
|
+
// If the workspace or any of the release groups specify that a remote release should be created, we need to push the changes to the remote
|
|
179
|
+
const shouldPush = (shouldCreateWorkspaceRemoteRelease ||
|
|
180
|
+
releaseGraph.releaseGroups.some((group) => shouldCreateRemoteRelease(group.changelog))) ??
|
|
181
|
+
false;
|
|
191
182
|
if (shouldPush) {
|
|
192
183
|
output_1.output.logSingleLine(`Pushing to git remote "origin"`);
|
|
193
184
|
await (0, git_1.gitPush)({
|
|
@@ -211,7 +202,11 @@ function createAPI(overrideReleaseConfig) {
|
|
|
211
202
|
latestCommit = await (0, git_1.getCommitHash)('HEAD');
|
|
212
203
|
await remoteReleaseClient.createOrUpdateRelease(changelogResult.workspaceChangelog.releaseVersion, changelogResult.workspaceChangelog.contents, latestCommit, { dryRun: args.dryRun });
|
|
213
204
|
}
|
|
214
|
-
for (const
|
|
205
|
+
for (const releaseGroupName of releaseGraph.sortedReleaseGroups) {
|
|
206
|
+
const releaseGroup = releaseGraph.releaseGroups.find((g) => g.name === releaseGroupName);
|
|
207
|
+
if (!releaseGroup) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
215
210
|
const shouldCreateProjectRemoteReleases = shouldCreateRemoteRelease(releaseGroup.changelog);
|
|
216
211
|
if (shouldCreateProjectRemoteReleases &&
|
|
217
212
|
changelogResult.projectChangelogs) {
|
|
@@ -221,7 +216,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
221
216
|
.createRelease);
|
|
222
217
|
const projects = args.projects?.length
|
|
223
218
|
? // If the user has passed a list of projects, we need to use the filtered list of projects within the release group
|
|
224
|
-
Array.from(releaseGroupToFilteredProjects.get(releaseGroup))
|
|
219
|
+
Array.from(releaseGraph.releaseGroupToFilteredProjects.get(releaseGroup))
|
|
225
220
|
: // Otherwise, we use the full list of projects within the release group
|
|
226
221
|
releaseGroup.projects;
|
|
227
222
|
const projectNodes = projects.map((name) => projectGraph.nodes[name]);
|
|
@@ -243,8 +238,8 @@ function createAPI(overrideReleaseConfig) {
|
|
|
243
238
|
}
|
|
244
239
|
let hasNewVersion = false;
|
|
245
240
|
// null means that all projects are versioned together but there were no changes
|
|
246
|
-
if (
|
|
247
|
-
hasNewVersion = Object.values(
|
|
241
|
+
if (workspaceVersion !== null) {
|
|
242
|
+
hasNewVersion = Object.values(projectsVersionData).some((version) =>
|
|
248
243
|
/**
|
|
249
244
|
* There is a scenario where applications will not have a newVersion created by VerisonActions,
|
|
250
245
|
* however, there will still be a dockerVersion created from the docker release.
|
|
@@ -259,7 +254,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
259
254
|
if (shouldPublish) {
|
|
260
255
|
const publishResults = await releasePublish({
|
|
261
256
|
...args,
|
|
262
|
-
versionData:
|
|
257
|
+
versionData: projectsVersionData,
|
|
263
258
|
});
|
|
264
259
|
const allExitOk = Object.values(publishResults).every((result) => result.code === 0);
|
|
265
260
|
if (!allExitOk) {
|
|
@@ -270,7 +265,11 @@ function createAPI(overrideReleaseConfig) {
|
|
|
270
265
|
else {
|
|
271
266
|
output_1.output.logSingleLine('Skipped publishing packages.');
|
|
272
267
|
}
|
|
273
|
-
return
|
|
268
|
+
return {
|
|
269
|
+
workspaceVersion,
|
|
270
|
+
projectsVersionData,
|
|
271
|
+
releaseGraph,
|
|
272
|
+
};
|
|
274
273
|
};
|
|
275
274
|
}
|
|
276
275
|
async function promptForPublish() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/git.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gCAAgC;IAC/C,oBAAoB,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B,EAAE,OAAO,CAAC;IACxC,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAUD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gCAAgC,GACxC,gBAAgB,CAclB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,iBAAiB,EAAE,MAAM,EACzB,2BAA2B,IAAK,EAChC,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,11 +140,13 @@ async function getLatestGitTagForPattern(releaseTagPattern, additionalInterpolat
|
|
|
140
140
|
const interpolatedTagPattern = (0, utils_1.interpolate)(releaseTagPattern, {
|
|
141
141
|
version: '%v%',
|
|
142
142
|
projectName: '%p%',
|
|
143
|
+
releaseGroupName: '%rg%',
|
|
143
144
|
...additionalInterpolationData,
|
|
144
145
|
});
|
|
145
146
|
const tagRegexp = `^${escapeRegExp(interpolatedTagPattern)
|
|
146
147
|
.replace('%v%', '(.+)')
|
|
147
|
-
.replace('%p%', '(.+)')
|
|
148
|
+
.replace('%p%', '(.+)')
|
|
149
|
+
.replace('%rg%', '(.+)')}`;
|
|
148
150
|
const matchingTags = tags.filter((tag) => {
|
|
149
151
|
if (releaseTagPatternRequireSemver) {
|
|
150
152
|
// Match against Semver Regex when using semverVersioning to ensure only valid semver tags are matched
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import type { NxReleaseDockerConfiguration, NxReleaseVersionConfiguration } from '../../../config/nx-json';
|
|
2
|
+
import type { ProjectGraph } from '../../../config/project-graph';
|
|
3
|
+
import type { Tree } from '../../../generators/tree';
|
|
4
|
+
import { type NxReleaseConfig } from '../config/config';
|
|
5
|
+
import type { ReleaseGroupWithName } from '../config/filter-release-groups';
|
|
6
|
+
import { ProjectLogger } from '../version/project-logger';
|
|
7
|
+
import { type AfterAllProjectsVersioned, type VersionActions } from '../version/version-actions';
|
|
8
|
+
/**
|
|
9
|
+
* Final configuration for a project after applying release group and project level overrides
|
|
10
|
+
*/
|
|
11
|
+
export interface FinalConfigForProject {
|
|
12
|
+
specifierSource: NxReleaseVersionConfiguration['specifierSource'];
|
|
13
|
+
currentVersionResolver: NxReleaseVersionConfiguration['currentVersionResolver'];
|
|
14
|
+
currentVersionResolverMetadata: NxReleaseVersionConfiguration['currentVersionResolverMetadata'];
|
|
15
|
+
fallbackCurrentVersionResolver: NxReleaseVersionConfiguration['fallbackCurrentVersionResolver'];
|
|
16
|
+
versionPrefix: NxReleaseVersionConfiguration['versionPrefix'];
|
|
17
|
+
preserveLocalDependencyProtocols: NxReleaseVersionConfiguration['preserveLocalDependencyProtocols'];
|
|
18
|
+
preserveMatchingDependencyRanges: NxReleaseVersionConfiguration['preserveMatchingDependencyRanges'];
|
|
19
|
+
versionActionsOptions: NxReleaseVersionConfiguration['versionActionsOptions'];
|
|
20
|
+
manifestRootsToUpdate: Array<Exclude<NxReleaseVersionConfiguration['manifestRootsToUpdate'][number], string>>;
|
|
21
|
+
dockerOptions: NxReleaseDockerConfiguration & {
|
|
22
|
+
groupPreVersionCommand?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
interface GroupNode {
|
|
26
|
+
group: ReleaseGroupWithName;
|
|
27
|
+
dependencies: Set<string>;
|
|
28
|
+
dependents: Set<string>;
|
|
29
|
+
}
|
|
30
|
+
export interface CreateReleaseGraphOptions {
|
|
31
|
+
tree: Tree;
|
|
32
|
+
projectGraph: ProjectGraph;
|
|
33
|
+
nxReleaseConfig: NxReleaseConfig;
|
|
34
|
+
filters: {
|
|
35
|
+
projects?: string[];
|
|
36
|
+
groups?: string[];
|
|
37
|
+
};
|
|
38
|
+
firstRelease: boolean;
|
|
39
|
+
preid?: string;
|
|
40
|
+
verbose: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Current version resolution is not needed for publishing, so in cases where the publish subcommand needs to build a release graph,
|
|
43
|
+
* we allow it to skip this step.
|
|
44
|
+
*/
|
|
45
|
+
skipVersionResolution?: boolean;
|
|
46
|
+
versionActionsOptionsOverrides?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
export declare const validReleaseVersionPrefixes: readonly ["auto", "", "~", "^", "="];
|
|
49
|
+
/**
|
|
50
|
+
* The complete release graph containing all relationships, caches, and computed data
|
|
51
|
+
* necessary for efficient release operations across versioning, changelog, and publishing.
|
|
52
|
+
*
|
|
53
|
+
* This class encapsulates the complex dependency graph between projects and release groups,
|
|
54
|
+
* providing convenient methods for querying relationships and accessing cached data.
|
|
55
|
+
*/
|
|
56
|
+
export declare class ReleaseGraph {
|
|
57
|
+
releaseGroups: ReleaseGroupWithName[];
|
|
58
|
+
readonly filters: {
|
|
59
|
+
projects?: string[];
|
|
60
|
+
groups?: string[];
|
|
61
|
+
};
|
|
62
|
+
readonly projectToReleaseGroup: Map<string, ReleaseGroupWithName>;
|
|
63
|
+
readonly projectToDependents: Map<string, Set<string>>;
|
|
64
|
+
readonly projectToDependencies: Map<string, Set<string>>;
|
|
65
|
+
readonly projectToUpdateDependentsSetting: Map<string, "never" | "auto" | "always">;
|
|
66
|
+
readonly groupGraph: Map<string, GroupNode>;
|
|
67
|
+
sortedReleaseGroups: string[];
|
|
68
|
+
readonly sortedProjects: Map<string, string[]>;
|
|
69
|
+
readonly allProjectsConfiguredForNxRelease: Set<string>;
|
|
70
|
+
allProjectsToProcess: Set<string>;
|
|
71
|
+
readonly finalConfigsByProject: Map<string, FinalConfigForProject>;
|
|
72
|
+
readonly projectsToVersionActions: Map<string, VersionActions>;
|
|
73
|
+
readonly uniqueAfterAllProjectsVersioned: Map<string, AfterAllProjectsVersioned>;
|
|
74
|
+
readonly projectLoggers: Map<string, ProjectLogger>;
|
|
75
|
+
readonly cachedCurrentVersions: Map<string, string>;
|
|
76
|
+
readonly cachedLatestMatchingGitTag: Map<string, import("./git").GitTagAndVersion>;
|
|
77
|
+
readonly currentVersionsPerFixedReleaseGroup: Map<string, {
|
|
78
|
+
currentVersion: string;
|
|
79
|
+
originatingProjectName: string;
|
|
80
|
+
logText: string;
|
|
81
|
+
}>;
|
|
82
|
+
readonly originalDependentProjectsPerProject: Map<string, {
|
|
83
|
+
source: string;
|
|
84
|
+
target: string;
|
|
85
|
+
type: string;
|
|
86
|
+
dependencyCollection: string;
|
|
87
|
+
rawVersionSpec: string;
|
|
88
|
+
}[]>;
|
|
89
|
+
readonly releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>;
|
|
90
|
+
private originalFilteredProjects;
|
|
91
|
+
/**
|
|
92
|
+
* User-friendly log describing what the filter matched.
|
|
93
|
+
* Null if no filters were applied.
|
|
94
|
+
*/
|
|
95
|
+
filterLog: {
|
|
96
|
+
title: string;
|
|
97
|
+
bodyLines: string[];
|
|
98
|
+
} | null;
|
|
99
|
+
constructor(releaseGroups: ReleaseGroupWithName[], filters: {
|
|
100
|
+
projects?: string[];
|
|
101
|
+
groups?: string[];
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Initialize the graph by building all relationships and caches
|
|
105
|
+
* @internal - Called by createReleaseGraph(), not meant for external use
|
|
106
|
+
*/
|
|
107
|
+
init(options: CreateReleaseGraphOptions): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Setup mapping from project to release group and cache updateDependents settings
|
|
110
|
+
*/
|
|
111
|
+
private setupProjectReleaseGroupMapping;
|
|
112
|
+
/**
|
|
113
|
+
* Apply initial filtering to construct releaseGroupToFilteredProjects based on filters.
|
|
114
|
+
* This determines the base set of projects and groups before considering dependencies.
|
|
115
|
+
*/
|
|
116
|
+
private applyInitialFiltering;
|
|
117
|
+
/**
|
|
118
|
+
* Check if any filters are applied
|
|
119
|
+
*/
|
|
120
|
+
private hasAnyFilters;
|
|
121
|
+
/**
|
|
122
|
+
* Setup projects to process and resolve version actions
|
|
123
|
+
*/
|
|
124
|
+
private setupProjectsToProcess;
|
|
125
|
+
/**
|
|
126
|
+
* Precompute dependency relationships between all projects
|
|
127
|
+
*/
|
|
128
|
+
private precomputeDependencyRelationships;
|
|
129
|
+
/**
|
|
130
|
+
* Apply dependency-aware filtering that considers updateDependents configuration.
|
|
131
|
+
* This includes transitive dependents when updateDependents='auto'.
|
|
132
|
+
*/
|
|
133
|
+
private applyDependencyAwareFiltering;
|
|
134
|
+
/**
|
|
135
|
+
* Validate that the filter doesn't try to isolate projects in fixed release groups
|
|
136
|
+
*/
|
|
137
|
+
private validateFilterAgainstFixedGroups;
|
|
138
|
+
/**
|
|
139
|
+
* Find dependents that should be included in processing based on updateDependents configuration
|
|
140
|
+
*/
|
|
141
|
+
private findDependentsToProcess;
|
|
142
|
+
/**
|
|
143
|
+
* Generate user-friendly log describing what the filter matched
|
|
144
|
+
*/
|
|
145
|
+
private generateFilterLog;
|
|
146
|
+
/**
|
|
147
|
+
* Build the group graph structure
|
|
148
|
+
*/
|
|
149
|
+
private buildGroupGraphStructure;
|
|
150
|
+
/**
|
|
151
|
+
* Resolve current versions for all projects that will be processed
|
|
152
|
+
*/
|
|
153
|
+
private resolveCurrentVersionsForProjects;
|
|
154
|
+
/**
|
|
155
|
+
* Build dependency relationships between release groups
|
|
156
|
+
*/
|
|
157
|
+
private buildGroupDependencyGraph;
|
|
158
|
+
/**
|
|
159
|
+
* Topologically sort release groups
|
|
160
|
+
*/
|
|
161
|
+
private topologicallySortReleaseGroups;
|
|
162
|
+
/**
|
|
163
|
+
* Topologically sort projects within a release group
|
|
164
|
+
*/
|
|
165
|
+
private topologicallySortProjects;
|
|
166
|
+
private populateDependentProjectsData;
|
|
167
|
+
/**
|
|
168
|
+
* Get all non-implicit dependents for a set of projects
|
|
169
|
+
*/
|
|
170
|
+
private getAllNonImplicitDependents;
|
|
171
|
+
/**
|
|
172
|
+
* Resolve final configuration for a project
|
|
173
|
+
*
|
|
174
|
+
* NOTE: We are providing ultimate fallback values via ?? here mainly just to keep TypeScript happy.
|
|
175
|
+
* All default values should have been applied by this point by config.ts but the types can't know
|
|
176
|
+
* that for sure at this point.
|
|
177
|
+
*/
|
|
178
|
+
private static resolveFinalConfigForProject;
|
|
179
|
+
/**
|
|
180
|
+
* Get the release group for a given project
|
|
181
|
+
*/
|
|
182
|
+
getReleaseGroupForProject(projectName: string): ReleaseGroupWithName | undefined;
|
|
183
|
+
/**
|
|
184
|
+
* Get the release group name for a given project
|
|
185
|
+
*/
|
|
186
|
+
getReleaseGroupNameForProject(projectName: string): string | null;
|
|
187
|
+
/**
|
|
188
|
+
* Get the dependencies of a project
|
|
189
|
+
*/
|
|
190
|
+
getProjectDependencies(projectName: string): Set<string>;
|
|
191
|
+
/**
|
|
192
|
+
* Get the dependents of a project (projects that depend on it)
|
|
193
|
+
*/
|
|
194
|
+
getProjectDependents(projectName: string): Set<string>;
|
|
195
|
+
/**
|
|
196
|
+
* Get the version actions for a project
|
|
197
|
+
*/
|
|
198
|
+
getVersionActionsForProject(projectName: string): VersionActions | undefined;
|
|
199
|
+
/**
|
|
200
|
+
* Check if a project will be processed
|
|
201
|
+
*/
|
|
202
|
+
isProjectToProcess(projectName: string): boolean;
|
|
203
|
+
/**
|
|
204
|
+
* Runs validation on resolved VersionActions instances. E.g. check that manifest files exist for all projects that will be processed.
|
|
205
|
+
* This should be called after preVersionCommand has run, as those commands may create manifest files that are needed for versioning.
|
|
206
|
+
*/
|
|
207
|
+
validate(tree: Tree): Promise<void>;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Creates a complete release graph by analyzing all release groups, projects, and their relationships.
|
|
211
|
+
*
|
|
212
|
+
* This function builds the graph structure, applies filtering logic that considers dependencies
|
|
213
|
+
* and updateDependents configuration, and caches all necessary data.
|
|
214
|
+
*
|
|
215
|
+
* The returned graph can be reused across versioning, changelog, and publishing operations.
|
|
216
|
+
*/
|
|
217
|
+
export declare function createReleaseGraph(options: CreateReleaseGraphOptions): Promise<ReleaseGraph>;
|
|
218
|
+
export {};
|
|
219
|
+
//# sourceMappingURL=release-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/release-graph.ts"],"names":[],"mappings":"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"}
|