import { z } from "zod/mini" const OriginSchema = z.object({ id: z.string(), url: z.string(), width: z.number(), height: z.number(), }) const CropSchema = z.object({ x: z.number(), y: z.number(), }) const EditSchema = z.object({ zoom: z.number(), crop: CropSchema, background: z.string(), }) const NonEmptyStringOrNullSchema = z.pipe( z.nullish(z.string()), z.transform((value) => (typeof value === "string" && value.length > 0 ? value : null)), ) export const ImageLegacyViewSchema = z.object({ origin: OriginSchema, width: z.number(), height: z.number(), edit: EditSchema, url: z.optional(z.string()), credits: z.optional(NonEmptyStringOrNullSchema), alt: z.optional(NonEmptyStringOrNullSchema), provider: z.nullish(z.string()), }) export type ImageLegacyView = z.infer export const ImageLegacySchema = z.extend(ImageLegacyViewSchema, { thumbnails: z.optional(z.record(z.string(), ImageLegacyViewSchema)), }) export type ImageLegacy = z.infer