@horizon-apps/domain-schema-core
Version:
Core domain schema utilities for Horizon Platform - Schema generators, data enrichers, converters and specifications
137 lines (108 loc) • 3.03 kB
Markdown
Gera schemas Zod a partir do formato Horizon Fields Metadata Pattern v2.2.0.
- ✅ **Inferência inteligente** - Gera validações automaticamente
- ✅ **Suporte completo v2.2.0** - `categories`, `precision`, `mask`, `Json[]`
- ✅ **Mask para dados limpos** - Validações realistas para backend
- ✅ **Performance otimizada** - Rápido e eficiente
```typescript
import { JsonToZodGenerator } from '@horizon-integrations/dev-toolkit'
const fields = [
{
"key": "valor_venda",
"type": "Number",
"label": "Valor de Venda",
"format": "currency",
"validation": {"precision": 2, "min": 0},
"origin": "hb:property"
}
]
const zod = JsonToZodGenerator.generate(fields, {
schemaName: 'Property',
enablePrecisionValidation: true
})
console.log(zod)
// Output: valor_venda: z.number().min(0).multipleOf(0.01).optional()
```
| Tipo | Zod Gerado | Exemplo |
|------|------------|---------|
| `String` | `z.string()` | Texto simples |
| `String[]` | `z.array(z.string())` | Array de strings |
| `Number` | `z.number()` | Números |
| `Boolean` | `z.boolean()` | true/false |
| `Json` | `z.any()` | Objeto JSON |
| `Json[]` | `z.array(z.any())` | Array de objetos |
```typescript
{
"validation": {"precision": 2}
}
// → .multipleOf(0.01)
```
```typescript
{
"mask": "cep"
}
// → .length(8, "CEP deve ter exatamente 8 dígitos")
```
```typescript
{
"enum": {"venda": "Venda", "locacao": "Locação"}
}
// → z.enum(["venda", "locacao"])
```
```typescript
interface JsonToZodOptions {
schemaName: string
addDescriptions?: boolean
exportType?: boolean
enablePrecisionValidation?: boolean
enableMaskValidation?: boolean
enableConditionalFields?: boolean
logInference?: boolean
}
```
Gera schema Zod a partir de array de campos.
Gera schema a partir de arquivo JSON.
Gera e salva schema em arquivo.
Retorna estatísticas do schema.
```typescript
const schema = JsonToZodGenerator.generate(fields, {
schemaName: 'Property',
addDescriptions: true,
exportType: true,
enablePrecisionValidation: true,
enableMaskValidation: true,
logInference: true
})
// Gera:
// - PropertyZod (schema)
// - PropertyType (tipo inferido)
// - validateProperty() (helper)
// - safeValidateProperty() (helper)
```
```typescript
// V1 (antigo)
import { JsonToZodGenerator } from '@horizon-integrations/dev-toolkit'
// V2 (novo)
import { JsonToZodGenerator } from '@horizon-integrations/dev-toolkit'
```
- `tags` → `categories`
- `enumValues/enumLabels` → `enum` (object)
- Suporte para `Json[]`
- Validação `precision`
- Mask para dados limpos (sem regex complexa)