@storm-software/git-tools 2.131.6 → 2.131.7

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.
@@ -3,9 +3,10 @@
3
3
  var chunk7ZSL4J35_cjs = require('./chunk-7ZSL4J35.cjs');
4
4
  var chunk4VPJA7YJ_cjs = require('./chunk-4VPJA7YJ.cjs');
5
5
  var chunkOZEUXY3F_cjs = require('./chunk-OZEUXY3F.cjs');
6
- var defu = require('defu');
7
- var c12 = require('c12');
6
+ var defu3 = require('defu');
8
7
  var fs = require('fs');
8
+ var findMatchingProjects = require('nx/src/utils/find-matching-projects');
9
+ var c12 = require('c12');
9
10
  var path = require('path');
10
11
  var promises = require('fs/promises');
11
12
  var axios2 = require('axios');
@@ -27,7 +28,7 @@ require('nx/src/command-line/release/utils/git');
27
28
 
28
29
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
29
30
 
30
- var defu__default = /*#__PURE__*/_interopDefault(defu);
31
+ var defu3__default = /*#__PURE__*/_interopDefault(defu3);
31
32
  var axios2__default = /*#__PURE__*/_interopDefault(axios2);
32
33
  var DefaultChangelogRenderer__default = /*#__PURE__*/_interopDefault(DefaultChangelogRenderer);
33
34
 
@@ -155,6 +156,37 @@ var isAbsolute = function(p) {
155
156
  return _IS_ABSOLUTE_RE.test(p);
156
157
  };
157
158
 
159
+ // ../package-constants/src/tags.ts
160
+ var ProjectTagConstants = {
161
+ Language: {
162
+ TAG_ID: "language",
163
+ TYPESCRIPT: "typescript",
164
+ RUST: "rust"
165
+ }};
166
+ var formatProjectTag = (variant, value) => {
167
+ return `${variant}:${value}`;
168
+ };
169
+ var hasProjectTag = (project, variant) => {
170
+ project.tags = project.tags ?? [];
171
+ const prefix = formatProjectTag(variant, "");
172
+ return project.tags.some(
173
+ (tag) => tag.startsWith(prefix) && tag.length > prefix.length
174
+ );
175
+ };
176
+ var getProjectTag = (project, variant) => {
177
+ if (!hasProjectTag(project, variant)) {
178
+ return void 0;
179
+ }
180
+ project.tags = project.tags ?? [];
181
+ const prefix = formatProjectTag(variant, "");
182
+ const tag = project.tags.find((tag2) => tag2.startsWith(prefix));
183
+ return tag?.replace(prefix, "");
184
+ };
185
+ var isEqualProjectTag = (project, variant, value) => {
186
+ const tag = getProjectTag(project, variant);
187
+ return !!(tag && tag?.toUpperCase() === value.toUpperCase());
188
+ };
189
+
158
190
  // src/utilities/omit.ts
159
191
  function omit(obj, keys) {
160
192
  const result = { ...obj };
@@ -2393,7 +2425,7 @@ var getConfigFileByName = async (fileName, filePath, options = {}) => {
2393
2425
  ...options
2394
2426
  })
2395
2427
  ]);
2396
- return defu__default.default(configs[0] ?? {}, configs[1] ?? {});
2428
+ return defu3__default.default(configs[0] ?? {}, configs[1] ?? {});
2397
2429
  };
2398
2430
  var getConfigFile = async (filePath, additionalFileNames = []) => {
2399
2431
  const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);
@@ -2424,7 +2456,7 @@ var getConfigFile = async (filePath, additionalFileNames = []) => {
2424
2456
  }
2425
2457
  );
2426
2458
  }
2427
- config2 = defu__default.default(result2.config ?? {}, config2 ?? {});
2459
+ config2 = defu3__default.default(result2.config ?? {}, config2 ?? {});
2428
2460
  }
2429
2461
  }
2430
2462
  }
@@ -3039,7 +3071,7 @@ var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot, sk
3039
3071
  }
3040
3072
  }
3041
3073
  const defaultConfig = await getPackageJsonConfig(_workspaceRoot);
