nx 21.5.0-canary.20250819-2307a8d → 21.5.0-canary.20250822-2e39402
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/package.json +11 -11
- package/src/command-line/affected/affected.d.ts.map +1 -1
- package/src/command-line/affected/affected.js +1 -0
- package/src/command-line/graph/graph.d.ts +2 -2
- package/src/command-line/graph/graph.d.ts.map +1 -1
- package/src/command-line/graph/graph.js +103 -170
- package/src/command-line/migrate/migrate.d.ts.map +1 -1
- package/src/command-line/migrate/migrate.js +3 -1
- package/src/command-line/run-many/run-many.js +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/core/graph/styles.css +1 -1
- package/src/core/graph/styles.js +1 -1
- package/src/daemon/client/client.d.ts +1 -0
- package/src/daemon/client/client.d.ts.map +1 -1
- package/src/daemon/client/client.js +34 -4
- package/src/daemon/server/shutdown-utils.d.ts.map +1 -1
- package/src/daemon/server/shutdown-utils.js +1 -0
- package/src/executors/run-commands/running-tasks.d.ts +1 -0
- package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
- package/src/executors/run-commands/running-tasks.js +40 -14
- package/src/generators/utils/project-configuration.js +7 -2
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/tasks-runner/create-task-graph.d.ts.map +1 -1
- package/src/tasks-runner/create-task-graph.js +1 -0
- package/src/tasks-runner/task-graph-utils.d.ts.map +1 -1
- package/src/tasks-runner/task-graph-utils.js +27 -4
- package/src/utils/nx-console-prompt.js +1 -1
- package/src/utils/promised-based-queue.d.ts +7 -0
- package/src/utils/promised-based-queue.d.ts.map +1 -1
- package/src/utils/promised-based-queue.js +9 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "21.5.0-canary.
|
3
|
+
"version": "21.5.0-canary.20250822-2e39402",
|
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": "21.5.0-canary.
|
87
|
-
"@nx/nx-darwin-x64": "21.5.0-canary.
|
88
|
-
"@nx/nx-freebsd-x64": "21.5.0-canary.
|
89
|
-
"@nx/nx-linux-arm-gnueabihf": "21.5.0-canary.
|
90
|
-
"@nx/nx-linux-arm64-gnu": "21.5.0-canary.
|
91
|
-
"@nx/nx-linux-arm64-musl": "21.5.0-canary.
|
92
|
-
"@nx/nx-linux-x64-gnu": "21.5.0-canary.
|
93
|
-
"@nx/nx-linux-x64-musl": "21.5.0-canary.
|
94
|
-
"@nx/nx-win32-arm64-msvc": "21.5.0-canary.
|
95
|
-
"@nx/nx-win32-x64-msvc": "21.5.0-canary.
|
86
|
+
"@nx/nx-darwin-arm64": "21.5.0-canary.20250822-2e39402",
|
87
|
+
"@nx/nx-darwin-x64": "21.5.0-canary.20250822-2e39402",
|
88
|
+
"@nx/nx-freebsd-x64": "21.5.0-canary.20250822-2e39402",
|
89
|
+
"@nx/nx-linux-arm-gnueabihf": "21.5.0-canary.20250822-2e39402",
|
90
|
+
"@nx/nx-linux-arm64-gnu": "21.5.0-canary.20250822-2e39402",
|
91
|
+
"@nx/nx-linux-arm64-musl": "21.5.0-canary.20250822-2e39402",
|
92
|
+
"@nx/nx-linux-x64-gnu": "21.5.0-canary.20250822-2e39402",
|
93
|
+
"@nx/nx-linux-x64-musl": "21.5.0-canary.20250822-2e39402",
|
94
|
+
"@nx/nx-win32-arm64-msvc": "21.5.0-canary.20250822-2e39402",
|
95
|
+
"@nx/nx-win32-x64-msvc": "21.5.0-canary.20250822-2e39402"
|
96
96
|
},
|
97
97
|
"nx-migrations": {
|
98
98
|
"migrations": "./migrations.json",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/affected/affected.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAQ7D,OAAO,EACL,YAAY,EACZ,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAMlF,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,UAAU,EAChD,IAAI,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC1B,uBAAuB,GAAE,MAAM,CAC7B,MAAM,EACN,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAC/B,EACN,YAAY,GAGP;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/affected/affected.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAQ7D,OAAO,EACL,YAAY,EACZ,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAMlF,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,UAAU,EAChD,IAAI,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC1B,uBAAuB,GAAE,MAAM,CAC7B,MAAM,EACN,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAC/B,EACN,YAAY,GAGP;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAuBpC"}
|
@@ -27,9 +27,9 @@ export interface ProjectGraphClientResponse {
|
|
27
27
|
disabledTaskSyncGenerators?: string[];
|
28
28
|
}
|
29
29
|
export interface TaskGraphClientResponse {
|
30
|
-
|
30
|
+
taskGraph: TaskGraph;
|
31
31
|
plans?: Record<string, string[]>;
|
32
|
-
|
32
|
+
error?: string | null;
|
33
33
|
}
|
34
34
|
export interface ExpandedTaskInputsReponse {
|
35
35
|
[taskId: string]: Record<string, string[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/graph/graph.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAuBpD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/graph/graph.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAuBpD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAiJD,wBAAsB,aAAa,CACjC,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CA+Rf;AAyuBD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC;CACrB"}
|
@@ -129,17 +129,6 @@ function filterGraph(graph, focus, exclude) {
|
|
129
129
|
return filteredGraph;
|
130
130
|
}
|
131
131
|
async function generateGraph(args, affectedProjects) {
|
132
|
-
if (Array.isArray(args.targets) &&
|
133
|
-
args.targets.length > 1 &&
|
134
|
-
args.file &&
|
135
|
-
!(args.file === 'stdout' || args.file.endsWith('.json'))) {
|
136
|
-
output_1.output.warn({
|
137
|
-
title: 'Showing Multiple Targets is not supported yet',
|
138
|
-
bodyLines: [
|
139
|
-
`Only the task graph for "${args.targets[0]}" tasks will be shown`,
|
140
|
-
],
|
141
|
-
});
|
142
|
-
}
|
143
132
|
if (args.view === 'project-details' && !args.focus) {
|
144
133
|
output_1.output.error({
|
145
134
|
title: `The project details view requires the --focus option.`,
|
@@ -155,10 +144,6 @@ async function generateGraph(args, affectedProjects) {
|
|
155
144
|
});
|
156
145
|
process.exit(1);
|
157
146
|
}
|
158
|
-
// TODO: Graph Client should support multiple targets
|
159
|
-
const target = Array.isArray(args.targets && args.targets.length >= 1)
|
160
|
-
? args.targets[0]
|
161
|
-
: args.targets;
|
162
147
|
let rawGraph;
|
163
148
|
let sourceMaps;
|
164
149
|
let isPartial = false;
|
@@ -253,7 +238,9 @@ async function generateGraph(args, affectedProjects) {
|
|
253
238
|
recursive: true,
|
254
239
|
});
|
255
240
|
const { projectGraphClientResponse } = await createProjectGraphAndSourceMapClientResponse(affectedProjects);
|
256
|
-
const taskGraphClientResponse =
|
241
|
+
const taskGraphClientResponse = args.targets
|
242
|
+
? await createTaskGraphForTargetsAndProjects(args.targets, args.projects)
|
243
|
+
: await createTaskGraphClientResponse();
|
257
244
|
const taskInputsReponse = await createExpandedTaskInputResponse(taskGraphClientResponse, projectGraphClientResponse);
|
258
245
|
const environmentJs = buildEnvironmentJs(args.exclude || [], args.watch, !!args.file && args.file.endsWith('html') ? 'build' : 'serve', projectGraphClientResponse, taskGraphClientResponse, taskInputsReponse, sourceMaps);
|
259
246
|
html = html.replace(/src="/g, 'src="static/');
|
@@ -305,15 +292,19 @@ async function generateGraph(args, affectedProjects) {
|
|
305
292
|
if (args.focus) {
|
306
293
|
url.pathname += '/' + encodeURIComponent(args.focus);
|
307
294
|
}
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
295
|
+
// Add targets as query parameters for tasks view
|
296
|
+
if (args.view === 'tasks' && args.targets && args.targets.length > 0) {
|
297
|
+
const targets = Array.isArray(args.targets)
|
298
|
+
? args.targets
|
299
|
+
: [args.targets];
|
300
|
+
url.searchParams.append('targets', targets.join(' '));
|
313
301
|
}
|
314
|
-
|
302
|
+
if (args.all) {
|
315
303
|
url.pathname += '/all';
|
316
304
|
}
|
305
|
+
else if (args.projects) {
|
306
|
+
url.searchParams.append('projects', args.projects.map((projectName) => projectName).join(' '));
|
307
|
+
}
|
317
308
|
else if (args.affected) {
|
318
309
|
url.pathname += '/affected';
|
319
310
|
}
|
@@ -384,20 +375,18 @@ async function startServer(html, environmentJs, host, port = 4211, watchForChang
|
|
384
375
|
return;
|
385
376
|
}
|
386
377
|
if (sanitizePath === 'task-graph.json') {
|
387
|
-
const projectsParam = parsedUrl.searchParams.get('projects');
|
388
|
-
const
|
378
|
+
const projectsParam = parsedUrl.searchParams.get('projects');
|
379
|
+
const targetsParam = parsedUrl.searchParams.get('targets');
|
389
380
|
const configuration = parsedUrl.searchParams.get('configuration');
|
390
381
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
391
|
-
if (
|
392
|
-
|
393
|
-
const projectNames = projectsParam
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
// Target only (UI: all projects with this target)
|
398
|
-
return res.end(JSON.stringify(await createTaskGraphsForTargetAndProjects(targetName)));
|
382
|
+
if (targetsParam) {
|
383
|
+
const targetNames = targetsParam.split(' ').filter(Boolean);
|
384
|
+
const projectNames = projectsParam
|
385
|
+
? projectsParam.split(' ').filter(Boolean)
|
386
|
+
: undefined;
|
387
|
+
return res.end(JSON.stringify(await createTaskGraphForTargetsAndProjects(targetNames, projectNames, configuration)));
|
399
388
|
}
|
400
|
-
//
|
389
|
+
// load all task graphs if there's no targets specified
|
401
390
|
return res.end(JSON.stringify(await createTaskGraphClientResponse()));
|
402
391
|
}
|
403
392
|
if (sanitizePath === 'task-inputs.json') {
|
@@ -586,7 +575,7 @@ async function createProjectGraphAndSourceMapClientResponse(affected = []) {
|
|
586
575
|
}
|
587
576
|
}
|
588
577
|
let graph = (0, operators_1.pruneExternalNodes)(projectGraph);
|
589
|
-
|
578
|
+
const fileMap = (0, nx_deps_cache_1.readFileMapCache)()?.fileMap.projectFileMap || {};
|
590
579
|
node_perf_hooks_1.performance.mark('project graph watch calculation:end');
|
591
580
|
node_perf_hooks_1.performance.mark('project graph response generation:start');
|
592
581
|
const layout = (0, configuration_1.workspaceLayout)();
|
@@ -638,26 +627,41 @@ async function createTaskGraphClientResponse(pruneExternal = false) {
|
|
638
627
|
}
|
639
628
|
const nxJson = (0, configuration_1.readNxJson)();
|
640
629
|
node_perf_hooks_1.performance.mark('task graph generation:start');
|
641
|
-
const
|
642
|
-
|
643
|
-
const
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
630
|
+
const projects = Object.keys(graph.nodes);
|
631
|
+
const allTargets = new Set();
|
632
|
+
for (const projectName in graph.nodes) {
|
633
|
+
const project = graph.nodes[projectName];
|
634
|
+
Object.keys(project.data.targets ?? {}).forEach((target) => {
|
635
|
+
allTargets.add(target);
|
636
|
+
});
|
637
|
+
}
|
638
|
+
const targets = Array.from(allTargets);
|
639
|
+
try {
|
640
|
+
const taskGraph = (0, create_task_graph_1.createTaskGraph)(graph, {}, projects, targets, undefined, {});
|
641
|
+
node_perf_hooks_1.performance.mark('task graph generation:end');
|
642
|
+
const planner = new native_1.HashPlanner(nxJson, (0, native_1.transferProjectGraph)((0, transform_objects_1.transformProjectGraphForRust)(graph)));
|
643
|
+
node_perf_hooks_1.performance.mark('task hash plan generation:start');
|
644
|
+
const taskIds = Object.keys(taskGraph.tasks);
|
645
|
+
const plans = taskIds.length > 0 ? planner.getPlans(taskIds, taskGraph) : {};
|
646
|
+
node_perf_hooks_1.performance.mark('task hash plan generation:end');
|
647
|
+
node_perf_hooks_1.performance.measure('task graph generation', 'task graph generation:start', 'task graph generation:end');
|
648
|
+
node_perf_hooks_1.performance.measure('task hash plan generation', 'task hash plan generation:start', 'task hash plan generation:end');
|
649
|
+
return { taskGraph, plans, error: null };
|
650
|
+
}
|
651
|
+
catch (err) {
|
652
|
+
node_perf_hooks_1.performance.mark('task graph generation:end');
|
653
|
+
node_perf_hooks_1.performance.measure('task graph generation (failed)', 'task graph generation:start', 'task graph generation:end');
|
654
|
+
return {
|
655
|
+
taskGraph: {
|
656
|
+
tasks: {},
|
657
|
+
dependencies: {},
|
658
|
+
continuousDependencies: {},
|
659
|
+
roots: [],
|
660
|
+
},
|
661
|
+
plans: {},
|
662
|
+
error: err.message,
|
663
|
+
};
|
653
664
|
}
|
654
|
-
node_perf_hooks_1.performance.mark('task hash plan generation:end');
|
655
|
-
node_perf_hooks_1.performance.measure('task graph generation', 'task graph generation:start', 'task graph generation:end');
|
656
|
-
node_perf_hooks_1.performance.measure('task hash plan generation', 'task hash plan generation:start', 'task hash plan generation:end');
|
657
|
-
return {
|
658
|
-
...taskGraphs,
|
659
|
-
plans,
|
660
|
-
};
|
661
665
|
}
|
662
666
|
async function createExpandedTaskInputResponse(taskGraphClientResponse, depGraphClientResponse) {
|
663
667
|
node_perf_hooks_1.performance.mark('task input static generation:start');
|
@@ -672,69 +676,21 @@ async function createExpandedTaskInputResponse(taskGraphClientResponse, depGraph
|
|
672
676
|
node_perf_hooks_1.performance.measure('task input static generation', 'task input static generation:start', 'task input static generation:end');
|
673
677
|
return response;
|
674
678
|
}
|
675
|
-
function getAllTaskGraphsForWorkspace(projectGraph) {
|
676
|
-
const taskGraphs = {};
|
677
|
-
const taskGraphErrors = {};
|
678
|
-
// TODO(cammisuli): improve performance here. Cache results or something.
|
679
|
-
for (const projectName in projectGraph.nodes) {
|
680
|
-
const project = projectGraph.nodes[projectName];
|
681
|
-
const targets = Object.keys(project.data.targets ?? {});
|
682
|
-
targets.forEach((target) => {
|
683
|
-
const taskId = createTaskId(projectName, target);
|
684
|
-
try {
|
685
|
-
taskGraphs[taskId] = (0, create_task_graph_1.createTaskGraph)(projectGraph, {}, [projectName], [target], undefined, {});
|
686
|
-
}
|
687
|
-
catch (err) {
|
688
|
-
taskGraphs[taskId] = {
|
689
|
-
tasks: {},
|
690
|
-
dependencies: {},
|
691
|
-
continuousDependencies: {},
|
692
|
-
roots: [],
|
693
|
-
};
|
694
|
-
taskGraphErrors[taskId] = err.message;
|
695
|
-
}
|
696
|
-
const configurations = Object.keys(project.data.targets[target]?.configurations || {});
|
697
|
-
if (configurations.length > 0) {
|
698
|
-
configurations.forEach((configuration) => {
|
699
|
-
const taskId = createTaskId(projectName, target, configuration);
|
700
|
-
try {
|
701
|
-
taskGraphs[taskId] = (0, create_task_graph_1.createTaskGraph)(projectGraph, {}, [projectName], [target], configuration, {});
|
702
|
-
}
|
703
|
-
catch (err) {
|
704
|
-
taskGraphs[taskId] = {
|
705
|
-
tasks: {},
|
706
|
-
dependencies: {},
|
707
|
-
continuousDependencies: {},
|
708
|
-
roots: [],
|
709
|
-
};
|
710
|
-
taskGraphErrors[taskId] = err.message;
|
711
|
-
}
|
712
|
-
});
|
713
|
-
}
|
714
|
-
});
|
715
|
-
}
|
716
|
-
return { taskGraphs, errors: taskGraphErrors };
|
717
|
-
}
|
718
|
-
function createTaskId(projectId, targetId, configurationId) {
|
719
|
-
if (configurationId) {
|
720
|
-
return `${projectId}:${targetId}:${configurationId}`;
|
721
|
-
}
|
722
|
-
else {
|
723
|
-
return `${projectId}:${targetId}`;
|
724
|
-
}
|
725
|
-
}
|
726
679
|
// Performance optimized functions for lazy loading task graphs
|
727
680
|
// In-memory cache for task graphs to avoid regeneration
|
728
681
|
const taskGraphCache = new Map();
|
682
|
+
// In-memory cache for expanded task inputs to avoid regeneration
|
683
|
+
const expandedTaskInputsCache = new Map();
|
729
684
|
// Clear cache when project graph changes
|
730
685
|
function clearTaskGraphCache() {
|
731
686
|
taskGraphCache.clear();
|
687
|
+
expandedTaskInputsCache.clear();
|
732
688
|
}
|
733
689
|
/**
|
734
|
-
* Creates task
|
735
|
-
* If no projects specified, returns
|
690
|
+
* Creates a single task graph for multiple projects with multiple targets
|
691
|
+
* If no projects specified, returns graph for all projects with the targets
|
736
692
|
*/
|
737
|
-
async function
|
693
|
+
async function createTaskGraphForTargetsAndProjects(targetNames, projectNames, configuration) {
|
738
694
|
// Get project graph
|
739
695
|
let graph;
|
740
696
|
try {
|
@@ -746,85 +702,62 @@ async function createTaskGraphsForTargetAndProjects(targetName, projectNames, co
|
|
746
702
|
}
|
747
703
|
}
|
748
704
|
const nxJson = (0, configuration_1.readNxJson)();
|
749
|
-
|
750
|
-
let
|
705
|
+
node_perf_hooks_1.performance.mark(`task graph generation:start`);
|
706
|
+
let projectsToUse;
|
751
707
|
if (projectNames && projectNames.length > 0) {
|
752
|
-
|
753
|
-
projectsToProcess = projectNames.filter((projectName) => graph.nodes[projectName]?.data.targets?.[targetName]);
|
708
|
+
projectsToUse = projectNames;
|
754
709
|
}
|
755
710
|
else {
|
756
|
-
// Get all projects
|
757
|
-
|
758
|
-
.filter(([_, project]) => project.data.targets?.[targetName])
|
711
|
+
// Get all projects that have at least one of the targets
|
712
|
+
projectsToUse = Object.entries(graph.nodes)
|
713
|
+
.filter(([_, project]) => targetNames.some((targetName) => project.data.targets?.[targetName]))
|
759
714
|
.map(([projectName]) => projectName);
|
760
715
|
}
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
const
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
taskGraphs[taskId] = {
|
716
|
+
try {
|
717
|
+
// Create single task graph
|
718
|
+
const taskGraph = (0, create_task_graph_1.createTaskGraph)(graph, {}, projectsToUse, targetNames, configuration, {});
|
719
|
+
node_perf_hooks_1.performance.mark(`task graph generation:end`);
|
720
|
+
const planner = new native_1.HashPlanner(nxJson, (0, native_1.transferProjectGraph)((0, transform_objects_1.transformProjectGraphForRust)(graph)));
|
721
|
+
node_perf_hooks_1.performance.mark('task hash plan generation:start');
|
722
|
+
const taskIds = Object.keys(taskGraph.tasks);
|
723
|
+
const plans = taskIds.length > 0 ? planner.getPlans(taskIds, taskGraph) : {};
|
724
|
+
node_perf_hooks_1.performance.mark('task hash plan generation:end');
|
725
|
+
node_perf_hooks_1.performance.measure(`task graph generation for ${targetNames.join(', ')}`, `task graph generation:start`, `task graph generation:end`);
|
726
|
+
node_perf_hooks_1.performance.measure('task hash plan generation', 'task hash plan generation:start', 'task hash plan generation:end');
|
727
|
+
return { taskGraph, plans, error: null };
|
728
|
+
}
|
729
|
+
catch (err) {
|
730
|
+
node_perf_hooks_1.performance.mark(`task graph generation:end`);
|
731
|
+
node_perf_hooks_1.performance.measure(`task graph generation for ${targetNames.join(', ')} (failed)`, `task graph generation:start`, `task graph generation:end`);
|
732
|
+
return {
|
733
|
+
taskGraph: {
|
780
734
|
tasks: {},
|
781
735
|
dependencies: {},
|
782
736
|
continuousDependencies: {},
|
783
737
|
roots: [],
|
784
|
-
}
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
node_perf_hooks_1.performance.mark(`target task graphs generation:end`);
|
789
|
-
// Generate hash plans
|
790
|
-
const planner = new native_1.HashPlanner(nxJson, (0, native_1.transferProjectGraph)((0, transform_objects_1.transformProjectGraphForRust)(graph)));
|
791
|
-
node_perf_hooks_1.performance.mark('target task hash plan generation:start');
|
792
|
-
const plans = {};
|
793
|
-
for (const taskGraph of Object.values(taskGraphs)) {
|
794
|
-
const taskIds = Object.keys(taskGraph.tasks);
|
795
|
-
if (taskIds.length > 0) {
|
796
|
-
const taskPlans = planner.getPlans(taskIds, taskGraph);
|
797
|
-
Object.assign(plans, taskPlans);
|
798
|
-
}
|
799
|
-
}
|
800
|
-
node_perf_hooks_1.performance.mark('target task hash plan generation:end');
|
801
|
-
// Cache individual results for future requests
|
802
|
-
for (const projectName of projectsToProcess) {
|
803
|
-
const taskId = createTaskId(projectName, targetName, configuration);
|
804
|
-
if (!taskGraphCache.has(taskId)) {
|
805
|
-
taskGraphCache.set(taskId, {
|
806
|
-
taskGraphs: { [taskId]: taskGraphs[taskId] },
|
807
|
-
plans: Object.fromEntries(Object.entries(plans).filter(([key]) => key.startsWith(projectName))),
|
808
|
-
errors: taskGraphErrors[taskId]
|
809
|
-
? { [taskId]: taskGraphErrors[taskId] }
|
810
|
-
: {},
|
811
|
-
});
|
812
|
-
}
|
738
|
+
},
|
739
|
+
plans: {},
|
740
|
+
error: err.message,
|
741
|
+
};
|
813
742
|
}
|
814
|
-
node_perf_hooks_1.performance.measure(`target task graphs generation for ${targetName}`, `target task graphs generation:start`, `target task graphs generation:end`);
|
815
|
-
node_perf_hooks_1.performance.measure('target task hash plan generation', 'target task hash plan generation:start', 'target task hash plan generation:end');
|
816
|
-
return { taskGraphs, plans, errors: taskGraphErrors };
|
817
743
|
}
|
818
744
|
async function getExpandedTaskInputs(taskId) {
|
745
|
+
// Check cache first
|
746
|
+
if (expandedTaskInputsCache.has(taskId)) {
|
747
|
+
return expandedTaskInputsCache.get(taskId);
|
748
|
+
}
|
819
749
|
// Use the optimized version that only creates the specific task graph needed
|
820
750
|
const [projectName, targetName, configuration] = taskId.split(':');
|
821
|
-
const taskGraphResponse = await
|
751
|
+
const taskGraphResponse = await createTaskGraphForTargetsAndProjects([targetName], [projectName], configuration);
|
822
752
|
const allWorkspaceFiles = await (0, all_file_data_1.allFileData)();
|
823
|
-
const inputs = taskGraphResponse.plans[taskId];
|
753
|
+
const inputs = taskGraphResponse.plans?.[taskId];
|
754
|
+
let result = {};
|
824
755
|
if (inputs) {
|
825
|
-
|
756
|
+
result = expandInputs(inputs, currentProjectGraphClientResponse.projects.find((p) => p.name === projectName), allWorkspaceFiles, currentProjectGraphClientResponse);
|
826
757
|
}
|
827
|
-
|
758
|
+
// Cache the result
|
759
|
+
expandedTaskInputsCache.set(taskId, result);
|
760
|
+
return result;
|
828
761
|
}
|
829
762
|
function expandInputs(inputs, project, allWorkspaceFiles, depGraphClientResponse) {
|
830
763
|
const projectNames = depGraphClientResponse.projects.map((p) => p.name);
|
@@ -873,7 +806,7 @@ function expandInputs(inputs, project, allWorkspaceFiles, depGraphClientResponse
|
|
873
806
|
const fileSetProject = depGraphClientResponse.projects.find((p) => p.name === fileSetProjectName);
|
874
807
|
const fileSets = input.replace(`${fileSetProjectName}:`, '').split(',');
|
875
808
|
const projectInputExpanded = {
|
876
|
-
[fileSetProject.name]: (0, task_hasher_1.filterUsingGlobPatterns)(fileSetProject.data.root, depGraphClientResponse.fileMap[fileSetProject.name], fileSets).map((f) => f.file),
|
809
|
+
[fileSetProject.name]: (0, task_hasher_1.filterUsingGlobPatterns)(fileSetProject.data.root, depGraphClientResponse.fileMap[fileSetProject.name] || [], fileSets).map((f) => f.file),
|
877
810
|
};
|
878
811
|
return projectInputExpanded;
|
879
812
|
})
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,cAAc,EAEd,2BAA2B,IAAI,aAAa,EAE7C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,UAAU,EAIX,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,iBAAiB,EAEjB,WAAW,EAGZ,MAAM,0BAA0B,CAAC;AAmClC,MAAM,WAAW,8BAA+B,SAAQ,cAAc;IACpE,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,UAgC/C;AAUD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACrD,0BAA0B,EAAE,CAC1B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/B,MAAM,CAAC;IACZ,KAAK,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAChC,EAAE,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAgD;IAC3F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA0B;IACvE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAwB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA8C;IACvF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,4BAA4B,CAAqB;gBAE7C,IAAI,EAAE,eAAe;IAW3B,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;;;;;;;;;;;;;YAc5C,iBAAiB;YA8BjB,uBAAuB;YAsCvB,+CAA+C;IA8F7D,OAAO,CAAC,wCAAwC;IA+BhD;;;;;;;OAOG;IACH,OAAO,CAAC,qCAAqC;IA0C7C,OAAO,CAAC,wBAAwB;
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"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"}
|
@@ -251,7 +251,9 @@ class Migrator {
|
|
251
251
|
filtered[packageName] = {
|
252
252
|
version: packageUpdate.version,
|
253
253
|
addToPackageJson: packageUpdate.alwaysAddToPackageJson
|
254
|
-
? '
|
254
|
+
? typeof packageUpdate.alwaysAddToPackageJson === 'string'
|
255
|
+
? packageUpdate.alwaysAddToPackageJson
|
256
|
+
: 'dependencies'
|
255
257
|
: packageUpdate.addToPackageJson || false,
|
256
258
|
};
|
257
259
|
}
|