Skip to content

Commit 035ad97

Browse files
committed
add sitemaps
1 parent 4ee1ec1 commit 035ad97

4 files changed

Lines changed: 77 additions & 0 deletions

File tree

src/pages/sitemap/default.xml.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ export const GET: APIRoute = async () => {
99
.filter((r) => r !== "" && r.indexOf("[") === -1)
1010
.filter((r) => r !== "/404" && r !== "/500")
1111
.filter((r) => r !== "/use-cases" && !r.startsWith("/use-cases/"))
12+
.filter((r) => r !== "/orchestration" && !r.startsWith("/orchestration/"))
13+
.filter((r) => r !== "/resources" && !r.startsWith("/resources/"))
1214
.map((r) => "https://kestra.io" + r)
1315

1416
return sitemapResponse(urls)

src/pages/sitemap/index.xml.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ export const GET: APIRoute = async () => {
2020
<sitemap>
2121
<loc>https://kestra.io/sitemap/use-cases.xml</loc>
2222
</sitemap>
23+
<sitemap>
24+
<loc>https://kestra.io/sitemap/orchestration.xml</loc>
25+
</sitemap>
26+
<sitemap>
27+
<loc>https://kestra.io/sitemap/resources.xml</loc>
28+
</sitemap>
2329
<sitemap>
2430
<loc>https://kestra.io/sitemap/misc.xml</loc>
2531
</sitemap>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import type { APIRoute } from "astro"
2+
import { getCollection } from "astro:content"
3+
import { sitemapResponse, formatLastMod, gitLastModified } from "~/utils/sitemap.ts"
4+
5+
export const GET: APIRoute = async () => {
6+
const pageEntries = Object.entries(
7+
import.meta.glob<{ url?: string }>("../orchestration/**/*.astro", { eager: true }),
8+
)
9+
10+
const pageUrls = pageEntries
11+
.filter(([_, mod]) => mod.url && mod.url.indexOf("[") === -1)
12+
.map(([globPath, mod]) => {
13+
const filePath = globPath.replace(/^\.\.\//, "src/pages/")
14+
return {
15+
loc: `https://kestra.io${mod.url}`,
16+
lastmod: formatLastMod(gitLastModified(filePath)),
17+
}
18+
})
19+
20+
const integrations = await getCollection("orchestration")
21+
22+
const integrationUrls = integrations.map((entry) => ({
23+
loc: `https://kestra.io/orchestration/${entry.id}`,
24+
lastmod: formatLastMod(gitLastModified((entry as any).filePath)),
25+
}))
26+
27+
return sitemapResponse([...pageUrls, ...integrationUrls])
28+
}

src/pages/sitemap/resources.xml.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import type { APIRoute } from "astro"
2+
import { getCollection } from "astro:content"
3+
import { resourceTabs, ALL_RESOURCES } from "~/components/resources/tags"
4+
import { sitemapResponse, formatLastMod, gitLastModified } from "~/utils/sitemap.ts"
5+
6+
export const GET: APIRoute = async () => {
7+
const pageEntries = Object.entries(
8+
import.meta.glob<{ url?: string }>("../resources/**/*.astro", { eager: true }),
9+
)
10+
11+
const pageUrls = pageEntries
12+
.filter(([_, mod]) => mod.url && mod.url.indexOf("[") === -1)
13+
.map(([globPath, mod]) => {
14+
const filePath = globPath.replace(/^\.\.\//, "src/pages/")
15+
return {
16+
loc: `https://kestra.io${mod.url}`,
17+
lastmod: formatLastMod(gitLastModified(filePath)),
18+
}
19+
})
20+
21+
const tagUrls = Array.from(resourceTabs.keys())
22+
.filter((tag) => tag !== ALL_RESOURCES)
23+
.map((tag) => ({ loc: `https://kestra.io/resources/${tag}` }))
24+
25+
const articles = await getCollection("resources")
26+
27+
const articleUrls = articles
28+
.filter((post) => !post.data.href)
29+
.map((post) => {
30+
let lastmod = formatLastMod((post.data as any).date ?? null)
31+
if (!lastmod && (post as any).filePath) {
32+
lastmod = formatLastMod(gitLastModified((post as any).filePath))
33+
}
34+
return {
35+
loc: `https://kestra.io/resources/${post.data.tag}/${post.id.toLowerCase()}`,
36+
lastmod,
37+
}
38+
})
39+
40+
return sitemapResponse([...pageUrls, ...tagUrls, ...articleUrls])
41+
}

0 commit comments

Comments
 (0)