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.
Files changed (30) hide show
  1. package/package.json +11 -11
  2. package/src/command-line/affected/affected.d.ts.map +1 -1
  3. package/src/command-line/affected/affected.js +1 -0
  4. package/src/command-line/graph/graph.d.ts +2 -2
  5. package/src/command-line/graph/graph.d.ts.map +1 -1
  6. package/src/command-line/graph/graph.js +103 -170
  7. package/src/command-line/migrate/migrate.d.ts.map +1 -1
  8. package/src/command-line/migrate/migrate.js +3 -1
  9. package/src/command-line/run-many/run-many.js +1 -1
  10. package/src/core/graph/main.js +1 -1
  11. package/src/core/graph/styles.css +1 -1
  12. package/src/core/graph/styles.js +1 -1
  13. package/src/daemon/client/client.d.ts +1 -0
  14. package/src/daemon/client/client.d.ts.map +1 -1
  15. package/src/daemon/client/client.js +34 -4
  16. package/src/daemon/server/shutdown-utils.d.ts.map +1 -1
  17. package/src/daemon/server/shutdown-utils.js +1 -0
  18. package/src/executors/run-commands/running-tasks.d.ts +1 -0
  19. package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
  20. package/src/executors/run-commands/running-tasks.js +40 -14
  21. package/src/generators/utils/project-configuration.js +7 -2
  22. package/src/native/nx.wasm32-wasi.wasm +0 -0
  23. package/src/tasks-runner/create-task-graph.d.ts.map +1 -1
  24. package/src/tasks-runner/create-task-graph.js +1 -0
  25. package/src/tasks-runner/task-graph-utils.d.ts.map +1 -1
  26. package/src/tasks-runner/task-graph-utils.js +27 -4
  27. package/src/utils/nx-console-prompt.js +1 -1
  28. package/src/utils/promised-based-queue.d.ts +7 -0
  29. package/src/utils/promised-based-queue.d.ts.map +1 -1
  30. 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.20250819-2307a8d",
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.20250819-2307a8d",
87
- "@nx/nx-darwin-x64": "21.5.0-canary.20250819-2307a8d",
88
- "@nx/nx-freebsd-x64": "21.5.0-canary.20250819-2307a8d",
89
- "@nx/nx-linux-arm-gnueabihf": "21.5.0-canary.20250819-2307a8d",
90
- "@nx/nx-linux-arm64-gnu": "21.5.0-canary.20250819-2307a8d",
91
- "@nx/nx-linux-arm64-musl": "21.5.0-canary.20250819-2307a8d",
92
- "@nx/nx-linux-x64-gnu": "21.5.0-canary.20250819-2307a8d",
93
- "@nx/nx-linux-x64-musl": "21.5.0-canary.20250819-2307a8d",
94
- "@nx/nx-win32-arm64-msvc": "21.5.0-canary.20250819-2307a8d",
95
- "@nx/nx-win32-x64-msvc": "21.5.0-canary.20250819-2307a8d"
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;AA6yBD;;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') {
@@ -586,7 +575,7 @@ async function createProjectGraphAndSourceMapClientResponse(affected = []) {
586
575
  }
587
576
  }
588
577
  let graph = (0, operators_1.pruneExternalNodes)(projectGraph);
589
- let fileMap = (0, nx_deps_cache_1.readFileMapCache)()?.fileMap.projectFileMap;
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 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,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 graphs for multiple projects with a specific target
735
- * 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
736
692
  */
737
- async function createTaskGraphsForTargetAndProjects(targetName, projectNames, configuration) {
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
- // Determine which projects to process
750
- let projectsToProcess;
705
+ node_perf_hooks_1.performance.mark(`task graph generation:start`);
706
+ let projectsToUse;
751
707
  if (projectNames && projectNames.length > 0) {
752
- // Use specified projects (filter to only those that have the target)
753
- projectsToProcess = projectNames.filter((projectName) => graph.nodes[projectName]?.data.targets?.[targetName]);
708
+ projectsToUse = projectNames;
754
709
  }
755
710
  else {
756
- // Get all projects with the target
757
- projectsToProcess = Object.entries(graph.nodes)
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
- node_perf_hooks_1.performance.mark(`target task graphs generation:start`);
762
- // Create task graphs for each project
763
- const taskGraphs = {};
764
- const taskGraphErrors = {};
765
- for (const projectName of projectsToProcess) {
766
- const taskId = createTaskId(projectName, targetName, configuration);
767
- // Check cache first
768
- const cached = taskGraphCache.get(taskId);
769
- if (cached) {
770
- Object.assign(taskGraphs, cached.taskGraphs);
771
- Object.assign(taskGraphErrors, cached.errors);
772
- continue;
773
- }
774
- // Create task graph
775
- try {
776
- taskGraphs[taskId] = (0, create_task_graph_1.createTaskGraph)(graph, {}, [projectName], [targetName], configuration, {});
777
- }
778
- catch (err) {
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
- taskGraphErrors[taskId] = err.message;
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 createTaskGraphsForTargetAndProjects(targetName, [projectName], configuration);
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
- return expandInputs(inputs, currentProjectGraphClientResponse.projects.find((p) => p.name === projectName), allWorkspaceFiles, currentProjectGraphClientResponse);
756
+ result = expandInputs(inputs, currentProjectGraphClientResponse.projects.find((p) => p.name === projectName), allWorkspaceFiles, currentProjectGraphClientResponse);
826
757
  }
827
- return {};
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":"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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,