nx 20.7.2 → 20.8.0-beta.1

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 (67) hide show
  1. package/.eslintrc.json +3 -1
  2. package/package.json +11 -11
  3. package/release/index.d.ts +1 -1
  4. package/release/index.js +2 -1
  5. package/schemas/nx-schema.json +133 -33
  6. package/src/command-line/release/changelog.js +15 -10
  7. package/src/command-line/release/command-object.d.ts +1 -0
  8. package/src/command-line/release/command-object.js +4 -0
  9. package/src/command-line/release/config/config.d.ts +8 -7
  10. package/src/command-line/release/config/config.js +122 -42
  11. package/src/command-line/release/config/use-legacy-versioning.d.ts +2 -0
  12. package/src/command-line/release/config/use-legacy-versioning.js +9 -0
  13. package/src/command-line/release/index.d.ts +4 -0
  14. package/src/command-line/release/index.js +6 -1
  15. package/src/command-line/release/plan-check.js +6 -3
  16. package/src/command-line/release/plan.js +7 -3
  17. package/src/command-line/release/publish.js +5 -3
  18. package/src/command-line/release/release.js +8 -3
  19. package/src/command-line/release/utils/batch-projects-by-generator-config.js +6 -3
  20. package/src/command-line/release/utils/git.d.ts +2 -1
  21. package/src/command-line/release/utils/git.js +10 -2
  22. package/src/command-line/release/utils/github.js +3 -1
  23. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +2 -1
  24. package/src/command-line/release/utils/resolve-semver-specifier.js +2 -1
  25. package/src/command-line/release/utils/semver.d.ts +8 -0
  26. package/src/command-line/release/utils/semver.js +8 -0
  27. package/src/command-line/release/utils/shared-legacy.d.ts +25 -0
  28. package/src/command-line/release/utils/shared-legacy.js +2 -0
  29. package/src/command-line/release/utils/shared.d.ts +11 -17
  30. package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts +7 -0
  31. package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +47 -0
  32. package/src/command-line/release/version/deriver-specifier-from-version-plans.d.ts +8 -0
  33. package/src/command-line/release/version/deriver-specifier-from-version-plans.js +59 -0
  34. package/src/command-line/release/version/project-logger.d.ts +8 -0
  35. package/src/command-line/release/version/project-logger.js +45 -0
  36. package/src/command-line/release/version/release-group-processor.d.ts +251 -0
  37. package/src/command-line/release/version/release-group-processor.js +1040 -0
  38. package/src/command-line/release/version/resolve-current-version.d.ts +32 -0
  39. package/src/command-line/release/version/resolve-current-version.js +241 -0
  40. package/src/command-line/release/version/test-utils.d.ts +95 -0
  41. package/src/command-line/release/version/test-utils.js +416 -0
  42. package/src/command-line/release/version/topological-sort.d.ts +9 -0
  43. package/src/command-line/release/version/topological-sort.js +41 -0
  44. package/src/command-line/release/version/version-actions.d.ts +170 -0
  45. package/src/command-line/release/version/version-actions.js +183 -0
  46. package/src/command-line/release/version-legacy.d.ts +46 -0
  47. package/src/command-line/release/version-legacy.js +453 -0
  48. package/src/command-line/release/version.d.ts +0 -40
  49. package/src/command-line/release/version.js +80 -262
  50. package/src/config/nx-json.d.ts +110 -12
  51. package/src/config/workspace-json-project-json.d.ts +2 -2
  52. package/src/core/graph/main.js +1 -1
  53. package/src/core/graph/styles.css +1 -1
  54. package/src/native/index.d.ts +6 -0
  55. package/src/native/native-bindings.js +1 -0
  56. package/src/native/nx.wasi-browser.js +7 -7
  57. package/src/native/nx.wasm32-wasi.wasm +0 -0
  58. package/src/plugins/js/lock-file/utils/package-json.d.ts +1 -1
  59. package/src/plugins/js/lock-file/utils/package-json.js +2 -1
  60. package/src/plugins/js/lock-file/yarn-parser.js +75 -29
  61. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts +10 -1
  62. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +59 -6
  63. package/src/project-graph/error-types.js +28 -1
  64. package/src/project-graph/utils/project-configuration-utils.js +14 -2
  65. package/src/tasks-runner/cache.d.ts +1 -0
  66. package/src/tasks-runner/cache.js +11 -0
  67. package/src/utils/handle-errors.js +15 -0
@@ -153,10 +153,37 @@ function isProjectWithNoNameError(e) {
153
153
  }
