Files
myeasycms-v2/apps/web/app/server-sitemap.xml/route.ts
gbuomprisco 3d7a7c6ce8 Set limit to Infinity in getContentItems calls
Added a limit parameter with a value of Infinity to the getContentItems calls for 'posts' and 'documentation' collections. This ensures all items are retrieved without any restrictions.
2024-08-11 12:15:33 +02:00

65 lines
1.4 KiB
TypeScript

import { getServerSideSitemap } from 'next-sitemap';
import { createCmsClient } from '@kit/cms';
import appConfig from '~/config/app.config';
export async function GET() {
const paths = getPaths();
const contentItems = await getContentItems();
return getServerSideSitemap([
...paths,
...contentItems.map((path) => {
return {
loc: new URL(path, appConfig.url).href,
lastmod: new Date().toISOString(),
};
}),
]);
}
function getPaths() {
const paths = [
'/',
'/faq',
'/blog',
'/docs',
'/pricing',
'/contact',
'/cookie-policy',
'/terms-of-service',
'/privacy-policy',
// add more paths here
];
return paths.map((path) => {
return {
loc: new URL(path, appConfig.url).href,
lastmod: new Date().toISOString(),
};
});
}
async function getContentItems() {
const client = await createCmsClient();
const posts = client
.getContentItems({
collection: 'posts',
limit: Infinity,
})
.then((response) => response.items)
.then((posts) => posts.map((post) => `/blog/${post.slug}`));
const docs = client
.getContentItems({
collection: 'documentation',
limit: Infinity,
})
.then((response) => response.items)
.then((docs) => docs.map((doc) => `/docs/${doc.slug}`));
return Promise.all([posts, docs]).then((items) => items.flat());
}