nx 22.1.0 → 22.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/package.json +11 -11
  2. package/release/changelog-renderer/index.d.ts +1 -0
  3. package/release/changelog-renderer/index.d.ts.map +1 -1
  4. package/release/changelog-renderer/index.js +12 -12
  5. package/src/ai/constants.d.ts +6 -1
  6. package/src/ai/constants.d.ts.map +1 -1
  7. package/src/ai/constants.js +14 -3
  8. package/src/ai/set-up-ai-agents/set-up-ai-agents.d.ts.map +1 -1
  9. package/src/ai/set-up-ai-agents/set-up-ai-agents.js +41 -7
  10. package/src/command-line/daemon/command-object.d.ts +3 -2
  11. package/src/command-line/daemon/command-object.d.ts.map +1 -1
  12. package/src/command-line/daemon/command-object.js +11 -4
  13. package/src/command-line/graph/graph.d.ts.map +1 -1
  14. package/src/command-line/graph/graph.js +25 -16
  15. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +1 -1
  16. package/src/command-line/release/utils/resolve-semver-specifier.d.ts.map +1 -1
  17. package/src/command-line/release/utils/resolve-semver-specifier.js +3 -3
  18. package/src/command-line/release/utils/shared.d.ts +2 -1
  19. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  20. package/src/command-line/release/utils/shared.js +27 -1
  21. package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +1 -1
  22. package/src/command-line/report/report.d.ts +4 -0
  23. package/src/command-line/report/report.d.ts.map +1 -1
  24. package/src/command-line/report/report.js +72 -1
  25. package/src/command-line/yargs-utils/arguments-of.d.ts +12 -0
  26. package/src/command-line/yargs-utils/arguments-of.d.ts.map +1 -0
  27. package/src/command-line/yargs-utils/arguments-of.js +9 -0
  28. package/src/core/graph/main.js +1 -1
  29. package/src/daemon/cache.d.ts +2 -1
  30. package/src/daemon/cache.d.ts.map +1 -1
  31. package/src/daemon/cache.js +10 -26
  32. package/src/daemon/client/client.d.ts +2 -0
  33. package/src/daemon/client/client.d.ts.map +1 -1
  34. package/src/daemon/client/client.js +55 -26
  35. package/src/daemon/is-nx-version-mismatch.d.ts +3 -0
  36. package/src/daemon/is-nx-version-mismatch.d.ts.map +1 -0
  37. package/src/daemon/is-nx-version-mismatch.js +24 -0
  38. package/src/daemon/server/server.d.ts.map +1 -1
  39. package/src/daemon/server/server.js +7 -18
  40. package/src/daemon/tmp-dir.d.ts.map +1 -1
  41. package/src/daemon/tmp-dir.js +1 -0
  42. package/src/project-graph/error-types.d.ts +3 -2
  43. package/src/project-graph/error-types.d.ts.map +1 -1
  44. package/src/project-graph/error-types.js +9 -2
  45. package/src/project-graph/plugins/get-plugins.d.ts.map +1 -1
  46. package/src/project-graph/plugins/get-plugins.js +33 -35
  47. package/src/project-graph/plugins/in-process-loader.d.ts.map +1 -1
  48. package/src/project-graph/plugins/in-process-loader.js +2 -2
  49. package/src/project-graph/plugins/isolation/plugin-pool.js +3 -2
  50. package/src/project-graph/plugins/isolation/plugin-worker.js +3 -3
  51. package/src/project-graph/plugins/loaded-nx-plugin.d.ts +5 -0
  52. package/src/project-graph/plugins/loaded-nx-plugin.d.ts.map +1 -1
  53. package/src/project-graph/plugins/loaded-nx-plugin.js +5 -0
  54. package/src/project-graph/project-graph.d.ts +1 -0
  55. package/src/project-graph/project-graph.d.ts.map +1 -1
  56. package/src/project-graph/project-graph.js +21 -0
  57. package/src/project-graph/utils/project-configuration-utils.d.ts +1 -1
  58. package/src/project-graph/utils/project-configuration-utils.d.ts.map +1 -1
  59. package/src/project-graph/utils/project-configuration-utils.js +46 -15
  60. package/src/project-graph/utils/retrieve-workspace-files.d.ts +1 -1
  61. package/src/project-graph/utils/retrieve-workspace-files.d.ts.map +1 -1
  62. package/src/tasks-runner/pseudo-terminal.js +1 -1
  63. package/src/tasks-runner/task-orchestrator.d.ts +1 -0
  64. package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
  65. package/src/tasks-runner/task-orchestrator.js +22 -5
  66. package/src/tasks-runner/utils.d.ts.map +1 -1
  67. package/src/tasks-runner/utils.js +3 -2
  68. package/src/utils/ab-testing.js +1 -1
  69. package/src/utils/assert-workspace-validity.d.ts.map +1 -1
  70. package/src/utils/assert-workspace-validity.js +5 -8
  71. package/src/utils/call-sites.d.ts +15 -0
  72. package/src/utils/call-sites.d.ts.map +1 -0
  73. package/src/utils/call-sites.js +28 -0
  74. package/src/utils/package-manager.d.ts +1 -0
  75. package/src/utils/package-manager.d.ts.map +1 -1
  76. package/src/utils/package-manager.js +4 -0
