dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
30 lines (29 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.numberZodParser = void 0;
const zod_1 = require("zod");
const utils_js_1 = require("../utils.js");
const utils_js_2 = require("./utils.js");
const numberZodParser = (schema, options = {}) => {
var _a;
let zodFormatter;
const { props } = schema;
const [enumHead, ...enumTail] = (_a = props.enum) !== null && _a !== void 0 ? _a : [];
if (enumHead !== undefined) {
const [enumTailHead, ...enumTailTail] = enumTail;
zodFormatter =
enumTailHead !== undefined
? zod_1.z.union([
zod_1.z.literal(enumHead),
zod_1.z.literal(enumTailHead),
...enumTailTail.map(val => zod_1.z.literal(val))
])
: zod_1.z.literal(enumHead);
}
else {
const { big = false } = props;
zodFormatter = big ? zod_1.z.union([zod_1.z.number(), zod_1.z.bigint()]) : zod_1.z.number();
}
return (0, utils_js_2.withEncoding)(schema, options, (0, utils_js_2.withDefault)(schema, options, (0, utils_js_2.withOptional)(schema, options, (0, utils_js_1.withValidate)(schema, zodFormatter))));
};
exports.numberZodParser = numberZodParser;