nx 21.5.0-canary.20250821-4ba2085 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "21.5.0-canary.20250821-4ba2085",
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.20250821-4ba2085",
87
- "@nx/nx-darwin-x64": "21.5.0-canary.20250821-4ba2085",
88
- "@nx/nx-freebsd-x64": "21.5.0-canary.20250821-4ba2085",
89
- "@nx/nx-linux-arm-gnueabihf": "21.5.0-canary.20250821-4ba2085",
90
- "@nx/nx-linux-arm64-gnu": "21.5.0-canary.20250821-4ba2085",
91
- "@nx/nx-linux-arm64-musl": "21.5.0-canary.20250821-4ba2085",
92
- "@nx/nx-linux-x64-gnu": "21.5.0-canary.20250821-4ba2085",
93
- "@nx/nx-linux-x64-musl": "21.5.0-canary.20250821-4ba2085",
94
- "@nx/nx-win32-arm64-msvc": "21.5.0-canary.20250821-4ba2085",
95
- "@nx/nx-win32-x64-msvc": "21.5.0-canary.20250821-4ba2085"
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,CA8Df;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAuBpC"}
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"}
@@ -42,6 +42,7 @@ async function affected(command, args, extraTargetDependencies = {}, extraOption
42
42
  open: true,
43
43
  view: 'tasks',
44
44
  targets: nxArgs.targets,
45
+ all: nxArgs.all && !nxArgs.projects,
45
46
  projects: projectNames,
46
47
  file,
47
48
  }, projectNames);
@@ -27,9 +27,9 @@ export interface ProjectGraphClientResponse {
27
27
  disabledTaskSyncGenerators?: string[];
28
28
  }
