import { z } from 'zod/v4'; import { LooseArray, LooseRecord, Nullish, Yaml, } from '../../../util/schema-utils/index.ts'; export const HelmRepository = z.object({ name: z.string(), url: z.string(), oci: z.boolean().optional(), }); export type HelmRepository = z.infer; export const HelmRelease = z.object({ name: z.string(), chart: z.string(), version: Nullish(z.string().or(z.number())).transform((version) => version ? version.toString() : null, ), strategicMergePatches: z.unknown().optional(), jsonPatches: z.unknown().optional(), transformers: z.unknown().optional(), }); export type HelmRelease = z.infer; export const Doc = z.object({ releases: LooseArray(HelmRelease).optional(), templates: LooseRecord(HelmRelease).optional(), repositories: LooseArray(HelmRepository).optional(), }); export type Doc = z.infer; export const LockVersion = Yaml.pipe( z.object({ version: z.string() }).transform(({ version }) => version), ); export type LockVersion = z.infer;