UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

18 lines (17 loc) 1 kB
import { z } from 'zod'; import { withValidate } from '../utils.js'; import { schemaZodParser } from './schema.js'; import { withDefault, withOptional } from './utils.js'; export const anyOfZodParser = (schema, options = {}) => { let zodFormatter; const { discriminator } = schema.props; if (discriminator !== undefined) { // LIMITATION: Does not support nested `anyOf`s for now, should change with v4: https://v4.zod.dev/v4#upgraded-zdiscriminatedunion // LIMITATION: Does not support `savedAs` attributes for now as ZodEffects are not valid discriminatedUnion options zodFormatter = z.discriminatedUnion(discriminator, schema.elements.map(element => schemaZodParser(element, { ...options, defined: true }))); } else { zodFormatter = z.union(schema.elements.map(element => schemaZodParser(element, { ...options, defined: true }))); } return withDefault(schema, options, withOptional(schema, options, withValidate(schema, zodFormatter))); };