relizy 1.2.2-beta.2 → 1.3.0-beta.0

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/dist/cli.mjs CHANGED
@@ -5,7 +5,7 @@ import process from 'node:process';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { printBanner, logger } from '@maz-ui/node';
7
7
  import { Command } from 'commander';
8
- import { ag as isInCI, ah as getCIName, b as bump, c as changelog, g as publish, e as providerRelease, h as social, p as prComment, r as release } from './shared/relizy.CiHvixG7.mjs';
8
+ import { ag as isInCI, ah as getCIName, b as bump, c as changelog, g as publish, e as providerRelease, h as social, p as prComment, r as release } from './shared/relizy.B5flwwGK.mjs';
9
9
  import '@maz-ui/utils';
10
10
  import 'c12';
11
11
  import 'changelogen';
package/dist/index.d.mts CHANGED
@@ -435,7 +435,8 @@ declare function getPackagesOrBumpedPackages({ config, bumpResult, suffix, force
435
435
  }): Promise<PackageBase[]>;
436
436
 
437
437
  declare function isGraduatingToStableBetweenVersion(version: string, newVersion: string): boolean;
438
- declare function determineSemverChange(commits: GitCommit[], types: NonNullable<RelizyConfig['types']>): 'major' | 'minor' | 'patch' | undefined;
438
+ type SemverChangeType = 'major' | 'minor' | 'patch' | undefined;
439
+ declare function determineSemverChange(commits: GitCommit[], types: NonNullable<RelizyConfig['types']>): SemverChangeType;
439
440
  declare function determineReleaseType({ currentVersion, commits, releaseType, preid, types, force, }: {
440
441
  currentVersion: string;
441
442
  commits?: GitCommit[];
package/dist/index.d.ts CHANGED
@@ -435,7 +435,8 @@ declare function getPackagesOrBumpedPackages({ config, bumpResult, suffix, force
435
435
  }): Promise<PackageBase[]>;
436
436
 
437
437
  declare function isGraduatingToStableBetweenVersion(version: string, newVersion: string): boolean;
438
- declare function determineSemverChange(commits: GitCommit[], types: NonNullable<RelizyConfig['types']>): 'major' | 'minor' | 'patch' | undefined;
438
+ type SemverChangeType = 'major' | 'minor' | 'patch' | undefined;
439
+ declare function determineSemverChange(commits: GitCommit[], types: NonNullable<RelizyConfig['types']>): SemverChangeType;
439
440
  declare function determineReleaseType({ currentVersion, commits, releaseType, preid, types, force, }: {
440
441
  currentVersion: string;
441
442
  commits?: GitCommit[];
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { aa as NEW_PACKAGE_MARKER, T as PR_COMMENT_MARKER, a as buildCommentBody, b as bump, c as changelog, u as checkGitStatusIfDirty, aB as confirmBump, A as createCommitAndTags, I as createGitlabRelease, k as defineConfig, x as detectGitProvider, K as detectPackageManager, S as detectPullRequest, L as determinePublishTag, ap as determineReleaseType, ao as determineSemverChange, aj as executeBuildCmd, ai as executeFormatCmd, af as executeHook, o as expandPackagesToBumpWithDependents, a3 as extractChangelogSummary, at as extractVersionFromPackageTag, aE as extractVersionFromTag, v as fetchGitTags, al as filterOutPrivatePackages, Q as findGitHubPR, R as findGitLabMR, a0 as formatChangelogForSlack, a1 as formatSlackMessage, ad as formatTweetMessage, i as generateChangelog, O as getAuthCommand, aC as getBumpedIndependentPackages, aA as getBumpedPackageIndependently, ah as getCIName, aF as getCanaryVersion, E as getCurrentGitBranch, F as getCurrentGitRef, j as getDefaultConfig, n as getDependentsOf, D as getFirstCommit, q as getGitStatus, a5 as getIndependentTag, a9 as getLastPackageTag, a8 as getLastRepoTag, a6 as getLastStableTag, a7 as getLastTag, z as getModifiedReleaseFilePatterns, Z as getPackageCommits, m as getPackageDependencies, ar as getPackageNewVersion, Y as getPackages, am as getPackagesOrBumpedPackages, N as getPackagesToPublishInIndependentMode, M as getPackagesToPublishInSelectiveMode, ay as getPreid, a4 as getReleaseUrl, W as getRootPackage, G as getShortCommitSha, $ as getSlackToken, ac as getTwitterCredentials, H as github, J as gitlab, _ as hasLernaJson, ak as isBumpedPackage, az as isChangedPreid, ax as isGraduating, an as isGraduatingToStableBetweenVersion, ag as isInCI, au as isPrerelease, aw as isPrereleaseReleaseType, av as isStableReleaseType, aG as isTagVersionCompatibleWithCurrent, l as loadRelizyConfig, y as parseGitRemoteUrl, U as postPrComment, a2 as postReleaseToSlack, ae as postReleaseToTwitter, p as prComment, e as providerRelease, d as providerReleaseSafetyCheck, g as publish, P as publishPackage, f as publishSafetyCheck, B as pushCommitAndTags, V as readPackageJson, X as readPackages, r as release, ab as resolveTags, C as rollbackModifiedFiles, aD as shouldFilterPrereleaseTags, h as social, s as socialSafetyCheck, t as topologicalSort, as as updateLernaVersion, w as writeChangelogToFile, aq as writeVersion } from './shared/relizy.CiHvixG7.mjs';
1
+ export { aa as NEW_PACKAGE_MARKER, T as PR_COMMENT_MARKER, a as buildCommentBody, b as bump, c as changelog, u as checkGitStatusIfDirty, aB as confirmBump, A as createCommitAndTags, I as createGitlabRelease, k as defineConfig, x as detectGitProvider, K as detectPackageManager, S as detectPullRequest, L as determinePublishTag, ap as determineReleaseType, ao as determineSemverChange, aj as executeBuildCmd, ai as executeFormatCmd, af as executeHook, o as expandPackagesToBumpWithDependents, a3 as extractChangelogSummary, at as extractVersionFromPackageTag, aE as extractVersionFromTag, v as fetchGitTags, al as filterOutPrivatePackages, Q as findGitHubPR, R as findGitLabMR, a0 as formatChangelogForSlack, a1 as formatSlackMessage, ad as formatTweetMessage, i as generateChangelog, O as getAuthCommand, aC as getBumpedIndependentPackages, aA as getBumpedPackageIndependently, ah as getCIName, aF as getCanaryVersion, E as getCurrentGitBranch, F as getCurrentGitRef, j as getDefaultConfig, n as getDependentsOf, D as getFirstCommit, q as getGitStatus, a5 as getIndependentTag, a9 as getLastPackageTag, a8 as getLastRepoTag, a6 as getLastStableTag, a7 as getLastTag, z as getModifiedReleaseFilePatterns, Z as getPackageCommits, m as getPackageDependencies, ar as getPackageNewVersion, Y as getPackages, am as getPackagesOrBumpedPackages, N as getPackagesToPublishInIndependentMode, M as getPackagesToPublishInSelectiveMode, ay as getPreid, a4 as getReleaseUrl, W as getRootPackage, G as getShortCommitSha, $ as getSlackToken, ac as getTwitterCredentials, H as github, J as gitlab, _ as hasLernaJson, ak as isBumpedPackage, az as isChangedPreid, ax as isGraduating, an as isGraduatingToStableBetweenVersion, ag as isInCI, au as isPrerelease, aw as isPrereleaseReleaseType, av as isStableReleaseType, aG as isTagVersionCompatibleWithCurrent, l as loadRelizyConfig, y as parseGitRemoteUrl, U as postPrComment, a2 as postReleaseToSlack, ae as postReleaseToTwitter, p as prComment, e as providerRelease, d as providerReleaseSafetyCheck, g as publish, P as publishPackage, f as publishSafetyCheck, B as pushCommitAndTags, V as readPackageJson, X as readPackages, r as release, ab as resolveTags, C as rollbackModifiedFiles, aD as shouldFilterPrereleaseTags, h as social, s as socialSafetyCheck, t as topologicalSort, as as updateLernaVersion, w as writeChangelogToFile, aq as writeVersion } from './shared/relizy.B5flwwGK.mjs';
2
2
  import '@maz-ui/node';
3
3
  import 'node:process';
4
4
  import '@maz-ui/utils';
@@ -564,7 +564,28 @@ function handlePrereleaseVersionToStable(currentVersion) {
564
564
  logger.debug(`Graduating from prerelease ${currentVersion} to stable release`);
565
565
  return "release";
566
566
  }
567
- function handlePrereleaseVersionWithPrereleaseType({ currentVersion, preid, commits, force }) {
567
+ function getSemverRank(type) {
568
+ switch (type) {
569
+ case "major":
570
+ return 3;
571
+ case "minor":
572
+ return 2;
573
+ case "patch":
574
+ return 1;
575
+ default:
576
+ return 0;
577
+ }
578
+ }
579
+ function getImpliedBumpFromPrerelease(version) {
580
+ const patch = semver.patch(version);
581
+ const minor = semver.minor(version);
582
+ if (patch > 0)
583
+ return "patch";
584
+ if (minor > 0)
585
+ return "minor";
586
+ return "major";
587
+ }
588
+ function handlePrereleaseVersionWithPrereleaseType({ currentVersion, preid, commits, force, types }) {
568
589
  const currentPreid = getPreid(currentVersion);
569
590
  const hasChangedPreid = preid && currentPreid && currentPreid !== preid;
570
591
  if (hasChangedPreid) {
@@ -582,6 +603,17 @@ function handlePrereleaseVersionWithPrereleaseType({ currentVersion, preid, comm
582
603
  logger.debug("No commits found for prerelease version, skipping bump");
583
604
  return void 0;
584
605
  }
606
+ if (commits?.length) {
607
+ const detectedType = detectReleaseTypeFromCommits(commits, types);
608
+ const impliedBump = getImpliedBumpFromPrerelease(currentVersion);
609
+ const detectedRank = getSemverRank(detectedType);
610
+ const impliedRank = getSemverRank(impliedBump);
611
+ if (detectedRank > impliedRank) {
612
+ const prereleaseType = `pre${detectedType}`;
613
+ logger.debug(`Commits imply ${detectedType} bump, upgrading prerelease base from ${impliedBump}-level to ${prereleaseType}`);
614
+ return prereleaseType;
615
+ }
616
+ }
585
617
  logger.debug(`Incrementing prerelease version: ${currentVersion}`);
586
618
  return "prerelease";
587
619
  }
@@ -628,7 +660,7 @@ function determineReleaseType({
628
660
  return handlePrereleaseVersionToStable(currentVersion);
629
661
  }
630
662
  if (releaseType === "prerelease") {
631
- return handlePrereleaseVersionWithPrereleaseType({ currentVersion, preid, commits, force });
663
+ return handlePrereleaseVersionWithPrereleaseType({ currentVersion, preid, commits, force, types });
632
664
  }
633
665
  return handleExplicitReleaseType({ releaseType, currentVersion });
634
666
  }
@@ -2160,30 +2192,38 @@ async function rollbackModifiedFiles({
2160
2192
  logger.debug(`Rolling back ${modifiedFiles.length} modified file(s)...`);
2161
2193
  logger.debug(`Files to rollback: ${modifiedFiles.join(", ")}`);
2162
2194
  try {
2163
- const fileList = modifiedFiles.join(" ");
2164
- logger.debug(`Restoring specific files from HEAD: ${fileList}`);
2165
- await execPromise(`git checkout HEAD -- ${fileList}`, {
2166
- cwd: config.cwd,
2167
- logLevel: config.logLevel,
2168
- noStderr: true
2169
- });
2170
- logger.debug("Checking for untracked release files to remove...");
2195
+ const trackedFiles = [];
2196
+ const untrackedFiles = [];
2171
2197
  for (const file of modifiedFiles) {
2172
2198
  const filePath = join(config.cwd, file);
2173
- if (existsSync(filePath)) {
2174
- try {
2175
- execSync(`git ls-files --error-unmatch "${file}"`, {
2176
- cwd: config.cwd,
2177
- encoding: "utf8",
2178
- stdio: "pipe"
2179
- });
2180
- } catch {
2181
- logger.debug(`Removing untracked file: ${file}`);
2182
- execSync(`rm "${filePath}"`, { cwd: config.cwd });
2183
- }
2199
+ if (!existsSync(filePath)) {
2200
+ continue;
2201
+ }
2202
+ try {
2203
+ execSync(`git ls-files --error-unmatch "${file}"`, {
2204
+ cwd: config.cwd,
2205
+ encoding: "utf8",
2206
+ stdio: "pipe"
2207
+ });
2208
+ trackedFiles.push(file);
2209
+ } catch {
2210
+ untrackedFiles.push(file);
2184
2211
  }
2185
2212
  }
2186
- logger.success(`Successfully rolled back ${modifiedFiles.length} release file(s)`);
2213
+ if (trackedFiles.length > 0) {
2214
+ const fileList = trackedFiles.join(" ");
2215
+ logger.debug(`Restoring tracked files from HEAD: ${fileList}`);
2216
+ await execPromise(`git checkout HEAD -- ${fileList}`, {
2217
+ cwd: config.cwd,
2218
+ logLevel: config.logLevel,
2219
+ noStderr: true
2220
+ });
2221
+ }
2222
+ for (const file of untrackedFiles) {
2223
+ logger.debug(`Removing untracked file: ${file}`);
2224
+ execSync(`rm "${join(config.cwd, file)}"`, { cwd: config.cwd });
2225
+ }
2226
+ logger.success(`Successfully rolled back ${trackedFiles.length + untrackedFiles.length} release file(s)`);
2187
2227
  } catch (error) {
2188
2228
  logger.error("Failed to rollback modified files automatically");
2189
2229
  logger.warn(`Please manually restore these files: ${modifiedFiles.join(", ")}`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relizy",
3
3
  "type": "module",
4
- "version": "1.2.2-beta.2",
4
+ "version": "1.3.0-beta.0",
5
5
  "description": "Changelogen adapter for monorepo management with unified and independent versioning",
6
6
  "author": "Louis Mazel <me@loicmazuel.com>",
7
7
  "license": "MIT",
@@ -67,14 +67,14 @@
67
67
  }
68
68
  },
69
69
  "dependencies": {
70
- "@inquirer/prompts": "^8.3.2",
70
+ "@inquirer/prompts": "^8.4.1",
71
71
  "@maz-ui/node": "4.6.1",
72
72
  "@maz-ui/utils": "^4.7.6",
73
73
  "c12": "^3.3.3",
74
74
  "changelogen": "^0.6.2",
75
75
  "commander": "^14.0.3",
76
76
  "convert-gitmoji": "^0.1.5",
77
- "defu": "6.1.4",
77
+ "defu": "6.1.7",
78
78
  "fast-glob": "^3.3.2",
79
79
  "node-fetch-native": "^1.6.7",
80
80
  "semver": "^7.7.4"
@@ -82,15 +82,15 @@
82
82
  "devDependencies": {
83
83
  "@commitlint/cli": "^20.5.0",
84
84
  "@commitlint/config-conventional": "20.5.0",
85
- "@commitlint/cz-commitlint": "^20.5.0",
85
+ "@commitlint/cz-commitlint": "^20.5.1",
86
86
  "@commitlint/types": "^20.5.0",
87
87
  "@maz-ui/eslint-config": "^4.8.0",
88
88
  "@slack/web-api": "7.15.0",
89
- "@types/node": "^25.5.0",
89
+ "@types/node": "^25.6.0",
90
90
  "@types/semver": "^7.7.1",
91
- "@vitest/coverage-v8": "^4.1.1",
91
+ "@vitest/coverage-v8": "^4.1.4",
92
92
  "cross-env": "10.1.0",
93
- "eslint": "^10.1.0",
93
+ "eslint": "^10.2.0",
94
94
  "husky": "9.1.7",
95
95
  "jiti": "2.6.1",
96
96
  "lint-staged": "^16.4.0",
@@ -99,7 +99,7 @@
99
99
  "twitter-api-v2": "^1.29.0",
100
100
  "typescript": "^5.9.3",
101
101
  "unbuild": "^3.6.1",
102
- "vitest": "^4.1.1"
102
+ "vitest": "^4.1.4"
103
103
  },
104
104
  "lint-staged": {
105
105
  "*.{js,jsx,ts,tsx,mjs,mts,cjs,md,yml,json}": [
@@ -121,6 +121,7 @@
121
121
  "test:unit": "vitest run",
122
122
  "test:unit:watch": "vitest watch",
123
123
  "test:unit:coverage": "vitest run --coverage",
124
+ "health": "pnpm typecheck && pnpm lint && pnpm test:unit:coverage",
124
125
  "pre-commit": "lint-staged"
125
126
  }
126
127
  }