Pular para o conteúdo principal

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

ModuloDescricao
Result PatternTratamento de erros funcional com ok(), err(), map, flatMap, fold, match, all
Schema BuilderValidacao compilada de schemas com inferencia completa de tipos
Type Fields25+ Value Objects validadores (FString, FEmail, FId, FInt, FDate...)
Domain ModelsEntity, ValueObject, Aggregate com domain events, Dto
Exceptions18 tipos RFC 7807 com stack trace lazy

Arquitetura de modulos

Carregando diagrama...

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

ItemDetalhe
LinguagemTypeScript 5.7
FormatoCommonJS (ES2022)
RuntimeNode >= 18
Dependenciauuid (unica dependencia de producao)

Proximos passos