UNPKG

renovate

Version:

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

65 lines (64 loc) 2.31 kB
import { regEx } from "../../../util/regex.js"; import { Datasource } from "../datasource.js"; import { DartResponse } from "./schema.js"; import { isString } from "@sindresorhus/is"; //#region lib/modules/datasource/dart-version/index.ts const stableVersionRegex = regEx(/^\d+\.\d+\.\d+$/); /** * The server returns old svn versions which would need mapping to a version. * They are very old, so we skip them instead. * https://github.com/dart-lang/site-www/blob/7d4409c87bb6570b2d8870b20283f81f2b7e08fc/tool/get-dart/dart_sdk_archive/lib/src/svn_versions.dart#L2 */ const svnVersionRegex = regEx(/^\d+$/); var DartVersionDatasource = class DartVersionDatasource extends Datasource { static id = "dart-version"; constructor() { super(DartVersionDatasource.id); } customRegistrySupport = false; defaultRegistryUrls = ["https://storage.googleapis.com"]; caching = true; channels = [ "stable", "beta", "dev" ]; sourceUrlSupport = "package"; sourceUrlNote = "We use the URL: https://github.com/dart-lang/sdk."; async getReleases({ registryUrl }) { /* v8 ignore next 3 -- should never happen */ if (!registryUrl) return null; const result = { homepage: "https://dart.dev/", sourceUrl: "https://github.com/dart-lang/sdk", registryUrl, releases: [] }; try { for (const channel of this.channels) { const resp = (await this.http.getJson(`${registryUrl}/storage/v1/b/dart-archive/o?delimiter=%2F&prefix=channels%2F${channel}%2Frelease%2F&alt=json`, DartResponse)).body; const releases = this.getReleasesFromResponse(channel, resp.prefixes); result.releases.push(...releases); } } catch (err) { this.handleGenericErrors(err); } return result.releases.length ? result : null; } getReleasesFromResponse(channel, prefixes) { return prefixes.map((prefix) => this.getVersionFromPrefix(prefix)).filter(isString).filter((version) => { if (version === "latest" || svnVersionRegex.test(version) || channel !== "stable" && stableVersionRegex.test(version)) return false; return true; }).map((version) => ({ version, isStable: channel === "stable" })); } getVersionFromPrefix(prefix) { const parts = prefix.split("/"); return parts[parts.length - 2]; } }; //#endregion export { DartVersionDatasource }; //# sourceMappingURL=index.js.map