Files
renovate/lib/util/github/graphql/query-adapters/releases-query-adapter.ts
Sebastian Poxhofer 15f4bd8eff chore: migrate from zod/v3 to zod/v4 (#43691)
* chore: migrate from zod/v3 to zod/v4

This commit contains the logic changes

* chore: migrate imports from zod/v3 to zod/v4

This contains import updates and adds explicit record keys as zod/v4 requires these now

* ci: enforce usage of zod/v4
2026-05-30 16:01:58 +00:00

99 lines
1.9 KiB
TypeScript

import { z } from 'zod/v4';
import { Timestamp } from '../../../timestamp.ts';
import type {
GithubGraphqlDatasourceAdapter,
GithubReleaseItem,
} from '../types.ts';
import { prepareQuery } from '../util.ts';
const key = 'github-releases-datasource-v2';
const query = prepareQuery(`
releases(
first: $count
after: $cursor
orderBy: {field: CREATED_AT, direction: DESC}
) {
pageInfo {
hasNextPage
endCursor
}
nodes {
version: tagName
releaseTimestamp: publishedAt
isDraft
isPrerelease
url
id: databaseId
name
description
}
}
`);
const GithubGraphqlRelease = z.object({
version: z.string(),
releaseTimestamp: Timestamp,
isDraft: z.boolean(),
isPrerelease: z.boolean(),
url: z.string(),
id: z.number().nullable(),
name: z.string().nullable(),
description: z.string().nullable(),
});
export type GithubGraphqlRelease = z.infer<typeof GithubGraphqlRelease>;
function transform(item: GithubGraphqlRelease): GithubReleaseItem | null {
const releaseItem = GithubGraphqlRelease.safeParse(item);
if (!releaseItem.success) {
return null;
}
const {
version,
releaseTimestamp,
isDraft,
isPrerelease,
url,
id,
name,
description,
} = releaseItem.data;
if (isDraft) {
return null;
}
const result: GithubReleaseItem = {
version,
releaseTimestamp,
url,
};
// v8 ignore else -- TODO: add test #40625
if (id) {
result.id = id;
}
// v8 ignore else -- TODO: add test #40625
if (name) {
result.name = name;
}
// v8 ignore else -- TODO: add test #40625
if (description) {
result.description = description;
}
if (isPrerelease) {
result.isStable = false;
}
return result;
}
export const adapter: GithubGraphqlDatasourceAdapter<
GithubGraphqlRelease,
GithubReleaseItem
> = { key, query, transform };