adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
144 lines • 4.34 kB
TypeScript
/**
* Input Validation Service for Interactive CLI
*
* Provides comprehensive input validation and sanitization for all user inputs
* in the interactive CLI system. Ensures robust user experience by preventing
* invalid inputs and providing helpful error messages.
*
* @version 1.0.0
* @author ADPA Team
*/
export interface ValidationResult {
isValid: boolean;
error?: string;
sanitizedValue?: string;
suggestions?: string[];
timestamp?: Date;
}
export interface ValidationOptions {
required?: boolean;
minLength?: number;
maxLength?: number;
pattern?: RegExp;
allowedValues?: string[];
customValidator?: (value: string) => ValidationResult;
sanitize?: boolean;
caseSensitive?: boolean;
}
export declare class InputValidationService {
private static readonly errorHistory;
private static readonly MAX_ERROR_HISTORY;
/**
* Enhanced validation with timeout and retry support
*/
static validateWithRetry<T>(input: string, validator: (input: string) => ValidationResult, options?: {
maxRetries?: number;
retryMessage?: string;
fieldName?: string;
}): Promise<{
isValid: boolean;
value?: T;
attempts: number;
}>;
/**
* Validate input with timeout
*/
static validateWithTimeout(input: string, validator: (input: string) => ValidationResult, timeoutMs?: number): Promise<ValidationResult>;
/**
* Enhanced input sanitization with security measures
*/
static sanitizeInputSecure(input: string): string;
/**
* Validate menu choice input
*/
static validateMenuChoice(input: string, validChoices: string[]): ValidationResult;
/**
* Validate project name input
*/
static validateProjectName(input: string): ValidationResult;
/**
* Validate file path input
*/
static validateFilePath(input: string): ValidationResult;
/**
* Validate URL input
*/
static validateUrl(input: string): ValidationResult;
/**
* Validate email input
*/
static validateEmail(input: string): ValidationResult;
/**
* Validate API key input
*/
static validateApiKey(input: string, provider?: string): ValidationResult;
/**
* Validate numeric input
*/
static validateNumber(input: string, min?: number, max?: number): ValidationResult;
/**
* Validate yes/no input
*/
static validateYesNo(input: string): ValidationResult;
/**
* Generic text validation
*/
static validateText(input: string, options?: ValidationOptions, fieldName?: string): ValidationResult;
/**
* Sanitize input to prevent security issues
*/
static sanitizeInput(input: string): string;
/**
* Validate multiple inputs at once
*/
static validateMultiple(inputs: {
[key: string]: {
value: string;
validator: (value: string) => ValidationResult;
};
}): {
[key: string]: ValidationResult;
};
/**
* Check if all validation results are valid
*/
static allValid(results: ValidationResult[]): boolean;
/**
* Get first error from validation results
*/
static getFirstError(results: ValidationResult[]): string | null;
/**
* Format validation error for display
*/
static formatValidationError(result: ValidationResult): string;
/**
* Track validation errors for analytics
*/
static trackValidationError(result: ValidationResult): void;
/**
* Get validation error statistics
*/
static getValidationStats(): {
totalErrors: number;
recentErrors: number;
commonErrors: string[];
errorRate: number;
};
/**
* Clear validation error history
*/
static clearValidationHistory(): void;
/**
* Validate command line arguments
*/
static validateCommandArgs(args: string[]): ValidationResult;
/**
* Validate file system paths with security checks
*/
static validatePathSecure(input: string): ValidationResult;
/**
* Validate numeric input with range checking
*/
static validateNumericRange(input: string, min?: number, max?: number): ValidationResult;
}
//# sourceMappingURL=InputValidationService.d.ts.map