lean4-code-actions
Version:
Refactorings and snippets for Lean 4
14 lines (12 loc) • 540 B
text/typescript
import { Effect, z, ZodType } from 'zod'
import { ZodTypeDef } from 'zod/lib/types'
export const addEffect = <Output = unknown, Def extends ZodTypeDef = ZodTypeDef, Input = Output, Base extends ZodType<Output, Def, Input> = ZodType<Output, Def, Input>>(base: Base, effect: Effect<unknown>) => {
switch (effect.type) {
case 'preprocess':
return z.preprocess(effect.transform, base)
case 'transform':
return base.transform(effect.transform)
case 'refinement':
return base.superRefine(effect.refinement)
}
}