From e9d4303219bf312bc3955bb8af9aedb0eadb17cc Mon Sep 17 00:00:00 2001 From: tanishqmanuja Date: Wed, 20 Sep 2023 14:55:29 +0530 Subject: [PATCH] feat: add image validation to schema --- src/content/config.ts | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/content/config.ts b/src/content/config.ts index e423774..55380de 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -2,18 +2,23 @@ import { defineCollection, z } from "astro:content"; const blog = defineCollection({ type: "content", - schema: z.object({ - author: z.string().optional(), - pubDatetime: z.date(), - title: z.string(), - postSlug: z.string().optional(), - featured: z.boolean().optional(), - draft: z.boolean().optional(), - tags: z.array(z.string()).default(["others"]), - ogImage: z.string().optional(), - description: z.string(), - canonicalURL: z.string().optional(), - }), + schema: ({ image }) => + z.object({ + author: z.string().optional(), + pubDatetime: z.date(), + title: z.string(), + postSlug: z.string().optional(), + featured: z.boolean().optional(), + draft: z.boolean().optional(), + tags: z.array(z.string()).default(["others"]), + ogImage: image() + .refine(img => img.width >= 1200 && img.height >= 630, { + message: "OpenGraph image must be at least 1200 X 630 pixels!", + }) + .optional(), + description: z.string(), + canonicalURL: z.string().optional(), + }), }); export const collections = { blog };