/** * Advanced Input Validation Framework * * Provides comprehensive input validation, sanitization, and security * for all data entering the qtests system. Now enhanced with Joi * for enterprise-grade validation while maintaining backward compatibility. */ import { joiSecurityValidator } from './JoiSecurityValidator.js'; /** * Validation rule configuration */ export interface ValidationRule { name: string; required?: boolean; type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'email' | 'url' | 'path'; minLength?: number; maxLength?: number; pattern?: RegExp; allowedValues?: any[]; forbiddenPatterns?: RegExp[]; customValidator?: (value: any) => boolean | string; sanitize?: boolean; } /** * Validation result interface */ 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; } /** * Advanced input validator with security focus */ export declare class SecurityValidator { private readonly defaultRules; private readonly securityPatterns; constructor(); /** * Initialize default validation rules for common input types */ private initializeDefaultRules; /** * Validate input against specified rules * Enhanced with Joi for improved security while maintaining compatibility */ validate(input: any, ruleName?: string, customRules?: ValidationRule[]): ValidationResult; /** * Apply individual validation rule */ private applyRule; /** * 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; /** * Create custom validation rule */ createRule(rule: ValidationRule): ValidationRule; /** * Add custom validation rule set */ addRuleSet(name: string, rules: ValidationRule[]): void; /** * Get available rule sets */ getRuleSets(): string[]; } export declare const securityValidator: SecurityValidator; /** * Convenience function for quick validation */ export declare function validateInput(input: any, ruleName: string): ValidationResult; /** * Convenience function for JSON validation */ export declare function validateJSON(jsonString: string): ValidationResult; /** * Convenience function for module ID validation */ export declare function validateModuleId(moduleId: string): ValidationResult; /** * Convenience function for path validation */ export declare function validatePath(filePath: string): ValidationResult; export { joiSecurityValidator }; export { validateInput as validateInputJoi, validateJSON as validateJSONJoi, validateModuleId as validateModuleIdJoi, validatePath as validatePathJoi, validateCommand, validateEmail, validateURL, validateUserInput } from './JoiSecurityValidator.js'; //# sourceMappingURL=SecurityValidator.d.ts.map