mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 02:00:10 +00:00
15f4bd8eff
* 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
49 lines
1.1 KiB
TypeScript
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);
|