nx 22.0.0-beta.3 → 22.0.0-beta.5

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 (85) hide show
  1. package/migrations.json +5 -0
  2. package/package.json +11 -11
  3. package/release/changelog-renderer/index.d.ts +1 -0
  4. package/release/changelog-renderer/index.d.ts.map +1 -1
  5. package/release/changelog-renderer/index.js +46 -15
  6. package/schemas/nx-schema.json +254 -86
  7. package/src/command-line/configure-ai-agents/command-object.d.ts +1 -1
  8. package/src/command-line/configure-ai-agents/command-object.d.ts.map +1 -1
  9. package/src/command-line/configure-ai-agents/command-object.js +18 -4
  10. package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
  11. package/src/command-line/configure-ai-agents/configure-ai-agents.js +58 -31
  12. package/src/command-line/migrate/migrate.d.ts.map +1 -1
  13. package/src/command-line/migrate/migrate.js +0 -4
  14. package/src/command-line/nx-cloud/login/command-object.d.ts.map +1 -1
  15. package/src/command-line/nx-cloud/login/command-object.js +2 -2
  16. package/src/command-line/nx-cloud/logout/command-object.js +1 -1
  17. package/src/command-line/nx-commands.js +1 -1
  18. package/src/command-line/release/changelog.d.ts.map +1 -1
  19. package/src/command-line/release/changelog.js +58 -47
  20. package/src/command-line/release/command-object.d.ts +7 -3
  21. package/src/command-line/release/command-object.d.ts.map +1 -1
  22. package/src/command-line/release/config/config.d.ts +6 -2
  23. package/src/command-line/release/config/config.d.ts.map +1 -1
  24. package/src/command-line/release/config/config.js +124 -61
  25. package/src/command-line/release/config/version-plans.d.ts.map +1 -1
  26. package/src/command-line/release/config/version-plans.js +4 -1
  27. package/src/command-line/release/publish.d.ts.map +1 -1
  28. package/src/command-line/release/publish.js +35 -11
  29. package/src/command-line/release/release.d.ts.map +1 -1
  30. package/src/command-line/release/release.js +31 -30
  31. package/src/command-line/release/utils/git.d.ts +2 -2
  32. package/src/command-line/release/utils/git.d.ts.map +1 -1
  33. package/src/command-line/release/utils/git.js +5 -5
  34. package/src/command-line/release/utils/release-graph.d.ts +219 -0
  35. package/src/command-line/release/utils/release-graph.d.ts.map +1 -0
  36. package/src/command-line/release/utils/release-graph.js +658 -0
  37. package/src/command-line/release/utils/semver.d.ts +1 -2
  38. package/src/command-line/release/utils/semver.d.ts.map +1 -1
  39. package/src/command-line/release/utils/semver.js +3 -5
  40. package/src/command-line/release/utils/shared.d.ts +1 -1
  41. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  42. package/src/command-line/release/utils/shared.js +53 -19
  43. package/src/command-line/release/version/release-group-processor.d.ts +3 -152
  44. package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
  45. package/src/command-line/release/version/release-group-processor.js +58 -569
  46. package/src/command-line/release/version/resolve-current-version.d.ts +1 -1
  47. package/src/command-line/release/version/resolve-current-version.d.ts.map +1 -1
  48. package/src/command-line/release/version/resolve-current-version.js +1 -1
  49. package/src/command-line/release/version/test-utils.d.ts +13 -4
  50. package/src/command-line/release/version/test-utils.d.ts.map +1 -1
  51. package/src/command-line/release/version/test-utils.js +26 -11
  52. package/src/command-line/release/version/version-actions.d.ts +12 -5
  53. package/src/command-line/release/version/version-actions.d.ts.map +1 -1
  54. package/src/command-line/release/version/version-actions.js +36 -19
  55. package/src/command-line/release/version.d.ts +6 -1
  56. package/src/command-line/release/version.d.ts.map +1 -1
  57. package/src/command-line/release/version.js +57 -28
  58. package/src/config/nx-json.d.ts +139 -58
  59. package/src/config/nx-json.d.ts.map +1 -1
  60. package/src/config/nx-json.js +8 -8
  61. package/src/core/graph/main.js +1 -1
  62. package/src/daemon/client/client.d.ts +4 -0
  63. package/src/daemon/client/client.d.ts.map +1 -1
  64. package/src/daemon/client/client.js +23 -0
  65. package/src/daemon/message-types/register-project-graph-listener.d.ts +6 -0
  66. package/src/daemon/message-types/register-project-graph-listener.d.ts.map +1 -0
  67. package/src/daemon/message-types/register-project-graph-listener.js +11 -0
  68. package/src/daemon/server/project-graph-incremental-recomputation.d.ts +3 -1
  69. package/src/daemon/server/project-graph-incremental-recomputation.d.ts.map +1 -1
  70. package/src/daemon/server/project-graph-incremental-recomputation.js +13 -5
  71. package/src/daemon/server/project-graph-listener-sockets.d.ts +8 -0
  72. package/src/daemon/server/project-graph-listener-sockets.d.ts.map +1 -0
  73. package/src/daemon/server/project-graph-listener-sockets.js +24 -0
  74. package/src/daemon/server/server.d.ts.map +1 -1
  75. package/src/daemon/server/server.js +9 -2
  76. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts +3 -0
  77. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts.map +1 -0
  78. package/src/migrations/update-22-0-0/consolidate-release-tag-config.js +100 -0
  79. package/src/native/nx.wasm32-wasi.wasm +0 -0
  80. package/src/tasks-runner/is-tui-enabled.d.ts.map +1 -1
  81. package/src/tasks-runner/is-tui-enabled.js +0 -1
  82. package/src/tasks-runner/run-command.d.ts.map +1 -1
  83. package/src/tasks-runner/run-command.js +5 -2
  84. package/src/utils/package-manager.d.ts.map +1 -1
  85. package/src/utils/package-manager.js +1 -3
