public async getUpcomingReleaseVersions()

in src/common/github-service.ts [75:103]


  public async getUpcomingReleaseVersions(): Promise<string[]> {
    const response = await this.octokit.repos.listReleases({
      owner: GITHUB_OWNER,
      repo: this.repoName,
      per_page: 10,
    });

    const tags = response.data
      .filter((release) => !release.prerelease)
      .map((release) => semver.parse(release.tag_name))
      .filter((tag): tag is SemVer => !!tag);

    if (!tags.length) {
      return [];
    }

    const latestVersion = tags.sort((v1, v2) => v2.compare(v1))[0];
    const previousPatch = tags.find(
      (version) =>
        version.major === latestVersion.major && version.minor === latestVersion.minor - 1
    );

    return [
      ...[previousPatch ? [previousPatch.inc('patch')] : []],
      latestVersion.inc('patch').format(),
      latestVersion.inc('minor').format(),
      latestVersion.inc('major').format(),
    ].map((v) => `v${v}`);
  }