import { defineCollection, z } from 'astro:content'; import { glob } from 'astro/loaders'; const blog = defineCollection({ loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/blog', generate: (entry) => entry.replace(/\.(md|mdx)$/, '').replace(/\/index$/, ''), }), // Type-check frontmatter using a schema schema: z.object({ title: z.string(), description: z.string(), // Transform string to Date object pubDate: z .string() .or(z.date()) .transform((val) => new Date(val)), updatedDate: z .string() .optional() .transform((str) => (str ? new Date(str) : undefined)), heroImage: z.string().optional(), }), }); const micro = defineCollection({ loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/micro', generate: (entry) => entry.replace(/\.(md|mdx)$/, '').replace(/\/index$/, ''), }), // Type-check frontmatter using a schema schema: z.object({ title: z.string(), description: z.string(), // Transform string to Date object pubDate: z .string() .or(z.date()) .transform((val) => new Date(val)), updatedDate: z .string() .optional() .transform((str) => (str ? new Date(str) : undefined)), heroImage: z.string().optional(), }), }); export const collections = { blog, micro };