nx 19.6.0-canary.20240813-c72ba9b → 19.6.0-rc.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -146,7 +146,7 @@ async function processFilesAndCreateAndSerializeProjectGraph(plugins) {
146
146
  perf_hooks_1.performance.mark('hash-watched-changes-start');
147
147
  const updatedFiles = [...collectedUpdatedFiles.values()];
148
148
  const deletedFiles = [...collectedDeletedFiles.values()];
149
- let updatedFileHashes = (0, workspace_context_1.updateFilesInContext)(updatedFiles, deletedFiles);
149
+ let updatedFileHashes = (0, workspace_context_1.updateFilesInContext)(workspace_root_1.workspaceRoot, updatedFiles, deletedFiles);
150
150
  perf_hooks_1.performance.mark('hash-watched-changes-end');
151
151
  perf_hooks_1.performance.measure('hash changed files from watcher', 'hash-watched-changes-start', 'hash-watched-changes-end');
152
152
  logger_1.serverLogger.requestLog(`Updated workspace context based on watched changes, recomputing project graph...`);
Binary file
@@ -225,7 +225,7 @@ async function createProjectGraphAndSourceMapsAsync(opts = {
225
225
  return projectGraphAndSourceMaps;
226
226
  }
227
227
  catch (e) {
228
- if (e.message.indexOf('inotify_add_watch') > -1) {
228
+ if (e.message && e.message.indexOf('inotify_add_watch') > -1) {
229
229
  // common errors with the daemon due to OS settings (cannot watch all the files available)
230
230
  output_1.output.note({
231
231
  title: `Unable to start Nx Daemon due to the limited amount of inotify watches, continuing without the daemon.`,
@@ -118,9 +118,6 @@ async function runCommand(projectsToRun, currentProjectGraph, { nxJson }, nxArgs
118
118
  }
119
119
  async function ensureWorkspaceIsInSyncAndGetGraphs(projectGraph, nxJson, projectNames, nxArgs, overrides, extraTargetDependencies, extraOptions) {
120
120
  let taskGraph = createTaskGraphAndRunValidations(projectGraph, extraTargetDependencies ?? {}, projectNames, nxArgs, overrides, extraOptions);
121
- if (process.env.NX_ENABLE_SYNC_GENERATORS !== 'true') {
122
- return { projectGraph, taskGraph };
123
- }
124
121
  // collect unique syncGenerators from the tasks
125
122
  const uniqueSyncGenerators = new Set();
126
123
  for (const { target } of Object.values(taskGraph.tasks)) {
@@ -143,7 +140,7 @@ async function ensureWorkspaceIsInSyncAndGetGraphs(projectGraph, nxJson, project
143
140
  return { projectGraph, taskGraph };
144
141
  }
145
142
  const outOfSyncTitle = 'The workspace is out of sync';
146
- const resultBodyLines = (0, sync_generators_1.syncGeneratorResultsToMessageLines)(results);
143
+ const resultBodyLines = [...(0, sync_generators_1.syncGeneratorResultsToMessageLines)(results), ''];
147
144
  const fixMessage = 'You can manually run `nx sync` to update your workspace or you can set `sync.applyChanges` to `true` in your `nx.json` to apply the changes automatically when running tasks.';
148
145
  const willErrorOnCiMessage = 'Please note that this will be an error on CI.';
149
146
  if ((0, is_ci_1.isCI)() || !process.stdout.isTTY) {
@@ -211,23 +208,28 @@ Please make sure to commit the changes to your repository.`);
211
208
  return { projectGraph, taskGraph };
212
209
  }
213
210
  async function promptForApplyingSyncGeneratorChanges() {
214
- const promptConfig = {
215
- name: 'applyChanges',
216
- type: 'select',
217
- message: 'Would you like to sync the changes to get your worskpace up to date?',
218
- choices: [
219
- {
220
- name: 'yes',
221
- message: 'Yes, sync the changes and run the tasks',
222
- },
223
- {
224
- name: 'no',
225
- message: 'No, run the tasks without syncing the changes',
226
- },
227
- ],
228
- footer: () => chalk.dim('\nYou can skip this prompt by setting the `sync.applyChanges` option in your `nx.json`.'),
229
- };
230
- return await (0, enquirer_1.prompt)([promptConfig]).then(({ applyChanges }) => applyChanges === 'yes');
211
+ try {
212
+ const promptConfig = {
213
+ name: 'applyChanges',
214
+ type: 'select',
215
+ message: 'Would you like to sync the changes to get your worskpace up to date?',
216
+ choices: [
217
+ {
218
+ name: 'yes',
219
+ message: 'Yes, sync the changes and run the tasks',
220
+ },
221
+ {
222
+ name: 'no',
223
+ message: 'No, run the tasks without syncing the changes',
224
+ },
225
+ ],
226
+ footer: () => chalk.dim('\nYou can skip this prompt by setting the `sync.applyChanges` option in your `nx.json`.'),
227
+ };
228
+ return await (0, enquirer_1.prompt)([promptConfig]).then(({ applyChanges }) => applyChanges === 'yes');
229
+ }
230
+ catch {
231
+ process.exit(1);
232
+ }
231
233
  }
232
234
  function setEnvVarsBasedOnArgs(nxArgs, loadDotEnvFiles) {
233
235
  if (nxArgs.outputStyle == 'stream' ||
@@ -103,7 +103,6 @@ function syncGeneratorResultsToMessageLines(results) {
103
103
  if (result.outOfSyncMessage) {
104
104
  messageLines.push(result.outOfSyncMessage);
105
105
  }
106
- messageLines.push('');
107
106
  }
108
107
  return messageLines;
109
108
  }
@@ -130,7 +129,7 @@ async function flushSyncGeneratorChangesToDisk(results) {
130
129
  }
131
130
  }
132
131
  // Update the context files
133
- await (0, workspace_context_1.updateContextWithChangedFiles)(createdFiles, updatedFiles, deletedFiles);
132
+ await (0, workspace_context_1.updateContextWithChangedFiles)(workspace_root_1.workspaceRoot, createdFiles, updatedFiles, deletedFiles);
134
133
  perf_hooks_1.performance.mark('flush-sync-generator-changes-to-disk:end');
135
134
  perf_hooks_1.performance.measure('flush sync generator changes to disk', 'flush-sync-generator-changes-to-disk:start', 'flush-sync-generator-changes-to-disk:end');
136
135
  }
@@ -11,8 +11,8 @@ export declare function getNxWorkspaceFilesFromContext(workspaceRoot: string, pr
11
11
  export declare function globWithWorkspaceContextSync(workspaceRoot: string, globs: string[], exclude?: string[]): string[];
12
12
  export declare function globWithWorkspaceContext(workspaceRoot: string, globs: string[], exclude?: string[]): Promise<string[]>;
13
13
  export declare function hashWithWorkspaceContext(workspaceRoot: string, globs: string[], exclude?: string[]): Promise<string>;
14
- export declare function updateContextWithChangedFiles(createdFiles: string[], updatedFiles: string[], deletedFiles: string[]): Promise<void>;
15
- export declare function updateFilesInContext(updatedFiles: string[], deletedFiles: string[]): Record<string, string>;
14
+ export declare function updateContextWithChangedFiles(workspaceRoot: string, createdFiles: string[], updatedFiles: string[], deletedFiles: string[]): Promise<void>;
15
+ export declare function updateFilesInContext(workspaceRoot: string, updatedFiles: string[], deletedFiles: string[]): Record<string, string>;
16
16
  export declare function getAllFileDataInContext(workspaceRoot: string): Promise<import("../native").FileData[]>;
17
17
  export declare function getFilesInDirectoryUsingContext(workspaceRoot: string, dir: string): Promise<string[]>;
18
18
  export declare function updateProjectFiles(projectRootMappings: Record<string, string>, rustReferences: NxWorkspaceFilesExternals, updatedFiles: Record<string, string>, deletedFiles: string[]): import("../native").UpdatedWorkspaceFiles;
@@ -57,9 +57,9 @@ async function hashWithWorkspaceContext(workspaceRoot, globs, exclude) {
57
57
  }
58
58
  return client_1.daemonClient.hashGlob(globs, exclude);
59
59
  }
60
- async function updateContextWithChangedFiles(createdFiles, updatedFiles, deletedFiles) {
60
+ async function updateContextWithChangedFiles(workspaceRoot, createdFiles, updatedFiles, deletedFiles) {
61
61
  if (!client_1.daemonClient.enabled()) {
62
- updateFilesInContext([...createdFiles, ...updatedFiles], deletedFiles);
62
+ updateFilesInContext(workspaceRoot, [...createdFiles, ...updatedFiles], deletedFiles);
63
63
  }
64
64
  else if ((0, is_on_daemon_1.isOnDaemon)()) {
65
65
  // make sure to only import this when running on the daemon
@@ -72,7 +72,8 @@ async function updateContextWithChangedFiles(createdFiles, updatedFiles, deleted
72
72
  await client_1.daemonClient.updateWorkspaceContext(createdFiles, updatedFiles, deletedFiles);
73
73
  }
74
74
  }
75
- function updateFilesInContext(updatedFiles, deletedFiles) {
75
+ function updateFilesInContext(workspaceRoot, updatedFiles, deletedFiles) {
76
+ ensureContextAvailable(workspaceRoot);
76
77
  return workspaceContext?.incrementalUpdate(updatedFiles, deletedFiles);
77
78
  }
78
79
  async function getAllFileDataInContext(workspaceRoot) {