Files
myeasycms-v2/apps/web/app/server-sitemap.xml/route.ts
giancarlo 87e8376af6 Refactor key access and role warning in Supabase clients
The update simplifies accessing environment keys and role warnings in Supabase clients by moving them to new functions 'getSupabaseClientKeys' and 'getServiceRoleKey'. The redundancy in the code is reduced promoting clearer and more maintainable code. The '@epic-web/invariant' import has been removed from files as it is no longer needed.
2024-04-13 12:57:56 +08:00

60 lines
1.2 KiB
TypeScript

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