openapi-directory-mcp
Version: 
Model Context Protocol server for accessing enhanced triple-source OpenAPI directory (APIs.guru + additional APIs + custom imports)
168 lines • 4.45 kB
TypeScript
/**
 * Validation utilities for enhanced security and data integrity
 */
/**
 * Path validation to prevent path traversal attacks
 */
export declare class PathValidator {
    /**
     * Validate file path for security
     */
    static validatePath(path: string): void;
    /**
     * Check if absolute path is in allowed directories
     */
    private static isAllowedAbsolutePath;
    /**
     * Sanitize path for safe usage
     */
    static sanitizePath(path: string): string;
    /**
     * Validate file extension
     */
    static validateFileExtension(path: string, allowedExtensions: readonly string[]): void;
}
/**
 * File validation utilities
 */
export declare class FileValidator {
    /**
     * Validate file size
     */
    static validateFileSize(sizeBytes: number, maxSizeMB?: number): void;
    /**
     * Validate OpenAPI spec file
     */
    static validateOpenAPIFile(path: string, sizeBytes: number): void;
    /**
     * Validate file content structure
     */
    static validateOpenAPIContent(content: string | any): void;
}
/**
 * Cache validation utilities
 */
export declare class CacheValidator {
    /**
     * Validate cache entry integrity
     */
    static validateCacheEntry(_key: string, data: any): boolean;
    /**
     * Generate cache integrity hash
     */
    static generateIntegrityHash(data: any): string;
    /**
     * Verify cache integrity
     */
    static verifyCacheIntegrity(data: any, expectedHash: string): boolean;
}
/**
 * API data validation utilities
 */
export declare class APIDataValidator {
    /**
     * Validate provider name
     */
    static validateProviderName(provider: string): void;
    /**
     * Validate API identifier
     */
    static validateAPIId(apiId: string): void;
    /**
     * Validate pagination parameters
     */
    static validatePagination(page?: number, limit?: number): {
        page: number;
        limit: number;
    };
    /**
     * Validate search query
     */
    static validateSearchQuery(query: string): void;
}
/**
 * URL validation utilities
 */
export declare class URLValidator {
    /**
     * Validate URL format and security
     */
    static validateURL(url: string): void;
    /**
     * Check if hostname is a local/private address
     */
    private static isLocalAddress;
}
/**
 * Data validation and sanitization utilities
 * Ensures all API responses are properly validated before use
 */
export interface ValidationResult<T> {
    isValid: boolean;
    data: T;
    errors: string[];
    warnings: string[];
}
/**
 * Validation utilities for API responses
 */
export declare class DataValidator {
    /**
     * Validate and sanitize provider list
     */
    static validateProviders(providers: any): ValidationResult<{
        data: string[];
    }>;
    /**
     * Validate and sanitize search results
     */
    static validateSearchResults(searchResults: any): ValidationResult<{
        results: Array<{
            id: string;
            title: string;
            description: string;
            provider: string;
            preferred: string;
            categories: string[];
        }>;
        pagination: {
            page: number;
            limit: number;
            total_results: number;
            total_pages: number;
            has_next: boolean;
            has_previous: boolean;
        };
    }>;
    /**
     * Validate and sanitize metrics data
     */
    static validateMetrics(metrics: any): ValidationResult<{
        numSpecs: number;
        numAPIs: number;
        numEndpoints: number;
        [key: string]: any;
    }>;
    /**
     * Check for potentially suspicious content (XSS, injection attempts)
     * Uses DOMPurify for robust HTML sanitization instead of regex patterns
     */
    private static containsSuspiciousContent;
    /**
     * Validate a number field and provide fallback
     */
    private static validateNumber;
    /**
     * Sanitize an object by excluding specified keys and validating remaining ones
     */
    private static sanitizeObject;
    /**
     * Log validation results appropriately
     */
    static logValidationResults<T>(result: ValidationResult<T>, source: string): void;
}
/**
 * Convenience function to validate and sanitize data with automatic logging
 */
export declare function validateAndSanitize<T>(data: any, validator: (data: any) => ValidationResult<T>, source: string): T;
//# sourceMappingURL=validation.d.ts.map