nx 22.1.0-canary.20251110-73ecb30 → 22.1.0-canary.20251111-647d751

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 (48) hide show
  1. package/executors.json +16 -16
  2. package/generators.json +13 -13
  3. package/migrations.json +143 -143
  4. package/package.json +11 -14
  5. package/presets/npm.json +4 -4
  6. package/release/changelog-renderer/index.d.ts.map +1 -1
  7. package/release/changelog-renderer/index.js +13 -8
  8. package/schemas/nx-schema.json +1286 -1286
  9. package/schemas/project-schema.json +359 -359
  10. package/schemas/workspace-schema.json +165 -165
  11. package/src/ai/set-up-ai-agents/schema.json +31 -31
  12. package/src/command-line/release/changelog/commit-utils.d.ts +14 -0
  13. package/src/command-line/release/changelog/commit-utils.d.ts.map +1 -0
  14. package/src/command-line/release/changelog/commit-utils.js +63 -0
  15. package/src/command-line/release/changelog/version-plan-filtering.d.ts +39 -0
  16. package/src/command-line/release/changelog/version-plan-filtering.d.ts.map +1 -0
  17. package/src/command-line/release/changelog/version-plan-filtering.js +151 -0
  18. package/src/command-line/release/changelog/version-plan-utils.d.ts +32 -0
  19. package/src/command-line/release/changelog/version-plan-utils.d.ts.map +1 -0
  20. package/src/command-line/release/changelog/version-plan-utils.js +92 -0
  21. package/src/command-line/release/changelog.d.ts +1 -16
  22. package/src/command-line/release/changelog.d.ts.map +1 -1
  23. package/src/command-line/release/changelog.js +127 -269
  24. package/src/command-line/release/command-object.d.ts +1 -0
  25. package/src/command-line/release/command-object.d.ts.map +1 -1
  26. package/src/command-line/release/command-object.js +6 -0
  27. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  28. package/src/command-line/release/utils/shared.js +2 -2
  29. package/src/core/graph/main.js +1 -1
  30. package/src/executors/noop/schema.json +8 -8
  31. package/src/executors/run-commands/schema.json +187 -187
  32. package/src/executors/run-script/schema.json +25 -25
  33. package/src/native/nx.wasm32-wasi.wasm +0 -0
  34. package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +38 -38
  35. package/src/plugins/js/index.d.ts.map +1 -1
  36. package/src/plugins/js/index.js +55 -7
  37. package/src/plugins/js/lock-file/lock-file.d.ts +5 -2
  38. package/src/plugins/js/lock-file/lock-file.d.ts.map +1 -1
  39. package/src/plugins/js/lock-file/lock-file.js +8 -6
  40. package/src/plugins/js/lock-file/npm-parser.d.ts +5 -2
  41. package/src/plugins/js/lock-file/npm-parser.d.ts.map +1 -1
  42. package/src/plugins/js/lock-file/npm-parser.js +5 -8
  43. package/src/plugins/js/lock-file/pnpm-parser.d.ts +5 -2
  44. package/src/plugins/js/lock-file/pnpm-parser.d.ts.map +1 -1
  45. package/src/plugins/js/lock-file/pnpm-parser.js +5 -7
  46. package/src/plugins/js/lock-file/yarn-parser.d.ts +5 -2
  47. package/src/plugins/js/lock-file/yarn-parser.d.ts.map +1 -1
  48. package/src/plugins/js/lock-file/yarn-parser.js +5 -7
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterVersionPlansByCommitRange = filterVersionPlansByCommitRange;
4
+ exports.resolveChangelogFromSHA = resolveChangelogFromSHA;
5
+ exports.resolveWorkspaceChangelogFromSHA = resolveWorkspaceChangelogFromSHA;
6
+ exports.extractPreidFromVersion = extractPreidFromVersion;
7
+ exports.extractProjectsPreidFromVersionData = extractProjectsPreidFromVersionData;
8
+ const path_1 = require("path");
9
+ const semver_1 = require("semver");
10
+ const workspace_root_1 = require("../../../utils/workspace-root");
11
+ const exec_command_1 = require("../utils/exec-command");
12
+ const git_1 = require("../utils/git");
13
+ /**
14
+ * Filters version plans to only include those that were committed between the specified SHAs
15
+ * @param versionPlans The raw version plans to filter
16
+ * @param fromSHA The starting commit SHA (exclusive)
17
+ * @param toSHA The ending commit SHA (inclusive)
18
+ * @param isVerbose Whether to output verbose logging
19
+ * @returns The filtered version plans
20
+ */
21
+ async function filterVersionPlansByCommitRange(versionPlans, fromSHA, toSHA, isVerbose) {
22
+ if (versionPlans.length === 0) {
23
+ return [];
24
+ }
25
+ // Get all files added within the commit range with a single git command
26
+ const filesAddedInRange = await getFilesAddedInCommitRange(fromSHA, toSHA, isVerbose);
27
+ // Filter version plans based on whether they were added in the range
28
+ const filteredPlans = versionPlans.filter((plan) => {
29
+ const isInRange = filesAddedInRange.has(plan.absolutePath);
30
+ if (!isInRange && isVerbose) {
31
+ console.log(`Filtering out version plan '${plan.fileName}' as it was not committed in the range ${fromSHA}..${toSHA}`);
32
+ }
33
+ else if (isInRange && isVerbose) {
34
+ console.log(`Version plan '${plan.fileName}' was added in commit range`);
35
+ }
36
+ return isInRange;
37
+ });
38
+ if (isVerbose) {
39
+ console.log(`Filtered ${versionPlans.length} version plans down to ${filteredPlans.length} based on commit range`);
40
+ }
41
+ return filteredPlans;
42
+ }
43
+ /**
44
+ * Gets all version plan files that were added within the commit range
45
+ * @param fromSHA The starting commit SHA (exclusive)
46
+ * @param toSHA The ending commit SHA (inclusive)
47
+ * @param isVerbose Whether to output verbose logging
48
+ * @returns Set of absolute file paths that were added in the range
49
+ */
50
+ async function getFilesAddedInCommitRange(fromSHA, toSHA, isVerbose) {
51
+ try {
52
+ // Use git log to get version plan files added within the commit range
53
+ // --name-only shows just the file paths
54
+ // --diff-filter=A shows only added files
55
+ // -- .nx/version-plans/ limits to only files in that directory
56
+ // Note: Git pathspecs always use forward slashes, even on Windows
57
+ const stdout = await (0, exec_command_1.execCommand)('git', [
58
+ 'log',
59
+ `${fromSHA}..${toSHA}`,
60
+ '--diff-filter=A',
61
+ '--name-only',
62
+ '--pretty=format:',
63
+ '--',
64
+ '.nx/version-plans/',
65
+ ]);
66
+ // Parse the output to get unique file paths
67
+ const files = stdout
68
+ .split('\n')
69
+ .filter((line) => line.trim().length > 0)
70
+ .map((relativePath) => {
71
+ // Convert relative paths to absolute paths
72
+ return (0, path_1.join)(workspace_root_1.workspaceRoot, relativePath);
73
+ });
74
+ const uniqueFiles = new Set(files);
75
+ if (isVerbose && uniqueFiles.size > 0) {
76
+ console.log(`Found ${uniqueFiles.size} version plan files added in commit range`);
77
+ }
78
+ return uniqueFiles;
79
+ }
80
+ catch (err) {
81
+ if (isVerbose) {
82
+ console.error(`Error getting files in commit range: ${err.message || err}`);
83
+ }
84
+ // If there's an error, return empty set (no filtering)
85
+ return new Set();
86
+ }
87
+ }
88
+ /**
89
+ * Resolves the "from SHA" for changelog purposes.
90
+ * This determines the starting point for changelog generation and optional version plan filtering.
91
+ */
92
+ async function resolveChangelogFromSHA({ fromRef, tagPattern, tagPatternValues, checkAllBranchesWhen, preid, requireSemver, strictPreid, useAutomaticFromRef, }) {
93
+ // If user provided a from ref, resolve it to a SHA
94
+ if (fromRef) {
95
+ return await (0, git_1.getCommitHash)(fromRef);
96
+ }
97
+ // Otherwise, try to resolve it from the latest tag
98
+ const latestTag = await (0, git_1.getLatestGitTagForPattern)(tagPattern, tagPatternValues, {
99
+ checkAllBranchesWhen,
100
+ preid,
101
+ requireSemver,
102
+ strictPreid,
103
+ });
104
+ if (latestTag?.tag) {
105
+ return await (0, git_1.getCommitHash)(latestTag.tag);
106
+ }
107
+ // Finally, if automatic from ref is enabled, use the first commit as a fallback
108
+ if (useAutomaticFromRef) {
109
+ return await (0, git_1.getFirstGitCommit)();
110
+ }
111
+ return null;
112
+ }
113
+ /**
114
+ * Helper function for workspace-level "from SHA" resolution.
115
+ * Extracts preids and calls the generic resolver.
116
+ */
117
+ async function resolveWorkspaceChangelogFromSHA({ args, nxReleaseConfig, useAutomaticFromRef, }) {
118
+ const workspacePreid = extractPreidFromVersion(args.version);
119
+ const projectsPreid = extractProjectsPreidFromVersionData(args.versionData);
120
+ return resolveChangelogFromSHA({
121
+ fromRef: args.from,
122
+ tagPattern: nxReleaseConfig.releaseTag.pattern,
123
+ tagPatternValues: {},
124
+ checkAllBranchesWhen: nxReleaseConfig.releaseTag.checkAllBranchesWhen,
125
+ preid: workspacePreid ?? projectsPreid?.[Object.keys(projectsPreid)[0]],
126
+ requireSemver: nxReleaseConfig.releaseTag.requireSemver,
127
+ strictPreid: nxReleaseConfig.releaseTag.strictPreid,
128
+ useAutomaticFromRef,
129
+ });
130
+ }
131
+ function extractPreidFromVersion(version) {
132
+ try {
133
+ const preid = (0, semver_1.prerelease)(version)?.[0];
134
+ return typeof preid === 'string' ? preid : undefined;
135
+ }
136
+ catch {
137
+ return undefined;
138
+ }
139
+ }
140
+ function extractProjectsPreidFromVersionData(versionData) {
141
+ if (!versionData) {
142
+ return undefined;
143
+ }
144
+ const result = {};
145
+ for (const [project, data] of Object.entries(versionData)) {
146
+ if (data?.newVersion) {
147
+ result[project] = extractPreidFromVersion(data.newVersion);
148
+ }
149
+ }
150
+ return result;
151
+ }
@@ -0,0 +1,32 @@
1
+ import { ReleaseType } from 'semver';
2
+ import { GroupVersionPlan, ProjectsVersionPlan } from '../config/version-plans';
3
+ import { RawGitCommit, Reference } from '../utils/git';
4
+ export interface ChangelogChange {
5
+ type: string;
6
+ scope: string;
7
+ description: string;
8
+ affectedProjects: string[] | '*';
9
+ body?: string;
10
+ isBreaking?: boolean;
11
+ githubReferences?: Reference[];
12
+ authors?: {
13
+ name: string;
14
+ email: string;
15
+ }[];
16
+ shortHash?: string;
17
+ revertedHashes?: string[];
18
+ }
19
+ export declare function createChangesFromGroupVersionPlans(versionPlans: GroupVersionPlan[]): ChangelogChange[];
20
+ export declare function createChangesFromProjectsVersionPlans(versionPlans: ProjectsVersionPlan[], projectName: string): ChangelogChange[];
21
+ export declare function extractVersionPlanMetadata(commit: RawGitCommit | null): {
22
+ githubReferences: Reference[];
23
+ authors: {
24
+ name: string;
25
+ email: string;
26
+ }[] | undefined;
27
+ };
28
+ export declare function versionPlanSemverReleaseTypeToChangelogType(bump: ReleaseType): {
29
+ type: 'fix' | 'feat';
30
+ isBreaking: boolean;
31
+ };
32
+ //# sourceMappingURL=version-plan-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-plan-utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/changelog/version-plan-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAA0B,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,gBAAgB,EAAE,GAC/B,eAAe,EAAE,CAsCnB;AAED,wBAAgB,qCAAqC,CACnD,YAAY,EAAE,mBAAmB,EAAE,EACnC,WAAW,EAAE,MAAM,GAClB,eAAe,EAAE,CAyBnB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG;IACvE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,SAAS,CAAC;CACxD,CAcA;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,WAAW,GAChB;IACD,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB,CAeA"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createChangesFromGroupVersionPlans = createChangesFromGroupVersionPlans;
4
+ exports.createChangesFromProjectsVersionPlans = createChangesFromProjectsVersionPlans;
5
+ exports.extractVersionPlanMetadata = extractVersionPlanMetadata;
6
+ exports.versionPlanSemverReleaseTypeToChangelogType = versionPlanSemverReleaseTypeToChangelogType;
7
+ const git_1 = require("../utils/git");
8
+ function createChangesFromGroupVersionPlans(versionPlans) {
9
+ return versionPlans
10
+ .flatMap((vp) => {
11
+ const releaseType = versionPlanSemverReleaseTypeToChangelogType(vp.groupVersionBump);
12
+ const { githubReferences, authors } = extractVersionPlanMetadata(vp.commit);
13
+ const changes = !vp.triggeredByProjects
14
+ ? [
15
+ {
16
+ type: releaseType.type,
17
+ scope: '',
18
+ description: vp.message,
19
+ body: '',
20
+ isBreaking: releaseType.isBreaking,
21
+ githubReferences,
22
+ authors,
23
+ affectedProjects: '*',
24
+ },
25
+ ]
26
+ : vp.triggeredByProjects.map((project) => {
27
+ return {
28
+ type: releaseType.type,
29
+ scope: project,
30
+ description: vp.message,
31
+ body: '',
32
+ isBreaking: releaseType.isBreaking,
33
+ githubReferences,
34
+ authors,
35
+ affectedProjects: [project],
36
+ };
37
+ });
38
+ return changes;
39
+ })
40
+ .filter(Boolean);
41
+ }
42
+ function createChangesFromProjectsVersionPlans(versionPlans, projectName) {
43
+ return versionPlans
44
+ .map((vp) => {
45
+ const bumpForProject = vp.projectVersionBumps[projectName];
46
+ if (!bumpForProject) {
47
+ return null;
48
+ }
49
+ const releaseType = versionPlanSemverReleaseTypeToChangelogType(bumpForProject);
50
+ const { githubReferences, authors } = extractVersionPlanMetadata(vp.commit);
51
+ return {
52
+ type: releaseType.type,
53
+ scope: projectName,
54
+ description: vp.message,
55
+ body: '',
56
+ isBreaking: releaseType.isBreaking,
57
+ affectedProjects: Object.keys(vp.projectVersionBumps),
58
+ githubReferences,
59
+ authors,
60
+ };
61
+ })
62
+ .filter(Boolean);
63
+ }
64
+ function extractVersionPlanMetadata(commit) {
65
+ if (!commit) {
66
+ return { githubReferences: [], authors: undefined };
67
+ }
68
+ const parsedCommit = (0, git_1.parseVersionPlanCommit)(commit);
69
+ if (!parsedCommit) {
70
+ return { githubReferences: [], authors: undefined };
71
+ }
72
+ return {
73
+ githubReferences: parsedCommit.references,
74
+ authors: parsedCommit.authors,
75
+ };
76
+ }
77
+ function versionPlanSemverReleaseTypeToChangelogType(bump) {
78
+ switch (bump) {
79
+ case 'premajor':
80
+ case 'major':
81
+ return { type: 'feat', isBreaking: true };
82
+ case 'preminor':
83
+ case 'minor':
84
+ return { type: 'feat', isBreaking: false };
85
+ case 'prerelease':
86
+ case 'prepatch':
87
+ case 'patch':
88
+ return { type: 'fix', isBreaking: false };
89
+ default:
90
+ throw new Error(`Invalid semver bump type: ${bump}`);
91
+ }
92
+ }
@@ -1,6 +1,5 @@
1
1
  import { NxReleaseConfiguration } from '../../config/nx-json';
