Files
web/server/routers/contentstack/breadcrumbs/output.ts
2024-06-11 10:53:49 +02:00

101 lines
2.3 KiB
TypeScript

import { z } from "zod"
import { Lang } from "@/constants/languages"
export const getBreadcrumbsSchema = z.array(
z.object({
href: z.string().optional(),
title: z.string(),
uid: z.string(),
})
)
const breadcrumbsRefsItems = z.object({
items: z.array(
z.object({
web: z
.object({
breadcrumbs: z
.object({
title: z.string(),
parentsConnection: z.object({
edges: z.array(
z.object({
node: z.object({
system: z.object({
content_type_uid: z.string(),
uid: z.string(),
}),
}),
})
),
}),
})
.optional(),
})
.optional(),
system: z.object({
content_type_uid: z.string(),
uid: z.string(),
}),
})
),
})
export type BreadcrumbsRefsItems = z.infer<typeof breadcrumbsRefsItems>
export const validateMyPagesBreadcrumbsRefsContentstackSchema = z.object({
all_account_page: breadcrumbsRefsItems,
})
export const validateLoyaltyPageBreadcrumbsRefsContentstackSchema = z.object({
all_loyalty_page: breadcrumbsRefsItems,
})
const page = z.object({
web: z
.object({
breadcrumbs: z
.object({
title: z.string(),
parentsConnection: z.object({
edges: z.array(
z.object({
node: z.object({
web: z.object({
breadcrumbs: z.object({
title: z.string(),
}),
}),
system: z.object({
locale: z.nativeEnum(Lang),
uid: z.string(),
}),
url: z.string(),
}),
})
),
}),
})
.optional(),
})
.optional(),
system: z.object({
uid: z.string(),
}),
})
export type Page = z.infer<typeof page>
const breadcrumbsItems = z.object({
items: z.array(page),
})
export const validateMyPagesBreadcrumbsContentstackSchema = z.object({
all_account_page: breadcrumbsItems,
})
export const validateLoyaltyPageBreadcrumbsContentstackSchema = z.object({
all_loyalty_page: breadcrumbsItems,
})