3042
- const configInput = defu__default.default(
3074
+ const configInput = defu3__default.default(
3043
3075
  configEnv,
3044
3076
  configFile,
3045
3077
  defaultConfig
@@ -3535,10 +3567,9 @@ var DEFAULT_CONVENTIONAL_COMMITS_CONFIG2 = {
3535
3567
  questions: chunk7ZSL4J35_cjs.DEFAULT_MONOREPO_COMMIT_QUESTIONS,
3536
3568
  types: chunk4VPJA7YJ_cjs.DEFAULT_COMMIT_TYPES
3537
3569
  };
3538
- var DEFAULT_RELEASE_TAG_PATTERN = "{projectName}@{version}";
3570
+ var DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN = "{projectName}@{version}";
3539
3571
  var DEFAULT_FIXED_RELEASE_TAG_PATTERN = "{releaseGroupName}@{version}";
3540
3572
  var DEFAULT_COMMIT_MESSAGE = "release(monorepo): Publish v{version} release updates";
3541
- var DEFAULT_VERSION_ACTIONS_PATH = "@nx/js/src/release/version-actions";
3542
3573
  var DEFAULT_RELEASE_GROUP_GIT_CONFIG = {
3543
3574
  commit: false,
3544
3575
  commitMessage: DEFAULT_COMMIT_MESSAGE,
@@ -3554,8 +3585,6 @@ var DEFAULT_VERSION_RELEASE_CONFIG = {
3554
3585
  fallbackCurrentVersionResolver: "disk",
3555
3586
  specifierSource: "conventional-commits",
3556
3587
  groupPreVersionCommand: "pnpm build",
3557
- versionActions: DEFAULT_VERSION_ACTIONS_PATH,
3558
- versionActionsOptions: {},
3559
3588
  preserveLocalDependencyProtocols: true,
3560
3589
  preserveMatchingDependencyRanges: true,
3561
3590
  logUnchangedProjects: true,
@@ -3590,24 +3619,25 @@ var DEFAULT_RELEASE_GROUP_CONFIG = {
3590
3619
  ...DEFAULT_VERSION_RELEASE_CONFIG
3591
3620
  },
3592
3621
  releaseTag: {
3593
- pattern: DEFAULT_RELEASE_TAG_PATTERN,
3622
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN,
3594
3623
  preferDockerVersion: false
3595
3624
  },
3596
3625
  versionPlans: false
3597
3626
  };
3627
+ var DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG = {
3628
+ projectsRelationship: "independent",
3629
+ releaseTag: {
3630
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN
3631
+ }
3632
+ };
3598
3633
  var DEFAULT_FIXED_RELEASE_GROUP_CONFIG = {
3599
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3600
3634
  projectsRelationship: "fixed",
3601
3635
  releaseTag: {
3602
- ...DEFAULT_RELEASE_GROUP_CONFIG.releaseTag,
3603
3636
  pattern: DEFAULT_FIXED_RELEASE_TAG_PATTERN
3604
3637
  }
3605
3638
  };
3606
3639
  var DEFAULT_JS_RELEASE_GROUP_CONFIG = {
3607
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3608
- projects: ["packages/*"],
3609
3640
  version: {
3610
- ...DEFAULT_RELEASE_GROUP_CONFIG.version,
3611
3641
  versionActions: "@storm-software/workspace-tools/release/js-version-actions",
3612
3642
  versionActionsOptions: {
3613
3643
  currentVersionResolver: "git-tag",
@@ -3623,10 +3653,7 @@ var DEFAULT_JS_RELEASE_GROUP_CONFIG = {
3623
3653
  }
3624
3654
  };
3625
3655
  var DEFAULT_RUST_RELEASE_GROUP_CONFIG = {
3626
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3627
- projects: ["crates/*"],
3628
3656
  version: {
3629
- ...DEFAULT_RELEASE_GROUP_CONFIG.version,
3630
3657
  versionActions: "@storm-software/workspace-tools/release/rust-version-actions",
3631
3658
  versionActionsOptions: {
3632
3659
  currentVersionResolver: "git-tag",
@@ -3638,8 +3665,20 @@ var DEFAULT_RUST_RELEASE_GROUP_CONFIG = {
3638
3665
  var DEFAULT_RELEASE_CONFIG = {
3639
3666
  conventionalCommits: DEFAULT_CONVENTIONAL_COMMITS_CONFIG2,
3640
3667
  groups: {
3641
- packages: DEFAULT_JS_RELEASE_GROUP_CONFIG,
3642
- crates: DEFAULT_RUST_RELEASE_GROUP_CONFIG
3668
+ packages: defu3__default.default(
3669
+ {
3670
+ projects: ["packages/*"]
3671
+ },
3672
+ DEFAULT_JS_RELEASE_GROUP_CONFIG,
3673
+ DEFAULT_RELEASE_GROUP_CONFIG
3674
+ ),
3675
+ crates: defu3__default.default(
3676
+ {
3677
+ projects: ["crates/*"]
3678
+ },
3679
+ DEFAULT_RUST_RELEASE_GROUP_CONFIG,
3680
+ DEFAULT_RELEASE_GROUP_CONFIG
3681
+ )
3643
3682
  },
3644
3683
  changelog: {
3645
3684
  ...DEFAULT_CHANGELOG_RELEASE_CONFIG,
@@ -3648,40 +3687,101 @@ var DEFAULT_RELEASE_CONFIG = {
3648
3687
  projectChangelogs: true
3649
3688
  },
3650
3689
  releaseTag: {
3651
- pattern: DEFAULT_RELEASE_TAG_PATTERN,
3690
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN,
3652
3691
  preferDockerVersion: false
3653
3692
  },
3654
3693
  version: {
3655
3694
  ...DEFAULT_VERSION_RELEASE_CONFIG
3656
3695
  }
3657
3696
  };
3658
- function getReleaseGroupConfig(releaseConfig, workspaceConfig) {
3697
+ function mergeReleaseGroupConfig(config2, defaultConfig, workspaceConfig) {
3698
+ return defu3__default.default(
3699
+ {
3700
+ ...omit(defaultConfig, ["changelog", "version"]),
3701
+ ...config2
3702
+ },
3703
+ {
3704
+ version: {
3705
+ ...defaultConfig.version
3706
+ }
3707
+ },
3708
+ {
3709
+ changelog: {
3710
+ ...typeof defaultConfig.changelog === "object" ? defaultConfig.changelog : {},
3711
+ renderer: StormChangelogRenderer,
3712
+ renderOptions: {
3713
+ ...typeof defaultConfig.changelog === "object" && defaultConfig.changelog.renderOptions || {},
3714
+ workspaceConfig
3715
+ }
3716
+ }
3717
+ }
3718
+ );
3719
+ }
3720
+ function getReleaseGroupConfig(projectGraph, releaseConfig, workspaceConfig) {
3721
+ const alreadyMatchedProjects = /* @__PURE__ */ new Set();
3659
3722
  return !releaseConfig?.groups || Object.keys(releaseConfig.groups).length === 0 ? {} : Object.fromEntries(
3660
3723
  Object.entries(releaseConfig.groups).map(([name, group]) => {
3661
- const config2 = defu__default.default(
3662
- {
3663
- ...omit(
3664
- group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG,
3665
- ["changelog", "version"]
3666
- ),
3667
- ...group
3668
- },
3669
- {
3670
- version: {
3671
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).version
3672
- }
3673
- },
3674
- {
3675
- changelog: {
3676
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).changelog,
3677
- renderer: StormChangelogRenderer,
3678
- renderOptions: {
3679
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).changelog.renderOptions,
3680
- workspaceConfig
3681
- }
3682
- }
3724
+ const matchingProjects = findMatchingProjects.findMatchingProjects(
3725
+ typeof group.projects === "string" ? [group.projects] : group.projects,
3726
+ projectGraph.nodes
3727
+ );
3728
+ if (!matchingProjects.length) {
3729
+ throw new Error(
3730
+ `Release group "${name}" does not have any matching projects.`
3731
+ );
3732
+ }
3733
+ for (const project of matchingProjects) {
3734
+ if (alreadyMatchedProjects.has(project)) {
3735
+ throw new Error(
3736
+ `Project "${project}" is included in more than one release group. Please ensure that each project is only included in one release group, or remove the "projects" property from the release group configuration to allow it to be included in the same release group as other projects with overlapping globs.`
3737
+ );
3683
3738
  }
3739
+ alreadyMatchedProjects.add(project);
3740
+ }
3741
+ let languageDefaultConfig = {};
3742
+ if (matchingProjects.every(
3743
+ (project) => projectGraph.nodes[project]?.data && (projectGraph.nodes[project]?.data.metadata?.js || isEqualProjectTag(
3744
+ projectGraph.nodes[project]?.data,
3745
+ ProjectTagConstants.Language.TAG_ID,
3746
+ ProjectTagConstants.Language.TYPESCRIPT
3747
+ ) || projectGraph.nodes[project]?.data.metadata?.root && fs.existsSync(
3748
+ joinPaths(
3749
+ projectGraph.nodes[project]?.data.metadata?.root,
3750
+ "package.json"
3751
+ )
3752
+ ))
3753
+ )) {
3754
+ languageDefaultConfig = defu3__default.default(
3755
+ DEFAULT_JS_RELEASE_GROUP_CONFIG,
3756
+ DEFAULT_RELEASE_GROUP_CONFIG
3757
+ );
3758
+ } else if (matchingProjects.every(
3759
+ (project) => projectGraph.nodes[project]?.data && (projectGraph.nodes[project]?.data.metadata?.rust || projectGraph.nodes[project]?.data.metadata?.cargo || isEqualProjectTag(
3760
+ projectGraph.nodes[project]?.data,
3761
+ ProjectTagConstants.Language.TAG_ID,
3762
+ ProjectTagConstants.Language.RUST
3763
+ ) || projectGraph.nodes[project]?.data.metadata?.root && fs.existsSync(
3764
+ joinPaths(
3765
+ projectGraph.nodes[project]?.data.metadata?.root,
3766
+ "Cargo.toml"
3767
+ )
3768
+ ))
3769
+ )) {
3770
+ languageDefaultConfig = defu3__default.default(
3771
+ DEFAULT_RUST_RELEASE_GROUP_CONFIG,
3772
+ DEFAULT_RELEASE_GROUP_CONFIG
3773
+ );
3774
+ }
3775
+ const config2 = mergeReleaseGroupConfig(
3776
+ group,
3777
+ defu3__default.default(
3778
+ languageDefaultConfig,
3779
+ group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG,
3780
+ DEFAULT_RELEASE_GROUP_CONFIG
3781
+ ),
3782
+ workspaceConfig
3684
3783
  );
3784
+ config2.projects = matchingProjects;
3685
3785
  if (workspaceConfig?.workspaceRoot) {
3686
3786
  if (config2.changelog?.renderer && typeof config2.changelog?.renderer === "string" && config2.changelog?.renderer?.toString().startsWith("./")) {
3687
3787
  config2.changelog.renderer = joinPaths(
@@ -3706,12 +3806,13 @@ exports.DEFAULT_COMMIT_MESSAGE = DEFAULT_COMMIT_MESSAGE;
3706
3806
  exports.DEFAULT_CONVENTIONAL_COMMITS_CONFIG = DEFAULT_CONVENTIONAL_COMMITS_CONFIG2;
3707
3807
  exports.DEFAULT_FIXED_RELEASE_GROUP_CONFIG = DEFAULT_FIXED_RELEASE_GROUP_CONFIG;
3708
3808
  exports.DEFAULT_FIXED_RELEASE_TAG_PATTERN = DEFAULT_FIXED_RELEASE_TAG_PATTERN;
3809
+ exports.DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG = DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG;
3810
+ exports.DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN = DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN;
3709
3811
  exports.DEFAULT_JS_RELEASE_GROUP_CONFIG = DEFAULT_JS_RELEASE_GROUP_CONFIG;
3710
3812
  exports.DEFAULT_RELEASE_CONFIG = DEFAULT_RELEASE_CONFIG;
3711
3813
  exports.DEFAULT_RELEASE_GROUP_CONFIG = DEFAULT_RELEASE_GROUP_CONFIG;
3712
3814
  exports.DEFAULT_RELEASE_GROUP_GIT_CONFIG = DEFAULT_RELEASE_GROUP_GIT_CONFIG;
3713
- exports.DEFAULT_RELEASE_TAG_PATTERN = DEFAULT_RELEASE_TAG_PATTERN;
3714
3815
  exports.DEFAULT_RUST_RELEASE_GROUP_CONFIG = DEFAULT_RUST_RELEASE_GROUP_CONFIG;
3715
- exports.DEFAULT_VERSION_ACTIONS_PATH = DEFAULT_VERSION_ACTIONS_PATH;
3716
3816
  exports.DEFAULT_VERSION_RELEASE_CONFIG = DEFAULT_VERSION_RELEASE_CONFIG;
3717
3817
  exports.getReleaseGroupConfig = getReleaseGroupConfig;
3818
+ exports.mergeReleaseGroupConfig = mergeReleaseGroupConfig;
@@ -1,9 +1,11 @@
1
1
  import { DEFAULT_MONOREPO_COMMIT_QUESTIONS } from './chunk-USTER7R2.js';
2
2
  import { DEFAULT_COMMIT_TYPES } from './chunk-3GGWHKRP.js';
3
3
  import { writeTrace, formatLogMessage, writeWarning, getLogLevel, LogLevel, getLogLevelLabel } from './chunk-DHMSMFL3.js';
4
- import defu from 'defu';
4
+ import defu3 from 'defu';
5
+ import { existsSync } from 'fs';
6
+ import { findMatchingProjects } from 'nx/src/utils/find-matching-projects';
5
7
  import { loadConfig } from 'c12';
6
- import { existsSync } from 'node:fs';
8
+ import { existsSync as existsSync$1 } from 'node:fs';
7
9
  import { join } from 'node:path';
8
10
  import { readFile } from 'node:fs/promises';
9
11
  import axios2 from 'axios';
@@ -147,6 +149,37 @@ var isAbsolute = function(p) {
147
149
  return _IS_ABSOLUTE_RE.test(p);
148
150
  };
149
151
 
152
+ // ../package-constants/src/tags.ts
153
+ var ProjectTagConstants = {
154
+ Language: {
155
+ TAG_ID: "language",
156
+ TYPESCRIPT: "typescript",
157
+ RUST: "rust"
158
+ }};
159
+ var formatProjectTag = (variant, value) => {
160
+ return `${variant}:${value}`;
161
+ };
162
+ var hasProjectTag = (project, variant) => {
163
+ project.tags = project.tags ?? [];
164
+ const prefix = formatProjectTag(variant, "");
165
+ return project.tags.some(
166
+ (tag) => tag.startsWith(prefix) && tag.length > prefix.length
167
+ );
168
+ };
169
+ var getProjectTag = (project, variant) => {
170
+ if (!hasProjectTag(project, variant)) {
171
+ return void 0;
172
+ }
173
+ project.tags = project.tags ?? [];
174
+ const prefix = formatProjectTag(variant, "");
175
+ const tag = project.tags.find((tag2) => tag2.startsWith(prefix));
176
+ return tag?.replace(prefix, "");
177
+ };
178
+ var isEqualProjectTag = (project, variant, value) => {
179
+ const tag = getProjectTag(project, variant);
180
+ return !!(tag && tag?.toUpperCase() === value.toUpperCase());
181
+ };
182
+
150
183
  // src/utilities/omit.ts
151
184
  function omit(obj, keys) {
152
185
  const result = { ...obj };
@@ -163,11 +196,11 @@ var depth = 0;
163
196
  function findFolderUp(startPath, endFileNames = [], endDirectoryNames = []) {
164
197
  const _startPath = startPath ?? process.cwd();
165
198
  if (endDirectoryNames.some(
166
- (endDirName) => existsSync(join(_startPath, endDirName))
199
+ (endDirName) => existsSync$1(join(_startPath, endDirName))
167
200
  )) {
168
201
  return _startPath;
169
202
  }
170
- if (endFileNames.some((endFileName) => existsSync(join(_startPath, endFileName)))) {
203
+ if (endFileNames.some((endFileName) => existsSync$1(join(_startPath, endFileName)))) {
171
204
  return _startPath;
172
205
  }
173
206
  if (_startPath !== "/" && depth++ < MAX_PATH_SEARCH_DEPTH) {
@@ -2276,7 +2309,7 @@ async function getPackageJsonConfig(root) {
2276
2309
  let namespace = void 0;
2277
2310
  let repository = void 0;
2278
2311
  const workspaceRoot = findWorkspaceRoot(root);
2279
- if (existsSync(join(workspaceRoot, "package.json"))) {
2312
+ if (existsSync$1(join(workspaceRoot, "package.json"))) {
2280
2313
  const file = await readFile(
2281
2314
  joinPaths(workspaceRoot, "package.json"),
2282
2315
  "utf8"
@@ -2385,7 +2418,7 @@ var getConfigFileByName = async (fileName, filePath, options = {}) => {
2385
2418
  ...options
2386
2419
  })
2387
2420
  ]);
2388
- return defu(configs[0] ?? {}, configs[1] ?? {});
2421
+ return defu3(configs[0] ?? {}, configs[1] ?? {});
2389
2422
  };
2390
2423
  var getConfigFile = async (filePath, additionalFileNames = []) => {
2391
2424
  const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);
@@ -2416,7 +2449,7 @@ var getConfigFile = async (filePath, additionalFileNames = []) => {
2416
2449
  }
2417
2450
  );
2418
2451
  }
2419
- config2 = defu(result2.config ?? {}, config2 ?? {});
2452
+ config2 = defu3(result2.config ?? {}, config2 ?? {});
2420
2453
  }
2421
2454
  }
2422
2455
  }
@@ -3031,13 +3064,13 @@ var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot, sk
3031
3064
  }
3032
3065
  }
3033
3066
  const defaultConfig = await getPackageJsonConfig(_workspaceRoot);
3034
- const configInput = defu(
3067
+ const configInput = defu3(
3035
3068
  configEnv,
3036
3069
  configFile,
3037
3070
  defaultConfig
3038
3071
  );
3039
3072
  if (!configInput.variant) {
3040
- configInput.variant = existsSync(joinPaths(_workspaceRoot, "nx.json")) || existsSync(joinPaths(_workspaceRoot, ".nx")) || existsSync(joinPaths(_workspaceRoot, "lerna.json")) || existsSync(joinPaths(_workspaceRoot, "turbo.json")) ? "monorepo" : "minimal";
3073
+ configInput.variant = existsSync$1(joinPaths(_workspaceRoot, "nx.json")) || existsSync$1(joinPaths(_workspaceRoot, ".nx")) || existsSync$1(joinPaths(_workspaceRoot, "lerna.json")) || existsSync$1(joinPaths(_workspaceRoot, "turbo.json")) ? "monorepo" : "minimal";
3041
3074
  }
3042
3075
  try {
3043
3076
  const parseResult = await Promise.resolve(
@@ -3527,10 +3560,9 @@ var DEFAULT_CONVENTIONAL_COMMITS_CONFIG2 = {
3527
3560
  questions: DEFAULT_MONOREPO_COMMIT_QUESTIONS,
3528
3561
  types: DEFAULT_COMMIT_TYPES
3529
3562
  };
3530
- var DEFAULT_RELEASE_TAG_PATTERN = "{projectName}@{version}";
3563
+ var DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN = "{projectName}@{version}";
3531
3564
  var DEFAULT_FIXED_RELEASE_TAG_PATTERN = "{releaseGroupName}@{version}";
3532
3565
  var DEFAULT_COMMIT_MESSAGE = "release(monorepo): Publish v{version} release updates";
3533
- var DEFAULT_VERSION_ACTIONS_PATH = "@nx/js/src/release/version-actions";
3534
3566
  var DEFAULT_RELEASE_GROUP_GIT_CONFIG = {
3535
3567
  commit: false,
3536
3568
  commitMessage: DEFAULT_COMMIT_MESSAGE,
@@ -3546,8 +3578,6 @@ var DEFAULT_VERSION_RELEASE_CONFIG = {
3546
3578
  fallbackCurrentVersionResolver: "disk",
3547
3579
  specifierSource: "conventional-commits",
3548
3580
  groupPreVersionCommand: "pnpm build",
3549
- versionActions: DEFAULT_VERSION_ACTIONS_PATH,
3550
- versionActionsOptions: {},
3551
3581
  preserveLocalDependencyProtocols: true,
3552
3582
  preserveMatchingDependencyRanges: true,
3553
3583
  logUnchangedProjects: true,
@@ -3582,24 +3612,25 @@ var DEFAULT_RELEASE_GROUP_CONFIG = {
3582
3612
  ...DEFAULT_VERSION_RELEASE_CONFIG
3583
3613
  },
3584
3614
  releaseTag: {
3585
- pattern: DEFAULT_RELEASE_TAG_PATTERN,
3615
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN,
3586
3616
  preferDockerVersion: false
3587
3617
  },
3588
3618
  versionPlans: false
3589
3619
  };
3620
+ var DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG = {
3621
+ projectsRelationship: "independent",
3622
+ releaseTag: {
3623
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN
3624
+ }
3625
+ };
3590
3626
  var DEFAULT_FIXED_RELEASE_GROUP_CONFIG = {
3591
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3592
3627
  projectsRelationship: "fixed",
3593
3628
  releaseTag: {
3594
- ...DEFAULT_RELEASE_GROUP_CONFIG.releaseTag,
3595
3629
  pattern: DEFAULT_FIXED_RELEASE_TAG_PATTERN
3596
3630
  }
3597
3631
  };
3598
3632
  var DEFAULT_JS_RELEASE_GROUP_CONFIG = {
3599
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3600
- projects: ["packages/*"],
3601
3633
  version: {
3602
- ...DEFAULT_RELEASE_GROUP_CONFIG.version,
3603
3634
  versionActions: "@storm-software/workspace-tools/release/js-version-actions",
3604
3635
  versionActionsOptions: {
3605
3636
  currentVersionResolver: "git-tag",
@@ -3615,10 +3646,7 @@ var DEFAULT_JS_RELEASE_GROUP_CONFIG = {
3615
3646
  }
3616
3647
  };
3617
3648
  var DEFAULT_RUST_RELEASE_GROUP_CONFIG = {
3618
- ...DEFAULT_RELEASE_GROUP_CONFIG,
3619
- projects: ["crates/*"],
3620
3649
  version: {
3621
- ...DEFAULT_RELEASE_GROUP_CONFIG.version,
3622
3650
  versionActions: "@storm-software/workspace-tools/release/rust-version-actions",
3623
3651
  versionActionsOptions: {
3624
3652
  currentVersionResolver: "git-tag",
@@ -3630,8 +3658,20 @@ var DEFAULT_RUST_RELEASE_GROUP_CONFIG = {
3630
3658
  var DEFAULT_RELEASE_CONFIG = {
3631
3659
  conventionalCommits: DEFAULT_CONVENTIONAL_COMMITS_CONFIG2,
3632
3660
  groups: {
3633
- packages: DEFAULT_JS_RELEASE_GROUP_CONFIG,
3634
- crates: DEFAULT_RUST_RELEASE_GROUP_CONFIG
3661
+ packages: defu3(
3662
+ {
3663
+ projects: ["packages/*"]
3664
+ },
3665
+ DEFAULT_JS_RELEASE_GROUP_CONFIG,
3666
+ DEFAULT_RELEASE_GROUP_CONFIG
3667
+ ),
3668
+ crates: defu3(
3669
+ {
3670
+ projects: ["crates/*"]
3671
+ },
3672
+ DEFAULT_RUST_RELEASE_GROUP_CONFIG,
3673
+ DEFAULT_RELEASE_GROUP_CONFIG
3674
+ )
3635
3675
  },
3636
3676
  changelog: {
3637
3677
  ...DEFAULT_CHANGELOG_RELEASE_CONFIG,
@@ -3640,40 +3680,101 @@ var DEFAULT_RELEASE_CONFIG = {
3640
3680
  projectChangelogs: true
3641
3681
  },
3642
3682
  releaseTag: {
3643
- pattern: DEFAULT_RELEASE_TAG_PATTERN,
3683
+ pattern: DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN,
3644
3684
  preferDockerVersion: false
3645
3685
  },
3646
3686
  version: {
3647
3687
  ...DEFAULT_VERSION_RELEASE_CONFIG
3648
3688
  }
3649
3689
  };
3650
- function getReleaseGroupConfig(releaseConfig, workspaceConfig) {
3690
+ function mergeReleaseGroupConfig(config2, defaultConfig, workspaceConfig) {
3691
+ return defu3(
3692
+ {
3693
+ ...omit(defaultConfig, ["changelog", "version"]),
3694
+ ...config2
3695
+ },
3696
+ {
3697
+ version: {
3698
+ ...defaultConfig.version
3699
+ }
3700
+ },
3701
+ {
3702
+ changelog: {
3703
+ ...typeof defaultConfig.changelog === "object" ? defaultConfig.changelog : {},
3704
+ renderer: StormChangelogRenderer,
3705
+ renderOptions: {
3706
+ ...typeof defaultConfig.changelog === "object" && defaultConfig.changelog.renderOptions || {},
3707
+ workspaceConfig
3708
+ }
3709
+ }
3710
+ }
3711
+ );
3712
+ }
3713
+ function getReleaseGroupConfig(projectGraph, releaseConfig, workspaceConfig) {
3714
+ const alreadyMatchedProjects = /* @__PURE__ */ new Set();
3651
3715
  return !releaseConfig?.groups || Object.keys(releaseConfig.groups).length === 0 ? {} : Object.fromEntries(
3652
3716
  Object.entries(releaseConfig.groups).map(([name, group]) => {
3653
- const config2 = defu(
3654
- {
3655
- ...omit(
3656
- group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG,
3657
- ["changelog", "version"]
3658
- ),
3659
- ...group
3660
- },
3661
- {
3662
- version: {
3663
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).version
3664
- }
3665
- },
3666
- {
3667
- changelog: {
3668
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).changelog,
3669
- renderer: StormChangelogRenderer,
3670
- renderOptions: {
3671
- ...(group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_RELEASE_GROUP_CONFIG).changelog.renderOptions,
3672
- workspaceConfig
3673
- }
3674
- }
3717
+ const matchingProjects = findMatchingProjects(
3718
+ typeof group.projects === "string" ? [group.projects] : group.projects,
3719
+ projectGraph.nodes
3720
+ );
3721
+ if (!matchingProjects.length) {
3722
+ throw new Error(
3723
+ `Release group "${name}" does not have any matching projects.`
3724
+ );
3725
+ }
3726
+ for (const project of matchingProjects) {
3727
+ if (alreadyMatchedProjects.has(project)) {
3728
+ throw new Error(
3729
+ `Project "${project}" is included in more than one release group. Please ensure that each project is only included in one release group, or remove the "projects" property from the release group configuration to allow it to be included in the same release group as other projects with overlapping globs.`
3730
+ );
3675
3731
  }
3732
+ alreadyMatchedProjects.add(project);
3733
+ }
3734
+ let languageDefaultConfig = {};
3735
+ if (matchingProjects.every(
3736
+ (project) => projectGraph.nodes[project]?.data && (projectGraph.nodes[project]?.data.metadata?.js || isEqualProjectTag(
3737
+ projectGraph.nodes[project]?.data,
3738
+ ProjectTagConstants.Language.TAG_ID,
3739
+ ProjectTagConstants.Language.TYPESCRIPT
3740
+ ) || projectGraph.nodes[project]?.data.metadata?.root && existsSync(
3741
+ joinPaths(
3742
+ projectGraph.nodes[project]?.data.metadata?.root,
3743
+ "package.json"
3744
+ )
3745
+ ))
3746
+ )) {
3747
+ languageDefaultConfig = defu3(
3748
+ DEFAULT_JS_RELEASE_GROUP_CONFIG,
3749
+ DEFAULT_RELEASE_GROUP_CONFIG
3750
+ );
3751
+ } else if (matchingProjects.every(
3752
+ (project) => projectGraph.nodes[project]?.data && (projectGraph.nodes[project]?.data.metadata?.rust || projectGraph.nodes[project]?.data.metadata?.cargo || isEqualProjectTag(
3753
+ projectGraph.nodes[project]?.data,
3754
+ ProjectTagConstants.Language.TAG_ID,
3755
+ ProjectTagConstants.Language.RUST
3756
+ ) || projectGraph.nodes[project]?.data.metadata?.root && existsSync(
3757
+ joinPaths(
3758
+ projectGraph.nodes[project]?.data.metadata?.root,
3759
+ "Cargo.toml"
3760
+ )
3761
+ ))
3762
+ )) {
3763
+ languageDefaultConfig = defu3(
3764
+ DEFAULT_RUST_RELEASE_GROUP_CONFIG,
3765
+ DEFAULT_RELEASE_GROUP_CONFIG
3766
+ );
3767
+ }
3768
+ const config2 = mergeReleaseGroupConfig(
3769
+ group,
3770
+ defu3(
3771
+ languageDefaultConfig,
3772
+ group.projectsRelationship === "fixed" ? DEFAULT_FIXED_RELEASE_GROUP_CONFIG : DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG,
3773
+ DEFAULT_RELEASE_GROUP_CONFIG
3774
+ ),
3775
+ workspaceConfig
3676
3776
  );
3777
+ config2.projects = matchingProjects;
3677
3778
  if (workspaceConfig?.workspaceRoot) {
3678
3779
  if (config2.changelog?.renderer && typeof config2.changelog?.renderer === "string" && config2.changelog?.renderer?.toString().startsWith("./")) {
3679
3780
  config2.changelog.renderer = joinPaths(
@@ -3693,4 +3794,4 @@ function getReleaseGroupConfig(releaseConfig, workspaceConfig) {
3693
3794
  );
3694
3795
  }
3695
3796
 
3696
- export { DEFAULT_CHANGELOG_RELEASE_CONFIG, DEFAULT_COMMIT_MESSAGE, DEFAULT_CONVENTIONAL_COMMITS_CONFIG2 as DEFAULT_CONVENTIONAL_COMMITS_CONFIG, DEFAULT_FIXED_RELEASE_GROUP_CONFIG, DEFAULT_FIXED_RELEASE_TAG_PATTERN, DEFAULT_JS_RELEASE_GROUP_CONFIG, DEFAULT_RELEASE_CONFIG, DEFAULT_RELEASE_GROUP_CONFIG, DEFAULT_RELEASE_GROUP_GIT_CONFIG, DEFAULT_RELEASE_TAG_PATTERN, DEFAULT_RUST_RELEASE_GROUP_CONFIG, DEFAULT_VERSION_ACTIONS_PATH, DEFAULT_VERSION_RELEASE_CONFIG, getReleaseGroupConfig };
3797
+ export { DEFAULT_CHANGELOG_RELEASE_CONFIG, DEFAULT_COMMIT_MESSAGE, DEFAULT_CONVENTIONAL_COMMITS_CONFIG2 as DEFAULT_CONVENTIONAL_COMMITS_CONFIG, DEFAULT_FIXED_RELEASE_GROUP_CONFIG, DEFAULT_FIXED_RELEASE_TAG_PATTERN, DEFAULT_INDEPENDENT_RELEASE_GROUP_CONFIG, DEFAULT_INDEPENDENT_RELEASE_TAG_PATTERN, DEFAULT_JS_RELEASE_GROUP_CONFIG, DEFAULT_RELEASE_CONFIG, DEFAULT_RELEASE_GROUP_CONFIG, DEFAULT_RELEASE_GROUP_GIT_CONFIG, DEFAULT_RUST_RELEASE_GROUP_CONFIG, DEFAULT_VERSION_RELEASE_CONFIG, getReleaseGroupConfig, mergeReleaseGroupConfig };