src/shared/lib/user-benefits-api.ts (17 lines of code) (raw):
import { z } from 'zod';
// list of product benefits
// https://github.com/guardian/support-service-lambdas/blob/main/modules/product-benefits/src/schemas.ts
const BenefitEnum = z.enum([
'adFree',
'allowRejectAll',
'hideSupportMessaging',
]);
export const userBenefitsResponseSchema = z.object({
benefits: z
.array(z.string()) // Accept any array of strings
.transform((values) =>
values.filter(
(val): val is z.infer<typeof BenefitEnum> =>
BenefitEnum.safeParse(val).success,
),
), // Filter out unknown values based on the BenefitEnum
});
export type UserBenefitsResponse = z.infer<typeof userBenefitsResponseSchema>;