nx 22.5.1 → 22.5.3

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 (79) hide show
  1. package/LICENSE +1 -1
  2. package/bin/init-local.d.ts.map +1 -1
  3. package/bin/init-local.js +1 -0
  4. package/bin/nx.js +6 -0
  5. package/package.json +14 -14
  6. package/src/ai/set-up-ai-agents/set-up-ai-agents.d.ts.map +1 -1
  7. package/src/ai/set-up-ai-agents/set-up-ai-agents.js +1 -0
  8. package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
  9. package/src/command-line/configure-ai-agents/configure-ai-agents.js +22 -0
  10. package/src/command-line/list/command-object.d.ts.map +1 -1
  11. package/src/command-line/list/command-object.js +6 -1
  12. package/src/command-line/list/list.d.ts +2 -0
  13. package/src/command-line/list/list.d.ts.map +1 -1
  14. package/src/command-line/list/list.js +5 -1
  15. package/src/command-line/nx-cloud/apply-locally/apply-locally.d.ts +5 -0
  16. package/src/command-line/nx-cloud/apply-locally/apply-locally.d.ts.map +1 -0
  17. package/src/command-line/nx-cloud/apply-locally/apply-locally.js +13 -0
  18. package/src/command-line/nx-cloud/apply-locally/command-object.d.ts +3 -0
  19. package/src/command-line/nx-cloud/apply-locally/command-object.d.ts.map +1 -0
  20. package/src/command-line/nx-cloud/apply-locally/command-object.js +15 -0
  21. package/src/command-line/nx-commands.d.ts.map +1 -1
  22. package/src/command-line/nx-commands.js +9 -7
  23. package/src/command-line/release/config/config.d.ts.map +1 -1
  24. package/src/command-line/release/config/config.js +11 -2
  25. package/src/command-line/release/index.d.ts +1 -1
  26. package/src/command-line/release/index.d.ts.map +1 -1
  27. package/src/command-line/release/release.d.ts +1 -1
  28. package/src/command-line/release/release.d.ts.map +1 -1
  29. package/src/command-line/release/utils/shared.d.ts +1 -1
  30. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  31. package/src/command-line/release/utils/shared.js +23 -15
  32. package/src/command-line/watch/watch.js +4 -4
  33. package/src/core/graph/main.js +1 -1
  34. package/src/daemon/client/client.d.ts.map +1 -1
  35. package/src/daemon/client/client.js +6 -1
  36. package/src/daemon/server/project-graph-incremental-recomputation.d.ts.map +1 -1
  37. package/src/daemon/server/project-graph-incremental-recomputation.js +38 -10
  38. package/src/executors/run-commands/running-tasks.d.ts +1 -1
  39. package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
  40. package/src/executors/run-commands/running-tasks.js +23 -17
  41. package/src/native/nx.wasm32-wasi.wasm +0 -0
  42. package/src/plugins/js/lock-file/project-graph-pruning.d.ts.map +1 -1
  43. package/src/plugins/js/lock-file/project-graph-pruning.js +3 -1
  44. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts.map +1 -1
  45. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +6 -3
  46. package/src/plugins/js/utils/register.d.ts.map +1 -1
  47. package/src/plugins/js/utils/register.js +14 -0
  48. package/src/project-graph/plugins/isolation/isolated-plugin.d.ts.map +1 -1
  49. package/src/project-graph/plugins/isolation/isolated-plugin.js +42 -35
  50. package/src/tasks-runner/forked-process-task-runner.d.ts.map +1 -1
  51. package/src/tasks-runner/forked-process-task-runner.js +1 -5
  52. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts.map +1 -1
  53. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +1 -0
  54. package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.d.ts.map +1 -1
  55. package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js +1 -0
  56. package/src/tasks-runner/life-cycles/tui-summary-life-cycle.d.ts.map +1 -1
  57. package/src/tasks-runner/life-cycles/tui-summary-life-cycle.js +15 -5
  58. package/src/tasks-runner/pseudo-terminal.d.ts +2 -2
  59. package/src/tasks-runner/pseudo-terminal.d.ts.map +1 -1
  60. package/src/tasks-runner/pseudo-terminal.js +7 -5
  61. package/src/tasks-runner/run-command.d.ts.map +1 -1
  62. package/src/tasks-runner/run-command.js +3 -1
  63. package/src/tasks-runner/running-tasks/batch-process.d.ts +0 -2
  64. package/src/tasks-runner/running-tasks/batch-process.d.ts.map +1 -1
  65. package/src/tasks-runner/running-tasks/batch-process.js +0 -6
  66. package/src/tasks-runner/running-tasks/node-child-process.d.ts +2 -1
  67. package/src/tasks-runner/running-tasks/node-child-process.d.ts.map +1 -1
  68. package/src/tasks-runner/running-tasks/node-child-process.js +8 -5
  69. package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
  70. package/src/tasks-runner/task-orchestrator.js +5 -17
  71. package/src/utils/output.d.ts.map +1 -1
  72. package/src/utils/output.js +6 -1
  73. package/src/utils/plugins/output.d.ts +29 -1
  74. package/src/utils/plugins/output.d.ts.map +1 -1
  75. package/src/utils/plugins/output.js +90 -1
  76. package/src/utils/plugins/plugin-capabilities.d.ts +1 -0
  77. package/src/utils/plugins/plugin-capabilities.d.ts.map +1 -1
  78. package/src/utils/plugins/plugin-capabilities.js +2 -0
  79. package/src/native/index.d.ts +0 -553
