import semverInc from "semver/functions/inc"; import { InternalRelease, PreInfo } from "./types"; import { InternalError } from "@changesets/errors"; export function incrementVersion( release: InternalRelease, preInfo: PreInfo | undefined ) { if (release.type === "none") { return release.oldVersion; } let version = semverInc(release.oldVersion, release.type)!; if (preInfo !== undefined && preInfo.state.mode !== "exit") { let preVersion = preInfo.preVersions.get(release.name); if (preVersion === undefined) { throw new InternalError( `preVersion for ${release.name} does not exist when preState is defined` ); } // why are we adding this ourselves rather than passing 'pre' + versionType to semver.inc? // because semver.inc with prereleases is confusing and this seems easier version += `-${preInfo.state.tag}.${preVersion}`; } return version; }