astro-ghostcms/.pnpm-store/v3/files/ef/0c1ca49386a1739ee3ac17a751f...

58 lines
1.6 KiB
Plaintext

import { Config } from "@changesets/types";
import { Package } from "@manypkg/get-packages";
import { InternalRelease } from "./types";
import { getCurrentHighestVersion, getHighestReleaseType } from "./utils";
export default function matchFixedConstraint(
releases: Map<string, InternalRelease>,
packagesByName: Map<string, Package>,
config: Config
): boolean {
let updated = false;
for (let fixedPackages of config.fixed) {
let releasingFixedPackages = [...releases.values()].filter(
(release) =>
fixedPackages.includes(release.name) && release.type !== "none"
);
if (releasingFixedPackages.length === 0) continue;
let highestReleaseType = getHighestReleaseType(releasingFixedPackages);
let highestVersion = getCurrentHighestVersion(
fixedPackages,
packagesByName
);
// Finally, we update the packages so all of them are on the highest version
for (let pkgName of fixedPackages) {
if (config.ignore.includes(pkgName)) {
continue;
}
let release = releases.get(pkgName);
if (!release) {
updated = true;
releases.set(pkgName, {
name: pkgName,
type: highestReleaseType,
oldVersion: highestVersion,
changesets: [],
});
continue;
}
if (release.type !== highestReleaseType) {
updated = true;
release.type = highestReleaseType;
}
if (release.oldVersion !== highestVersion) {
updated = true;
release.oldVersion = highestVersion;
}
}
}
return updated;
}