survey-mcp-server
Version:
Survey management server handling survey creation, response collection, analysis, and reporting with database access for data management
92 lines (91 loc) • 3.17 kB
TypeScript
import { ToolResponse } from '../types/index.js';
export declare enum ErrorCode {
VALIDATION_ERROR = "VALIDATION_ERROR",
SANITIZATION_ERROR = "SANITIZATION_ERROR",
DATABASE_ERROR = "DATABASE_ERROR",
SEARCH_ERROR = "SEARCH_ERROR",
EXTERNAL_API_ERROR = "EXTERNAL_API_ERROR",
AUTHENTICATION_ERROR = "AUTHENTICATION_ERROR",
AUTHORIZATION_ERROR = "AUTHORIZATION_ERROR",
NOT_FOUND = "NOT_FOUND",
INTERNAL_ERROR = "INTERNAL_ERROR",
RATE_LIMIT_ERROR = "RATE_LIMIT_ERROR",
TIMEOUT_ERROR = "TIMEOUT_ERROR",
CONFIGURATION_ERROR = "CONFIGURATION_ERROR"
}
export interface ErrorDetails {
code: ErrorCode;
message: string;
field?: string;
details?: any;
correlationId?: string;
timestamp?: Date;
retryable?: boolean;
}
export declare class BaseError extends Error {
readonly code: ErrorCode;
readonly statusCode: number;
readonly isOperational: boolean;
readonly field?: string;
readonly details?: any;
readonly correlationId: string;
readonly timestamp: Date;
readonly retryable: boolean;
constructor(errorDetails: ErrorDetails, statusCode?: number, isOperational?: boolean);
private generateCorrelationId;
toJSON(): {
name: string;
message: string;
code: ErrorCode;
statusCode: number;
field: string | undefined;
details: any;
correlationId: string;
timestamp: string;
retryable: boolean;
};
}
export declare class ValidationError extends BaseError {
constructor(message: string, field?: string, details?: any);
}
export declare class SanitizationError extends BaseError {
constructor(message: string, details?: any);
}
export declare class DatabaseError extends BaseError {
constructor(message: string, details?: any, retryable?: boolean);
}
export declare class SearchError extends BaseError {
constructor(message: string, details?: any, retryable?: boolean);
}
export declare class ExternalApiError extends BaseError {
constructor(message: string, details?: any, retryable?: boolean);
}
export declare class NotFoundError extends BaseError {
constructor(message: string, details?: any);
}
export declare class ConfigurationError extends BaseError {
constructor(message: string, details?: any);
}
export declare class TimeoutError extends BaseError {
constructor(message: string, details?: any);
}
export declare class ErrorHandlingMiddleware {
private static instance;
private constructor();
static getInstance(): ErrorHandlingMiddleware;
handleError(error: Error | BaseError, toolName?: string): ToolResponse;
wrapAsyncOperation<T>(operation: () => Promise<T>, errorContext?: {
toolName?: string;
operationType?: string;
timeout?: number;
}): Promise<T>;
private logError;
private createErrorResponse;
private normalizeError;
private isRetryableMongoError;
private sanitizeErrorMessage;
private generateCorrelationId;
isOperationalError(error: Error): boolean;
shouldRetry(error: Error): boolean;
}
export declare const errorHandlingMiddleware: ErrorHandlingMiddleware;