renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
51 lines (50 loc) • 1.79 kB
JavaScript
import { ensureTrailingSlash } from "../../../util/url.js";
import "../../versioning/npm/index.js";
import { asTimestamp } from "../../../util/timestamp.js";
import { Datasource } from "../datasource.js";
import { DartResult } from "./schema.js";
//#region lib/modules/datasource/dart/index.ts
var DartDatasource = class DartDatasource extends Datasource {
static id = "dart";
constructor() {
super(DartDatasource.id);
}
customRegistrySupport = true;
defaultRegistryUrls = ["https://pub.dartlang.org/"];
releaseTimestampSupport = true;
releaseTimestampNote = "The release timestamp is determined from the `published` field in the results.";
sourceUrlSupport = "package";
sourceUrlNote = "The source URL is determined from the `repository` field of the latest release object in the results.";
defaultVersioning = "npm";
async getReleases({ packageName, registryUrl }) {
/* v8 ignore next 3 -- should never happen */
if (!registryUrl) return null;
let result = null;
const pkgUrl = `${ensureTrailingSlash(registryUrl)}api/packages/${packageName}`;
let body = null;
try {
body = (await this.http.getJson(pkgUrl, DartResult)).body;
} catch (err) {
this.handleGenericErrors(err);
}
if (body) {
const { versions, latest } = body;
const releases = versions?.filter(({ retracted }) => !retracted)?.map(({ version, published }) => ({
version,
releaseTimestamp: asTimestamp(published)
}));
if (releases && latest) {
result = { releases };
const pubspec = latest.pubspec;
if (pubspec) {
if (pubspec.homepage) result.homepage = pubspec.homepage;
if (pubspec.repository) result.sourceUrl = pubspec.repository;
}
}
}
return result;
}
};
//#endregion
export { DartDatasource };
//# sourceMappingURL=index.js.map