1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.calculateSemVerBump = exports.getHigherSemverTag = exports.preVersionMap = void 0;
|
4 | var SEMVER;
|
5 | (function (SEMVER) {
|
6 | SEMVER["major"] = "major";
|
7 | SEMVER["premajor"] = "premajor";
|
8 | SEMVER["minor"] = "minor";
|
9 | SEMVER["preminor"] = "preminor";
|
10 | SEMVER["patch"] = "patch";
|
11 | SEMVER["prepatch"] = "prepatch";
|
12 | SEMVER["noVersion"] = "";
|
13 | })(SEMVER || (SEMVER = {}));
|
14 | exports.preVersionMap = new Map([
|
15 | [SEMVER.major, SEMVER.premajor],
|
16 | [SEMVER.minor, SEMVER.preminor],
|
17 | [SEMVER.patch, SEMVER.prepatch],
|
18 | ]);
|
19 | exports.default = SEMVER;
|
20 |
|
21 | function getHigherSemverTag(left, right) {
|
22 | if (left === SEMVER.major || right === SEMVER.major) {
|
23 | return SEMVER.major;
|
24 | }
|
25 | if (left === SEMVER.minor || right === SEMVER.minor) {
|
26 | return SEMVER.minor;
|
27 | }
|
28 | return SEMVER.patch;
|
29 | }
|
30 | exports.getHigherSemverTag = getHigherSemverTag;
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 | function calculateSemVerBump(labels, labelMap, { onlyPublishWithReleaseLabel } = {}) {
|
37 | const labelSet = new Set();
|
38 | const skipReleaseLabels = labelMap.get("skip") || [];
|
39 | labels.forEach((pr, index) => {
|
40 |
|
41 | if (pr.length === 0 && index === 0) {
|
42 | labelSet.add(SEMVER.patch);
|
43 | }
|
44 | pr.forEach((label) => {
|
45 | const userLabel = [...labelMap.entries()].find((pair) => pair[1].includes(label));
|
46 | if (userLabel) {
|
47 | labelSet.add(userLabel[0]);
|
48 | }
|
49 | });
|
50 | });
|
51 | const lastMergedCommitLabels = labels[0] || [];
|
52 | const releaseLabels = labelMap.get("release") || [];
|
53 | const skipRelease = onlyPublishWithReleaseLabel
|
54 | ? !lastMergedCommitLabels.some((label) => releaseLabels.includes(label))
|
55 | : lastMergedCommitLabels.some((label) => skipReleaseLabels.includes(label));
|
56 |
|
57 | const onlyNoReleaseLabels = [...labelSet].reduce((condition, releaseType) => condition && (releaseType === "none" || releaseType === "skip"), true);
|
58 | if (labelSet.size > 0 && onlyNoReleaseLabels) {
|
59 | return SEMVER.noVersion;
|
60 | }
|
61 | const version = [...labelSet].reduce(getHigherSemverTag, SEMVER.patch);
|
62 | if (skipRelease) {
|
63 | return SEMVER.noVersion;
|
64 | }
|
65 | return version;
|
66 | }
|
67 | exports.calculateSemVerBump = calculateSemVerBump;
|
68 |
|
\ | No newline at end of file |