summaryrefslogtreecommitdiff
path: root/packages/integrations/sitemap/src/validate-options.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/sitemap/src/validate-options.ts')
-rw-r--r--packages/integrations/sitemap/src/validate-options.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/integrations/sitemap/src/validate-options.ts b/packages/integrations/sitemap/src/validate-options.ts
new file mode 100644
index 000000000..f89582d82
--- /dev/null
+++ b/packages/integrations/sitemap/src/validate-options.ts
@@ -0,0 +1,22 @@
+import { z } from 'zod';
+import type { SitemapOptions } from './index';
+import { SitemapOptionsSchema } from './schema';
+
+// @internal
+export const validateOptions = (site: string | undefined, opts: SitemapOptions) => {
+ const result = SitemapOptionsSchema.parse(opts);
+
+ z.object({
+ site: z.string().optional(), // Astro takes care of `site`: how to validate, transform and refine
+ canonicalURL: z.string().optional(), // `canonicalURL` is already validated in prev step
+ })
+ .refine(({ site, canonicalURL }) => site || canonicalURL, {
+ message: 'Required `site` astro.config option or `canonicalURL` integration option',
+ })
+ .parse({
+ site,
+ canonicalURL: result.canonicalURL,
+ });
+
+ return result;
+};