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

49 lines
1.1 KiB
TypeScript

import { z } from 'zod/v4';
import { Toml } from '../../../util/schema-utils/index.ts';
const BuildpackByName = z.object({
id: z.string(),
version: z.string().optional(),
});
const BuildpackByURI = z.object({
uri: z.string(),
});
const BuildpackGroup = BuildpackByName.or(BuildpackByURI);
type BuildpackByName = z.infer<typeof BuildpackByName>;
type BuildpackByURI = z.infer<typeof BuildpackByURI>;
type BuildpackGroup = z.infer<typeof BuildpackGroup>;
export function isBuildpackByName(
group: BuildpackGroup,
): group is BuildpackByName {
return 'id' in group;
}
export function isBuildpackByURI(
group: BuildpackGroup,
): group is BuildpackByURI {
return 'uri' in group;
}
const IoBuildpacks = z.object({
builder: z.string().optional(),
group: z.array(BuildpackGroup).optional(),
});
export const ProjectDescriptor = z.object({
_: z.object({
'schema-version': z.string(),
}),
io: z
.object({
buildpacks: IoBuildpacks.optional(),
})
.optional(),
});
export type ProjectDescriptor = z.infer<typeof ProjectDescriptor>;
export const ProjectDescriptorToml = Toml.pipe(ProjectDescriptor);