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
|
@@ -73,6 +73,7 @@ export declare class DaemonClient {
|
|
|
73
73
|
private sendToDaemonViaQueue;
|
|
74
74
|
private setUpConnection;
|
|
75
75
|
private sendMessageToDaemon;
|
|
76
|
+
private registerDaemonProcessWithMetricsService;
|
|
76
77
|
private retryMessageAfterNewDaemonStarts;
|
|
77
78
|
private handleMessage;
|
|
78
79
|
startInBackground(): Promise<ChildProcess['pid']>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -419,15 +419,20 @@ class DaemonClient {
|
|
|
419
419
|
async sendMessageToDaemon(message, force) {
|
|
420
420
|
if (this._daemonStatus == DaemonStatus.DISCONNECTED) {
|
|
421
421
|
this._daemonStatus = DaemonStatus.CONNECTING;
|
|
422
|
+
let daemonPid = null;
|
|
422
423
|
if (!(await this.isServerAvailable())) {
|
|
423
|
-
await this.startInBackground();
|
|
424
|
+
daemonPid = await this.startInBackground();
|
|
424
425
|
}
|
|
425
426
|
this.setUpConnection();
|
|
426
427
|
this._daemonStatus = DaemonStatus.CONNECTED;
|
|
427
428
|
this._daemonReady();
|
|
429
|
+
daemonPid ??= (0, cache_1.getDaemonProcessIdSync)();
|
|
430
|
+
await this.registerDaemonProcessWithMetricsService(daemonPid);
|
|
428
431
|
}
|
|
429
432
|
else if (this._daemonStatus == DaemonStatus.CONNECTING) {
|
|
430
433
|
await this._waitForDaemonReady;
|
|
434
|
+
const daemonPid = (0, cache_1.getDaemonProcessIdSync)();
|
|
435
|
+
await this.registerDaemonProcessWithMetricsService(daemonPid);
|
|
431
436
|
}
|
|
432
437
|
// An open promise isn't enough to keep the event loop
|
|
433
438
|
// alive, so we set a timeout here and clear it when we hear
|
|
@@ -443,6 +448,18 @@ class DaemonClient {
|
|
|
443
448
|
clearTimeout(keepAlive);
|
|
444
449
|
});
|
|
445
450
|
}
|
|
451
|
+
async registerDaemonProcessWithMetricsService(daemonPid) {
|
|
452
|
+
if (!daemonPid) {
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
try {
|
|
456
|
+
const { getProcessMetricsService } = await Promise.resolve().then(() => require('../../tasks-runner/process-metrics-service'));
|
|
457
|
+
getProcessMetricsService().registerDaemonProcess(daemonPid);
|
|
458
|
+
}
|
|
459
|
+
catch {
|
|
460
|
+
// don't error, this is a secondary concern that should not break task execution
|
|
461
|
+
}
|
|
462
|
+
}
|
|
446
463
|
retryMessageAfterNewDaemonStarts() {
|
|
447
464
|
const [msg, res, rej] = [
|
|
448
465
|
this.currentMessage,
|
|
@@ -55,6 +55,6 @@ export default function (options: RunCommandsOptions, context: ExecutorContext):
|
|
|
55
55
|
success: boolean;
|
|
56
56
|
terminalOutput: string;
|
|
57
57
|
}>;
|
|
58
|
-
export declare function runCommands(options: RunCommandsOptions, context: ExecutorContext): Promise<import("../../tasks-runner/pseudo-terminal").PseudoTtyProcess | NoopChildProcess | ParallelRunningTasks | SeriallyRunningTasks>;
|
|
58
|
+
export declare function runCommands(options: RunCommandsOptions, context: ExecutorContext, taskId?: string): Promise<import("../../tasks-runner/pseudo-terminal").PseudoTtyProcess | NoopChildProcess | ParallelRunningTasks | SeriallyRunningTasks>;
|
|
59
59
|
export declare function interpolateArgsIntoCommand(command: string, opts: Pick<NormalizedRunCommandsOptions, 'args' | 'parsedArgs' | '__unparsed__' | 'unknownOptions' | 'unparsedCommandArgs'>, forwardAllArgs: boolean): string;
|
|
60
60
|
//# sourceMappingURL=run-commands.impl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-commands.impl.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/run-commands/run-commands.impl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-commands.impl.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/run-commands/run-commands.impl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EACL,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,YAAY,QAAiB,CAAC;AAC3C,MAAM,MAAM,IAAI,GAAG;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,CAAC;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAsBD,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,QAAQ,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE;QACf,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,UAAU,EAAE;QACV,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,mBAAmB,CAAC,EAAE;QACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED,yBACE,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAOD;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,MAAM,2IAuEhB;AAmED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,CACR,4BAA4B,EAC1B,MAAM,GACN,YAAY,GACZ,cAAc,GACd,gBAAgB,GAChB,qBAAqB,CACxB,EACD,cAAc,EAAE,OAAO,GACtB,MAAM,CAwCR"}
|
|
@@ -7,6 +7,7 @@ exports.interpolateArgsIntoCommand = interpolateArgsIntoCommand;
|
|
|
7
7
|
const yargsParser = require("yargs-parser");
|
|
8
8
|
const is_tui_enabled_1 = require("../../tasks-runner/is-tui-enabled");
|
|
9
9
|
const pseudo_terminal_1 = require("../../tasks-runner/pseudo-terminal");
|
|
10
|
+
const utils_1 = require("../../tasks-runner/utils");
|
|
10
11
|
const noop_child_process_1 = require("../../tasks-runner/running-tasks/noop-child-process");
|
|
11
12
|
const running_tasks_1 = require("./running-tasks");
|
|
12
13
|
exports.LARGE_BUFFER = 1024 * 1000000;
|
|
@@ -37,7 +38,7 @@ async function default_1(options, context) {
|
|
|
37
38
|
success: results.code === 0,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
|
-
async function runCommands(options, context) {
|
|
41
|
+
async function runCommands(options, context, taskId) {
|
|
41
42
|
const normalized = normalizeOptions(options);
|
|
42
43
|
if (normalized.readyWhenStatus.length && !normalized.parallel) {
|
|
43
44
|
throw new Error('ERROR: Bad executor config for run-commands - "readyWhen" can only be used when "parallel=true".');
|
|
@@ -59,11 +60,13 @@ async function runCommands(options, context) {
|
|
|
59
60
|
normalized.usePty;
|
|
60
61
|
const tuiEnabled = (0, is_tui_enabled_1.isTuiEnabled)();
|
|
61
62
|
try {
|
|
63
|
+
const resolvedTaskId = taskId ??
|
|
64
|
+
(0, utils_1.createTaskId)(context.projectName, context.targetName, context.configurationName);
|
|
62
65
|
const runningTask = isSingleCommandAndCanUsePseudoTerminal
|
|
63
|
-
? await (0, running_tasks_1.runSingleCommandWithPseudoTerminal)(normalized, context)
|
|
66
|
+
? await (0, running_tasks_1.runSingleCommandWithPseudoTerminal)(normalized, context, resolvedTaskId)
|
|
64
67
|
: options.parallel
|
|
65
|
-
? new running_tasks_1.ParallelRunningTasks(normalized, context)
|
|
66
|
-
: new running_tasks_1.SeriallyRunningTasks(normalized, context, tuiEnabled);
|
|
68
|
+
? new running_tasks_1.ParallelRunningTasks(normalized, context, resolvedTaskId)
|
|
69
|
+
: new running_tasks_1.SeriallyRunningTasks(normalized, context, tuiEnabled, resolvedTaskId);
|
|
67
70
|
return runningTask;
|
|
68
71
|
}
|
|
69
72
|
catch (e) {
|
|
@@ -9,7 +9,7 @@ export declare class ParallelRunningTasks implements RunningTask {
|
|
|
9
9
|
private readonly streamOutput;
|
|
10
10
|
private exitCallbacks;
|
|
11
11
|
private outputCallbacks;
|
|
12
|
-
constructor(options: NormalizedRunCommandsOptions, context: ExecutorContext);
|
|
12
|
+
constructor(options: NormalizedRunCommandsOptions, context: ExecutorContext, taskId: string);
|
|
13
13
|
getResults(): Promise<{
|
|
14
14
|
code: number;
|
|
15
15
|
terminalOutput: string;
|
|
@@ -23,13 +23,14 @@ export declare class ParallelRunningTasks implements RunningTask {
|
|
|
23
23
|
}
|
|
24
24
|
export declare class SeriallyRunningTasks implements RunningTask {
|
|
25
25
|
private readonly tuiEnabled;
|
|
26
|
+
private readonly taskId;
|
|
26
27
|
private terminalOutput;
|
|
27
28
|
private currentProcess;
|
|
28
29
|
private exitCallbacks;
|
|
29
30
|
private code;
|
|
30
31
|
private error;
|
|
31
32
|
private outputCallbacks;
|
|
32
|
-
constructor(options: NormalizedRunCommandsOptions, context: ExecutorContext, tuiEnabled: boolean);
|
|
33
|
+
constructor(options: NormalizedRunCommandsOptions, context: ExecutorContext, tuiEnabled: boolean, taskId: string);
|
|
33
34
|
getResults(): Promise<{
|
|
34
35
|
code: number;
|
|
35
36
|
terminalOutput: string;
|
|
@@ -41,5 +42,5 @@ export declare class SeriallyRunningTasks implements RunningTask {
|
|
|
41
42
|
private run;
|
|
42
43
|
private createProcess;
|
|
43
44
|
}
|
|
44
|
-
export declare function runSingleCommandWithPseudoTerminal(normalized: NormalizedRunCommandsOptions, context: ExecutorContext): Promise<PseudoTtyProcess>;
|
|
45
|
+
export declare function runSingleCommandWithPseudoTerminal(normalized: NormalizedRunCommandsOptions, context: ExecutorContext, taskId: string): Promise<PseudoTtyProcess>;
|
|
45
46
|
//# sourceMappingURL=running-tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"running-tasks.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/run-commands/running-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,eAAe,CAAC;AAIjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAGL,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"running-tasks.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/run-commands/running-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,eAAe,CAAC;AAIjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAGL,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAO5E,OAAO,EAEL,4BAA4B,EAE7B,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,oBAAqB,YAAW,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IAEvC,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAA+C;gBAGpE,OAAO,EAAE,4BAA4B,EACrC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM;IAqBV,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,QAAQ,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI;IAI7C,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAM3B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;YAYpB,GAAG;YAiGH,2BAA2B;CAkC1C;AAED,qBAAa,oBAAqB,YAAW,WAAW;IAYpD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,eAAe,CAA+C;gBAGpE,OAAO,EAAE,4BAA4B,EACrC,OAAO,EAAE,eAAe,EACP,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM;IAajC,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAY/D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhE,QAAQ,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI;IAI7C,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;YAId,GAAG;YAyCH,aAAa;CAsD5B;AAoKD,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,4BAA4B,EACxC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAsB3B"}
|
|
@@ -9,13 +9,14 @@ const path_1 = require("path");
|
|
|
9
9
|
const treeKill = require("tree-kill");
|
|
10
10
|
const pseudo_terminal_1 = require("../../tasks-runner/pseudo-terminal");
|
|
11
11
|
const task_env_1 = require("../../tasks-runner/task-env");
|
|
12
|
+
const process_metrics_service_1 = require("../../tasks-runner/process-metrics-service");
|
|
12
13
|
const exit_codes_1 = require("../../utils/exit-codes");
|
|
13
14
|
const run_commands_impl_1 = require("./run-commands.impl");
|
|
14
15
|
class ParallelRunningTasks {
|
|
15
|
-
constructor(options, context) {
|
|
16
|
+
constructor(options, context, taskId) {
|
|
16
17
|
this.exitCallbacks = [];
|
|
17
18
|
this.outputCallbacks = [];
|
|
18
|
-
this.childProcesses = options.commands.map((commandConfig) => new RunningNodeProcess(commandConfig, options.color, calculateCwd(options.cwd, context), options.env ?? {}, options.readyWhenStatus, options.streamOutput, options.envFile));
|
|
19
|
+
this.childProcesses = options.commands.map((commandConfig) => new RunningNodeProcess(commandConfig, options.color, calculateCwd(options.cwd, context), options.env ?? {}, options.readyWhenStatus, options.streamOutput, options.envFile, taskId));
|
|
19
20
|
this.readyWhenStatus = options.readyWhenStatus;
|
|
20
21
|
this.streamOutput = options.streamOutput;
|
|
21
22
|
this.run();
|
|
@@ -139,8 +140,9 @@ class ParallelRunningTasks {
|
|
|
139
140
|
}
|
|
140
141
|
exports.ParallelRunningTasks = ParallelRunningTasks;
|
|
141
142
|
class SeriallyRunningTasks {
|
|
142
|
-
constructor(options, context, tuiEnabled) {
|
|
143
|
+
constructor(options, context, tuiEnabled, taskId) {
|
|
143
144
|
this.tuiEnabled = tuiEnabled;
|
|
145
|
+
this.taskId = taskId;
|
|
144
146
|
this.terminalOutput = '';
|
|
145
147
|
this.currentProcess = null;
|
|
146
148
|
this.exitCallbacks = [];
|
|
@@ -182,7 +184,7 @@ class SeriallyRunningTasks {
|
|
|
182
184
|
}
|
|
183
185
|
async run(options, context) {
|
|
184
186
|
for (const c of options.commands) {
|
|
185
|
-
const childProcess = await this.createProcess(c, options.color, calculateCwd(options.cwd, context), options.processEnv ?? options.env ?? {}, options.usePty, options.streamOutput, options.tty, options.envFile);
|
|
187
|
+
const childProcess = await this.createProcess(c, options.color, calculateCwd(options.cwd, context), options.processEnv ?? options.env ?? {}, this.taskId, options.usePty, options.streamOutput, options.tty, options.envFile);
|
|
186
188
|
this.currentProcess = childProcess;
|
|
187
189
|
childProcess.onOutput((output) => {
|
|
188
190
|
for (const cb of this.outputCallbacks) {
|
|
@@ -204,7 +206,7 @@ class SeriallyRunningTasks {
|
|
|
204
206
|
}
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
|
-
async createProcess(commandConfig, color, cwd, env, usePty = true, streamOutput = true, tty, envFile) {
|
|
209
|
+
async createProcess(commandConfig, color, cwd, env, taskId, usePty = true, streamOutput = true, tty, envFile) {
|
|
208
210
|
// The rust runCommand is always a tty, so it will not look nice in parallel and if we need prefixes
|
|
209
211
|
// currently does not work properly in windows
|
|
210
212
|
if (process.env.NX_NATIVE_COMMAND_RUNNER !== 'false' &&
|
|
@@ -213,15 +215,23 @@ class SeriallyRunningTasks {
|
|
|
213
215
|
pseudo_terminal_1.PseudoTerminal.isSupported()) {
|
|
214
216
|
const pseudoTerminal = (0, pseudo_terminal_1.createPseudoTerminal)();
|
|
215
217
|
registerProcessListener(this, pseudoTerminal);
|
|
216
|
-
|
|
218
|
+
const pseudoTtyProcess = await createProcessWithPseudoTty(pseudoTerminal, commandConfig, color, cwd, env, streamOutput, tty, envFile);
|
|
219
|
+
// Register process for metrics collection (direct run-commands execution)
|
|
220
|
+
// Skip registration if we're in a forked executor - the fork wrapper already registered
|
|
221
|
+
const pid = pseudoTtyProcess.getPid();
|
|
222
|
+
if (pid && !process.env.NX_FORKED_TASK_EXECUTOR) {
|
|
223
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(taskId, pid);
|
|
224
|
+
}
|
|
225
|
+
return pseudoTtyProcess;
|
|
217
226
|
}
|
|
218
|
-
return new RunningNodeProcess(commandConfig, color, cwd, env, [], streamOutput, envFile);
|
|
227
|
+
return new RunningNodeProcess(commandConfig, color, cwd, env, [], streamOutput, envFile, taskId);
|
|
219
228
|
}
|
|
220
229
|
}
|
|
221
230
|
exports.SeriallyRunningTasks = SeriallyRunningTasks;
|
|
222
231
|
class RunningNodeProcess {
|
|
223
|
-
constructor(commandConfig, color, cwd, env, readyWhenStatus, streamOutput = true, envFile) {
|
|
232
|
+
constructor(commandConfig, color, cwd, env, readyWhenStatus, streamOutput = true, envFile, taskId) {
|
|
224
233
|
this.readyWhenStatus = readyWhenStatus;
|
|
234
|
+
this.taskId = taskId;
|
|
225
235
|
this.terminalOutput = '';
|
|
226
236
|
this.exitCallbacks = [];
|
|
227
237
|
this.outputCallbacks = [];
|
|
@@ -237,6 +247,11 @@ class RunningNodeProcess {
|
|
|
237
247
|
cwd,
|
|
238
248
|
windowsHide: false,
|
|
239
249
|
});
|
|
250
|
+
// Register process for metrics collection
|
|
251
|
+
// Skip registration if we're in a forked executor - the fork wrapper already registered
|
|
252
|
+
if (this.childProcess.pid && !process.env.NX_FORKED_TASK_EXECUTOR) {
|
|
253
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(this.taskId, this.childProcess.pid);
|
|
254
|
+
}
|
|
240
255
|
this.addListeners(commandConfig, streamOutput);
|
|
241
256
|
}
|
|
242
257
|
getResults() {
|
|
@@ -341,9 +356,15 @@ class RunningNodeProcess {
|
|
|
341
356
|
});
|
|
342
357
|
}
|
|
343
358
|
}
|
|
344
|
-
async function runSingleCommandWithPseudoTerminal(normalized, context) {
|
|
359
|
+
async function runSingleCommandWithPseudoTerminal(normalized, context, taskId) {
|
|
345
360
|
const pseudoTerminal = (0, pseudo_terminal_1.createPseudoTerminal)();
|
|
346
361
|
const pseudoTtyProcess = await createProcessWithPseudoTty(pseudoTerminal, normalized.commands[0], normalized.color, calculateCwd(normalized.cwd, context), normalized.env, normalized.streamOutput, pseudoTerminal ? normalized.isTTY : false, normalized.envFile);
|
|
362
|
+
// Register process for metrics collection (direct run-commands execution)
|
|
363
|
+
// Skip registration if we're in a forked executor - the fork wrapper already registered
|
|
364
|
+
const pid = pseudoTtyProcess.getPid();
|
|
365
|
+
if (pid && !process.env.NX_FORKED_TASK_EXECUTOR) {
|
|
366
|
+
(0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(taskId, pid);
|
|
367
|
+
}
|
|
347
368
|
registerProcessListener(pseudoTtyProcess, pseudoTerminal);
|
|
348
369
|
return pseudoTtyProcess;
|
|
349
370
|
}
|
package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-changed-files-with-prettier-if-available.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/internal-utils/format-changed-files-with-prettier-if-available.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"format-changed-files-with-prettier-if-available.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/internal-utils/format-changed-files-with-prettier-if-available.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGpC;;;GAGG;AACH,wBAAsB,yCAAyC,CAC7D,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,kCAAkC,CACtD,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA8D9B"}
|
|
@@ -4,6 +4,7 @@ exports.formatChangedFilesWithPrettierIfAvailable = formatChangedFilesWithPretti
|
|
|
4
4
|
exports.formatFilesWithPrettierIfAvailable = formatFilesWithPrettierIfAvailable;
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const is_using_prettier_1 = require("../../utils/is-using-prettier");
|
|
7
|
+
const installation_directory_1 = require("../../utils/installation-directory");
|
|
7
8
|
/**
|
|
8
9
|
* Formats all the created or updated files using Prettier
|
|
9
10
|
* @param tree - the file system tree
|
|
@@ -19,7 +20,10 @@ async function formatFilesWithPrettierIfAvailable(files, root, options) {
|
|
|
19
20
|
const results = new Map();
|
|
20
21
|
let prettier;
|
|
21
22
|
try {
|
|
22
|
-
|
|
23
|
+
const prettierPath = require.resolve('prettier', {
|
|
24
|
+
paths: [...(0, installation_directory_1.getNxRequirePaths)(root), __dirname],
|
|
25
|
+
});
|
|
26
|
+
prettier = require(prettierPath);
|
|
23
27
|
/**
|
|
24
28
|
* Even after we discovered prettier in node_modules, we need to be sure that the user is intentionally using prettier
|
|
25
29
|
* before proceeding to format with it.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-nx-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/migrations/update-22-1-0/update-nx-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGlD,yBAA+B,IAAI,EAAE,IAAI,iBAExC"}
|
package/src/native/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare class AppLifeCycle {
|
|
|
27
27
|
|
|
28
28
|
export declare class ChildProcess {
|
|
29
29
|
getParserAndWriter(): ExternalObject<[ParserArc, WriterArc]>
|
|
30
|
+
getPid(): number
|
|
30
31
|
kill(signal?: NodeJS.Signals): void
|
|
31
32
|
onExit(callback: (message: string) => void): void
|
|
32
33
|
onOutput(callback: (message: string) => void): void
|
|
@@ -92,6 +93,45 @@ export declare class NxTaskHistory {
|
|
|
92
93
|
getEstimatedTaskTimings(targets: Array<TaskTarget>): Record<string, number>
|
|
93
94
|
}
|
|
94
95
|
|
|
96
|
+
/**
|
|
97
|
+
* High-performance metrics collector for Nx tasks
|
|
98
|
+
* Thread-safe and designed for minimal overhead
|
|
99
|
+
*/
|
|
100
|
+
export declare class ProcessMetricsCollector {
|
|
101
|
+
/** Create a new ProcessMetricsCollector with default configuration */
|
|
102
|
+
constructor()
|
|
103
|
+
/**
|
|
104
|
+
* Start metrics collection
|
|
105
|
+
* Idempotent - safe to call multiple times
|
|
106
|
+
*/
|
|
107
|
+
startCollection(): void
|
|
108
|
+
/**
|
|
109
|
+
* Stop metrics collection
|
|
110
|
+
* Returns true if collection was stopped, false if not running
|
|
111
|
+
*/
|
|
112
|
+
stopCollection(): boolean
|
|
113
|
+
/**
|
|
114
|
+
* Get system information (CPU cores and total memory)
|
|
115
|
+
* This is separate from the collection interval and meant to be called imperatively
|
|
116
|
+
*/
|
|
117
|
+
getSystemInfo(): SystemInfo
|
|
118
|
+
/** Register the main CLI process for metrics collection */
|
|
119
|
+
registerMainCliProcess(pid: number): void
|
|
120
|
+
/** Register a subprocess of the main CLI for metrics collection */
|
|
121
|
+
registerMainCliSubprocess(pid: number, alias?: string | undefined | null): void
|
|
122
|
+
/** Register the daemon process for metrics collection */
|
|
123
|
+
registerDaemonProcess(pid: number): void
|
|
124
|
+
/**
|
|
125
|
+
* Register a process for a specific task
|
|
126
|
+
* Automatically creates the task if it doesn't exist
|
|
127
|
+
*/
|
|
128
|
+
registerTaskProcess(taskId: string, pid: number): void
|
|
129
|
+
/** Register a batch with multiple tasks sharing a worker */
|
|
130
|
+
registerBatch(batchId: string, taskIds: Array<string>, pid: number): void
|
|
131
|
+
/** Subscribe to push-based metrics notifications from TypeScript */
|
|
132
|
+
subscribe(callback: (err: Error | null, event: MetricsUpdate) => void): void
|
|
133
|
+
}
|
|
134
|
+
|
|
95
135
|
export declare class RunningTasksService {
|
|
96
136
|
constructor(db: ExternalObject<NxDbConnection>)
|
|
97
137
|
getRunningTasks(ids: Array<string>): Array<string>
|
|
@@ -153,6 +193,13 @@ export declare class WorkspaceContext {
|
|
|
153
193
|
getFilesInDirectory(directory: string): Array<string>
|
|
154
194
|
}
|
|
155
195
|
|
|
196
|
+
/** Batch metrics snapshot */
|
|
197
|
+
export interface BatchMetricsSnapshot {
|
|
198
|
+
batchId: string
|
|
199
|
+
taskIds: Array<string>
|
|
200
|
+
processes: Array<ProcessMetrics>
|
|
201
|
+
}
|
|
202
|
+
|
|
156
203
|
export interface CachedResult {
|
|
157
204
|
code: number
|
|
158
205
|
terminalOutput?: string
|
|
@@ -264,6 +311,12 @@ export declare export declare function isEditorInstalled(editor: SupportedEditor
|
|
|
264
311
|
|
|
265
312
|
export declare export declare function logDebug(message: string): void
|
|
266
313
|
|
|
314
|
+
/** Metrics update sent every collection cycle */
|
|
315
|
+
export interface MetricsUpdate {
|
|
316
|
+
metrics: ProcessMetricsSnapshot
|
|
317
|
+
metadata?: Record<string, ProcessMetadata>
|
|
318
|
+
}
|
|
319
|
+
|
|
267
320
|
/** Stripped version of the NxJson interface for use in rust */
|
|
268
321
|
export interface NxJson {
|
|
269
322
|
namedInputs?: Record<string, Array<JsInputs>>
|
|
@@ -283,6 +336,39 @@ export interface NxWorkspaceFilesExternals {
|
|
|
283
336
|
|
|
284
337
|
export declare export declare function parseTaskStatus(stringStatus: string): TaskStatus
|
|
285
338
|
|
|
339
|
+
/** Process metadata (static, doesn't change during process lifetime) */
|
|
340
|
+
export interface ProcessMetadata {
|
|
341
|
+
ppid: number
|
|
342
|
+
name: string
|
|
343
|
+
command: string
|
|
344
|
+
exePath: string
|
|
345
|
+
cwd: string
|
|
346
|
+
alias?: string
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/** Process metrics (dynamic, changes every collection) */
|
|
350
|
+
export interface ProcessMetrics {
|
|
351
|
+
pid: number
|
|
352
|
+
cpu: number
|
|
353
|
+
memory: number
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/** Organized collection of process metrics with timestamp */
|
|
357
|
+
export interface ProcessMetricsSnapshot {
|
|
358
|
+
timestamp: number
|
|
359
|
+
system: SystemMetrics
|
|
360
|
+
mainCli?: ProcessTreeMetrics
|
|
361
|
+
daemon?: ProcessTreeMetrics
|
|
362
|
+
tasks: Record<string, Array<ProcessMetrics>>
|
|
363
|
+
batches: Record<string, BatchMetricsSnapshot>
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/** Metrics for a process and its subprocesses (used for both CLI and daemon) */
|
|
367
|
+
export interface ProcessTreeMetrics {
|
|
368
|
+
main: ProcessMetrics
|
|
369
|
+
subprocesses: Array<ProcessMetrics>
|
|
370
|
+
}
|
|
371
|
+
|
|
286
372
|
export interface Project {
|
|
287
373
|
root: string
|
|
288
374
|
namedInputs?: Record<string, Array<JsInputs>>
|
|
@@ -318,6 +404,21 @@ export declare const enum SupportedEditor {
|
|
|
318
404
|
Unknown = 5
|
|
319
405
|
}
|
|
320
406
|
|
|
407
|
+
/** System information (static system-level data) */
|
|
408
|
+
export interface SystemInfo {
|
|
409
|
+
cpuCores: number
|
|
410
|
+
totalMemory: number
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/** System metrics (dynamic, changes every collection) */
|
|
414
|
+
export interface SystemMetrics {
|
|
415
|
+
cpu: number
|
|
416
|
+
memory: number
|
|
417
|
+
availableMemory: number
|
|
418
|
+
swapUsed: number
|
|
419
|
+
swapTotal: number
|
|
420
|
+
}
|
|
421
|
+
|
|
321
422
|
export interface Target {
|
|
322
423
|
executor?: string
|
|
323
424
|
inputs?: Array<JsInputs>
|
|
@@ -371,6 +371,7 @@ module.exports.ImportResult = nativeBinding.ImportResult
|
|
|
371
371
|
module.exports.NxCache = nativeBinding.NxCache
|
|
372
372
|
module.exports.NxConsolePreferences = nativeBinding.NxConsolePreferences
|
|
373
373
|
module.exports.NxTaskHistory = nativeBinding.NxTaskHistory
|
|
374
|
+
module.exports.ProcessMetricsCollector = nativeBinding.ProcessMetricsCollector
|
|
374
375
|
module.exports.RunningTasksService = nativeBinding.RunningTasksService
|
|
375
376
|
module.exports.RustPseudoTerminal = nativeBinding.RustPseudoTerminal
|
|
376
377
|
module.exports.TaskDetails = nativeBinding.TaskDetails
|
|
Binary file
|
|
@@ -246,7 +246,7 @@ class TargetProjectLocator {
|
|
|
246
246
|
if (normalizedRange.startsWith('file:')) {
|
|
247
247
|
const targetPath = maybeDep?.data.root;
|
|
248
248
|
const normalizedPath = normalizedRange.replace('file:', '');
|
|
249
|
-
const resolvedPath =
|
|
249
|
+
const resolvedPath = node_path_1.posix.join((0, node_path_1.dirname)(packageJsonPath), normalizedPath);
|
|
250
250
|
if (targetPath === resolvedPath) {
|
|
251
251
|
return maybeDep?.name;
|
|
252
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-plugins.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/project-graph/plugins/get-plugins.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-plugins.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/project-graph/plugins/get-plugins.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA0BzD,wBAAsB,UAAU,CAC9B,IAAI,SAAgB,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAgC3B;AAaD,wBAAsB,qBAAqB,CAAC,IAAI,SAAgB,6BAyB/D;AAED,wBAAgB,cAAc,SAG7B"}
|
|
@@ -19,6 +19,9 @@ let currentPluginsConfigurationHash;
|
|
|
19
19
|
let loadedPlugins;
|
|
20
20
|
let pendingPluginsPromise;
|
|
21
21
|
let cleanupSpecifiedPlugins;
|
|
22
|
+
const loadingMethod = (plugin, root, index) => (0, enabled_1.isIsolationEnabled)()
|
|
23
|
+
? (0, isolation_1.loadNxPluginInIsolation)(plugin, root, index)
|
|
24
|
+
: (0, in_process_loader_1.loadNxPlugin)(plugin, root);
|
|
22
25
|
async function getPlugins(root = workspace_root_1.workspaceRoot) {
|
|
23
26
|
const pluginsConfiguration = (0, nx_json_1.readNxJson)(root).plugins ?? [];
|
|
24
27
|
const pluginsConfigurationHash = (0, file_hasher_1.hashObject)(pluginsConfiguration);
|
|
@@ -78,9 +81,6 @@ function cleanupPlugins() {
|
|
|
78
81
|
/**
|
|
79
82
|
* Stuff for generic loading
|
|
80
83
|
*/
|
|
81
|
-
const loadingMethod = (0, enabled_1.isIsolationEnabled)()
|
|
82
|
-
? isolation_1.loadNxPluginInIsolation
|
|
83
|
-
: in_process_loader_1.loadNxPlugin;
|
|
84
84
|
async function loadDefaultNxPlugins(root = workspace_root_1.workspaceRoot) {
|
|
85
85
|
performance.mark('loadDefaultNxPlugins:start');
|
|
86
86
|
const plugins = getDefaultPlugins(root);
|
|
@@ -116,7 +116,7 @@ async function loadSpecifiedNxPlugins(plugins, root = workspace_root_1.workspace
|
|
|
116
116
|
await Promise.all(plugins.map(async (plugin, index) => {
|
|
117
117
|
const pluginPath = typeof plugin === 'string' ? plugin : plugin.plugin;
|
|
118
118
|
performance.mark(`Load Nx Plugin: ${pluginPath} - start`);
|
|
119
|
-
const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root);
|
|
119
|
+
const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root, index);
|
|
120
120
|
cleanupFunctions.push(cleanup);
|
|
121
121
|
const res = await loadedPluginPromise;
|
|
122
122
|
res.index = index;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { PluginConfiguration } from '../../../config/nx-json';
|
|
2
2
|
import type { LoadedNxPlugin } from '../loaded-nx-plugin';
|
|
3
|
-
export declare function loadNxPluginInIsolation(plugin: PluginConfiguration, root?: string): Promise<readonly [Promise<LoadedNxPlugin>, () => void]>;
|
|
3
|
+
export declare function loadNxPluginInIsolation(plugin: PluginConfiguration, root?: string, index?: number): Promise<readonly [Promise<LoadedNxPlugin>, () => void]>;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,SAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,SAAgB,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAEzD"}
|
|
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.loadNxPluginInIsolation = loadNxPluginInIsolation;
|
|
4
4
|
const workspace_root_1 = require("../../../utils/workspace-root");
|
|
5
5
|
const plugin_pool_1 = require("./plugin-pool");
|
|
6
|
-
async function loadNxPluginInIsolation(plugin, root = workspace_root_1.workspaceRoot) {
|
|
7
|
-
return (0, plugin_pool_1.loadRemoteNxPlugin)(plugin, root);
|
|
6
|
+
async function loadNxPluginInIsolation(plugin, root = workspace_root_1.workspaceRoot, index) {
|
|
7
|
+
return (0, plugin_pool_1.loadRemoteNxPlugin)(plugin, root, index);
|
|
8
8
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { PluginConfiguration } from '../../../config/nx-json';
|
|
2
2
|
import type { LoadedNxPlugin } from '../loaded-nx-plugin';
|
|
3
|
-
export declare function loadRemoteNxPlugin(plugin: PluginConfiguration, root: string): Promise<[Promise<LoadedNxPlugin>, () => void]>;
|
|
3
|
+
export declare function loadRemoteNxPlugin(plugin: PluginConfiguration, root: string, index?: number): Promise<[Promise<LoadedNxPlugin>, () => void]>;
|
|
4
4
|
//# sourceMappingURL=plugin-pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-pool.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/plugin-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin-pool.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/plugin-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAuFhD"}
|
|
@@ -25,7 +25,7 @@ const MAX_MESSAGE_WAIT = process.env.NX_PLUGIN_NO_TIMEOUTS === 'true'
|
|
|
25
25
|
2147483647
|
|
26
26
|
: 1000 * 60 * MINUTES; // 10 minutes
|
|
27
27
|
const nxPluginWorkerCache = (global['nxPluginWorkerCache'] ??= new Map());
|
|
28
|
-
async function loadRemoteNxPlugin(plugin, root) {
|
|
28
|
+
async function loadRemoteNxPlugin(plugin, root, index) {
|
|
29
29
|
const cacheKey = JSON.stringify({ plugin, root });
|
|
30
30
|
if (nxPluginWorkerCache.has(cacheKey)) {
|
|
31
31
|
return [nxPluginWorkerCache.get(cacheKey), () => { }];
|
|
@@ -33,6 +33,26 @@ async function loadRemoteNxPlugin(plugin, root) {
|
|
|
33
33
|
const moduleName = typeof plugin === 'string' ? plugin : plugin.plugin;
|
|
34
34
|
const { name, pluginPath, shouldRegisterTSTranspiler } = await (0, resolve_plugin_1.resolveNxPlugin)(moduleName, root, (0, installation_directory_1.getNxRequirePaths)(root));
|
|
35
35
|
const { worker, socket } = await startPluginWorker();
|
|
36
|
+
// Register plugin worker as a subprocess of the main CLI
|
|
37
|
+
// This allows metrics collection when the daemon is not used
|
|
38
|
+
if (worker.pid) {
|
|
39
|
+
try {
|
|
40
|
+
const { isOnDaemon } = await Promise.resolve().then(() => require('../../../daemon/is-on-daemon'));
|
|
41
|
+
/**
|
|
42
|
+
* We can only register the plugin worker as a subprocess of the main CLI
|
|
43
|
+
* when the daemon is not used. Additionally, we can't explcitly register
|
|
44
|
+
* the plugin worker as a subprocess of the daemon, because when on the
|
|
45
|
+
* daemon, we'd get a different instance of the process metrics service.
|
|
46
|
+
*/
|
|
47
|
+
if (!isOnDaemon()) {
|
|
48
|
+
const { getProcessMetricsService } = await Promise.resolve().then(() => require('../../../tasks-runner/process-metrics-service'));
|
|
49
|
+
getProcessMetricsService().registerMainCliSubprocess(worker.pid, `${name}${index !== undefined ? ` (${index})` : ''}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Silently ignore - metrics collection is optional
|
|
54
|
+
}
|
|
55
|
+
}
|
|
36
56
|
const pendingPromises = new Map();
|
|
37
57
|
const exitHandler = createWorkerExitHandler(worker, pendingPromises);
|
|
38
58
|
const cleanupFunction = () => {
|
|
@@ -271,7 +291,7 @@ async function startPluginWorker() {
|
|
|
271
291
|
}
|
|
272
292
|
: {}),
|
|
273
293
|
};
|
|
274
|
-
const ipcPath = (0, socket_utils_1.getPluginOsSocketPath)([process.pid, global.nxPluginWorkerCount
|
|
294
|
+
const ipcPath = (0, socket_utils_1.getPluginOsSocketPath)([process.pid, global.nxPluginWorkerCount++, performance.now()].join('-'));
|
|
275
295
|
const worker = (0, child_process_1.spawn)(process.execPath, [
|
|
276
296
|
...(isWorkerTypescript ? ['--require', 'ts-node/register'] : []),
|
|
277
297
|
workerPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-task-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/create-task-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-task-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/create-task-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAWhF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvE,qBAAa,YAAY;IAQrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAC5C,QAAQ,CAAC,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IACtD,QAAQ,CAAC,sBAAsB,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;gBAGvB,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,YAAY;IAY7C,YAAY,CACV,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,OAAO,GAC/B,MAAM,EAAE;IAoFX,WAAW,CACT,IAAI,EAAE,IAAI,EACV,+BAA+B,EAAE,MAAM,EACvC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,IAAI;IAkDP,OAAO,CAAC,+BAA+B;IA2BvC,OAAO,CAAC,4BAA4B;IAmDpC,OAAO,CAAC,2BAA2B;IAyFnC,OAAO,CAAC,eAAe;IAOvB,UAAU,CACR,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,IAAI;IAyCP,oBAAoB,CAClB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,SAAS;CASpC;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,uBAAuB,GAAE,OAAe,GACvC,SAAS,CAgBX;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,GAAG,SAAS,GACnC,kBAAkB,CAOpB;AAsBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,QAoBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,EACvC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,MAAM,EAAE,CAkBV"}
|