import { z } from "zod" import { tempImageVaultAssetSchema } from "../schemas/imageVault" import { getDescription, getImages, getTitle } from "./utils" import { RTETypeEnum } from "@/types/rte/enums" export const rawMetaDataDataSchema = z.object({ web: z.object({ seo_metadata: z .object({ title: z.string().optional().nullable(), description: z.string().optional().nullable(), imageConnection: z .object({ edges: z.array( z.object({ node: z.object({ url: z.string(), dimension: z.object({ width: z.number(), height: z.number(), }), }), }) ), }) .optional() .nullable(), }) .optional() .nullable(), breadcrumbs: z .object({ title: z.string().optional().nullable(), }) .optional() .nullable(), }), heading: z.string().optional().nullable(), preamble: z.string().optional().nullable(), header: z .object({ heading: z.string().optional().nullable(), preamble: z.string().optional().nullable(), }) .optional() .nullable(), hero_image: tempImageVaultAssetSchema, blocks: z .array( z.object({ content: z .object({ content: z .object({ json: z.object({ children: z.array( z.object({ type: z.nativeEnum(RTETypeEnum), children: z.array( z.object({ text: z.string().optional().nullable(), }) ), }) ), }), }) .optional() .nullable(), }) .optional() .nullable(), }) ) .optional() .nullable(), }) export const metaDataSchema = rawMetaDataDataSchema.transform((data) => { return { title: getTitle(data), description: getDescription(data), openGraph: { images: getImages(data), }, } })