import { z } from "zod";
import { fromZodError } from 'zod-validation-error';

export default {
	tags: [
		"posts"
	],
	"layout": "layouts/post.njk",

	// Draft blog posts, validate `draft` front matter
	eleventyDataSchema: function(data) {
		let result = z.object({
			draft: z.boolean().or(z.undefined()),
		}).safeParse(data);

		if(result.error) {
			throw fromZodError(result.error);
		}
	},

	// Draft blog posts, exclude from builds and collections
	eleventyComputed: {
		permalink: (data) => {
			// Always skip during non-watch/serve builds
			if(data.draft && process.env.ELEVENTY_RUN_MODE === "build") {
				return false;
			}

			return data.permalink;
		},
		eleventyExcludeFromCollections: (data) => {
			// Always exclude from non-watch/serve builds
			if(data.draft && process.env.ELEVENTY_RUN_MODE === "build") {
				return true;
			}

			return data.eleventyExcludeFromCollections;
		}
	}
};