astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
41 lines (40 loc) • 1.13 kB
JavaScript
import * as z from "zod/v4";
import {
validateAssetsPrefix,
validateFontsCssVariables,
validateI18nDefaultLocale,
validateI18nDomains,
validateI18nFallback,
validateI18nRedirectToDefaultLocale,
validateOutDirNotInPublicDir,
validateRemotePatterns
} from "./refined-validators.js";
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
});
}
});
export {
AstroConfigRefinedSchema
};