import * as z from "zod"; import { DecodeError } from "./DecodeError"; export type DecodeReturnType = | { value: A; error?: never; } | { value?: never; error: DecodeError; }; export const decode = ( codec: z.ZodType, input: I, ): DecodeReturnType => { const parsed = codec.safeParse(input); if (parsed.success) { return { value: parsed.data, }; } return { error: new DecodeError({ input, errors: parsed.error.issues }), }; };