import { defineCollection } from "astro:content"; import { glob } from "astro/loaders"; import { z } from "astro/zod"; const blog = defineCollection({ loader: glob({ pattern: "**/index.mdx", base: "./src/content/blog", generateId: ({ entry }) => entry.replace(/[\\/]index\.mdx$/, "").replace(/\\/g, "/"), }), schema: ({ image }) => z.object({ title: z.string(), excerpt: z.string(), date: z.coerce.date(), updated: z.coerce.date().optional(), readingTime: z.number().int().positive(), category: z.string(), tags: z.array(z.string()).default([]), author: z.string(), thumbnail: image(), imageCredit: z .object({ caption: z.string().optional(), author: z.string(), authorUrl: z.string().url(), source: z.string().optional(), sourceUrl: z.string().url().optional(), }) .optional(), featured: z.boolean().default(false), }), }); export const collections = { blog };