@elxxx/nestjs-class-validator
v1.0.4
Published
Integración de NestJS para class-validator con soporte i18n utilizando encabezados Accept-Language y archivos de locales personalizables.
Downloads
19
Maintainers
Readme
@elxxx/nestjs-class-validator
@elxxx/nestjs-class-validator @elxxx/nestjs-class-validator es una extensión ligera para NestJS que provee mensajes de error localizados para class-validator sin necesidad de personalizar cada decorador. Permite manejar errores de validación en múltiples idiomas mediante archivos JSON estándar e integra directamente con ValidationPipe y ExceptionFilter.
✨ Características principales
- 🌍 Soporta múltiples idiomas (en , vi, fr, cn, hi, es)
- 📥 Lee la cabecera Accept-Language para determinar el idioma dinámicamente
- 📦 Integración lista para usar con el ValidationPipe de NestJS
- 🧩 Archivos de mensajes personalizables para cada locale
- ⚡ Cero configuración necesaria en cada decorador
📦 Instalación
npm:
npm @elxxx/nestjs-class-validatoryarn:
yarn add @elxxx/nestjs-class-validatorpnpm:
pnpm add @elxxx/nestjs-class-validator🚀 Uso
1. Registrar Pipes y Filtros globales
Utiliza las clases de excepción y filtro provistas para aplicar validación localizada en toda la aplicación.
// main.ts
import {
I18nValidationException,
I18nValidationFilter,
} from '@elxxx/nestjs-class-validator';
import { ValidationPipe } from '@nestjs/common';
import { HttpAdapterHost, NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
transform: true,
forbidNonWhitelisted: true,
exceptionFactory: (errors) => new I18nValidationException(errors),
}),
);
const adapterHost = app.get(HttpAdapterHost);
app.useGlobalFilters(
new I18nValidationFilter(adapterHost, { fallbackLanguage: 'es' }),
);
await app.listen(3000);
}
bootstrap();2. Crear DTO con class-validator
import { IsEmail, IsNotEmpty, MinLength, IsStrongPassword } from 'class-validator';
export class RegisterUserDto {
@IsEmail()
email: string;
@IsNotEmpty()
username: string;
@MinLength(8)
@IsStrongPassword()
password: string;
}3. Enviar una petición con cabecera Accept-Language
POST /register
Accept-Language: es
Content-Type: application/json
{
"email": "[email protected]",
"username": "elias",
"password": "123"
}Respuesta:
{
"statusCode": 400,
"message": [
"El campo password debe tener al menos 8 caracteres",
"El campo password debe ser una contraseña segura"
],
"error": "Bad Request"
}🛠️ Issues y Contribuciones
Siéntete libre de abrir issues o enviar pull requests para mejoras, correcciones de errores o soporte de nuevos idiomas.
📄 License
Licencia MIT © elxxx
