UNPKG

@trendmoon/api-client

Version:
95 lines 3.35 kB
"use strict"; /** * Custom error classes for the Trendmoon SDK */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TrendmoonAuthError = exports.TrendmoonRateLimitError = exports.TrendmoonValidationError = exports.TrendmoonNetworkError = exports.TrendmoonApiError = exports.TrendmoonError = void 0; exports.createErrorFromResponse = createErrorFromResponse; /** * Base error class for all Trendmoon SDK errors */ class TrendmoonError extends Error { constructor(message, code) { super(message); this.code = code; this.name = 'TrendmoonError'; this.timestamp = new Date().toISOString(); Object.setPrototypeOf(this, TrendmoonError.prototype); } } exports.TrendmoonError = TrendmoonError; /** * Error thrown when API requests fail */ class TrendmoonApiError extends TrendmoonError { constructor(message, statusCode, responseBody, code) { super(message, code); this.statusCode = statusCode; this.responseBody = responseBody; this.name = 'TrendmoonApiError'; Object.setPrototypeOf(this, TrendmoonApiError.prototype); } } exports.TrendmoonApiError = TrendmoonApiError; /** * Error thrown when network requests fail */ class TrendmoonNetworkError extends TrendmoonError { constructor(message, originalError) { super(message, 'NETWORK_ERROR'); this.originalError = originalError; this.name = 'TrendmoonNetworkError'; Object.setPrototypeOf(this, TrendmoonNetworkError.prototype); } } exports.TrendmoonNetworkError = TrendmoonNetworkError; /** * Error thrown when request validation fails */ class TrendmoonValidationError extends TrendmoonError { constructor(message, field) { super(message, 'VALIDATION_ERROR'); this.field = field; this.name = 'TrendmoonValidationError'; Object.setPrototypeOf(this, TrendmoonValidationError.prototype); } } exports.TrendmoonValidationError = TrendmoonValidationError; /** * Error thrown when rate limits are exceeded */ class TrendmoonRateLimitError extends TrendmoonApiError { constructor(message = 'API rate limit exceeded', retryAfter) { super(message, 429, undefined, 'RATE_LIMIT_EXCEEDED'); this.retryAfter = retryAfter; this.name = 'TrendmoonRateLimitError'; Object.setPrototypeOf(this, TrendmoonRateLimitError.prototype); } } exports.TrendmoonRateLimitError = TrendmoonRateLimitError; /** * Error thrown when authentication fails */ class TrendmoonAuthError extends TrendmoonApiError { constructor(message = 'Authentication failed') { super(message, 401, undefined, 'AUTH_ERROR'); this.name = 'TrendmoonAuthError'; Object.setPrototypeOf(this, TrendmoonAuthError.prototype); } } exports.TrendmoonAuthError = TrendmoonAuthError; /** * Utility function to determine error type from HTTP status code */ function createErrorFromResponse(status, statusText, responseBody) { const message = `API Error: ${status} - ${statusText}`; switch (status) { case 401: return new TrendmoonAuthError(message); case 429: return new TrendmoonRateLimitError(message); default: return new TrendmoonApiError(message, status, responseBody); } } //# sourceMappingURL=errors.js.map