diff --git a/lib/modules/datasource/orb/index.ts b/lib/modules/datasource/orb/index.ts index 62560f6bd2bd333e9790f151b8de5a54bf302e92..0eca02f4f0daa40e264683633a97d8bdef982e42 100644 --- a/lib/modules/datasource/orb/index.ts +++ b/lib/modules/datasource/orb/index.ts @@ -2,7 +2,7 @@ import { logger } from '../../../logger'; import { cache } from '../../../util/cache/package/decorator'; import { Datasource } from '../datasource'; import type { GetReleasesConfig, ReleaseResult } from '../types'; -import type { OrbRelease } from './types'; +import type { OrbResponse } from './types'; const query = ` query($packageName: String!) { @@ -45,20 +45,22 @@ export class OrbDatasource extends Datasource { query, variables: { packageName }, }; - const res: OrbRelease = ( - await this.http.postJson<{ data: { orb: OrbRelease } }>(url, { + const res = ( + await this.http.postJson<OrbResponse>(url, { body, }) - ).body.data.orb; - if (!res) { - logger.debug(`Failed to look up orb ${packageName}`); + ).body; + if (!res?.data?.orb) { + logger.debug({ res }, `Failed to look up orb ${packageName}`); return null; } + + const { orb } = res.data; // Simplify response before caching and returning - const homepage = res.homeUrl?.length - ? res.homeUrl + const homepage = orb.homeUrl?.length + ? orb.homeUrl : `https://circleci.com/developer/orbs/orb/${packageName}`; - const releases = res.versions.map(({ version, createdAt }) => ({ + const releases = orb.versions.map(({ version, createdAt }) => ({ version, releaseTimestamp: createdAt ?? null, })); diff --git a/lib/modules/datasource/orb/types.ts b/lib/modules/datasource/orb/types.ts index a1f1941c2744a64c328bdd58daf6d47005f2a0ca..c0beaeed644259b5239d807a57d02972eee8fede 100644 --- a/lib/modules/datasource/orb/types.ts +++ b/lib/modules/datasource/orb/types.ts @@ -5,3 +5,9 @@ export interface OrbRelease { createdAt?: string; }[]; } + +export interface OrbResponse { + data?: { + orb?: OrbRelease; + }; +}