@kenniy/godeye-data-contracts
Version:
Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse
111 lines (110 loc) • 3.31 kB
TypeScript
/**
* Unified Validation System
* Standardized validation decorators and pipes across all services
*/
import { PipeTransform, ArgumentMetadata } from '@nestjs/common';
import { ValidationOptions } from 'class-validator';
/**
* Unified Validation Pipe configuration
*/
interface UnifiedValidationOptions {
whitelist?: boolean;
forbidNonWhitelisted?: boolean;
transform?: boolean;
}
/**
* Unified Validation Pipe
* Replaces separate validation pipes with single, configurable pipe
*/
export declare class ValidationPipe implements PipeTransform<any> {
private readonly options;
constructor(options?: UnifiedValidationOptions);
transform(value: any, { metatype }: ArgumentMetadata): Promise<any>;
private toValidate;
private buildErrorMessage;
}
/**
* ID Validation Decorator
* Replaces @IsUUID() for TypeORM and @IsValidObjectId() for Mongoose
*/
export declare function IsValidId(options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Required Email Validation Decorator
* Works with both simple email validation and complex business rules
*/
export declare function IsRequiredEmail(options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Optional Email Validation Decorator
*/
export declare function IsOptionalEmail(options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Phone Number Validation Decorator
* Supports multiple country formats
*/
export declare function IsPhoneNumber(countries?: string | string[], options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Transform to Lowercase Decorator
*/
export declare function ToLowerCase(): PropertyDecorator;
/**
* Trim Whitespace Decorator
*/
export declare function Trim(): PropertyDecorator;
/**
* Transform Date Decorator
*/
export declare function TransformDate(): PropertyDecorator;
/**
* Transform Array Decorator
*/
export declare function TransformArray(options?: {
separator?: string;
}): PropertyDecorator;
/**
* Pagination Validation Decorator
*/
export declare function IsValidPagination(options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Search Validation Decorator
*/
export declare function IsValidSearch(options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Entity Validation Decorator
*/
export declare function IsValidEntity(entity_type: string, options?: ValidationOptions): (object: Object, propertyName: string) => void;
/**
* Standard DTOs with validation
*/
export declare class PaginationDto {
page?: number;
limit?: number;
}
export declare class SearchDto {
search?: string;
search_fields?: string[];
}
export declare class QueryDto extends PaginationDto {
search?: string;
sort?: Record<string, 'ASC' | 'DESC' | 1 | -1>;
}
/**
* Validation utilities
*/
export declare class ValidationUtils {
/**
* Validate ID format
*/
static isValidId(id: string): boolean;
/**
* Validate email format
*/
static isValidEmail(email: string): boolean;
/**
* Validate pagination parameters
*/
static validatePagination(page?: number, limit?: number): {
page: number;
limit: number;
};
}
export {};