diff options
Diffstat (limited to 'packages/astro-rss/src')
-rw-r--r-- | packages/astro-rss/src/index.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/packages/astro-rss/src/index.ts b/packages/astro-rss/src/index.ts index 5f7e63b89..2ff803d8b 100644 --- a/packages/astro-rss/src/index.ts +++ b/packages/astro-rss/src/index.ts @@ -113,6 +113,7 @@ export async function generateRSS({ rssOptions, items }: GenerateRSSArgs): Promi if (typeof rssOptions.customData === 'string') xml += rssOptions.customData; // items for (const result of items) { + validate(result); xml += `<item>`; xml += `<title><![CDATA[${result.title}]]></title>`; // If the item's link is already a valid URL, don't mess with it. @@ -146,3 +147,14 @@ export async function generateRSS({ rssOptions, items }: GenerateRSSArgs): Promi return xml; } + +const requiredFields = Object.freeze(['link', 'title']); + +// Perform validation to make sure all required fields are passed. +function validate(item: RSSFeedItem) { + for(const field of requiredFields) { + if(!(field in item)) { + throw new Error(`@astrojs/rss: Required field [${field}] is missing. RSS cannot be generated without it.`); + } + } +} |