nx 22.1.0-canary.20251112-36b9f7a → 22.1.0-canary.20251117-e8576a8

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 (60) hide show
  1. package/bin/init-local.d.ts.map +1 -1
  2. package/bin/init-local.js +40 -2
  3. package/executors.json +16 -16
  4. package/generators.json +13 -13
  5. package/migrations.json +143 -143
  6. package/package.json +11 -14
  7. package/presets/npm.json +4 -4
  8. package/schemas/nx-schema.json +1286 -1286
  9. package/schemas/project-schema.json +359 -359
  10. package/schemas/workspace-schema.json +165 -165
  11. package/src/ai/set-up-ai-agents/schema.json +31 -31
  12. package/src/command-line/add/add.d.ts.map +1 -1
  13. package/src/command-line/add/add.js +5 -2
  14. package/src/command-line/init/command-object.d.ts.map +1 -1
  15. package/src/command-line/init/command-object.js +10 -0
  16. package/src/core/graph/main.js +1 -1
  17. package/src/daemon/client/client.d.ts +3 -0
  18. package/src/daemon/client/client.d.ts.map +1 -1
  19. package/src/daemon/client/client.js +18 -4
  20. package/src/daemon/client/daemon-socket-messenger.d.ts.map +1 -1
  21. package/src/daemon/client/daemon-socket-messenger.js +4 -0
  22. package/src/daemon/message-types/nx-console.d.ts +18 -0
  23. package/src/daemon/message-types/nx-console.d.ts.map +1 -0
  24. package/src/daemon/message-types/nx-console.js +19 -0
  25. package/src/daemon/server/handle-nx-console.d.ts +4 -0
  26. package/src/daemon/server/handle-nx-console.d.ts.map +1 -0
  27. package/src/daemon/server/handle-nx-console.js +54 -0
  28. package/src/daemon/server/nx-console-operations.d.ts +31 -0
  29. package/src/daemon/server/nx-console-operations.d.ts.map +1 -0
  30. package/src/daemon/server/nx-console-operations.js +135 -0
  31. package/src/daemon/server/server.d.ts.map +1 -1
  32. package/src/daemon/server/server.js +16 -0
  33. package/src/daemon/server/shutdown-utils.d.ts.map +1 -1
  34. package/src/daemon/server/shutdown-utils.js +3 -0
  35. package/src/devkit-internals.d.ts +1 -1
  36. package/src/devkit-internals.d.ts.map +1 -1
  37. package/src/devkit-internals.js +2 -1
  38. package/src/executors/noop/schema.json +8 -8
  39. package/src/executors/run-commands/schema.json +187 -187
  40. package/src/executors/run-script/schema.json +25 -25
  41. package/src/native/index.d.ts +37 -24
  42. package/src/native/native-bindings.js +1 -0
  43. package/src/native/nx.wasi-browser.js +45 -53
  44. package/src/native/nx.wasm32-wasi.wasm +0 -0
  45. package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +38 -38
  46. package/src/project-graph/plugins/resolve-plugin.js +1 -1
  47. package/src/tasks-runner/process-metrics-service.d.ts +2 -2
  48. package/src/tasks-runner/process-metrics-service.d.ts.map +1 -1
  49. package/src/tasks-runner/task-env-paths.d.ts +2 -0
  50. package/src/tasks-runner/task-env-paths.d.ts.map +1 -0
  51. package/src/tasks-runner/task-env-paths.js +45 -0
  52. package/src/tasks-runner/task-env.d.ts +3 -1
  53. package/src/tasks-runner/task-env.d.ts.map +1 -1
  54. package/src/tasks-runner/task-env.js +27 -51
  55. package/src/tasks-runner/task-orchestrator.js +1 -1
  56. package/src/utils/consume-messages-from-socket.d.ts.map +1 -1
  57. package/src/utils/consume-messages-from-socket.js +4 -2
  58. package/src/utils/package-json.d.ts +4 -0
  59. package/src/utils/package-json.d.ts.map +1 -1
  60. package/src/utils/package-json.js +45 -11