@@ -0,0 +1,219 @@
1
+ import type { NxReleaseDockerConfiguration, NxReleaseVersionConfiguration } from '../../../config/nx-json';
2
+ import type { ProjectGraph } from '../../../config/project-graph';
3
+ import type { Tree } from '../../../generators/tree';
4
+ import { type NxReleaseConfig } from '../config/config';
5
+ import type { ReleaseGroupWithName } from '../config/filter-release-groups';
6
+ import { ProjectLogger } from '../version/project-logger';
7
+ import { type AfterAllProjectsVersioned, type VersionActions } from '../version/version-actions';
8
+ /**
9
+ * Final configuration for a project after applying release group and project level overrides
10
+ */
11
+ export interface FinalConfigForProject {
12
+ specifierSource: NxReleaseVersionConfiguration['specifierSource'];
13
+ currentVersionResolver: NxReleaseVersionConfiguration['currentVersionResolver'];
14
+ currentVersionResolverMetadata: NxReleaseVersionConfiguration['currentVersionResolverMetadata'];
15
+ fallbackCurrentVersionResolver: NxReleaseVersionConfiguration['fallbackCurrentVersionResolver'];
16
+ versionPrefix: NxReleaseVersionConfiguration['versionPrefix'];
17
+ preserveLocalDependencyProtocols: NxReleaseVersionConfiguration['preserveLocalDependencyProtocols'];
18
+ preserveMatchingDependencyRanges: NxReleaseVersionConfiguration['preserveMatchingDependencyRanges'];
19
+ versionActionsOptions: NxReleaseVersionConfiguration['versionActionsOptions'];
20
+ manifestRootsToUpdate: Array<Exclude<NxReleaseVersionConfiguration['manifestRootsToUpdate'][number], string>>;
21
+ dockerOptions: NxReleaseDockerConfiguration & {
22
+ groupPreVersionCommand?: string;
23
+ };
24
+ }
25
+ interface GroupNode {
26
+ group: ReleaseGroupWithName;
27
+ dependencies: Set<string>;
28
+ dependents: Set<string>;
29
+ }
30
+ export interface CreateReleaseGraphOptions {
31
+ tree: Tree;
32
+ projectGraph: ProjectGraph;
33
+ nxReleaseConfig: NxReleaseConfig;
34
+ filters: {
35
+ projects?: string[];
36
+ groups?: string[];
37
+ };
38
+ firstRelease: boolean;
39
+ preid?: string;
40
+ verbose: boolean;
41
+ /**
42
+ * Current version resolution is not needed for publishing, so in cases where the publish subcommand needs to build a release graph,
43
+ * we allow it to skip this step.
44
+ */
45
+ skipVersionResolution?: boolean;
46
+ versionActionsOptionsOverrides?: Record<string, unknown>;
47
+ }
48
+ export declare const validReleaseVersionPrefixes: readonly ["auto", "", "~", "^", "="];
49
+ /**
50
+ * The complete release graph containing all relationships, caches, and computed data
51
+ * necessary for efficient release operations across versioning, changelog, and publishing.
52
+ *
53
+ * This class encapsulates the complex dependency graph between projects and release groups,
54
+ * providing convenient methods for querying relationships and accessing cached data.
55
+ */
56
+ export declare class ReleaseGraph {
57
+ releaseGroups: ReleaseGroupWithName[];
58
+ readonly filters: {
59
+ projects?: string[];
60
+ groups?: string[];
61
+ };
62
+ readonly projectToReleaseGroup: Map<string, ReleaseGroupWithName>;
63
+ readonly projectToDependents: Map<string, Set<string>>;
64
+ readonly projectToDependencies: Map<string, Set<string>>;
65
+ readonly projectToUpdateDependentsSetting: Map<string, "never" | "auto" | "always">;
66
+ readonly groupGraph: Map<string, GroupNode>;
67
+ sortedReleaseGroups: string[];
68
+ readonly sortedProjects: Map<string, string[]>;
69
+ readonly allProjectsConfiguredForNxRelease: Set<string>;
70
+ allProjectsToProcess: Set<string>;
71
+ readonly finalConfigsByProject: Map<string, FinalConfigForProject>;
72
+ readonly projectsToVersionActions: Map<string, VersionActions>;
73
+ readonly uniqueAfterAllProjectsVersioned: Map<string, AfterAllProjectsVersioned>;
74
+ readonly projectLoggers: Map<string, ProjectLogger>;
75
+ readonly cachedCurrentVersions: Map<string, string>;
76
+ readonly cachedLatestMatchingGitTag: Map<string, import("./git").GitTagAndVersion>;
77
+ readonly currentVersionsPerFixedReleaseGroup: Map<string, {
78
+ currentVersion: string;
79
+ originatingProjectName: string;
80
+ logText: string;
81
+ }>;
82
+ readonly originalDependentProjectsPerProject: Map<string, {
83
+ source: string;
84
+ target: string;
85
+ type: string;
86
+ dependencyCollection: string;
87
+ rawVersionSpec: string;
88
+ }[]>;
89
+ readonly releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>;
90
+ private originalFilteredProjects;
91
+ /**
92
+ * User-friendly log describing what the filter matched.
93
+ * Null if no filters were applied.
94
+ */
95
+ filterLog: {
96
+ title: string;
97
+ bodyLines: string[];
98
+ } | null;
99
+ constructor(releaseGroups: ReleaseGroupWithName[], filters: {
100
+ projects?: string[];
101
+ groups?: string[];
102
+ });
103
+ /**
104
+ * Initialize the graph by building all relationships and caches
105
+ * @internal - Called by createReleaseGraph(), not meant for external use
106
+ */
107
+ init(options: CreateReleaseGraphOptions): Promise<void>;
108
+ /**
109
+ * Setup mapping from project to release group and cache updateDependents settings
110
+ */
111
+ private setupProjectReleaseGroupMapping;
112
+ /**
113
+ * Apply initial filtering to construct releaseGroupToFilteredProjects based on filters.
114
+ * This determines the base set of projects and groups before considering dependencies.
115
+ */
116
+ private applyInitialFiltering;
117
+ /**
118
+ * Check if any filters are applied
119
+ */
120
+ private hasAnyFilters;
121
+ /**
122
+ * Setup projects to process and resolve version actions
123
+ */
124
+ private setupProjectsToProcess;
125
+ /**
126
+ * Precompute dependency relationships between all projects
127
+ */
128
+ private precomputeDependencyRelationships;
129
+ /**
130
+ * Apply dependency-aware filtering that considers updateDependents configuration.
131
+ * This includes transitive dependents based on updateDependents setting ('always' by default, or 'auto').
132
+ */
133
+ private applyDependencyAwareFiltering;
134
+ /**
135
+ * Validate that the filter doesn't try to isolate projects in fixed release groups
136
+ */
137
+ private validateFilterAgainstFixedGroups;
138
+ /**
139
+ * Find dependents that should be included in processing based on updateDependents configuration
140
+ */
141
+ private findDependentsToProcess;
142
+ /**
143
+ * Generate user-friendly log describing what the filter matched
144
+ */
145
+ private generateFilterLog;
146
+ /**
147
+ * Build the group graph structure
148
+ */
149
+ private buildGroupGraphStructure;
150
+ /**
151
+ * Resolve current versions for all projects that will be processed
152
+ */
153
+ private resolveCurrentVersionsForProjects;
154
+ /**
155
+ * Build dependency relationships between release groups
156
+ */
157
+ private buildGroupDependencyGraph;
158
+ /**
159
+ * Topologically sort release groups
160
+ */
161
+ private topologicallySortReleaseGroups;
162
+ /**
163
+ * Topologically sort projects within a release group
164
+ */
165
+ private topologicallySortProjects;
166
+ private populateDependentProjectsData;
167
+ /**
168
+ * Get all non-implicit dependents for a set of projects
169
+ */
170
+ private getAllNonImplicitDependents;
171
+ /**
172
+ * Resolve final configuration for a project
173
+ *
174
+ * NOTE: We are providing ultimate fallback values via ?? here mainly just to keep TypeScript happy.
175
+ * All default values should have been applied by this point by config.ts but the types can't know
176
+ * that for sure at this point.
177
+ */
178
+ private static resolveFinalConfigForProject;
179
+ /**
180
+ * Get the release group for a given project
181
+ */
182
+ getReleaseGroupForProject(projectName: string): ReleaseGroupWithName | undefined;
183
+ /**
184
+ * Get the release group name for a given project
185
+ */
186
+ getReleaseGroupNameForProject(projectName: string): string | null;
187
+ /**
188
+ * Get the dependencies of a project
189
+ */
190
+ getProjectDependencies(projectName: string): Set<string>;
191
+ /**
192
+ * Get the dependents of a project (projects that depend on it)
193
+ */
194
+ getProjectDependents(projectName: string): Set<string>;
195
+ /**
196
+ * Get the version actions for a project
197
+ */
198
+ getVersionActionsForProject(projectName: string): VersionActions | undefined;
199
+ /**
200
+ * Check if a project will be processed
201
+ */
202
+ isProjectToProcess(projectName: string): boolean;
203
+ /**
204
+ * Runs validation on resolved VersionActions instances. E.g. check that manifest files exist for all projects that will be processed.
205
+ * This should be called after preVersionCommand has run, as those commands may create manifest files that are needed for versioning.
206
+ */
207
+ validate(tree: Tree): Promise<void>;
208
+ }
209
+ /**
210
+ * Creates a complete release graph by analyzing all release groups, projects, and their relationships.
211
+ *
212
+ * This function builds the graph structure, applies filtering logic that considers dependencies
213
+ * and updateDependents configuration, and caches all necessary data.
214
+ *
215
+ * The returned graph can be reused across versioning, changelog, and publishing operations.
216
+ */
217
+ export declare function createReleaseGraph(options: CreateReleaseGraphOptions): Promise<ReleaseGraph>;
218
+ export {};
219
+ //# sourceMappingURL=release-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-graph.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/release-graph.ts"],"names":[],"mappings":"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"}