nx 19.6.0-canary.20240730-acd9bb7 → 19.6.0-canary.20240801-2111841

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. package/package.json +12 -12
  2. package/schemas/project-schema.json +40 -6
  3. package/src/command-line/connect/connect-to-nx-cloud.d.ts +2 -0
  4. package/src/command-line/connect/connect-to-nx-cloud.js +33 -6
  5. package/src/command-line/connect/view-logs.js +5 -3
  6. package/src/command-line/init/implementation/add-nx-to-monorepo.js +1 -1
  7. package/src/command-line/init/implementation/add-nx-to-nest.js +1 -1
  8. package/src/command-line/init/implementation/add-nx-to-npm-repo.js +1 -1
  9. package/src/command-line/init/implementation/angular/index.js +1 -1
  10. package/src/command-line/init/implementation/angular/legacy-angular-versions.js +1 -1
  11. package/src/command-line/init/implementation/utils.d.ts +1 -1
  12. package/src/command-line/init/implementation/utils.js +7 -5
  13. package/src/command-line/init/init-v2.js +1 -4
  14. package/src/command-line/migrate/migrate.js +14 -6
  15. package/src/command-line/release/plan.js +2 -12
  16. package/src/command-line/release/utils/generate-version-plan-content.d.ts +1 -0
  17. package/src/command-line/release/utils/generate-version-plan-content.js +21 -0
  18. package/src/command-line/release/utils/shared.js +7 -5
  19. package/src/command-line/release/version.js +4 -2
  20. package/src/core/graph/main.js +1 -1
  21. package/src/native/nx.wasm32-wasi.wasm +0 -0
  22. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +3 -2
  23. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +18 -57
  24. package/src/nx-cloud/utilities/url-shorten.d.ts +1 -1
  25. package/src/nx-cloud/utilities/url-shorten.js +5 -7
  26. package/src/project-graph/plugins/internal-api.js +4 -1
  27. package/src/tasks-runner/task-graph-utils.js +1 -1
  28. package/src/utils/git-utils.js +3 -1
Binary file
@@ -1,10 +1,11 @@
1
1
  import { Tree } from '../../../generators/tree';
