nx 22.1.0-canary.20251112-36b9f7a → 22.1.0-canary.20251114-b3e6b03
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/bin/init-local.d.ts.map +1 -1
- package/bin/init-local.js +40 -2
- package/package.json +11 -11
- package/src/command-line/add/add.d.ts.map +1 -1
- package/src/command-line/add/add.js +5 -2
- package/src/command-line/init/command-object.d.ts.map +1 -1
- package/src/command-line/init/command-object.js +10 -0
- package/src/core/graph/main.js +1 -1
- package/src/daemon/client/client.d.ts +3 -0
- package/src/daemon/client/client.d.ts.map +1 -1
- package/src/daemon/client/client.js +14 -0
- package/src/daemon/message-types/nx-console.d.ts +18 -0
- package/src/daemon/message-types/nx-console.d.ts.map +1 -0
- package/src/daemon/message-types/nx-console.js +19 -0
- package/src/daemon/server/handle-nx-console.d.ts +4 -0
- package/src/daemon/server/handle-nx-console.d.ts.map +1 -0
- package/src/daemon/server/handle-nx-console.js +54 -0
- package/src/daemon/server/nx-console-operations.d.ts +31 -0
- package/src/daemon/server/nx-console-operations.d.ts.map +1 -0
- package/src/daemon/server/nx-console-operations.js +135 -0
- package/src/daemon/server/server.d.ts.map +1 -1
- package/src/daemon/server/server.js +12 -0
- package/src/daemon/server/shutdown-utils.d.ts.map +1 -1
- package/src/daemon/server/shutdown-utils.js +3 -0
- package/src/devkit-internals.d.ts +1 -1
- package/src/devkit-internals.d.ts.map +1 -1
- package/src/devkit-internals.js +2 -1
- package/src/native/index.d.ts +37 -24
- package/src/native/native-bindings.js +1 -0
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/tasks-runner/process-metrics-service.d.ts +2 -2
- package/src/tasks-runner/process-metrics-service.d.ts.map +1 -1
- package/src/utils/package-json.d.ts +4 -0
- package/src/utils/package-json.d.ts.map +1 -1
- package/src/utils/package-json.js +45 -11
|
@@ -6,6 +6,7 @@ import { ConfigurationSourceMaps } from '../../project-graph/utils/project-confi
|
|
|
6
6
|
import { NxWorkspaceFiles, TaskRun, TaskTarget } from '../../native';
|
|
7
7
|
import type { FlushSyncGeneratorChangesResult, SyncGeneratorRunResult } from '../../utils/sync-generators';
|
|
8
8
|
import { PostTasksExecutionContext, PreTasksExecutionContext } from '../../project-graph/plugins/public-api';
|
|
9
|
+
import { type NxConsoleStatusResponse, type SetNxConsolePreferenceAndInstallResponse } from '../message-types/nx-console';
|
|
9
10
|
export type UnregisterCallback = () => void;
|
|
10
11
|
export type ChangedFile = {
|
|
11
12
|
path: string;
|
|
@@ -69,6 +70,8 @@ export declare class DaemonClient {
|
|
|
69
70
|
updateWorkspaceContext(createdFiles: string[], updatedFiles: string[], deletedFiles: string[]): Promise<void>;
|
|
70
71
|
runPreTasksExecution(context: PreTasksExecutionContext): Promise<NodeJS.ProcessEnv[]>;
|
|
71
72
|
runPostTasksExecution(context: PostTasksExecutionContext): Promise<void>;
|
|
73
|
+
getNxConsoleStatus(): Promise<NxConsoleStatusResponse>;
|
|
74
|
+
setNxConsolePreferenceAndInstall(preference: boolean): Promise<SetNxConsolePreferenceAndInstallResponse>;
|
|
72
75
|
isServerAvailable(): Promise<boolean>;
|
|
73
76
|
private sendToDaemonViaQueue;
|
|
74
77
|
private setUpConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAS,MAAM,eAAe,CAAC;AAoBpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAUpE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAKhG,OAAO,EAAW,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoC9E,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAcrC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ const flush_sync_generator_changes_to_disk_1 = require("../message-types/flush-s
|
|
|
32
32
|
const delayed_spinner_1 = require("../../utils/delayed-spinner");
|
|
33
33
|
const run_tasks_execution_hooks_1 = require("../message-types/run-tasks-execution-hooks");
|
|
34
34
|
const register_project_graph_listener_1 = require("../message-types/register-project-graph-listener");
|
|
35
|
+
const nx_console_1 = require("../message-types/nx-console");
|
|
35
36
|
const node_v8_1 = require("node:v8");
|
|
36
37
|
const consume_messages_from_socket_1 = require("../../utils/consume-messages-from-socket");
|
|
37
38
|
const DAEMON_ENV_SETTINGS = {
|
|
@@ -357,6 +358,19 @@ class DaemonClient {
|
|
|
357
358
|
};
|
|
358
359
|
return this.sendToDaemonViaQueue(message);
|
|
359
360
|
}
|
|
361
|
+
getNxConsoleStatus() {
|
|
362
|
+
const message = {
|
|
363
|
+
type: nx_console_1.GET_NX_CONSOLE_STATUS,
|
|
364
|
+
};
|
|
365
|
+
return this.sendToDaemonViaQueue(message);
|
|
366
|
+
}
|
|
367
|
+
setNxConsolePreferenceAndInstall(preference) {
|
|
368
|
+
const message = {
|
|
369
|
+
type: nx_console_1.SET_NX_CONSOLE_PREFERENCE_AND_INSTALL,
|
|
370
|
+
preference,
|
|
371
|
+
};
|
|
372
|
+
return this.sendToDaemonViaQueue(message);
|
|
373
|
+
}
|
|
360
374
|
async isServerAvailable() {
|
|
361
375
|
return new Promise((resolve) => {
|
|
362
376
|
try {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const GET_NX_CONSOLE_STATUS: "GET_NX_CONSOLE_STATUS";
|
|
2
|
+
export declare const SET_NX_CONSOLE_PREFERENCE_AND_INSTALL: "SET_NX_CONSOLE_PREFERENCE_AND_INSTALL";
|
|
3
|
+
export type HandleGetNxConsoleStatusMessage = {
|
|
4
|
+
type: typeof GET_NX_CONSOLE_STATUS;
|
|
5
|
+
};
|
|
6
|
+
export type NxConsoleStatusResponse = {
|
|
7
|
+
shouldPrompt: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type HandleSetNxConsolePreferenceAndInstallMessage = {
|
|
10
|
+
type: typeof SET_NX_CONSOLE_PREFERENCE_AND_INSTALL;
|
|
11
|
+
preference: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type SetNxConsolePreferenceAndInstallResponse = {
|
|
14
|
+
installed: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare function isHandleGetNxConsoleStatusMessage(message: unknown): message is HandleGetNxConsoleStatusMessage;
|
|
17
|
+
export declare function isHandleSetNxConsolePreferenceAndInstallMessage(message: unknown): message is HandleSetNxConsolePreferenceAndInstallMessage;
|
|
18
|
+
//# sourceMappingURL=nx-console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nx-console.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/message-types/nx-console.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,qCAAqC,EAChD,uCAAgD,CAAC;AAEnD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,OAAO,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,6CAA6C,GAAG;IAC1D,IAAI,EAAE,OAAO,qCAAqC,CAAC;IACnD,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,OAAO,GACf,OAAO,IAAI,+BAA+B,CAO5C;AAED,wBAAgB,+CAA+C,CAC7D,OAAO,EAAE,OAAO,GACf,OAAO,IAAI,6CAA6C,CAO1D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SET_NX_CONSOLE_PREFERENCE_AND_INSTALL = exports.GET_NX_CONSOLE_STATUS = void 0;
|
|
4
|
+
exports.isHandleGetNxConsoleStatusMessage = isHandleGetNxConsoleStatusMessage;
|
|
5
|
+
exports.isHandleSetNxConsolePreferenceAndInstallMessage = isHandleSetNxConsolePreferenceAndInstallMessage;
|
|
6
|
+
exports.GET_NX_CONSOLE_STATUS = 'GET_NX_CONSOLE_STATUS';
|
|
7
|
+
exports.SET_NX_CONSOLE_PREFERENCE_AND_INSTALL = 'SET_NX_CONSOLE_PREFERENCE_AND_INSTALL';
|
|
8
|
+
function isHandleGetNxConsoleStatusMessage(message) {
|
|
9
|
+
return (typeof message === 'object' &&
|
|
10
|
+
message !== null &&
|
|
11
|
+
'type' in message &&
|
|
12
|
+
message['type'] === exports.GET_NX_CONSOLE_STATUS);
|
|
13
|
+
}
|
|
14
|
+
function isHandleSetNxConsolePreferenceAndInstallMessage(message) {
|
|
15
|
+
return (typeof message === 'object' &&
|
|
16
|
+
message !== null &&
|
|
17
|
+
'type' in message &&
|
|
18
|
+
message['type'] === exports.SET_NX_CONSOLE_PREFERENCE_AND_INSTALL);
|
|
19
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HandlerResult } from './server';
|
|
2
|
+
export declare function handleGetNxConsoleStatus(): Promise<HandlerResult>;
|
|
3
|
+
export declare function handleSetNxConsolePreferenceAndInstall(preference: boolean): Promise<HandlerResult>;
|
|
4
|
+
//# sourceMappingURL=handle-nx-console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-nx-console.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/handle-nx-console.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAU9C,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC,CAmCvE;AAED,wBAAsB,sCAAsC,CAC1D,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,aAAa,CAAC,CAexB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGetNxConsoleStatus = handleGetNxConsoleStatus;
|
|
4
|
+
exports.handleSetNxConsolePreferenceAndInstall = handleSetNxConsolePreferenceAndInstall;
|
|
5
|
+
const nx_console_operations_1 = require("./nx-console-operations");
|
|
6
|
+
// Module-level state for caching
|
|
7
|
+
let cachedShouldPrompt = null;
|
|
8
|
+
let isComputing = false;
|
|
9
|
+
async function handleGetNxConsoleStatus() {
|
|
10
|
+
// Return cached result if available
|
|
11
|
+
if (cachedShouldPrompt !== null) {
|
|
12
|
+
const response = {
|
|
13
|
+
shouldPrompt: cachedShouldPrompt,
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
response,
|
|
17
|
+
description: 'handleGetNxConsoleStatus',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Kick off background computation if not already running
|
|
21
|
+
if (!isComputing) {
|
|
22
|
+
isComputing = true;
|
|
23
|
+
(0, nx_console_operations_1.getNxConsoleStatus)()
|
|
24
|
+
.then((result) => {
|
|
25
|
+
cachedShouldPrompt = result;
|
|
26
|
+
isComputing = false;
|
|
27
|
+
})
|
|
28
|
+
.catch(() => {
|
|
29
|
+
cachedShouldPrompt = null;
|
|
30
|
+
isComputing = false;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Return false for shouldPrompt if cache not ready (main process will noop)
|
|
34
|
+
const response = {
|
|
35
|
+
shouldPrompt: false,
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
response,
|
|
39
|
+
description: 'handleGetNxConsoleStatus',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function handleSetNxConsolePreferenceAndInstall(preference) {
|
|
43
|
+
// Immediately update cache - we know the answer now!
|
|
44
|
+
// User answered the prompt, so we won't prompt again
|
|
45
|
+
cachedShouldPrompt = false;
|
|
46
|
+
const result = await (0, nx_console_operations_1.handleNxConsolePreferenceAndInstall)({ preference });
|
|
47
|
+
const response = {
|
|
48
|
+
installed: result.installed,
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
response,
|
|
52
|
+
description: 'handleSetNxConsolePreferenceAndInstall',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the Nx Console status (whether we should prompt the user to install).
|
|
3
|
+
* Uses latest Nx version if available, falls back to local implementation.
|
|
4
|
+
*
|
|
5
|
+
* @returns boolean indicating whether we should prompt the user
|
|
6
|
+
*/
|
|
7
|
+
export declare function getNxConsoleStatus({ inner, }?: {
|
|
8
|
+
inner?: boolean;
|
|
9
|
+
}): Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Handles user preference submission and installs Nx Console if requested.
|
|
12
|
+
* Uses latest Nx version if available, falls back to local implementation.
|
|
13
|
+
*
|
|
14
|
+
* @param preference - whether the user wants to install Nx Console
|
|
15
|
+
* @returns object indicating whether installation succeeded
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleNxConsolePreferenceAndInstall({ preference, inner, }: {
|
|
18
|
+
preference: boolean;
|
|
19
|
+
inner?: boolean;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
installed: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Clean up the latest Nx installation on daemon shutdown.
|
|
25
|
+
*/
|
|
26
|
+
export declare function cleanupLatestNxInstallation(): void;
|
|
27
|
+
export declare function getNxConsoleStatusImpl(): Promise<boolean>;
|
|
28
|
+
export declare function handleNxConsolePreferenceAndInstallImpl(preference: boolean): Promise<{
|
|
29
|
+
installed: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=nx-console-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nx-console-operations.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/nx-console-operations.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,GACN,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCxB;AAED;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CAAC,EACxD,UAAU,EACV,KAAK,GACN,EAAE;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAgDlC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAOlD;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAsB/D;AAED,wBAAsB,uCAAuC,CAC3D,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUjC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getNxConsoleStatus = getNxConsoleStatus;
|
|
4
|
+
exports.handleNxConsolePreferenceAndInstall = handleNxConsolePreferenceAndInstall;
|
|
5
|
+
exports.cleanupLatestNxInstallation = cleanupLatestNxInstallation;
|
|
6
|
+
exports.getNxConsoleStatusImpl = getNxConsoleStatusImpl;
|
|
7
|
+
exports.handleNxConsolePreferenceAndInstallImpl = handleNxConsolePreferenceAndInstallImpl;
|
|
8
|
+
const devkit_internals_1 = require("../../devkit-internals");
|
|
9
|
+
const os_1 = require("os");
|
|
10
|
+
const native_1 = require("../../native");
|
|
11
|
+
const logger_1 = require("./logger");
|
|
12
|
+
// Module-level state - persists across invocations within daemon lifecycle
|
|
13
|
+
let latestNxTmpPath = null;
|
|
14
|
+
let cleanupFn = null;
|
|
15
|
+
const log = (...messageParts) => {
|
|
16
|
+
logger_1.serverLogger.log('[NX-CONSOLE]:', ...messageParts);
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Gets the Nx Console status (whether we should prompt the user to install).
|
|
20
|
+
* Uses latest Nx version if available, falls back to local implementation.
|
|
21
|
+
*
|
|
22
|
+
* @returns boolean indicating whether we should prompt the user
|
|
23
|
+
*/
|
|
24
|
+
async function getNxConsoleStatus({ inner, } = {}) {
|
|
25
|
+
// Use local implementation if explicitly requested
|
|
26
|
+
if (process.env.NX_USE_LOCAL === 'true' || inner === true) {
|
|
27
|
+
log('Using local implementation (NX_USE_LOCAL=true or inner call)');
|
|
28
|
+
return await getNxConsoleStatusImpl();
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
// If we don't have a tmp path yet, pull latest Nx
|
|
32
|
+
if (latestNxTmpPath === null) {
|
|
33
|
+
log('Pulling latest Nx (latest) to check console status...');
|
|
34
|
+
const packageInstallResults = await (0, devkit_internals_1.installPackageToTmpAsync)('nx', 'latest');
|
|
35
|
+
latestNxTmpPath = packageInstallResults.tempDir;
|
|
36
|
+
cleanupFn = packageInstallResults.cleanup;
|
|
37
|
+
log('Successfully pulled latest Nx to', latestNxTmpPath);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
log('Reusing cached Nx installation from', latestNxTmpPath);
|
|
41
|
+
}
|
|
42
|
+
// Try to use the cached tmp path
|
|
43
|
+
const modulePath = require.resolve('nx/src/daemon/server/nx-console-operations.js', { paths: [latestNxTmpPath] });
|
|
44
|
+
const module = await Promise.resolve(`${modulePath}`).then(s => require(s));
|
|
45
|
+
const result = await module.getNxConsoleStatus({ inner: true });
|
|
46
|
+
log('Console status check completed, shouldPrompt:', result);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// If tmp path failed (e.g., directory was deleted), fall back to local immediately
|
|
51
|
+
log('Failed to use latest Nx, falling back to local implementation. Error:', error.message);
|
|
52
|
+
return await getNxConsoleStatusImpl();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Handles user preference submission and installs Nx Console if requested.
|
|
57
|
+
* Uses latest Nx version if available, falls back to local implementation.
|
|
58
|
+
*
|
|
59
|
+
* @param preference - whether the user wants to install Nx Console
|
|
60
|
+
* @returns object indicating whether installation succeeded
|
|
61
|
+
*/
|
|
62
|
+
async function handleNxConsolePreferenceAndInstall({ preference, inner, }) {
|
|
63
|
+
log('Handling user preference:', preference);
|
|
64
|
+
// Use local implementation if explicitly requested
|
|
65
|
+
if (process.env.NX_USE_LOCAL === 'true' || inner === true) {
|
|
66
|
+
log('Using local implementation (NX_USE_LOCAL=true or inner call)');
|
|
67
|
+
return await handleNxConsolePreferenceAndInstallImpl(preference);
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
// If we don't have a tmp path yet, pull latest Nx
|
|
71
|
+
if (latestNxTmpPath === null) {
|
|
72
|
+
log('Pulling latest Nx (latest) to handle preference and install...');
|
|
73
|
+
const packageInstallResults = await (0, devkit_internals_1.installPackageToTmpAsync)('nx', 'latest');
|
|
74
|
+
latestNxTmpPath = packageInstallResults.tempDir;
|
|
75
|
+
cleanupFn = packageInstallResults.cleanup;
|
|
76
|
+
log('Successfully pulled latest Nx to', latestNxTmpPath);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
log('Reusing cached Nx installation from', latestNxTmpPath);
|
|
80
|
+
}
|
|
81
|
+
// Try to use the cached tmp path
|
|
82
|
+
const modulePath = require.resolve('nx/src/daemon/server/nx-console-operations.js', { paths: [latestNxTmpPath] });
|
|
83
|
+
const module = await Promise.resolve(`${modulePath}`).then(s => require(s));
|
|
84
|
+
const result = await module.handleNxConsolePreferenceAndInstall({
|
|
85
|
+
preference,
|
|
86
|
+
inner: true,
|
|
87
|
+
});
|
|
88
|
+
log('Preference saved and installation', result.installed ? 'succeeded' : 'skipped/failed');
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// If tmp path failed (e.g., directory was deleted), fall back to local immediately
|
|
93
|
+
log('Failed to use latest Nx, falling back to local implementation. Error:', error.message);
|
|
94
|
+
return await handleNxConsolePreferenceAndInstallImpl(preference);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Clean up the latest Nx installation on daemon shutdown.
|
|
99
|
+
*/
|
|
100
|
+
function cleanupLatestNxInstallation() {
|
|
101
|
+
if (cleanupFn) {
|
|
102
|
+
log('Cleaning up latest Nx installation from', latestNxTmpPath);
|
|
103
|
+
cleanupFn();
|
|
104
|
+
}
|
|
105
|
+
latestNxTmpPath = null;
|
|
106
|
+
cleanupFn = null;
|
|
107
|
+
}
|
|
108
|
+
async function getNxConsoleStatusImpl() {
|
|
109
|
+
// If no cached preference, read from disk
|
|
110
|
+
const preferences = new native_1.NxConsolePreferences((0, os_1.homedir)());
|
|
111
|
+
const preference = preferences.getAutoInstallPreference();
|
|
112
|
+
const canInstallConsole = (0, native_1.canInstallNxConsole)();
|
|
113
|
+
// If user previously opted in but extension is not installed,
|
|
114
|
+
// they must have manually uninstalled it - respect that choice
|
|
115
|
+
if (preference === true && canInstallConsole) {
|
|
116
|
+
const preferences = new native_1.NxConsolePreferences((0, os_1.homedir)());
|
|
117
|
+
preferences.setAutoInstallPreference(false);
|
|
118
|
+
return false; // Don't prompt
|
|
119
|
+
}
|
|
120
|
+
// Noop if can't install
|
|
121
|
+
if (!canInstallConsole) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
// Prompt if we can install and user hasn't answered yet
|
|
125
|
+
return typeof preference !== 'boolean';
|
|
126
|
+
}
|
|
127
|
+
async function handleNxConsolePreferenceAndInstallImpl(preference) {
|
|
128
|
+
const preferences = new native_1.NxConsolePreferences((0, os_1.homedir)());
|
|
129
|
+
preferences.setAutoInstallPreference(preference);
|
|
130
|
+
let installed = false;
|
|
131
|
+
if (preference) {
|
|
132
|
+
installed = (0, native_1.installNxConsole)();
|
|
133
|
+
}
|
|
134
|
+
return { installed };
|
|
135
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAgKnD,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACtC,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,GAAG,CAAC,MAAM,CAAa,CAAC;AAyRlD,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAClC,IAAI,EAAE,MAAM,GAAG,IAAI,iBAyBpB;AAoMD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAqEnD"}
|
|
@@ -54,6 +54,8 @@ const handle_flush_sync_generator_changes_to_disk_1 = require("./handle-flush-sy
|
|
|
54
54
|
const run_tasks_execution_hooks_1 = require("../message-types/run-tasks-execution-hooks");
|
|
55
55
|
const handle_tasks_execution_hooks_1 = require("./handle-tasks-execution-hooks");
|
|
56
56
|
const register_project_graph_listener_1 = require("../message-types/register-project-graph-listener");
|
|
57
|
+
const nx_console_1 = require("../message-types/nx-console");
|
|
58
|
+
const handle_nx_console_1 = require("./handle-nx-console");
|
|
57
59
|
const v8_1 = require("v8");
|
|
58
60
|
let performanceObserver;
|
|
59
61
|
let workspaceWatcherError;
|
|
@@ -193,6 +195,12 @@ async function handleMessage(socket, data) {
|
|
|
193
195
|
else if ((0, run_tasks_execution_hooks_1.isHandlePostTasksExecutionMessage)(payload)) {
|
|
194
196
|
await handleResult(socket, run_tasks_execution_hooks_1.POST_TASKS_EXECUTION, () => (0, handle_tasks_execution_hooks_1.handleRunPostTasksExecution)(payload.context), mode);
|
|
195
197
|
}
|
|
198
|
+
else if ((0, nx_console_1.isHandleGetNxConsoleStatusMessage)(payload)) {
|
|
199
|
+
await handleResult(socket, nx_console_1.GET_NX_CONSOLE_STATUS, () => (0, handle_nx_console_1.handleGetNxConsoleStatus)(), mode);
|
|
200
|
+
}
|
|
201
|
+
else if ((0, nx_console_1.isHandleSetNxConsolePreferenceAndInstallMessage)(payload)) {
|
|
202
|
+
await handleResult(socket, nx_console_1.SET_NX_CONSOLE_PREFERENCE_AND_INSTALL, () => (0, handle_nx_console_1.handleSetNxConsolePreferenceAndInstall)(payload.preference), mode);
|
|
203
|
+
}
|
|
196
204
|
else {
|
|
197
205
|
await (0, shutdown_utils_1.respondWithErrorAndExit)(socket, `Invalid payload from the client`, new Error(`Unsupported payload sent to daemon server: ${unparsedPayload}`));
|
|
198
206
|
}
|
|
@@ -416,6 +424,10 @@ async function startServer() {
|
|
|
416
424
|
(0, project_graph_incremental_recomputation_1.registerProjectGraphRecomputationListener)(sync_generators_1.collectAndScheduleSyncGenerators);
|
|
417
425
|
// trigger an initial project graph recomputation
|
|
418
426
|
(0, project_graph_incremental_recomputation_1.addUpdatedAndDeletedFiles)([], [], []);
|
|
427
|
+
// Kick off Nx Console check in background to prime the cache
|
|
428
|
+
(0, handle_nx_console_1.handleGetNxConsoleStatus)().catch(() => {
|
|
429
|
+
// Ignore errors, this is a background operation
|
|
430
|
+
});
|
|
419
431
|
return resolve(server);
|
|
420
432
|
}
|
|
421
433
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/shutdown-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAI1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"shutdown-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/shutdown-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAI1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAU5C,eAAO,MAAM,4BAA4B,EAAG,QAAiB,CAAC;AAI9D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,QAErD;AAED,wBAAgB,kBAAkB,YAEjC;AAID,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,QAE3D;AAED,wBAAgB,wBAAwB,YAEvC;AAED,UAAU,oCAAoC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED,wBAAsB,8BAA8B,CAAC,EACnD,MAAM,EACN,MAAM,EACN,OAAO,GACR,EAAE,oCAAoC,iBAsCtC;AAID,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAK3D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,oBAcpB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,iBAsBb"}
|
|
@@ -17,6 +17,7 @@ const error_types_1 = require("../../project-graph/error-types");
|
|
|
17
17
|
const db_connection_1 = require("../../utils/db-connection");
|
|
18
18
|
const get_plugins_1 = require("../../project-graph/plugins/get-plugins");
|
|
19
19
|
const consume_messages_from_socket_1 = require("../../utils/consume-messages-from-socket");
|
|
20
|
+
const nx_console_operations_1 = require("./nx-console-operations");
|
|
20
21
|
exports.SERVER_INACTIVITY_TIMEOUT_MS = 10800000; // 10800000 ms = 3 hours
|
|
21
22
|
let watcherInstance;
|
|
22
23
|
function storeWatcherInstance(instance) {
|
|
@@ -53,6 +54,8 @@ async function handleServerProcessTermination({ server, reason, sockets, }) {
|
|
|
53
54
|
(0, cache_1.deleteDaemonJsonProcessCache)();
|
|
54
55
|
(0, get_plugins_1.cleanupPlugins)();
|
|
55
56
|
(0, db_connection_1.removeDbConnections)();
|
|
57
|
+
// Clean up Nx Console latest installation
|
|
58
|
+
(0, nx_console_operations_1.cleanupLatestNxInstallation)();
|
|
56
59
|
logger_1.serverLogger.log(`Server stopped because: "${reason}"`);
|
|
57
60
|
}
|
|
58
61
|
finally {
|
|
@@ -15,7 +15,7 @@ export { splitTarget } from './utils/split-target';
|
|
|
15
15
|
export { combineOptionsForExecutor } from './utils/params';
|
|
16
16
|
export { sortObjectByKeys } from './utils/object-sort';
|
|
17
17
|
export { stripIndent } from './utils/logger';
|
|
18
|
-
export { readModulePackageJson, installPackageToTmp, } from './utils/package-json';
|
|
18
|
+
export { readModulePackageJson, installPackageToTmp, installPackageToTmpAsync, } from './utils/package-json';
|
|
19
19
|
export { splitByColons } from './utils/split-target';
|
|
20
20
|
export { hashObject } from './hasher/file-hasher';
|
|
21
21
|
export { hashWithWorkspaceContext, hashMultiGlobWithWorkspaceContext, } from './utils/workspace-context';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devkit-internals.d.ts","sourceRoot":"","sources":["../../../../packages/nx/src/devkit-internals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,gDAAgD,EAAE,MAAM,gDAAgD,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"devkit-internals.d.ts","sourceRoot":"","sources":["../../../../packages/nx/src/devkit-internals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,gDAAgD,EAAE,MAAM,gDAAgD,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EACL,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kDAAkD,EAClD,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
package/src/devkit-internals.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.signalToCode = exports.globalSpinner = exports.readYamlFile = exports.isUsingPrettierInTree = exports.isCI = exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappings = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashMultiGlobWithWorkspaceContext = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.installPackageToTmp = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.getIgnoreObjectForTree = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.parseExecutor = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
|
|
3
|
+
exports.signalToCode = exports.globalSpinner = exports.readYamlFile = exports.isUsingPrettierInTree = exports.isCI = exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappings = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashMultiGlobWithWorkspaceContext = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.installPackageToTmpAsync = exports.installPackageToTmp = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.getIgnoreObjectForTree = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.parseExecutor = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/**
|
|
6
6
|
* Note to developers: STOP! These exports are available via requireNx in @nx/devkit.
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "stripIndent", { enumerable: true, get: function
|
|
|
36
36
|
var package_json_1 = require("./utils/package-json");
|
|
37
37
|
Object.defineProperty(exports, "readModulePackageJson", { enumerable: true, get: function () { return package_json_1.readModulePackageJson; } });
|
|
38
38
|
Object.defineProperty(exports, "installPackageToTmp", { enumerable: true, get: function () { return package_json_1.installPackageToTmp; } });
|
|
39
|
+
Object.defineProperty(exports, "installPackageToTmpAsync", { enumerable: true, get: function () { return package_json_1.installPackageToTmpAsync; } });
|
|
39
40
|
var split_target_2 = require("./utils/split-target");
|
|
40
41
|
Object.defineProperty(exports, "splitByColons", { enumerable: true, get: function () { return split_target_2.splitByColons; } });
|
|
41
42
|
var file_hasher_1 = require("./hasher/file-hasher");
|
package/src/native/index.d.ts
CHANGED
|
@@ -193,13 +193,6 @@ export declare class WorkspaceContext {
|
|
|
193
193
|
getFilesInDirectory(directory: string): Array<string>
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
/** Batch metrics snapshot */
|
|
197
|
-
export interface BatchMetricsSnapshot {
|
|
198
|
-
batchId: string
|
|
199
|
-
taskIds: Array<string>
|
|
200
|
-
processes: Array<ProcessMetrics>
|
|
201
|
-
}
|
|
202
|
-
|
|
203
196
|
export interface CachedResult {
|
|
204
197
|
code: number
|
|
205
198
|
terminalOutput?: string
|
|
@@ -272,6 +265,30 @@ export declare export declare function getFilesForOutputs(directory: string, ent
|
|
|
272
265
|
|
|
273
266
|
export declare export declare function getTransformableOutputs(outputs: Array<string>): Array<string>
|
|
274
267
|
|
|
268
|
+
/**
|
|
269
|
+
* Group information - union of different process group types
|
|
270
|
+
* Use group_type to discriminate which optional fields are present
|
|
271
|
+
*/
|
|
272
|
+
export interface GroupInfo {
|
|
273
|
+
/** Type discriminator: MainCLI, Daemon, Task, or Batch */
|
|
274
|
+
groupType: GroupType
|
|
275
|
+
/** Display name for the group */
|
|
276
|
+
displayName: string
|
|
277
|
+
/** Unique ID for this group */
|
|
278
|
+
id: string
|
|
279
|
+
/** Task IDs in this batch (present for Batch groups) */
|
|
280
|
+
taskIds?: Array<string>
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** Group type discriminator */
|
|
284
|
+
export declare const enum GroupType {
|
|
285
|
+
MainCLI = 'MainCLI',
|
|
286
|
+
MainCliSubprocesses = 'MainCliSubprocesses',
|
|
287
|
+
Daemon = 'Daemon',
|
|
288
|
+
Task = 'Task',
|
|
289
|
+
Batch = 'Batch'
|
|
290
|
+
}
|
|
291
|
+
|
|
275
292
|
export declare export declare function hashArray(input: Array<string | undefined | null>): string
|
|
276
293
|
|
|
277
294
|
export interface HashDetails {
|
|
@@ -311,10 +328,19 @@ export declare export declare function isEditorInstalled(editor: SupportedEditor
|
|
|
311
328
|
|
|
312
329
|
export declare export declare function logDebug(message: string): void
|
|
313
330
|
|
|
331
|
+
/** Combined metadata for groups and processes */
|
|
332
|
+
export interface Metadata {
|
|
333
|
+
/** Group-level metadata */
|
|
334
|
+
groups: Record<string, GroupInfo>
|
|
335
|
+
/** Process-level metadata (keyed by PID as string for NAPI compatibility) */
|
|
336
|
+
processes: Record<string, ProcessMetadata>
|
|
337
|
+
}
|
|
338
|
+
|
|
314
339
|
/** Metrics update sent every collection cycle */
|
|
315
340
|
export interface MetricsUpdate {
|
|
316
|
-
|
|
317
|
-
|
|
341
|
+
timestamp: number
|
|
342
|
+
processes: Array<ProcessMetrics>
|
|
343
|
+
metadata: Metadata
|
|
318
344
|
}
|
|
319
345
|
|
|
320
346
|
/** Stripped version of the NxJson interface for use in rust */
|
|
@@ -344,6 +370,8 @@ export interface ProcessMetadata {
|
|
|
344
370
|
exePath: string
|
|
345
371
|
cwd: string
|
|
346
372
|
alias?: string
|
|
373
|
+
groupId: string
|
|
374
|
+
isRoot: boolean
|
|
347
375
|
}
|
|
348
376
|
|
|
349
377
|
/** Process metrics (dynamic, changes every collection) */
|
|
@@ -353,21 +381,6 @@ export interface ProcessMetrics {
|
|
|
353
381
|
memory: number
|
|
354
382
|
}
|
|
355
383
|
|
|
356
|
-
/** Organized collection of process metrics with timestamp */
|
|
357
|
-
export interface ProcessMetricsSnapshot {
|
|
358
|
-
timestamp: number
|
|
359
|
-
mainCli?: ProcessTreeMetrics
|
|
360
|
-
daemon?: ProcessTreeMetrics
|
|
361
|
-
tasks: Record<string, Array<ProcessMetrics>>
|
|
362
|
-
batches: Record<string, BatchMetricsSnapshot>
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
/** Metrics for a process and its subprocesses (used for both CLI and daemon) */
|
|
366
|
-
export interface ProcessTreeMetrics {
|
|
367
|
-
main: ProcessMetrics
|
|
368
|
-
subprocesses: Array<ProcessMetrics>
|
|
369
|
-
}
|
|
370
|
-
|
|
371
384
|
export interface Project {
|
|
372
385
|
root: string
|
|
373
386
|
namedInputs?: Record<string, Array<JsInputs>>
|
|
@@ -390,6 +390,7 @@ module.exports.getBinaryTarget = nativeBinding.getBinaryTarget
|
|
|
390
390
|
module.exports.getDefaultMaxCacheSize = nativeBinding.getDefaultMaxCacheSize
|
|
391
391
|
module.exports.getFilesForOutputs = nativeBinding.getFilesForOutputs
|
|
392
392
|
module.exports.getTransformableOutputs = nativeBinding.getTransformableOutputs
|
|
393
|
+
module.exports.GroupType = nativeBinding.GroupType
|
|
393
394
|
module.exports.hashArray = nativeBinding.hashArray
|
|
394
395
|
module.exports.hashFile = nativeBinding.hashFile
|
|
395
396
|
module.exports.installNxConsole = nativeBinding.installNxConsole
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProcessMetadata, ProcessMetrics,
|
|
2
|
-
export type { ProcessMetadata, ProcessMetrics,
|
|
1
|
+
import { ProcessMetadata, ProcessMetrics, MetricsUpdate, SystemInfo, Metadata, GroupInfo, GroupType } from '../native';
|
|
2
|
+
export type { ProcessMetadata, ProcessMetrics, MetricsUpdate, SystemInfo, Metadata, GroupInfo, GroupType, };
|
|
3
3
|
export type MetricsCallback = (event: MetricsUpdate) => void;
|
|
4
4
|
/**
|
|
5
5
|
* Simplified service providing subscription-based access to Rust metrics collector
|
|
@@ -1 +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,
|
|
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,aAAa,EACb,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACV,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,GACV,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"}
|
|
@@ -110,6 +110,10 @@ export declare function installPackageToTmp(pkg: string, requiredVersion: string
|
|
|
110
110
|
tempDir: string;
|
|
111
111
|
cleanup: () => void;
|
|
112
112
|
};
|
|
113
|
+
export declare function installPackageToTmpAsync(pkg: string, requiredVersion: string): Promise<{
|
|
114
|
+
tempDir: string;
|
|
115
|
+
cleanup: () => void;
|
|
116
|
+
}>;
|
|
113
117
|
/**
|
|
114
118
|
* Get the resolved version of a dependency from package.json.
|
|
115
119
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-json.ts"],"names":[],"mappings":"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"}
|