summaryrefslogtreecommitdiffstats
path: root/src/server/content/sitemap.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/content/sitemap.ts')
-rw-r--r--src/server/content/sitemap.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/content/sitemap.ts b/src/server/content/sitemap.ts
new file mode 100644
index 0000000..c9e3ef5
--- /dev/null
+++ b/src/server/content/sitemap.ts
@@ -0,0 +1,16 @@
+import { pages } from "../template/Base.js"
+import setStingRoute from "../utils/setStingRoute.js"
+import { doctype } from "../template/xml.js"
+import { c } from "../template/vdom.js"
+import { lastmod, loc, url, urlset } from "../template/sitemap.js"
+
+setStingRoute("/sitemap.xml", "sitemap.xml", async () => doctype({},
+ c(urlset, { xmlns: new URL("http://www.sitemaps.org/schemas/sitemap/0.9") },
+ ...pages.map(page =>
+ c(url, {},
+ c(loc, {}, (page.url?.href) ?? ""),
+ ...(page.date_mod ? [c(lastmod, {}, page.date_mod.toISOString())] : [])
+ )
+ )
+ )
+))