nx 21.0.0-beta.0 → 21.0.0-beta.2

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 (201) hide show
  1. package/.eslintrc.json +5 -1
  2. package/package.json +12 -12
  3. package/release/index.d.ts +1 -1
  4. package/release/index.js +2 -1
  5. package/schemas/nx-schema.json +186 -35
  6. package/src/adapter/compat.d.ts +1 -1
  7. package/src/adapter/compat.js +3 -0
  8. package/src/command-line/add/add.js +6 -16
  9. package/src/command-line/affected/command-object.js +6 -6
  10. package/src/command-line/examples.js +0 -4
  11. package/src/command-line/exec/command-object.js +1 -1
  12. package/src/command-line/generate/generator-utils.js +8 -3
  13. package/src/command-line/import/import.js +1 -1
  14. package/src/command-line/init/command-object.js +18 -6
  15. package/src/command-line/init/configure-plugins.d.ts +6 -7
  16. package/src/command-line/init/configure-plugins.js +47 -35
  17. package/src/command-line/init/implementation/add-nx-to-turborepo.d.ts +4 -0
  18. package/src/command-line/init/implementation/add-nx-to-turborepo.js +49 -0
  19. package/src/command-line/init/implementation/check-compatible-with-plugins.js +7 -1
  20. package/src/command-line/init/implementation/deduce-default-base.d.ts +1 -0
  21. package/src/command-line/init/implementation/deduce-default-base.js +53 -0
  22. package/src/command-line/init/implementation/react/add-vite-commands-to-package-scripts.js +6 -4
  23. package/src/command-line/init/implementation/react/index.d.ts +1 -1
  24. package/src/command-line/init/implementation/react/index.js +32 -185
  25. package/src/command-line/init/implementation/react/write-vite-config.js +19 -3
  26. package/src/command-line/init/implementation/utils.d.ts +4 -1
  27. package/src/command-line/init/implementation/utils.js +108 -44
  28. package/src/command-line/init/init-v1.js +1 -1
  29. package/src/command-line/init/init-v2.d.ts +1 -0
  30. package/src/command-line/init/init-v2.js +68 -38
  31. package/src/command-line/migrate/migrate.js +21 -18
  32. package/src/command-line/nx-commands.js +19 -5
  33. package/src/command-line/register/command-object.d.ts +6 -0
  34. package/src/command-line/{activate-powerpack → register}/command-object.js +9 -9
  35. package/src/command-line/register/register.d.ts +2 -0
  36. package/src/command-line/register/register.js +9 -0
  37. package/src/command-line/release/changelog.js +18 -15
  38. package/src/command-line/release/command-object.d.ts +2 -0
  39. package/src/command-line/release/command-object.js +9 -0
  40. package/src/command-line/release/config/config.d.ts +8 -7
  41. package/src/command-line/release/config/config.js +129 -42
  42. package/src/command-line/release/config/use-legacy-versioning.d.ts +2 -0
  43. package/src/command-line/release/config/use-legacy-versioning.js +9 -0
  44. package/src/command-line/release/index.d.ts +4 -0
  45. package/src/command-line/release/index.js +6 -1
  46. package/src/command-line/release/plan-check.js +6 -3
  47. package/src/command-line/release/plan.js +7 -3
  48. package/src/command-line/release/publish.js +7 -3
  49. package/src/command-line/release/release.js +8 -3
  50. package/src/command-line/release/utils/batch-projects-by-generator-config.js +6 -3
  51. package/src/command-line/release/utils/git.d.ts +3 -2
  52. package/src/command-line/release/utils/git.js +65 -9
  53. package/src/command-line/release/utils/github.js +3 -1
  54. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +2 -1
  55. package/src/command-line/release/utils/resolve-semver-specifier.js +2 -1
  56. package/src/command-line/release/utils/semver.d.ts +8 -0
  57. package/src/command-line/release/utils/semver.js +8 -0
  58. package/src/command-line/release/utils/shared-legacy.d.ts +25 -0
  59. package/src/command-line/release/utils/shared-legacy.js +2 -0
  60. package/src/command-line/release/utils/shared.d.ts +11 -17
  61. package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts +7 -0
  62. package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +47 -0
  63. package/src/command-line/release/version/deriver-specifier-from-version-plans.d.ts +8 -0
  64. package/src/command-line/release/version/deriver-specifier-from-version-plans.js +59 -0
  65. package/src/command-line/release/version/project-logger.d.ts +8 -0
  66. package/src/command-line/release/version/project-logger.js +45 -0
  67. package/src/command-line/release/version/release-group-processor.d.ts +251 -0
  68. package/src/command-line/release/version/release-group-processor.js +1040 -0
  69. package/src/command-line/release/version/resolve-current-version.d.ts +32 -0
  70. package/src/command-line/release/version/resolve-current-version.js +241 -0
  71. package/src/command-line/release/version/test-utils.d.ts +95 -0
  72. package/src/command-line/release/version/test-utils.js +416 -0
  73. package/src/command-line/release/version/topological-sort.d.ts +9 -0
  74. package/src/command-line/release/version/topological-sort.js +41 -0
  75. package/src/command-line/release/version/version-actions.d.ts +170 -0
  76. package/src/command-line/release/version/version-actions.js +183 -0
  77. package/src/command-line/release/version-legacy.d.ts +46 -0
  78. package/src/command-line/release/version-legacy.js +453 -0
  79. package/src/command-line/release/version.d.ts +0 -40
  80. package/src/command-line/release/version.js +80 -262
  81. package/src/command-line/report/report.d.ts +7 -3
  82. package/src/command-line/report/report.js +52 -18
  83. package/src/command-line/run/command-object.js +2 -2
  84. package/src/command-line/run/run.js +1 -1
  85. package/src/command-line/run-many/command-object.js +2 -2
  86. package/src/command-line/yargs-utils/shared-options.d.ts +4 -0
  87. package/src/command-line/yargs-utils/shared-options.js +20 -0
  88. package/src/config/nx-json.d.ts +153 -15
  89. package/src/config/project-graph.d.ts +4 -2
  90. package/src/config/project-graph.js +8 -0
  91. package/src/config/workspace-json-project-json.d.ts +2 -2
  92. package/src/core/graph/main.js +1 -1
  93. package/src/core/graph/runtime.js +1 -1
  94. package/src/core/graph/styles.css +2 -2
  95. package/src/core/graph/styles.js +1 -1
  96. package/src/daemon/client/client.d.ts +2 -0
  97. package/src/daemon/client/client.js +15 -0
  98. package/src/daemon/message-types/glob.d.ts +7 -0
  99. package/src/daemon/message-types/glob.js +9 -1
  100. package/src/daemon/message-types/hash-glob.d.ts +6 -0
  101. package/src/daemon/message-types/hash-glob.js +9 -1
  102. package/src/daemon/server/handle-glob.d.ts +1 -0
  103. package/src/daemon/server/handle-glob.js +8 -0
  104. package/src/daemon/server/handle-hash-glob.d.ts +1 -0
  105. package/src/daemon/server/handle-hash-glob.js +8 -0
  106. package/src/daemon/server/logger.js +2 -1
  107. package/src/daemon/server/server.js +7 -0
  108. package/src/devkit-internals.d.ts +2 -1
  109. package/src/devkit-internals.js +4 -1
  110. package/src/executors/run-commands/run-commands.impl.d.ts +3 -5
  111. package/src/executors/run-commands/run-commands.impl.js +14 -42
  112. package/src/executors/run-commands/running-tasks.d.ts +7 -5
  113. package/src/executors/run-commands/running-tasks.js +64 -27
  114. package/src/executors/run-script/run-script.impl.js +3 -3
  115. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +8 -0
  116. package/src/generators/testing-utils/create-tree.js +5 -1
  117. package/src/native/index.d.ts +93 -19
  118. package/src/native/native-bindings.js +6 -0
  119. package/src/native/nx.wasi-browser.js +20 -19
  120. package/src/native/nx.wasi.cjs +20 -19
  121. package/src/native/nx.wasm32-wasi.wasm +0 -0
  122. package/src/nx-cloud/nx-cloud-tasks-runner-shell.js +3 -3
  123. package/src/plugins/js/lock-file/lock-file.js +28 -13
  124. package/src/plugins/js/lock-file/utils/package-json.d.ts +1 -1
  125. package/src/plugins/js/lock-file/utils/package-json.js +2 -1
  126. package/src/plugins/js/lock-file/yarn-parser.js +85 -39
  127. package/src/plugins/js/project-graph/affected/lock-file-changes.js +1 -0
  128. package/src/plugins/js/project-graph/build-dependencies/explicit-project-dependencies.js +1 -1
  129. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts +10 -1
  130. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +59 -6
  131. package/src/plugins/js/utils/packages.js +22 -3
  132. package/src/plugins/js/utils/register.js +1 -0
  133. package/src/plugins/js/utils/typescript.js +3 -3
  134. package/src/plugins/package-json/create-nodes.js +3 -1
  135. package/src/project-graph/affected/locators/project-glob-changes.js +2 -2
  136. package/src/project-graph/error-types.js +32 -2
  137. package/src/project-graph/nx-deps-cache.js +7 -2
  138. package/src/project-graph/plugins/get-plugins.js +2 -1
  139. package/src/project-graph/plugins/in-process-loader.js +1 -1
  140. package/src/project-graph/plugins/isolation/plugin-worker.js +12 -6
  141. package/src/project-graph/plugins/loaded-nx-plugin.d.ts +2 -1
  142. package/src/project-graph/plugins/loaded-nx-plugin.js +3 -7
  143. package/src/project-graph/plugins/utils.d.ts +2 -2
  144. package/src/project-graph/plugins/utils.js +2 -2
  145. package/src/project-graph/project-graph.js +5 -2
  146. package/src/project-graph/utils/project-configuration-utils.d.ts +1 -1
  147. package/src/project-graph/utils/project-configuration-utils.js +25 -11
  148. package/src/project-graph/utils/retrieve-workspace-files.d.ts +1 -1
  149. package/src/project-graph/utils/retrieve-workspace-files.js +14 -18
  150. package/src/tasks-runner/batch/batch-messages.d.ts +2 -0
  151. package/src/tasks-runner/batch/run-batch.js +2 -3
  152. package/src/tasks-runner/cache.d.ts +20 -6
  153. package/src/tasks-runner/cache.js +104 -20
  154. package/src/tasks-runner/create-task-graph.d.ts +1 -1
  155. package/src/tasks-runner/create-task-graph.js +12 -11
  156. package/src/tasks-runner/default-tasks-runner.js +4 -13
  157. package/src/tasks-runner/forked-process-task-runner.d.ts +6 -3
  158. package/src/tasks-runner/forked-process-task-runner.js +29 -28
  159. package/src/tasks-runner/init-tasks-runner.d.ts +15 -1
  160. package/src/tasks-runner/init-tasks-runner.js +55 -2
  161. package/src/tasks-runner/is-tui-enabled.d.ts +2 -0
  162. package/src/tasks-runner/is-tui-enabled.js +58 -0
  163. package/src/tasks-runner/life-cycle.d.ts +10 -3
  164. package/src/tasks-runner/life-cycle.js +23 -2
  165. package/src/tasks-runner/life-cycles/task-history-life-cycle-old.js +7 -2
  166. package/src/tasks-runner/life-cycles/task-history-life-cycle.js +6 -1
  167. package/src/tasks-runner/life-cycles/tui-summary-life-cycle.d.ts +17 -0
  168. package/src/tasks-runner/life-cycles/tui-summary-life-cycle.js +221 -0
  169. package/src/tasks-runner/pseudo-terminal.d.ts +10 -7
  170. package/src/tasks-runner/pseudo-terminal.js +37 -35
  171. package/src/tasks-runner/run-command.d.ts +1 -0
  172. package/src/tasks-runner/run-command.js +180 -23
  173. package/src/tasks-runner/task-env.d.ts +1 -4
  174. package/src/tasks-runner/task-env.js +2 -0
  175. package/src/tasks-runner/task-orchestrator.d.ts +21 -9
  176. package/src/tasks-runner/task-orchestrator.js +126 -44
  177. package/src/tasks-runner/utils.d.ts +2 -2
  178. package/src/tasks-runner/utils.js +15 -11
  179. package/src/utils/child-process.d.ts +4 -0
  180. package/src/utils/child-process.js +23 -30
  181. package/src/utils/command-line-utils.d.ts +1 -1
  182. package/src/utils/find-matching-projects.js +2 -2
  183. package/src/utils/handle-errors.js +15 -0
  184. package/src/utils/is-ci.js +4 -1
  185. package/src/utils/is-using-prettier.d.ts +3 -0
  186. package/src/utils/is-using-prettier.js +62 -0
  187. package/src/utils/nx-key.d.ts +7 -0
  188. package/src/utils/nx-key.js +52 -0
  189. package/src/utils/package-manager.js +2 -2
  190. package/src/utils/path.js +1 -1
  191. package/src/utils/require-nx-key.d.ts +1 -0
  192. package/src/utils/require-nx-key.js +22 -0
  193. package/src/utils/workspace-context.d.ts +2 -0
  194. package/src/utils/workspace-context.js +16 -0
  195. package/src/command-line/activate-powerpack/activate-powerpack.d.ts +0 -2
  196. package/src/command-line/activate-powerpack/activate-powerpack.js +0 -34
  197. package/src/command-line/activate-powerpack/command-object.d.ts +0 -6
  198. package/src/command-line/init/implementation/react/write-craco-config.d.ts +0 -1
  199. package/src/command-line/init/implementation/react/write-craco-config.js +0 -61
  200. package/src/utils/powerpack.d.ts +0 -5
  201. package/src/utils/powerpack.js +0 -33
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SeriallyRunningTasks = exports.ParallelRunningTasks = void 0;
4
- const child_process_1 = require("child_process");
5
- const run_commands_impl_1 = require("./run-commands.impl");
6
- const path_1 = require("path");
4
+ exports.runSingleCommandWithPseudoTerminal = runSingleCommandWithPseudoTerminal;
7
5
  const chalk = require("chalk");
