nx 19.5.2 → 19.5.4

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 (81) hide show
  1. package/bin/nx-cloud.d.ts +2 -1
  2. package/bin/nx-cloud.js +9 -17
  3. package/package.json +13 -13
  4. package/release/changelog-renderer/index.js +5 -4
  5. package/src/command-line/connect/connect-to-nx-cloud.d.ts +2 -0
  6. package/src/command-line/connect/connect-to-nx-cloud.js +33 -6
  7. package/src/command-line/connect/view-logs.js +5 -3
  8. package/src/command-line/examples.js +4 -0
  9. package/src/command-line/init/implementation/add-nx-to-monorepo.js +1 -1
  10. package/src/command-line/init/implementation/add-nx-to-nest.js +1 -1
  11. package/src/command-line/init/implementation/add-nx-to-npm-repo.js +1 -1
  12. package/src/command-line/init/implementation/angular/index.js +1 -1
  13. package/src/command-line/init/implementation/angular/legacy-angular-versions.js +1 -1
  14. package/src/command-line/init/implementation/utils.d.ts +1 -1
  15. package/src/command-line/init/implementation/utils.js +7 -5
  16. package/src/command-line/init/init-v2.js +1 -4
  17. package/src/command-line/list/list.js +10 -14
  18. package/src/command-line/migrate/migrate.js +19 -7
  19. package/src/command-line/release/changelog.js +1 -0
  20. package/src/command-line/release/command-object.js +5 -21
  21. package/src/command-line/release/config/config.js +4 -0
  22. package/src/command-line/release/plan.js +2 -12
  23. package/src/command-line/release/utils/generate-version-plan-content.d.ts +1 -0
  24. package/src/command-line/release/utils/generate-version-plan-content.js +21 -0
  25. package/src/command-line/release/utils/shared.js +8 -5
  26. package/src/command-line/release/version.js +4 -2
  27. package/src/command-line/report/report.d.ts +1 -0
  28. package/src/command-line/report/report.js +14 -9
  29. package/src/command-line/reset/command-object.d.ts +1 -0
  30. package/src/command-line/reset/command-object.js +4 -0
  31. package/src/command-line/reset/reset.js +13 -0
  32. package/src/command-line/run/run.js +2 -14
  33. package/src/command-line/watch/watch.js +1 -1
  34. package/src/daemon/socket-utils.js +1 -1
  35. package/src/daemon/tmp-dir.d.ts +1 -1
  36. package/src/daemon/tmp-dir.js +3 -2
  37. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts +6 -0
  38. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +15 -5
  39. package/src/migrations/update-16-0-0/update-nx-cloud-runner.js +2 -0
  40. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.d.ts +1 -1
  41. package/src/migrations/update-18-0-0/disable-crystal-for-existing-workspaces.js +3 -1
  42. package/src/native/index.d.ts +2 -0
  43. package/src/native/native-bindings.js +1 -0
  44. package/src/native/nx.wasi.cjs +35 -33
  45. package/src/native/nx.wasm32-wasi.wasm +0 -0
  46. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +3 -2
  47. package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +19 -66
  48. package/src/nx-cloud/utilities/client.d.ts +10 -0
  49. package/src/nx-cloud/utilities/client.js +35 -0
  50. package/src/nx-cloud/utilities/url-shorten.d.ts +3 -3
  51. package/src/nx-cloud/utilities/url-shorten.js +18 -13
  52. package/src/project-graph/plugins/internal-api.js +4 -1
  53. package/src/tasks-runner/run-command.d.ts +4 -4
  54. package/src/tasks-runner/run-command.js +22 -17
  55. package/src/tasks-runner/task-env.js +3 -2
  56. package/src/tasks-runner/task-graph-utils.d.ts +3 -0
  57. package/src/tasks-runner/task-graph-utils.js +34 -0
  58. package/src/tasks-runner/utils.js +9 -5
  59. package/src/utils/chunkify.d.ts +10 -0
  60. package/src/utils/chunkify.js +19 -12
  61. package/src/utils/command-line-utils.d.ts +3 -0
  62. package/src/utils/command-line-utils.js +11 -7
  63. package/src/utils/git-utils.js +14 -4
  64. package/src/utils/plugins/core-plugins.d.ts +6 -3
  65. package/src/utils/plugins/core-plugins.js +107 -115
  66. package/src/utils/plugins/index.d.ts +4 -4
  67. package/src/utils/plugins/index.js +7 -8
  68. package/src/utils/plugins/installed-plugins.d.ts +2 -3
  69. package/src/utils/plugins/installed-plugins.js +4 -31
  70. package/src/utils/plugins/local-plugins.d.ts +2 -3
  71. package/src/utils/plugins/local-plugins.js +2 -29
  72. package/src/utils/plugins/output.d.ts +5 -0
  73. package/src/utils/plugins/output.js +104 -0
  74. package/src/utils/plugins/plugin-capabilities.d.ts +12 -2
  75. package/src/utils/plugins/plugin-capabilities.js +2 -87
  76. package/src/utils/plugins/community-plugins.d.ts +0 -2
  77. package/src/utils/plugins/community-plugins.js +0 -28
  78. package/src/utils/plugins/models.d.ts +0 -22
  79. package/src/utils/plugins/models.js +0 -2
  80. package/src/utils/plugins/shared.d.ts +0 -1
  81. package/src/utils/plugins/shared.js +0 -7
