UNPKG

@horizon-apps/domain-schema-core

Version:

Core domain schema utilities for Horizon Platform - Schema generators, data enrichers, converters and specifications

126 lines (95 loc) 3.56 kB
# @horizon-apps/domain-schema-core Utilitários centrais para esquemas de domínio da Plataforma Horizon - Geradores de schema, enriquecedores de dados, conversores e especificações. ## 📦 Instalação ```bash npm install @horizon-apps/domain-schema-core # ou pnpm add @horizon-apps/domain-schema-core ``` ## 🚀 Módulos e Exemplos ### 🎨 Enriquecedor de Dados Transforma dados brutos em objetos enriquecidos para UI com formatação e localização. ```typescript import { domainDataDisplayEnricher, formatters } from '@horizon-apps/domain-schema-core' // Enriquecer dados com metadata const enriched = domainDataDisplayEnricher({ data: { valor_venda: 850000, dormitorios: 3, ativo: true }, metadata: [ { key: 'valor_venda', format: 'currency', unit: 'BRL' }, { key: 'dormitorios', format: 'count' }, { key: 'ativo', type: 'Boolean' } ] }) // enriched.valor_venda.valueLabel = "R$ 850.000,00" // enriched.ativo.valueLabel = "Sim" // Formatadores individuais formatters.currency(850000, 'BRL') // "R$ 850.000,00" ``` ### 🔍 Filtros de Dados Filtra campos por categoria ou chaves específicas (remove valores nulos/vazios). ```typescript import { getFieldsByCategory, getFieldsByKeys } from '@horizon-apps/domain-schema-core' const fields = [ { key: 'valor_venda', value: 850000, category: 'pricing' }, { key: 'area_total', value: 120, category: 'dimensions' }, { key: 'descricao', value: null, category: 'info' } ] // Filtrar por categoria const pricing = getFieldsByCategory(fields, 'pricing') // [{ key: 'valor_venda', value: 850000, category: 'pricing' }] // Filtrar por chaves (remove valores nulos) const selected = getFieldsByKeys(fields, ['valor_venda', 'descricao']) // [{ key: 'valor_venda', value: 850000, category: 'pricing' }] // 'descricao' foi filtrado por ter value: null ``` ### 🔄 Transformadores de Dados Transforma estruturas (arrays para campos booleanos individuais, ordenação multi-campo). ```typescript import { expandArrayFieldToBoolean, sortFields } from '@horizon-apps/domain-schema-core' // Expandir array para campos booleanos const amenities = ['Piscina', 'Academia', 'Portaria 24h'] const booleanFields = expandArrayFieldToBoolean(amenities) // [ // { key: 'Piscina', value: true, type: 'Boolean', label: 'Piscina' }, // { key: 'Academia', value: true, type: 'Boolean', label: 'Academia' }, // { key: 'Portaria 24h', value: true, type: 'Boolean', label: 'Portaria 24h' } // ] // Ordenar por múltiplos campos const properties = [ { name: "Casa A", price: 300000, area: 120 }, { name: "Casa B", price: 250000, area: 100 }, { name: "Casa A", price: 280000, area: 110 } ] const sorted = sortFields(properties, ["name:asc", "price:desc"]) // Resultado: Casa A (300k), Casa A (280k), Casa B (250k) ``` ### ⚡ Gerador Zod Converte schemas Horizon para validação Zod. ```typescript import { JsonToZodGenerator } from '@horizon-apps/domain-schema-core' const fields = [ { key: 'nome', type: 'String', validation: { required: true, maxLength: 100 } }, { key: 'preco', type: 'Number', validation: { min: 0 } } ] const zodCode = JsonToZodGenerator.generate(fields, { schemaName: 'Property' }) // Gera código Zod: z.object({ nome: z.string().max(100), preco: z.number().min(0).optional() }) ``` ## 🔧 Desenvolvimento ```bash # Instalar dependências pnpm install # Build pnpm build # Executar testes pnpm test # Verificação de tipos pnpm typecheck # Modo watch pnpm dev ``` ## 📄 Licença MIT --- *Parte do ecossistema da Plataforma Horizon*