@nucypher/taco
Version:
### [`nucypher/taco-web`](../../README.md)
36 lines • 1.23 kB
JavaScript
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