@@ -26,18 +26,22 @@ function getTuiTerminalSummaryLifeCycle({ projectNames, tasks, taskGraph, args,
26
26
  const failedTasks = new Set();
27
27
  const inProgressTasks = new Set();
28
28
  const stoppedTasks = new Set();
29
+ // Chunks accumulated progressively during task execution
30
+ const taskOutputChunks = {};
31
+ // Finalized output strings set on task completion — read by summary print functions
29
32
  const tasksToTerminalOutputs = {};
30
33
  const tasksToTaskStatus = {};
31
34
  const taskIdsInTheOrderTheyStart = [];
35
+ const getTerminalOutput = (taskId) => tasksToTerminalOutputs[taskId] ?? taskOutputChunks[taskId]?.join('') ?? '';
32
36
  lifeCycle.startTasks = (tasks) => {
33
37
  for (let t of tasks) {
34
- tasksToTerminalOutputs[t.id] ??= '';
38
+ taskOutputChunks[t.id] ??= [];
35
39
  taskIdsInTheOrderTheyStart.push(t.id);
36
40
  inProgressTasks.add(t.id);
37
41
  }
38
42
  };
39
43
  lifeCycle.appendTaskOutput = (taskId, output) => {
40
- tasksToTerminalOutputs[taskId] += output;
44
+ taskOutputChunks[taskId].push(output);
41
45
  };
42
46
  // TODO(@AgentEnder): The following 2 methods should be one but will need more refactoring
43
47
  lifeCycle.printTaskTerminalOutput = (task, taskStatus, output) => {
@@ -57,7 +61,7 @@ function getTuiTerminalSummaryLifeCycle({ projectNames, tasks, taskGraph, args,
57
61
  }
58
62
  };
59
63
  lifeCycle.endTasks = (taskResults) => {
60
- for (const { task, status } of taskResults) {
64
+ for (const { task, status, terminalOutput } of taskResults) {
61
65
  totalCompletedTasks++;
62
66
  inProgressTasks.delete(task.id);
63
67
  switch (status) {
@@ -75,6 +79,12 @@ function getTuiTerminalSummaryLifeCycle({ projectNames, tasks, taskGraph, args,
75
79
  failedTasks.add(task.id);
76
80
  break;
77
81
  }
82
+ // Store the final string directly — shares the same reference as
83
+ // TaskResultsLifeCycle, old chunks become GC-eligible
84
+ if (terminalOutput !== undefined) {
85
+ tasksToTerminalOutputs[task.id] = terminalOutput;
86
+ delete taskOutputChunks[task.id];
87
+ }
78
88
  }
79
89
  };
80
90
  lifeCycle.endCommand = () => {
@@ -118,7 +128,7 @@ function getTuiTerminalSummaryLifeCycle({ projectNames, tasks, taskGraph, args,
118
128
  // above the summary, since run-one should print all task results.
119
129
  for (const taskId of taskIdsInTheOrderTheyStart) {
120
130
  const taskStatus = tasksToTaskStatus[taskId];
121
- const terminalOutput = tasksToTerminalOutputs[taskId];
131
+ const terminalOutput = getTerminalOutput(taskId);
122
132
  output_1.output.logCommandOutput(taskId, taskStatus, terminalOutput);
123
133
  }
124
134
  // Print vertical separator
@@ -196,7 +206,7 @@ function getTuiTerminalSummaryLifeCycle({ projectNames, tasks, taskGraph, args,
196
206
  // First pass: Print task outputs and collect checklist lines
197
207
  for (const taskId of sortedTaskIds) {
198
208
  const taskStatus = tasksToTaskStatus[taskId];
199
- const terminalOutput = tasksToTerminalOutputs[taskId];
209
+ const terminalOutput = getTerminalOutput(taskId);
200
210
  // Task Status is null?
201
211
  if (!taskStatus) {
202
212
  output_1.output.logCommandOutput(taskId, taskStatus, terminalOutput);
@@ -36,13 +36,13 @@ export declare class PseudoTtyProcess implements RunningTask {
36
36
  isAlive: boolean;
37
37
  private exitCallbacks;
38
38
  private outputCallbacks;
39
- private terminalOutput;
39
+ private terminalOutputChunks;
40
40
  constructor(rustPseudoTerminal: RustPseudoTerminal, childProcess: ChildProcess);
41
41
  getResults(): Promise<{
42
42
  code: number;
43
43
  terminalOutput: string;
44
44
  }>;
45
- onExit(callback: (code: number) => void): void;
45
+ onExit(callback: (code: number, terminalOutput: string) => void): void;
46
46
  onOutput(callback: (message: string) => void): void;
47
47
  getPid(): number | undefined;
48
48
  kill(s?: NodeJS.Signals): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pseudo-terminal.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/pseudo-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAW,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS3D,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,OAAe,kBASrE;AAGD,qBAAa,cAAc;IAcb,OAAO,CAAC,kBAAkB;IAbtC,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,SAAS,CAA2C;IAE5D,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,cAAc,CAA+B;IAErD,MAAM,CAAC,WAAW;gBAIE,kBAAkB,EAAE,kBAAkB;IAEpD,IAAI;IAQV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAWrB,UAAU,CACR,OAAO,EAAE,MAAM,EACf,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,GAAG,GACJ,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV;IAiBF,IAAI,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IA2BH,qBAAqB,CAAC,OAAO,EAAE,YAAY;IAI3C,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;CAGhE;AAED,qBAAa,gBAAiB,YAAW,WAAW;IASzC,kBAAkB,EAAE,kBAAkB;IAC7C,OAAO,CAAC,YAAY;IATtB,OAAO,UAAQ;IAEf,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,cAAc,CAAM;gBAGnB,kBAAkB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY;IAiB9B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAa9B,kBAAkB;CAGnB;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;IAEnD,kBAAkB,EAAE,kBAAkB;IAE7C,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;gBAHV,kBAAkB,EAAE,kBAAkB,EAC7C,aAAa,EAAE,YAAY,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,eAAe;IAKpC,IAAI,CAAC,OAAO,EAAE,YAAY;CAG3B"}
1
+ {"version":3,"file":"pseudo-terminal.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/pseudo-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAW,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS3D,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,OAAe,kBASrE;AAGD,qBAAa,cAAc;IAcb,OAAO,CAAC,kBAAkB;IAbtC,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,SAAS,CAA2C;IAE5D,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,cAAc,CAA+B;IAErD,MAAM,CAAC,WAAW;gBAIE,kBAAkB,EAAE,kBAAkB;IAEpD,IAAI;IAQV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAWrB,UAAU,CACR,OAAO,EAAE,MAAM,EACf,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,GAAG,GACJ,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV;IAiBF,IAAI,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IA2BH,qBAAqB,CAAC,OAAO,EAAE,YAAY;IAI3C,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;CAGhE;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAUzC,kBAAkB,EAAE,kBAAkB;IAC7C,OAAO,CAAC,YAAY;IAVtB,OAAO,UAAQ;IAEf,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,oBAAoB,CAAgB;gBAGnC,kBAAkB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY;IAmB9B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAa9B,kBAAkB;CAGnB;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;IAEnD,kBAAkB,EAAE,kBAAkB;IAE7C,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;gBAHV,kBAAkB,EAAE,kBAAkB,EAC7C,aAAa,EAAE,YAAY,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,eAAe;IAKpC,IAAI,CAAC,OAAO,EAAE,YAAY;CAG3B"}
@@ -79,22 +79,24 @@ class PseudoTtyProcess {
79
79
  this.isAlive = true;
80
80
  this.exitCallbacks = [];
81
81
  this.outputCallbacks = [];
82
- this.terminalOutput = '';
82
+ this.terminalOutputChunks = [];
83
83
  childProcess.onOutput((output) => {
84
- this.terminalOutput += output;
84
+ this.terminalOutputChunks.push(output);
85
85
  this.outputCallbacks.forEach((cb) => cb(output));
86
86
  });
87
87
  childProcess.onExit((message) => {
88
88
  this.isAlive = false;
89
89
  const code = messageToCode(message);
90
90
  childProcess.cleanup();
91
- this.exitCallbacks.forEach((cb) => cb(code));
91
+ const terminalOutput = this.terminalOutputChunks.join('');
92
+ this.terminalOutputChunks = [];
93
+ this.exitCallbacks.forEach((cb) => cb(code, terminalOutput));
92
94
  });
93
95
  }
94
96
  async getResults() {
95
97
  return new Promise((res) => {
96
- this.onExit((code) => {
97
- res({ code, terminalOutput: this.terminalOutput });
98
+ this.onExit((code, terminalOutput) => {
99
+ res({ code, terminalOutput });
98
100
  });
99
101
  });
100
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-command.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/run-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-command.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/run-command.ts"],"names":[],"mappings":"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"}
@@ -609,7 +609,9 @@ function setEnvVarsBasedOnArgs(nxArgs, loadDotEnvFiles) {
609
609
  process.env.NX_STREAM_OUTPUT = 'true';
610
610
  process.env.NX_PREFIX_OUTPUT = 'false';
611
611
  }
612
- if (nxArgs.outputStyle === 'dynamic' || nxArgs.outputStyle === 'tui') {
612
+ // Force streaming only when the TUI is active, so it can capture and
613
+ // render task output. Other output styles manage their own streaming.
614
+ if ((0, is_tui_enabled_1.isTuiEnabled)()) {
613
615
  process.env.NX_STREAM_OUTPUT = 'true';
614
616
  }
615
617
  if (loadDotEnvFiles) {
@@ -8,7 +8,6 @@ export declare class BatchProcess {
8
8
  private batchResultsCallbacks;
9
9
  private taskResultsCallbacks;
10
10
  private outputCallbacks;
11
- private terminalOutput;
12
11
  constructor(childProcess: ChildProcess, executorName: string);
13
12
  onExit(cb: (code: number) => void): void;
14
13
  onBatchResults(cb: (results: BatchResults) => void): void;
@@ -17,6 +16,5 @@ export declare class BatchProcess {
17
16
  getResults(): Promise<BatchResults>;
18
17
  send(message: Serializable): void;
19
18
  kill(signal?: NodeJS.Signals): void;
20
- getTerminalOutput(): string;
21
19
  }
22
20
  //# sourceMappingURL=batch-process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/batch-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAGL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,YAAY;IAUrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IAVtB,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,qBAAqB,CAA8C;IAC3E,OAAO,CAAC,oBAAoB,CAErB;IACP,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,cAAc,CAAc;gBAG1B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM;IAqE9B,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAIlD,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI;IAI5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBzC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAMnC,iBAAiB,IAAI,MAAM;CAG5B"}
1
+ {"version":3,"file":"batch-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/batch-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAGL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,YAAY;IASrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IATtB,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,qBAAqB,CAA8C;IAC3E,OAAO,CAAC,oBAAoB,CAErB;IACP,OAAO,CAAC,eAAe,CAAuC;gBAGpD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM;IAmE9B,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAIlD,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI;IAI5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBzC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAKpC"}
@@ -11,7 +11,6 @@ class BatchProcess {
11
11
  this.batchResultsCallbacks = [];
12
12
  this.taskResultsCallbacks = [];
13
13
  this.outputCallbacks = [];
14
- this.terminalOutput = '';
15
14
  this.childProcess.on('message', (message) => {
16
15
  switch (message.type) {
17
16
  case batch_messages_1.BatchMessageType.CompleteTask: {
@@ -48,7 +47,6 @@ class BatchProcess {
48
47
  if (this.childProcess.stdout) {
49
48
  this.childProcess.stdout.on('data', (chunk) => {
50
49
  const output = chunk.toString();
51
- this.terminalOutput += output;
52
50
  // Maintain current terminal output behavior
53
51
  process.stdout.write(chunk);
54
52
  // Notify callbacks for TUI
@@ -61,7 +59,6 @@ class BatchProcess {
61
59
  if (this.childProcess.stderr) {
62
60
  this.childProcess.stderr.on('data', (chunk) => {
63
61
  const output = chunk.toString();
64
- this.terminalOutput += output;
65
62
  // Maintain current terminal output behavior
66
63
  process.stderr.write(chunk);
67
64
  // Notify callbacks for TUI
@@ -107,8 +104,5 @@ class BatchProcess {
107
104
  this.childProcess.kill(signal);
108
105
  }
109
106
  }
110
- getTerminalOutput() {
111
- return this.terminalOutput;
112
- }
113
107
  }
114
108
  exports.BatchProcess = BatchProcess;
@@ -2,7 +2,8 @@ import type { ChildProcess, Serializable } from 'child_process';
2
2
  import type { RunningTask } from './running-task';
3
3
  export declare class NodeChildProcessWithNonDirectOutput implements RunningTask {
4
4
  private childProcess;
5
- private terminalOutput;
5
+ private terminalOutputChunks;
6
+ private joinedTerminalOutput;
6
7
  private exitCallbacks;
7
8
  private outputCallbacks;
8
9
  private exitCode;
@@ -1 +1 @@
1
- {"version":3,"file":"node-child-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/node-child-process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,qBAAa,mCAAoC,YAAW,WAAW;IASnE,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAClC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA2DrE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI;IAIzD,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAcrE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;CAOpC;AA2DD,qBAAa,gCAAiC,YAAW,WAAW;IAQhE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAR7B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAqD;IAE1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,MAAM;IAqBrC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;IAInD,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,WAAW;IAMX,iBAAiB;IAKjB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAOpC"}
1
+ {"version":3,"file":"node-child-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/node-child-process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,qBAAa,mCAAoC,YAAW,WAAW;IAUnE,OAAO,CAAC,YAAY;IATtB,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAClC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA8DrE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI;IAIzD,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAerE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;CAOpC;AA2DD,qBAAa,gCAAiC,YAAW,WAAW;IAQhE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAR7B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAqD;IAE1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,MAAM;IAqBrC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;IAInD,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,WAAW;IAMX,iBAAiB;IAKjB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAOpC"}
@@ -9,7 +9,7 @@ const exit_codes_1 = require("../../utils/exit-codes");
9
9
  class NodeChildProcessWithNonDirectOutput {
10
10
  constructor(childProcess, { streamOutput, prefix }) {
11
11
  this.childProcess = childProcess;
12
- this.terminalOutput = '';
12
+ this.terminalOutputChunks = [];
13
13
  this.exitCallbacks = [];
14
14
  this.outputCallbacks = [];
15
15
  if (streamOutput) {
@@ -38,8 +38,11 @@ class NodeChildProcessWithNonDirectOutput {
38
38
  if (code === null)
39
39
  code = (0, exit_codes_1.signalToCode)(signal);
40
40
  this.exitCode = code;
41
+ // Join once and cache before notifying exit callbacks
42
+ this.joinedTerminalOutput = this.terminalOutputChunks.join('');
43
+ this.terminalOutputChunks = [];
41
44
  for (const cb of this.exitCallbacks) {
42
- cb(code, this.terminalOutput);
45
+ cb(code, this.joinedTerminalOutput);
43
46
  }
44
47
  });
45
48
  // Re-emit any messages from the task process
@@ -50,7 +53,7 @@ class NodeChildProcessWithNonDirectOutput {
50
53
  });
51
54
  this.childProcess.stdout.on('data', (chunk) => {
52
55
  const output = chunk.toString();
53
- this.terminalOutput += output;
56
+ this.terminalOutputChunks.push(output);
54
57
  // Stream output to TUI via callbacks
55
58
  for (const cb of this.outputCallbacks) {
56
59
  cb(output);
@@ -58,7 +61,7 @@ class NodeChildProcessWithNonDirectOutput {
58
61
  });
59
62
  this.childProcess.stderr.on('data', (chunk) => {
60
63
  const output = chunk.toString();
61
- this.terminalOutput += output;
64
+ this.terminalOutputChunks.push(output);
62
65
  // Stream output to TUI via callbacks
63
66
  for (const cb of this.outputCallbacks) {
64
67
  cb(output);
@@ -75,7 +78,7 @@ class NodeChildProcessWithNonDirectOutput {
75
78
  if (typeof this.exitCode === 'number') {
76
79
  return {
77
80
  code: this.exitCode,
78
- terminalOutput: this.terminalOutput,
81
+ terminalOutput: this.joinedTerminalOutput ?? this.terminalOutputChunks.join(''),
79
82
  };
80
83
  }
81
84
  return new Promise((res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -402,23 +402,11 @@ class TaskOrchestrator {
402
402
  }
403
403
  }
404
404
  if (!streamOutput) {
405
- if (runningTask instanceof pseudo_terminal_1.PseudoTtyProcess) {
406
- // TODO: shouldn't this be checking if the task is continuous before writing anything to disk or calling printTaskTerminalOutput?
407
- let terminalOutput = '';
408
- runningTask.onOutput((data) => {
409
- terminalOutput += data;
410
- });
411
- runningTask.onExit((code) => {
412
- this.options.lifeCycle.printTaskTerminalOutput(task, code === 0 ? 'success' : 'failure', terminalOutput);
413
- (0, fs_1.writeFileSync)(temporaryOutputPath, terminalOutput);
414
- });
415
- }
416
- else {
417
- runningTask.onExit((code, terminalOutput) => {
418
- this.options.lifeCycle.printTaskTerminalOutput(task, code === 0 ? 'success' : 'failure', terminalOutput);
419
- (0, fs_1.writeFileSync)(temporaryOutputPath, terminalOutput);
420
- });
421
- }
405
+ // TODO: shouldn't this be checking if the task is continuous before writing anything to disk or calling printTaskTerminalOutput?
406
+ runningTask.onExit((code, terminalOutput) => {
407
+ this.options.lifeCycle.printTaskTerminalOutput(task, code === 0 ? 'success' : 'failure', terminalOutput);
408
+ (0, fs_1.writeFileSync)(temporaryOutputPath, terminalOutput);
409
+ });
422
410
  }
423
411
  return runningTask;
424
412
  }
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/output.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAiBD,cAAM,SAAS;IACb,OAAO,SAAQ;IACf,aAAa,GAAI,QAAQ,MAAM,YAAqC;IAEpE;;;OAGG;IACH,OAAO,KAAK,kBAAkB,GAM7B;IAED;;;;OAIG;IACH,MAAM;;;;;;;MAOJ;IACF,IAAI,uCAAW;IACf,SAAS,uCAAgB;IACzB,GAAG,uCAAU;IAEb,OAAO,CAAC,aAAa;IAIrB,aAAa,CAAC,QAAQ,GAAE,MAAW;IASnC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,uBAAuB;IAQ/B,aAAa,CAAC,KAAK,QAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAMnD,UAAU;IAIV,oBAAoB,CAAC,KAAK,SAAS;IAMnC,mCAAmC,CAAC,KAAK,SAAS;IAIlD,yBAAyB,CAAC,KAAK,SAAS;IAIxC,OAAO,CAAC,oBAAoB;IAK5B,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,qBAAqB;IAyBvD,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB;IAyBrD,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,oBAAoB;IAa/C,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB;IAarD,aAAa,CAAC,OAAO,EAAE,MAAM;IAW7B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU;IAOnD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IA4BxE,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,aAAa;IAuBrB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,oBAAoB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAc1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CASvB;AAED,eAAO,MAAM,MAAM,WAAkB,CAAC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/output.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAiBD,cAAM,SAAS;IACb,OAAO,SAAQ;IACf,aAAa,GAAI,QAAQ,MAAM,YAAqC;IAEpE;;;OAGG;IACH,OAAO,KAAK,kBAAkB,GAM7B;IAED;;;;OAIG;IACH,MAAM;;;;;;;MAOJ;IACF,IAAI,uCAAW;IACf,SAAS,uCAAgB;IACzB,GAAG,uCAAU;IAEb,OAAO,CAAC,aAAa;IAIrB,aAAa,CAAC,QAAQ,GAAE,MAAW;IAcnC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,uBAAuB;IAQ/B,aAAa,CAAC,KAAK,QAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAMnD,UAAU;IAIV,oBAAoB,CAAC,KAAK,SAAS;IAMnC,mCAAmC,CAAC,KAAK,SAAS;IAIlD,yBAAyB,CAAC,KAAK,SAAS;IAIxC,OAAO,CAAC,oBAAoB;IAK5B,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,qBAAqB;IAyBvD,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB;IAyBrD,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,oBAAoB;IAa/C,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB;IAarD,aAAa,CAAC,OAAO,EAAE,MAAM;IAW7B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU;IAOnD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IA4BxE,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,aAAa;IAuBrB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,oBAAoB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAc1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CASvB;AAED,eAAO,MAAM,MAAM,WAAkB,CAAC"}
@@ -65,12 +65,17 @@ class CLIOutput {
65
65
  process.stdout.write(str);
66
66
  }
67
67
  overwriteLine(lineText = '') {
68
+ // Ensure we always start writing from column 0.
69
+ readline.cursorTo(process.stdout, 0);
68
70
  // this replaces the existing text up to the new line length
69
71
  process.stdout.write(lineText);
70
72
  // clear whatever text might be left to the right of the cursor (happens
71
73
  // when existing text was longer than new one)
72
74
  readline.clearLine(process.stdout, 1);
73
- process.stdout.write(os_1.EOL);
75
+ // Move to the next line and re-anchor to column 0 without relying on
76
+ // terminal newline translation behavior.
77
+ process.stdout.write('\n');
78
+ readline.cursorTo(process.stdout, 0);
74
79
  }
75
80
  writeOutputTitle({ color, title, }) {
76
81
  this.writeToStdOut(`${this.applyNxPrefix(color, title)}${os_1.EOL}`);
@@ -3,5 +3,33 @@ import { PluginCapabilities } from './plugin-capabilities';
3
3
  export declare function listPlugins(plugins: Map<string, PluginCapabilities>, title: string): void;
4
4
  export declare function listAlsoAvailableCorePlugins(installedPlugins: Map<string, PluginCapabilities>): void;
5
5
  export declare function listPowerpackPlugins(): void;
6
- export declare function listPluginCapabilities(pluginName: string, projects: Record<string, ProjectConfiguration>): Promise<void>;
6
+ export declare function listPluginCapabilities(pluginName: string, projects: Record<string, ProjectConfiguration>, json?: boolean): Promise<void>;
7
+ export declare function formatPluginCapabilitiesAsJson(plugin: PluginCapabilities): {
8
+ name: string;
9
+ path: string;
10
+ generators: Record<string, {
11
+ description: string;
12
+ path: string | null;
13
+ schema: string | null;
14
+ }>;
15
+ executors: Record<string, {
16
+ description: string;
17
+ path: string | null;
18
+ schema: string | null;
19
+ }>;
20
+ projectGraphExtension: boolean;
21
+ projectInference: boolean;
22
+ };
23
+ export declare function formatPluginsAsJson(localPlugins: Map<string, PluginCapabilities>, installedPlugins: Map<string, PluginCapabilities>): {
24
+ localWorkspacePlugins: {
25
+ name: string;
26
+ path: string;
27
+ capabilities: string[];
28
+ }[];
29
+ installedPlugins: {
30
+ name: string;
31
+ path: string;
32
+ capabilities: string[];
33
+ }[];
34
+ };
7
35
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAKhF,OAAO,EACL,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,KAAK,EAAE,MAAM,QA8Bd;AAED,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAChD,IAAI,CAaN;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,iBA4E/C"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/output.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAKhF,OAAO,EACL,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,KAAK,EAAE,MAAM,QA8Bd;AAED,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAChD,IAAI,CAaN;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,IAAI,UAAQ,iBAyGb;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,kBAAkB;;;;qBAGtD,MAAM;cAAQ,MAAM,GAAG,IAAI;gBAAU,MAAM,GAAG,IAAI;;;qBAelD,MAAM;cAAQ,MAAM,GAAG,IAAI;gBAAU,MAAM,GAAG,IAAI;;;;EAsBpE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;;;;;;;;;;;EA+BlD"}
@@ -4,6 +4,9 @@ exports.listPlugins = listPlugins;
4
4
  exports.listAlsoAvailableCorePlugins = listAlsoAvailableCorePlugins;
5
5
  exports.listPowerpackPlugins = listPowerpackPlugins;
6
6
  exports.listPluginCapabilities = listPluginCapabilities;
7
+ exports.formatPluginCapabilitiesAsJson = formatPluginCapabilitiesAsJson;
8
+ exports.formatPluginsAsJson = formatPluginsAsJson;
9
+ const path_1 = require("path");
7
10
  const pc = require("picocolors");
8
11
  const output_1 = require("../output");
9
12
  const package_manager_1 = require("../package-manager");
@@ -52,9 +55,13 @@ function listPowerpackPlugins() {
52
55
  title: `Available Powerpack Plugins: ${powerpackLink}`,
53
56
  });
54
57
  }
55
- async function listPluginCapabilities(pluginName, projects) {
58
+ async function listPluginCapabilities(pluginName, projects, json = false) {
56
59
  const plugin = await (0, plugin_capabilities_1.getPluginCapabilities)(workspace_root_1.workspaceRoot, pluginName, projects);
57
60
  if (!plugin) {
61
+ if (json) {
62
+ console.log(JSON.stringify({ error: `${pluginName} is not installed` }));
63
+ return;
64
+ }
58
65
  const pmc = (0, package_manager_1.getPackageManagerCommand)();
59
66
  output_1.output.note({
60
67
  title: `${pluginName} is not currently installed`,
@@ -73,10 +80,29 @@ async function listPluginCapabilities(pluginName, projects) {
73
80
  !hasGenerators &&
74
81
  !hasProjectGraphExtension &&
75
82
  !hasProjectInference) {
83
+ if (json) {
84
+ console.log(JSON.stringify({
85
+ name: plugin.name,
86
+ path: plugin.path,
87
+ generators: {},
88
+ executors: {},
89
+ projectGraphExtension: false,
90
+ projectInference: false,
91
+ }));
92
+ return;
93
+ }
76
94
  output_1.output.warn({ title: `No capabilities found in ${pluginName}` });
77
95
  return;
78
96
  }
97
+ if (json) {
98
+ console.log(JSON.stringify(formatPluginCapabilitiesAsJson(plugin), null, 2));
99
+ return;
100
+ }
79
101
  const bodyLines = [];
102
+ if (plugin.path) {
103
+ bodyLines.push(`${pc.bold('Path:')} ${plugin.path}`);
104
+ bodyLines.push('');
105
+ }
80
106
  if (hasGenerators) {
81
107
  bodyLines.push(pc.bold(pc.green('GENERATORS')));
82
108
  bodyLines.push('');
@@ -106,6 +132,69 @@ async function listPluginCapabilities(pluginName, projects) {
106
132
  bodyLines,
107
133
  });
108
134
  }
135
+ function formatPluginCapabilitiesAsJson(plugin) {
136
+ const generators = {};
137
+ for (const [name, entry] of Object.entries(plugin.generators ?? {})) {
138
+ generators[name] = {
139
+ description: entry.description ?? '',
140
+ path: resolveCapabilityPath(plugin.path, entry.factory ?? entry.implementation),
141
+ schema: resolveCapabilityPath(plugin.path, entry.schema),
142
+ };
143
+ }
144
+ const executors = {};
145
+ for (const [name, entry] of Object.entries(plugin.executors ?? {})) {
146
+ if (typeof entry === 'string') {
147
+ executors[name] = { description: '', path: null, schema: null };
148
+ }
149
+ else {
150
+ executors[name] = {
151
+ description: entry.description ?? '',
152
+ path: resolveCapabilityPath(plugin.path, entry.implementation),
153
+ schema: resolveCapabilityPath(plugin.path, entry.schema),
154
+ };
155
+ }
156
+ }
157
+ return {
158
+ name: plugin.name,
159
+ path: plugin.path ?? null,
160
+ generators,
161
+ executors,
162
+ projectGraphExtension: !!plugin.projectGraphExtension,
163
+ projectInference: !!plugin.projectInference,
164
+ };
165
+ }
166
+ function formatPluginsAsJson(localPlugins, installedPlugins) {
167
+ function formatPluginSummary(plugin) {
168
+ const capabilities = [];
169
+ if (hasElements(plugin.executors)) {
170
+ capabilities.push('executors');
171
+ }
172
+ if (hasElements(plugin.generators)) {
173
+ capabilities.push('generators');
174
+ }
175
+ if (plugin.projectGraphExtension) {
176
+ capabilities.push('graph-extension');
177
+ }
178
+ if (plugin.projectInference) {
179
+ capabilities.push('project-inference');
180
+ }
181
+ return {
182
+ name: plugin.name,
183
+ path: plugin.path ?? null,
184
+ capabilities,
185
+ };
186
+ }
187
+ return {
188
+ localWorkspacePlugins: Array.from(localPlugins.values()).map(formatPluginSummary),
189
+ installedPlugins: Array.from(installedPlugins.values()).map(formatPluginSummary),
190
+ };
191
+ }
192
+ function resolveCapabilityPath(pluginPath, relativePath) {
193
+ if (!pluginPath || !relativePath) {
194
+ return null;
195
+ }
196
+ return (0, path_1.join)(pluginPath, relativePath);
197
+ }
109
198
  function hasElements(obj) {
110
199
  return obj && Object.values(obj).length > 0;
111
200
  }
@@ -2,6 +2,7 @@ import { ExecutorsJsonEntry, GeneratorsJsonEntry } from '../../config/misc-inter
2
2
  import { ProjectConfiguration } from '../../config/workspace-json-project-json';
3
3
  export interface PluginCapabilities {
4
4
  name: string;
5
+ path?: string;
5
6
  executors?: {
6
7
  [name: string]: ExecutorsJsonEntry;
7
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-capabilities.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/plugin-capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAQhF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC;IACnD,UAAU,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAC;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAmBD,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,0BAA0B,UAAQ,GACjC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA4DpC"}
1
+ {"version":3,"file":"plugin-capabilities.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/plugin-capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAQhF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC;IACnD,UAAU,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAC;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAmBD,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,0BAA0B,UAAQ,GACjC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA8DpC"}
@@ -24,8 +24,10 @@ async function getPluginCapabilities(workspaceRoot, pluginName, projects, includ
24
24
  const pluginModule = includeRuntimeCapabilities
25
25
  ? await tryGetModule(packageJson, workspaceRoot)
26
26
  : {};
27
+ const pluginPath = (0, path_1.relative)(workspaceRoot, (0, path_1.dirname)(packageJsonPath)) || '.';
27
28
  return {
28
29
  name: pluginName,
30
+ path: pluginPath,
29
31
  generators: {
30
32
  ...tryGetCollection(packageJsonPath, packageJson.schematics, 'schematics'),
31
33
  ...tryGetCollection(packageJsonPath, packageJson.generators, 'schematics'),