@@ -1,10 +1,11 @@
1
1
  export interface DaemonProcessJson {
2
2
  processId: number;
3
+ socketPath: string;
4
+ nxVersion: string;
3
5
  }
4
6
  export declare const serverProcessJsonPath: string;
5
7
  export declare function readDaemonProcessJsonCache(): DaemonProcessJson | null;
6
8
  export declare function deleteDaemonJsonProcessCache(): void;
7
9
  export declare function writeDaemonJsonProcessCache(daemonJson: DaemonProcessJson): Promise<void>;
8
- export declare function waitForDaemonToExitAndCleanupProcessJson(): Promise<void>;
9
10
  export declare function getDaemonProcessIdSync(): number | null;
10
11
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/daemon/cache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,iBAAiB,GAAG,IAAI,CAKrE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,wCAAwC,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB9E;AAGD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAUtD"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/daemon/cache.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,iBAAiB,GAAG,IAAI,CAWrE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAIf;AAGD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAUtD"}
@@ -4,18 +4,25 @@ exports.serverProcessJsonPath = void 0;
4
4
  exports.readDaemonProcessJsonCache = readDaemonProcessJsonCache;
5
5
  exports.deleteDaemonJsonProcessCache = deleteDaemonJsonProcessCache;
6
6
  exports.writeDaemonJsonProcessCache = writeDaemonJsonProcessCache;
7
- exports.waitForDaemonToExitAndCleanupProcessJson = waitForDaemonToExitAndCleanupProcessJson;
8
7
  exports.getDaemonProcessIdSync = getDaemonProcessIdSync;
9
8
  const node_fs_1 = require("node:fs");
10
9
  const path_1 = require("path");
11
10
  const tmp_dir_1 = require("./tmp-dir");
12
11
  const fileutils_1 = require("../utils/fileutils");
12
+ const versions_1 = require("../utils/versions");
13
13
  exports.serverProcessJsonPath = (0, path_1.join)(tmp_dir_1.DAEMON_DIR_FOR_CURRENT_WORKSPACE, 'server-process.json');