6
+ const child_process_1 = require("child_process");
8
7
  const npm_run_path_1 = require("npm-run-path");
9
- const task_env_1 = require("../../tasks-runner/task-env");
8
+ const path_1 = require("path");
10
9
  const treeKill = require("tree-kill");
10
+ const pseudo_terminal_1 = require("../../tasks-runner/pseudo-terminal");
11
+ const task_env_1 = require("../../tasks-runner/task-env");
12
+ const exit_codes_1 = require("../../utils/exit-codes");
13
+ const run_commands_impl_1 = require("./run-commands.impl");
11
14
  class ParallelRunningTasks {
12
- constructor(options, context) {
15
+ constructor(options, context, tuiEnabled) {
16
+ this.tuiEnabled = tuiEnabled;
13
17
  this.exitCallbacks = [];
14
18
  this.childProcesses = options.commands.map((commandConfig) => new RunningNodeProcess(commandConfig, options.color, calculateCwd(options.cwd, context), options.env ?? {}, options.readyWhenStatus, options.streamOutput, options.envFile));
15
19
  this.readyWhenStatus = options.readyWhenStatus;
@@ -93,8 +97,8 @@ class ParallelRunningTasks {
93
97
  }
94
98
  exports.ParallelRunningTasks = ParallelRunningTasks;
95
99
  class SeriallyRunningTasks {
96
- constructor(options, context, pseudoTerminal) {
97
- this.pseudoTerminal = pseudoTerminal;
100
+ constructor(options, context, tuiEnabled) {
101
+ this.tuiEnabled = tuiEnabled;
98
102
  this.terminalOutput = '';
99
103
  this.currentProcess = null;
100
104
  this.exitCallbacks = [];
@@ -132,7 +136,7 @@ class SeriallyRunningTasks {
132
136
  }
133
137
  async run(options, context) {
134
138
  for (const c of options.commands) {
135
- const childProcess = await this.createProcess(c, [], options.color, calculateCwd(options.cwd, context), options.processEnv ?? options.env ?? {}, false, options.usePty, options.streamOutput, options.tty, options.envFile);
139
+ const childProcess = await this.createProcess(c, options.color, calculateCwd(options.cwd, context), options.processEnv ?? options.env ?? {}, options.usePty, options.streamOutput, options.tty, options.envFile);
136
140
  this.currentProcess = childProcess;
137
141
  let { code, terminalOutput } = await childProcess.getResults();
138
142
  this.terminalOutput += terminalOutput;
@@ -149,18 +153,18 @@ class SeriallyRunningTasks {
149
153
  }
150
154
  }
151
155
  }
152
- async createProcess(commandConfig, readyWhenStatus = [], color, cwd, env, isParallel, usePty = true, streamOutput = true, tty, envFile) {
156
+ async createProcess(commandConfig, color, cwd, env, usePty = true, streamOutput = true, tty, envFile) {
153
157
  // The rust runCommand is always a tty, so it will not look nice in parallel and if we need prefixes
154
158
  // currently does not work properly in windows
155
- if (this.pseudoTerminal &&
156
- process.env.NX_NATIVE_COMMAND_RUNNER !== 'false' &&
159
+ if (process.env.NX_NATIVE_COMMAND_RUNNER !== 'false' &&
157
160
  !commandConfig.prefix &&
158
- readyWhenStatus.length === 0 &&
159
- !isParallel &&
160
- usePty) {
161
- return createProcessWithPseudoTty(this.pseudoTerminal, commandConfig, color, cwd, env, streamOutput, tty, envFile);
161
+ usePty &&
162
+ pseudo_terminal_1.PseudoTerminal.isSupported()) {
163
+ const pseudoTerminal = (0, pseudo_terminal_1.createPseudoTerminal)();
164
+ registerProcessListener(this, pseudoTerminal);
165
+ return createProcessWithPseudoTty(pseudoTerminal, commandConfig, color, cwd, env, streamOutput, tty, envFile);
162
166
  }
163
- return new RunningNodeProcess(commandConfig, color, cwd, env, readyWhenStatus, streamOutput, envFile);
167
+ return new RunningNodeProcess(commandConfig, color, cwd, env, [], streamOutput, envFile);
164
168
  }
165
169
  }
166
170
  exports.SeriallyRunningTasks = SeriallyRunningTasks;
@@ -254,22 +258,19 @@ class RunningNodeProcess {
254
258
  });
255
259
  }
256
260
  }
261
+ async function runSingleCommandWithPseudoTerminal(normalized, context) {
262
+ const pseudoTerminal = (0, pseudo_terminal_1.createPseudoTerminal)();
263
+ const pseudoTtyProcess = await createProcessWithPseudoTty(pseudoTerminal, normalized.commands[0], normalized.color, calculateCwd(normalized.cwd, context), normalized.env, normalized.streamOutput, pseudoTerminal ? normalized.isTTY : false, normalized.envFile);
264
+ registerProcessListener(pseudoTtyProcess, pseudoTerminal);
265
+ return pseudoTtyProcess;
266
+ }
257
267
  async function createProcessWithPseudoTty(pseudoTerminal, commandConfig, color, cwd, env, streamOutput = true, tty, envFile) {
258
- let terminalOutput = chalk.dim('> ') + commandConfig.command + '\r\n\r\n';
259
- if (streamOutput) {
260
- process.stdout.write(terminalOutput);
261
- }
262
- env = processEnv(color, cwd, env, envFile);
263
- const childProcess = pseudoTerminal.runCommand(commandConfig.command, {
268
+ return pseudoTerminal.runCommand(commandConfig.command, {
264
269
  cwd,
265
- jsEnv: env,
270
+ jsEnv: processEnv(color, cwd, env, envFile),
266
271
  quiet: !streamOutput,
267
272
  tty,
268
273
  });
269
- childProcess.onOutput((output) => {
270
- terminalOutput += output;
271
- });
272
- return childProcess;
273
274
  }
274
275
  function addColorAndPrefix(out, config) {
275
276
  if (config.prefix) {
@@ -347,3 +348,39 @@ function loadEnvVarsFile(path, env = {}) {
347
348
  throw result.error;
348
349
  }
349
350
  }
351
+ let registered = false;
352
+ function registerProcessListener(runningTask, pseudoTerminal) {
353
+ if (registered) {
354
+ return;
355
+ }
356
+ registered = true;
357
+ // When the nx process gets a message, it will be sent into the task's process
358
+ process.on('message', (message) => {
359
+ // this.publisher.publish(message.toString());
360
+ if (pseudoTerminal) {
361
+ pseudoTerminal.sendMessageToChildren(message);
362
+ }
363
+ if ('send' in runningTask) {
364
+ runningTask.send(message);
365
+ }
366
+ });
367
+ // Terminate any task processes on exit
368
+ process.on('exit', () => {
369
+ runningTask.kill();
370
+ });
371
+ process.on('SIGINT', () => {
372
+ runningTask.kill('SIGTERM');
373
+ // we exit here because we don't need to write anything to cache.
374
+ process.exit((0, exit_codes_1.signalToCode)('SIGINT'));
375
+ });
376
+ process.on('SIGTERM', () => {
377
+ runningTask.kill('SIGTERM');
378
+ // no exit here because we expect child processes to terminate which
379
+ // will store results to the cache and will terminate this process
380
+ });
381
+ process.on('SIGHUP', () => {
382
+ runningTask.kill('SIGTERM');
383
+ // no exit here because we expect child processes to terminate which
384
+ // will store results to the cache and will terminate this process
385
+ });
386
+ }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = default_1;
4
- const path = require("path");
5
- const package_manager_1 = require("../../utils/package-manager");
6
4
  const child_process_1 = require("child_process");
5
+ const path = require("path");
7
6
  const pseudo_terminal_1 = require("../../tasks-runner/pseudo-terminal");
7
+ const package_manager_1 = require("../../utils/package-manager");
8
8
  async function default_1(options, context) {
9
9
  const pm = (0, package_manager_1.getPackageManagerCommand)();
10
10
  try {
@@ -39,7 +39,7 @@ function nodeProcess(command, cwd, env) {
39
39
  });
40
40
  }
41
41
  async function ptyProcess(command, cwd, env) {
42
- const terminal = (0, pseudo_terminal_1.getPseudoTerminal)();
42
+ const terminal = (0, pseudo_terminal_1.createPseudoTerminal)();
43
43
  return new Promise((res, rej) => {
44
44
  const cp = terminal.runCommand(command, { cwd, jsEnv: env });
45
45
  cp.onExit((code) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatChangedFilesWithPrettierIfAvailable = formatChangedFilesWithPrettierIfAvailable;
4
4
  exports.formatFilesWithPrettierIfAvailable = formatFilesWithPrettierIfAvailable;
5
5
  const path = require("path");
6
+ const is_using_prettier_1 = require("../../utils/is-using-prettier");
6
7
  /**
7
8
  * Formats all the created or updated files using Prettier
8
9
  * @param tree - the file system tree
@@ -19,6 +20,13 @@ async function formatFilesWithPrettierIfAvailable(files, root, options) {
19
20
  let prettier;
20
21
  try {
21
22
  prettier = await Promise.resolve().then(() => require('prettier'));
23
+ /**
24
+ * Even after we discovered prettier in node_modules, we need to be sure that the user is intentionally using prettier
25
+ * before proceeding to format with it.
26
+ */
27
+ if (!(0, is_using_prettier_1.isUsingPrettier)(root)) {
28
+ return results;
29
+ }
22
30
  }
23
31
  catch { }
24
32
  if (!prettier) {
@@ -6,5 +6,9 @@ const tree_1 = require("../tree");
6
6
  * Creates a host for testing.
7
7
  */
8
8
  function createTree() {
9
- return new tree_1.FsTree('/virtual', false);
9
+ const tree = new tree_1.FsTree('/virtual', false);
10
+ // Allow prettier formatting to be applied to the tree for backwards compatibility within v20
11
+ // TODO: Decouple formatFiles and other formatting utilities from prettier to avoid this
12
+ tree.write('.prettierrc', '{}');
13
+ return tree;
10
14
  }
@@ -7,7 +7,23 @@ export declare class ExternalObject<T> {
7
7
  [K: symbol]: T
8
8
  }
9
9
  }
10
+ export declare class AppLifeCycle {
11
+ constructor(tasks: Array<Task>, pinnedTasks: Array<string>, tuiCliArgs: TuiCliArgs, tuiConfig: TuiConfig, titleText: string)
12
+ startCommand(threadCount?: number | undefined | null): void
13
+ scheduleTask(task: Task): void
14
+ startTasks(tasks: Array<Task>, metadata: object): void
15
+ printTaskTerminalOutput(task: Task, status: string, output: string): void
16
+ endTasks(taskResults: Array<TaskResult>, metadata: object): void
17
+ endCommand(): void
18
+ __init(doneCallback: () => any): void
19
+ registerRunningTask(taskId: string, parserAndWriter: ExternalObject<[ParserArc, WriterArc]>): void
20
+ setTaskStatus(taskId: string, status: TaskStatus): void
21
+ registerForcedShutdownCallback(forcedShutdownCallback: () => any): void
22
+ __setCloudMessage(message: string): Promise<void>
23
+ }
24
+
10
25
  export declare class ChildProcess {
26
+ getParserAndWriter(): ExternalObject<[ParserArc, WriterArc]>
11
27
  kill(): void
12
28
  onExit(callback: (message: string) => void): void
13
29
  onOutput(callback: (message: string) => void): void
@@ -26,7 +42,13 @@ export declare class FileLock {
26
42
  export declare class HashPlanner {
27
43
  constructor(nxJson: NxJson, projectGraph: ExternalObject<ProjectGraph>)
28
44
  getPlans(taskIds: Array<string>, taskGraph: TaskGraph): Record<string, string[]>
29
- getPlansReference(taskIds: Array<string>, taskGraph: TaskGraph): JsExternal
45
+ getPlansReference(taskIds: Array<string>, taskGraph: TaskGraph): ExternalObject<Record<string, Array<HashInstruction>>>
46
+ }
47
+
48
+ export declare class HttpRemoteCache {
49
+ constructor()
50
+ retrieve(hash: string, cacheDirectory: string): Promise<CachedResult | null>
51
+ store(hash: string, cacheDirectory: string, terminalOutput: string, code: number): Promise<boolean>
30
52
  }
31
53
 
32
54
  export declare class ImportResult {
@@ -38,12 +60,13 @@ export declare class ImportResult {
38
60
 
39
61
  export declare class NxCache {
40
62
  cacheDirectory: string
41
- constructor(workspaceRoot: string, cachePath: string, dbConnection: ExternalObject<NxDbConnection>, linkTaskDetails?: boolean | undefined | null)
63
+ constructor(workspaceRoot: string, cachePath: string, dbConnection: ExternalObject<NxDbConnection>, linkTaskDetails?: boolean | undefined | null, maxCacheSize?: number | undefined | null)
42
64
  get(hash: string): CachedResult | null
43
65
  put(hash: string, terminalOutput: string, outputs: Array<string>, code: number): void
44
- applyRemoteCacheResults(hash: string, result: CachedResult): void
66
+ applyRemoteCacheResults(hash: string, result: CachedResult, outputs?: Array<string> | undefined | null): void
45
67
  getTaskOutputsPath(hash: string): string
46
- copyFilesFromCache(cachedResult: CachedResult, outputs: Array<string>): void
68
+ getCacheSize(): number
69
+ copyFilesFromCache(cachedResult: CachedResult, outputs: Array<string>): number
47
70
  removeOldCacheRecords(): void
48
71
  checkCacheFsInSync(): boolean
49
72
  }
@@ -55,6 +78,13 @@ export declare class NxTaskHistory {
55
78
  getEstimatedTaskTimings(targets: Array<TaskTarget>): Record<string, number>
56
79
  }
57
80
 
81
+ export declare class RunningTasksService {
82
+ constructor(db: ExternalObject<NxDbConnection>)
83
+ getRunningTasks(ids: Array<string>): Array<string>
84
+ addRunningTask(taskId: string): void
85
+ removeRunningTask(taskId: string): void
86
+ }
87
+
58
88
  export declare class RustPseudoTerminal {
59
89
  constructor()
60
90
  runCommand(command: string, commandDir?: string | undefined | null, jsEnv?: Record<string, string> | undefined | null, execArgv?: Array<string> | undefined | null, quiet?: boolean | undefined | null, tty?: boolean | undefined | null): ChildProcess
@@ -94,6 +124,14 @@ export declare class WorkspaceContext {
94
124
  constructor(workspaceRoot: string, cacheDir: string)
95
125
  getWorkspaceFiles(projectRootMap: Record<string, string>): NxWorkspaceFiles
96
126
  glob(globs: Array<string>, exclude?: Array<string> | undefined | null): Array<string>
127
+ /**
128
+ * Performs multiple glob pattern matches against workspace files in parallel
129
+ * @returns An array of arrays, where each inner array contains the file paths
130
+ * that matched the corresponding glob pattern in the input. The outer array maintains the same order
131
+ * as the input globs.
132
+ */
133
+ multiGlob(globs: Array<string>, exclude?: Array<string> | undefined | null): Array<Array<string>>
134
+ hashFilesMatchingGlobs(globGroups: Array<Array<string>>): Array<string>
97
135
  hashFilesMatchingGlob(globs: Array<string>, exclude?: Array<string> | undefined | null): string
98
136
  incrementalUpdate(updatedFiles: Array<string>, deletedFiles: Array<string>): Record<string, string>
99
137
  updateProjectFiles(projectRootMappings: ProjectRootMappings, projectFiles: ExternalObject<ProjectFiles>, globalFiles: ExternalObject<Array<FileData>>, updatedFiles: Record<string, string>, deletedFiles: Array<string>): UpdatedWorkspaceFiles
@@ -103,15 +141,16 @@ export declare class WorkspaceContext {
103
141
 
104
142
  export interface CachedResult {
105
143
  code: number
106
- terminalOutput: string
144
+ terminalOutput?: string
107
145
  outputsPath: string
146
+ size?: number
108
147
  }
109
148
 
110
- export declare export function closeDbConnection(connection: ExternalObject<NxDbConnection>): void
149
+ export declare export declare function closeDbConnection(connection: ExternalObject<NxDbConnection>): void
111
150
 
112
- export declare export function connectToNxDb(cacheDir: string, nxVersion: string, dbName?: string | undefined | null): ExternalObject<NxDbConnection>
151
+ export declare export declare function connectToNxDb(cacheDir: string, nxVersion: string, dbName?: string | undefined | null): ExternalObject<NxDbConnection>
113
152
 
114
- export declare export function copy(src: string, dest: string): void
153
+ export declare export declare function copy(src: string, dest: string): number
115
154
 
116
155
  export interface DepsOutputsInput {
117
156
  dependentTasksOutputFiles: string
@@ -128,7 +167,7 @@ export declare const enum EventType {
128
167
  create = 'create'
129
168
  }
130
169
 
131
- export declare export function expandOutputs(directory: string, entries: Array<string>): Array<string>
170
+ export declare export declare function expandOutputs(directory: string, entries: Array<string>): Array<string>
132
171
 
133
172
  export interface ExternalDependenciesInput {
134
173
  externalDependencies: Array<string>
@@ -154,19 +193,21 @@ export interface FileSetInput {
154
193
  fileset: string
155
194
  }
156
195
 
157
- export declare export function findImports(projectFileMap: Record<string, Array<string>>): Array<ImportResult>
196
+ export declare export declare function findImports(projectFileMap: Record<string, Array<string>>): Array<ImportResult>
197
+
198
+ export declare export declare function getBinaryTarget(): string
158
199
 
159
- export declare export function getBinaryTarget(): string
200
+ export declare export declare function getDefaultMaxCacheSize(cachePath: string): number
160
201
 
161
202
  /**
162
203
  * Expands the given outputs into a list of existing files.
163
204
  * This is used when hashing outputs
164
205
  */
165
- export declare export function getFilesForOutputs(directory: string, entries: Array<string>): Array<string>
206
+ export declare export declare function getFilesForOutputs(directory: string, entries: Array<string>): Array<string>
166
207
 
167
- export declare export function getTransformableOutputs(outputs: Array<string>): Array<string>
208
+ export declare export declare function getTransformableOutputs(outputs: Array<string>): Array<string>
168
209
 
169
- export declare export function hashArray(input: Array<string>): string
210
+ export declare export declare function hashArray(input: Array<string | undefined | null>): string
170
211
 
171
212
  export interface HashDetails {
172
213
  value: string
@@ -184,7 +225,7 @@ export interface HasherOptions {
184
225
  selectivelyHashTsConfig: boolean
185
226
  }
186
227
 
187
- export declare export function hashFile(file: string): string | null
228
+ export declare export declare function hashFile(file: string): string | null
188
229
 
189
230
  export interface InputsInput {
190
231
  input: string
@@ -224,7 +265,9 @@ export interface ProjectGraph {
224
265
  externalNodes: Record<string, ExternalNode>
225
266
  }
226
267
 
227
- export declare export function remove(src: string): void
268
+ export declare export declare function remove(src: string): void
269
+
270
+ export declare export declare function restoreTerminal(): void
228
271
 
229
272
  export interface RuntimeInput {
230
273
  runtime: string
@@ -244,6 +287,9 @@ export interface Task {
244
287
  target: TaskTarget
245
288
  outputs: Array<string>
246
289
  projectRoot?: string
290
+ startTime?: number
291
+ endTime?: number
292
+ continuous?: boolean
247
293
  }
248
294
 
249
295
  export interface TaskGraph {
@@ -252,6 +298,13 @@ export interface TaskGraph {
252
298
  dependencies: Record<string, Array<string>>
253
299
  }
254
300
 
301
+ export interface TaskResult {
302
+ task: Task
303
+ status: string
304
+ code: number
305
+ terminalOutput?: string
306
+ }
307
+
255
308
  export interface TaskRun {
256
309
  hash: string
257
310
  status: string
@@ -260,26 +313,47 @@ export interface TaskRun {
260
313
  end: number
261
314
  }
262
315
 
316
+ export declare const enum TaskStatus {
317
+ Success = 0,
318
+ Failure = 1,
319
+ Skipped = 2,
320
+ LocalCacheKeptExisting = 3,
321
+ LocalCache = 4,
322
+ RemoteCache = 5,
323
+ NotStarted = 6,
324
+ InProgress = 7,
325
+ Shared = 8
326
+ }
327
+
263
328
  export interface TaskTarget {
264
329
  project: string
265
330
  target: string
266
331
  configuration?: string
267
332
  }
268
333
 
269
- export declare export function testOnlyTransferFileMap(projectFiles: Record<string, Array<FileData>>, nonProjectFiles: Array<FileData>): NxWorkspaceFilesExternals
334
+ export declare export declare function testOnlyTransferFileMap(projectFiles: Record<string, Array<FileData>>, nonProjectFiles: Array<FileData>): NxWorkspaceFilesExternals
270
335
 
271
336
  /**
272
337
  * Transfer the project graph from the JS world to the Rust world, so that we can pass the project graph via memory quicker
273
338
  * This wont be needed once the project graph is created in Rust
274
339
  */
275
- export declare export function transferProjectGraph(projectGraph: ProjectGraph): ExternalObject<ProjectGraph>
340
+ export declare export declare function transferProjectGraph(projectGraph: ProjectGraph): ExternalObject<ProjectGraph>
341
+
342
+ export interface TuiCliArgs {
343
+ targets?: string[] | undefined
344
+ tuiAutoExit?: boolean | number | undefined
345
+ }
346
+
347
+ export interface TuiConfig {
348
+ autoExit?: boolean | number | undefined
349
+ }
276
350
 
277
351
  export interface UpdatedWorkspaceFiles {
278
352
  fileMap: FileMap
279
353
  externalReferences: NxWorkspaceFilesExternals
280
354
  }
281
355
 
282
- export declare export function validateOutputs(outputs: Array<string>): void
356
+ export declare export declare function validateOutputs(outputs: Array<string>): void
283
357
 
284
358
  export interface WatchEvent {
285
359
  path: string
@@ -361,12 +361,15 @@ if (!nativeBinding) {
361
361
  throw new Error(`Failed to load native binding`)
362
362
  }
363
363
 
364
+ module.exports.AppLifeCycle = nativeBinding.AppLifeCycle
364
365
  module.exports.ChildProcess = nativeBinding.ChildProcess
365
366
  module.exports.FileLock = nativeBinding.FileLock
366
367
  module.exports.HashPlanner = nativeBinding.HashPlanner
368
+ module.exports.HttpRemoteCache = nativeBinding.HttpRemoteCache
367
369
  module.exports.ImportResult = nativeBinding.ImportResult
368
370
  module.exports.NxCache = nativeBinding.NxCache
369
371
  module.exports.NxTaskHistory = nativeBinding.NxTaskHistory
372
+ module.exports.RunningTasksService = nativeBinding.RunningTasksService
370
373
  module.exports.RustPseudoTerminal = nativeBinding.RustPseudoTerminal
371
374
  module.exports.TaskDetails = nativeBinding.TaskDetails
372
375
  module.exports.TaskHasher = nativeBinding.TaskHasher
@@ -379,12 +382,15 @@ module.exports.EventType = nativeBinding.EventType
379
382
  module.exports.expandOutputs = nativeBinding.expandOutputs
380
383
  module.exports.findImports = nativeBinding.findImports
381
384
  module.exports.getBinaryTarget = nativeBinding.getBinaryTarget
385
+ module.exports.getDefaultMaxCacheSize = nativeBinding.getDefaultMaxCacheSize
382
386
  module.exports.getFilesForOutputs = nativeBinding.getFilesForOutputs
383
387
  module.exports.getTransformableOutputs = nativeBinding.getTransformableOutputs
384
388
  module.exports.hashArray = nativeBinding.hashArray
385
389
  module.exports.hashFile = nativeBinding.hashFile
386
390
  module.exports.IS_WASM = nativeBinding.IS_WASM
387
391
  module.exports.remove = nativeBinding.remove
392
+ module.exports.restoreTerminal = nativeBinding.restoreTerminal
393
+ module.exports.TaskStatus = nativeBinding.TaskStatus
388
394
  module.exports.testOnlyTransferFileMap = nativeBinding.testOnlyTransferFileMap
389
395
  module.exports.transferProjectGraph = nativeBinding.transferProjectGraph
390
396
  module.exports.validateOutputs = nativeBinding.validateOutputs
@@ -76,25 +76,26 @@ function __napi_rs_initialize_modules(__napiInstance) {
76
76
  __napiInstance.exports['__napi_register__TaskHasher_impl_27']?.()
77
77
  __napiInstance.exports['__napi_register__Task_struct_28']?.()
78
78
  __napiInstance.exports['__napi_register__TaskTarget_struct_29']?.()
79
- __napiInstance.exports['__napi_register__TaskGraph_struct_30']?.()
80
- __napiInstance.exports['__napi_register__FileData_struct_31']?.()
81
- __napiInstance.exports['__napi_register__InputsInput_struct_32']?.()
82
- __napiInstance.exports['__napi_register__FileSetInput_struct_33']?.()
83
- __napiInstance.exports['__napi_register__RuntimeInput_struct_34']?.()
84
- __napiInstance.exports['__napi_register__EnvironmentInput_struct_35']?.()
85
- __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_36']?.()
86
- __napiInstance.exports['__napi_register__DepsOutputsInput_struct_37']?.()
87
- __napiInstance.exports['__napi_register__NxJson_struct_38']?.()
88
- __napiInstance.exports['__napi_register__FileLock_struct_39']?.()
89
- __napiInstance.exports['__napi_register__FileLock_impl_41']?.()
90
- __napiInstance.exports['__napi_register__WorkspaceContext_struct_42']?.()
91
- __napiInstance.exports['__napi_register__WorkspaceContext_impl_51']?.()
92
- __napiInstance.exports['__napi_register__WorkspaceErrors_52']?.()
93
- __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_53']?.()
94
- __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_54']?.()
95
- __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_55']?.()
96
- __napiInstance.exports['__napi_register__FileMap_struct_56']?.()
97
- __napiInstance.exports['__napi_register____test_only_transfer_file_map_57']?.()
79
+ __napiInstance.exports['__napi_register__TaskResult_struct_30']?.()
80
+ __napiInstance.exports['__napi_register__TaskGraph_struct_31']?.()
81
+ __napiInstance.exports['__napi_register__FileData_struct_32']?.()
82
+ __napiInstance.exports['__napi_register__InputsInput_struct_33']?.()
83
+ __napiInstance.exports['__napi_register__FileSetInput_struct_34']?.()
84
+ __napiInstance.exports['__napi_register__RuntimeInput_struct_35']?.()
85
+ __napiInstance.exports['__napi_register__EnvironmentInput_struct_36']?.()
86
+ __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_37']?.()
87
+ __napiInstance.exports['__napi_register__DepsOutputsInput_struct_38']?.()
88
+ __napiInstance.exports['__napi_register__NxJson_struct_39']?.()
89
+ __napiInstance.exports['__napi_register__FileLock_struct_40']?.()
90
+ __napiInstance.exports['__napi_register__FileLock_impl_42']?.()
91
+ __napiInstance.exports['__napi_register__WorkspaceContext_struct_43']?.()
92
+ __napiInstance.exports['__napi_register__WorkspaceContext_impl_54']?.()
93
+ __napiInstance.exports['__napi_register__WorkspaceErrors_55']?.()
94
+ __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_56']?.()
95
+ __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_57']?.()
96
+ __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_58']?.()
97
+ __napiInstance.exports['__napi_register__FileMap_struct_59']?.()
98
+ __napiInstance.exports['__napi_register____test_only_transfer_file_map_60']?.()
98
99
  }
99
100
  export const FileLock = __napiModule.exports.FileLock
100
101
  export const HashPlanner = __napiModule.exports.HashPlanner
@@ -107,25 +107,26 @@ function __napi_rs_initialize_modules(__napiInstance) {
107
107
  __napiInstance.exports['__napi_register__TaskHasher_impl_27']?.()
108
108
  __napiInstance.exports['__napi_register__Task_struct_28']?.()
109
109
  __napiInstance.exports['__napi_register__TaskTarget_struct_29']?.()
110
- __napiInstance.exports['__napi_register__TaskGraph_struct_30']?.()
111
- __napiInstance.exports['__napi_register__FileData_struct_31']?.()
112
- __napiInstance.exports['__napi_register__InputsInput_struct_32']?.()
113
- __napiInstance.exports['__napi_register__FileSetInput_struct_33']?.()
114
- __napiInstance.exports['__napi_register__RuntimeInput_struct_34']?.()
115
- __napiInstance.exports['__napi_register__EnvironmentInput_struct_35']?.()
116
- __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_36']?.()
117
- __napiInstance.exports['__napi_register__DepsOutputsInput_struct_37']?.()
118
- __napiInstance.exports['__napi_register__NxJson_struct_38']?.()
119
- __napiInstance.exports['__napi_register__FileLock_struct_39']?.()
120
- __napiInstance.exports['__napi_register__FileLock_impl_41']?.()
121
- __napiInstance.exports['__napi_register__WorkspaceContext_struct_42']?.()
122
- __napiInstance.exports['__napi_register__WorkspaceContext_impl_51']?.()
123
- __napiInstance.exports['__napi_register__WorkspaceErrors_52']?.()
124
- __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_53']?.()
125
- __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_54']?.()
126
- __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_55']?.()
127
- __napiInstance.exports['__napi_register__FileMap_struct_56']?.()
128
- __napiInstance.exports['__napi_register____test_only_transfer_file_map_57']?.()
110
+ __napiInstance.exports['__napi_register__TaskResult_struct_30']?.()
111
+ __napiInstance.exports['__napi_register__TaskGraph_struct_31']?.()
112
+ __napiInstance.exports['__napi_register__FileData_struct_32']?.()
113
+ __napiInstance.exports['__napi_register__InputsInput_struct_33']?.()
114
+ __napiInstance.exports['__napi_register__FileSetInput_struct_34']?.()
115
+ __napiInstance.exports['__napi_register__RuntimeInput_struct_35']?.()
116
+ __napiInstance.exports['__napi_register__EnvironmentInput_struct_36']?.()
117
+ __napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_37']?.()
118
+ __napiInstance.exports['__napi_register__DepsOutputsInput_struct_38']?.()
119
+ __napiInstance.exports['__napi_register__NxJson_struct_39']?.()
120
+ __napiInstance.exports['__napi_register__FileLock_struct_40']?.()
121
+ __napiInstance.exports['__napi_register__FileLock_impl_42']?.()
122
+ __napiInstance.exports['__napi_register__WorkspaceContext_struct_43']?.()
123
+ __napiInstance.exports['__napi_register__WorkspaceContext_impl_54']?.()
124
+ __napiInstance.exports['__napi_register__WorkspaceErrors_55']?.()
125
+ __napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_56']?.()
126
+ __napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_57']?.()
127
+ __napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_58']?.()
128
+ __napiInstance.exports['__napi_register__FileMap_struct_59']?.()
129
+ __napiInstance.exports['__napi_register____test_only_transfer_file_map_60']?.()
129
130
  }
130
131
  module.exports.FileLock = __napiModule.exports.FileLock
131
132
  module.exports.HashPlanner = __napiModule.exports.HashPlanner
Binary file
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.nxCloudTasksRunnerShell = void 0;
4
- const resolution_helpers_1 = require("./resolution-helpers");
5
- const update_manager_1 = require("./update-manager");
6
4
  const default_tasks_runner_1 = require("../tasks-runner/default-tasks-runner");
7
5
  const output_1 = require("../utils/output");
6
+ const resolution_helpers_1 = require("./resolution-helpers");
7
+ const update_manager_1 = require("./update-manager");
8
8
  const nxCloudTasksRunnerShell = async (tasks, options, context) => {
9
9
  try {
10
10
  const { nxCloudClient, version } = await (0, update_manager_1.verifyOrUpdateNxCloudClient)(options);
@@ -27,7 +27,7 @@ const nxCloudTasksRunnerShell = async (tasks, options, context) => {
27
27
  if (e instanceof update_manager_1.NxCloudEnterpriseOutdatedError) {
28
28
  output_1.output.warn({
29
29
  title: e.message,
30
- bodyLines: ['Nx Cloud will not used for this command.', ...body],
30
+ bodyLines: ['Nx Cloud will not be used for this command.', ...body],
31
31
  });
32
32
  }
33
33
  const results = await (0, default_tasks_runner_1.defaultTasksRunner)(tasks, options, context);