@remotion/studio
Version:
APIs for interacting with the Remotion Studio
182 lines (181 loc) • 7.87 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createZodValues = void 0;
const createZodValues = (schema, zodRuntime, zodTypes) => {
if (!schema) {
throw new Error('Invalid zod schema');
}
const def = schema._def;
const typeName = def.typeName;
switch (typeName) {
case zodRuntime.ZodFirstPartyTypeKind.ZodString:
return '';
case zodRuntime.ZodFirstPartyTypeKind.ZodNumber: {
for (const check of def.checks) {
if (check.kind === 'min') {
return check.value;
}
if (check.kind === 'max' && check.value < 0) {
return check.value;
}
}
return 0;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodBigInt:
return BigInt(0);
case zodRuntime.ZodFirstPartyTypeKind.ZodBoolean:
return false;
case zodRuntime.ZodFirstPartyTypeKind.ZodNaN:
return NaN;
case zodRuntime.ZodFirstPartyTypeKind.ZodDate:
return new Date();
case zodRuntime.ZodFirstPartyTypeKind.ZodSymbol:
return Symbol('remotion');
case zodRuntime.ZodFirstPartyTypeKind.ZodUndefined:
return undefined;
case zodRuntime.ZodFirstPartyTypeKind.ZodNull:
return null;
case zodRuntime.ZodFirstPartyTypeKind.ZodAny:
throw new Error('Cannot create a value for type z.any()');
case zodRuntime.ZodFirstPartyTypeKind.ZodUnknown:
throw new Error('Cannot create a value for type z.unknown()');
case zodRuntime.ZodFirstPartyTypeKind.ZodNever:
throw new Error('Cannot create a value for type z.never()');
case zodRuntime.ZodFirstPartyTypeKind.ZodVoid:
return undefined;
case zodRuntime.ZodFirstPartyTypeKind.ZodObject: {
const shape = def.shape();
const keys = Object.keys(shape);
const returnValue = keys.reduce((existing, key) => {
existing[key] = (0, exports.createZodValues)(shape[key], zodRuntime, zodTypes);
return existing;
}, {});
return returnValue;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodArray: {
return [
(0, exports.createZodValues)(def.type, zodRuntime, zodTypes),
];
}
case zodRuntime.ZodFirstPartyTypeKind.ZodUnion: {
const firstOptions = def.options[0];
return firstOptions
? (0, exports.createZodValues)(firstOptions, zodRuntime, zodTypes)
: undefined;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {
const options = def.options[0];
return (0, exports.createZodValues)(options, zodRuntime, zodTypes);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodLiteral: {
return def.value;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodEffects: {
if (zodTypes &&
schema._def.description ===
zodTypes.ZodZypesInternals.REMOTION_COLOR_BRAND) {
return '#ffffff';
}
if (zodTypes &&
schema._def.description ===
zodTypes.ZodZypesInternals.REMOTION_TEXTAREA_BRAND) {
return '';
}
if (zodTypes &&
schema._def.description ===
zodTypes.ZodZypesInternals.REMOTION_MATRIX_BRAND) {
return [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
];
}
return (0, exports.createZodValues)(def.schema, zodRuntime, zodTypes);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodIntersection: {
const { left, right } = def;
const leftValue = (0, exports.createZodValues)(left, zodRuntime, zodTypes);
if (typeof leftValue !== 'object') {
throw new Error('Cannot create value for type z.intersection: Left side is not an object');
}
const rightValue = (0, exports.createZodValues)(right, zodRuntime, zodTypes);
if (typeof rightValue !== 'object') {
throw new Error('Cannot create value for type z.intersection: Right side is not an object');
}
return { ...leftValue, ...rightValue };
}
case zodRuntime.ZodFirstPartyTypeKind.ZodTuple: {
const items = def.items.map((item) => (0, exports.createZodValues)(item, zodRuntime, zodTypes));
return items;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodRecord: {
const values = (0, exports.createZodValues)(def.valueType, zodRuntime, zodTypes);
return { key: values };
}
case zodRuntime.ZodFirstPartyTypeKind.ZodMap: {
const defType = def;
const values = (0, exports.createZodValues)(defType.valueType, zodRuntime, zodTypes);
const key = (0, exports.createZodValues)(defType.keyType, zodRuntime, zodTypes);
return new Map([[key, values]]);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodLazy: {
const defType = def;
const type = defType.getter();
return (0, exports.createZodValues)(type, zodRuntime, zodTypes);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodSet: {
const defType = def;
const values = (0, exports.createZodValues)(defType.valueType, zodRuntime, zodTypes);
return new Set([values]);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodFunction: {
throw new Error('Cannot create a value for type function');
}
case zodRuntime.ZodFirstPartyTypeKind.ZodEnum: {
const { values } = def;
return values[0];
}
case zodRuntime.ZodFirstPartyTypeKind.ZodNativeEnum: {
return 0;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodOptional: {
const defType = def;
const value = (0, exports.createZodValues)(defType.innerType, zodRuntime, zodTypes);
return value;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodNullable: {
const defType = def;
const value = (0, exports.createZodValues)(defType.innerType, zodRuntime, zodTypes);
return value;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodDefault: {
const defType = def;
return defType.defaultValue();
}
case zodRuntime.ZodFirstPartyTypeKind.ZodCatch: {
const defType = def;
const value = (0, exports.createZodValues)(defType.innerType, zodRuntime, zodTypes);
return value;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodPromise: {
const defType = def;
const value = (0, exports.createZodValues)(defType.type, zodRuntime, zodTypes);
return Promise.resolve(value);
}
case zodRuntime.ZodFirstPartyTypeKind.ZodBranded: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const defType = def;
const value = (0, exports.createZodValues)(defType.type, zodRuntime, zodTypes);
return value;
}
case zodRuntime.ZodFirstPartyTypeKind.ZodPipeline: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const defType = def;
const value = (0, exports.createZodValues)(defType.out, zodRuntime, zodTypes);
return value;
}
default:
throw new Error('Not implemented: ' + typeName);
}
};
exports.createZodValues = createZodValues;