154
154
  class ProjectConfigurationsError extends Error {
155
155
  constructor(errors, partialProjectConfigurationsResult) {
156
- super('Failed to create project configurations');
156
+ const messageFragments = ['Failed to create project configurations.'];
157
+ const mergeNodesErrors = [];
158
+ const unknownErrors = [];
159
+ for (const e of errors) {
160
+ if (
161
+ // Known error type, but unlikely to be caused by the user
162
+ isMergeNodesError(e)) {
163
+ mergeNodesErrors.push(e);
164
+ }
165
+ else if (
166
+ // Known errors that are self-explanatory
167
+ !isAggregateCreateNodesError(e) &&
168
+ !isProjectsWithNoNameError(e) &&
169
+ !isMultipleProjectsWithSameNameError(e)) {
170
+ unknownErrors.push(e);
171
+ }
172
+ }
173
+ if (mergeNodesErrors.length > 0) {
174
+ messageFragments.push(`This type of error most likely points to an issue within Nx. Please report it.`);
175
+ }
176
+ if (unknownErrors.length > 0) {
177
+ messageFragments.push(`If the error cause is not obvious from the below error messages, running "nx reset" may fix it. Please report the issue if you keep seeing it.`);
178
+ }
179
+ super(messageFragments.join(' '));
157
180
  this.errors = errors;
158
181
  this.partialProjectConfigurationsResult = partialProjectConfigurationsResult;
159
182
  this.name = this.constructor.name;
183
+ this.errors = errors;
184
+ this.stack = errors
185
+ .map((error) => indentString(formatErrorStackAndCause(error), 2))
186
+ .join('\n');
160
187
  }
161
188
  }
162
189
  exports.ProjectConfigurationsError = ProjectConfigurationsError;
@@ -138,8 +138,20 @@ skipTargetNormalization) {
138
138
  const normalizedTarget = skipTargetNormalization
139
139
  ? target
140
140
  : resolveCommandSyntacticSugar(target, project.root);
141
- const mergedTarget = mergeTargetConfigurations(normalizedTarget, matchingProject.targets?.[targetName], sourceMap, sourceInformation, `targets.${targetName}`);
142
- updatedProjectConfiguration.targets[targetName] = mergedTarget;
141
+ let matchingTargets = [];
142
+ if ((0, globs_1.isGlobPattern)(targetName)) {
143
+ // find all targets matching the glob pattern
144
+ // this will map atomized targets to the glob pattern same as it does for targetDefaults
145
+ matchingTargets = Object.keys(updatedProjectConfiguration.targets).filter((key) => (0, minimatch_1.minimatch)(key, targetName));
146
+ }
147
+ // If no matching targets were found, we can assume that the target name is not (meant to be) a glob pattern
148
+ if (!matchingTargets.length) {
149
+ matchingTargets = [targetName];
150
+ }
151
+ for (const matchingTargetName of matchingTargets) {
152
+ const mergedTarget = mergeTargetConfigurations(normalizedTarget, matchingProject.targets?.[matchingTargetName], sourceMap, sourceInformation, `targets.${matchingTargetName}`);
153
+ updatedProjectConfiguration.targets[matchingTargetName] = mergedTarget;
154
+ }
143
155
  }
144
156
  }
145
157
  projectRootMap[updatedProjectConfiguration.root] =
@@ -38,6 +38,7 @@ export declare class DbCache {
38
38
  private getSharedCache;
39
39
  private getGcsCache;
40
40
  private getAzureCache;
41
+ private getHttpCache;
41
42
  private resolveRemoteCache;
42
43
  private resolvePackage;
43
44
  private assertCacheIsValid;
@@ -169,6 +169,7 @@ class DbCache {
169
169
  (await this.getSharedCache()) ??
170
170
  (await this.getGcsCache()) ??
171
171
  (await this.getAzureCache()) ??
172
+ this.getHttpCache() ??
172
173
  null);
173
174
  }
174
175
  }
@@ -196,6 +197,16 @@ class DbCache {
196
197
  return cache;
197
198
  return this.resolveRemoteCache('@nx/powerpack-azure-cache');
198
199
  }
200
+ getHttpCache() {
201
+ if (process.env.NX_SELF_HOSTED_REMOTE_CACHE_SERVER) {
202
+ if (native_1.IS_WASM) {
203
+ logger_1.logger.warn('The HTTP remote cache is not yet supported in the wasm build of Nx.');
204
+ return null;
205
+ }
206
+ return new native_1.HttpRemoteCache();
207
+ }
208
+ return null;
209
+ }
199
210
  async resolveRemoteCache(pkg) {
200
211
  let getRemoteCache = null;
201
212
  try {
@@ -31,6 +31,21 @@ async function handleErrors(isVerbose, fn) {
31
31
  : projectGraphError.getErrors().map((e) => e.message),
32
32
  });
33
33
  }
34
+ else if (err.name === 'ProjectConfigurationsError') {
35
+ const projectConfigurationsError = err;
36
+ let title = projectConfigurationsError.message;
37
+ if (projectConfigurationsError.cause &&
38
+ typeof projectConfigurationsError.cause === 'object' &&
39
+ 'message' in projectConfigurationsError.cause) {
40
+ title += ' ' + projectConfigurationsError.cause.message + '.';
41
+ }
42
+ output_1.output.error({
43
+ title,
44
+ bodyLines: isVerbose
45
+ ? formatErrorStackAndCause(projectConfigurationsError, isVerbose)
46
+ : projectConfigurationsError.errors.map((e) => e.message),
47
+ });
48
+ }
34
49
  else {
35
50
  const lines = (err.message ? err.message : err.toString()).split('\n');
36
51
  const bodyLines = lines.slice(1);