UNPKG

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
/** * 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>; };