nestjs-matcher
v1.0.1
Published
Password and string validation with match decorator for class-validator
Maintainers
Readme
Nestjs-Matcher
IS An Password Validator Decorator & Confirm Password checker
A comprehensive password validation package for TypeScript/NestJS applications using class-validator decorators.
Features
- ✅ Match Decorator - Validate confirm password fields
- ✅ Strong Password Decorator - Configurable password strength validation
- ✅ Full TypeScript Support - With complete type definitions
- ✅ Customizable Rules - Configure minimum length, character requirements, custom regex
Installation
npm install nestjs-matcher class-validator class-transformerQuick Start
import { IsString } from 'class-validator';
import { Match, IsStrongPassword } from 'nestjs-matcher';
class RegisterDto {
@IsStrongPassword({
minLength: 8,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true
})
password: string;
@IsString()
@Match('password', { message: 'Passwords do not match' })
confirmPassword: string;
}
API Documentation
Decorators
@Match(property: string, validationOptions?: ValidationOptions)
Validates that a property matches another property.
@IsStrongPassword(options?: PasswordValidationOptions, validationOptions?: ValidationOptions)
Validates password strength based on configurable rules.Complete Example Usage in NestJS
// auth.dto.ts
import { IsString, IsEmail } from 'class-validator';
import { Match, IsStrongPassword } from 'nestjs-matcher';
export class SignUpDto {
@IsEmail()
email: string;
@IsStrongPassword({
minLength: 10,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true
})
password: string;
@IsString()
@Match('password', {
message: 'Password confirmation does not match'
})
confirmPassword: string;
}
// auth.controller.ts
@Post('signup')
async signUp(@Body() signUpDto: SignUpDto) {
// DTO is automatically validated if ValidationPipe is used
return this.authService.signUp(signUpDto);
}API
@Match(property: string) Validates that a property matches another property.
@IsStrongPassword(options?: PasswordOptions) Validates password strength with options:
minLength: number (default: 8)
requireUppercase: boolean (default: true)
requireLowercase: boolean (default: true)
requireNumbers: boolean (default: true)
requireSpecialChars: boolean (default: true)
