nx 19.7.1 → 19.7.3

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 (52) hide show
  1. package/package.json +12 -12
  2. package/src/command-line/add/add.js +2 -2
  3. package/src/command-line/affected/command-object.js +6 -6
  4. package/src/command-line/deprecated/command-objects.js +3 -3
  5. package/src/command-line/generate/generate.js +2 -1
  6. package/src/command-line/import/command-object.js +8 -6
  7. package/src/command-line/import/import.d.ts +1 -1
  8. package/src/command-line/import/import.js +42 -27
  9. package/src/command-line/login/login.js +2 -2
  10. package/src/command-line/logout/logout.js +2 -2
  11. package/src/command-line/migrate/migrate.js +2 -2
  12. package/src/command-line/new/new.js +2 -1
  13. package/src/command-line/release/changelog.js +2 -2
  14. package/src/command-line/release/plan-check.js +2 -2
  15. package/src/command-line/release/plan.js +2 -2
  16. package/src/command-line/release/publish.js +2 -2
  17. package/src/command-line/release/release.js +2 -2
  18. package/src/command-line/release/utils/git.js +4 -2
  19. package/src/command-line/release/version.js +2 -1
  20. package/src/command-line/repair/repair.js +2 -2
  21. package/src/command-line/run/command-object.js +3 -3
  22. package/src/command-line/run/run.js +3 -2
  23. package/src/command-line/run-many/command-object.js +2 -2
  24. package/src/command-line/show/command-object.js +3 -3
  25. package/src/command-line/sync/sync.js +69 -11
  26. package/src/daemon/client/client.d.ts +3 -3
  27. package/src/daemon/server/handle-flush-sync-generator-changes-to-disk.js +2 -2
  28. package/src/daemon/server/handle-get-sync-generator-changes.js +8 -6
  29. package/src/daemon/server/sync-generators.d.ts +4 -4
  30. package/src/daemon/server/sync-generators.js +11 -2
  31. package/src/native/nx.wasm32-wasi.wasm +0 -0
  32. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +0 -1
  33. package/src/nx-cloud/utilities/get-cloud-options.d.ts +1 -0
  34. package/src/nx-cloud/utilities/get-cloud-options.js +4 -0
  35. package/src/nx-cloud/utilities/is-workspace-claimed.d.ts +1 -1
  36. package/src/nx-cloud/utilities/is-workspace-claimed.js +6 -5
  37. package/src/nx-cloud/utilities/onboarding.js +2 -2
  38. package/src/plugins/package-json/create-nodes.js +1 -1
  39. package/src/project-graph/error-types.d.ts +1 -1
  40. package/src/project-graph/error-types.js +19 -5
  41. package/src/tasks-runner/run-command.js +139 -29
  42. package/src/utils/handle-errors.d.ts +1 -0
  43. package/src/utils/handle-errors.js +71 -0
  44. package/src/utils/nx-cloud-utils.d.ts +0 -1
  45. package/src/utils/nx-cloud-utils.js +0 -10
  46. package/src/utils/package-json.d.ts +2 -1
  47. package/src/utils/package-json.js +14 -3
  48. package/src/utils/params.d.ts +0 -1
  49. package/src/utils/params.js +0 -50
  50. package/src/utils/plugins/plugin-capabilities.js +4 -1
  51. package/src/utils/sync-generators.d.ts +35 -6
  52. package/src/utils/sync-generators.js +144 -47
@@ -7,6 +7,7 @@ exports.printTargetRunHelp = printTargetRunHelp;
7
7
  exports.run = run;
8
8
  const npm_run_path_1 = require("npm-run-path");
9
9
  const params_1 = require("../../utils/params");
10
+ const handle_errors_1 = require("../../utils/handle-errors");
10
11
  const print_help_1 = require("../../utils/print-help");
11
12
  const path_1 = require("path");
12
13
  const serialize_overrides_into_command_line_1 = require("../../utils/serialize-overrides-into-command-line");
@@ -163,14 +164,14 @@ async function runExecutor(targetDescription, overrides, context) {
163
164
  }
