j4flmao/agent_skills_nodejs_nestjs

validating-nestjs-dtos

Validates NestJS request payloads with class-validator and class-transformer using a global ValidationPipe.

Voir la source

Mode d’emploi

  1. Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
  2. Consultez le document original pour les outils, identifiants et environnements requis.
  3. Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/j4flmao/agent_skills_nodejs_nestjs --skill validating-nestjs-dtos

Avant de commencer

  • L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
  • Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Validating NestJS DTOs

When to use

  • Adding or refactoring DTOs
  • Hardening boundary input
  • Removing manual validation from controllers

Core rules

  1. Global ValidationPipe with whitelist: true, forbidNonWhitelisted: true
  2. DTOs use class-validator decorators: @IsEmail(), @IsString(), @MinLength()
  3. Use @Type() from class-transformer for type conversion
  4. No manual validation in controllers
  5. DTOs in application/dtos/ folder

Reference shape (TypeScript)

DTO with class-validator

typescript
import { IsEmail, IsString, MinLength, IsEnum } from 'class-validator';
import { Type } from 'class-transformer';

export class CreateUserDto {
  @IsEmail()
  email: string;

  @IsString()
  @MinLength(12)
  password: string;

  @IsEnum(['user', 'admin'])
  role: string;
}

Global ValidationPipe

typescript
// main.ts
app.useGlobalPipes(
  new ValidationPipe({
    whitelist: true,
    forbidNonWhitelisted: true,
    transform: true,
    transformOptions: { enableImplicitConversion: true },
  })
);

Examples — Do

typescript
@Post()
async create(@Body() dto: CreateUserDto): Promise<ApiResponse<User>> {
  return toApiResponse(await this.useCase.execute(dto)); // No manual validation
}

Examples — Don't

typescript
// ❌ Manual validation in controller
@Post()
create(@Body() body: any) {
  if (!body.email) return { error: 'Email required' }; // No!
}

Checklist

  • [ ] Global ValidationPipe configured
  • [ ] DTOs with class-validator decorators
  • [ ] No manual validation in controllers
  • [ ] DTOs in application/dtos folder

See reference/dto-patterns.md for full patterns.

Tâches connexes

du même dépôt

Autres Skills

Tous les Skills