relizy 1.4.3 → 1.4.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.
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 { aq as isInCI, ar 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.C0nsC_lA.mjs';
8
+ import { aq as isInCI, ar 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.-Cr2hO3N.mjs';
9
9
  import 'node:child_process';
10
10
  import '@maz-ui/utils';
11
11
  import 'c12';
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { ak as NEW_PACKAGE_MARKER, $ as PR_COMMENT_MARKER, M as buildChangelogBody, a as buildCommentBody, L as buildCompareLink, O as buildContributors, b as bump, ay as capReleaseTypeForZeroMajor, c as changelog, v as checkGitStatusIfDirty, N as collectContributorNames, X as collectPackageBumps, aM as confirmBump, B as createCommitAndTags, J as createGitlabRelease, k as defineConfig, y as detectGitProvider, R as detectPackageManager, _ as detectPullRequest, S as determinePublishTag, aA as determineReleaseType, az as determineSemverChange, at as executeBuildCmd, as as executeFormatCmd, ap as executeHook, q as expandPackagesToBumpWithDependents, ad as extractChangelogSummary, aE as extractVersionFromPackageTag, aP as extractVersionFromTag, x as fetchGitTags, av as filterOutPrivatePackages, Y as findGitHubPR, Z as findGitLabMR, a9 as formatChangelogForSlack, aa as formatPackagesForSlack, ab as formatSlackMessage, an as formatTweetMessage, i as generateChangelog, P as generateMarkDown, V as getAuthCommand, aN as getBumpedIndependentPackages, aL as getBumpedPackageIndependently, ar as getCIName, aQ as getCanaryVersion, F as getCurrentGitBranch, G as getCurrentGitRef, j as getDefaultConfig, o as getDependentsOf, E as getFirstCommit, u as getGitStatus, af as getIndependentTag, aj as getLastPackageTag, ai as getLastRepoTag, ag as getLastStableTag, ah as getLastTag, A as getModifiedReleaseFilePatterns, a5 as getPackageCommits, n as getPackageDependencies, aC as getPackageNewVersion, a4 as getPackages, aw as getPackagesOrBumpedPackages, U as getPackagesToPublishInIndependentMode, T as getPackagesToPublishInSelectiveMode, aJ as getPreid, ae as getReleaseUrl, a2 as getRootPackage, H as getShortCommitSha, a7 as getSlackToken, a8 as getSlackWebhookUrl, am as getTwitterCredentials, I as github, K as gitlab, a6 as hasLernaJson, au as isBumpedPackage, aK as isChangedPreid, aI as isGraduating, ax as isGraduatingToStableBetweenVersion, aq as isInCI, aF as isPrerelease, aH as isPrereleaseReleaseType, aG as isStableReleaseType, aR as isTagVersionCompatibleWithCurrent, l as loadRelizyConfig, m as mergeTypes, Q as parseChangelogMarkdown, z as parseGitRemoteUrl, a0 as postPrComment, ac as postReleaseToSlack, ao as postReleaseToTwitter, p as prComment, e as providerRelease, d as providerReleaseSafetyCheck, g as publish, W as publishPackage, f as publishSafetyCheck, C as pushCommitAndTags, a1 as readPackageJson, a3 as readPackages, r as release, al as resolveTags, D as rollbackModifiedFiles, aO as shouldFilterPrereleaseTags, h as social, s as socialSafetyCheck, t as topologicalSort, aD as updateLernaVersion, w as writeChangelogToFile, aB as writeVersion } from './shared/relizy.C0nsC_lA.mjs';
1
+ export { ak as NEW_PACKAGE_MARKER, $ as PR_COMMENT_MARKER, M as buildChangelogBody, a as buildCommentBody, L as buildCompareLink, O as buildContributors, b as bump, ay as capReleaseTypeForZeroMajor, c as changelog, v as checkGitStatusIfDirty, N as collectContributorNames, X as collectPackageBumps, aM as confirmBump, B as createCommitAndTags, J as createGitlabRelease, k as defineConfig, y as detectGitProvider, R as detectPackageManager, _ as detectPullRequest, S as determinePublishTag, aA as determineReleaseType, az as determineSemverChange, at as executeBuildCmd, as as executeFormatCmd, ap as executeHook, q as expandPackagesToBumpWithDependents, ad as extractChangelogSummary, aE as extractVersionFromPackageTag, aP as extractVersionFromTag, x as fetchGitTags, av as filterOutPrivatePackages, Y as findGitHubPR, Z as findGitLabMR, a9 as formatChangelogForSlack, aa as formatPackagesForSlack, ab as formatSlackMessage, an as formatTweetMessage, i as generateChangelog, P as generateMarkDown, V as getAuthCommand, aN as getBumpedIndependentPackages, aL as getBumpedPackageIndependently, ar as getCIName, aQ as getCanaryVersion, F as getCurrentGitBranch, G as getCurrentGitRef, j as getDefaultConfig, o as getDependentsOf, E as getFirstCommit, u as getGitStatus, af as getIndependentTag, aj as getLastPackageTag, ai as getLastRepoTag, ag as getLastStableTag, ah as getLastTag, A as getModifiedReleaseFilePatterns, a5 as getPackageCommits, n as getPackageDependencies, aC as getPackageNewVersion, a4 as getPackages, aw as getPackagesOrBumpedPackages, U as getPackagesToPublishInIndependentMode, T as getPackagesToPublishInSelectiveMode, aJ as getPreid, ae as getReleaseUrl, a2 as getRootPackage, H as getShortCommitSha, a7 as getSlackToken, a8 as getSlackWebhookUrl, am as getTwitterCredentials, I as github, K as gitlab, a6 as hasLernaJson, au as isBumpedPackage, aK as isChangedPreid, aI as isGraduating, ax as isGraduatingToStableBetweenVersion, aq as isInCI, aF as isPrerelease, aH as isPrereleaseReleaseType, aG as isStableReleaseType, aR as isTagVersionCompatibleWithCurrent, l as loadRelizyConfig, m as mergeTypes, Q as parseChangelogMarkdown, z as parseGitRemoteUrl, a0 as postPrComment, ac as postReleaseToSlack, ao as postReleaseToTwitter, p as prComment, e as providerRelease, d as providerReleaseSafetyCheck, g as publish, W as publishPackage, f as publishSafetyCheck, C as pushCommitAndTags, a1 as readPackageJson, a3 as readPackages, r as release, al as resolveTags, D as rollbackModifiedFiles, aO as shouldFilterPrereleaseTags, h as social, s as socialSafetyCheck, t as topologicalSort, aD as updateLernaVersion, w as writeChangelogToFile, aB as writeVersion } from './shared/relizy.-Cr2hO3N.mjs';
2
2
  import '@maz-ui/node';
3
3
  import 'node:child_process';
4
4
  import 'node:process';
@@ -1163,13 +1163,27 @@ async function getLastRepoTagWithFiltering({
1163
1163
  pkg,
1164
1164
  onlyStable
1165
1165
  });
1166
- if (compatibleTags.length === 0) {
1167
- logger.info(`No compatible tags found for version ${pkg.version}`);
1168
- return null;
1166
+ if (compatibleTags.length > 0) {
1167
+ const lastTag = compatibleTags[0];
1168
+ logger.debug(`Last compatible repo tag: ${lastTag}`);
1169
+ return lastTag;
1170
+ }
1171
+ if (onlyStable) {
1172
+ const prereleaseFallback = filterCompatibleTags({
1173
+ tags: recentTags,
1174
+ pkg,
1175
+ onlyStable: false
1176
+ });
1177
+ if (prereleaseFallback.length > 0) {
1178
+ const fallbackTag = prereleaseFallback[0];
1179
+ logger.info(
1180
+ `No stable repo tag found for version ${pkg.version}, falling back to last prerelease tag: ${fallbackTag}`
1181
+ );
1182
+ return fallbackTag;
1183
+ }
1169
1184
  }
1170
- const lastTag = compatibleTags[0];
1171
- logger.debug(`Last compatible repo tag: ${lastTag}`);
1172
- return lastTag;
1185
+ logger.info(`No compatible tags found for version ${pkg.version}`);
1186
+ return null;
1173
1187
  }
1174
1188
  async function getLastPackageTag({
1175
1189
  pkg,
@@ -1230,13 +1244,27 @@ async function getLastPackageTagWithFiltering({
1230
1244
  pkg,
1231
1245
  onlyStable
1232
1246
  });
1233
- if (compatibleTags.length === 0) {
1234
- logger.info(`No compatible tags found for package ${pkg.name} with version ${pkg.version}`);
1235
- return null;
1247
+ if (compatibleTags.length > 0) {
1248
+ const lastTag = compatibleTags[0];
1249
+ logger.debug(`Last compatible package tag for ${pkg.name}: ${lastTag}`);
1250
+ return lastTag;
1251
+ }
1252
+ if (onlyStable) {
1253
+ const prereleaseFallback = filterCompatibleTags({
1254
+ tags: recentTags,
1255
+ pkg,
1256
+ onlyStable: false
1257
+ });
1258
+ if (prereleaseFallback.length > 0) {
1259
+ const fallbackTag = prereleaseFallback[0];
1260
+ logger.info(
1261
+ `No stable tags found for package ${pkg.name} with version ${pkg.version}, falling back to last prerelease tag: ${fallbackTag}`
1262
+ );
1263
+ return fallbackTag;
1264
+ }
1236
1265
  }
1237
- const lastTag = compatibleTags[0];
1238
- logger.debug(`Last compatible package tag for ${pkg.name}: ${lastTag}`);
1239
- return lastTag;
1266
+ logger.info(`No compatible tags found for package ${pkg.name} with version ${pkg.version}`);
1267
+ return null;
1240
1268
  }
1241
1269
  const NEW_PACKAGE_MARKER = "__NEW_PACKAGE__";
1242
1270
  async function resolveFromTagIndependent({
@@ -1776,41 +1804,57 @@ async function publishPackage({
1776
1804
  const tag = determinePublishTag(pkg.newVersion || pkg.version, config.publish.tag);
1777
1805
  const packageNameAndVersion = getIndependentTag({ name: pkg.name, version: pkg.newVersion || pkg.version });
1778
1806
  logger.debug(`Building publish command for ${pkg.name}`);
1779
- let dynamicOtp;
1780
- const maxAttempts = 2;
1781
- for (let attempt = 0; attempt < maxAttempts; attempt++) {
1782
- try {
1783
- const command = getPublishCommand({
1784
- packageManager,
1785
- tag,
1786
- config,
1787
- otp: dynamicOtp,
1788
- dryRun
1789
- });
1790
- process.chdir(pkg.path);
1791
- await executePublishCommand({
1792
- command,
1793
- packageNameAndVersion,
1794
- packageManager,
1795
- pkg,
1796
- config,
1797
- dryRun,
1798
- tag
1799
- });
1800
- if (dynamicOtp && !sessionOtp) {
1801
- sessionOtp = dynamicOtp;
1802
- logger.debug("OTP stored for session");
1803
- }
1804
- return;
1805
- } catch (error) {
1806
- if (isOtpError(error) && attempt < maxAttempts - 1) {
1807
- dynamicOtp = await handleOtpError();
1808
- } else {
1809
- logger.error(`Failed to publish ${packageNameAndVersion}:`, error);
1810
- throw error;
1807
+ const needsTempVersionWrite = dryRun && (packageManager === "npm" || packageManager === "pnpm") && !!pkg.newVersion && pkg.newVersion !== pkg.version;
1808
+ let originalVersion;
1809
+ if (needsTempVersionWrite) {
1810
+ const packageJsonPath = join(pkg.path, "package.json");
1811
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
1812
+ originalVersion = packageJson.version;
1813
+ logger.debug(`[dry-run] Temporarily writing ${pkg.newVersion} to ${pkg.name} for publish --dry-run validation`);
1814
+ writeVersion(pkg.path, pkg.newVersion, false);
1815
+ }
1816
+ try {
1817
+ let dynamicOtp;
1818
+ const maxAttempts = 2;
1819
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
1820
+ try {
1821
+ const command = getPublishCommand({
1822
+ packageManager,
1823
+ tag,
1824
+ config,
1825
+ otp: dynamicOtp,
1826
+ dryRun
1827
+ });
1828
+ process.chdir(pkg.path);
1829
+ await executePublishCommand({
1830
+ command,
1831
+ packageNameAndVersion,
1832
+ packageManager,
1833
+ pkg,
1834
+ config,
1835
+ dryRun,
1836
+ tag
1837
+ });
1838
+ if (dynamicOtp && !sessionOtp) {
1839
+ sessionOtp = dynamicOtp;
1840
+ logger.debug("OTP stored for session");
1841
+ }
1842
+ return;
1843
+ } catch (error) {
1844
+ if (isOtpError(error) && attempt < maxAttempts - 1) {
1845
+ dynamicOtp = await handleOtpError();
1846
+ } else {
1847
+ logger.error(`Failed to publish ${packageNameAndVersion}:`, error);
1848
+ throw error;
1849
+ }
1850
+ } finally {
1851
+ process.chdir(config.cwd);
1811
1852
  }
1812
- } finally {
1813
- process.chdir(config.cwd);
1853
+ }
1854
+ } finally {
1855
+ if (needsTempVersionWrite && originalVersion) {
1856
+ logger.debug(`[dry-run] Restoring ${pkg.name} version to ${originalVersion}`);
1857
+ writeVersion(pkg.path, originalVersion, false);
1814
1858
  }
1815
1859
  }
1816
1860
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relizy",
3
3
  "type": "module",
4
- "version": "1.4.3",
4
+ "version": "1.4.5",
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",