@@ -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,9 +10,12 @@ 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
+ if (usesGithub === undefined || usesGithub === null) {
17
+ usesGithub = await repoUsesGithub(undefined, githubSlug, apiUrl);
18
+ }
16
19
  try {
17
20
  const version = await getNxCloudVersion(apiUrl);
18
21
  if ((version && compareCleanCloudVersions(version, '2406.11.5') < 0) ||
@@ -25,13 +28,14 @@ async function shortenedCloudUrl(installationSource, accessToken, usesGithub) {
25
28
  ${e}`);
26
29
  return apiUrl;
27
30
  }
28
- const source = getSource(installationSource);
31
+ const source = getSource(onboardingSource);
29
32
  try {
30
33
  const response = await require('axios').post(`${apiUrl}/nx-cloud/onboarding`, {
31
34
  type: usesGithub ? 'GITHUB' : 'MANUAL',
32
35
  source,
33
36
  accessToken: usesGithub ? null : accessToken,
34
- selectedRepositoryName: githubSlug,
37
+ selectedRepositoryName: githubSlug === 'github' ? null : githubSlug,
38
+ meta,
35
39
  });
36
40
  if (!response?.data || response.data.message) {
37
41
  throw new Error(response?.data?.message ?? 'Failed to shorten Nx Cloud URL');
@@ -41,14 +45,18 @@ async function shortenedCloudUrl(installationSource, accessToken, usesGithub) {
41
45
  catch (e) {
42
46
  devkit_exports_1.logger.verbose(`Failed to shorten Nx Cloud URL.
43
47
  ${e}`);
44
- return getURLifShortenFailed(usesGithub, githubSlug, apiUrl, source, accessToken);
48
+ return getURLifShortenFailed(usesGithub, githubSlug === 'github' ? null : githubSlug, apiUrl, source, accessToken);
45
49
  }
46
50
  }
47
- async function repoUsesGithub(github) {
48
- const githubSlug = (0, git_utils_1.getGithubSlugOrNull)();
49
- const apiUrl = (0, get_cloud_options_1.getCloudUrl)();
51
+ async function repoUsesGithub(github, githubSlug, apiUrl) {
52
+ if (!apiUrl) {
53
+ apiUrl = (0, get_cloud_options_1.getCloudUrl)();
54
+ }
55
+ if (!githubSlug) {
56
+ githubSlug = (0, git_utils_1.getGithubSlugOrNull)();
57
+ }
50
58
  const installationSupportsGitHub = await getInstallationSupportsGitHub(apiUrl);
51
- return ((githubSlug || github) &&
59
+ return ((!!githubSlug || !!github) &&
52
60
  (apiUrl.includes('cloud.nx.app') ||
53
61
  apiUrl.includes('eu.nx.app') ||
54
62
  installationSupportsGitHub));
@@ -60,11 +68,8 @@ function getSource(installationSource) {
60
68
  else if (installationSource.includes('nx-connect')) {
61
69
  return 'nx-connect';
62
70
  }
63
- else if (installationSource.includes('create-nx-workspace')) {
64
- return 'create-nx-workspace';
65
- }
66
71
  else {
67
- return 'other';
72
+ return installationSource;
68
73
  }
69
74
  }
70
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);
@@ -1,10 +1,10 @@
1
- import { TasksRunner } from './tasks-runner';
2
- import { NxArgs } from '../utils/command-line-utils';
3
- import { LifeCycle } from './life-cycle';
4
- import { ProjectGraph, ProjectGraphProjectNode } from '../config/project-graph';
5
1
  import { NxJsonConfiguration } from '../config/nx-json';
2
+ import { ProjectGraph, ProjectGraphProjectNode } from '../config/project-graph';
6
3
  import { Task, TaskGraph } from '../config/task-graph';
7
4
  import { TargetDependencyConfig } from '../config/workspace-json-project-json';
5
+ import { NxArgs } from '../utils/command-line-utils';
6
+ import { LifeCycle } from './life-cycle';
7
+ import { TasksRunner } from './tasks-runner';
8
8
  export declare function runCommand(projectsToRun: ProjectGraphProjectNode[], projectGraph: ProjectGraph, { nxJson }: {
9
9
  nxJson: NxJsonConfiguration;
10
10
  }, nxArgs: NxArgs, overrides: any, initiatingProject: string | null, extraTargetDependencies: Record<string, (TargetDependencyConfig | string)[]>, extraOptions: {
@@ -5,28 +5,28 @@ exports.invokeTasksRunner = invokeTasksRunner;
5
5
  exports.getRunner = getRunner;
6
6
  exports.getRunnerOptions = getRunnerOptions;
7
7
  const path_1 = require("path");
8
- const workspace_root_1 = require("../utils/workspace-root");
8
+ const nx_json_1 = require("../config/nx-json");
9
+ const client_1 = require("../daemon/client/client");
10
+ const create_task_hasher_1 = require("../hasher/create-task-hasher");
11
+ const hash_task_1 = require("../hasher/hash-task");
9
12
  const fileutils_1 = require("../utils/fileutils");
13
+ const is_ci_1 = require("../utils/is-ci");
14
+ const nx_cloud_utils_1 = require("../utils/nx-cloud-utils");
10
15
  const output_1 = require("../utils/output");
11
- const utils_1 = require("./utils");
16
+ const params_1 = require("../utils/params");
17
+ const workspace_root_1 = require("../utils/workspace-root");
18
+ const create_task_graph_1 = require("./create-task-graph");
12
19
  const life_cycle_1 = require("./life-cycle");
13
- const static_run_many_terminal_output_life_cycle_1 = require("./life-cycles/static-run-many-terminal-output-life-cycle");
14
- const static_run_one_terminal_output_life_cycle_1 = require("./life-cycles/static-run-one-terminal-output-life-cycle");
15
- const task_timings_life_cycle_1 = require("./life-cycles/task-timings-life-cycle");
16
20
  const dynamic_run_many_terminal_output_life_cycle_1 = require("./life-cycles/dynamic-run-many-terminal-output-life-cycle");
17
- const task_profiling_life_cycle_1 = require("./life-cycles/task-profiling-life-cycle");
18
- const is_ci_1 = require("../utils/is-ci");
19
21
  const dynamic_run_one_terminal_output_life_cycle_1 = require("./life-cycles/dynamic-run-one-terminal-output-life-cycle");
20
- const nx_json_1 = require("../config/nx-json");
21
- const create_task_graph_1 = require("./create-task-graph");
22
- const task_graph_utils_1 = require("./task-graph-utils");
23
- const params_1 = require("../utils/params");
24
- const hash_task_1 = require("../hasher/hash-task");
25
- const client_1 = require("../daemon/client/client");
22
+ const static_run_many_terminal_output_life_cycle_1 = require("./life-cycles/static-run-many-terminal-output-life-cycle");
23
+ const static_run_one_terminal_output_life_cycle_1 = require("./life-cycles/static-run-one-terminal-output-life-cycle");
26
24
  const store_run_information_life_cycle_1 = require("./life-cycles/store-run-information-life-cycle");
27
- const create_task_hasher_1 = require("../hasher/create-task-hasher");
28
25
  const task_history_life_cycle_1 = require("./life-cycles/task-history-life-cycle");
29
- const nx_cloud_utils_1 = require("../utils/nx-cloud-utils");
26
+ const task_profiling_life_cycle_1 = require("./life-cycles/task-profiling-life-cycle");
27
+ const task_timings_life_cycle_1 = require("./life-cycles/task-timings-life-cycle");
28
+ const task_graph_utils_1 = require("./task-graph-utils");
29
+ const utils_1 = require("./utils");
30
30
  async function getTerminalOutputLifeCycle(initiatingProject, projectNames, tasks, nxArgs, nxJson, overrides) {
31
31
  const { runnerOptions } = getRunner(nxArgs, nxJson);
32
32
  const isRunOne = initiatingProject != null;
@@ -64,7 +64,7 @@ async function getTerminalOutputLifeCycle(initiatingProject, projectNames, tasks
64
64
  }
65
65
  }
66
66
  }
67
- function createTaskGraphAndValidateCycles(projectGraph, extraTargetDependencies, projectNames, nxArgs, overrides, extraOptions) {
67
+ function createTaskGraphAndRunValidations(projectGraph, extraTargetDependencies, projectNames, nxArgs, overrides, extraOptions) {
68
68
  const taskGraph = (0, create_task_graph_1.createTaskGraph)(projectGraph, extraTargetDependencies, projectNames, nxArgs.targets, nxArgs.configuration, overrides, extraOptions.excludeTaskDependencies);
69
69
  const cycle = (0, task_graph_utils_1.findCycle)(taskGraph);
70
70
  if (cycle) {
@@ -83,12 +83,17 @@ function createTaskGraphAndValidateCycles(projectGraph, extraTargetDependencies,
83
83
  process.exit(1);
84
84
  }
85
85
  }
86
+ // validate that no atomized tasks like e2e-ci are used without Nx Cloud
87
+ if (!(0, nx_cloud_utils_1.isNxCloudUsed)((0, nx_json_1.readNxJson)()) &&
88
+ !process.env['NX_SKIP_ATOMIZER_VALIDATION']) {
89
+ (0, task_graph_utils_1.validateNoAtomizedTasks)(taskGraph, projectGraph);
90
+ }
86
91
  return taskGraph;
87
92
  }
88
93
  async function runCommand(projectsToRun, projectGraph, { nxJson }, nxArgs, overrides, initiatingProject, extraTargetDependencies, extraOptions) {
89
94
  const status = await (0, params_1.handleErrors)(process.env.NX_VERBOSE_LOGGING === 'true', async () => {
90
95
  const projectNames = projectsToRun.map((t) => t.name);
91
- const taskGraph = createTaskGraphAndValidateCycles(projectGraph, extraTargetDependencies ?? {}, projectNames, nxArgs, overrides, extraOptions);
96
+ const taskGraph = createTaskGraphAndRunValidations(projectGraph, extraTargetDependencies ?? {}, projectNames, nxArgs, overrides, extraOptions);
92
97
  const tasks = Object.values(taskGraph.tasks);
93
98
  const { lifeCycle, renderIsDone } = await getTerminalOutputLifeCycle(initiatingProject, projectNames, tasks, nxArgs, nxJson, overrides);
94
99
  const status = await invokeTasksRunner({
@@ -8,6 +8,7 @@ exports.unloadDotEnvFile = unloadDotEnvFile;
8
8
  const dotenv_1 = require("dotenv");
9
9
  const dotenv_expand_1 = require("dotenv-expand");
10
10
  const workspace_root_1 = require("../utils/workspace-root");
11
+ const node_path_1 = require("node:path");
11
12
  function getEnvVariablesForBatchProcess(skipNxCache, captureStderr) {
12
13
  return {
13
14
  // User Process Env Variables override Dotenv Variables
@@ -158,13 +159,13 @@ function getEnvFilesForTask(task) {
158
159
  function loadDotEnvFilesForTask(task, environmentVariables) {
159
160
  const dotEnvFiles = getEnvFilesForTask(task);
160
161
  for (const file of dotEnvFiles) {
161
- loadAndExpandDotEnvFile(file, environmentVariables);
162
+ loadAndExpandDotEnvFile((0, node_path_1.join)(workspace_root_1.workspaceRoot, file), environmentVariables);
162
163
  }
163
164
  return environmentVariables;
164
165
  }
165
166
  function unloadDotEnvFiles(environmentVariables) {
166
167
  for (const file of ['.env', '.local.env', '.env.local']) {
167
- unloadDotEnvFile(file, environmentVariables);
168
+ unloadDotEnvFile((0, node_path_1.join)(workspace_root_1.workspaceRoot, file), environmentVariables);
168
169
  }
169
170
  return environmentVariables;
170
171
  }
@@ -1,3 +1,5 @@
1
+ import { ProjectGraph } from '../config/project-graph';
2
+ import { TaskGraph } from '../config/task-graph';
1
3
  export declare function findCycle(graph: {
2
4
  dependencies: Record<string, string[]>;
3
5
  }): string[] | null;
@@ -5,3 +7,4 @@ export declare function makeAcyclic(graph: {
5
7
  roots: string[];
6
8
  dependencies: Record<string, string[]>;
7
9
  }): void;
10
+ export declare function validateNoAtomizedTasks(taskGraph: TaskGraph, projectGraph: ProjectGraph): void;
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findCycle = findCycle;
4
4
  exports.makeAcyclic = makeAcyclic;
5
+ exports.validateNoAtomizedTasks = validateNoAtomizedTasks;
6
+ const output_1 = require("../utils/output");
5
7
  function _findCycle(graph, id, visited, path) {
6
8
  if (visited[id])
7
9
  return null;
@@ -52,3 +54,35 @@ function makeAcyclic(graph) {
52
54
  }
53
55
  graph.roots = Object.keys(graph.dependencies).filter((t) => graph.dependencies[t].length === 0);
54
56
  }
57
+ function validateNoAtomizedTasks(taskGraph, projectGraph) {
58
+ const getNonAtomizedTargetForTask = (task) => projectGraph.nodes[task.target.project]?.data?.targets?.[task.target.target]
59
+ ?.metadata?.nonAtomizedTarget;
60
+ const atomizedRootTasks = Object.values(taskGraph.tasks).filter((task) => getNonAtomizedTargetForTask(task) !== undefined);
61
+ if (atomizedRootTasks.length === 0) {
62
+ return;
63
+ }
64
+ const nonAtomizedTasks = atomizedRootTasks
65
+ .map((t) => `"${getNonAtomizedTargetForTask(t)}"`)
66
+ .filter((item, index, arr) => arr.indexOf(item) === index);
67
+ const moreInfoLines = [
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#nx-cloud-is-required-to-run-atomized-tasks',
70
+ ];
71
+ if (atomizedRootTasks.length === 1) {
72
+ output_1.output.error({
73
+ title: `The ${atomizedRootTasks[0].id} task should only be run with Nx Cloud.`,
74
+ bodyLines: [...moreInfoLines],
75
+ });
76
+ }
77
+ else {
78
+ output_1.output.error({
79
+ title: `The following tasks should only be run with Nx Cloud:`,
80
+ bodyLines: [
81
+ ...atomizedRootTasks.map((task) => ` - ${task.id}`),
82
+ '',
83
+ ...moreInfoLines,
84
+ ],
85
+ });
86
+ }
87
+ process.exit(1);
88
+ }
@@ -215,16 +215,20 @@ function getOutputsForTargetAndConfiguration(taskTargetOrTask, overridesOrNode,
215
215
  };
216
216
  if (targetConfiguration?.outputs) {
217
217
  validateOutputs(targetConfiguration.outputs);
218
- return targetConfiguration.outputs
219
- .map((output) => {
220
- return interpolate(output, {
218
+ const result = new Set();
219
+ for (const output of targetConfiguration.outputs) {
220
+ const interpolatedOutput = interpolate(output, {
221
221
  projectRoot: node.data.root,
222
222
  projectName: node.name,
223
223
  project: { ...node.data, name: node.name }, // this is legacy
224
224
  options,
225
225
  });
226
- })
227
- .filter((output) => !!output && !output.match(/{(projectRoot|workspaceRoot|(options.*))}/));
226
+ if (!!interpolatedOutput &&
227
+ !interpolatedOutput.match(/{(projectRoot|workspaceRoot|(options.*))}/)) {
228
+ result.add(interpolatedOutput);
229
+ }
230
+ }
231
+ return Array.from(result);
228
232
  }
229
233
  // Keep backwards compatibility in case `outputs` doesn't exist
230
234
  if (options.outputPath) {
@@ -1 +1,11 @@
1
1
  export declare function chunkify(target: string[], maxChunkLength?: number): string[][];
2
+ /**
3
+ * Get the maximum length of a command-line argument string based on current platform
4
+ *
5
+ * https://serverfault.com/questions/69430/what-is-the-maximum-length-of-a-command-line-in-mac-os-x
6
+ * https://support.microsoft.com/en-us/help/830473/command-prompt-cmd-exe-command-line-string-limitation
7
+ * https://unix.stackexchange.com/a/120652
8
+ *
9
+ * Taken from: https://github.com/lint-staged/lint-staged/blob/adf50b00669f6aac2eeca25dd28ff86a9a3c2a48/lib/index.js#L21-L37
10
+ */
11
+ export declare function getMaxArgLength(): 262144 | 8191 | 131072;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.chunkify = chunkify;
4
- const child_process_1 = require("child_process");
5
- const TERMINAL_SIZE = process.platform === 'win32' ? 8192 : getUnixTerminalSize();
4
+ exports.getMaxArgLength = getMaxArgLength;
5
+ const TERMINAL_SIZE = getMaxArgLength();
6
6
  function chunkify(target, maxChunkLength = TERMINAL_SIZE - 500) {
7
7
  const chunks = [];
8
8
  let currentChunk = [];
@@ -23,15 +23,22 @@ function chunkify(target, maxChunkLength = TERMINAL_SIZE - 500) {
23
23
  chunks.push(currentChunk);
24
24
  return chunks;
25
25
  }
26
- function getUnixTerminalSize() {
27
- try {
28
- const argMax = (0, child_process_1.execSync)('getconf ARG_MAX').toString().trim();
29
- return Number.parseInt(argMax);
30
- }
31
- catch {
32
- // This number varies by system, but 100k seems like a safe
33
- // number from some research...
34
- // https://stackoverflow.com/questions/19354870/bash-command-line-and-input-limit
35
- return 100000;
26
+ /**
27
+ * Get the maximum length of a command-line argument string based on current platform
28
+ *
29
+ * https://serverfault.com/questions/69430/what-is-the-maximum-length-of-a-command-line-in-mac-os-x
30
+ * https://support.microsoft.com/en-us/help/830473/command-prompt-cmd-exe-command-line-string-limitation
31
+ * https://unix.stackexchange.com/a/120652
32
+ *
33
+ * Taken from: https://github.com/lint-staged/lint-staged/blob/adf50b00669f6aac2eeca25dd28ff86a9a3c2a48/lib/index.js#L21-L37
34
+ */
35
+ function getMaxArgLength() {
36
+ switch (process.platform) {
37
+ case 'darwin':
38
+ return 262144;
39
+ case 'win32':
40
+ return 8191;
41
+ default:
42
+ return 131072;
36
43
  }
37
44
  }
@@ -41,6 +41,9 @@ export declare function splitArgsIntoNxArgsAndOverrides(args: {
41
41
  __overrides_unparsed__: string[];
42
42
  };
43
43
  };
44
+ export declare function readParallelFromArgsAndEnv(args: {
45
+ [k: string]: any;
46
+ }): number;
44
47
  export declare function parseFiles(options: NxArgs): {
45
48
  files: string[];
46
49
  };
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createOverrides = createOverrides;
4
4
  exports.splitArgsIntoNxArgsAndOverrides = splitArgsIntoNxArgsAndOverrides;
5
+ exports.readParallelFromArgsAndEnv = readParallelFromArgsAndEnv;
5
6
  exports.parseFiles = parseFiles;
6
7
  exports.getProjectRoots = getProjectRoots;
7
8
  exports.readGraphFileFromGraphArg = readGraphFileFromGraphArg;
@@ -112,23 +113,26 @@ function splitArgsIntoNxArgsAndOverrides(args, mode, options = { printWarnings:
112
113
  nxArgs.skipNxCache = process.env.NX_SKIP_NX_CACHE === 'true';
113
114
  }
114
115
  normalizeNxArgsRunner(nxArgs, nxJson, options);
116
+ nxArgs['parallel'] = readParallelFromArgsAndEnv(args);
117
+ return { nxArgs, overrides };
118
+ }
119
+ function readParallelFromArgsAndEnv(args) {
115
120
  if (args['parallel'] === 'false' || args['parallel'] === false) {
116
- nxArgs['parallel'] = 1;
121
+ return 1;
117
122
  }
118
123
  else if (args['parallel'] === 'true' ||
119
124
  args['parallel'] === true ||
120
125
  args['parallel'] === '' ||
121
- process.env.NX_PARALLEL // dont require passing --parallel if NX_PARALLEL is set
122
- ) {
123
- nxArgs['parallel'] = Number(nxArgs['maxParallel'] ||
124
- nxArgs['max-parallel'] ||
126
+ // dont require passing --parallel if NX_PARALLEL is set, but allow overriding it
127
+ (process.env.NX_PARALLEL && args['parallel'] === undefined)) {
128
+ return Number(args['maxParallel'] ||
129
+ args['max-parallel'] ||
125
130
  process.env.NX_PARALLEL ||
126
131
  3);
127
132
  }
128
133
  else if (args['parallel'] !== undefined) {
129
- nxArgs['parallel'] = Number(args['parallel']);
134
+ return Number(args['parallel']);
130
135
  }
131
- return { nxArgs, overrides };
132
136
  }
133
137
  function normalizeNxArgsRunner(nxArgs, nxJson, options) {
134
138
  if (!nxArgs.runner) {
@@ -9,26 +9,36 @@ const devkit_exports_1 = require("../devkit-exports");
9
9
  function getGithubSlugOrNull() {
10
10
  try {
11
11
  const gitRemote = (0, child_process_1.execSync)('git remote -v').toString();
12
+ // If there are no remotes, we default to github
13
+ if (!gitRemote || gitRemote.length === 0) {
14
+ return 'github';
15
+ }
12
16
  return extractUserAndRepoFromGitHubUrl(gitRemote);
13
17
  }
14
18
  catch (e) {
15
- return null;
19
+ // Probably git is not set up, so we default to github
20
+ return 'github';
16
21
  }
17
22
  }
18
23
  function extractUserAndRepoFromGitHubUrl(gitRemotes) {
19
24
  const regex = /^\s*(\w+)\s+(git@github\.com:|https:\/\/github\.com\/)([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)\.git/gm;
25
+ const remotesPriority = ['origin', 'upstream', 'base'];
26
+ const foundRemotes = {};
20
27
  let firstGitHubUrl = null;
21
28
  let match;
22
29
  while ((match = regex.exec(gitRemotes)) !== null) {
23
30
  const remoteName = match[1];
24
31
  const url = match[2] + match[3] + '/' + match[4] + '.git';
25
- if (remoteName === 'origin') {
26
- return parseGitHubUrl(url);
27
- }
32
+ foundRemotes[remoteName] = url;
28
33
  if (!firstGitHubUrl) {
29
34
  firstGitHubUrl = url;
30
35
  }
31
36
  }
37
+ for (const remote of remotesPriority) {
38
+ if (foundRemotes[remote]) {
39
+ return parseGitHubUrl(foundRemotes[remote]);
40
+ }
41
+ }
32
42
  return firstGitHubUrl ? parseGitHubUrl(firstGitHubUrl) : null;
33
43
  }
34
44
  function parseGitHubUrl(url) {
@@ -1,3 +1,6 @@
1
- import type { CorePlugin, PluginCapabilities } from './models';
2
- export declare function fetchCorePlugins(): CorePlugin[];
3
- export declare function listCorePlugins(installedPlugins: Map<string, PluginCapabilities>, corePlugins: CorePlugin[]): void;
1
+ export interface CorePlugin {
2
+ name: string;
3
+ capabilities: 'executors' | 'generators' | 'executors,generators' | 'graph';
4
+ link?: string;
5
+ }
6
+ export declare const CORE_PLUGINS: CorePlugin[];