nx 22.2.0-canary.20251121-9a6c7ad → 22.2.0-canary.20251125-7e00ec4
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/executors.json +16 -16
- package/generators.json +13 -13
- package/migrations.json +143 -143
- package/package.json +14 -11
- package/presets/npm.json +4 -4
- package/release/changelog-renderer/index.d.ts +1 -0
- package/release/changelog-renderer/index.d.ts.map +1 -1
- package/release/changelog-renderer/index.js +12 -12
- package/schemas/nx-schema.json +1285 -1285
- package/schemas/project-schema.json +359 -359
- package/schemas/workspace-schema.json +165 -165
- package/src/ai/constants.d.ts +6 -1
- package/src/ai/constants.d.ts.map +1 -1
- package/src/ai/constants.js +14 -3
- package/src/ai/set-up-ai-agents/schema.json +31 -31
- package/src/ai/set-up-ai-agents/set-up-ai-agents.d.ts.map +1 -1
- package/src/ai/set-up-ai-agents/set-up-ai-agents.js +41 -7
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts +1 -1
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts.map +1 -1
- package/src/command-line/release/utils/resolve-semver-specifier.js +3 -3
- package/src/command-line/release/utils/shared.d.ts +2 -1
- package/src/command-line/release/utils/shared.d.ts.map +1 -1
- package/src/command-line/release/utils/shared.js +27 -1
- package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +1 -1
- package/src/command-line/report/report.d.ts +4 -0
- package/src/command-line/report/report.d.ts.map +1 -1
- package/src/command-line/report/report.js +72 -1
- package/src/core/graph/main.js +1 -1
- package/src/daemon/cache.d.ts +2 -1
- package/src/daemon/cache.d.ts.map +1 -1
- package/src/daemon/cache.js +10 -26
- package/src/daemon/client/client.d.ts +2 -0
- package/src/daemon/client/client.d.ts.map +1 -1
- package/src/daemon/client/client.js +53 -26
- package/src/daemon/is-nx-version-mismatch.d.ts +3 -0
- package/src/daemon/is-nx-version-mismatch.d.ts.map +1 -0
- package/src/daemon/is-nx-version-mismatch.js +24 -0
- package/src/daemon/server/server.d.ts.map +1 -1
- package/src/daemon/server/server.js +7 -18
- package/src/daemon/tmp-dir.d.ts.map +1 -1
- package/src/daemon/tmp-dir.js +1 -0
- package/src/executors/noop/schema.json +8 -8
- package/src/executors/run-commands/schema.json +187 -187
- package/src/executors/run-script/schema.json +25 -25
- package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +38 -38
- package/src/tasks-runner/pseudo-terminal.js +1 -1
- package/src/tasks-runner/task-orchestrator.d.ts +1 -0
- package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
- package/src/tasks-runner/task-orchestrator.js +22 -5
- package/src/utils/package-manager.d.ts +1 -0
- package/src/utils/package-manager.d.ts.map +1 -1
- package/src/utils/package-manager.js +4 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ProjectGraph } from '../../../config/project-graph';
|
|
2
2
|
import type { ReleaseGroupWithName } from '../config/filter-release-groups';
|
|
3
3
|
import { GitCommit } from './git';
|
|
4
|
+
import { NxReleaseConfig } from '../config/config';
|
|
4
5
|
export declare const noDiffInChangelogMessage: string;
|
|
5
6
|
export type VersionData = Record<string, VersionDataEntry>;
|
|
6
7
|
export interface VersionDataEntry {
|
|
@@ -54,7 +55,7 @@ export declare function shouldSkipVersionActions(dockerOptions: {
|
|
|
54
55
|
}, projectName: string): boolean;
|
|
55
56
|
export declare function createGitTagValues(releaseGroups: ReleaseGroupWithName[], releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>, versionData: VersionData): string[];
|
|
56
57
|
export declare function handleDuplicateGitTags(gitTagValues: string[]): void;
|
|
57
|
-
export declare function getCommitsRelevantToProjects(projectGraph: ProjectGraph, commits: GitCommit[], projects: string[]): Promise<Map<string, {
|
|
58
|
+
export declare function getCommitsRelevantToProjects(projectGraph: ProjectGraph, commits: GitCommit[], projects: string[], nxReleaseConfig: NxReleaseConfig): Promise<Map<string, {
|
|
58
59
|
commit: GitCommit;
|
|
59
60
|
isProjectScopedCommit: boolean;
|
|
60
61
|
}[]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -268,10 +268,36 @@ function handleDuplicateGitTags(gitTagValues) {
|
|
|
268
268
|
process.exit(1);
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
|
|
271
|
+
function isAutomatedReleaseCommit(message, nxReleaseConfig) {
|
|
272
|
+
// All possible commit message patterns based on config
|
|
273
|
+
const commitMessagePatterns = [
|
|
274
|
+
nxReleaseConfig.git.commitMessage,
|
|
275
|
+
nxReleaseConfig.version.git.commitMessage,
|
|
276
|
+
nxReleaseConfig.changelog.git.commitMessage,
|
|
277
|
+
];
|
|
278
|
+
// Check if message matches any pattern
|
|
279
|
+
for (const pattern of commitMessagePatterns) {
|
|
280
|
+
if (!pattern)
|
|
281
|
+
continue;
|
|
282
|
+
// Split on {version}, escape each part for regex, then join with version pattern
|
|
283
|
+
const parts = pattern.split('{version}');
|
|
284
|
+
const escapedParts = parts.map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
|
285
|
+
const regexPattern = escapedParts.join('\\S+');
|
|
286
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
287
|
+
if (regex.test(message)) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
async function getCommitsRelevantToProjects(projectGraph, commits, projects, nxReleaseConfig) {
|
|
272
294
|
const projectSet = new Set(projects);
|
|
273
295
|
const relevantCommits = new Map();
|
|
274
296
|
for (const commit of commits) {
|
|
297
|
+
// Filter out automated release commits
|
|
298
|
+
if (isAutomatedReleaseCommit(commit.message, nxReleaseConfig)) {
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
275
301
|
// Convert affectedFiles to FileChange[] format with proper diff computation
|
|
276
302
|
const touchedFiles = (0, file_utils_1.calculateFileChanges)(commit.affectedFiles, {
|
|
277
303
|
base: `${commit.shortHash}^`,
|
|
@@ -25,7 +25,7 @@ isPrerelease, latestMatchingGitTag, fallbackCurrentVersionResolver, preid) {
|
|
|
25
25
|
// This should never happen since the checks above should catch if the current version couldn't be resolved
|
|
26
26
|
throw new Error(`Unable to determine previous version ref for the projects ${affectedProjects.join(', ')}. This is likely a bug in Nx.`);
|
|
27
27
|
}
|
|
28
|
-
const projectToSpecifiers = await (0, resolve_semver_specifier_1.resolveSemverSpecifierFromConventionalCommits)(previousVersionRef, projectGraph, affectedProjects, nxReleaseConfig
|
|
28
|
+
const projectToSpecifiers = await (0, resolve_semver_specifier_1.resolveSemverSpecifierFromConventionalCommits)(previousVersionRef, projectGraph, affectedProjects, nxReleaseConfig);
|
|
29
29
|
const getHighestSemverChange = (semverSpecifiersItr) => {
|
|
30
30
|
const semverSpecifiers = Array.from(semverSpecifiersItr);
|
|
31
31
|
return semverSpecifiers.sort((a, b) => b - a)[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/report/report.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/report/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,cAAc,EACf,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EAGZ,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,mBAAmB,EAAc,MAAM,sBAAsB,CAAC;AAUvE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAYrC,eAAO,MAAM,mBAAmB,UAO/B,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAMpE,CAAC;AAIF;;;;;;;GAOG;AACH,wBAAsB,aAAa,kBAgMlC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B,EAAE;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,qBAAqB,CAAC,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;QACJ,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;CACV;AAmED,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA+DzD;AA6CD,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,WAAW,GAChB,SAAS,GAAG,qBAAqB,CAgCnC;AAED,wBAAgB,6BAA6B,IAAI,WAAW,EAAE,CAO7D;AAED,wBAAgB,6BAA6B,IAAI,WAAW,EAAE,CAW7D;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,mBAAmB,YAQzE;AAED,wBAAgB,gCAAgC;;;IAe/C"}
|
|
@@ -21,6 +21,8 @@ const installed_plugins_1 = require("../../utils/plugins/installed-plugins");
|
|
|
21
21
|
const installation_directory_1 = require("../../utils/installation-directory");
|
|
22
22
|
const nx_json_1 = require("../../config/nx-json");
|
|
23
23
|
const error_types_1 = require("../../project-graph/error-types");
|
|
24
|
+
const operators_1 = require("../../project-graph/operators");
|
|
25
|
+
const versions_1 = require("../../utils/versions");
|
|
24
26
|
const nx_key_1 = require("../../utils/nx-key");
|
|
25
27
|
const cache_1 = require("../../tasks-runner/cache");
|
|
26
28
|
const nxPackageJson = (0, fileutils_1.readJsonFile)((0, path_1.join)(__dirname, '../../../package.json'));
|
|
@@ -47,7 +49,7 @@ const LINE_SEPARATOR = '---------------------------------------';
|
|
|
47
49
|
*
|
|
48
50
|
*/
|
|
49
51
|
async function reportHandler() {
|
|
50
|
-
const { pm, pmVersion, nxKey, nxKeyError, localPlugins, powerpackPlugins, communityPlugins, registeredPlugins, packageVersionsWeCareAbout, outOfSyncPackageGroup, projectGraphError, nativeTarget, cache, } = await getReportData();
|
|
52
|
+
const { pm, pmVersion, nxKey, nxKeyError, localPlugins, powerpackPlugins, communityPlugins, registeredPlugins, packageVersionsWeCareAbout, outOfSyncPackageGroup, mismatchedNxVersions, projectGraphError, nativeTarget, cache, } = await getReportData();
|
|
51
53
|
const fields = [
|
|
52
54
|
['Node', process.versions.node],
|
|
53
55
|
['OS', `${process.platform}-${process.arch}`],
|
|
@@ -137,6 +139,26 @@ async function reportHandler() {
|
|
|
137
139
|
bodyLines.push('');
|
|
138
140
|
bodyLines.push(`To fix this, run \`nx migrate ${outOfSyncPackageGroup.migrateTarget}\``);
|
|
139
141
|
}
|
|
142
|
+
if (mismatchedNxVersions && mismatchedNxVersions.length > 0) {
|
|
143
|
+
bodyLines.push(LINE_SEPARATOR);
|
|
144
|
+
bodyLines.push(chalk.yellow('⚠️ Multiple Nx versions detected'));
|
|
145
|
+
bodyLines.push('');
|
|
146
|
+
bodyLines.push(`Your workspace uses nx@${versions_1.nxVersion}, but other packages depend on a different version:`);
|
|
147
|
+
for (const { version, chain } of mismatchedNxVersions) {
|
|
148
|
+
if (chain.length === 0) {
|
|
149
|
+
bodyLines.push(` - ${chalk.bold(`nx@${version}`)}`);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
bodyLines.push(` - ${chain.reverse().join(' → ')} → ${chalk.bold(`nx@${version}`)}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
bodyLines.push('');
|
|
156
|
+
bodyLines.push('These packages should not have nx as a dependency. Please report this issue to the package maintainers.');
|
|
157
|
+
const whyCommand = (0, package_manager_1.getPackageManagerCommand)(pm).why;
|
|
158
|
+
for (const { version } of mismatchedNxVersions) {
|
|
159
|
+
bodyLines.push(`Run \`${whyCommand} nx@${version}\` for more details.`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
140
162
|
if (projectGraphError) {
|
|
141
163
|
bodyLines.push(LINE_SEPARATOR);
|
|
142
164
|
bodyLines.push('⚠️ Unable to construct project graph.');
|
|
@@ -148,6 +170,53 @@ async function reportHandler() {
|
|
|
148
170
|
bodyLines,
|
|
149
171
|
});
|
|
150
172
|
}
|
|
173
|
+
function findDependencyChain(graph, targetNode) {
|
|
174
|
+
const reversedGraph = (0, operators_1.reverse)(graph);
|
|
175
|
+
// BFS to find shortest path to root dependency
|
|
176
|
+
const queue = [
|
|
177
|
+
{ node: targetNode, path: [] },
|
|
178
|
+
];
|
|
179
|
+
const visited = new Set();
|
|
180
|
+
while (queue.length > 0) {
|
|
181
|
+
const { node, path } = queue.shift();
|
|
182
|
+
if (visited.has(node))
|
|
183
|
+
continue;
|
|
184
|
+
visited.add(node);
|
|
185
|
+
const deps = reversedGraph.dependencies[node] || [];
|
|
186
|
+
// Check for unvisited dependents
|
|
187
|
+
const unvisitedDeps = deps.filter((dep) => !visited.has(dep.target));
|
|
188
|
+
// No unvisited dependents - this is our shortest path
|
|
189
|
+
if (unvisitedDeps.length === 0) {
|
|
190
|
+
return path;
|
|
191
|
+
}
|
|
192
|
+
for (const dep of unvisitedDeps) {
|
|
193
|
+
const depName = graph.externalNodes?.[dep.target]?.data?.packageName ?? dep.target;
|
|
194
|
+
queue.push({
|
|
195
|
+
node: dep.target,
|
|
196
|
+
path: [...path, depName],
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
function findMismatchedNxVersions(graph) {
|
|
203
|
+
if (!graph || !graph.externalNodes) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
const result = [];
|
|
207
|
+
// Find all nx package versions that don't match the workspace version
|
|
208
|
+
for (const nodeName of Object.keys(graph.externalNodes)) {
|
|
209
|
+
const node = graph.externalNodes[nodeName];
|
|
210
|
+
if (node.data?.packageName === 'nx') {
|
|
211
|
+
const version = node.data.version || 'unknown';
|
|
212
|
+
if (version !== versions_1.nxVersion) {
|
|
213
|
+
const chain = findDependencyChain(graph, nodeName);
|
|
214
|
+
result.push({ version, chain });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
151
220
|
async function getReportData() {
|
|
152
221
|
const pm = (0, package_manager_1.detectPackageManager)();
|
|
153
222
|
const pmVersion = (0, package_manager_1.getPackageManagerVersion)(pm);
|
|
@@ -169,6 +238,7 @@ async function getReportData() {
|
|
|
169
238
|
});
|
|
170
239
|
}
|
|
171
240
|
const outOfSyncPackageGroup = findMisalignedPackagesForPackage(nxPackageJson);
|
|
241
|
+
const mismatchedNxVersions = findMismatchedNxVersions(graph);
|
|
172
242
|
const native = isNativeAvailable();
|
|
173
243
|
let nxKey = null;
|
|
174
244
|
let nxKeyError = null;
|
|
@@ -197,6 +267,7 @@ async function getReportData() {
|
|
|
197
267
|
registeredPlugins,
|
|
198
268
|
packageVersionsWeCareAbout,
|
|
199
269
|
outOfSyncPackageGroup,
|
|
270
|
+
mismatchedNxVersions,
|
|
200
271
|
projectGraphError,
|
|
201
272
|
nativeTarget: native ? native.getBinaryTarget() : null,
|
|
202
273
|
cache,
|