UNPKG

2.18 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var SEMVER;
4(function (SEMVER) {
5 SEMVER["major"] = "major";
6 SEMVER["premajor"] = "premajor";
7 SEMVER["minor"] = "minor";
8 SEMVER["preminor"] = "preminor";
9 SEMVER["patch"] = "patch";
10 SEMVER["prepatch"] = "prepatch";
11 SEMVER["noVersion"] = "";
12})(SEMVER || (SEMVER = {}));
13exports.default = SEMVER;
14/** Given two labels determine the next SEMVER bump. */
15function getHigherSemverTag(left, right) {
16 if (left === SEMVER.major || right === SEMVER.major) {
17 return SEMVER.major;
18 }
19 if (left === SEMVER.minor || right === SEMVER.minor) {
20 return SEMVER.minor;
21 }
22 return SEMVER.patch;
23}
24exports.getHigherSemverTag = getHigherSemverTag;
25/**
26 * Determine the version bump from the labels on merged PRs.
27 * Respects skip-release labels and the "onlyPublishWithReleaseLabel"
28 * strategy.
29 */
30function calculateSemVerBump(labels, labelMap, { onlyPublishWithReleaseLabel } = {}) {
31 const labelSet = new Set();
32 const skipReleaseLabels = labelMap.get('skip') || [];
33 const noReleaseLabels = labelMap.get('none') || [];
34 labels.forEach(pr => {
35 pr.forEach(label => {
36 const userLabel = [...labelMap.entries()].find(pair => pair[1].includes(label));
37 labelSet.add(userLabel ? userLabel[0] : label);
38 });
39 });
40 let skipRelease = false;
41 if (labels.length > 0 && labels[0].length > 0) {
42 const releaseLabels = labelMap.get('release') || [];
43 skipRelease = onlyPublishWithReleaseLabel
44 ? !labels[0].some(label => releaseLabels.includes(label))
45 : labels[0].some(label => skipReleaseLabels.includes(label));
46 }
47 // If the pr has only 1 `none` release label, skip the release
48 if (labels.length > 0 &&
49 labels[0].length === 1 &&
50 noReleaseLabels.includes(labels[0][0])) {
51 return SEMVER.noVersion;
52 }
53 const version = [...labelSet].reduce(getHigherSemverTag, SEMVER.patch);
54 if (skipRelease) {
55 return SEMVER.noVersion;
56 }
57 return version;
58}
59exports.calculateSemVerBump = calculateSemVerBump;
60//# sourceMappingURL=semver.js.map
\No newline at end of file