For more complex workflows, you can separate the process into two steps: generating an in-memory model and then generating specific code from that model.
1. Generate an in-memory model
Use Codegen.TypeScriptToModel.Generate(code) to create a TypeBox Model from TypeScript source code.
2. Generate specific representations from the model
Pass the resulting model to various ModelToX generators:
| Generator | Target |
|---|
Codegen.ModelToJsonSchema.Generate(model) | JSON Schema |
Codegen.ModelToJavaScript.Generate(model) | JavaScript |
Codegen.ModelToTypeScript.Generate(model) | TypeScript |
Codegen.ModelToValibot.Generate(model) | Valibot |
Codegen.ModelToValue.Generate(model) | Value |
Codegen.ModelToYup.Generate(model) | Yup |
Codegen.ModelToZod.Generate(model) | Zod |
Codegen.ModelToArkType.Generate(model) | ArkType |
Codegen.ModelToEffect.Generate(model) | Effect |
import * as Codegen from '@sinclair/typebox-codegen'
const Code = `
export type T = {
x: number,
y: number,
z: number
}
`
// 1. Generate the model
const model = Codegen.TypeScriptToModel.Generate(Code)
// 2. Generate specific outputs
console.log('Zod:', Codegen.ModelToZod.Generate(model))
console.log('JSON Schema:', Codegen.ModelToJsonSchema.Generate(model))