import { escapeHtml } from './html.js' import { siteName, siteUrl } from './site.config.js' export const toSitemapDate = (iso) => (iso ? iso.slice(0, 10) : '') const toRssDate = (iso) => { if (!iso) return '' const date = new Date(iso) return Number.isNaN(date.valueOf()) ? '' : date.toUTCString() } export const renderFeed = (items) => { const lastBuild = toRssDate(items.find((item) => item.date)?.date) || new Date().toUTCString() const itemXml = items .map((item) => { const loc = `${siteUrl}/${item.dir}/${item.name}/` const description = item.description const pubDate = toRssDate(item.date) return ` ${escapeHtml(item.title)} ${escapeHtml(loc)} ${escapeHtml(loc)} ${pubDate ? `${escapeHtml(pubDate)}` : ''} ${escapeHtml(item.dir)} ${description ? `${escapeHtml(description)}` : ''} ` }) .join('\n ') return ` ${escapeHtml(siteName)} ${escapeHtml(`${siteUrl}/`)} ${escapeHtml(`Notes and posts from ${siteName}`)} en-US ${escapeHtml(lastBuild)} ${itemXml} ` } export const renderSitemap = (urls) => ` ${urls .map(({ loc, lastmod }) => { const modified = lastmod ? `\n ${escapeHtml(lastmod)}` : '' return ` ${escapeHtml(loc)}${modified} ` }) .join('\n')} `