dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
22 lines (21 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.anyOfZodParser = void 0;
const zod_1 = require("zod");
const utils_js_1 = require("../utils.js");
const schema_js_1 = require("./schema.js");
const utils_js_2 = require("./utils.js");
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 = zod_1.z.discriminatedUnion(discriminator, schema.elements.map(element => (0, schema_js_1.schemaZodParser)(element, { ...options, defined: true })));
}
else {
zodFormatter = zod_1.z.union(schema.elements.map(element => (0, schema_js_1.schemaZodParser)(element, { ...options, defined: true })));
}
return (0, utils_js_2.withDefault)(schema, options, (0, utils_js_2.withOptional)(schema, options, (0, utils_js_1.withValidate)(schema, zodFormatter)));
};
exports.anyOfZodParser = anyOfZodParser;