UNPKG

@nucypher/taco

Version:

### [`nucypher/taco-web`](../../README.md)

36 lines 1.23 kB
import { z } from 'zod'; import { maxNestedDepth } from '../multi-condition'; import { baseConditionSchema, plainStringSchema } from './common'; import { anyConditionSchema } from './utils'; export const SequentialConditionType = 'sequential'; export const conditionVariableSchema = z.lazy(() => z.object({ varName: plainStringSchema, condition: anyConditionSchema, })); export const sequentialConditionSchema = baseConditionSchema .extend({ conditionType: z .literal(SequentialConditionType) .default(SequentialConditionType), conditionVariables: z.array(conditionVariableSchema).min(2).max(5), }) .refine((condition) => maxNestedDepth(2)(condition), { message: 'Exceeded max nested depth of 2 for multi-condition type', path: ['conditionVariables'], }) .refine( // check for duplicate var names (condition) => { const seen = new Set(); return condition.conditionVariables.every((child) => { if (seen.has(child.varName)) { return false; } seen.add(child.varName); return true; }); }, { message: 'Duplicate variable names are not allowed', path: ['conditionVariables'], }); //# sourceMappingURL=sequential.js.map