Files
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

66 lines
1.5 KiB
TypeScript

import { z } from 'zod/v4';
import { LooseArray } from '../../../util/schema-utils/index.ts';
import { MaybeTimestamp } from '../../../util/timestamp.ts';
import type { Release } from '../types.ts';
export const ReleasesIndex = z
.object({
'releases-index': LooseArray(
z
.object({
'releases.json': z.string(),
})
.transform(({ 'releases.json': releasesUrl }) => releasesUrl),
).catch([]),
})
.transform(({ 'releases-index': releasesIndex }) => releasesIndex);
const ReleaseBase = z.object({
'release-date': MaybeTimestamp,
'release-notes': z.string(),
});
const ReleaseDetails = z.object({
version: z.string(),
});
export const DotnetSdkReleases = z
.object({
releases: LooseArray(
ReleaseBase.extend({
sdks: z.array(ReleaseDetails),
}),
).catch([]),
})
.transform(({ releases }): Release[] =>
releases.flatMap(
({
sdks,
'release-date': releaseTimestamp,
'release-notes': changelogUrl,
}) =>
sdks.map(({ version }) => ({
version,
releaseTimestamp,
changelogUrl,
})),
),
);
export const DotnetRuntimeReleases = z
.object({
releases: LooseArray(
ReleaseBase.extend({
runtime: ReleaseDetails,
}),
).catch([]),
})
.transform(({ releases }): Release[] =>
releases.map(
({
runtime: { version },
'release-date': releaseTimestamp,
'release-notes': changelogUrl,
}) => ({ version, releaseTimestamp, changelogUrl }),
),
);