feat(SW-200): refactoring SEO metadata handling and added functionality for static pages
This commit is contained in:
@@ -1,11 +1,52 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import { page } from "../schemas/metadata"
|
||||
import { getDescription, getImages, getTitle } from "./utils"
|
||||
|
||||
export const getLoyaltyPageMetadataSchema = z.object({
|
||||
loyalty_page: page,
|
||||
export const rawMetaDataDataSchema = z.object({
|
||||
web: z.object({
|
||||
seo_metadata: z
|
||||
.object({
|
||||
title: z.string().optional().nullable(),
|
||||
description: z.string().optional().nullable(),
|
||||
imageConnection: z
|
||||
.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
url: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
breadcrumbs: z
|
||||
.object({
|
||||
title: z.string().optional().nullable(),
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
}),
|
||||
heading: z.string().optional().nullable(),
|
||||
preamble: z.string().optional().nullable(),
|
||||
header: z
|
||||
.object({
|
||||
heading: z.string().optional().nullable(),
|
||||
preamble: z.string().optional().nullable(),
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
})
|
||||
|
||||
export type GetLoyaltyPageMetaDataData = z.infer<
|
||||
typeof getLoyaltyPageMetadataSchema
|
||||
>
|
||||
export const metaDataSchema = rawMetaDataDataSchema.transform((data) => {
|
||||
return {
|
||||
title: getTitle(data),
|
||||
description: getDescription(data),
|
||||
openGraph: {
|
||||
images: getImages(data),
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user