UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

80 lines 3.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GiteaReleasesDatasource = void 0; const tslib_1 = require("tslib"); const decorator_1 = require("../../../util/cache/package/decorator"); const gitea_1 = require("../../../util/http/gitea"); const datasource_1 = require("../datasource"); const gitea_tags_1 = require("../gitea-tags"); const schema_1 = require("../gitea-tags/schema"); const schema_2 = require("./schema"); class GiteaReleasesDatasource extends datasource_1.Datasource { static id = 'gitea-releases'; http = new gitea_1.GiteaHttp(GiteaReleasesDatasource.id); static defaultRegistryUrls = ['https://gitea.com']; static cacheNamespace = `datasource-${GiteaReleasesDatasource.id}`; releaseTimestampSupport = true; releaseTimestampNote = 'The release timestamp is determined from the `published_at` field in the results.'; sourceUrlSupport = 'package'; sourceUrlNote = 'The source URL is determined by using the `packageName` and `registryUrl`.'; constructor() { super(GiteaReleasesDatasource.id); } // getReleases fetches list of tags for the repository async getReleases({ registryUrl, packageName: repo, }) { const url = `${gitea_tags_1.GiteaTagsDatasource.getApiUrl(registryUrl)}repos/${repo}/releases?draft=false`; const tags = (await this.http.getJson(url, { paginate: true, }, schema_2.ReleasesSchema)).body; const dependency = { sourceUrl: gitea_tags_1.GiteaTagsDatasource.getSourceUrl(repo, registryUrl), registryUrl: gitea_tags_1.GiteaTagsDatasource.getRegistryURL(registryUrl), releases: tags.map(({ tag_name, published_at, prerelease }) => ({ version: tag_name, gitRef: tag_name, releaseTimestamp: published_at, isStable: !prerelease, })), }; return dependency; } // getTagCommit fetched the commit has for specified tag async getTagCommit(registryUrl, repo, tag) { const url = `${gitea_tags_1.GiteaTagsDatasource.getApiUrl(registryUrl)}repos/${repo}/tags/${tag}`; const { body } = await this.http.getJson(url, schema_1.TagSchema); return body.commit.sha; } // getDigest fetched the latest commit for repository main branch // however, if newValue is provided, then getTagCommit is called async getDigest({ packageName: repo, registryUrl }, newValue) { if (newValue?.length) { return this.getTagCommit(registryUrl, repo, newValue); } const url = `${gitea_tags_1.GiteaTagsDatasource.getApiUrl(registryUrl)}repos/${repo}/commits?stat=false&verification=false&files=false&page=1&limit=1`; const { body } = await this.http.getJson(url, schema_1.CommitsSchema); if (body.length === 0) { return null; } return body[0].sha; } } exports.GiteaReleasesDatasource = GiteaReleasesDatasource; tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: GiteaReleasesDatasource.cacheNamespace, key: ({ registryUrl, packageName }) => gitea_tags_1.GiteaTagsDatasource.getCacheKey(registryUrl, packageName, 'releases'), }) ], GiteaReleasesDatasource.prototype, "getReleases", null); tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: GiteaReleasesDatasource.cacheNamespace, key: (registryUrl, repo, tag) => gitea_tags_1.GiteaTagsDatasource.getCacheKey(registryUrl, repo, `tag-${tag}`), }) ], GiteaReleasesDatasource.prototype, "getTagCommit", null); tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: GiteaReleasesDatasource.cacheNamespace, key: ({ registryUrl, packageName }) => gitea_tags_1.GiteaTagsDatasource.getCacheKey(registryUrl, packageName, 'digest'), }) ], GiteaReleasesDatasource.prototype, "getDigest", null); //# sourceMappingURL=index.js.map