dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
20 lines (19 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapZodParser = 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 mapZodParser = (schema, options = {}) => {
const { mode = 'put' } = options;
const displayedAttrEntries = mode === 'key'
? Object.entries(schema.attributes).filter(([, { props }]) => props.key)
: Object.entries(schema.attributes);
const zodObject = zod_1.z.object(Object.fromEntries(displayedAttrEntries.map(([attributeName, attribute]) => [
attributeName,
(0, schema_js_1.schemaZodParser)(attribute, { ...options, defined: false })
])));
return (0, utils_js_2.withAttributeNameEncoding)(schema, options, (0, utils_js_2.withDefault)(schema, options, (0, utils_js_2.withOptional)(schema, options, (0, utils_js_1.withValidate)(schema, schema.props.strict ? zodObject.strict() : zodObject))));
};
exports.mapZodParser = mapZodParser;