164
165
  function printTargetRunHelp(targetDescription, root) {
165
166
  const projectGraph = (0, project_graph_1.readCachedProjectGraph)();
166
- return (0, params_1.handleErrors)(false, async () => {
167
+ return (0, handle_errors_1.handleErrors)(false, async () => {
167
168
  const projectsConfigurations = (0, project_graph_1.readProjectsConfigurationFromProjectGraph)(projectGraph);
168
169
  await printTargetRunHelpInternal(targetDescription, root, projectsConfigurations);
169
170
  });
170
171
  }
171
172
  function run(cwd, root, targetDescription, overrides, isVerbose, taskGraph) {
172
173
  const projectGraph = (0, project_graph_1.readCachedProjectGraph)();
173
- return (0, params_1.handleErrors)(isVerbose, async () => {
174
+ return (0, handle_errors_1.handleErrors)(isVerbose, async () => {
174
175
  const projectsConfigurations = (0, project_graph_1.readProjectsConfigurationFromProjectGraph)(projectGraph);
175
176
  return iteratorToProcessStatusCode(await runExecutorInternal(targetDescription, overrides, root, cwd, projectsConfigurations, (0, configuration_1.readNxJson)(), projectGraph, taskGraph, isVerbose));
176
177
  });
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.yargsRunManyCommand = void 0;
4
4
  const documentation_1 = require("../yargs-utils/documentation");
5
5
  const shared_options_1 = require("../yargs-utils/shared-options");
6
- const params_1 = require("../../utils/params");
6
+ const handle_errors_1 = require("../../utils/handle-errors");
7
7
  exports.yargsRunManyCommand = {
8
8
  command: 'run-many',
9
9
  describe: 'Run target for multiple listed projects.',
10
10
  builder: (yargs) => (0, documentation_1.linkToNxDevAndExamples)((0, shared_options_1.withRunManyOptions)((0, shared_options_1.withOutputStyleOption)((0, shared_options_1.withTargetAndConfigurationOption)((0, shared_options_1.withBatch)(yargs)))), 'run-many'),
11
11
  handler: async (args) => {
12
- const exitCode = await (0, params_1.handleErrors)(args.verbose ?? process.env.NX_VERBOSE_LOGGING === 'true', async () => {
12
+ const exitCode = await (0, handle_errors_1.handleErrors)(args.verbose ?? process.env.NX_VERBOSE_LOGGING === 'true', async () => {
13
13
  await Promise.resolve().then(() => require('./run-many')).then((m) => m.runMany((0, shared_options_1.withOverrides)(args)));
14
14
  });
15
15
  process.exit(exitCode);
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.yargsShowCommand = void 0;
4
4
  const yargs_1 = require("yargs");
5
5
  const shared_options_1 = require("../yargs-utils/shared-options");
6
- const params_1 = require("../../utils/params");
6
+ const handle_errors_1 = require("../../utils/handle-errors");
7
7
  exports.yargsShowCommand = {
8
8
  command: 'show',
9
9
  describe: 'Show information about the workspace (e.g., list of projects).',
@@ -65,7 +65,7 @@ const showProjectsCommand = {
65
65
  .example('$0 show projects --type app --affected', 'Show affected apps in the workspace')
66
66
  .example('$0 show projects --affected --exclude=*-e2e', 'Show affected projects in the workspace, excluding end-to-end projects'),
67
67
  handler: async (args) => {
68
- const exitCode = await (0, params_1.handleErrors)(args.verbose, async () => {
68
+ const exitCode = await (0, handle_errors_1.handleErrors)(args.verbose, async () => {
69
69
  const { showProjectsHandler } = await Promise.resolve().then(() => require('./projects'));
70
70
  await showProjectsHandler(args);
71
71
  });
@@ -106,7 +106,7 @@ const showProjectCommand = {
106
106
  .example('$0 show project my-app', 'View project information for my-app in JSON format')
107
107
  .example('$0 show project my-app --web', 'View project information for my-app in the browser'),
108
108
  handler: async (args) => {
109
- const exitCode = await (0, params_1.handleErrors)(args.verbose, async () => {
109
+ const exitCode = await (0, handle_errors_1.handleErrors)(args.verbose, async () => {
110
110
  const { showProjectHandler } = await Promise.resolve().then(() => require('./project'));
111
111
  await showProjectHandler(args);
112
112
  });
@@ -5,11 +5,11 @@ const ora = require("ora");
5
5
  const nx_json_1 = require("../../config/nx-json");
6
6
  const project_graph_1 = require("../../project-graph/project-graph");
7
7
  const output_1 = require("../../utils/output");
8
- const params_1 = require("../../utils/params");
8
+ const handle_errors_1 = require("../../utils/handle-errors");
9
9
  const sync_generators_1 = require("../../utils/sync-generators");
10
10
  const chalk = require("chalk");
11
11
  function syncHandler(options) {
12
- return (0, params_1.handleErrors)(options.verbose, async () => {
12
+ return (0, handle_errors_1.handleErrors)(options.verbose, async () => {
13
13
  const projectGraph = await (0, project_graph_1.createProjectGraphAsync)();
14
14
  const nxJson = (0, nx_json_1.readNxJson)();
15
15
  const syncGenerators = await (0, sync_generators_1.collectAllRegisteredSyncGenerators)(projectGraph, nxJson);
@@ -32,24 +32,82 @@ function syncHandler(options) {
32
32
  });
33
33
  return 0;
34
34
  }
35
+ const { failedGeneratorsCount, areAllResultsFailures, anySyncGeneratorsFailed, } = (0, sync_generators_1.processSyncGeneratorResultErrors)(results);
36
+ const failedSyncGeneratorsFixMessageLines = (0, sync_generators_1.getFailedSyncGeneratorsFixMessageLines)(results, options.verbose);
37
+ if (areAllResultsFailures) {
38
+ output_1.output.error({
39
+ title: `The workspace is probably out of sync because ${failedGeneratorsCount === 1
40
+ ? 'a sync generator'
41
+ : 'some sync generators'} failed to run`,
42
+ bodyLines: failedSyncGeneratorsFixMessageLines,
43
+ });
44
+ return 1;
45
+ }
46
+ const resultBodyLines = (0, sync_generators_1.getSyncGeneratorSuccessResultsMessageLines)(results);
35
47
  if (options.check) {
36
48
  output_1.output.error({
37
- title: `The workspace is out of sync`,
38
- bodyLines: (0, sync_generators_1.syncGeneratorResultsToMessageLines)(results),
49
+ title: 'The workspace is out of sync',
50
+ bodyLines: resultBodyLines,
39
51
  });
52
+ if (anySyncGeneratorsFailed) {
53
+ output_1.output.error({
54
+ title: failedGeneratorsCount === 1
55
+ ? 'A sync generator failed to run'
56
+ : 'Some sync generators failed to run',
57
+ bodyLines: failedSyncGeneratorsFixMessageLines,
58
+ });
59
+ }
40
60
  return 1;
41
61
  }
42
62
  output_1.output.warn({
43
- title: `The workspace is out of sync`,
44
- bodyLines: (0, sync_generators_1.syncGeneratorResultsToMessageLines)(results),
63
+ title: 'The workspace is out of sync',
64
+ bodyLines: resultBodyLines,
45
65
  });
46
66
  const spinner = ora('Syncing the workspace...');
47
67
  spinner.start();
48
- await (0, sync_generators_1.flushSyncGeneratorChanges)(results);
49
- spinner.succeed(`The workspace was synced successfully!
50
-
51
- Please make sure to commit the changes to your repository.
52
- `);
68
+ try {
69
+ const flushResult = await (0, sync_generators_1.flushSyncGeneratorChanges)(results);
70
+ if ('generatorFailures' in flushResult) {
71
+ spinner.fail();
72
+ output_1.output.error({
73
+ title: 'Failed to sync the workspace',
74
+ bodyLines: (0, sync_generators_1.getFlushFailureMessageLines)(flushResult, options.verbose),
75
+ });
76
+ return 1;
77
+ }
78
+ }
79
+ catch (e) {
80
+ spinner.fail();
81
+ output_1.output.error({
82
+ title: 'Failed to sync the workspace',
83
+ bodyLines: [
84
+ 'Syncing the workspace failed with the following error:',
85
+ '',
86
+ e.message,
87
+ ...(options.verbose && !!e.stack ? [`\n${e.stack}`] : []),
88
+ '',
89
+ 'Please rerun with `--verbose` and report the error at: https://github.com/nrwl/nx/issues/new/choose',
90
+ ],
91
+ });
92
+ return 1;
93
+ }
94
+ const successTitle = anySyncGeneratorsFailed
95
+ ? // the identified changes were synced successfully, but the workspace
96
+ // is still not up to date, which we'll mention next
97
+ 'The identified changes were synced successfully!'
98
+ : // the workspace is fully up to date
99
+ 'The workspace was synced successfully!';
100
+ const successSubtitle = 'Please make sure to commit the changes to your repository.';
101
+ spinner.succeed(`${successTitle}\n\n${successSubtitle}`);
102
+ if (anySyncGeneratorsFailed) {
103
+ output_1.output.error({
104
+ title: `The workspace is probably still out of sync because ${failedGeneratorsCount === 1
105
+ ? 'a sync generator'
106
+ : 'some sync generators'} failed to run`,
107
+ bodyLines: failedSyncGeneratorsFixMessageLines,
108
+ });
109
+ return 1;
110
+ }
53
111
  return 0;
54
112
  });
55
113
  }
@@ -4,7 +4,7 @@ import { Hash } from '../../hasher/task-hasher';
4
4
  import { Task, TaskGraph } from '../../config/task-graph';
5
5
  import { ConfigurationSourceMaps } from '../../project-graph/utils/project-configuration-utils';
6
6
  import { NxWorkspaceFiles, TaskRun } from '../../native';
7
- import type { SyncGeneratorChangesResult } from '../../utils/sync-generators';
7
+ import type { FlushSyncGeneratorChangesResult, SyncGeneratorRunResult } from '../../utils/sync-generators';
8
8
  export type UnregisterCallback = () => void;
9
9
  export type ChangedFile = {
10
10
  path: string;
@@ -52,8 +52,8 @@ export declare class DaemonClient {
52
52
  hashGlob(globs: string[], exclude?: string[]): Promise<string>;
53
53
  getFlakyTasks(hashes: string[]): Promise<string[]>;
54
54
  recordTaskRuns(taskRuns: TaskRun[]): Promise<void>;
55
- getSyncGeneratorChanges(generators: string[]): Promise<SyncGeneratorChangesResult[]>;
56
- flushSyncGeneratorChangesToDisk(generators: string[]): Promise<void>;
55
+ getSyncGeneratorChanges(generators: string[]): Promise<SyncGeneratorRunResult[]>;
56
+ flushSyncGeneratorChangesToDisk(generators: string[]): Promise<FlushSyncGeneratorChangesResult>;
57
57
  getRegisteredSyncGenerators(): Promise<string[]>;
58
58
  updateWorkspaceContext(createdFiles: string[], updatedFiles: string[], deletedFiles: string[]): Promise<void>;
59
59
  isServerAvailable(): Promise<boolean>;
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleFlushSyncGeneratorChangesToDisk = handleFlushSyncGeneratorChangesToDisk;
4
4
  const sync_generators_1 = require("./sync-generators");
5
5
  async function handleFlushSyncGeneratorChangesToDisk(generators) {
6
- await (0, sync_generators_1.flushSyncGeneratorChangesToDisk)(generators);
6
+ const result = await (0, sync_generators_1.flushSyncGeneratorChangesToDisk)(generators);
7
7
  return {
8
- response: '{}',
8
+ response: JSON.stringify(result),
9
9
  description: 'handleFlushSyncGeneratorChangesToDisk',
10
10
  };
11
11
  }
@@ -4,12 +4,14 @@ exports.handleGetSyncGeneratorChanges = handleGetSyncGeneratorChanges;
4
4
  const sync_generators_1 = require("./sync-generators");
5
5
  async function handleGetSyncGeneratorChanges(generators) {
6
6
  const changes = await (0, sync_generators_1.getCachedSyncGeneratorChanges)(generators);
7
- // strip out the content of the changes and any potential callback
8
- const result = changes.map((change) => ({
9
- generatorName: change.generatorName,
10
- changes: change.changes.map((c) => ({ ...c, content: null })),
11
- outOfSyncMessage: change.outOfSyncMessage,
12
- }));
7
+ const result = changes.map((change) => 'error' in change
8
+ ? change
9
+ : // strip out the content of the changes and any potential callback
10
+ {
11
+ generatorName: change.generatorName,
12
+ changes: change.changes.map((c) => ({ ...c, content: null })),
13
+ outOfSyncMessage: change.outOfSyncMessage,
14
+ });
13
15
  return {
14
16
  response: JSON.stringify(result),
15
17
  description: 'handleGetSyncGeneratorChanges',
@@ -1,10 +1,10 @@
1
1
  import type { ProjectGraph } from '../../config/project-graph';
2
- import { type SyncGeneratorChangesResult } from '../../utils/sync-generators';
3
- export declare function getCachedSyncGeneratorChanges(generators: string[]): Promise<SyncGeneratorChangesResult[]>;
4
- export declare function flushSyncGeneratorChangesToDisk(generators: string[]): Promise<void>;
2
+ import { type FlushSyncGeneratorChangesResult, type SyncGeneratorRunResult } from '../../utils/sync-generators';
3
+ export declare function getCachedSyncGeneratorChanges(generators: string[]): Promise<SyncGeneratorRunResult[]>;
4
+ export declare function flushSyncGeneratorChangesToDisk(generators: string[]): Promise<FlushSyncGeneratorChangesResult>;
5
5
  export declare function collectAndScheduleSyncGenerators(projectGraph: ProjectGraph): void;
6
6
  export declare function getCachedRegisteredSyncGenerators(): Promise<string[]>;
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export declare function _getConflictingGeneratorGroups(results: SyncGeneratorChangesResult[]): string[][];
10
+ export declare function _getConflictingGeneratorGroups(results: SyncGeneratorRunResult[]): string[][];
@@ -59,7 +59,7 @@ async function flushSyncGeneratorChangesToDisk(generators) {
59
59
  for (const generator of generators) {
60
60
  syncGeneratorsCacheResultPromises.delete(generator);
61
61
  }
62
- await (0, sync_generators_1.flushSyncGeneratorChanges)(results);
62
+ return await (0, sync_generators_1.flushSyncGeneratorChanges)(results);
63
63
  }
64
64
  function collectAndScheduleSyncGenerators(projectGraph) {
65
65
  if (!projectGraph) {
@@ -191,6 +191,7 @@ async function processConflictingGenerators(conflicts, initialResults) {
191
191
  const conflictRunResults = (await Promise.all(conflicts.map((generators) => {
192
192
  const [firstGenerator, ...generatorsToRun] = generators;
193
193
  // it must exists because the conflicts were identified from the initial results
194
+ // and it's guaranteed to be a success result
194
195
  const firstGeneratorResult = initialResults.find((r) => r.generatorName === firstGenerator);
195
196
  const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, false, `running sync generators ${generators.join(',')}`);
196
197
  // pre-apply the changes from the first generator to avoid running it
@@ -234,6 +235,9 @@ async function processConflictingGenerators(conflicts, initialResults) {
234
235
  function _getConflictingGeneratorGroups(results) {
235
236
  const changedFileToGeneratorMap = new Map();
236
237
  for (const result of results) {
238
+ if ('error' in result) {
239
+ continue;
240
+ }
237
241
  for (const change of result.changes) {
238
242
  if (!changedFileToGeneratorMap.has(change.path)) {
239
243
  changedFileToGeneratorMap.set(change.path, new Set());
@@ -318,7 +322,12 @@ function runGenerator(generator, projects, tree) {
318
322
  scheduledGenerators.delete(generator);
319
323
  tree ??= new tree_1.FsTree(workspace_root_1.workspaceRoot, false, `running sync generator ${generator}`);
320
324
  return (0, sync_generators_1.runSyncGenerator)(tree, generator, projects).then((result) => {
321
- log(generator, 'changes:', result.changes.map((c) => c.path).join(', '));
325
+ if ('error' in result) {
326
+ log(generator, 'error:', result.error.message);
327
+ }
328
+ else {
329
+ log(generator, 'changes:', result.changes.map((c) => c.path).join(', '));
330
+ }
322
331
  return result;
323
332
  });
324
333
  }
Binary file
@@ -89,7 +89,6 @@ async function connectToNxCloud(tree, schema, nxJson = (0, nx_json_1.readNxJson)
89
89
  return null;
90
90
  }
91
91
  const isGitHubDetected = schema.github ?? (await (0, url_shorten_1.repoUsesGithub)(schema.github));
92
- let responseFromCreateNxCloudWorkspaceV1;
93
92
  let responseFromCreateNxCloudWorkspaceV2;
94
93
  /**
95
94
  * Do not create an Nx Cloud token if the user is using GitHub and
@@ -2,3 +2,4 @@ import { CloudTaskRunnerOptions } from '../nx-cloud-tasks-runner-shell';
2
2
  export declare function getCloudOptions(directory?: string): CloudTaskRunnerOptions;
3
3
  export declare function getCloudUrl(): string;
4
4
  export declare function removeTrailingSlash(apiUrl: string): string;
5
+ export declare function isNxCloudId(token: string): boolean;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCloudOptions = getCloudOptions;
4
4
  exports.getCloudUrl = getCloudUrl;
5
5
  exports.removeTrailingSlash = removeTrailingSlash;
6
+ exports.isNxCloudId = isNxCloudId;
6
7
  const nx_json_1 = require("../../config/nx-json");
7
8
  const run_command_1 = require("../../tasks-runner/run-command");
8
9
  const workspace_root_1 = require("../../utils/workspace-root");
@@ -17,3 +18,6 @@ function getCloudUrl() {
17
18
  function removeTrailingSlash(apiUrl) {
18
19
  return apiUrl[apiUrl.length - 1] === '/' ? apiUrl.slice(0, -1) : apiUrl;
19
20
  }
21
+ function isNxCloudId(token) {
22
+ return token.length === 24;
23
+ }
@@ -1 +1 @@
1
- export declare function isWorkspaceClaimed(nxCloudAccessToken: any): Promise<any>;
1
+ export declare function isWorkspaceClaimed(accessToken: string): Promise<any>;
@@ -2,14 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isWorkspaceClaimed = isWorkspaceClaimed;
4
4
  const get_cloud_options_1 = require("./get-cloud-options");
5
- async function isWorkspaceClaimed(nxCloudAccessToken) {
6
- if (!nxCloudAccessToken)
5
+ async function isWorkspaceClaimed(accessToken) {
6
+ if (!accessToken)
7
7
  return false;
8
8
  const apiUrl = (0, get_cloud_options_1.getCloudUrl)();
9
9
  try {
10
- const response = await require('axios').post(`${apiUrl}/nx-cloud/is-workspace-claimed`, {
11
- nxCloudAccessToken,
12
- });
10
+ const requestData = (0, get_cloud_options_1.isNxCloudId)(accessToken)
11
+ ? { nxCloudId: accessToken }
12
+ : { nxCloudAccessToken: accessToken };
13
+ const response = await require('axios').post(`${apiUrl}/nx-cloud/is-workspace-claimed`, requestData);
13
14
  if (response.data.message) {
14
15
  return false;
15
16
  }
@@ -23,6 +23,6 @@ async function getNxCloudAppOnBoardingUrl(token) {
23
23
  }
24
24
  function readNxCloudToken(tree) {
25
25
  const nxJson = (0, devkit_exports_1.readNxJson)(tree);
26
- const { accessToken } = (0, run_command_1.getRunnerOptions)('default', nxJson, {}, true);
27
- return accessToken;
26
+ const { accessToken, nxCloudId } = (0, run_command_1.getRunnerOptions)('default', nxJson, {}, true);
27
+ return accessToken || nxCloudId;
28
28
  }
@@ -110,7 +110,7 @@ function buildProjectConfigurationFromPackageJson(packageJson, workspaceRoot, pa
110
110
  sourceRoot: projectRoot,
111
111
  name,
112
112
  ...packageJson.nx,
113
- targets: (0, package_json_1.readTargetsFromPackageJson)(packageJson),
113
+ targets: (0, package_json_1.readTargetsFromPackageJson)(packageJson, nxJson),
114
114
  tags: (0, package_json_1.getTagsFromPackageJson)(packageJson),
115
115
  metadata: (0, package_json_1.getMetadataFromPackageJson)(packageJson),
116
116
  };
@@ -18,7 +18,7 @@ export declare class ProjectGraphError extends Error {
18
18
  */
19
19
  getPartialProjectGraph(): ProjectGraph;
20
20
  getPartialSourcemaps(): ConfigurationSourceMaps;
21
- getErrors(): (AggregateCreateNodesError | MergeNodesError | CreateMetadataError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError | ProcessDependenciesError | ProcessProjectGraphError | WorkspaceValidityError)[];
21
+ getErrors(): (AggregateCreateNodesError | MergeNodesError | ProjectsWithNoNameError | MultipleProjectsWithSameNameError | CreateMetadataError | ProcessDependenciesError | ProcessProjectGraphError | WorkspaceValidityError)[];
22
22
  }
23
23
  export declare class MultipleProjectsWithSameNameError extends Error {
24
24
  conflicts: Map<string, string[]>;
@@ -24,7 +24,7 @@ class ProjectGraphError extends Error {
24
24
  tslib_1.__classPrivateFieldSet(this, _ProjectGraphError_partialProjectGraph, partialProjectGraph, "f");
25
25
  tslib_1.__classPrivateFieldSet(this, _ProjectGraphError_partialSourceMaps, partialSourceMaps, "f");
26
26
  this.stack = `${this.message}\n ${errors
27
- .map((error) => error.stack.split('\n').join('\n '))
27
+ .map((error) => indentString(formatErrorStackAndCause(error), 2))
28
28
  .join('\n')}`;
29
29
  }
30
30
  /**
@@ -186,13 +186,13 @@ class MergeNodesError extends Error {
186
186
  this.name = this.constructor.name;
187
187
  this.file = file;
188
188
  this.pluginName = pluginName;
189
- this.stack = `${this.message}\n ${error.stack.split('\n').join('\n ')}`;
189
+ this.stack = `${this.message}\n${indentString(formatErrorStackAndCause(error), 2)}`;
190
190
  }
191
191
  }
192
192
  exports.MergeNodesError = MergeNodesError;
193
193
  class CreateMetadataError extends Error {
194
194
  constructor(error, plugin) {
195
- super(`The "${plugin}" plugin threw an error while creating metadata:`, {
195
+ super(`The "${plugin}" plugin threw an error while creating metadata: ${error.message}`, {
196
196
  cause: error,
197
197
  });
198
198
  this.error = error;
@@ -203,7 +203,7 @@ class CreateMetadataError extends Error {
203
203
  exports.CreateMetadataError = CreateMetadataError;
204
204
  class ProcessDependenciesError extends Error {
205
205
  constructor(pluginName, { cause }) {
206
- super(`The "${pluginName}" plugin threw an error while creating dependencies:`, {
206
+ super(`The "${pluginName}" plugin threw an error while creating dependencies: ${cause.message}`, {
207
207
  cause,
208
208
  });
209
209
  this.pluginName = pluginName;
@@ -234,7 +234,7 @@ class ProcessProjectGraphError extends Error {
234
234
  });
235
235
  this.pluginName = pluginName;
236
236
  this.name = this.constructor.name;
237
- this.stack = `${this.message}\n ${cause.stack.split('\n').join('\n ')}`;
237
+ this.stack = `${this.message}\n${indentString(cause, 2)}`;
238
238
  }
239
239
  }
240
240
  exports.ProcessProjectGraphError = ProcessProjectGraphError;
@@ -289,3 +289,17 @@ class LoadPluginError extends Error {
289
289
  }
290
290
  }
291
291
  exports.LoadPluginError = LoadPluginError;
292
+ function indentString(str, indent) {
293
+ return (' '.repeat(indent) +
294
+ str
295
+ .split('\n')
296
+ .map((line) => ' '.repeat(indent) + line)
297
+ .join('\n'));
298
+ }
299
+ function formatErrorStackAndCause(error) {
300
+ const cause = error.cause && error.cause instanceof Error ? error.cause : null;
301
+ return (error.stack +
302
+ (cause
303
+ ? `\nCaused by: \n${indentString(cause.stack ?? cause.message, 2)}`
304
+ : ''));
305
+ }