Binary file
@@ -1,41 +1,41 @@
1
1
  {
2
- "$schema": "https://json-schema.org/schema",
3
- "id": "NxCloudInit",
4
- "title": "Add Nx Cloud Configuration to the workspace",
5
- "description": "Connect a workspace to Nx Cloud.",
6
- "type": "object",
7
- "cli": "nx",
8
- "properties": {
9
- "analytics": {
10
- "type": "boolean",
11
- "description": "Anonymously store hashed machine ID for task runs",
12
- "default": false
2
+ "$schema": "https://json-schema.org/schema",
3
+ "id": "NxCloudInit",
4
+ "title": "Add Nx Cloud Configuration to the workspace",
5
+ "description": "Connect a workspace to Nx Cloud.",
6
+ "type": "object",
7
+ "cli": "nx",
8
+ "properties": {
9
+ "analytics": {
10
+ "type": "boolean",
11
+ "description": "Anonymously store hashed machine ID for task runs",
12
+ "default": false
13
+ },
14
+ "installationSource": {
15
+ "type": "string",
16
+ "description": "Name of Nx Cloud installation invoker (ex. user, add-nx-to-monorepo, create-nx-workspace, nx-upgrade",
17
+ "default": "user"
18
+ },
19
+ "hideFormatLogs": {
20
+ "type": "boolean",
21
+ "description": "Hide formatting logs",
22
+ "x-priority": "internal"
23
+ },
24
+ "generateToken": {
25
+ "type": "boolean",
26
+ "description": "Explicitly asks for a token to be created, do not override existing tokens from Nx Cloud"
27
+ },
28
+ "github": {
29
+ "type": "boolean",
30
+ "description": "If the user will be using GitHub as their git hosting provider",
31
+ "default": false
32
+ },
33
+ "directory": {
34
+ "type": "string",
35
+ "description": "The directory where the workspace is located",
36
+ "x-priority": "internal"
37
+ }
13
38
  },
14
- "installationSource": {
15
- "type": "string",
16
- "description": "Name of Nx Cloud installation invoker (ex. user, add-nx-to-monorepo, create-nx-workspace, nx-upgrade",
17
- "default": "user"
18
- },
19
- "hideFormatLogs": {
20
- "type": "boolean",
21
- "description": "Hide formatting logs",
22
- "x-priority": "internal"
23
- },
24
- "generateToken": {
25
- "type": "boolean",
26
- "description": "Explicitly asks for a token to be created, do not override existing tokens from Nx Cloud"
27
- },
28
- "github": {
29
- "type": "boolean",
30
- "description": "If the user will be using GitHub as their git hosting provider",
31
- "default": false
32
- },
33
- "directory": {
34
- "type": "string",
35
- "description": "The directory where the workspace is located",
36
- "x-priority": "internal"
37
- }
38
- },
39
- "additionalProperties": false,
40
- "required": []
39
+ "additionalProperties": false,
40
+ "required": []
41
41
  }
@@ -16,7 +16,7 @@ let projectsWithoutInference;
16
16
  let projectsWithoutInferencePromise = null;
17
17
  async function resolveNxPlugin(moduleName, root, paths) {
18
18
  try {
19
- require.resolve(moduleName);
19
+ require.resolve(moduleName, { paths });
20
20
  }
21
21
  catch {
22
22
  // If a plugin cannot be resolved, we will need projects to resolve it
@@ -1,5 +1,5 @@
1
- import { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo } from '../native';
2
- export type { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo, };
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,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,GACX,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7D;;;;GAIG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,iBAAiB,CAAS;;IAmBlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+B1C;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQpE;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5D;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IASlC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAOjB;AAOD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAKhE"}
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"}
@@ -0,0 +1,2 @@
1
+ export declare function getEnvPathsForTask(projectRoot: string, target: string, configuration?: string, nonAtomizedTarget?: string): string[];
2
+ //# sourceMappingURL=task-env-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-env-paths.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-env-paths.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,EAAE,CA6BV"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvPathsForTask = getEnvPathsForTask;
4
+ function getEnvPathsForTask(projectRoot, target, configuration, nonAtomizedTarget) {
5
+ const identifiers = [];
6
+ // Configuration-specific identifier (like build.development, build.production)
7
+ if (configuration) {
8
+ identifiers.push(`${target}.${configuration}`);
9
+ if (nonAtomizedTarget) {
10
+ identifiers.push(`${nonAtomizedTarget}.${configuration}`);
11
+ }
12
+ identifiers.push(configuration);
13
+ }
14
+ // Non-configuration-specific identifier (like build, test, serve)
15
+ identifiers.push(target);
16
+ if (nonAtomizedTarget) {
17
+ identifiers.push(nonAtomizedTarget);
18
+ }
19
+ // Non-deterministic identifier (for files like .env.local, .local.env, .env)
20
+ identifiers.push('');
21
+ const envPaths = [];
22
+ // Add DotEnv Files in the project root folder
23
+ for (const identifier of identifiers) {
24
+ envPaths.push(...getEnvFileVariants(identifier, projectRoot));
25
+ }
26
+ // Add DotEnv Files in the workspace root folder
27
+ for (const identifier of identifiers) {
28
+ envPaths.push(...getEnvFileVariants(identifier));
29
+ }
30
+ return envPaths;
31
+ }
32
+ function getEnvFileVariants(identifier, root) {
33
+ const path = root ? root + '/' : '';
34
+ if (identifier) {
35
+ return [
36
+ `${path}.env.${identifier}.local`,
37
+ `${path}.env.${identifier}`,
38
+ `${path}.${identifier}.local.env`,
39
+ `${path}.${identifier}.env`,
40
+ ];
41
+ }
42
+ else {
43
+ return [`${path}.env.local`, `${path}.local.env`, `${path}.env`];
44
+ }
45
+ }
@@ -1,6 +1,7 @@
1
1
  import { Task } from '../config/task-graph';
2
+ import { ProjectGraph } from '../config/project-graph';
2
3
  export declare function getEnvVariablesForBatchProcess(skipNxCache: boolean, captureStderr: boolean): NodeJS.ProcessEnv;
3
- export declare function getTaskSpecificEnv(task: Task): NodeJS.ProcessEnv;
4
+ export declare function getTaskSpecificEnv(task: Task, graph: ProjectGraph): NodeJS.ProcessEnv;
4
5
  export declare function getEnvVariablesForTask(task: Task, taskSpecificEnv: NodeJS.ProcessEnv, forceColor: string, skipNxCache: boolean, captureStderr: boolean, outputPath: string, streamOutput: boolean): NodeJS.ProcessEnv;
5
6
  /**
6
7
  * This function loads a .env file and expands the variables in it.
@@ -15,4 +16,5 @@ export declare function loadAndExpandDotEnvFile(filename: string, environmentVar
15
16
  * @param environmentVariables
16
17
  */
17
18
  export declare function unloadDotEnvFile(filename: string, environmentVariables: NodeJS.ProcessEnv, override?: boolean): void;
19
+ export declare function getEnvFilesForTask(task: Task, graph: ProjectGraph): string[];
18
20
  //# sourceMappingURL=task-env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-env.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAM5C,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,GACrB,MAAM,CAAC,UAAU,CAWnB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,qBAO5C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,MAAM,CAAC,UAAU,EAClC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,GACpB,MAAM,CAAC,UAAU,CAwBnB;AA+DD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,CAAC,UAAU,EACvC,QAAQ,UAAQ,8CAWjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,CAAC,UAAU,EACvC,QAAQ,UAAQ,QASjB"}
1
+ {"version":3,"file":"task-env.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAK5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,GACrB,MAAM,CAAC,UAAU,CAWnB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,qBAOjE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,MAAM,CAAC,UAAU,EAClC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,GACpB,MAAM,CAAC,UAAU,CAwBnB;AA+DD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,CAAC,UAAU,EACvC,QAAQ,UAAQ,8CAWjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,CAAC,UAAU,EACvC,QAAQ,UAAQ,QASjB;AAwBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAS5E"}
@@ -5,10 +5,12 @@ exports.getTaskSpecificEnv = getTaskSpecificEnv;
5
5
  exports.getEnvVariablesForTask = getEnvVariablesForTask;
6
6
  exports.loadAndExpandDotEnvFile = loadAndExpandDotEnvFile;
7
7
  exports.unloadDotEnvFile = unloadDotEnvFile;
8
+ exports.getEnvFilesForTask = getEnvFilesForTask;
8
9
  const dotenv_1 = require("dotenv");
9
10
  const dotenv_expand_1 = require("dotenv-expand");
10
11
  const workspace_root_1 = require("../utils/workspace-root");
11
12
  const node_path_1 = require("node:path");
13
+ const task_env_paths_1 = require("./task-env-paths");
12
14
  function getEnvVariablesForBatchProcess(skipNxCache, captureStderr) {
13
15
  return {
14
16
  // User Process Env Variables override Dotenv Variables
@@ -17,11 +19,11 @@ function getEnvVariablesForBatchProcess(skipNxCache, captureStderr) {
17
19
  ...getNxEnvVariablesForForkedProcess(process.env.FORCE_COLOR === undefined ? 'true' : process.env.FORCE_COLOR, skipNxCache, captureStderr),
18
20
  };
19
21
  }
20
- function getTaskSpecificEnv(task) {
22
+ function getTaskSpecificEnv(task, graph) {
21
23
  // Unload any dot env files at the root of the workspace that were loaded on init of Nx.
22
24
  const taskEnv = unloadDotEnvFiles({ ...process.env });
23
25
  return process.env.NX_LOAD_DOT_ENV_FILES === 'true'
24
- ? loadDotEnvFilesForTask(task, taskEnv)
26
+ ? loadDotEnvFilesForTask(task, graph, taskEnv)
25
27
  : // If not loading dot env files, ensure env vars created by system are still loaded
26
28
  taskEnv;
27
29
  }
@@ -110,56 +112,30 @@ function unloadDotEnvFile(filename, environmentVariables, override = false) {
110
112
  }
111
113
  });
112
114
  }
113
- function getEnvFilesForTask(task) {
114
- // Collect dot env files that may pertain to a task
115
- return [
116
- // Load DotEnv Files for a configuration in the project root
117
- ...(task.target.configuration
118
- ? [
119
- `${task.projectRoot}/.env.${task.target.target}.${task.target.configuration}.local`,
120
- `${task.projectRoot}/.env.${task.target.target}.${task.target.configuration}`,
121
- `${task.projectRoot}/.env.${task.target.configuration}.local`,
122
- `${task.projectRoot}/.env.${task.target.configuration}`,
123
- `${task.projectRoot}/.${task.target.target}.${task.target.configuration}.local.env`,
124
- `${task.projectRoot}/.${task.target.target}.${task.target.configuration}.env`,
125
- `${task.projectRoot}/.${task.target.configuration}.local.env`,
126
- `${task.projectRoot}/.${task.target.configuration}.env`,
127
- ]
128
- : []),
129
- // Load DotEnv Files for a target in the project root
130
- `${task.projectRoot}/.env.${task.target.target}.local`,
131
- `${task.projectRoot}/.env.${task.target.target}`,
132
- `${task.projectRoot}/.${task.target.target}.local.env`,
133
- `${task.projectRoot}/.${task.target.target}.env`,
134
- `${task.projectRoot}/.env.local`,
135
- `${task.projectRoot}/.local.env`,
136
- `${task.projectRoot}/.env`,
137
- // Load DotEnv Files for a configuration in the workspace root
138
- ...(task.target.configuration
139
- ? [
140
- `.env.${task.target.target}.${task.target.configuration}.local`,
141
- `.env.${task.target.target}.${task.target.configuration}`,
142
- `.env.${task.target.configuration}.local`,
143
- `.env.${task.target.configuration}`,
144
- `.${task.target.target}.${task.target.configuration}.local.env`,
145
- `.${task.target.target}.${task.target.configuration}.env`,
146
- `.${task.target.configuration}.local.env`,
147
- `.${task.target.configuration}.env`,
148
- ]
149
- : []),
150
- // Load DotEnv Files for a target in the workspace root
151
- `.env.${task.target.target}.local`,
152
- `.env.${task.target.target}`,
153
- `.${task.target.target}.local.env`,
154
- `.${task.target.target}.env`,
155
- // Load base DotEnv Files at workspace root
156
- `.local.env`,
157
- `.env.local`,
158
- `.env`,
159
- ];
115
+ function getOwnerTargetForTask(task, graph) {
116
+ const project = graph.nodes[task.target.project];
117
+ if (project.data.metadata?.targetGroups) {
118
+ for (const targets of Object.values(project.data.metadata.targetGroups)) {
119
+ if (targets.includes(task.target.target)) {
120
+ for (const target of targets) {
121
+ if (project.data.targets[target].metadata?.nonAtomizedTarget) {
122
+ return [
123
+ target,
124
+ project.data.targets[target].metadata?.nonAtomizedTarget,
125
+ ];
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ return [task.target.target];
132
+ }
133
+ function getEnvFilesForTask(task, graph) {
134
+ const [target, nonAtomizedTarget] = getOwnerTargetForTask(task, graph);
135
+ return (0, task_env_paths_1.getEnvPathsForTask)(task.projectRoot, target, task.target.configuration, nonAtomizedTarget);
160
136
  }
161
- function loadDotEnvFilesForTask(task, environmentVariables) {
162
- const dotEnvFiles = getEnvFilesForTask(task);
137
+ function loadDotEnvFilesForTask(task, graph, environmentVariables) {
138
+ const dotEnvFiles = getEnvFilesForTask(task, graph);
163
139
  for (const file of dotEnvFiles) {
164
140
  loadAndExpandDotEnvFile((0, node_path_1.join)(workspace_root_1.workspaceRoot, file), environmentVariables);
165
141
  }
@@ -146,7 +146,7 @@ class TaskOrchestrator {
146
146
  // region Processing Scheduled Tasks
147
147
  async processTask(taskId) {
148
148
  const task = this.taskGraph.tasks[taskId];
149
- const taskSpecificEnv = (0, task_env_1.getTaskSpecificEnv)(task);
149
+ const taskSpecificEnv = (0, task_env_1.getTaskSpecificEnv)(task, this.projectGraph);
150
150
  if (!task.hash) {
151
151
  await (0, hash_task_1.hashTask)(this.hasher, this.projectGraph, this.taskGraphForHashing, task, taskSpecificEnv, this.taskDetails);
152
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"consume-messages-from-socket.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/consume-messages-from-socket.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAwC,CAAC;AAErE,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,IAEnE,SAAI,UAyBb;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtD"}
1
+ {"version":3,"file":"consume-messages-from-socket.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/consume-messages-from-socket.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,QACuB,CAAC;AAEpD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,IAEnE,SAAI,UA4Bb;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtD"}
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MESSAGE_END_SEQ = void 0;
4
4
  exports.consumeMessagesFromSocket = consumeMessagesFromSocket;
5
5
  exports.isJsonMessage = isJsonMessage;
6
- exports.MESSAGE_END_SEQ = 'NX_MSG_END' + String.fromCharCode(4);
6
+ const VERY_END_CODE = 4;
7
+ exports.MESSAGE_END_SEQ = 'NX_MSG_END' + String.fromCharCode(VERY_END_CODE);
7
8
  function consumeMessagesFromSocket(callback) {
8
9
  let message = '';
9
10
  return (data) => {
@@ -11,7 +12,8 @@ function consumeMessagesFromSocket(callback) {
11
12
  message += chunk;
12
13
  // Check if accumulated message ends with MESSAGE_END_SEQ (not just the chunk)
13
14
  // This handles TCP packet fragmentation where MESSAGE_END_SEQ may be split across packets
14
- if (message.endsWith(exports.MESSAGE_END_SEQ)) {
15
+ if (chunk.codePointAt(chunk.length - 1) === VERY_END_CODE &&
16
+ message.endsWith(exports.MESSAGE_END_SEQ)) {
15
17
  // Remove the trailing MESSAGE_END_SEQ
16
18
  const fullMessage = message.substring(0, message.length - exports.MESSAGE_END_SEQ.length);
17
19
  // Server may send multiple messages in one chunk, so splitting by MESSAGE_END_SEQ
@@ -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":"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"}
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-json.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,13 @@ exports.readTargetsFromPackageJson = readTargetsFromPackageJson;
9
9
  exports.readModulePackageJsonWithoutFallbacks = readModulePackageJsonWithoutFallbacks;
10
10
  exports.readModulePackageJson = readModulePackageJson;
11
11
  exports.installPackageToTmp = installPackageToTmp;
12
+ exports.installPackageToTmpAsync = installPackageToTmpAsync;
12
13
  exports.getDependencyVersionFromPackageJson = getDependencyVersionFromPackageJson;
13
14
  const child_process_1 = require("child_process");
15
+ const util_1 = require("util");
14
16
  const fs_1 = require("fs");
15
17
  const path_1 = require("path");
18
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
16
19
  const tmp_1 = require("tmp");
17
20
  const json_1 = require("../generators/utils/json");
18
21
  const project_configuration_utils_1 = require("../project-graph/utils/project-configuration-utils");
@@ -199,7 +202,11 @@ function readModulePackageJson(moduleSpecifier, requirePaths = (0, installation_
199
202
  path: packageJsonPath,
200
203
  };
201
204
  }
202
- function installPackageToTmp(pkg, requiredVersion) {
205
+ /**
206
+ * Prepares all necessary information for installing a package to a temporary directory.
207
+ * This is used by both sync and async installation functions.
208
+ */
209
+ function preparePackageInstallation(pkg, requiredVersion) {
203
210
  const { dir: tempDir, cleanup } = (0, package_manager_1.createTempNpmDirectory)?.() ?? {
204
211
  dir: (0, tmp_1.dirSync)().name,
205
212
  cleanup: () => { },
@@ -209,29 +216,56 @@ function installPackageToTmp(pkg, requiredVersion) {
209
216
  const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true';
210
217
  generatePackageManagerFiles(tempDir, packageManager);
211
218
  const preInstallCommand = (0, package_manager_1.getPackageManagerCommand)(packageManager).preInstall;
212
- if (preInstallCommand) {
213
- // ensure package.json and repo in tmp folder is set to a proper package manager state
214
- (0, child_process_1.execSync)(preInstallCommand, {
215
- cwd: tempDir,
216
- stdio: isVerbose ? 'inherit' : 'ignore',
217
- windowsHide: false,
218
- });
219
- }
220
219
  const pmCommands = (0, package_manager_1.getPackageManagerCommand)(packageManager);
221
220
  let addCommand = pmCommands.addDev;
222
221
  if (packageManager === 'pnpm') {
223
222
  addCommand = 'pnpm add -D'; // we need to ensure that we are not using workspace command
224
223
  }
225
- (0, child_process_1.execSync)(`${addCommand} ${pkg}@${requiredVersion} ${pmCommands.ignoreScriptsFlag ?? ''}`, {
224
+ const installCommand = `${addCommand} ${pkg}@${requiredVersion} ${pmCommands.ignoreScriptsFlag ?? ''}`;
225
+ const execOptions = {
226
226
  cwd: tempDir,
227
227
  stdio: isVerbose ? 'inherit' : 'ignore',
228
228
  windowsHide: false,
229
- });
229
+ };
230
230
  return {
231
231
  tempDir,
232
232
  cleanup,
233
+ preInstallCommand,
234
+ installCommand,
235
+ execOptions,
233
236
  };
234
237
  }
238
+ function installPackageToTmp(pkg, requiredVersion) {
239
+ const { tempDir, cleanup, preInstallCommand, installCommand, execOptions } = preparePackageInstallation(pkg, requiredVersion);
240
+ if (preInstallCommand) {
241
+ // ensure package.json and repo in tmp folder is set to a proper package manager state
242
+ (0, child_process_1.execSync)(preInstallCommand, execOptions);
243
+ }
244
+ (0, child_process_1.execSync)(installCommand, execOptions);
245
+ return {
246
+ tempDir,
247
+ cleanup,
248
+ };
249
+ }
250
+ async function installPackageToTmpAsync(pkg, requiredVersion) {
251
+ const { tempDir, cleanup, preInstallCommand, installCommand, execOptions } = preparePackageInstallation(pkg, requiredVersion);
252
+ try {
253
+ if (preInstallCommand) {
254
+ // ensure package.json and repo in tmp folder is set to a proper package manager state
255
+ await execAsync(preInstallCommand, execOptions);
256
+ }
257
+ await execAsync(installCommand, execOptions);
258
+ return {
259
+ tempDir,
260
+ cleanup,
261
+ };
262
+ }
263
+ catch (error) {
264
+ // Clean up on error
265
+ cleanup();
266
+ throw error;
267
+ }
268
+ }
235
269
  function getDependencyVersionFromPackageJson(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot, dependencyLookup) {
236
270
  if (typeof treeOrPackageName !== 'string') {
237
271
  return getDependencyVersionFromPackageJsonFromTree(treeOrPackageName, packageNameOrRoot, packageJsonPathOrObjectOrRoot, dependencyLookup);