2
2
  import { ChangelogOptions } from './command-object';
3
- import { Reference } from './utils/git';
4
3
  import { ReleaseVersion } from './utils/shared';
5
4
  export interface NxReleaseChangelogResult {
6
5
  workspaceChangelog?: {
@@ -16,21 +15,7 @@ export interface NxReleaseChangelogResult {
16
15
  };
17
16
  };
18
17
  }
19
- export interface ChangelogChange {
20
- type: string;
21
- scope: string;
22
- description: string;
23
- affectedProjects: string[] | '*';
24
- body?: string;
25
- isBreaking?: boolean;
26
- githubReferences?: Reference[];
27
- authors?: {
28
- name: string;
29
- email: string;
30
- }[];
31
- shortHash?: string;
32
- revertedHashes?: string[];
33
- }
18
+ export type { ChangelogChange } from './changelog/version-plan-utils';
34
19
  export type PostGitTask = (latestCommit: string) => Promise<void>;
35
20
  export declare const releaseChangelogCLIHandler: (args: ChangelogOptions) => Promise<number>;
36
21
  export declare function createAPI(overrideReleaseConfig: NxReleaseConfiguration, ignoreNxJsonConfig: boolean): (args: ChangelogOptions) => Promise<NxReleaseChangelogResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/changelog.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAkB1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAepD,OAAO,EAEL,SAAS,EAUV,MAAM,aAAa,CAAC;AASrB,OAAO,EACL,cAAc,EASf,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,EAAE;QACnB,cAAc,EAAE,cAAc,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,iBAAiB,CAAC,EAAE;QAClB,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,cAAc,EAAE,cAAc,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;SACjC,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B,GAAI,MAAM,gBAAgB,oBACH,CAAC;AAE/D,wBAAgB,SAAS,CACvB,qBAAqB,EAAE,sBAAsB,EAC7C,kBAAkB,EAAE,OAAO,IAQzB,MAAM,gBAAgB,KACrB,OAAO,CAAC,wBAAwB,CAAC,CA+pBrC"}
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/changelog.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAkB1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmCpD,OAAO,EACL,cAAc,EASf,MAAM,gBAAgB,CAAC;AAsBxB,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,EAAE;QACnB,cAAc,EAAE,cAAc,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,iBAAiB,CAAC,EAAE;QAClB,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,cAAc,EAAE,cAAc,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;SACjC,CAAC;KACH,CAAC;CACH;AAGD,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B,GAAI,MAAM,gBAAgB,oBACH,CAAC;AAE/D,wBAAgB,SAAS,CACvB,qBAAqB,EAAE,sBAAsB,EAC7C,kBAAkB,EAAE,OAAO,IAQzB,MAAM,gBAAgB,KACrB,OAAO,CAAC,wBAAwB,CAAC,CAkhBrC"}