TyForge — Type-safe Validation Library
TyForge e uma biblioteca TypeScript para validacao de schemas com seguranca de tipos, Result pattern e blocos de construcao para Domain-Driven Design, desenvolvida pela Navegar Sistemas.
Toda operacao de validacao retorna um Result<T, E> em vez de lancar excecoes, garantindo tratamento de erros explicito e composicional em todo o fluxo da aplicacao.
Instalacao
npm install tyforge
Inicio rapido
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)
}
Visao geral dos modulos
| Modulo | Descricao |
|---|---|
| Result Pattern | Tratamento de erros funcional com ok(), err(), map, flatMap, fold, match, all |
| Schema Builder | Validacao compilada de schemas com inferencia completa de tipos |
| Type Fields | 25+ Value Objects validadores (FString, FEmail, FId, FInt, FDate...) |
| Domain Models | Entity, ValueObject, Aggregate com domain events, Dto |
| Exceptions | 18 tipos RFC 7807 com stack trace lazy |
Arquitetura de modulos
O modulo Result e a base de toda a biblioteca — todos os demais modulos retornam Result<T, E> em suas operacoes de criacao e validacao. Os Type Fields consomem Result e Exceptions para validar valores primitivos, e sao utilizados tanto pelo Schema Builder (composicao de schemas) quanto pelos Domain Models (entidades e agregados).
Stack tecnica
| Item | Detalhe |
|---|---|
| Linguagem | TypeScript 5.7 |
| Formato | CommonJS (ES2022) |
| Runtime | Node >= 18 |
| Dependencia | uuid (unica dependencia de producao) |