@trendmoon/api-client
Version:
Official TypeScript client for Trendmoon API
95 lines • 3.35 kB
JavaScript
;
/**
* 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