Pular para o conteúdo principal

TyForge — Type-safe Validation Framework

TyForge é um framework TypeScript para validação de schemas com segurança de tipos, Result pattern e blocos de construção para Domain-Driven Design, desenvolvida pela Navegar Sistemas.

Toda operação de validação retorna um Result<T, E> em vez de lançar exceções, garantindo tratamento de erros explícito e composicional em todo o fluxo da aplicação.

Instalação

npm install tyforge

Início rápido

import {
FString,
FEmail,
SchemaBuilder,
isSuccess,
isFailure,
} from "tyforge";
import type { ISchema } from "tyforge";

// 1. Defina o schema com TypeFields
const userSchema = {
name: { type: FString, required: true },
email: { type: FEmail, required: true },
} satisfies ISchema;

// 2. Compile o schema (uma vez)
const validator = SchemaBuilder.compile(userSchema);

// 3. Valide os dados de entrada
const result = validator.create({
name: "Maria Silva",
email: "maria@navegar.com",
});

// 4. Trate o resultado de forma segura
if (isSuccess(result)) {
console.log(result.value.name); // FString
console.log(result.value.email); // FEmail
}

if (isFailure(result)) {
console.error(result.error); // Exceptions (RFC 7807)
}

Visão geral dos módulos

MóduloDescrição
Result PatternTratamento de erros funcional com ok(), err(), map, flatMap, fold, match, all
Schema BuilderValidação compilada de schemas com inferência completa de tipos
Type FieldsValue Objects validadores (FString, FEmail, FId, FMoney, FCurrency, FDocumentCpf...)
Domain ModelsEntity, ValueObject, Aggregate com domain events, Dto
ExceptionsTipos RFC 7807 com stack trace lazy

Arquitetura de módulos

Carregando diagrama...

O módulo Result é a base de todo o framework — todos os demais módulos retornam Result<T, E> em suas operações de criação e validação. Os Type Fields consomem Result e Exceptions para validar valores primitivos, e são utilizados tanto pelo Schema Builder (composição de schemas) quanto pelos Domain Models (entidades e agregados).

Stack técnica

ItemDetalhe
LinguagemTypeScript
FormatoESM (ES2022)
RuntimeNode >= 24
Dependênciauuid (única dependência de produção)

Próximos passos