in src/common/github-service.ts [110:137]
private async getHighestVersionsForMajor(major: number, minorCount: number): Promise<string[]> {
const allLabelsResponse = await this.octokit.search.labels({
repository_id: this.repoId as number,
q: `v${major}.`,
per_page: 100,
sort: 'created',
order: 'desc',
});
const labels = allLabelsResponse.data.items
.map(({ name }) => semver.parse(name))
.filter((v): v is semver.SemVer => v !== null);
if (!labels.length) {
return [];
}
const highestMinor = labels.reduce((highest, current) => Math.max(current.minor, highest), 0);
// Create an array listing the highest x minors (x === minorCount), like [15, 14, 13].
// It will make sure this never goes below 0.
const highestMinors = uniq(
[...Array(minorCount)].map((_, idx) => Math.max(0, highestMinor - idx))
);
return labels
.filter((label) => label.major === major && highestMinors.includes(label.minor))
.map((label) => `v${label.version}`);
}