import { z } from "zod"; import { logger } from "@formbricks/logger"; import { ValidationError } from "@formbricks/types/errors"; type ValidationPair = [T, z.ZodType]; export function validateInputs[]>( ...pairs: T ): { [K in keyof T]: T[K] extends ValidationPair ? U : never } { const parsedData: any[] = []; for (const [value, schema] of pairs) { const inputValidation = schema.safeParse(value); if (!inputValidation.success) { logger.error( inputValidation.error, `Validation failed for ${JSON.stringify(value).substring(0, 100)} and ${JSON.stringify(schema)}` ); throw new ValidationError("Validation failed"); } parsedData.push(inputValidation.data); } return parsedData as { [K in keyof T]: T[K] extends ValidationPair ? U : never }; }