🚧 Switch to monorepo with Turbo

This commit is contained in:
2023-01-10 12:53:42 +01:00
parent dd8715bb34
commit 25bb949a13
205 changed files with 14975 additions and 347 deletions

View File

@@ -0,0 +1,93 @@
import { error } from '@sveltejs/kit'
import type { RequestHandler } from './$types'
import { fetchAPI } from '$utils/api'
export const GET: RequestHandler = async ({ url, setHeaders }) => {
try {
const locations = []
const products = []
// Get dynamic data from API
const res = await fetchAPI(`query {
locations: location (filter: { status: { _eq: "published" }}) {
slug
country { slug }
}
products: product (filter: { status: { _eq: "published" }}) {
location { slug }
}
}`)
if (res) {
const { data } = res
locations.push(...data.locations)
products.push(...data.products)
}
// Static pages
const pages = [
['/', '1.0', 'daily'],
['/photos', '1.0', 'daily'],
['/locations', '0.6', 'weekly'],
['/shop', '0.8', 'weekly'],
['/about', '0.6', 'weekly'],
['/terms', '0.6', 'weekly'],
['/subscribe', '0.6', 'weekly'],
['/credits', '0.6', 'monthly'],
]
// All pages
const allPages = [
// Static pages
...pages.map(([path, priority, frequency]) => ({
path,
priority,
frequency,
})),
// Locations
...locations.map(({ slug, country }) => ({
path: `/${country.slug}/${slug}`,
priority: 0.7,
frequency: 'monthly',
})),
// Products
...products.map(({ location: { slug }}) => ({
path: `/shop/poster-${slug}`,
priority: 0.7,
frequency: 'monthly',
})),
]
const sitemap = render(url.origin, allPages)
setHeaders({
'Content-Type': 'application/xml',
'Cache-Control': 'max-age=0, s-max-age=600',
})
return new Response(sitemap)
} catch (err) {
throw error(500, err.message)
}
}
const render = (origin: string, pages: any[]) => {
return `<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="https://www.w3.org/1999/xhtml"
xmlns:mobile="https://www.google.com/schemas/sitemap-mobile/1.0"
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
>
${pages.map(({ path, priority, frequency }) => `<url>
<loc>${origin}${path}</loc>
<priority>${priority}</priority>
<changefreq>${frequency}</changefreq>
</url>`).join('')}
</urlset>`
}