2
- interface ConnectToNxCloudOptions {
2
+ export declare function printSuccessMessage(token: string | undefined, installationSource: string, usesGithub: boolean): Promise<string>;
3
+ export interface ConnectToNxCloudOptions {
3
4
  analytics?: boolean;
4
5
  installationSource?: string;
5
6
  hideFormatLogs?: boolean;
6
7
  github?: boolean;
7
8
  directory?: string;
8
9
  }
9
- export declare function connectToNxCloud(tree: Tree, schema: ConnectToNxCloudOptions): Promise<() => void>;
10
+ export declare function connectToNxCloud(tree: Tree, schema: ConnectToNxCloudOptions): Promise<string>;
10
11
  export default connectToNxCloud;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printSuccessMessage = printSuccessMessage;
3
4
  exports.connectToNxCloud = connectToNxCloud;
4
5
  const child_process_1 = require("child_process");
5
6
  const output_1 = require("../../../utils/output");
@@ -8,8 +9,6 @@ const nx_json_1 = require("../../../generators/utils/nx-json");
8
9
  const format_changed_files_with_prettier_if_available_1 = require("../../../generators/internal-utils/format-changed-files-with-prettier-if-available");
9
10
  const url_shorten_1 = require("../../utilities/url-shorten");
10
11
  const get_cloud_options_1 = require("../../utilities/get-cloud-options");
11
- const ora = require("ora");
12
- const open = require("open");
13
12
  function printCloudConnectionDisabledMessage() {
14
13
  output_1.output.error({
15
14
  title: `Connections to Nx Cloud are disabled for this workspace`,
@@ -55,53 +54,19 @@ async function createNxCloudWorkspace(workspaceName, installationSource, nxInitD
55
54
  return response.data;
56
55
  }
57
56
  async function printSuccessMessage(token, installationSource, usesGithub) {
58
- const connectCloudUrl = await (0, url_shorten_1.shortenedCloudUrl)(installationSource, token, usesGithub);
59
- if (installationSource === 'nx-connect' && usesGithub) {
60
- try {
61
- const cloudConnectSpinner = ora(`Opening Nx Cloud ${connectCloudUrl} in your browser to connect your workspace.`).start();
62
- await sleep(2000);
63
- open(connectCloudUrl);
64
- cloudConnectSpinner.succeed();
65
- }
66
- catch (e) {
67
- output_1.output.note({
68
- title: `Your Nx Cloud workspace is ready.`,
69
- bodyLines: [
70
- `To claim it, connect it to your Nx Cloud account:`,
71
- `- Go to the following URL to connect your workspace to Nx Cloud:`,
72
- '',
73
- `${connectCloudUrl}`,
74
- ],
75
- });
76
- }
77
- }
78
- else {
79
- if (installationSource === 'create-nx-workspace') {
80
- output_1.output.note({
81
- title: `Your Nx Cloud workspace is ready.`,
82
- bodyLines: [
83
- `To claim it, connect it to your Nx Cloud account:`,
84
- `- Push your repository to your git hosting provider.`,
85
- `- Go to the following URL to connect your workspace to Nx Cloud:`,
86
- '',
87
- `${connectCloudUrl}`,
88
- ],
89
- });
90
- }
91
- else {
92
- output_1.output.note({
93
- title: `Your Nx Cloud workspace is ready.`,
94
- bodyLines: [
95
- `To claim it, connect it to your Nx Cloud account:`,
96
- `- Commit and push your changes.`,
97
- `- Create a pull request for the changes.`,
98
- `- Go to the following URL to connect your workspace to Nx Cloud:`,
99
- '',
100
- `${connectCloudUrl}`,
101
- ],
102
- });
103
- }
104
- }
57
+ const connectCloudUrl = await (0, url_shorten_1.createNxCloudOnboardingURL)(installationSource, token, usesGithub);
58
+ output_1.output.note({
59
+ title: `Your Nx Cloud workspace is ready.`,
60
+ bodyLines: [
61
+ `To claim it, connect it to your Nx Cloud account:`,
62
+ `- Commit and push your changes.`,
63
+ `- Create a pull request for the changes.`,
64
+ `- Go to the following URL to connect your workspace to Nx Cloud:`,
65
+ '',
66
+ `${connectCloudUrl}`,
67
+ ],
68
+ });
69
+ return connectCloudUrl;
105
70
  }
106
71
  function addNxCloudOptionsToNxJson(tree, nxJson, token) {
107
72
  nxJson ??= {
@@ -118,12 +83,11 @@ async function connectToNxCloud(tree, schema) {
118
83
  schema.installationSource ??= 'user';
119
84
  const nxJson = (0, nx_json_1.readNxJson)(tree);
120
85
  if (nxJson?.neverConnectToCloud) {
121
- return () => {
122
- printCloudConnectionDisabledMessage();
123
- };
86
+ printCloudConnectionDisabledMessage();
87
+ return null;
124
88
  }
125
89
  else {
126
- const usesGithub = await (0, url_shorten_1.repoUsesGithub)(schema.github);
90
+ const usesGithub = schema.github ?? (await (0, url_shorten_1.repoUsesGithub)(schema.github));
127
91
  let responseFromCreateNxCloudWorkspace;
128
92
  // do NOT create Nx Cloud token (createNxCloudWorkspace)
129
93
  // if user is using github and is running nx-connect
@@ -133,11 +97,8 @@ async function connectToNxCloud(tree, schema) {
133
97
  await (0, format_changed_files_with_prettier_if_available_1.formatChangedFilesWithPrettierIfAvailable)(tree, {
134
98
  silent: schema.hideFormatLogs,
135
99
  });
100
+ return responseFromCreateNxCloudWorkspace.token;
136
101
  }
137
- return async () => await printSuccessMessage(responseFromCreateNxCloudWorkspace?.token, schema.installationSource, usesGithub);
138
102
  }
139
103
  }
140
- function sleep(ms) {
141
- return new Promise((resolve) => setTimeout(resolve, ms));
142
- }
143
104
  exports.default = connectToNxCloud;
@@ -1,4 +1,4 @@
1
- export declare function shortenedCloudUrl(installationSource: string, accessToken?: string, usesGithub?: boolean): Promise<string>;
1
+ export declare function createNxCloudOnboardingURL(onboardingSource: string, accessToken?: string, usesGithub?: boolean, meta?: string): Promise<string>;
2
2
  export declare function repoUsesGithub(github?: boolean, githubSlug?: string, apiUrl?: string): Promise<boolean>;
3
3
  export declare function getURLifShortenFailed(usesGithub: boolean, githubSlug: string | null, apiUrl: string, source: string, accessToken?: string): string;
4
4
  export declare function getNxCloudVersion(apiUrl: string): Promise<string | null>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shortenedCloudUrl = shortenedCloudUrl;
3
+ exports.createNxCloudOnboardingURL = createNxCloudOnboardingURL;
4
4
  exports.repoUsesGithub = repoUsesGithub;
5
5
  exports.getURLifShortenFailed = getURLifShortenFailed;
6
6
  exports.getNxCloudVersion = getNxCloudVersion;
@@ -10,7 +10,7 @@ exports.compareCleanCloudVersions = compareCleanCloudVersions;
10
10
  const devkit_exports_1 = require("../../devkit-exports");
11
11
  const git_utils_1 = require("../../utils/git-utils");
12
12
  const get_cloud_options_1 = require("./get-cloud-options");
13
- async function shortenedCloudUrl(installationSource, accessToken, usesGithub) {
13
+ async function createNxCloudOnboardingURL(onboardingSource, accessToken, usesGithub, meta) {
14
14
  const githubSlug = (0, git_utils_1.getGithubSlugOrNull)();
15
15
  const apiUrl = (0, get_cloud_options_1.getCloudUrl)();
16
16
  if (usesGithub === undefined || usesGithub === null) {
@@ -28,13 +28,14 @@ async function shortenedCloudUrl(installationSource, accessToken, usesGithub) {
28
28
  ${e}`);
29
29
  return apiUrl;
30
30
  }
31
- const source = getSource(installationSource);
31
+ const source = getSource(onboardingSource);
32
32
  try {
33
33
  const response = await require('axios').post(`${apiUrl}/nx-cloud/onboarding`, {
34
34
  type: usesGithub ? 'GITHUB' : 'MANUAL',
35
35
  source,
36
36
  accessToken: usesGithub ? null : accessToken,
37
37
  selectedRepositoryName: githubSlug === 'github' ? null : githubSlug,
38
+ meta,
38
39
  });
39
40
  if (!response?.data || response.data.message) {
40
41
  throw new Error(response?.data?.message ?? 'Failed to shorten Nx Cloud URL');
@@ -67,11 +68,8 @@ function getSource(installationSource) {
67
68
  else if (installationSource.includes('nx-connect')) {
68
69
  return 'nx-connect';
69
70
  }
70
- else if (installationSource.includes('create-nx-workspace')) {
71
- return 'create-nx-workspace';
72
- }
73
71
  else {
74
- return 'other';
72
+ return installationSource;
75
73
  }
76
74
  }
77
75
  function getURLifShortenFailed(usesGithub, githubSlug, apiUrl, source, accessToken) {
@@ -13,6 +13,7 @@ const loader_1 = require("./loader");
13
13
  const utils_1 = require("./utils");
14
14
  const error_types_1 = require("../error-types");
15
15
  const native_1 = require("../../native");
16
+ const os_1 = require("os");
16
17
  class LoadedNxPlugin {
17
18
  constructor(plugin, pluginDefinition) {
18
19
  this.name = plugin.name;
@@ -74,7 +75,9 @@ exports.nxPluginCache = new Map();
74
75
  async function loadNxPlugins(plugins, root = workspace_root_1.workspaceRoot) {
75
76
  performance.mark('loadNxPlugins:start');
76
77
  const loadingMethod = process.env.NX_ISOLATE_PLUGINS === 'true' ||
77
- (!native_1.IS_WASM && process.env.NX_ISOLATE_PLUGINS !== 'false')
78
+ (!native_1.IS_WASM &&
79
+ (0, os_1.platform)() !== 'win32' &&
80
+ process.env.NX_ISOLATE_PLUGINS !== 'false')
78
81
  ? isolation_1.loadNxPluginInIsolation
79
82
  : loader_1.loadNxPlugin;
80
83
  plugins = await normalizePlugins(plugins, root);
@@ -66,7 +66,7 @@ function validateNoAtomizedTasks(taskGraph, projectGraph) {
66
66
  .filter((item, index, arr) => arr.indexOf(item) === index);
67
67
  const moreInfoLines = [
68
68
  `Please enable Nx Cloud or use the slower ${nonAtomizedTasks.join(',')} task${nonAtomizedTasks.length > 1 ? 's' : ''}.`,
69
- 'Learn more at https://nx.dev/ci/features/split-e2e-tasks#use-atomizer-only-with-nx-cloud-distribution',
69
+ 'Learn more at https://nx.dev/ci/features/split-e2e-tasks#nx-cloud-is-required-to-run-atomized-tasks',
70
70
  ];
71
71
  if (atomizedRootTasks.length === 1) {
72
72
  output_1.output.error({
@@ -8,7 +8,9 @@ const child_process_1 = require("child_process");
8
8
  const devkit_exports_1 = require("../devkit-exports");
9
9
  function getGithubSlugOrNull() {
10
10
  try {
11
- const gitRemote = (0, child_process_1.execSync)('git remote -v').toString();
11
+ const gitRemote = (0, child_process_1.execSync)('git remote -v', {
12
+ stdio: 'pipe',
13
+ }).toString();
12
14
  // If there are no remotes, we default to github
13
15
  if (!gitRemote || gitRemote.length === 0) {
14
16
  return 'github';