Merged in feat/SW-550-sitemap (pull request #981)

feat(SW-550): added sync functionality and sitemap generation

* feat(SW-550): added sync functionality and sitemap generation

* feat(SW-550): Added support for splitting and saving multiple sitemaps when there are 50000+ urls

* feat(SW-550): Updates after PR

* feat(SW-550): Added locale to sitemap data

* feat(SW-550): Added support for locale based sitemapData

* feat(SW-550): Saving alternates of sitemap entries

* feat(SW-550): Refactoring to use sitemap utils file

* feat(SW-550): Using Netlify.env to get environment variables

* feat(SW-550): clarify use of functions


Approved-by: Michael Zetterberg
This commit is contained in:
Erik Tiekstra
2025-02-17 10:35:11 +00:00
parent 577271c577
commit c93381ca80
13 changed files with 887 additions and 56 deletions

50
types/sitemap.ts Normal file
View File

@@ -0,0 +1,50 @@
import type { SyncResult } from "contentstack"
import type { Lang } from "@/constants/languages"
export type ChangeFrequency =
| "always"
| "hourly"
| "daily"
| "weekly"
| "monthly"
| "yearly"
| "never"
export interface SitemapEntry {
url: string
lastModified: string
changeFrequency: ChangeFrequency
priority: number
alternates?: Partial<Record<Lang, string>>
}
export type SitemapData = SitemapEntry[]
export interface SyncItemData {
uid: string
locale: Lang
url?: string
updated_at: string
web?: {
seo_metadata?: {
noindex?: boolean | null
sitemap?: {
change_frequency: SitemapEntry["changeFrequency"]
priority: SitemapEntry["priority"]
} | null
}
}
}
export interface SyncItem {
type: string
data: SyncItemData
}
export interface SyncResponse extends Omit<SyncResult, "items"> {
items: SyncItem[]
}
export type SyncItemsByUid = {
mainEntry: SyncItem
alternates: SyncItem[]
}