/** * Joi-based Security Validation Framework * * Provides enterprise-grade input validation, sanitization, and security * using Joi schema validation with proven security patterns. */ import Joi from 'joi'; /** * Validation result interface compatible with legacy SecurityValidator */ export interface ValidationResult { valid: boolean; sanitized?: any; errors: string[]; warnings: string[]; securityFlags: string[]; } /** * Input sanitization options */ export interface SanitizeOptions { removeHtml?: boolean; removeScriptTags?: boolean; normalizeWhitespace?: boolean; escapeHtml?: boolean; removeControlChars?: boolean; maxLength?: number; } /** * Security-enhanced validation rules using Joi */ export declare class JoiSecurityValidator { private readonly schemas; constructor(); /** * Initialize Joi schemas with security constraints */ private initializeSchemas; /** * Validate input using Joi schema */ validate(input: any, ruleName?: string, customSchema?: Joi.Schema): ValidationResult; /** * Sanitize input value */ sanitize(input: string, options?: SanitizeOptions): string; /** * Validate JSON content with advanced security checks */ validateJSON(jsonString: string): ValidationResult; /** * Validate module ID for security */ validateModuleId(moduleId: string): ValidationResult; /** * Validate file path for traversal prevention */ validatePath(filePath: string): ValidationResult; /** * Validate command for injection prevention */ validateCommand(command: string): ValidationResult; /** * Validate environment variable name */ validateEnvironmentVariable(envVar: string): ValidationResult; /** * Validate email address */ validateEmail(email: string): ValidationResult; /** * Validate URL */ validateURL(url: string): ValidationResult; /** * Validate generic user input */ validateUserInput(input: string): ValidationResult; /** * Create custom Joi schema */ createSchema(schema: Joi.Schema): Joi.Schema; /** * Add custom schema */ addSchema(name: string, schema: Joi.Schema): void; /** * Get available schemas */ getSchemas(): string[]; /** * Create schema with security extensions */ createSecureSchema(baseSchema: Joi.Schema, options?: { sanitize?: boolean; preventInjection?: boolean; preventTraversal?: boolean; }): Joi.Schema; } export declare const joiSecurityValidator: JoiSecurityValidator; /** * Convenience function for quick validation using Joi */ export declare function validateInput(input: any, ruleName: string): ValidationResult; /** * Convenience function for JSON validation using Joi */ export declare function validateJSON(jsonString: string): ValidationResult; /** * Convenience function for module ID validation using Joi */ export declare function validateModuleId(moduleId: string): ValidationResult; /** * Convenience function for path validation using Joi */ export declare function validatePath(filePath: string): ValidationResult; /** * Convenience function for email validation using Joi */ export declare function validateEmail(email: string): ValidationResult; /** * Convenience function for URL validation using Joi */ export declare function validateURL(url: string): ValidationResult; /** * Convenience function for command validation using Joi */ export declare function validateCommand(command: string): ValidationResult; /** * Convenience function for user input validation using Joi */ export declare function validateUserInput(input: string): ValidationResult; //# sourceMappingURL=JoiSecurityValidator.d.ts.map