nx 19.6.0-beta.1 → 19.6.0-beta.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.
- package/bin/post-install.js +8 -0
- package/package.json +12 -12
- package/schemas/nx-schema.json +55 -4
- package/schemas/project-schema.json +7 -0
- package/src/adapter/compat.d.ts +1 -1
- package/src/adapter/compat.js +1 -0
- package/src/command-line/nx-commands.js +3 -0
- package/src/command-line/release/changelog.js +9 -9
- package/src/command-line/release/command-object.d.ts +12 -3
- package/src/command-line/release/command-object.js +16 -1
- package/src/command-line/release/config/config.js +4 -2
- package/src/command-line/release/config/filter-release-groups.d.ts +2 -2
- package/src/command-line/release/config/filter-release-groups.js +1 -1
- package/src/command-line/release/config/version-plans.d.ts +1 -1
- package/src/command-line/release/config/version-plans.js +12 -12
- package/src/command-line/release/plan-check.d.ts +4 -0
- package/src/command-line/release/plan-check.js +225 -0
- package/src/command-line/release/plan.js +1 -1
- package/src/command-line/release/release.js +3 -3
- package/src/command-line/release/version.js +1 -1
- package/src/command-line/sync/command-object.d.ts +6 -0
- package/src/command-line/sync/command-object.js +25 -0
- package/src/command-line/sync/sync.d.ts +6 -0
- package/src/command-line/sync/sync.js +30 -0
- package/src/config/nx-json.d.ts +32 -2
- package/src/config/workspace-json-project-json.d.ts +5 -0
- package/src/daemon/client/client.d.ts +5 -0
- package/src/daemon/client/client.js +33 -0
- package/src/daemon/message-types/flush-sync-generator-changes-to-disk.d.ts +6 -0
- package/src/daemon/message-types/flush-sync-generator-changes-to-disk.js +11 -0
- package/src/daemon/message-types/get-registered-sync-generators.d.ts +5 -0
- package/src/daemon/message-types/get-registered-sync-generators.js +11 -0
- package/src/daemon/message-types/get-sync-generator-changes.d.ts +6 -0
- package/src/daemon/message-types/get-sync-generator-changes.js +11 -0
- package/src/daemon/message-types/update-workspace-context.d.ts +8 -0
- package/src/daemon/message-types/update-workspace-context.js +11 -0
- package/src/daemon/server/handle-flush-sync-generator-changes-to-disk.d.ts +2 -0
- package/src/daemon/server/handle-flush-sync-generator-changes-to-disk.js +11 -0
- package/src/daemon/server/handle-get-registered-sync-generators.d.ts +2 -0
- package/src/daemon/server/handle-get-registered-sync-generators.js +11 -0
- package/src/daemon/server/handle-get-sync-generator-changes.d.ts +2 -0
- package/src/daemon/server/handle-get-sync-generator-changes.js +17 -0
- package/src/daemon/server/handle-update-workspace-context.d.ts +2 -0
- package/src/daemon/server/handle-update-workspace-context.js +11 -0
- package/src/daemon/server/project-graph-incremental-recomputation.d.ts +1 -0
- package/src/daemon/server/project-graph-incremental-recomputation.js +19 -2
- package/src/daemon/server/server.js +25 -0
- package/src/daemon/server/sync-generators.d.ts +6 -0
- package/src/daemon/server/sync-generators.js +202 -0
- package/src/daemon/socket-utils.js +18 -5
- package/src/daemon/tmp-dir.js +2 -1
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +1 -1
- package/src/tasks-runner/run-command.d.ts +1 -1
- package/src/tasks-runner/run-command.js +120 -2
- package/src/utils/command-line-utils.js +1 -1
- package/src/utils/plugins/output.js +1 -1
- package/src/utils/sync-generators.d.ts +22 -0
- package/src/utils/sync-generators.js +161 -0
- package/src/utils/workspace-context.d.ts +1 -0
- package/src/utils/workspace-context.js +16 -0
- package/src/daemon/message-types/update-context-files.d.ts +0 -7
- package/src/daemon/message-types/update-context-files.js +0 -11
package/bin/post-install.js
CHANGED
@@ -53,3 +53,11 @@ function isMainNxPackage() {
|
|
53
53
|
const thisNxPath = require.resolve('nx');
|
54
54
|
return mainNxPath === thisNxPath;
|
55
55
|
}
|
56
|
+
process.on('uncaughtException', (e) => {
|
57
|
+
logger_1.logger.verbose(e);
|
58
|
+
process.exit(0);
|
59
|
+
});
|
60
|
+
process.on('unhandledRejection', (e) => {
|
61
|
+
logger_1.logger.verbose(e);
|
62
|
+
process.exit(0);
|
63
|
+
});
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "19.6.0-beta.
|
3
|
+
"version": "19.6.0-beta.3",
|
4
4
|
"private": false,
|
5
5
|
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
|
6
6
|
"repository": {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"yargs-parser": "21.1.1",
|
72
72
|
"node-machine-id": "1.1.12",
|
73
73
|
"ora": "5.3.0",
|
74
|
-
"@nrwl/tao": "19.6.0-beta.
|
74
|
+
"@nrwl/tao": "19.6.0-beta.3"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
77
|
"@swc-node/register": "^1.8.0",
|
@@ -86,16 +86,16 @@
|
|
86
86
|
}
|
87
87
|
},
|
88
88
|
"optionalDependencies": {
|
89
|
-
"@nx/nx-darwin-x64": "19.6.0-beta.
|
90
|
-
"@nx/nx-darwin-arm64": "19.6.0-beta.
|
91
|
-
"@nx/nx-linux-x64-gnu": "19.6.0-beta.
|
92
|
-
"@nx/nx-linux-x64-musl": "19.6.0-beta.
|
93
|
-
"@nx/nx-win32-x64-msvc": "19.6.0-beta.
|
94
|
-
"@nx/nx-linux-arm64-gnu": "19.6.0-beta.
|
95
|
-
"@nx/nx-linux-arm64-musl": "19.6.0-beta.
|
96
|
-
"@nx/nx-linux-arm-gnueabihf": "19.6.0-beta.
|
97
|
-
"@nx/nx-win32-arm64-msvc": "19.6.0-beta.
|
98
|
-
"@nx/nx-freebsd-x64": "19.6.0-beta.
|
89
|
+
"@nx/nx-darwin-x64": "19.6.0-beta.3",
|
90
|
+
"@nx/nx-darwin-arm64": "19.6.0-beta.3",
|
91
|
+
"@nx/nx-linux-x64-gnu": "19.6.0-beta.3",
|
92
|
+
"@nx/nx-linux-x64-musl": "19.6.0-beta.3",
|
93
|
+
"@nx/nx-win32-x64-msvc": "19.6.0-beta.3",
|
94
|
+
"@nx/nx-linux-arm64-gnu": "19.6.0-beta.3",
|
95
|
+
"@nx/nx-linux-arm64-musl": "19.6.0-beta.3",
|
96
|
+
"@nx/nx-linux-arm-gnueabihf": "19.6.0-beta.3",
|
97
|
+
"@nx/nx-win32-arm64-msvc": "19.6.0-beta.3",
|
98
|
+
"@nx/nx-freebsd-x64": "19.6.0-beta.3"
|
99
99
|
},
|
100
100
|
"nx-migrations": {
|
101
101
|
"migrations": "./migrations.json",
|
package/schemas/nx-schema.json
CHANGED
@@ -186,8 +186,15 @@
|
|
186
186
|
"type": "string"
|
187
187
|
},
|
188
188
|
"versionPlans": {
|
189
|
-
"
|
190
|
-
|
189
|
+
"oneOf": [
|
190
|
+
{
|
191
|
+
"$ref": "#/definitions/NxReleaseVersionPlansConfiguration"
|
192
|
+
},
|
193
|
+
{
|
194
|
+
"type": "boolean",
|
195
|
+
"description": "Enables using version plans as a specifier source for versioning and to determine changes for changelog generation."
|
196
|
+
}
|
197
|
+
]
|
191
198
|
}
|
192
199
|
},
|
193
200
|
"required": ["projects"]
|
@@ -239,13 +246,45 @@
|
|
239
246
|
"$ref": "#/definitions/NxReleaseVersionConfiguration"
|
240
247
|
},
|
241
248
|
"versionPlans": {
|
242
|
-
"
|
243
|
-
|
249
|
+
"oneOf": [
|
250
|
+
{
|
251
|
+
"$ref": "#/definitions/NxReleaseVersionPlansConfiguration"
|
252
|
+
},
|
253
|
+
{
|
254
|
+
"type": "boolean",
|
255
|
+
"description": "Enables using version plans as a specifier source for versioning and to determine changes for changelog generation."
|
256
|
+
}
|
257
|
+
]
|
244
258
|
},
|
245
259
|
"releaseTagPattern": {
|
246
260
|
"type": "string"
|
247
261
|
}
|
248
262
|
}
|
263
|
+
},
|
264
|
+
"sync": {
|
265
|
+
"type": "object",
|
266
|
+
"description": "Configuration for the `nx sync` command",
|
267
|
+
"properties": {
|
268
|
+
"globalGenerators": {
|
269
|
+
"type": "array",
|
270
|
+
"items": {
|
271
|
+
"type": "string"
|
272
|
+
},
|
273
|
+
"description": "List of workspace-wide sync generators to be run (not attached to targets)"
|
274
|
+
},
|
275
|
+
"generatorOptions": {
|
276
|
+
"type": "object",
|
277
|
+
"description": "Options for the sync generators.",
|
278
|
+
"additionalProperties": {
|
279
|
+
"type": "object"
|
280
|
+
}
|
281
|
+
},
|
282
|
+
"applyChanges": {
|
283
|
+
"type": "boolean",
|
284
|
+
"description": "Whether to automatically apply sync generator changes when running tasks. If not set, the user will be prompted. If set to `true`, the user will not be prompted and the changes will be applied. If set to `false`, the user will not be prompted and the changes will not be applied."
|
285
|
+
}
|
286
|
+
},
|
287
|
+
"additionalProperties": false
|
249
288
|
}
|
250
289
|
},
|
251
290
|
"definitions": {
|
@@ -673,6 +712,18 @@
|
|
673
712
|
}
|
674
713
|
}
|
675
714
|
},
|
715
|
+
"NxReleaseVersionPlansConfiguration": {
|
716
|
+
"type": "object",
|
717
|
+
"properties": {
|
718
|
+
"ignorePatternsForPlanCheck": {
|
719
|
+
"type": "array",
|
720
|
+
"items": {
|
721
|
+
"type": "string"
|
722
|
+
},
|
723
|
+
"description": "Changes to files matching any of these optional patterns will be excluded from the affected project logic within the `nx release plan:check` command. This is useful for ignoring files that are not relevant to the versioning process, such as documentation or configuration files."
|
724
|
+
}
|
725
|
+
}
|
726
|
+
},
|
676
727
|
"ChangelogRenderOptions": {
|
677
728
|
"type": "object",
|
678
729
|
"additionalProperties": true
|
@@ -153,6 +153,13 @@
|
|
153
153
|
}
|
154
154
|
},
|
155
155
|
"additionalProperties": true
|
156
|
+
},
|
157
|
+
"syncGenerators": {
|
158
|
+
"type": "array",
|
159
|
+
"items": {
|
160
|
+
"type": "string"
|
161
|
+
},
|
162
|
+
"description": "List of generators to run before the target to ensure the workspace is up to date"
|
156
163
|
}
|
157
164
|
}
|
158
165
|
}
|
package/src/adapter/compat.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
export declare const allowedProjectExtensions: readonly ["tags", "implicitDependencies", "configFilePath", "$schema", "generators", "namedInputs", "name", "files", "root", "sourceRoot", "projectType", "release", "includedScripts", "metadata"];
|
2
|
-
export declare const allowedWorkspaceExtensions: readonly ["implicitDependencies", "affected", "defaultBase", "tasksRunnerOptions", "workspaceLayout", "plugins", "targetDefaults", "files", "generators", "namedInputs", "extends", "cli", "pluginsConfig", "defaultProject", "installation", "release", "nxCloudAccessToken", "nxCloudId", "nxCloudUrl", "nxCloudEncryptionKey", "parallel", "cacheDirectory", "useDaemonProcess", "useInferencePlugins", "neverConnectToCloud"];
|
2
|
+
export declare const allowedWorkspaceExtensions: readonly ["implicitDependencies", "affected", "defaultBase", "tasksRunnerOptions", "workspaceLayout", "plugins", "targetDefaults", "files", "generators", "namedInputs", "extends", "cli", "pluginsConfig", "defaultProject", "installation", "release", "nxCloudAccessToken", "nxCloudId", "nxCloudUrl", "nxCloudEncryptionKey", "parallel", "cacheDirectory", "useDaemonProcess", "useInferencePlugins", "neverConnectToCloud", "sync"];
|
package/src/adapter/compat.js
CHANGED
@@ -24,6 +24,7 @@ const command_object_18 = require("./reset/command-object");
|
|
24
24
|
const command_object_19 = require("./release/command-object");
|
25
25
|
const command_object_20 = require("./add/command-object");
|
26
26
|
const command_objects_1 = require("./deprecated/command-objects");
|
27
|
+
const command_object_21 = require("./sync/command-object");
|
27
28
|
// Ensure that the output takes up the available width of the terminal.
|
28
29
|
yargs.wrap(yargs.terminalWidth());
|
29
30
|
exports.parserConfiguration = {
|
@@ -67,6 +68,8 @@ exports.commandsObject = yargs
|
|
67
68
|
.command(command_object_14.yargsRunCommand)
|
68
69
|
.command(command_object_15.yargsRunManyCommand)
|
69
70
|
.command(command_object_16.yargsShowCommand)
|
71
|
+
.command(command_object_21.yargsSyncCommand)
|
72
|
+
.command(command_object_21.yargsSyncCheckCommand)
|
70
73
|
.command(command_object_2.yargsViewLogsCommand)
|
71
74
|
.command(command_object_17.yargsWatchCommand)
|
72
75
|
.command(command_object_14.yargsNxInfixCommand)
|
@@ -84,7 +84,7 @@ function createAPI(overrideReleaseConfig) {
|
|
84
84
|
process.exit(1);
|
85
85
|
}
|
86
86
|
const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
|
87
|
-
(0, version_plans_1.
|
87
|
+
(0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGroups, Object.keys(projectGraph.nodes));
|
88
88
|
if (args.deleteVersionPlans === undefined) {
|
89
89
|
// default to deleting version plans in this command instead of after versioning
|
90
90
|
args.deleteVersionPlans = true;
|
@@ -140,12 +140,12 @@ function createAPI(overrideReleaseConfig) {
|
|
140
140
|
// TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
|
141
141
|
let workspaceChangelogCommits = [];
|
142
142
|
// If there are multiple release groups, we'll just skip the workspace changelog anyway.
|
143
|
-
const versionPlansEnabledForWorkspaceChangelog = releaseGroups[0].
|
143
|
+
const versionPlansEnabledForWorkspaceChangelog = releaseGroups[0].resolvedVersionPlans;
|
144
144
|
if (versionPlansEnabledForWorkspaceChangelog) {
|
145
145
|
if (releaseGroups.length === 1) {
|
146
146
|
const releaseGroup = releaseGroups[0];
|
147
147
|
if (releaseGroup.projectsRelationship === 'fixed') {
|
148
|
-
const versionPlans = releaseGroup.
|
148
|
+
const versionPlans = releaseGroup.resolvedVersionPlans;
|
149
149
|
workspaceChangelogChanges = versionPlans
|
150
150
|
.flatMap((vp) => {
|
151
151
|
const releaseType = versionPlanSemverReleaseTypeToChangelogType(vp.groupVersionBump);
|
@@ -296,8 +296,8 @@ function createAPI(overrideReleaseConfig) {
|
|
296
296
|
let changes = null;
|
297
297
|
// TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
|
298
298
|
let commits;
|
299
|
-
if (releaseGroup.
|
300
|
-
changes = releaseGroup.
|
299
|
+
if (releaseGroup.resolvedVersionPlans) {
|
300
|
+
changes = releaseGroup.resolvedVersionPlans
|
301
301
|
.map((vp) => {
|
302
302
|
const bumpForProject = vp.projectVersionBumps[project.name];
|
303
303
|
if (!bumpForProject) {
|
@@ -396,8 +396,8 @@ function createAPI(overrideReleaseConfig) {
|
|
396
396
|
let changes = [];
|
397
397
|
// TODO: remove this after the changelog renderer is refactored to remove coupling with git commits
|
398
398
|
let commits = [];
|
399
|
-
if (releaseGroup.
|
400
|
-
changes = releaseGroup.
|
399
|
+
if (releaseGroup.resolvedVersionPlans) {
|
400
|
+
changes = releaseGroup.resolvedVersionPlans
|
401
401
|
.flatMap((vp) => {
|
402
402
|
const releaseType = versionPlanSemverReleaseTypeToChangelogType(vp.groupVersionBump);
|
403
403
|
const changes = !vp.triggeredByProjects
|
@@ -585,8 +585,8 @@ async function applyChangesAndExit(args, nxReleaseConfig, tree, toSHA, postGitTa
|
|
585
585
|
if (args.deleteVersionPlans && !args.dryRun) {
|
586
586
|
const planFiles = new Set();
|
587
587
|
releaseGroups.forEach((group) => {
|
588
|
-
if (group.
|
589
|
-
group.
|
588
|
+
if (group.resolvedVersionPlans) {
|
589
|
+
group.resolvedVersionPlans.forEach((plan) => {
|
590
590
|
(0, fs_extra_1.removeSync)(plan.absolutePath);
|
591
591
|
planFiles.add(plan.relativePath);
|
592
592
|
});
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import { CommandModule } from 'yargs';
|
2
2
|
import { OutputStyle, RunManyOptions } from '../yargs-utils/shared-options';
|
3
3
|
import { VersionData } from './utils/shared';
|
4
|
-
export interface
|
4
|
+
export interface BaseNxReleaseArgs {
|
5
|
+
verbose?: boolean;
|
6
|
+
printConfig?: boolean | 'debug';
|
7
|
+
}
|
8
|
+
export interface NxReleaseArgs extends BaseNxReleaseArgs {
|
5
9
|
groups?: string[];
|
6
10
|
projects?: string[];
|
7
11
|
dryRun?: boolean;
|
8
|
-
verbose?: boolean;
|
9
|
-
printConfig?: boolean | 'debug';
|
10
12
|
}
|
11
13
|
interface GitCommitAndTagOptions {
|
12
14
|
stageChanges?: boolean;
|
@@ -43,6 +45,13 @@ export type PlanOptions = NxReleaseArgs & {
|
|
43
45
|
bump?: string;
|
44
46
|
message?: string;
|
45
47
|
};
|
48
|
+
export type PlanCheckOptions = BaseNxReleaseArgs & {
|
49
|
+
base?: string;
|
50
|
+
head?: string;
|
51
|
+
files?: string;
|
52
|
+
uncommitted?: boolean;
|
53
|
+
untracked?: boolean;
|
54
|
+
};
|
46
55
|
export type ReleaseOptions = NxReleaseArgs & FirstReleaseArgs & {
|
47
56
|
yes?: boolean;
|
48
57
|
skipPublish?: boolean;
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.yargsReleaseCommand = void 0;
|
4
4
|
const yargs_1 = require("yargs");
|
5
5
|
const nx_json_1 = require("../../config/nx-json");
|
6
|
+
const command_line_utils_1 = require("../../utils/command-line-utils");
|
6
7
|
const logger_1 = require("../../utils/logger");
|
7
8
|
const shared_options_1 = require("../yargs-utils/shared-options");
|
8
|
-
const command_line_utils_1 = require("../../utils/command-line-utils");
|
9
9
|
exports.yargsReleaseCommand = {
|
10
10
|
command: 'release',
|
11
11
|
describe: 'Orchestrate versioning and publishing of applications and libraries',
|
@@ -15,6 +15,7 @@ exports.yargsReleaseCommand = {
|
|
15
15
|
.command(changelogCommand)
|
16
16
|
.command(publishCommand)
|
17
17
|
.command(planCommand)
|
18
|
+
.command(planCheckCommand)
|
18
19
|
.demandCommand()
|
19
20
|
// Error on typos/mistyped CLI args, there is no reason to support arbitrary unknown args for these commands
|
20
21
|
.strictOptions()
|
@@ -206,6 +207,7 @@ const publishCommand = {
|
|
206
207
|
const planCommand = {
|
207
208
|
command: 'plan [bump]',
|
208
209
|
aliases: ['pl'],
|
210
|
+
// TODO: Remove this when docs are added
|
209
211
|
// Create a plan to pick a new version and generate a changelog entry.
|
210
212
|
// Hidden for now until the feature is more stable
|
211
213
|
describe: false,
|
@@ -237,6 +239,19 @@ const planCommand = {
|
|
237
239
|
process.exit(result);
|
238
240
|
},
|
239
241
|
};
|
242
|
+
const planCheckCommand = {
|
243
|
+
command: 'plan:check',
|
244
|
+
// TODO: Remove this when docs are added
|
245
|
+
// Create a plan to pick a new version and generate a changelog entry.
|
246
|
+
// Hidden for now until the feature is more stable
|
247
|
+
describe: false,
|
248
|
+
builder: (yargs) => (0, shared_options_1.withAffectedOptions)(yargs),
|
249
|
+
handler: async (args) => {
|
250
|
+
const release = await Promise.resolve().then(() => require('./plan-check'));
|
251
|
+
const result = await release.releasePlanCheckCLIHandler(args);
|
252
|
+
process.exit(result);
|
253
|
+
},
|
254
|
+
};
|
240
255
|
function coerceParallelOption(args) {
|
241
256
|
return {
|
242
257
|
...args,
|
@@ -144,7 +144,8 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
144
144
|
? defaultIndependentReleaseTagPattern
|
145
145
|
: defaultFixedReleaseTagPattern),
|
146
146
|
conventionalCommits: conventional_commits_1.DEFAULT_CONVENTIONAL_COMMITS_CONFIG,
|
147
|
-
versionPlans:
|
147
|
+
versionPlans: (userConfig.versionPlans ||
|
148
|
+
false),
|
148
149
|
};
|
149
150
|
const groupProjectsRelationship = userConfig.projectsRelationship || WORKSPACE_DEFAULTS.projectsRelationship;
|
150
151
|
const GROUP_DEFAULTS = {
|
@@ -200,7 +201,8 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
200
201
|
git: userConfig.git,
|
201
202
|
},
|
202
203
|
], normalizeTrueToEmptyObject(userConfig.changelog));
|
203
|
-
const rootVersionPlansConfig = userConfig.versionPlans ??
|
204
|
+
const rootVersionPlansConfig = (userConfig.versionPlans ??
|
205
|
+
WORKSPACE_DEFAULTS.versionPlans);
|
204
206
|
const rootConventionalCommitsConfig = deepMergeDefaults([WORKSPACE_DEFAULTS.conventionalCommits], fillUnspecifiedConventionalCommitsProperties(normalizeConventionalCommitsConfig(userConfig.conventionalCommits)));
|
205
207
|
// these options are not supported at the group level, only the root/command level
|
206
208
|
const rootVersionWithoutGlobalOptions = { ...rootVersionConfig };
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { ProjectGraph } from '../../../config/project-graph';
|
2
2
|
import { NxReleaseConfig } from './config';
|
3
3
|
import { GroupVersionPlan, ProjectsVersionPlan } from './version-plans';
|
4
|
-
export type ReleaseGroupWithName =
|
4
|
+
export type ReleaseGroupWithName = NxReleaseConfig['groups'][string] & {
|
5
5
|
name: string;
|
6
|
-
|
6
|
+
resolvedVersionPlans: (ProjectsVersionPlan | GroupVersionPlan)[] | false;
|
7
7
|
};
|
8
8
|
export declare function filterReleaseGroups(projectGraph: ProjectGraph, nxReleaseConfig: NxReleaseConfig, projectsFilter?: string[], groupsFilter?: string[]): {
|
9
9
|
error: null | {
|
@@ -9,7 +9,7 @@ function filterReleaseGroups(projectGraph, nxReleaseConfig, projectsFilter, grou
|
|
9
9
|
return {
|
10
10
|
...group,
|
11
11
|
name,
|
12
|
-
|
12
|
+
resolvedVersionPlans: group.versionPlans ? [] : false,
|
13
13
|
};
|
14
14
|
});
|
15
15
|
const filteredProjectToReleaseGroup = new Map();
|
@@ -25,5 +25,5 @@ export interface ProjectsVersionPlan extends VersionPlan {
|
|
25
25
|
projectVersionBumps: Record<string, ReleaseType>;
|
26
26
|
}
|
27
27
|
export declare function readRawVersionPlans(): Promise<RawVersionPlan[]>;
|
28
|
-
export declare function
|
28
|
+
export declare function setResolvedVersionPlansOnGroups(rawVersionPlans: RawVersionPlan[], releaseGroups: ReleaseGroupWithName[], allProjectNamesInWorkspace: string[]): ReleaseGroupWithName[];
|
29
29
|
export declare function getVersionPlansAbsolutePath(): string;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.readRawVersionPlans = readRawVersionPlans;
|
4
|
-
exports.
|
4
|
+
exports.setResolvedVersionPlansOnGroups = setResolvedVersionPlansOnGroups;
|
5
5
|
exports.getVersionPlansAbsolutePath = getVersionPlansAbsolutePath;
|
6
6
|
const fs_1 = require("fs");
|
7
7
|
const fs_extra_1 = require("fs-extra");
|
@@ -35,7 +35,7 @@ async function readRawVersionPlans() {
|
|
35
35
|
}
|
36
36
|
return versionPlans;
|
37
37
|
}
|
38
|
-
function
|
38
|
+
function setResolvedVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNamesInWorkspace) {
|
39
39
|
const groupsByName = releaseGroups.reduce((acc, group) => acc.set(group.name, group), new Map());
|
40
40
|
const isDefaultGroup = isDefault(releaseGroups);
|
41
41
|
for (const rawVersionPlan of rawVersionPlans) {
|
@@ -45,7 +45,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
45
45
|
for (const [key, value] of Object.entries(rawVersionPlan.content)) {
|
46
46
|
if (groupsByName.has(key)) {
|
47
47
|
const group = groupsByName.get(key);
|
48
|
-
if (!group.
|
48
|
+
if (!group.resolvedVersionPlans) {
|
49
49
|
if (isDefaultGroup) {
|
50
50
|
throw new Error(`Found a version bump in '${rawVersionPlan.fileName}' but version plans are not enabled.`);
|
51
51
|
}
|
@@ -69,7 +69,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
69
69
|
throw new Error(`Found a version bump for group '${key}' in '${rawVersionPlan.fileName}' with an invalid release type. Please specify one of ${semver_1.RELEASE_TYPES.join(', ')}.`);
|
70
70
|
}
|
71
71
|
}
|
72
|
-
const existingPlan = (group.
|
72
|
+
const existingPlan = (group.resolvedVersionPlans.find((plan) => plan.fileName === rawVersionPlan.fileName));
|
73
73
|
if (existingPlan) {
|
74
74
|
if (existingPlan.groupVersionBump !== value) {
|
75
75
|
if (isDefaultGroup) {
|
@@ -81,7 +81,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
81
81
|
}
|
82
82
|
}
|
83
83
|
else {
|
84
|
-
group.
|
84
|
+
group.resolvedVersionPlans.push({
|
85
85
|
absolutePath: rawVersionPlan.absolutePath,
|
86
86
|
relativePath: rawVersionPlan.relativePath,
|
87
87
|
fileName: rawVersionPlan.fileName,
|
@@ -104,7 +104,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
104
104
|
throw new Error(`Found a version bump for project '${key}' in '${rawVersionPlan.fileName}' but the project is not in any configured release groups.`);
|
105
105
|
}
|
106
106
|
}
|
107
|
-
if (!groupForProject.
|
107
|
+
if (!groupForProject.resolvedVersionPlans) {
|
108
108
|
if (isDefaultGroup) {
|
109
109
|
throw new Error(`Found a version bump for project '${key}' in '${rawVersionPlan.fileName}' but version plans are not enabled.`);
|
110
110
|
}
|
@@ -116,12 +116,12 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
116
116
|
throw new Error(`Found a version bump for project '${key}' in '${rawVersionPlan.fileName}' with an invalid release type. Please specify one of ${semver_1.RELEASE_TYPES.join(', ')}.`);
|
117
117
|
}
|
118
118
|
if (groupForProject.projectsRelationship === 'independent') {
|
119
|
-
const existingPlan = (groupForProject.
|
119
|
+
const existingPlan = (groupForProject.resolvedVersionPlans.find((plan) => plan.fileName === rawVersionPlan.fileName));
|
120
120
|
if (existingPlan) {
|
121
121
|
existingPlan.projectVersionBumps[key] = value;
|
122
122
|
}
|
123
123
|
else {
|
124
|
-
groupForProject.
|
124
|
+
groupForProject.resolvedVersionPlans.push({
|
125
125
|
absolutePath: rawVersionPlan.absolutePath,
|
126
126
|
relativePath: rawVersionPlan.relativePath,
|
127
127
|
fileName: rawVersionPlan.fileName,
|
@@ -134,7 +134,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
134
134
|
}
|
135
135
|
}
|
136
136
|
else {
|
137
|
-
const existingPlan = (groupForProject.
|
137
|
+
const existingPlan = (groupForProject.resolvedVersionPlans.find((plan) => plan.fileName === rawVersionPlan.fileName));
|
138
138
|
// This can occur if the same fixed release group has multiple entries for different projects within
|
139
139
|
// the same version plan file. This will be the case when users are using the default release group.
|
140
140
|
if (existingPlan) {
|
@@ -151,7 +151,7 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
151
151
|
}
|
152
152
|
}
|
153
153
|
else {
|
154
|
-
groupForProject.
|
154
|
+
groupForProject.resolvedVersionPlans.push({
|
155
155
|
absolutePath: rawVersionPlan.absolutePath,
|
156
156
|
relativePath: rawVersionPlan.relativePath,
|
157
157
|
fileName: rawVersionPlan.fileName,
|
@@ -169,8 +169,8 @@ function setVersionPlansOnGroups(rawVersionPlans, releaseGroups, allProjectNames
|
|
169
169
|
}
|
170
170
|
// Order the plans from newest to oldest
|
171
171
|
releaseGroups.forEach((group) => {
|
172
|
-
if (group.
|
173
|
-
group.
|
172
|
+
if (group.resolvedVersionPlans) {
|
173
|
+
group.resolvedVersionPlans.sort((a, b) => b.createdOnMs - a.createdOnMs);
|
174
174
|
}
|
175
175
|
});
|
176
176
|
return releaseGroups;
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { NxReleaseConfiguration } from '../../config/nx-json';
|
2
|
+
import { PlanCheckOptions, PlanOptions } from './command-object';
|
3
|
+
export declare const releasePlanCheckCLIHandler: (args: PlanCheckOptions) => Promise<number>;
|
4
|
+
export declare function createAPI(overrideReleaseConfig: NxReleaseConfiguration): (args: PlanOptions) => Promise<number>;
|