evolution-api-mcp
Version:
MCP Server for Evolution API v2 - Integrate WhatsApp functionality with Claude Desktop and other MCP clients
148 lines (147 loc) • 4.49 kB
TypeScript
/**
* Validation utilities for Evolution API MCP Server
*
* This module provides validation functions with detailed error messages
* and suggestions for parameter correction.
*/
import { z } from 'zod';
import { ValidationError, ValidationErrorDetail, ErrorContext } from './error-handler';
/**
* Validation result interface
*/
export interface ValidationResult<T = any> {
success: boolean;
data?: T;
error?: ValidationError;
}
/**
* Common validation schemas with user-friendly error messages
*/
export declare const ValidationSchemas: {
/**
* WhatsApp number validation
*/
whatsappNumber: z.ZodEffects<z.ZodString, string, string>;
/**
* Instance name validation
*/
instanceName: z.ZodEffects<z.ZodString, string, string>;
/**
* URL validation
*/
url: z.ZodEffects<z.ZodString, string, string>;
/**
* API key validation
*/
apiKey: z.ZodEffects<z.ZodString, string, string>;
/**
* Group JID validation
*/
groupJid: z.ZodEffects<z.ZodString, string, string>;
/**
* Message text validation
*/
messageText: z.ZodEffects<z.ZodString, string, string>;
/**
* Media URL or base64 validation
*/
media: z.ZodEffects<z.ZodString, string, string>;
/**
* Delay validation (in milliseconds)
*/
delay: z.ZodOptional<z.ZodNumber>;
/**
* Webhook events validation
*/
webhookEvents: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
};
/**
* Validator class for parameter validation with detailed error reporting
*/
export declare class ParameterValidator {
/**
* Validate parameters against a Zod schema
*/
static validate<T>(data: unknown, schema: z.ZodSchema<T>, context?: ErrorContext): ValidationResult<T>;
/**
* Extract detailed error information from Zod errors
*/
private static extractZodErrorDetails;
/**
* Generate helpful suggestions for Zod validation errors
*/
private static getZodErrorSuggestion;
/**
* Get specific suggestions for regex validation failures
*/
private static getRegexSuggestion;
/**
* Validate WhatsApp number format
*/
static validateWhatsAppNumber(number: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate instance name
*/
static validateInstanceName(instanceName: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate URL
*/
static validateUrl(url: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate API key
*/
static validateApiKey(apiKey: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate group JID
*/
static validateGroupJid(groupJid: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate message text
*/
static validateMessageText(text: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate media (URL or base64)
*/
static validateMedia(media: string, context?: ErrorContext): ValidationResult<string>;
/**
* Validate multiple parameters at once
*/
static validateMultiple<T extends Record<string, any>>(data: T, schema: z.ZodSchema<T>, context?: ErrorContext): ValidationResult<T>;
}
/**
* Utility functions for common validation scenarios
*/
export declare const ValidationUtils: {
/**
* Check if a string is a valid WhatsApp number
*/
isValidWhatsAppNumber(number: string): boolean;
/**
* Check if a string is a valid instance name
*/
isValidInstanceName(instanceName: string): boolean;
/**
* Check if a string is a valid URL
*/
isValidUrl(url: string): boolean;
/**
* Check if a string is a valid group JID
*/
isValidGroupJid(groupJid: string): boolean;
/**
* Sanitize phone number (remove common formatting)
*/
sanitizePhoneNumber(number: string): string;
/**
* Format phone number for WhatsApp (ensure it has country code)
*/
formatWhatsAppNumber(number: string, defaultCountryCode?: string): string;
/**
* Extract validation errors as user-friendly messages
*/
extractValidationMessages(error: ValidationError): string[];
/**
* Create parameter correction hints
*/
createCorrectionHints(validationDetails: ValidationErrorDetail[]): Record<string, string>;
};