relizy 1.5.1 → 1.6.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 { aw as isInCI, S as getCIName, f as bump, h as changelog, aN as publish, aL as providerRelease, b4 as social, aK as prComment, aW as release } from './shared/relizy.DDpPSTvS.mjs';
8
+ import { aA as isInCI, U as getCIName, h as bump, j as changelog, aR as publish, aP as providerRelease, b8 as social, aO as prComment, a_ as release } from './shared/relizy.DhYBvZNi.mjs';
9
9
  import 'node:child_process';
10
10
  import '@maz-ui/utils/helpers/formatJson';
11
11
  import 'c12';
package/dist/index.d.mts CHANGED
@@ -194,11 +194,61 @@ declare function createCommitAndTags({ config, noVerify, bumpedPackages, newVers
194
194
  dryRun?: boolean;
195
195
  logLevel: LogLevel;
196
196
  }): Promise<string[]>;
197
- declare function pushCommitAndTags({ config, dryRun, logLevel, cwd }: {
197
+ interface GitUpstream {
198
+ /** Remote name, e.g. `origin` */
199
+ remote: string;
200
+ /** Remote branch ref, e.g. `refs/heads/main` */
201
+ mergeRef: string;
202
+ /** Remote-tracking ref, e.g. `refs/remotes/origin/main` */
203
+ trackingRef: string;
204
+ /** Short remote-tracking name, e.g. `origin/main` */
205
+ name: string;
206
+ }
207
+ /**
208
+ * Resolve the upstream of the current branch. Returns null on a detached HEAD
209
+ * or when the branch has no upstream configured.
210
+ */
211
+ declare function getGitUpstream(cwd: string): Promise<GitUpstream | null>;
212
+ /**
213
+ * Ensure the current branch contains every commit of its remote counterpart.
214
+ *
215
+ * A release commit created on a branch that is behind its remote can never be
216
+ * pushed. Since packages are published before the push, running this check
217
+ * right before publishing prevents shipping a version whose release commit is
218
+ * then rejected (leaving an orphan tag and the repository stuck on the
219
+ * previous version).
220
+ *
221
+ * Skipped (no error) on a detached HEAD, without upstream, or when the remote
222
+ * cannot be fetched.
223
+ */
224
+ declare function assertBranchUpToDateWithRemote({ cwd }: {
225
+ cwd: string;
226
+ }): Promise<void>;
227
+ declare function pushCommitAndTags({ config, dryRun, logLevel, cwd, tags, }: {
198
228
  config: ResolvedRelizyConfig;
199
229
  dryRun: boolean;
200
230
  logLevel?: LogLevel;
201
231
  cwd: string;
232
+ tags?: string[];
233
+ }): Promise<void>;
234
+ /**
235
+ * Compute the git tag names a release will create, mirroring `createCommitAndTags`.
236
+ */
237
+ declare function getReleaseTagNames({ config, bumpedPackages, newVersion, }: {
238
+ config: ResolvedRelizyConfig;
239
+ bumpedPackages?: BumpResultTruthy['bumpedPackages'];
240
+ newVersion?: string;
241
+ }): string[];
242
+ /**
243
+ * Fail early when a tag the release is about to create already exists.
244
+ *
245
+ * This typically happens after a release that published its packages and
246
+ * pushed its tag, but whose release commit was rejected: the branch is still
247
+ * on the previous version, so the next run computes the same version again.
248
+ */
249
+ declare function assertReleaseTagsAvailable({ tags, cwd }: {
250
+ tags: string[];
251
+ cwd: string;
202
252
  }): Promise<void>;
203
253
  /**
204
254
  * Rollback modified files to their last committed state
@@ -2289,5 +2339,5 @@ declare function socialSafetyCheck({ config }: {
2289
2339
  }): Promise<void>;
2290
2340
  declare function social(options?: Partial<SocialOptions>): Promise<SocialResult>;
2291
2341
 
2292
- export { NEW_PACKAGE_MARKER, PR_COMMENT_MARKER, buildChangelogBody, buildCommentBody, buildCompareLink, buildContributors, buildReleaseSummary, bump, capReleaseTypeForZeroMajor, changelog, checkGitStatusIfDirty, collectContributorNames, collectPackageBumps, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, detectPullRequest, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractChangelogSummary, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, filterOutPrivatePackages, findGitHubPR, findGitLabMR, findReachableCommitBySubject, formatChangelogForSlack, formatPackagesForSlack, formatSlackMessage, formatTweetMessage, generateChangelog, generateMarkDown, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCanaryVersion, getCommitChangedFiles, getCommitSubject, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitDiff, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getNpmRegistry, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getReleaseUrl, getRootPackage, getShortCommitSha, getSlackToken, getSlackWebhookUrl, getTwitterCredentials, github, gitlab, globDirsAbsolute, hasLernaJson, isAncestor, isBumpedPackage, isChangedPreid, isCommitOnlyInIgnoredPackages, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, isVersionAlreadyPublishedError, isVersionPublished, loadRelizyConfig, mergeTypes, parseChangelogMarkdown, parseGitRemoteUrl, postPrComment, postReleaseToSlack, postReleaseToTwitter, prComment, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, pushTagForce, readPackageJson, readPackages, reconcileFromTag, redactSecrets, release, resetRewrittenTagCache, resolveAllConfiguredRegistryTargets, resolveIgnoredPackagePaths, resolveRegistryTargetsForPackage, resolveRegistryTargetsForPackages, resolveTags, retagAnnotatedLocal, rollbackModifiedFiles, shouldFilterPrereleaseTags, social, socialSafetyCheck, tagExists, topologicalSort, tryPostPrComment, updateLernaVersion, withRegistryNpmrc, writeChangelogToFile, writeVersion };
2293
- export type { AIConfig, AIPromptTarget, AIProviderName, AISocialConfig, AISystemPromptOverrides, AITargetConfig, BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogInclude, ChangelogOptions, ClaudeCodeProviderOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, OnRewrittenTag, PackageBase, PackageBumpEntry, PackageManager, PostedRelease, PrCommentConfig, PrCommentMode, PrCommentOptions, PrCommentStatus, ProviderReleaseOptions, ProviderReleaseResult, PublishConfig, PublishOptions, PublishResponse, PullRequestInfo, ReadPackage, Reference, RegistryTarget, ReleaseConfig, ReleaseContext, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, ResolvedTwitterCredentials, RootPackage, SlackCredentials, SlackOptions, SlackPackageEntry, SlackSocialConfig, SocialConfig, SocialNetworkResult, SocialOptions, SocialResult, Step, TemplatesConfig, TokensConfig, TwitterCredentials, TwitterOptions, TwitterSocialConfig, VersionMode };
2342
+ export { NEW_PACKAGE_MARKER, PR_COMMENT_MARKER, assertBranchUpToDateWithRemote, assertReleaseTagsAvailable, buildChangelogBody, buildCommentBody, buildCompareLink, buildContributors, buildReleaseSummary, bump, capReleaseTypeForZeroMajor, changelog, checkGitStatusIfDirty, collectContributorNames, collectPackageBumps, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, detectPullRequest, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractChangelogSummary, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, filterOutPrivatePackages, findGitHubPR, findGitLabMR, findReachableCommitBySubject, formatChangelogForSlack, formatPackagesForSlack, formatSlackMessage, formatTweetMessage, generateChangelog, generateMarkDown, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCanaryVersion, getCommitChangedFiles, getCommitSubject, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitDiff, getGitStatus, getGitUpstream, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getNpmRegistry, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getReleaseTagNames, getReleaseUrl, getRootPackage, getShortCommitSha, getSlackToken, getSlackWebhookUrl, getTwitterCredentials, github, gitlab, globDirsAbsolute, hasLernaJson, isAncestor, isBumpedPackage, isChangedPreid, isCommitOnlyInIgnoredPackages, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, isVersionAlreadyPublishedError, isVersionPublished, loadRelizyConfig, mergeTypes, parseChangelogMarkdown, parseGitRemoteUrl, postPrComment, postReleaseToSlack, postReleaseToTwitter, prComment, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, pushTagForce, readPackageJson, readPackages, reconcileFromTag, redactSecrets, release, resetRewrittenTagCache, resolveAllConfiguredRegistryTargets, resolveIgnoredPackagePaths, resolveRegistryTargetsForPackage, resolveRegistryTargetsForPackages, resolveTags, retagAnnotatedLocal, rollbackModifiedFiles, shouldFilterPrereleaseTags, social, socialSafetyCheck, tagExists, topologicalSort, tryPostPrComment, updateLernaVersion, withRegistryNpmrc, writeChangelogToFile, writeVersion };
2343
+ export type { AIConfig, AIPromptTarget, AIProviderName, AISocialConfig, AISystemPromptOverrides, AITargetConfig, BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogInclude, ChangelogOptions, ClaudeCodeProviderOptions, ConfigType, GitProvider, GitUpstream, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, OnRewrittenTag, PackageBase, PackageBumpEntry, PackageManager, PostedRelease, PrCommentConfig, PrCommentMode, PrCommentOptions, PrCommentStatus, ProviderReleaseOptions, ProviderReleaseResult, PublishConfig, PublishOptions, PublishResponse, PullRequestInfo, ReadPackage, Reference, RegistryTarget, ReleaseConfig, ReleaseContext, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, ResolvedTwitterCredentials, RootPackage, SlackCredentials, SlackOptions, SlackPackageEntry, SlackSocialConfig, SocialConfig, SocialNetworkResult, SocialOptions, SocialResult, Step, TemplatesConfig, TokensConfig, TwitterCredentials, TwitterOptions, TwitterSocialConfig, VersionMode };
package/dist/index.d.ts CHANGED
@@ -194,11 +194,61 @@ declare function createCommitAndTags({ config, noVerify, bumpedPackages, newVers
194
194
  dryRun?: boolean;
195
195
  logLevel: LogLevel;
196
196
  }): Promise<string[]>;
197
- declare function pushCommitAndTags({ config, dryRun, logLevel, cwd }: {
197
+ interface GitUpstream {
198
+ /** Remote name, e.g. `origin` */
199
+ remote: string;
200
+ /** Remote branch ref, e.g. `refs/heads/main` */
201
+ mergeRef: string;
202
+ /** Remote-tracking ref, e.g. `refs/remotes/origin/main` */
203
+ trackingRef: string;
204
+ /** Short remote-tracking name, e.g. `origin/main` */
205
+ name: string;
206
+ }
207
+ /**
208
+ * Resolve the upstream of the current branch. Returns null on a detached HEAD
209
+ * or when the branch has no upstream configured.
210
+ */
211
+ declare function getGitUpstream(cwd: string): Promise<GitUpstream | null>;
212
+ /**
213
+ * Ensure the current branch contains every commit of its remote counterpart.
214
+ *
215
+ * A release commit created on a branch that is behind its remote can never be
216
+ * pushed. Since packages are published before the push, running this check
217
+ * right before publishing prevents shipping a version whose release commit is
218
+ * then rejected (leaving an orphan tag and the repository stuck on the
219
+ * previous version).
220
+ *
221
+ * Skipped (no error) on a detached HEAD, without upstream, or when the remote
222
+ * cannot be fetched.
223
+ */
224
+ declare function assertBranchUpToDateWithRemote({ cwd }: {
225
+ cwd: string;
226
+ }): Promise<void>;
227
+ declare function pushCommitAndTags({ config, dryRun, logLevel, cwd, tags, }: {
198
228
  config: ResolvedRelizyConfig;
199
229
  dryRun: boolean;
200
230
  logLevel?: LogLevel;
201
231
  cwd: string;
232
+ tags?: string[];
233
+ }): Promise<void>;
234
+ /**
235
+ * Compute the git tag names a release will create, mirroring `createCommitAndTags`.
236
+ */
237
+ declare function getReleaseTagNames({ config, bumpedPackages, newVersion, }: {
238
+ config: ResolvedRelizyConfig;
239
+ bumpedPackages?: BumpResultTruthy['bumpedPackages'];
240
+ newVersion?: string;
241
+ }): string[];
242
+ /**
243
+ * Fail early when a tag the release is about to create already exists.
244
+ *
245
+ * This typically happens after a release that published its packages and
246
+ * pushed its tag, but whose release commit was rejected: the branch is still
247
+ * on the previous version, so the next run computes the same version again.
248
+ */
249
+ declare function assertReleaseTagsAvailable({ tags, cwd }: {
250
+ tags: string[];
251
+ cwd: string;
202
252
  }): Promise<void>;
203
253
  /**
204
254
  * Rollback modified files to their last committed state
@@ -2289,5 +2339,5 @@ declare function socialSafetyCheck({ config }: {
2289
2339
  }): Promise<void>;
2290
2340
  declare function social(options?: Partial<SocialOptions>): Promise<SocialResult>;
2291
2341
 
2292
- export { NEW_PACKAGE_MARKER, PR_COMMENT_MARKER, buildChangelogBody, buildCommentBody, buildCompareLink, buildContributors, buildReleaseSummary, bump, capReleaseTypeForZeroMajor, changelog, checkGitStatusIfDirty, collectContributorNames, collectPackageBumps, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, detectPullRequest, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractChangelogSummary, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, filterOutPrivatePackages, findGitHubPR, findGitLabMR, findReachableCommitBySubject, formatChangelogForSlack, formatPackagesForSlack, formatSlackMessage, formatTweetMessage, generateChangelog, generateMarkDown, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCanaryVersion, getCommitChangedFiles, getCommitSubject, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitDiff, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getNpmRegistry, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getReleaseUrl, getRootPackage, getShortCommitSha, getSlackToken, getSlackWebhookUrl, getTwitterCredentials, github, gitlab, globDirsAbsolute, hasLernaJson, isAncestor, isBumpedPackage, isChangedPreid, isCommitOnlyInIgnoredPackages, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, isVersionAlreadyPublishedError, isVersionPublished, loadRelizyConfig, mergeTypes, parseChangelogMarkdown, parseGitRemoteUrl, postPrComment, postReleaseToSlack, postReleaseToTwitter, prComment, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, pushTagForce, readPackageJson, readPackages, reconcileFromTag, redactSecrets, release, resetRewrittenTagCache, resolveAllConfiguredRegistryTargets, resolveIgnoredPackagePaths, resolveRegistryTargetsForPackage, resolveRegistryTargetsForPackages, resolveTags, retagAnnotatedLocal, rollbackModifiedFiles, shouldFilterPrereleaseTags, social, socialSafetyCheck, tagExists, topologicalSort, tryPostPrComment, updateLernaVersion, withRegistryNpmrc, writeChangelogToFile, writeVersion };
2293
- export type { AIConfig, AIPromptTarget, AIProviderName, AISocialConfig, AISystemPromptOverrides, AITargetConfig, BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogInclude, ChangelogOptions, ClaudeCodeProviderOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, OnRewrittenTag, PackageBase, PackageBumpEntry, PackageManager, PostedRelease, PrCommentConfig, PrCommentMode, PrCommentOptions, PrCommentStatus, ProviderReleaseOptions, ProviderReleaseResult, PublishConfig, PublishOptions, PublishResponse, PullRequestInfo, ReadPackage, Reference, RegistryTarget, ReleaseConfig, ReleaseContext, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, ResolvedTwitterCredentials, RootPackage, SlackCredentials, SlackOptions, SlackPackageEntry, SlackSocialConfig, SocialConfig, SocialNetworkResult, SocialOptions, SocialResult, Step, TemplatesConfig, TokensConfig, TwitterCredentials, TwitterOptions, TwitterSocialConfig, VersionMode };
2342
+ export { NEW_PACKAGE_MARKER, PR_COMMENT_MARKER, assertBranchUpToDateWithRemote, assertReleaseTagsAvailable, buildChangelogBody, buildCommentBody, buildCompareLink, buildContributors, buildReleaseSummary, bump, capReleaseTypeForZeroMajor, changelog, checkGitStatusIfDirty, collectContributorNames, collectPackageBumps, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, detectPullRequest, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractChangelogSummary, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, filterOutPrivatePackages, findGitHubPR, findGitLabMR, findReachableCommitBySubject, formatChangelogForSlack, formatPackagesForSlack, formatSlackMessage, formatTweetMessage, generateChangelog, generateMarkDown, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCanaryVersion, getCommitChangedFiles, getCommitSubject, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitDiff, getGitStatus, getGitUpstream, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getNpmRegistry, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getReleaseTagNames, getReleaseUrl, getRootPackage, getShortCommitSha, getSlackToken, getSlackWebhookUrl, getTwitterCredentials, github, gitlab, globDirsAbsolute, hasLernaJson, isAncestor, isBumpedPackage, isChangedPreid, isCommitOnlyInIgnoredPackages, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, isVersionAlreadyPublishedError, isVersionPublished, loadRelizyConfig, mergeTypes, parseChangelogMarkdown, parseGitRemoteUrl, postPrComment, postReleaseToSlack, postReleaseToTwitter, prComment, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, pushTagForce, readPackageJson, readPackages, reconcileFromTag, redactSecrets, release, resetRewrittenTagCache, resolveAllConfiguredRegistryTargets, resolveIgnoredPackagePaths, resolveRegistryTargetsForPackage, resolveRegistryTargetsForPackages, resolveTags, retagAnnotatedLocal, rollbackModifiedFiles, shouldFilterPrereleaseTags, social, socialSafetyCheck, tagExists, topologicalSort, tryPostPrComment, updateLernaVersion, withRegistryNpmrc, writeChangelogToFile, writeVersion };
2343
+ export type { AIConfig, AIPromptTarget, AIProviderName, AISocialConfig, AISystemPromptOverrides, AITargetConfig, BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogInclude, ChangelogOptions, ClaudeCodeProviderOptions, ConfigType, GitProvider, GitUpstream, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, OnRewrittenTag, PackageBase, PackageBumpEntry, PackageManager, PostedRelease, PrCommentConfig, PrCommentMode, PrCommentOptions, PrCommentStatus, ProviderReleaseOptions, ProviderReleaseResult, PublishConfig, PublishOptions, PublishResponse, PullRequestInfo, ReadPackage, Reference, RegistryTarget, ReleaseConfig, ReleaseContext, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, ResolvedTwitterCredentials, RootPackage, SlackCredentials, SlackOptions, SlackPackageEntry, SlackSocialConfig, SocialConfig, SocialNetworkResult, SocialOptions, SocialResult, Step, TemplatesConfig, TokensConfig, TwitterCredentials, TwitterOptions, TwitterSocialConfig, VersionMode };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { N as NEW_PACKAGE_MARKER, P as PR_COMMENT_MARKER, b as buildChangelogBody, a as buildCommentBody, c as buildCompareLink, d as buildContributors, e as buildReleaseSummary, f as bump, g as capReleaseTypeForZeroMajor, h as changelog, i as checkGitStatusIfDirty, j as collectContributorNames, k as collectPackageBumps, l as confirmBump, m as createCommitAndTags, n as createGitlabRelease, o as defineConfig, p as detectGitProvider, q as detectPackageManager, r as detectPullRequest, s as determinePublishTag, t as determineReleaseType, u as determineSemverChange, v as executeBuildCmd, w as executeFormatCmd, x as executeHook, y as expandPackagesToBumpWithDependents, z as extractChangelogSummary, A as extractVersionFromPackageTag, B as extractVersionFromTag, C as fetchGitTags, D as filterOutPrivatePackages, E as findGitHubPR, F as findGitLabMR, G as findReachableCommitBySubject, H as formatChangelogForSlack, I as formatPackagesForSlack, J as formatSlackMessage, K as formatTweetMessage, L as generateChangelog, M as generateMarkDown, O as getAuthCommand, Q as getBumpedIndependentPackages, R as getBumpedPackageIndependently, S as getCIName, T as getCanaryVersion, U as getCommitChangedFiles, V as getCommitSubject, W as getCurrentGitBranch, X as getCurrentGitRef, Y as getDefaultConfig, Z as getDependentsOf, _ as getFirstCommit, $ as getGitDiff, a0 as getGitStatus, a1 as getIndependentTag, a2 as getLastPackageTag, a3 as getLastRepoTag, a4 as getLastStableTag, a5 as getLastTag, a6 as getModifiedReleaseFilePatterns, a7 as getNpmRegistry, a8 as getPackageCommits, a9 as getPackageDependencies, aa as getPackageNewVersion, ab as getPackages, ac as getPackagesOrBumpedPackages, ad as getPackagesToPublishInIndependentMode, ae as getPackagesToPublishInSelectiveMode, af as getPreid, ag as getReleaseUrl, ah as getRootPackage, ai as getShortCommitSha, aj as getSlackToken, ak as getSlackWebhookUrl, al as getTwitterCredentials, am as github, an as gitlab, ao as globDirsAbsolute, ap as hasLernaJson, aq as isAncestor, ar as isBumpedPackage, as as isChangedPreid, at as isCommitOnlyInIgnoredPackages, au as isGraduating, av as isGraduatingToStableBetweenVersion, aw as isInCI, ax as isPrerelease, ay as isPrereleaseReleaseType, az as isStableReleaseType, aA as isTagVersionCompatibleWithCurrent, aB as isVersionAlreadyPublishedError, aC as isVersionPublished, aD as loadRelizyConfig, aE as mergeTypes, aF as parseChangelogMarkdown, aG as parseGitRemoteUrl, aH as postPrComment, aI as postReleaseToSlack, aJ as postReleaseToTwitter, aK as prComment, aL as providerRelease, aM as providerReleaseSafetyCheck, aN as publish, aO as publishPackage, aP as publishSafetyCheck, aQ as pushCommitAndTags, aR as pushTagForce, aS as readPackageJson, aT as readPackages, aU as reconcileFromTag, aV as redactSecrets, aW as release, aX as resetRewrittenTagCache, aY as resolveAllConfiguredRegistryTargets, aZ as resolveIgnoredPackagePaths, a_ as resolveRegistryTargetsForPackage, a$ as resolveRegistryTargetsForPackages, b0 as resolveTags, b1 as retagAnnotatedLocal, b2 as rollbackModifiedFiles, b3 as shouldFilterPrereleaseTags, b4 as social, b5 as socialSafetyCheck, b6 as tagExists, b7 as topologicalSort, b8 as tryPostPrComment, b9 as updateLernaVersion, ba as withRegistryNpmrc, bb as writeChangelogToFile, bc as writeVersion } from './shared/relizy.DDpPSTvS.mjs';
1
+ export { N as NEW_PACKAGE_MARKER, P as PR_COMMENT_MARKER, a as assertBranchUpToDateWithRemote, b as assertReleaseTagsAvailable, c as buildChangelogBody, d as buildCommentBody, e as buildCompareLink, f as buildContributors, g as buildReleaseSummary, h as bump, i as capReleaseTypeForZeroMajor, j as changelog, k as checkGitStatusIfDirty, l as collectContributorNames, m as collectPackageBumps, n as confirmBump, o as createCommitAndTags, p as createGitlabRelease, q as defineConfig, r as detectGitProvider, s as detectPackageManager, t as detectPullRequest, u as determinePublishTag, v as determineReleaseType, w as determineSemverChange, x as executeBuildCmd, y as executeFormatCmd, z as executeHook, A as expandPackagesToBumpWithDependents, B as extractChangelogSummary, C as extractVersionFromPackageTag, D as extractVersionFromTag, E as fetchGitTags, F as filterOutPrivatePackages, G as findGitHubPR, H as findGitLabMR, I as findReachableCommitBySubject, J as formatChangelogForSlack, K as formatPackagesForSlack, L as formatSlackMessage, M as formatTweetMessage, O as generateChangelog, Q as generateMarkDown, R as getAuthCommand, S as getBumpedIndependentPackages, T as getBumpedPackageIndependently, U as getCIName, V as getCanaryVersion, W as getCommitChangedFiles, X as getCommitSubject, Y as getCurrentGitBranch, Z as getCurrentGitRef, _ as getDefaultConfig, $ as getDependentsOf, a0 as getFirstCommit, a1 as getGitDiff, a2 as getGitStatus, a3 as getGitUpstream, a4 as getIndependentTag, a5 as getLastPackageTag, a6 as getLastRepoTag, a7 as getLastStableTag, a8 as getLastTag, a9 as getModifiedReleaseFilePatterns, aa as getNpmRegistry, ab as getPackageCommits, ac as getPackageDependencies, ad as getPackageNewVersion, ae as getPackages, af as getPackagesOrBumpedPackages, ag as getPackagesToPublishInIndependentMode, ah as getPackagesToPublishInSelectiveMode, ai as getPreid, aj as getReleaseTagNames, ak as getReleaseUrl, al as getRootPackage, am as getShortCommitSha, an as getSlackToken, ao as getSlackWebhookUrl, ap as getTwitterCredentials, aq as github, ar as gitlab, as as globDirsAbsolute, at as hasLernaJson, au as isAncestor, av as isBumpedPackage, aw as isChangedPreid, ax as isCommitOnlyInIgnoredPackages, ay as isGraduating, az as isGraduatingToStableBetweenVersion, aA as isInCI, aB as isPrerelease, aC as isPrereleaseReleaseType, aD as isStableReleaseType, aE as isTagVersionCompatibleWithCurrent, aF as isVersionAlreadyPublishedError, aG as isVersionPublished, aH as loadRelizyConfig, aI as mergeTypes, aJ as parseChangelogMarkdown, aK as parseGitRemoteUrl, aL as postPrComment, aM as postReleaseToSlack, aN as postReleaseToTwitter, aO as prComment, aP as providerRelease, aQ as providerReleaseSafetyCheck, aR as publish, aS as publishPackage, aT as publishSafetyCheck, aU as pushCommitAndTags, aV as pushTagForce, aW as readPackageJson, aX as readPackages, aY as reconcileFromTag, aZ as redactSecrets, a_ as release, a$ as resetRewrittenTagCache, b0 as resolveAllConfiguredRegistryTargets, b1 as resolveIgnoredPackagePaths, b2 as resolveRegistryTargetsForPackage, b3 as resolveRegistryTargetsForPackages, b4 as resolveTags, b5 as retagAnnotatedLocal, b6 as rollbackModifiedFiles, b7 as shouldFilterPrereleaseTags, b8 as social, b9 as socialSafetyCheck, ba as tagExists, bb as topologicalSort, bc as tryPostPrComment, bd as updateLernaVersion, be as withRegistryNpmrc, bf as writeChangelogToFile, bg as writeVersion } from './shared/relizy.DhYBvZNi.mjs';
2
2
  import '@maz-ui/node';
3
3
  import 'node:child_process';
4
4
  import 'node:process';
@@ -250,7 +250,7 @@ function buildExplanation({
250
250
  }) {
251
251
  const lines = [
252
252
  `\u26A0\uFE0F Tag "${from}" points to a commit that is no longer in the history of "${to}".`,
253
- `It was most likely rewritten by a "git rebase" after the tag was created.`,
253
+ `It was most likely rewritten by a "git rebase" after the tag was created, or its release commit was never pushed to "${to}" (rejected push during a release).`,
254
254
  `Generating a changelog from it would span the whole divergent range (often the entire history since the last stable release, with duplicated commits) instead of the real changes.`
255
255
  ];
256
256
  if (twin) {
@@ -2440,7 +2440,7 @@ async function publishToRegistryTarget({
2440
2440
  return;
2441
2441
  }
2442
2442
  throw new Error(
2443
- `Version ${packageNameAndVersion} already exists on the registry${registryLabel} and cannot be overwritten. This usually happens when re-running a release on the same commit (e.g. a canary rerun). Enable publish.skipExistingVersions (or pass --skip-existing-versions) to skip already-published versions instead of failing.`,
2443
+ `Version ${packageNameAndVersion} already exists on the registry${registryLabel} and cannot be overwritten. This usually happens when re-running a release on the same commit (e.g. a canary rerun), or after a release that published this version but failed to push its release commit (merge its tag into your branch to recover). Enable publish.skipExistingVersions (or pass --skip-existing-versions) to skip already-published versions instead of failing.`,
2444
2444
  { cause: error }
2445
2445
  );
2446
2446
  } else {
@@ -2993,17 +2993,158 @@ async function createCommitAndTags({
2993
2993
  throw error;
2994
2994
  }
2995
2995
  }
2996
- async function pushCommitAndTags({ config, dryRun, logLevel, cwd }) {
2996
+ const quietExec = { noStderr: true, noStdout: true, noSuccess: true, noError: true };
2997
+ async function getGitUpstream(cwd) {
2998
+ try {
2999
+ const branch = getCurrentGitBranch(cwd);
3000
+ if (!branch || branch === "HEAD") {
3001
+ return null;
3002
+ }
3003
+ const [{ stdout: remote }, { stdout: mergeRef }, { stdout: trackingRef }] = await Promise.all([
3004
+ execPromise(`git config --get branch.${branch}.remote`, { cwd, ...quietExec }),
3005
+ execPromise(`git config --get branch.${branch}.merge`, { cwd, ...quietExec }),
3006
+ execPromise("git rev-parse --symbolic-full-name @{upstream}", { cwd, ...quietExec })
3007
+ ]);
3008
+ if (!remote.trim() || !mergeRef.trim() || !trackingRef.trim()) {
3009
+ return null;
3010
+ }
3011
+ return {
3012
+ remote: remote.trim(),
3013
+ mergeRef: mergeRef.trim(),
3014
+ trackingRef: trackingRef.trim(),
3015
+ name: trackingRef.trim().replace(/^refs\/remotes\//, "")
3016
+ };
3017
+ } catch {
3018
+ return null;
3019
+ }
3020
+ }
3021
+ async function fetchUpstream(upstream, cwd) {
3022
+ await execPromise(`git fetch ${upstream.remote} +${upstream.mergeRef}:${upstream.trackingRef}`, { cwd, ...quietExec });
3023
+ }
3024
+ async function assertBranchUpToDateWithRemote({ cwd }) {
3025
+ const upstream = await getGitUpstream(cwd);
3026
+ if (!upstream) {
3027
+ logger.debug("No upstream branch configured, skipping remote sync check");
3028
+ return;
3029
+ }
3030
+ try {
3031
+ await fetchUpstream(upstream, cwd);
3032
+ } catch (error) {
3033
+ logger.warn(`Could not fetch "${upstream.name}", skipping remote sync check`);
3034
+ logger.debug("Fetch error:", error);
3035
+ return;
3036
+ }
3037
+ const { stdout } = await execPromise(`git rev-list --count HEAD..${upstream.trackingRef}`, { cwd, ...quietExec });
3038
+ const missingCommits = Number.parseInt(stdout.trim(), 10) || 0;
3039
+ if (missingCommits > 0) {
3040
+ throw new Error(
3041
+ `The current branch is behind "${upstream.name}" by ${missingCommits} commit(s): new commits were pushed while the release was running.
3042
+ Releasing now would publish packages whose release commit cannot be pushed.
3043
+ Re-run the release from the latest commit of "${upstream.name}".`
3044
+ );
3045
+ }
3046
+ logger.debug(`Branch is up to date with "${upstream.name}"`);
3047
+ }
3048
+ function isPushRejectedAsBehind(error) {
3049
+ if (!error || typeof error !== "object") {
3050
+ return false;
3051
+ }
3052
+ const { message, stderr } = error;
3053
+ const output = `${typeof message === "string" ? message : ""}
3054
+ ${typeof stderr === "string" ? stderr : ""}`;
3055
+ return output.includes("(non-fast-forward)") || output.includes("(fetch first)");
3056
+ }
3057
+ async function recoverRejectedPush({
3058
+ config,
3059
+ command,
3060
+ tags,
3061
+ pushError,
3062
+ logLevel,
3063
+ cwd
3064
+ }) {
3065
+ const upstream = await getGitUpstream(cwd);
3066
+ if (!upstream) {
3067
+ throw pushError;
3068
+ }
3069
+ logger.warn(`Push rejected: "${upstream.name}" received new commits during the release. Merging them into the release commit and retrying...`);
3070
+ try {
3071
+ await fetchUpstream(upstream, cwd);
3072
+ const noVerifyFlag = config.release.noVerify ? " --no-verify" : "";
3073
+ await execPromise(`git merge --no-edit${noVerifyFlag} ${upstream.name}`, { cwd, ...quietExec });
3074
+ } catch (mergeError) {
3075
+ await execPromise("git merge --abort", { cwd, ...quietExec }).catch(() => {
3076
+ });
3077
+ if (tags.length > 0) {
3078
+ const tagRefs = tags.map((tag) => `refs/tags/${tag}`).join(" ");
3079
+ await execPromise(`git push ${upstream.remote} ${tagRefs}`, { cwd, ...quietExec }).catch(() => {
3080
+ });
3081
+ }
3082
+ const recoverRef = tags[0] ?? "HEAD";
3083
+ throw new Error(
3084
+ `Push rejected: "${upstream.name}" received new commits during the release, and they could not be merged automatically into the release commit.
3085
+ The packages are already published, but the release commit is not on the branch.
3086
+ To recover, merge it manually: git fetch --tags && git merge ${recoverRef} && git push`,
3087
+ { cause: mergeError }
3088
+ );
3089
+ }
3090
+ await execPromise(command, { noStderr: true, noStdout: true, logLevel, cwd });
3091
+ logger.success(`Merged "${upstream.name}" into the release commit and pushed`);
3092
+ }
3093
+ async function pushCommitAndTags({
3094
+ config,
3095
+ dryRun,
3096
+ logLevel,
3097
+ cwd,
3098
+ tags = []
3099
+ }) {
2997
3100
  logger.start("Start push changes and tags");
2998
3101
  const command = config.release.gitTag ? "git push --follow-tags" : "git push";
2999
3102
  if (dryRun) {
3000
3103
  logger.info(`[dry-run] ${command}`);
3001
3104
  } else {
3002
3105
  logger.debug(`Executing: ${command}`);
3003
- await execPromise(command, { noStderr: true, noStdout: true, logLevel, cwd });
3106
+ try {
3107
+ await execPromise(command, { noStderr: true, noStdout: true, noError: true, logLevel, cwd });
3108
+ } catch (error) {
3109
+ if (!isPushRejectedAsBehind(error)) {
3110
+ logger.error(`${command} failed`, error);
3111
+ throw error;
3112
+ }
3113
+ await recoverRejectedPush({ config, command, tags, pushError: error, logLevel, cwd });
3114
+ }
3004
3115
  }
3005
3116
  logger.success("Pushing changes and tags completed!");
3006
3117
  }
3118
+ function getReleaseTagNames({
3119
+ config,
3120
+ bumpedPackages,
3121
+ newVersion
3122
+ }) {
3123
+ if (!config.release.gitTag) {
3124
+ return [];
3125
+ }
3126
+ if (config.monorepo?.versionMode === "independent") {
3127
+ return (bumpedPackages ?? []).filter((pkg) => pkg.newVersion).map((pkg) => getIndependentTag({ name: pkg.name, version: pkg.newVersion }));
3128
+ }
3129
+ const version = newVersion || readPackageJson(config.cwd)?.version;
3130
+ const tagName = version ? config.templates.tagBody?.replaceAll("{{newVersion}}", version) : void 0;
3131
+ return tagName ? [tagName] : [];
3132
+ }
3133
+ async function assertReleaseTagsAvailable({ tags, cwd }) {
3134
+ for (const tag of tags) {
3135
+ if (!await tagExists(tag, cwd)) {
3136
+ continue;
3137
+ }
3138
+ if (await isAncestor(tag, "HEAD", cwd)) {
3139
+ throw new Error(`Tag "${tag}" already exists. Check the versions in your package.json files, they are behind the latest release.`);
3140
+ }
3141
+ throw new Error(
3142
+ `Tag "${tag}" already exists but is not part of the current branch history.
3143
+ A previous release most likely published this version and pushed its tag, but its release commit was never pushed to the branch.
3144
+ To recover, merge the release commit, then re-run the release: git fetch --tags && git merge ${tag} && git push`
3145
+ );
3146
+ }
3147
+ }
3007
3148
  async function rollbackModifiedFiles({
3008
3149
  config
3009
3150
  }) {
@@ -6678,6 +6819,20 @@ function getReleaseConfig(options = {}) {
6678
6819
  }
6679
6820
  });
6680
6821
  }
6822
+ function shouldPushReleaseCommit(config) {
6823
+ return Boolean(config.release.push && config.release.commit);
6824
+ }
6825
+ async function guardBeforePublish({ config, dryRun, guard }) {
6826
+ try {
6827
+ await guard();
6828
+ } catch (error) {
6829
+ if (!dryRun) {
6830
+ logger.fail("Release aborted before publishing, rolling back modified files...");
6831
+ await rollbackModifiedFiles({ config });
6832
+ }
6833
+ throw error;
6834
+ }
6835
+ }
6681
6836
  async function releaseSafetyCheck({
6682
6837
  config,
6683
6838
  provider
@@ -6691,7 +6846,8 @@ async function releaseSafetyCheck({
6691
6846
  await Promise.all([
6692
6847
  providerReleaseSafetyCheck({ config, provider }),
6693
6848
  publishSafetyCheck({ config }),
6694
- socialSafetyCheck({ config })
6849
+ socialSafetyCheck({ config }),
6850
+ ...shouldPushReleaseCommit(config) ? [assertBranchUpToDateWithRemote({ cwd: config.cwd })] : []
6695
6851
  ]);
6696
6852
  logger.success("Safety checks passed");
6697
6853
  } catch (error) {
@@ -6800,6 +6956,16 @@ async function release(options = {}) {
6800
6956
  });
6801
6957
  return;
6802
6958
  }
6959
+ if (config.release.commit) {
6960
+ await guardBeforePublish({
6961
+ config,
6962
+ dryRun,
6963
+ guard: () => assertReleaseTagsAvailable({
6964
+ tags: getReleaseTagNames({ config, bumpedPackages: bumpResult.bumpedPackages, newVersion: bumpResult.newVersion }),
6965
+ cwd: config.cwd
6966
+ })
6967
+ });
6968
+ }
6803
6969
  logger.box("Generate changelogs");
6804
6970
  if (config.release.changelog) {
6805
6971
  await changelog({
@@ -6819,6 +6985,13 @@ async function release(options = {}) {
6819
6985
  } else {
6820
6986
  logger.info("Skipping changelog generation (--no-changelog)");
6821
6987
  }
6988
+ if (shouldPushReleaseCommit(config)) {
6989
+ await guardBeforePublish({
6990
+ config,
6991
+ dryRun,
6992
+ guard: () => assertBranchUpToDateWithRemote({ cwd: config.cwd })
6993
+ });
6994
+ }
6822
6995
  logger.box("Publish packages to registry");
6823
6996
  let publishResponse;
6824
6997
  if (config.release.publish) {
@@ -6870,7 +7043,8 @@ async function release(options = {}) {
6870
7043
  config,
6871
7044
  dryRun,
6872
7045
  logLevel: config.logLevel,
6873
- cwd: config.cwd
7046
+ cwd: config.cwd,
7047
+ tags: createdTags
6874
7048
  });
6875
7049
  await executeHook("success:push", config, dryRun);
6876
7050
  } catch (error) {
@@ -6963,4 +7137,4 @@ async function release(options = {}) {
6963
7137
  }
6964
7138
  }
6965
7139
 
6966
- export { getGitDiff as $, extractVersionFromPackageTag as A, extractVersionFromTag as B, fetchGitTags as C, filterOutPrivatePackages as D, findGitHubPR as E, findGitLabMR as F, findReachableCommitBySubject as G, formatChangelogForSlack as H, formatPackagesForSlack as I, formatSlackMessage as J, formatTweetMessage as K, generateChangelog as L, generateMarkDown as M, NEW_PACKAGE_MARKER as N, getAuthCommand as O, PR_COMMENT_MARKER as P, getBumpedIndependentPackages as Q, getBumpedPackageIndependently as R, getCIName as S, getCanaryVersion as T, getCommitChangedFiles as U, getCommitSubject as V, getCurrentGitBranch as W, getCurrentGitRef as X, getDefaultConfig as Y, getDependentsOf as Z, getFirstCommit as _, buildCommentBody as a, resolveRegistryTargetsForPackages as a$, getGitStatus as a0, getIndependentTag as a1, getLastPackageTag as a2, getLastRepoTag as a3, getLastStableTag as a4, getLastTag as a5, getModifiedReleaseFilePatterns as a6, getNpmRegistry as a7, getPackageCommits as a8, getPackageDependencies as a9, isTagVersionCompatibleWithCurrent as aA, isVersionAlreadyPublishedError as aB, isVersionPublished as aC, loadRelizyConfig as aD, mergeTypes as aE, parseChangelogMarkdown as aF, parseGitRemoteUrl as aG, postPrComment as aH, postReleaseToSlack as aI, postReleaseToTwitter as aJ, prComment as aK, providerRelease as aL, providerReleaseSafetyCheck as aM, publish as aN, publishPackage as aO, publishSafetyCheck as aP, pushCommitAndTags as aQ, pushTagForce as aR, readPackageJson as aS, readPackages as aT, reconcileFromTag as aU, redactSecrets as aV, release as aW, resetRewrittenTagCache as aX, resolveAllConfiguredRegistryTargets as aY, resolveIgnoredPackagePaths as aZ, resolveRegistryTargetsForPackage as a_, getPackageNewVersion as aa, getPackages as ab, getPackagesOrBumpedPackages as ac, getPackagesToPublishInIndependentMode as ad, getPackagesToPublishInSelectiveMode as ae, getPreid as af, getReleaseUrl as ag, getRootPackage as ah, getShortCommitSha as ai, getSlackToken as aj, getSlackWebhookUrl as ak, getTwitterCredentials as al, github as am, gitlab as an, globDirsAbsolute as ao, hasLernaJson as ap, isAncestor as aq, isBumpedPackage as ar, isChangedPreid as as, isCommitOnlyInIgnoredPackages as at, isGraduating as au, isGraduatingToStableBetweenVersion as av, isInCI as aw, isPrerelease as ax, isPrereleaseReleaseType as ay, isStableReleaseType as az, buildChangelogBody as b, resolveTags as b0, retagAnnotatedLocal as b1, rollbackModifiedFiles as b2, shouldFilterPrereleaseTags as b3, social as b4, socialSafetyCheck as b5, tagExists as b6, topologicalSort as b7, tryPostPrComment as b8, updateLernaVersion as b9, withRegistryNpmrc as ba, writeChangelogToFile as bb, writeVersion as bc, buildCompareLink as c, buildContributors as d, buildReleaseSummary as e, bump as f, capReleaseTypeForZeroMajor as g, changelog as h, checkGitStatusIfDirty as i, collectContributorNames as j, collectPackageBumps as k, confirmBump as l, createCommitAndTags as m, createGitlabRelease as n, defineConfig as o, detectGitProvider as p, detectPackageManager as q, detectPullRequest as r, determinePublishTag as s, determineReleaseType as t, determineSemverChange as u, executeBuildCmd as v, executeFormatCmd as w, executeHook as x, expandPackagesToBumpWithDependents as y, extractChangelogSummary as z };
7140
+ export { getDependentsOf as $, expandPackagesToBumpWithDependents as A, extractChangelogSummary as B, extractVersionFromPackageTag as C, extractVersionFromTag as D, fetchGitTags as E, filterOutPrivatePackages as F, findGitHubPR as G, findGitLabMR as H, findReachableCommitBySubject as I, formatChangelogForSlack as J, formatPackagesForSlack as K, formatSlackMessage as L, formatTweetMessage as M, NEW_PACKAGE_MARKER as N, generateChangelog as O, PR_COMMENT_MARKER as P, generateMarkDown as Q, getAuthCommand as R, getBumpedIndependentPackages as S, getBumpedPackageIndependently as T, getCIName as U, getCanaryVersion as V, getCommitChangedFiles as W, getCommitSubject as X, getCurrentGitBranch as Y, getCurrentGitRef as Z, getDefaultConfig as _, assertBranchUpToDateWithRemote as a, resetRewrittenTagCache as a$, getFirstCommit as a0, getGitDiff as a1, getGitStatus as a2, getGitUpstream as a3, getIndependentTag as a4, getLastPackageTag as a5, getLastRepoTag as a6, getLastStableTag as a7, getLastTag as a8, getModifiedReleaseFilePatterns as a9, isInCI as aA, isPrerelease as aB, isPrereleaseReleaseType as aC, isStableReleaseType as aD, isTagVersionCompatibleWithCurrent as aE, isVersionAlreadyPublishedError as aF, isVersionPublished as aG, loadRelizyConfig as aH, mergeTypes as aI, parseChangelogMarkdown as aJ, parseGitRemoteUrl as aK, postPrComment as aL, postReleaseToSlack as aM, postReleaseToTwitter as aN, prComment as aO, providerRelease as aP, providerReleaseSafetyCheck as aQ, publish as aR, publishPackage as aS, publishSafetyCheck as aT, pushCommitAndTags as aU, pushTagForce as aV, readPackageJson as aW, readPackages as aX, reconcileFromTag as aY, redactSecrets as aZ, release as a_, getNpmRegistry as aa, getPackageCommits as ab, getPackageDependencies as ac, getPackageNewVersion as ad, getPackages as ae, getPackagesOrBumpedPackages as af, getPackagesToPublishInIndependentMode as ag, getPackagesToPublishInSelectiveMode as ah, getPreid as ai, getReleaseTagNames as aj, getReleaseUrl as ak, getRootPackage as al, getShortCommitSha as am, getSlackToken as an, getSlackWebhookUrl as ao, getTwitterCredentials as ap, github as aq, gitlab as ar, globDirsAbsolute as as, hasLernaJson as at, isAncestor as au, isBumpedPackage as av, isChangedPreid as aw, isCommitOnlyInIgnoredPackages as ax, isGraduating as ay, isGraduatingToStableBetweenVersion as az, assertReleaseTagsAvailable as b, resolveAllConfiguredRegistryTargets as b0, resolveIgnoredPackagePaths as b1, resolveRegistryTargetsForPackage as b2, resolveRegistryTargetsForPackages as b3, resolveTags as b4, retagAnnotatedLocal as b5, rollbackModifiedFiles as b6, shouldFilterPrereleaseTags as b7, social as b8, socialSafetyCheck as b9, tagExists as ba, topologicalSort as bb, tryPostPrComment as bc, updateLernaVersion as bd, withRegistryNpmrc as be, writeChangelogToFile as bf, writeVersion as bg, buildChangelogBody as c, buildCommentBody as d, buildCompareLink as e, buildContributors as f, buildReleaseSummary as g, bump as h, capReleaseTypeForZeroMajor as i, changelog as j, checkGitStatusIfDirty as k, collectContributorNames as l, collectPackageBumps as m, confirmBump as n, createCommitAndTags as o, createGitlabRelease as p, defineConfig as q, detectGitProvider as r, detectPackageManager as s, detectPullRequest as t, determinePublishTag as u, determineReleaseType as v, determineSemverChange as w, executeBuildCmd as x, executeFormatCmd as y, executeHook as z };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relizy",
3
3
  "type": "module",
4
- "version": "1.5.1",
4
+ "version": "1.6.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",