astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
20 lines (19 loc) • 1.01 kB
JavaScript
import * as z from "zod/v4";
import { validateAssetsPrefix, validateFontsCssVariables, validateI18nDefaultLocale, validateI18nDomains, validateI18nFallback, validateI18nRedirectToDefaultLocale, validateOutDirNotInPublicDir, validateRemotePatterns } from "./refined-validators.js";
export const AstroConfigRefinedSchema = z.custom().superRefine((config, ctx) => {
let issues = [];
issues = issues.concat(validateAssetsPrefix(config), validateRemotePatterns(config.image.remotePatterns), validateI18nRedirectToDefaultLocale(config.i18n), validateOutDirNotInPublicDir(config.outDir, config.publicDir));
if (config.i18n) {
issues = issues.concat(validateI18nDefaultLocale(config.i18n), validateI18nFallback(config.i18n), validateI18nDomains(config));
}
if (config.fonts && config.fonts.length > 0) {
issues = issues.concat(validateFontsCssVariables(config.fonts));
}
for (const issue of issues) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: issue.message,
path: issue.path
});
}
});