summaryrefslogtreecommitdiff
path: root/packages/astro-rss/src/schema.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro-rss/src/schema.ts')
-rw-r--r--packages/astro-rss/src/schema.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/astro-rss/src/schema.ts b/packages/astro-rss/src/schema.ts
new file mode 100644
index 000000000..c4a0fec3f
--- /dev/null
+++ b/packages/astro-rss/src/schema.ts
@@ -0,0 +1,25 @@
+import { z } from 'astro/zod';
+
+export const rssSchema = z.object({
+ title: z.string().optional(),
+ description: z.string().optional(),
+ pubDate: z
+ .union([z.string(), z.number(), z.date()])
+ .transform((value) => new Date(value))
+ .refine((value) => !isNaN(value.getTime()))
+ .optional(),
+ customData: z.string().optional(),
+ categories: z.array(z.string()).optional(),
+ author: z.string().optional(),
+ commentsUrl: z.string().optional(),
+ source: z.object({ url: z.string().url(), title: z.string() }).optional(),
+ enclosure: z
+ .object({
+ url: z.string(),
+ length: z.number().nonnegative().int().finite(),
+ type: z.string(),
+ })
+ .optional(),
+ link: z.string().optional(),
+ content: z.string().optional(),
+});