29
29
  export interface TaskGraphClientResponse {
30
- taskGraphs: Record<string, TaskGraph>;
30
+ taskGraph: TaskGraph;
31
31
  plans?: Record<string, string[]>;
32
- errors: Record<string, string>;
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,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;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,CAuSf;AA4zBD;;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"}
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 = await createTaskGraphClientResponse();
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
- if (target) {
309
- url.pathname += '/' + target;
310
- }
311
- if (args.projects) {
312
- url.searchParams.append('projects', args.projects.map((projectName) => projectName).join(' '));
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
- else if (args.all) {
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'); // Multiple projects
388
- const targetName = parsedUrl.searchParams.get('target');
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 (projectsParam && targetName) {
392
- // Multiple projects + target (UI: selected specific projects)
393
- const projectNames = projectsParam.split(' ').filter(Boolean);
394
- return res.end(JSON.stringify(await createTaskGraphsForTargetAndProjects(targetName, projectNames, configuration)));
395
- }
396
- if (targetName) {
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
- // Legacy - load all task graphs
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') {
@@ -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 taskGraphs = getAllTaskGraphsForWorkspace(graph);
642
- node_perf_hooks_1.performance.mark('task graph generation:end');
643
- const planner = new native_1.HashPlanner(nxJson, (0, native_1.transferProjectGraph)((0, transform_objects_1.transformProjectGraphForRust)(graph)));
644
- node_perf_hooks_1.performance.mark('task hash plan generation:start');
645
- const plans = {};
646
- for (const individualTaskGraph of Object.values(taskGraphs.taskGraphs)) {
647
- for (const task of Object.values(individualTaskGraph.tasks)) {
648
- if (plans[task.id]) {
649
- continue;
650
- }
651
- plans[task.id] = planner.getPlans([task.id], individualTaskGraph)[task.id];
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,57 +676,6 @@ 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();
@@ -734,10 +687,10 @@ function clearTaskGraphCache() {
734
687
  expandedTaskInputsCache.clear();
735
688
  }
736
689
  /**
737
- * Creates task graphs for multiple projects with a specific target
738
- * If no projects specified, returns graphs for all projects with the target
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
739
692
  */
740
- async function createTaskGraphsForTargetAndProjects(targetName, projectNames, configuration) {
693
+ async function createTaskGraphForTargetsAndProjects(targetNames, projectNames, configuration) {
741
694
  // Get project graph
742
695
  let graph;
743
696
  try {
@@ -749,74 +702,44 @@ async function createTaskGraphsForTargetAndProjects(targetName, projectNames, co
749
702
  }
750
703
  }
751
704
  const nxJson = (0, configuration_1.readNxJson)();
752
- // Determine which projects to process
753
- let projectsToProcess;
705
+ node_perf_hooks_1.performance.mark(`task graph generation:start`);
706
+ let projectsToUse;
754
707
  if (projectNames && projectNames.length > 0) {
755
- // Use specified projects (filter to only those that have the target)
756
- projectsToProcess = projectNames.filter((projectName) => graph.nodes[projectName]?.data.targets?.[targetName]);
708
+ projectsToUse = projectNames;
757
709
  }
758
710
  else {
759
- // Get all projects with the target
760
- projectsToProcess = Object.entries(graph.nodes)
761
- .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]))
762
714
  .map(([projectName]) => projectName);
763
715
  }
764
- node_perf_hooks_1.performance.mark(`target task graphs generation:start`);
765
- // Create task graphs for each project
766
- const taskGraphs = {};
767
- const taskGraphErrors = {};
768
- for (const projectName of projectsToProcess) {
769
- const taskId = createTaskId(projectName, targetName, configuration);
770
- // Check cache first
771
- const cached = taskGraphCache.get(taskId);
772
- if (cached) {
773
- Object.assign(taskGraphs, cached.taskGraphs);
774
- Object.assign(taskGraphErrors, cached.errors);
775
- continue;
776
- }
777
- // Create task graph
778
- try {
779
- taskGraphs[taskId] = (0, create_task_graph_1.createTaskGraph)(graph, {}, [projectName], [targetName], configuration, {});
780
- }
781
- catch (err) {
782
- 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: {
783
734
  tasks: {},
784
735
  dependencies: {},
785
736
  continuousDependencies: {},
786
737
  roots: [],
787
- };
788
- taskGraphErrors[taskId] = err.message;
789
- }
790
- }
791
- node_perf_hooks_1.performance.mark(`target task graphs generation:end`);
792
- // Generate hash plans
793
- const planner = new native_1.HashPlanner(nxJson, (0, native_1.transferProjectGraph)((0, transform_objects_1.transformProjectGraphForRust)(graph)));
794
- node_perf_hooks_1.performance.mark('target task hash plan generation:start');
795
- const plans = {};
796
- for (const taskGraph of Object.values(taskGraphs)) {
797
- const taskIds = Object.keys(taskGraph.tasks);
798
- if (taskIds.length > 0) {
799
- const taskPlans = planner.getPlans(taskIds, taskGraph);
800
- Object.assign(plans, taskPlans);
801
- }
802
- }
803
- node_perf_hooks_1.performance.mark('target task hash plan generation:end');
804
- // Cache individual results for future requests
805
- for (const projectName of projectsToProcess) {
806
- const taskId = createTaskId(projectName, targetName, configuration);
807
- if (!taskGraphCache.has(taskId)) {
808
- taskGraphCache.set(taskId, {
809
- taskGraphs: { [taskId]: taskGraphs[taskId] },
810
- plans: Object.fromEntries(Object.entries(plans).filter(([key]) => key.startsWith(projectName))),
811
- errors: taskGraphErrors[taskId]
812
- ? { [taskId]: taskGraphErrors[taskId] }
813
- : {},
814
- });
815
- }
738
+ },
739
+ plans: {},
740
+ error: err.message,
741
+ };
816
742
  }
817
- node_perf_hooks_1.performance.measure(`target task graphs generation for ${targetName}`, `target task graphs generation:start`, `target task graphs generation:end`);
818
- node_perf_hooks_1.performance.measure('target task hash plan generation', 'target task hash plan generation:start', 'target task hash plan generation:end');
819
- return { taskGraphs, plans, errors: taskGraphErrors };
820
743
  }
821
744
  async function getExpandedTaskInputs(taskId) {
822
745
  // Check cache first
@@ -825,9 +748,9 @@ async function getExpandedTaskInputs(taskId) {
825
748
  }
826
749
  // Use the optimized version that only creates the specific task graph needed
827
750
  const [projectName, targetName, configuration] = taskId.split(':');
828
- const taskGraphResponse = await createTaskGraphsForTargetAndProjects(targetName, [projectName], configuration);
751
+ const taskGraphResponse = await createTaskGraphForTargetsAndProjects([targetName], [projectName], configuration);
829
752
  const allWorkspaceFiles = await (0, all_file_data_1.allFileData)();
830
- const inputs = taskGraphResponse.plans[taskId];
753
+ const inputs = taskGraphResponse.plans?.[taskId];
831
754
  let result = {};
832
755
  if (inputs) {
833
756
  result = expandInputs(inputs, currentProjectGraphClientResponse.projects.find((p) => p.name === projectName), allWorkspaceFiles, currentProjectGraphClientResponse);
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/migrate/migrate.ts"],"names":[],"mappings":"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"}
@@ -251,7 +251,9 @@ class Migrator {
251
251
  filtered[packageName] = {
252
252
  version: packageUpdate.version,
253
253
  addToPackageJson: packageUpdate.alwaysAddToPackageJson
254
- ? 'dependencies'
254
+ ? typeof packageUpdate.alwaysAddToPackageJson === 'string'
255
+ ? packageUpdate.alwaysAddToPackageJson
256
+ : 'dependencies'
255
257
  : packageUpdate.addToPackageJson || false,
256
258
  };
257
259
  }
@@ -33,7 +33,7 @@ async function runMany(args, extraTargetDependencies = {}, extraOptions = {
33
33
  watch: true,
34
34
  open: true,
35
35
  view: 'tasks',
36
- all: nxArgs.all,
36
+ all: nxArgs.all && !nxArgs.projects,
37
37
  targets: nxArgs.targets,
38
38
  projects: projectNames,
39
39
  file,