14
14
  function readDaemonProcessJsonCache() {
15
- if (!(0, node_fs_1.existsSync)(exports.serverProcessJsonPath)) {
15
+ try {
16
+ const daemonJson = (0, fileutils_1.readJsonFile)(exports.serverProcessJsonPath);
17
+ // If the daemon version doesn't match the client version, treat it as stale
18
+ if (daemonJson.nxVersion !== versions_1.nxVersion) {
19
+ return null;
20
+ }
21
+ return daemonJson;
22
+ }
23
+ catch {
16
24
  return null;
17
25
  }
18
- return (0, fileutils_1.readJsonFile)(exports.serverProcessJsonPath);
19
26
  }
20
27
  function deleteDaemonJsonProcessCache() {
21
28
  try {
@@ -30,29 +37,6 @@ async function writeDaemonJsonProcessCache(daemonJson) {
30
37
  appendNewLine: true,
31
38
  });
32
39
  }
33
- async function waitForDaemonToExitAndCleanupProcessJson() {
34
- const daemonProcessJson = readDaemonProcessJsonCache();
35
- if (daemonProcessJson && daemonProcessJson.processId) {
36
- await new Promise((resolve, reject) => {
37
- let count = 0;
38
- const interval = setInterval(() => {
39
- try {
40
- // sending a signal 0 to a process checks if the process is running instead of actually killing it
41
- process.kill(daemonProcessJson.processId, 0);
42
- }
43
- catch (e) {
44
- clearInterval(interval);
45
- resolve();
46
- }
47
- if ((count += 1) > 200) {
48
- clearInterval(interval);
49
- reject(`Daemon process ${daemonProcessJson.processId} didn't exit after 2 seconds.`);
50
- }
51
- }, 10);
52
- });
53
- deleteDaemonJsonProcessCache();
54
- }
55
- }
56
40
  // Must be sync for the help output use case
57
41
  function getDaemonProcessIdSync() {
58
42
  if (!(0, node_fs_1.existsSync)(exports.serverProcessJsonPath)) {
@@ -28,6 +28,7 @@ export declare class DaemonClient {
28
28
  private _err;
29
29
  enabled(): boolean;
30
30
  reset(): void;
31
+ private getSocketPath;
31
32
  requestShutdown(): Promise<void>;
32
33
  getProjectGraphAndSourceMaps(): Promise<{
33
34
  projectGraph: ProjectGraph;
@@ -73,6 +74,7 @@ export declare class DaemonClient {
73
74
  getNxConsoleStatus(): Promise<NxConsoleStatusResponse>;
74
75
  setNxConsolePreferenceAndInstall(preference: boolean): Promise<SetNxConsolePreferenceAndInstallResponse>;
75
76
  isServerAvailable(): Promise<boolean>;
77
+ private startDaemonIfNecessary;
76
78
  private sendToDaemonViaQueue;
77
79
  private setUpConnection;
78
80
  private sendMessageToDaemon;
@@ -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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"}
@@ -10,7 +10,6 @@ const net_1 = require("net");
10
10
  const path_1 = require("path");
11
11
  const perf_hooks_1 = require("perf_hooks");
12
12
  const output_1 = require("../../utils/output");
13
- const socket_utils_1 = require("../socket-utils");
14
13
  const tmp_dir_1 = require("../tmp-dir");
15
14
  const is_ci_1 = require("../../utils/is-ci");
16
15
  const nx_json_1 = require("../../config/nx-json");
@@ -18,6 +17,7 @@ const configuration_1 = require("../../config/configuration");
18
17
  const promised_based_queue_1 = require("../../utils/promised-based-queue");
19
18
  const daemon_socket_messenger_1 = require("./daemon-socket-messenger");
20
19
  const cache_1 = require("../cache");
20
+ const is_nx_version_mismatch_1 = require("../is-nx-version-mismatch");
21
21
  const error_types_1 = require("../../project-graph/error-types");
22
22
  const native_1 = require("../../native");
23
23
  const get_nx_workspace_files_1 = require("../message-types/get-nx-workspace-files");
@@ -35,6 +35,7 @@ const register_project_graph_listener_1 = require("../message-types/register-pro
35
35
  const nx_console_1 = require("../message-types/nx-console");
36
36
  const node_v8_1 = require("node:v8");
37
37
  const consume_messages_from_socket_1 = require("../../utils/consume-messages-from-socket");
38
+ const project_graph_1 = require("../../project-graph/project-graph");
38
39
  const DAEMON_ENV_SETTINGS = {
39
40
  NX_PROJECT_GLOB_CACHE: 'false',
40
41
  NX_CACHE_PROJECTS_CONFIG: 'false',
@@ -81,7 +82,9 @@ class DaemonClient {
81
82
  // docker=true,env=false => no daemon
82
83
  // docker=true,env=true => daemon
83
84
  // WASM => no daemon because file watching does not work
84
- if ((((0, is_ci_1.isCI)() || isDocker()) && env !== 'true') ||
85
+ // version mismatch => no daemon because the installed nx version differs from the running one
86
+ if ((0, is_nx_version_mismatch_1.isNxVersionMismatch)() ||
87
+ (((0, is_ci_1.isCI)() || isDocker()) && env !== 'true') ||
85
88
  (0, tmp_dir_1.isDaemonDisabled)() ||
86
89
  nxJsonIsNotPresent() ||
87
90
  (useDaemonProcessOption === undefined && env === 'false') ||
@@ -117,10 +120,20 @@ class DaemonClient {
117
120
  this._daemonStatus = DaemonStatus.DISCONNECTED;
118
121
  this._waitForDaemonReady = new Promise((resolve) => (this._daemonReady = resolve));
119
122
  }
123
+ getSocketPath() {
124
+ const daemonProcessJson = (0, cache_1.readDaemonProcessJsonCache)();
125
+ if (daemonProcessJson?.socketPath) {
126
+ return daemonProcessJson.socketPath;
127
+ }
128
+ else {
129
+ throw daemonProcessException('Unable to connect to daemon: no socket path available');
130
+ }
131
+ }
120
132
  async requestShutdown() {
121
133
  return this.sendToDaemonViaQueue({ type: 'REQUEST_SHUTDOWN' });
122
134
  }
123
135
  async getProjectGraphAndSourceMaps() {
136
+ (0, project_graph_1.preventRecursionInGraphConstruction)();
124
137
  let spinner;
125
138
  // If the graph takes a while to load, we want to show a spinner.
126
139
  spinner = new delayed_spinner_1.DelayedSpinner('Calculating the project graph on the Nx Daemon').scheduleMessageUpdate('Calculating the project graph on the Nx Daemon is taking longer than expected. Re-run with NX_DAEMON=false to see more details.', { ciDelay: 60_000, delay: 30_000 });
@@ -172,8 +185,10 @@ class DaemonClient {
172
185
  }
173
186
  }
174
187
  let messenger;
175
- await this.queue.sendToQueue(() => {
176
- messenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)((0, socket_utils_1.getFullOsSocketPath)())).listen((message) => {
188
+ await this.queue.sendToQueue(async () => {
189
+ await this.startDaemonIfNecessary();
190
+ const socketPath = this.getSocketPath();
191
+ messenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)(socketPath)).listen((message) => {
177
192
  try {
178
193
  const parsedMessage = (0, consume_messages_from_socket_1.isJsonMessage)(message)
179
194
  ? JSON.parse(message)
@@ -194,8 +209,10 @@ class DaemonClient {
194
209
  }
195
210
  async registerProjectGraphRecomputationListener(callback) {
196
211
  let messenger;
197
- await this.queue.sendToQueue(() => {
198
- messenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)((0, socket_utils_1.getFullOsSocketPath)())).listen((message) => {
212
+ await this.queue.sendToQueue(async () => {
213
+ await this.startDaemonIfNecessary();
214
+ const socketPath = this.getSocketPath();
215
+ messenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)(socketPath)).listen((message) => {
199
216
  try {
200
217
  const parsedMessage = (0, consume_messages_from_socket_1.isJsonMessage)(message)
201
218
  ? JSON.parse(message)
@@ -374,7 +391,12 @@ class DaemonClient {
374
391
  async isServerAvailable() {
375
392
  return new Promise((resolve) => {
376
393
  try {
377
- const socket = (0, net_1.connect)((0, socket_utils_1.getFullOsSocketPath)(), () => {
394
+ const socketPath = this.getSocketPath();
395
+ if (!socketPath) {
396
+ resolve(false);
397
+ return;
398
+ }
399
+ const socket = (0, net_1.connect)(socketPath, () => {
378
400
  socket.destroy();
379
401
  resolve(true);
380
402
  });
@@ -387,11 +409,35 @@ class DaemonClient {
387
409
  }
388
410
  });
389
411
  }
412
+ async startDaemonIfNecessary() {
413
+ if (this._daemonStatus == DaemonStatus.CONNECTED) {
414
+ return;
415
+ }
416
+ // Ensure daemon is running and socket path is available
417
+ if (this._daemonStatus == DaemonStatus.DISCONNECTED) {
418
+ this._daemonStatus = DaemonStatus.CONNECTING;
419
+ let daemonPid = null;
420
+ if (!(await this.isServerAvailable())) {
421
+ daemonPid = await this.startInBackground();
422
+ }
423
+ this.setUpConnection();
424
+ this._daemonStatus = DaemonStatus.CONNECTED;
425
+ this._daemonReady();
426
+ daemonPid ??= (0, cache_1.getDaemonProcessIdSync)();
427
+ await this.registerDaemonProcessWithMetricsService(daemonPid);
428
+ }
429
+ else if (this._daemonStatus == DaemonStatus.CONNECTING) {
430
+ await this._waitForDaemonReady;
431
+ const daemonPid = (0, cache_1.getDaemonProcessIdSync)();
432
+ await this.registerDaemonProcessWithMetricsService(daemonPid);
433
+ }
434
+ }
390
435
  async sendToDaemonViaQueue(messageToDaemon, force) {
391
436
  return this.queue.sendToQueue(() => this.sendMessageToDaemon(messageToDaemon, force));
392
437
  }
393
438
  setUpConnection() {
394
- this.socketMessenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)((0, socket_utils_1.getFullOsSocketPath)())).listen((message) => this.handleMessage(message), () => {
439
+ const socketPath = this.getSocketPath();
440
+ this.socketMessenger = new daemon_socket_messenger_1.DaemonSocketMessenger((0, net_1.connect)(socketPath)).listen((message) => this.handleMessage(message), () => {
395
441
  // it's ok for the daemon to terminate if the client doesn't wait on
396
442
  // any messages from the daemon
397
443
  if (this.queue.isEmpty()) {
@@ -419,7 +465,6 @@ class DaemonClient {
419
465
  }
420
466
  else if (err.message.startsWith('connect ECONNREFUSED')) {
421
467
  error = daemonProcessException(`A server instance had not been fully shut down. Please try running the command again.`);
422
- (0, socket_utils_1.killSocketOrPath)();
423
468
  }
424
469
  else if (err.message.startsWith('read ECONNRESET')) {
425
470
  error = daemonProcessException(`Unable to connect to the daemon process.`);
@@ -431,23 +476,7 @@ class DaemonClient {
431
476
  });
432
477
  }
433
478
  async sendMessageToDaemon(message, force) {
434
- if (this._daemonStatus == DaemonStatus.DISCONNECTED) {
435
- this._daemonStatus = DaemonStatus.CONNECTING;
436
- let daemonPid = null;
437
- if (!(await this.isServerAvailable())) {
438
- daemonPid = await this.startInBackground();
439
- }
440
- this.setUpConnection();
441
- this._daemonStatus = DaemonStatus.CONNECTED;
442
- this._daemonReady();
443
- daemonPid ??= (0, cache_1.getDaemonProcessIdSync)();
444
- await this.registerDaemonProcessWithMetricsService(daemonPid);
445
- }
446
- else if (this._daemonStatus == DaemonStatus.CONNECTING) {
447
- await this._waitForDaemonReady;
448
- const daemonPid = (0, cache_1.getDaemonProcessIdSync)();
449
- await this.registerDaemonProcessWithMetricsService(daemonPid);
450
- }
479
+ await this.startDaemonIfNecessary();
451
480
  // An open promise isn't enough to keep the event loop
452
481
  // alive, so we set a timeout here and clear it when we hear
453
482
  // back
@@ -0,0 +1,3 @@
1
+ export declare function getInstalledNxVersion(): string | null;
2
+ export declare function isNxVersionMismatch(): boolean;
3
+ //# sourceMappingURL=is-nx-version-mismatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-nx-version-mismatch.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/daemon/is-nx-version-mismatch.ts"],"names":[],"mappings":"AAMA,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAWrD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInstalledNxVersion = getInstalledNxVersion;
4
+ exports.isNxVersionMismatch = isNxVersionMismatch;
5
+ const fileutils_1 = require("../utils/fileutils");
6
+ const versions_1 = require("../utils/versions");
7
+ const workspace_root_1 = require("../utils/workspace-root");
8
+ const installation_directory_1 = require("../utils/installation-directory");
9
+ function getInstalledNxVersion() {
10
+ try {
11
+ const nxPackageJsonPath = require.resolve('nx/package.json', {
12
+ paths: (0, installation_directory_1.getNxRequirePaths)(workspace_root_1.workspaceRoot),
13
+ });
14
+ const { version } = (0, fileutils_1.readJsonFile)(nxPackageJsonPath);
15
+ return version;
16
+ }
17
+ catch {
18
+ // node modules are absent
19
+ return null;
20
+ }
21
+ }
22
+ function isNxVersionMismatch() {
23
+ return getInstalledNxVersion() !== versions_1.nxVersion;
24
+ }
@@ -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;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;AA8RlD,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAClC,IAAI,EAAE,MAAM,GAAG,IAAI,iBA6BpB;AAoMD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAqEnD"}
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;AA+JnD,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;AA8RlD,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAClC,IAAI,EAAE,MAAM,GAAG,IAAI,iBA6BpB;AAoLD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAyEnD"}
@@ -10,11 +10,11 @@ const perf_hooks_1 = require("perf_hooks");
10
10
  const file_hasher_1 = require("../../hasher/file-hasher");
11
11
  const native_1 = require("../../native");
12
12
  const consume_messages_from_socket_1 = require("../../utils/consume-messages-from-socket");
13
- const fileutils_1 = require("../../utils/fileutils");
14
13
  const versions_1 = require("../../utils/versions");
15
14
  const workspace_context_1 = require("../../utils/workspace-context");
16
15
  const workspace_root_1 = require("../../utils/workspace-root");
17
16
  const cache_1 = require("../cache");
17
+ const is_nx_version_mismatch_1 = require("../is-nx-version-mismatch");
18
18
  const socket_utils_1 = require("../socket-utils");
19
19
  const file_watcher_sockets_1 = require("./file-watching/file-watcher-sockets");
20
20
  const project_graph_listener_sockets_1 = require("./project-graph-listener-sockets");
@@ -265,7 +265,7 @@ function registerProcessTerminationListeners() {
265
265
  }
266
266
  let existingLockHash;
267
267
  function daemonIsOutdated() {
268
- if (nxVersionChanged()) {
268
+ if ((0, is_nx_version_mismatch_1.isNxVersionMismatch)()) {
269
269
  return 'NX_VERSION_CHANGED';
270
270
  }
271
271
  else if (lockFileHashChanged()) {
@@ -273,20 +273,6 @@ function daemonIsOutdated() {
273
273
  }
274
274
  return null;
275
275
  }
276
- function nxVersionChanged() {
277
- return versions_1.nxVersion !== getInstalledNxVersion();
278
- }
279
- const nxPackageJsonPath = require.resolve('nx/package.json');
280
- function getInstalledNxVersion() {
281
- try {
282
- const { version } = (0, fileutils_1.readJsonFile)(nxPackageJsonPath);
283
- return version;
284
- }
285
- catch (e) {
286
- // node modules are absent, so we can return null, which would shut down the daemon
287
- return null;
288
- }
289
- }
290
276
  function lockFileHashChanged() {
291
277
  const lockHashes = [
292
278
  (0, path_1.join)(workspace_root_1.workspaceRoot, 'package-lock.json'),
@@ -393,9 +379,12 @@ const handleOutputsChanges = async (err, changeEvents) => {
393
379
  };
394
380
  async function startServer() {
395
381
  (0, workspace_context_1.setupWorkspaceContext)(workspace_root_1.workspaceRoot);
382
+ const socketPath = (0, socket_utils_1.getFullOsSocketPath)();
396
383
  // Persist metadata about the background process so that it can be cleaned up later if needed
397
384
  await (0, cache_1.writeDaemonJsonProcessCache)({
398
385
  processId: process.pid,
386
+ socketPath,
387
+ nxVersion: versions_1.nxVersion,
399
388
  });
400
389
  // See notes in socket-command-line-utils.ts on OS differences regarding clean up of existings connections.
401
390
  if (!socket_utils_1.isWindows) {
@@ -412,9 +401,9 @@ async function startServer() {
412
401
  }, 20).unref();
413
402
  return new Promise(async (resolve, reject) => {
414
403
  try {
415
- server.listen((0, socket_utils_1.getFullOsSocketPath)(), async () => {
404
+ server.listen(socketPath, async () => {
416
405
  try {
417
- logger_1.serverLogger.log(`Started listening on: ${(0, socket_utils_1.getFullOsSocketPath)()}`);
406
+ logger_1.serverLogger.log(`Started listening on: ${socketPath}`);
418
407
  // this triggers the storage of the lock file hash
419
408
  daemonIsOutdated();
420
409
  if (!(0, shutdown_utils_1.getWatcherInstance)()) {
@@ -1 +1 @@
1
- {"version":3,"file":"tmp-dir.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/daemon/tmp-dir.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gCAAgC,QAG5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAK5B,CAAC;AAEJ,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,UAI7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,QAElD;AAED,wBAAgB,gBAAgB,YAO/B;AASD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,aAAa,UAAQ,UAYjD;AAED,wBAAgB,eAAe,SAI9B"}
1
+ {"version":3,"file":"tmp-dir.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/daemon/tmp-dir.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gCAAgC,QAG5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAK5B,CAAC;AAEJ,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,UAI7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,QAElD;AAED,wBAAgB,gBAAgB,YAO/B;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,aAAa,UAAQ,UAYjD;AAED,wBAAgB,eAAe,SAI9B"}
@@ -43,6 +43,7 @@ function isDaemonDisabled() {
43
43
  function socketDirName() {
44
44
  const hasher = (0, crypto_1.createHash)('sha256');
45
45
  hasher.update(workspace_root_1.workspaceRoot.toLowerCase());
46
+ hasher.update(String(process.pid));
46
47
  const unique = hasher.digest('hex').substring(0, 20);
47
48
  return (0, path_1.join)(tmp_1.tmpdir, unique);
48
49
  }
@@ -49,9 +49,9 @@ export declare class ProjectWithNoNameError extends Error {
49
49
  }
50
50
  export declare function isProjectWithNoNameError(e: unknown): e is ProjectWithNoNameError;
51
51
  export declare class ProjectConfigurationsError extends Error {
52
- readonly errors: Array<MergeNodesError | AggregateCreateNodesError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError>;
52
+ readonly errors: Array<MergeNodesError | AggregateCreateNodesError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError | WorkspaceValidityError>;
53
53
  readonly partialProjectConfigurationsResult: ConfigurationResult;
54
- constructor(errors: Array<MergeNodesError | AggregateCreateNodesError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError>, partialProjectConfigurationsResult: ConfigurationResult);
54
+ constructor(errors: Array<MergeNodesError | AggregateCreateNodesError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError | WorkspaceValidityError>, partialProjectConfigurationsResult: ConfigurationResult);
55
55
  }
56
56
  export declare function isProjectConfigurationsError(e: unknown): e is ProjectConfigurationsError;
57
57
  /**
@@ -115,6 +115,7 @@ export declare class ProcessDependenciesError extends Error {
115
115
  export declare class WorkspaceValidityError extends Error {
116
116
  message: string;
117
117
  constructor(message: string);
118
+ toString(): string;
118
119
  }
119
120
  export declare function isWorkspaceValidityError(e: unknown): e is WorkspaceValidityError;
120
121
  export declare class AggregateProjectGraphError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"error-types.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/error-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-types.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/error-types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAC9B,yBAAyB,GACzB,eAAe,GACf,mBAAmB,GACnB,uBAAuB,GACvB,iCAAiC,GACjC,wBAAwB,GACxB,sBAAsB,CAAC;AAE3B,qBAAa,2BAA4B,SAAQ,KAAK;;CAMrD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;;IAKxC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,EACtD,mBAAmB,EAAE,YAAY,EACjC,iBAAiB,EAAE,uBAAuB,GAAG,IAAI;IAkDnD;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAAC,CAAC,EAAE,uBAAuB;IAI7D;;;;OAIG;IACH,sBAAsB;IAItB,oBAAoB;IAIpB,SAAS;CAGV;AAED,qBAAa,iCAAkC,SAAQ,KAAK;IAEjD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBAD9C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;CAcxD;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IAClC,WAAW,EAAE,MAAM;IAAS,WAAW,EAAE,MAAM;gBAA/C,WAAW,EAAE,MAAM,EAAS,WAAW,EAAE,MAAM;CAInE;AAED,wBAAgB,8BAA8B,CAC5C,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,4BAA4B,CAOnC;AAED,wBAAgB,mCAAmC,CACjD,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,iCAAiC,CAOxC;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAEvC,YAAY,EAAE,MAAM,EAAE;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBAD9C,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;CASxD;AAED,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,uBAAuB,CAO9B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC5B,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAIvC;AAED,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,sBAAsB,CAO7B;AAED,qBAAa,0BAA2B,SAAQ,KAAK;aAEjC,MAAM,EAAE,KAAK,CACzB,eAAe,GACf,yBAAyB,GACzB,uBAAuB,GACvB,iCAAiC,GACjC,sBAAsB,CACzB;aACe,kCAAkC,EAAE,mBAAmB;gBAPvD,MAAM,EAAE,KAAK,CACzB,eAAe,GACf,yBAAyB,GACzB,uBAAuB,GACvB,iCAAiC,GACjC,sBAAsB,CACzB,EACe,kCAAkC,EAAE,mBAAmB;CAqC1E;AAED,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,0BAA0B,CAOjC;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aA4BhC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aAClD,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IA5BrE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;gBAEe,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAClD,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;CAoB7E;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,QA+BnB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;gBAER,EACV,IAAI,EACJ,UAAU,EACV,KAAK,EACL,WAAW,GACZ,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CAiBF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAChB,KAAK,EAAE,KAAK;aAAkB,MAAM,EAAE,MAAM;gBAA5C,KAAK,EAAE,KAAK,EAAkB,MAAM,EAAE,MAAM;CASzE;AAED,qBAAa,wBAAyB,SAAQ,KAAK;aACrB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE;;KAAA;CAU1D;AAWD,qBAAa,sBAAuB,SAAQ,KAAK;IAC5B,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAMlC,QAAQ;CAGT;AAED,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,sBAAsB,CAO7B;AACD,qBAAa,0BAA2B,SAAQ,KAAK;aAEjC,MAAM,EAAE,KAAK,CAC3B,mBAAmB,GAAG,wBAAwB,GAAG,sBAAsB,CACxE;aACe,mBAAmB,EAAE,YAAY;gBAHjC,MAAM,EAAE,KAAK,CAC3B,mBAAmB,GAAG,wBAAwB,GAAG,sBAAsB,CACxE,EACe,mBAAmB,EAAE,YAAY;CAKpD;AAED,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,0BAA0B,CAOjC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAO1E;AAED,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,yBAAyB,CAOhC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAKlE;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAEvC,MAAM,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,UAAU,EAAE,uBAAuB;gBAFrC,MAAM,EAAE,GAAG,EAAE,EACX,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,uBAAuB;CAO/C;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACrB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAMhD"}
@@ -25,7 +25,11 @@ class ProjectGraphError extends Error {
25
25
  const messageFragments = ['Failed to process project graph.'];
26
26
  const mergeNodesErrors = [];
27
27
  const unknownErrors = [];
28
- for (const e of errors) {
28
+ // Lets us throw aggregate errors without special handling,
29
+ // to avoid cases where users fix an error and get hit with another one
30
+ // which was already there but not reported.
31
+ let flat = errors.flatMap((e) => e instanceof AggregateError ? e.errors : e);
32
+ for (const e of flat) {
29
33
  if (
30
34
  // Known errors that are self-explanatory
31
35
  isAggregateCreateNodesError(e) ||
@@ -311,11 +315,14 @@ function isProcessDependenciesError(e) {
311
315
  }
312
316
  class WorkspaceValidityError extends Error {
313
317
  constructor(message) {
314
- message = `Configuration Error\n${message}`;
315
318
  super(message);
316
319
  this.message = message;
320
+ this.message = `[Configuration Error]:\n${message}`;
317
321
  this.name = this.constructor.name;
318
322
  }
323
+ toString() {
324
+ return this.message;
325
+ }
319
326
  }
320
327
  exports.WorkspaceValidityError = WorkspaceValidityError;
321
328
  function isWorkspaceValidityError(e) {
@@ -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;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"}
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;AAwBzD,wBAAsB,UAAU,CAC9B,IAAI,SAAgB,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAwB3B;AAaD,wBAAsB,qBAAqB,CAAC,IAAI,SAAgB,6BAyB/D;AAED,wBAAgB,cAAc,SAK7B"}
@@ -30,20 +30,12 @@ async function getPlugins(root = workspace_root_1.workspaceRoot) {
30
30
  pluginsConfigurationHash === currentPluginsConfigurationHash) {
31
31
  return loadedPlugins;
32
32
  }
33
- // Cleanup current plugins before loading new ones
34
- cleanupSpecifiedPlugins?.();
35
- pendingPluginsPromise ??= loadSpecifiedNxPlugins(pluginsConfiguration, root);
36
33
  currentPluginsConfigurationHash = pluginsConfigurationHash;
37
- const [[result, cleanupFn], defaultPlugins] = await Promise.all([
38
- pendingPluginsPromise,
34
+ const [defaultPlugins, specifiedPlugins] = await Promise.all([
39
35
  getOnlyDefaultPlugins(root),
36
+ (pendingPluginsPromise ??= loadSpecifiedNxPlugins(pluginsConfiguration, root)),
40
37
  ]);
41
- cleanupSpecifiedPlugins = () => {
42
- loadedPlugins = undefined;
43
- pendingPluginsPromise = undefined;
44
- cleanupFn();
45
- };
46
- loadedPlugins = result.concat(defaultPlugins);
38
+ loadedPlugins = specifiedPlugins.concat(defaultPlugins);
47
39
  return loadedPlugins;
48
40
  }
49
41
  /**
@@ -77,6 +69,8 @@ async function getOnlyDefaultPlugins(root = workspace_root_1.workspaceRoot) {
77
69
  function cleanupPlugins() {
78
70
  cleanupSpecifiedPlugins?.();
79
71
  cleanupDefaultPlugins?.();
72
+ pendingPluginsPromise = undefined;
73
+ pendingDefaultPluginPromise = undefined;
80
74
  }
81
75
  /**
82
76
  * Stuff for generic loading
@@ -108,34 +102,38 @@ async function loadDefaultNxPlugins(root = workspace_root_1.workspaceRoot) {
108
102
  performance.measure('loadDefaultNxPlugins', 'loadDefaultNxPlugins:start', 'loadDefaultNxPlugins:end');
109
103
  return ret;
110
104
  }
111
- async function loadSpecifiedNxPlugins(plugins, root = workspace_root_1.workspaceRoot) {
105
+ async function loadSpecifiedNxPlugins(pluginsConfigurations, root = workspace_root_1.workspaceRoot) {
106
+ // Returning existing plugins is handled by getPlugins,
107
+ // so, if we are here and there are existing plugins, they are stale
108
+ if (cleanupSpecifiedPlugins) {
109
+ cleanupSpecifiedPlugins();
110
+ }
112
111
  performance.mark('loadSpecifiedNxPlugins:start');
113
- plugins ??= [];
112
+ pluginsConfigurations ??= [];
114
113
  const cleanupFunctions = [];
115
- const ret = [
116
- await Promise.all(plugins.map(async (plugin, index) => {
117
- const pluginPath = typeof plugin === 'string' ? plugin : plugin.plugin;
118
- performance.mark(`Load Nx Plugin: ${pluginPath} - start`);
119
- const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root, index);
120
- cleanupFunctions.push(cleanup);
121
- const res = await loadedPluginPromise;
122
- res.index = index;
123
- performance.mark(`Load Nx Plugin: ${pluginPath} - end`);
124
- performance.measure(`Load Nx Plugin: ${pluginPath}`, `Load Nx Plugin: ${pluginPath} - start`, `Load Nx Plugin: ${pluginPath} - end`);
125
- return res;
126
- })),
127
- () => {
128
- for (const fn of cleanupFunctions) {
129
- fn();
130
- }
131
- if ((0, transpiler_1.pluginTranspilerIsRegistered)()) {
132
- (0, transpiler_1.cleanupPluginTSTranspiler)();
133
- }
134
- },
135
- ];
114
+ const plugins = await Promise.all(pluginsConfigurations.map(async (plugin, index) => {
115
+ const pluginPath = typeof plugin === 'string' ? plugin : plugin.plugin;
116
+ performance.mark(`Load Nx Plugin: ${pluginPath} - start`);
117
+ const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root, index);
118
+ cleanupFunctions.push(cleanup);
119
+ const res = await loadedPluginPromise;
120
+ res.index = index;
121
+ performance.mark(`Load Nx Plugin: ${pluginPath} - end`);
122
+ performance.measure(`Load Nx Plugin: ${pluginPath}`, `Load Nx Plugin: ${pluginPath} - start`, `Load Nx Plugin: ${pluginPath} - end`);
123
+ return res;
124
+ }));
136
125
  performance.mark('loadSpecifiedNxPlugins:end');
137
126
  performance.measure('loadSpecifiedNxPlugins', 'loadSpecifiedNxPlugins:start', 'loadSpecifiedNxPlugins:end');
138
- return ret;
127
+ cleanupSpecifiedPlugins = () => {
128
+ for (const fn of cleanupFunctions) {
129
+ fn();
130
+ }
131
+ if ((0, transpiler_1.pluginTranspilerIsRegistered)()) {
132
+ (0, transpiler_1.cleanupPluginTSTranspiler)();
133
+ }
134
+ pendingPluginsPromise = undefined;
135
+ };
136
+ return plugins;
139
137
  }
140
138
  function getDefaultPlugins(root) {
141
139
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"in-process-loader.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/project-graph/plugins/in-process-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EACL,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUzD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,KAAK,WAAsB,GAC1B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB,CA0BA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,kDAKrE;AAED,wBAAsB,iBAAiB,CACrC,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
1
+ {"version":3,"file":"in-process-loader.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/project-graph/plugins/in-process-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EACL,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,KAAK,WAAsB,GAC1B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB,CA0BA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,kDAKrE;AAED,wBAAsB,iBAAiB,CACrC,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAmBzB"}
@@ -9,7 +9,6 @@ const package_json_1 = require("../../utils/package-json");
9
9
  const fileutils_1 = require("../../utils/fileutils");
10
10
  const error_types_1 = require("../error-types");
11
11
  const path = require("node:path/posix");
12
- const load_resolved_plugin_1 = require("./load-resolved-plugin");
13
12
  const resolve_plugin_1 = require("./resolve-plugin");
14
13
  const transpiler_1 = require("./transpiler");
15
14
  function readPluginPackageJson(pluginName, projects, paths = (0, installation_directory_1.getNxRequirePaths)()) {
@@ -52,7 +51,8 @@ async function loadNxPluginAsync(pluginConfiguration, paths, root) {
52
51
  if (shouldRegisterTSTranspiler) {
53
52
  (0, transpiler_1.registerPluginTSTranspiler)();
54
53
  }
55
- return (0, load_resolved_plugin_1.loadResolvedNxPluginAsync)(pluginConfiguration, pluginPath, name);
54
+ const { loadResolvedNxPluginAsync } = await Promise.resolve().then(() => require('./load-resolved-plugin'));
55
+ return loadResolvedNxPluginAsync(pluginConfiguration, pluginPath, name);
56
56
  }
57
57
  catch (e) {
58
58
  throw new error_types_1.LoadPluginError(moduleName, e);
@@ -32,7 +32,7 @@ async function loadRemoteNxPlugin(plugin, root, index) {
32
32
  }
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
- const { worker, socket } = await startPluginWorker();
35
+ const { worker, socket } = await startPluginWorker(name);
36
36
  // Register plugin worker as a subprocess of the main CLI
37
37
  // This allows metrics collection when the daemon is not used
38
38
  if (worker.pid) {
@@ -276,7 +276,7 @@ function registerPendingPromise(tx, pending, callback, context) {
276
276
  return promise;
277
277
  }
278
278
  global.nxPluginWorkerCount ??= 0;
279
- async function startPluginWorker() {
279
+ async function startPluginWorker(name) {
280
280
  // this should only really be true when running unit tests within
281
281
  // the Nx repo. We still need to start the worker in this case,
282
282
  // but its typescript.
@@ -296,6 +296,7 @@ async function startPluginWorker() {
296
296
  ...(isWorkerTypescript ? ['--require', 'ts-node/register'] : []),
297
297
  workerPath,
298
298
  ipcPath,
299
+ name,
299
300
  ], {
300
301
  stdio: 'inherit',
301
302
  env,