UNPKG

@nutrient-sdk/document-engine-mcp-server

Version:
47 lines (46 loc) 2.14 kB
import axios from 'axios'; export class DocumentEngineError extends Error { code; statusCode; details; constructor(message, code, statusCode, details) { super(message); this.name = 'DocumentEngineError'; this.code = code; this.statusCode = statusCode; this.details = details; } } export function handleApiError(error) { if (axios.isAxiosError(error)) { const status = error.response?.status; const data = error.response?.data; switch (status) { case 400: throw new DocumentEngineError(data?.message || 'Bad request - invalid parameters', 'BAD_REQUEST', 400, data); case 401: throw new DocumentEngineError('Authentication failed - check your API token', 'AUTHENTICATION_FAILED', 401, data); case 403: throw new DocumentEngineError('Access forbidden - insufficient permissions', 'ACCESS_FORBIDDEN', 403, data); case 404: throw new DocumentEngineError(data?.message || 'Resource not found', 'NOT_FOUND', 404, data); case 409: throw new DocumentEngineError(data?.message || 'Conflict - resource already exists or is in use', 'CONFLICT', 409, data); case 413: throw new DocumentEngineError('File too large - exceeds size limits', 'FILE_TOO_LARGE', 413, data); case 429: throw new DocumentEngineError('Rate limit exceeded - too many requests', 'RATE_LIMIT_EXCEEDED', 429, data); case 500: case 502: case 503: case 504: throw new DocumentEngineError('Server error - please try again later', 'SERVER_ERROR', status, data); default: throw new DocumentEngineError(data?.message || error.message || 'Unknown API error', 'API_ERROR', status, data); } } if (error instanceof Error) { throw new DocumentEngineError(error.message, 'UNKNOWN_ERROR', undefined, error); } throw new DocumentEngineError('An unknown error occurred', 'UNKNOWN_ERROR'); }