Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
createVersionedEntity
✓ import { createVersionedEntity } from 'verzod'
✗ const createVersionedEntity = require('verzod').createVersionedEntity
ESM-only; CommonJS require will fail. Use import statement.
InferredEntity
✓ import { InferredEntity } from 'verzod'
✗ import { InferredEntity } from 'verzod/InferredEntity'
Not a default export; named import only.
defineVersion
✓ import { defineVersion } from 'verzod'
✗ import { defineVersion } from 'verzod' is correct, but some may try 'verzod/defineVersion'
Named export from main package.
Demonstrates defining a versioned entity with two versions, an up-migration, and parsing/migrating old data.
import { createVersionedEntity, defineVersion, InferredEntity } from 'verzod'
import { z } from 'zod'
const V1 = z.object({ v: z.literal(1), name: z.string() })
const V2 = z.object({ v: z.literal(2), name: z.string(), count: z.number() })
const Entity = createVersionedEntity({
latestVersion: 2,
versionMap: {
1: defineVersion({ initial: true, schema: V1 }),
2: defineVersion({ initial: false, schema: V2, up: (old: z.infer<typeof V1>) => ({ ...old, v: 2, count: 0 }) })
},
getVersion: (data: unknown) => (typeof data === 'object' && data !== null && 'v' in data && typeof (data as any).v === 'number') ? (data as any).v : null
})
const data = { v: 1, name: 'test' }
const parsed = Entity.safeParse(data)
if (parsed.type === 'ok') {
console.log(parsed.value) // Migrated to V2: { v: 2, name: 'test', count: 0 }
} else {
console.error('Parse error:', parsed.error)
}
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module
Using CommonJS require() on ESM-only package.
fixSwitch to import syntax or use dynamic import().
TypeError: Entity.safeParse is not a function
Importing wrong export or using older version without safeParse.
fixEnsure you import createVersionedEntity (not default export) and call it correctly.
ZodError: Expected number, received string
getVersion returns a string (e.g., '1') but versionMap keys are numbers.
fixReturn number from getVersion, e.g., Number(data.v) or parseInt(data.v, 10).
Audit
Dependencies
zodrequiredPeer dependency: required to define schemas and validate data.