@ovm.js/zod
v1.0.0
Published
Zod extension for ovm.js
Readme
Zod extension for OVM.js
ObjectMigratorExtension is not stable interface yet, it can be changed over time
How to use
import {z} from "zod";
import ObjectVersionMigrator from "ovm.js/src/ObjectVersionMigrator.ts";
import ZodObjectMigrationExtension from "../src/extensions/ZodObjectMigrationExtension.ts";
// Step one: Define zod schema
const zodSchema = z.object({
oldField: z.string(),
secondOlfField: z.number().default(15),
newField: z.boolean().default(true),
oldOptionalField: z.string().optional().nullable().default(null),
compoundField: z.object({
justOldFieldTab: z.array(z.any()).default([]),
changedNestedField: z.string().optional().default('ChangedValue'),
newOptionalField: z.string().optional()
}),
migratedCompoundFieldIntoSingularOne: z.array(z.any()).default(['cool']),
migratedSingularFieldIntoCompoundOne: z.object({
addedSubField: z.array(z.any()).optional(),
secondAddedSubfield: z.array(z.any()).default([15, 16])
}),
undefinedField: z.string(),
notOptionalField: z.string()
});
// Step two: initialise migrator with zod migrator extension
const migrator = new ObjectVersionMigrator({
extensions: [
new ZodObjectMigrationExtension()
]
});
// Step three: Automigrate your object
const migratedObj = migrator.autoMigrate(dtoObject, zodSchema);Summary
Basic Zod types support:
- Array of any/mixed values
- Boolean
- Number
- BigInt
- String
- Object
