feat(SW-2863): Move contentstack router to trpc package * Add exports to packages and lint rule to prevent relative imports * Add env to trpc package * Add eslint to trpc package * Apply lint rules * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * WIP first step * update internal imports in trpc * Fix most errors in scandic-web Just 100 left... * Move Props type out of trpc * Fix CategorizedFilters types * Move more schemas in hotel router * Fix deps * fix getNonContentstackUrls * Fix import error * Fix entry error handling * Fix generateMetadata metrics * Fix alertType enum * Fix duplicated types * lint:fix * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package * Fix broken imports * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package Approved-by: Linus Flood
29 lines
901 B
TypeScript
29 lines
901 B
TypeScript
import { z } from "zod"
|
|
|
|
import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membershipLevels"
|
|
|
|
import type { CMSReward } from "../../../types/reward"
|
|
|
|
export const validateLoyaltyLevelsSchema = z
|
|
.object({
|
|
all_loyalty_level: z.object({
|
|
items: z.array(
|
|
z.object({
|
|
level_id: z.nativeEnum(MembershipLevelEnum),
|
|
name: z.string(),
|
|
user_facing_tag: z.string().optional(),
|
|
description: z.string().optional(),
|
|
required_nights: z.number().optional().nullable(),
|
|
required_points: z.number(),
|
|
})
|
|
),
|
|
}),
|
|
})
|
|
.transform((data) => data.all_loyalty_level.items)
|
|
|
|
export type LoyaltyLevelsResponse = z.input<typeof validateLoyaltyLevelsSchema>
|
|
|
|
export type LoyaltyLevel = z.output<typeof validateLoyaltyLevelsSchema>[number]
|
|
|
|
export type LevelWithRewards = LoyaltyLevel & { rewards: CMSReward[] }
|