nx 22.1.0-beta.4 → 22.1.0-beta.6
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/migrations.json +6 -0
- package/package.json +11 -11
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts +2 -0
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts.map +1 -1
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +11 -1
- package/src/core/graph/main.js +1 -1
- package/src/daemon/client/client.d.ts +1 -0
- package/src/daemon/client/client.d.ts.map +1 -1
- package/src/daemon/client/client.js +18 -1
- package/src/executors/run-commands/run-commands.impl.d.ts +1 -1
- package/src/executors/run-commands/run-commands.impl.d.ts.map +1 -1
- package/src/executors/run-commands/run-commands.impl.js +7 -4
- package/src/executors/run-commands/running-tasks.d.ts +4 -3
- package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
- package/src/executors/run-commands/running-tasks.js +30 -9
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts.map +1 -1
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +5 -1
- package/src/migrations/update-22-1-0/update-nx-wrapper.d.ts +3 -0
- package/src/migrations/update-22-1-0/update-nx-wrapper.d.ts.map +1 -0
- package/src/migrations/update-22-1-0/update-nx-wrapper.js +7 -0
- package/src/native/index.d.ts +101 -0
- package/src/native/native-bindings.js +1 -0
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +1 -1
- package/src/project-graph/plugins/get-plugins.d.ts.map +1 -1
- package/src/project-graph/plugins/get-plugins.js +4 -4
- package/src/project-graph/plugins/isolation/index.d.ts +1 -1
- package/src/project-graph/plugins/isolation/index.d.ts.map +1 -1
- package/src/project-graph/plugins/isolation/index.js +2 -2
- package/src/project-graph/plugins/isolation/plugin-pool.d.ts +1 -1
- package/src/project-graph/plugins/isolation/plugin-pool.d.ts.map +1 -1
- package/src/project-graph/plugins/isolation/plugin-pool.js +22 -2
- package/src/tasks-runner/create-task-graph.d.ts.map +1 -1
- package/src/tasks-runner/create-task-graph.js +4 -11
- package/src/tasks-runner/forked-process-task-runner.d.ts.map +1 -1
- package/src/tasks-runner/forked-process-task-runner.js +36 -4
- package/src/tasks-runner/process-metrics-service.d.ts +54 -0
- package/src/tasks-runner/process-metrics-service.d.ts.map +1 -0
- package/src/tasks-runner/process-metrics-service.js +161 -0
- package/src/tasks-runner/pseudo-terminal.d.ts +1 -0
- package/src/tasks-runner/pseudo-terminal.d.ts.map +1 -1
- package/src/tasks-runner/pseudo-terminal.js +3 -0
- package/src/tasks-runner/running-tasks/node-child-process.d.ts.map +1 -1
- package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
- package/src/tasks-runner/task-orchestrator.js +1 -1
- package/src/tasks-runner/utils.d.ts +1 -0
- package/src/tasks-runner/utils.d.ts.map +1 -1
- package/src/tasks-runner/utils.js +8 -0
- package/src/utils/update-nxw.d.ts.map +1 -1
- package/src/utils/update-nxw.js +11 -0
|
@@ -33,7 +33,7 @@ class ProcessTasks {
|
|
|
33
33
|
const project = this.projectGraph.nodes[projectName];
|
|
34
34
|
if (targets.length === 1 || project.data.targets[target]) {
|
|
35
35
|
const resolvedConfiguration = this.resolveConfiguration(project, target, configuration);
|
|
36
|
-
const id = createTaskId(projectName, target, resolvedConfiguration);
|
|
36
|
+
const id = (0, utils_1.createTaskId)(projectName, target, resolvedConfiguration);
|
|
37
37
|
const task = this.createTask(id, project, target, resolvedConfiguration, overrides);
|
|
38
38
|
this.tasks[task.id] = task;
|
|
39
39
|
this.dependencies[task.id] = [];
|
|
@@ -118,7 +118,7 @@ class ProcessTasks {
|
|
|
118
118
|
const selfProject = this.projectGraph.nodes[projectName];
|
|
119
119
|
if ((0, project_graph_utils_1.projectHasTarget)(selfProject, dependencyConfig.target)) {
|
|
120
120
|
const resolvedConfiguration = this.resolveConfiguration(selfProject, dependencyConfig.target, configuration);
|
|
121
|
-
const selfTaskId = createTaskId(selfProject.name, dependencyConfig.target, resolvedConfiguration);
|
|
121
|
+
const selfTaskId = (0, utils_1.createTaskId)(selfProject.name, dependencyConfig.target, resolvedConfiguration);
|
|
122
122
|
if (!this.tasks[selfTaskId]) {
|
|
123
123
|
const newTask = this.createTask(selfTaskId, selfProject, dependencyConfig.target, resolvedConfiguration, taskOverrides);
|
|
124
124
|
this.tasks[selfTaskId] = newTask;
|
|
@@ -147,7 +147,7 @@ class ProcessTasks {
|
|
|
147
147
|
continue;
|
|
148
148
|
if ((0, project_graph_utils_1.projectHasTarget)(depProject, dependencyConfig.target)) {
|
|
149
149
|
const resolvedConfiguration = this.resolveConfiguration(depProject, dependencyConfig.target, configuration);
|
|
150
|
-
const depTargetId = createTaskId(depProject.name, dependencyConfig.target, resolvedConfiguration);
|
|
150
|
+
const depTargetId = (0, utils_1.createTaskId)(depProject.name, dependencyConfig.target, resolvedConfiguration);
|
|
151
151
|
const depTargetConfiguration = this.projectGraph.nodes[depProject.name].data.targets[dependencyConfig.target];
|
|
152
152
|
if (task.id !== depTargetId) {
|
|
153
153
|
if (depTargetConfiguration.continuous) {
|
|
@@ -167,7 +167,7 @@ class ProcessTasks {
|
|
|
167
167
|
}
|
|
168
168
|
else {
|
|
169
169
|
// Create a dummy task for task.target.project... which simulates if depProject had dependencyConfig.target
|
|
170
|
-
const dummyId = createTaskId(depProject.name, task.target.project +
|
|
170
|
+
const dummyId = (0, utils_1.createTaskId)(depProject.name, task.target.project +
|
|
171
171
|
task.target.target +
|
|
172
172
|
'__' +
|
|
173
173
|
dependencyConfig.target +
|
|
@@ -307,10 +307,3 @@ function createTaskOverrides(dependencyConfig, cliOverrides, sourceTask, project
|
|
|
307
307
|
? { ...optionsToForward, ...cliOverrides }
|
|
308
308
|
: { ...optionsToForward, __overrides_unparsed__: [] };
|
|
309
309
|
}
|
|
310
|
-
function createTaskId(project, target, configuration) {
|
|
311
|
-
let id = `${project}:${target}`;
|
|
312
|
-
if (configuration) {
|
|
313
|
-
id += `:${configuration}`;
|
|
314
|
-
}
|
|
315
|
-
return id;
|
|
316
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forked-process-task-runner.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/forked-process-task-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"forked-process-task-runner.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/forked-process-task-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAQ3D,qBAAa,uBAAuB;IAShC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,OAAO,SAAgB;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,eAAe,CAA6B;gBAGjC,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,OAAO;IAGhC,IAAI;IAKG,mBAAmB,CAC9B,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,KAAK,EAClD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,SAAS,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC;IAiDjB,qBAAqB;IASf,iBAAiB,CAC5B,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,GAAG,GACJ,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;KACxB,GACA,OAAO,CAAC,WAAW,CAAC;IAgBV,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,GAAG,EACH,qBAAqB,GACtB,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QACvB,qBAAqB,EAAE,OAAO,CAAC;KAChC,GACA,OAAO,CAAC,WAAW,GAAG,gBAAgB,CAAC;YAiC5B,oBAAoB;YAYpB,6BAA6B;IAkE3C,OAAO,CAAC,8BAA8B;IAmEtC,OAAO,CAAC,8BAA8B;IA2EtC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;IAO/B,OAAO,CAAC,0BAA0B;CAwCnC"}
|
|
@@ -13,6 +13,7 @@ const exit_codes_1 = require("../utils/exit-codes");
|
|
|
13
13
|
const node_child_process_1 = require("./running-tasks/node-child-process");
|
|
14
14
|
const batch_process_1 = require("./running-tasks/batch-process");
|
|
15
15
|
const native_1 = require("../native");
|
|
16
|
+
const process_metrics_service_1 = require("./process-metrics-service");
|
|
16
17
|
const forkScript = (0, path_1.join)(__dirname, './fork.js');
|
|
17
18
|
const workerPath = (0, path_1.join)(__dirname, './batch/run-batch.js');
|
|
18
19
|
class ForkedProcessTaskRunner {
|
|
@@ -40,8 +41,17 @@ class ForkedProcessTaskRunner {
|
|
|
40
41
|
}
|
|
41
42
|
const p = (0, child_process_1.fork)(workerPath, {
|
|
42
43
|
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
43
|
-
env
|
|
44
|
+
env: {
|
|
45
|
+
...env,
|
|
46
|
+
NX_FORKED_TASK_EXECUTOR: 'true',
|
|
47
|
+
},
|
|
44
48
|
});
|
|
49
|
+
// Register batch worker process with all tasks
|
|
50
|
+
if (p.pid) {
|
|
51
|
+
const batchId = `${executorName}-${p.pid}`;
|
|
52
|
+
const taskIds = Object.keys(batchTaskGraph.tasks);
|
|
53
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerBatch(batchId, taskIds, p.pid);
|
|
54
|
+
}
|
|
45
55
|
const cp = new batch_process_1.BatchProcess(p, executorName);
|
|
46
56
|
this.processes.add(cp);
|
|
47
57
|
cp.onExit(() => {
|
|
@@ -124,10 +134,18 @@ class ForkedProcessTaskRunner {
|
|
|
124
134
|
const p = await pseudoTerminal.fork(childId, forkScript, {
|
|
125
135
|
cwd: process.cwd(),
|
|
126
136
|
execArgv: process.execArgv,
|
|
127
|
-
jsEnv:
|
|
137
|
+
jsEnv: {
|
|
138
|
+
...env,
|
|
139
|
+
NX_FORKED_TASK_EXECUTOR: 'true',
|
|
140
|
+
},
|
|
128
141
|
quiet: !streamOutput,
|
|
129
142
|
commandLabel: `nx run ${task.id}`,
|
|
130
143
|
});
|
|
144
|
+
// Register forked process for metrics collection
|
|
145
|
+
const pid = p.getPid();
|
|
146
|
+
if (pid) {
|
|
147
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, pid);
|
|
148
|
+
}
|
|
131
149
|
p.send({
|
|
132
150
|
targetDescription: task.target,
|
|
133
151
|
overrides: task.overrides,
|
|
@@ -160,8 +178,15 @@ class ForkedProcessTaskRunner {
|
|
|
160
178
|
}
|
|
161
179
|
const p = (0, child_process_1.fork)(this.cliPath, {
|
|
162
180
|
stdio: ['inherit', 'pipe', 'pipe', 'ipc'],
|
|
163
|
-
env
|
|
181
|
+
env: {
|
|
182
|
+
...env,
|
|
183
|
+
NX_FORKED_TASK_EXECUTOR: 'true',
|
|
184
|
+
},
|
|
164
185
|
});
|
|
186
|
+
// Register forked process for metrics collection
|
|
187
|
+
if (p.pid) {
|
|
188
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, p.pid);
|
|
189
|
+
}
|
|
165
190
|
// Send message to run the executor
|
|
166
191
|
p.send({
|
|
167
192
|
targetDescription: task.target,
|
|
@@ -196,8 +221,15 @@ class ForkedProcessTaskRunner {
|
|
|
196
221
|
}
|
|
197
222
|
const p = (0, child_process_1.fork)(this.cliPath, {
|
|
198
223
|
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
199
|
-
env
|
|
224
|
+
env: {
|
|
225
|
+
...env,
|
|
226
|
+
NX_FORKED_TASK_EXECUTOR: 'true',
|
|
227
|
+
},
|
|
200
228
|
});
|
|
229
|
+
// Register forked process for metrics collection
|
|
230
|
+
if (p.pid) {
|
|
231
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, p.pid);
|
|
232
|
+
}
|
|
201
233
|
const cp = new node_child_process_1.NodeChildProcessWithDirectOutput(p, temporaryOutputPath);
|
|
202
234
|
this.processes.add(cp);
|
|
203
235
|
// Send message to run the executor
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo } from '../native';
|
|
2
|
+
export type { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo, };
|
|
3
|
+
export type MetricsCallback = (event: MetricsUpdate) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Simplified service providing subscription-based access to Rust metrics collector
|
|
6
|
+
* Manages singleton access pattern for metrics collection during execution of tasks and CLI commands
|
|
7
|
+
* All methods handle errors internally to ensure metrics collection never breaks task execution
|
|
8
|
+
*/
|
|
9
|
+
declare class ProcessMetricsService {
|
|
10
|
+
private collector;
|
|
11
|
+
private cleanupRegistered;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Register signal handlers for graceful shutdown
|
|
15
|
+
* Ensures collection thread is stopped cleanly on Ctrl+C or process termination
|
|
16
|
+
*/
|
|
17
|
+
private registerCleanupHandlers;
|
|
18
|
+
/**
|
|
19
|
+
* Subscribe to push-based metrics notifications
|
|
20
|
+
* Collection starts automatically on first subscription (lazy start)
|
|
21
|
+
*/
|
|
22
|
+
subscribe(callback: MetricsCallback): void;
|
|
23
|
+
/**
|
|
24
|
+
* Register a process for a task - creates anchor for discovery
|
|
25
|
+
* This is the core integration point - called from RunningTask constructors
|
|
26
|
+
*/
|
|
27
|
+
registerTaskProcess(taskId: string, pid: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Register a batch with multiple tasks sharing a worker
|
|
30
|
+
*/
|
|
31
|
+
registerBatch(batchId: string, taskIds: string[], pid: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Register the daemon process
|
|
34
|
+
*/
|
|
35
|
+
registerDaemonProcess(pid: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Register a subprocess of the main CLI (e.g., plugin worker)
|
|
38
|
+
*/
|
|
39
|
+
registerMainCliSubprocess(pid: number, alias?: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Get system information (CPU cores and total memory)
|
|
42
|
+
*/
|
|
43
|
+
getSystemInfo(): SystemInfo | null;
|
|
44
|
+
/**
|
|
45
|
+
* Stop collection and cleanup
|
|
46
|
+
*/
|
|
47
|
+
shutdown(): void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get or create the singleton ProcessMetricsService instance
|
|
51
|
+
* Lazy initialization - service only starts when first accessed
|
|
52
|
+
*/
|
|
53
|
+
export declare function getProcessMetricsService(): ProcessMetricsService;
|
|
54
|
+
//# sourceMappingURL=process-metrics-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-metrics-service.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/process-metrics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,GACX,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7D;;;;GAIG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,iBAAiB,CAAS;;IAmBlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+B1C;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQpE;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5D;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IASlC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAOjB;AAOD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAKhE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProcessMetricsService = getProcessMetricsService;
|
|
4
|
+
const native_1 = require("../native");
|
|
5
|
+
const cache_1 = require("../daemon/cache");
|
|
6
|
+
/**
|
|
7
|
+
* Simplified service providing subscription-based access to Rust metrics collector
|
|
8
|
+
* Manages singleton access pattern for metrics collection during execution of tasks and CLI commands
|
|
9
|
+
* All methods handle errors internally to ensure metrics collection never breaks task execution
|
|
10
|
+
*/
|
|
11
|
+
class ProcessMetricsService {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.collector = null;
|
|
14
|
+
this.cleanupRegistered = false;
|
|
15
|
+
try {
|
|
16
|
+
this.collector = new native_1.ProcessMetricsCollector();
|
|
17
|
+
// Register main nx process as CLI
|
|
18
|
+
this.collector.registerMainCliProcess(process.pid);
|
|
19
|
+
// Register daemon process if available
|
|
20
|
+
const daemonPid = (0, cache_1.getDaemonProcessIdSync)();
|
|
21
|
+
if (daemonPid) {
|
|
22
|
+
this.collector.registerDaemonProcess(daemonPid);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Silent failure - metrics collection is optional and should never break task execution
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Register signal handlers for graceful shutdown
|
|
31
|
+
* Ensures collection thread is stopped cleanly on Ctrl+C or process termination
|
|
32
|
+
*/
|
|
33
|
+
registerCleanupHandlers() {
|
|
34
|
+
const cleanup = () => {
|
|
35
|
+
try {
|
|
36
|
+
this.shutdown();
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Silent failure during cleanup
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
// Handle various exit scenarios
|
|
43
|
+
process.on('SIGINT', cleanup);
|
|
44
|
+
process.on('SIGTERM', cleanup);
|
|
45
|
+
process.on('exit', cleanup);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Subscribe to push-based metrics notifications
|
|
49
|
+
* Collection starts automatically on first subscription (lazy start)
|
|
50
|
+
*/
|
|
51
|
+
subscribe(callback) {
|
|
52
|
+
if (!this.collector) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
// Start collection on first subscription (idempotent - safe to call multiple times)
|
|
57
|
+
this.collector.startCollection();
|
|
58
|
+
// Register cleanup handlers on first successful start
|
|
59
|
+
// If startCollection() threw, we never reach this line
|
|
60
|
+
if (!this.cleanupRegistered) {
|
|
61
|
+
this.registerCleanupHandlers();
|
|
62
|
+
this.cleanupRegistered = true;
|
|
63
|
+
}
|
|
64
|
+
// Wrap the user's callback to adapt from error-first pattern (err, data) => void
|
|
65
|
+
// to the simple pattern (event) => void that users expect
|
|
66
|
+
// The Rust side uses CalleeHandled which sends (null, data) on success
|
|
67
|
+
this.collector.subscribe((err, event) => {
|
|
68
|
+
if (err) {
|
|
69
|
+
// Silently ignore errors - metrics collection is optional
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
callback(event);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Silent failure - metrics collection is optional
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Register a process for a task - creates anchor for discovery
|
|
81
|
+
* This is the core integration point - called from RunningTask constructors
|
|
82
|
+
*/
|
|
83
|
+
registerTaskProcess(taskId, pid) {
|
|
84
|
+
try {
|
|
85
|
+
this.collector?.registerTaskProcess(taskId, pid);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Silent failure - metrics collection is optional
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Register a batch with multiple tasks sharing a worker
|
|
93
|
+
*/
|
|
94
|
+
registerBatch(batchId, taskIds, pid) {
|
|
95
|
+
try {
|
|
96
|
+
this.collector?.registerBatch(batchId, taskIds, pid);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Silent failure - metrics collection is optional
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Register the daemon process
|
|
104
|
+
*/
|
|
105
|
+
registerDaemonProcess(pid) {
|
|
106
|
+
try {
|
|
107
|
+
this.collector?.registerDaemonProcess(pid);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Silent failure - metrics collection is optional
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Register a subprocess of the main CLI (e.g., plugin worker)
|
|
115
|
+
*/
|
|
116
|
+
registerMainCliSubprocess(pid, alias) {
|
|
117
|
+
try {
|
|
118
|
+
this.collector?.registerMainCliSubprocess(pid, alias);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Silent failure - metrics collection is optional
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get system information (CPU cores and total memory)
|
|
126
|
+
*/
|
|
127
|
+
getSystemInfo() {
|
|
128
|
+
try {
|
|
129
|
+
return this.collector?.getSystemInfo();
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Silent failure - metrics collection is optional
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Stop collection and cleanup
|
|
138
|
+
*/
|
|
139
|
+
shutdown() {
|
|
140
|
+
try {
|
|
141
|
+
this.collector?.stopCollection();
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Silent failure during cleanup
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Singleton instance (lazily initialized)
|
|
150
|
+
*/
|
|
151
|
+
let instance = null;
|
|
152
|
+
/**
|
|
153
|
+
* Get or create the singleton ProcessMetricsService instance
|
|
154
|
+
* Lazy initialization - service only starts when first accessed
|
|
155
|
+
*/
|
|
156
|
+
function getProcessMetricsService() {
|
|
157
|
+
if (!instance) {
|
|
158
|
+
instance = new ProcessMetricsService();
|
|
159
|
+
}
|
|
160
|
+
return instance;
|
|
161
|
+
}
|
|
@@ -44,6 +44,7 @@ export declare class PseudoTtyProcess implements RunningTask {
|
|
|
44
44
|
}>;
|
|
45
45
|
onExit(callback: (code: number) => void): void;
|
|
46
46
|
onOutput(callback: (message: string) => void): void;
|
|
47
|
+
getPid(): number | undefined;
|
|
47
48
|
kill(s?: NodeJS.Signals): void;
|
|
48
49
|
getParserAndWriter(): import("../native").ExternalObject<[ParserArc, WriterArc]>;
|
|
49
50
|
}
|
|
@@ -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,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;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 +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":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,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;
|
|
1
|
+
{"version":3,"file":"node-child-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/node-child-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,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;IAyDrE,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;CAKpC;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;CAKpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAMrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAM3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAC;AAUxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,qBAAa,gBAAgB;IA6CzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAtDtC,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,uBAAuB,CAG7B;IAEF,OAAO,CAAC,mBAAmB,CAElB;IACT,OAAO,CAAC,aAAa,CAInB;IAGF,OAAO,CAAC,QAAQ,CAGd;IACF,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,mBAAmB,CAAkD;IAE7E,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,gBAAgB,CAAmC;IAE3D,OAAO,CAAC,cAAc,CAEf;IACP,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,sBAAsB,CAAkC;IAChE,OAAO,CAAC,uBAAuB,CAAkC;gBAK9C,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,eAAe,EAAE,IAAI,EAAE,EACvB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GAAG,yBAAyB,EAC3C,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,mBAAmB,GAAE,SAAqB;IAGvD,IAAI;IAiBJ,GAAG;;;IA4CF,SAAS;YAIF,wCAAwC;IA2CtD,OAAO,CAAC,YAAY;YAUN,WAAW;YAoBX,qBAAqB;IAgB5B,wBAAwB;YAajB,kBAAkB;YAUlB,iBAAiB;IAuClB,wBAAwB,CACnC,cAAc,EAAE,OAAO,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,EAAE,CAAC;YAmEV,QAAQ;IA6ChB,uBAAuB,CAC3B,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;YAkER,OAAO;
|
|
1
|
+
{"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -325,7 +325,7 @@ class TaskOrchestrator {
|
|
|
325
325
|
};
|
|
326
326
|
const runningTask = await (0, run_commands_impl_1.runCommands)(runCommandsOptions, {
|
|
327
327
|
root: workspace_root_1.workspaceRoot, // only root is needed in runCommands
|
|
328
|
-
});
|
|
328
|
+
}, task.id);
|
|
329
329
|
this.runningRunCommandsTasks.set(task.id, runningTask);
|
|
330
330
|
runningTask.onExit(() => {
|
|
331
331
|
this.runningRunCommandsTasks.delete(task.id);
|
|
@@ -47,4 +47,5 @@ export declare function isCacheableTask(task: Task, options: {
|
|
|
47
47
|
cacheableTargets?: string[] | null;
|
|
48
48
|
}): boolean;
|
|
49
49
|
export declare function unparse(options: Object): string[];
|
|
50
|
+
export declare function createTaskId(project: string, target: string, configuration: string | undefined): string;
|
|
50
51
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,uCAAuC,CAAC;AAe/C,MAAM,MAAM,gCAAgC,GAAG,sBAAsB,GAAG;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACxD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,EAC5E,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,GAAG,SAAS,CAehD;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,MAAM,GAAG,sBAAsB,EAC3C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,CASpC;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,sBAAsB,EACxC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,GAClB,gCAAgC,CAalC;AAED,wBAAgB,iCAAiC,CAC/C,sBAAsB,EAAE,MAAM,GAAG,sBAAsB,EACvD,KAAK,EAAE,YAAY,GAClB,sBAAsB,CAwBxB;AA4BD,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,gCAAgC,EAClD,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,CAepC;AAED,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAChD;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBzC;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EACtB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,YAO7B;AAED,wBAAgB,2CAA2C,CACzD,gBAAgB,EAAE,sBAAsB,GACvC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBnE;AAqCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAIhD;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YA2B5E;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,uBAAuB,GAC5B,MAAM,EAAE,CAAC;AACZ,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,EAC7B,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,uBAAuB,EACtD,IAAI,EAAE,uBAAuB,GAC5B,MAAM,EAAE,CAAC;AAqEZ,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAqB/D;AAsBD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,mBAAmB,GAAG,SAAS,CAGjC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,UAE5E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAUjE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,YAAY,GAAG,IAAI,CAGrB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EAAE,GACZ,SAAS,CAQX;AA0CD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAmB1B;AAED,wBAAgB,UAAU,WAEzB;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,YAYxD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,YAQtE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAQT;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACpC,GACA,OAAO,CAWT;AAeD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjD;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,CAMR"}
|
|
@@ -24,6 +24,7 @@ exports.getSerializedArgsForTask = getSerializedArgsForTask;
|
|
|
24
24
|
exports.shouldStreamOutput = shouldStreamOutput;
|
|
25
25
|
exports.isCacheableTask = isCacheableTask;
|
|
26
26
|
exports.unparse = unparse;
|
|
27
|
+
exports.createTaskId = createTaskId;
|
|
27
28
|
const minimatch_1 = require("minimatch");
|
|
28
29
|
const node_path_1 = require("node:path");
|
|
29
30
|
const posix_1 = require("node:path/posix");
|
|
@@ -406,3 +407,10 @@ function longRunningTask(task) {
|
|
|
406
407
|
function unparse(options) {
|
|
407
408
|
return (0, serialize_overrides_into_command_line_1.serializeOverridesIntoCommandLine)(options);
|
|
408
409
|
}
|
|
410
|
+
function createTaskId(project, target, configuration) {
|
|
411
|
+
let id = `${project}:${target}`;
|
|
412
|
+
if (configuration) {
|
|
413
|
+
id += `:${configuration}`;
|
|
414
|
+
}
|
|
415
|
+
return id;
|
|
416
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-nxw.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/update-nxw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-nxw.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/update-nxw.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAI/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,QAiBnC"}
|
package/src/utils/update-nxw.js
CHANGED
|
@@ -3,9 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.updateNxw = updateNxw;
|
|
4
4
|
const add_nx_scripts_1 = require("../command-line/init/implementation/dot-nx/add-nx-scripts");
|
|
5
5
|
const path_1 = require("../utils/path");
|
|
6
|
+
const fs_1 = require("fs");
|
|
6
7
|
function updateNxw(tree) {
|
|
7
8
|
const wrapperPath = (0, path_1.normalizePath)((0, add_nx_scripts_1.nxWrapperPath)());
|
|
8
9
|
if (tree.exists(wrapperPath)) {
|
|
9
10
|
tree.write(wrapperPath, (0, add_nx_scripts_1.getNxWrapperContents)());
|
|
10
11
|
}
|
|
12
|
+
const bashScriptPath = 'nx';
|
|
13
|
+
if (tree.exists(bashScriptPath) && tree.isFile(bashScriptPath)) {
|
|
14
|
+
tree.write(bashScriptPath, (0, add_nx_scripts_1.getShellScriptContents)(), {
|
|
15
|
+
mode: fs_1.constants.S_IXUSR | fs_1.constants.S_IRUSR | fs_1.constants.S_IWUSR,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const batchScriptPath = 'nx.bat';
|
|
19
|
+
if (tree.exists(batchScriptPath) && tree.isFile(batchScriptPath)) {
|
|
20
|
+
tree.write(batchScriptPath, (0, add_nx_scripts_1.getBatchScriptContents)());
|
|
21
|
+
}
|
|
11
22
|
}
|