renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
69 lines (68 loc) • 2.44 kB
JavaScript
import { logger } from "../../../logger/index.js";
import { ExternalHostError } from "../../../types/errors/external-host-error.js";
import { withCache } from "../../../util/cache/package/with-cache.js";
import { RequestError } from "../../../util/http/got.js";
import "../../../util/http/index.js";
import { Datasource } from "../datasource.js";
import { datasource, defaultRegistryUrl, parsePackage } from "./common.js";
import { AdoptiumJavaResponse } from "./schema.js";
//#region lib/modules/datasource/java-version/index.ts
var JavaVersionDatasource = class extends Datasource {
static id = datasource;
constructor() {
super(datasource);
}
customRegistrySupport = false;
defaultRegistryUrls = [defaultRegistryUrl];
caching = true;
async getPageReleases(url, page) {
const pgUrl = `${url}&page=${page}`;
try {
return (await this.http.getJson(pgUrl, AdoptiumJavaResponse))?.body?.versions?.map(({ semver }) => ({ version: semver })) ?? null;
} catch (err) {
if (page !== 0 && err instanceof RequestError && err.response?.statusCode === 404) return null;
throw err;
}
}
async _getReleases({ registryUrl, packageName }) {
const pkgConfig = parsePackage(packageName);
logger.trace({
registryUrl,
packageName,
pkgConfig
}, "fetching java release");
let url = `${registryUrl}v3/info/release_versions?page_size=50&image_type=${pkgConfig.imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;
if (pkgConfig.architecture) url += `&architecture=${pkgConfig.architecture}`;
if (pkgConfig.os) url += `&os=${pkgConfig.os}`;
const result = {
homepage: "https://adoptium.net",
releases: []
};
try {
let page = 0;
let releases = await this.getPageReleases(url, page);
while (releases) {
result.releases.push(...releases);
if (releases.length !== 50 || page >= 50) break;
page += 1;
releases = await this.getPageReleases(url, page);
}
} catch (err) {
if (err instanceof RequestError) {
if (err.response?.statusCode !== 404) throw new ExternalHostError(err);
}
this.handleGenericErrors(err);
}
return result.releases.length ? result : null;
}
getReleases(config) {
return withCache({
namespace: `datasource-${datasource}`,
key: `${config.registryUrl}:${config.packageName}`,
fallback: true
}, () => this._getReleases(config));
}
};
//#endregion
export { JavaVersionDatasource };
//# sourceMappingURL=index.js.map