@tetraeducation/tetra-tools
v0.1.4
Published
Ferramentas e utilitários para projetos da Tetra Educação
Downloads
212
Maintainers
Readme
@tetraeducation/tetra-tools
Ferramentas e utilitários para projetos da Tetra Educação - Logger, Pagination, Validation e Error Handling seguindo padrões de Ports & Adapters (Hexagonal Architecture).
🚀 Funcionalidades
- 🔍 Logger: Abstração do Pino com interceptors e middleware
- 📄 Pagination: Sistema completo de paginação com cursor/keyset e offset
- ✅ Validation: Abstração do Zod com schemas centralizados
- 🚨 Error Handling: Sistema robusto de tratamento de erros com Result pattern
📦 Instalação
npm install @tetraeducation/tetra-tools
# ou
pnpm add @tetraeducation/tetra-tools
# ou
yarn add @tetraeducation/tetra-tools🎯 Uso Rápido
Logger
import { TetraLoggerModule } from '@tetraeducation/tetra-tools';
@Module({
imports: [TetraLoggerModule.forRoot()],
})
export class AppModule {}Pagination
import { TetraPaginationModule, PaginationSchema } from '@tetraeducation/tetra-tools';
@Module({
imports: [TetraPaginationModule.forRoot()],
})
export class AppModule {}
// Controller
@Get()
@UseGuards(createValidationGuard(PaginationSchema, 'query'))
async findAll(@Query() params: PaginationParams) {
// params já validado e tipado
}Validation
import { TetraValidationModule, ZodValidator } from '@tetraeducation/tetra-tools';
@Module({
imports: [TetraValidationModule.forRoot()],
})
export class AppModule {}
// Validação manual
const validator = new ZodValidator();
const result = await validator.validate(UserSchema, data);Error Handling
import { TetraErrorModule, AppError, Result } from '@tetraeducation/tetra-tools';
@Module({
imports: [TetraErrorModule.forRoot()],
})
export class AppModule {}
// Use-case com Result pattern
async execute(data: CreateUserDto): Promise<Result<User, AppError>> {
if (!data.email) {
return validationError({ field: 'email', message: 'Email é obrigatório' });
}
try {
const user = await this.userRepo.create(data);
return Result.ok(user);
} catch (error) {
return Result.error(mapDatabaseErrorToAppError(error));
}
}🏗️ Arquitetura
Este pacote segue o padrão Ports & Adapters (Hexagonal Architecture):
- Ports: Interfaces definidas no tetra-tools
- Adapters: Implementações específicas nos microserviços
- Abstrações: Sem acoplamento com tecnologias específicas
📚 Documentação
- Logger - Sistema de logging
- Pagination - Sistema de paginação
- Validation - Sistema de validação
- Error Handling - Sistema de tratamento de erros
🔧 Scripts Disponíveis
# Build
pnpm build
# Desenvolvimento
pnpm dev
# Versioning
pnpm version:patch # 0.1.0 -> 0.1.1
pnpm version:minor # 0.1.0 -> 0.2.0
pnpm version:major # 0.1.0 -> 1.0.0
# Publicar no npm
pnpm publish:npm🤝 Contribuição
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
🏢 Tetra Educação
Desenvolvido com ❤️ pela equipe da Tetra Educação.
