UNPKG

renovate

Version:

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

62 lines (61 loc) 2.44 kB
import { withCache } from "../../../util/cache/package/with-cache.js"; import { Datasource } from "../datasource.js"; import { map } from "../../../util/promises.js"; import { DotnetRuntimeReleases, DotnetSdkReleases, ReleasesIndex } from "./schema.js"; //#region lib/modules/datasource/dotnet-version/index.ts var DotnetVersionDatasource = class DotnetVersionDatasource extends Datasource { static id = "dotnet-version"; constructor() { super(DotnetVersionDatasource.id); } caching = true; customRegistrySupport = false; defaultRegistryUrls = ["https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json"]; releaseTimestampSupport = true; releaseTimestampNote = "The release timestamp is determined from the `release-date` field in the results."; sourceUrlSupport = "package"; sourceUrlNote = "We use the URL https://github.com/dotnet/sdk for the `dotnet-sdk` package and, the https://github.com/dotnet/runtime URL for the `dotnet-runtime` package."; async _getReleases({ packageName }) { if (!(packageName === "dotnet-sdk" || packageName === "dotnet-runtime")) return null; try { const registryUrl = this.defaultRegistryUrls[0]; const { body: urls } = await this.http.getJson(registryUrl, ReleasesIndex); return { releases: (await map(urls, (url) => this.getChannelReleases(url, packageName), { concurrency: 1, stopOnError: true })).flat(), sourceUrl: packageName === "dotnet-sdk" ? "https://github.com/dotnet/sdk" : "https://github.com/dotnet/runtime" }; } catch (err) { this.handleGenericErrors(err); } } getReleases(config) { return withCache({ namespace: `datasource-${DotnetVersionDatasource.id}`, key: config.packageName, ttlMinutes: 1440, fallback: true }, () => this._getReleases(config)); } async _getChannelReleases(releaseUrl, packageName) { const schema = packageName === "dotnet-sdk" ? DotnetSdkReleases : DotnetRuntimeReleases; try { const { body } = await this.http.getJson(releaseUrl, schema); return body; } catch (err) { this.handleGenericErrors(err); } } getChannelReleases(releaseUrl, packageName) { return withCache({ namespace: `datasource-${DotnetVersionDatasource.id}`, key: `${releaseUrl}:${packageName}`, ttlMinutes: 1440 }, () => this._getChannelReleases(releaseUrl, packageName)); } }; //#endregion export { DotnetVersionDatasource }; //# sourceMappingURL=index.js.map