Files
myeasycms-v2/apps/web/app/server-sitemap.xml/route.ts
giancarlo bce3479368 Cleanup
2024-03-24 02:23:22 +08:00

52 lines
1.2 KiB
TypeScript

import { invariant } from '@epic-web/invariant';
import { allDocumentationPages, allPosts } from 'contentlayer/generated';
import { getServerSideSitemap } from 'next-sitemap';
import { join } from 'path';
import appConfig from '@/config/app.config';
const siteUrl = appConfig.url;
export async function GET() {
const urls = getSiteUrls();
const posts = getPostsSitemap();
const docs = getDocsSitemap();
return getServerSideSitemap([...urls, ...posts, ...docs]);
}
function getSiteUrls() {
invariant(siteUrl, 'No NEXT_PUBLIC_SITE_URL found');
const urls = ['', 'faq', 'pricing'];
return urls.map((url) => {
return {
loc: join(siteUrl, url),
lastmod: new Date().toISOString(),
};
});
}
function getPostsSitemap() {
invariant(siteUrl, 'No NEXT_PUBLIC_SITE_URL found');
return allPosts.map((post) => {
return {
loc: join(siteUrl, post.url),
lastmod: new Date().toISOString(),
};
});
}
function getDocsSitemap() {
invariant(siteUrl, 'No NEXT_PUBLIC_SITE_URL found');
return allDocumentationPages.map((page) => {
return {
loc: join(siteUrl, page.url),
lastmod: new Date().toISOString(),
};
});
}