doba

Schema registry for TypeScript

bun add doba

Type-safe migrations

Input and output types checked at compile time.

Automatic path finding

BFS finds the shortest route through your migration graph.

Errors as values

Discriminated Result type. No exceptions, just check .ok.

Standard Schema

Zod, Valibot, ArkType, or any Standard Schema.

Migration context

Warnings, defaults, audit trail tracked per step.

Zero copy

Transforms pass references. No cloning.

Benchmarks

~2ns
Lookup
~505ns
Transform
2.0M/s
Throughput
2.3M/s
Batch

Example

import { createRegistry } from 'dobajs'import { z } from 'zod'const registry = createRegistry({  schemas: {    database: z.object({      id: z.string(),      email: z.string(),      passwordHash: z.string(),      role: z.enum(['admin', 'user']),    }),    frontend: z.object({      id: z.string(),      email: z.string(),      role: z.enum(['admin', 'user']),    }),  },  migrations: {    'database->frontend': (user) => ({      id: user.id,      email: user.email,      role: user.role,    }),  },})const result = await registry.transform(dbUser, 'database', 'frontend')

Get started

Install doba and start transforming schemas.

MIT