MVFM

zod/discriminated_union

Schema for discriminated unions that use a discriminator key for efficient parsing

const app = mvfm(prelude, zod);
const prog = app({ value: "string" }, ($) => {
  return $.zod.discriminatedUnion("status", [
    $.zod.object({ status: $.zod.literal("success"), data: $.zod.string() }),
    $.zod.object({ status: $.zod.literal("failed"), error: $.zod.string() }),
  ]).parse($.input.value);
});
await fold(
  defaults(app),
  injectInput(prog, { value: { status: "success", data: "hello" } })
);
Ctrl+Enter