Merged in fix/BOOK-456-destination-city-validation-error (pull request #2975)

fix(BOOK-456): Added nullish() to destination pages content and sidepeek content schema to avoid unexpected errors

* fix(BOOK-456): Added nullish() to destination pages content and sidepeek content schema to avoid unexpected errors


Approved-by: Linus Flood
This commit is contained in:
Erik Tiekstra
2025-10-15 14:41:26 +00:00
committed by Linus Flood
parent e2403e11b3
commit c6f76b83cc
9 changed files with 114 additions and 95 deletions

View File

@@ -20,28 +20,30 @@ export const contentSchema = z.object({
.default(BlocksEnums.block.Content),
content: z
.object({
content: z.object({
json: z.any(), // JSON
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: z
.discriminatedUnion("__typename", [
imageContainerSchema,
sysAssetSchema,
...linkUnionSchema.options,
])
.transform((data) => {
const link = transformPageLink(data)
if (link) {
return link
}
return data
}),
})
),
}),
}),
content: z
.object({
json: z.any(), // JSON
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: z
.discriminatedUnion("__typename", [
imageContainerSchema,
sysAssetSchema,
...linkUnionSchema.options,
])
.transform((data) => {
const link = transformPageLink(data)
if (link) {
return link
}
return data
}),
})
),
}),
})
.nullish(),
})
.nullish()
.transform((data) => {
@@ -52,22 +54,25 @@ export const contentSchema = z.object({
export const contentRefsSchema = z.object({
content: z
.object({
content: z.object({
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: z.discriminatedUnion("__typename", [
sysAssetRefsSchema,
imageContainerRefsSchema,
...linkRefsUnionSchema.options,
]),
})
),
}),
}),
content: z
.object({
embedded_itemsConnection: z.object({
edges: z.array(
z.object({
node: z.discriminatedUnion("__typename", [
sysAssetRefsSchema,
imageContainerRefsSchema,
...linkRefsUnionSchema.options,
]),
})
),
}),
})
.nullish(),
})
.nullish()
.transform((data) => {
return data.content.embedded_itemsConnection.edges
return data?.content?.embedded_itemsConnection.edges
.filter(({ node }) => node.__typename !== ContentEnum.blocks.SysAsset)
.map(({ node }) => {
if ("system" in node) {