renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
74 lines (73 loc) • 3.02 kB
JavaScript
import { id } from "../../versioning/unity3d/index.js";
import { withCache } from "../../../util/cache/package/with-cache.js";
import { asTimestamp } from "../../../util/timestamp.js";
import { Datasource } from "../datasource.js";
import { UnityReleasesJSON } from "./schema.js";
//#region lib/modules/datasource/unity3d/index.ts
var Unity3dDatasource = class Unity3dDatasource extends Datasource {
static baseUrl = "https://services.api.unity.com/unity/editor/release/v1/releases";
static homepage = "https://unity.com/";
static streams = {
lts: `${Unity3dDatasource.baseUrl}?stream=LTS`,
tech: `${Unity3dDatasource.baseUrl}?stream=TECH`,
alpha: `${Unity3dDatasource.baseUrl}?stream=ALPHA`,
beta: `${Unity3dDatasource.baseUrl}?stream=BETA`
};
static legacyStreams = {
lts: `${Unity3dDatasource.homepage}releases/editor/lts-releases.xml`,
stable: `${Unity3dDatasource.homepage}releases/editor/releases.xml`,
beta: `${Unity3dDatasource.homepage}releases/editor/beta/latest.xml`
};
static limit = 25;
static id = "unity3d";
defaultRegistryUrls = [Unity3dDatasource.streams.lts];
defaultVersioning = id;
registryStrategy = "merge";
releaseTimestampSupport = true;
releaseTimestampNote = "The release timestamp is determined from the `releaseDate` field in the results.";
constructor() {
super(Unity3dDatasource.id);
}
translateStream(registryUrl) {
const legacyKey = Object.keys(Unity3dDatasource.legacyStreams).find((key) => Unity3dDatasource.legacyStreams[key] === registryUrl);
if (legacyKey) {
if (legacyKey === "stable") return Unity3dDatasource.streams.lts;
return Unity3dDatasource.streams[legacyKey];
}
return registryUrl;
}
async getByStream(registryUrl, withHash) {
const translatedRegistryUrl = this.translateStream(registryUrl);
const isStable = translatedRegistryUrl === Unity3dDatasource.streams.lts;
let total = null;
const result = {
releases: [],
homepage: Unity3dDatasource.homepage,
registryUrl: translatedRegistryUrl
};
for (let offset = 0; total === null || offset < total; offset += Unity3dDatasource.limit) {
const response = await this.http.getJson(`${translatedRegistryUrl}&limit=${Unity3dDatasource.limit}&offset=${offset}`, UnityReleasesJSON);
for (const release of response.body.results) result.releases.push({
version: withHash ? `${release.version} (${release.shortRevision})` : release.version,
releaseTimestamp: asTimestamp(release.releaseDate),
changelogUrl: release.releaseNotes.url,
isStable
});
total ??= response.body.total;
}
return result;
}
async _getReleases({ packageName, registryUrl }) {
return await this.getByStream(registryUrl, packageName === "m_EditorVersionWithRevision");
}
getReleases(config) {
return withCache({
namespace: `datasource-${Unity3dDatasource.id}`,
key: `${config.registryUrl}:${config.packageName}`,
fallback: true
}, () => this._getReleases(config));
}
};
//#endregion
export { Unity3dDatasource };
//# sourceMappingURL=index.js.map