@jokoor/sdk
Version:
Jokoor SMS API SDK for JavaScript/TypeScript
119 lines • 4.2 kB
JavaScript
;
/**
* Jokoor SDK Error Classes
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.JokoorWebhookSignatureError = exports.JokoorTimeoutError = exports.JokoorNetworkError = exports.JokoorValidationError = exports.JokoorRateLimitError = exports.JokoorNotFoundError = exports.JokoorPermissionError = exports.JokoorAuthenticationError = exports.JokoorAPIError = exports.JokoorError = void 0;
exports.isJokoorError = isJokoorError;
exports.createErrorFromResponse = createErrorFromResponse;
class JokoorError extends Error {
constructor(message) {
super(message);
this.name = 'JokoorError';
// Maintains proper stack trace for where our error was thrown
if (Error.captureStackTrace) {
Error.captureStackTrace(this, JokoorError);
}
}
}
exports.JokoorError = JokoorError;
class JokoorAPIError extends JokoorError {
constructor(message, statusCode, code, response) {
super(message);
this.name = 'JokoorAPIError';
this.statusCode = statusCode;
this.code = code;
this.response = response;
}
}
exports.JokoorAPIError = JokoorAPIError;
class JokoorAuthenticationError extends JokoorError {
constructor(message = 'Authentication failed') {
super(message);
this.name = 'JokoorAuthenticationError';
}
}
exports.JokoorAuthenticationError = JokoorAuthenticationError;
class JokoorPermissionError extends JokoorError {
constructor(message = 'Permission denied') {
super(message);
this.name = 'JokoorPermissionError';
}
}
exports.JokoorPermissionError = JokoorPermissionError;
class JokoorNotFoundError extends JokoorError {
constructor(message = 'Resource not found') {
super(message);
this.name = 'JokoorNotFoundError';
}
}
exports.JokoorNotFoundError = JokoorNotFoundError;
class JokoorRateLimitError extends JokoorError {
constructor(message = 'Rate limit exceeded') {
super(message);
this.name = 'JokoorRateLimitError';
}
}
exports.JokoorRateLimitError = JokoorRateLimitError;
class JokoorValidationError extends JokoorError {
constructor(message = 'Validation failed', errors) {
super(message);
this.name = 'JokoorValidationError';
this.errors = errors;
}
}
exports.JokoorValidationError = JokoorValidationError;
class JokoorNetworkError extends JokoorError {
constructor(message = 'Network error occurred') {
super(message);
this.name = 'JokoorNetworkError';
}
}
exports.JokoorNetworkError = JokoorNetworkError;
class JokoorTimeoutError extends JokoorError {
constructor(message = 'Request timed out') {
super(message);
this.name = 'JokoorTimeoutError';
}
}
exports.JokoorTimeoutError = JokoorTimeoutError;
class JokoorWebhookSignatureError extends JokoorError {
constructor(message = 'Invalid webhook signature') {
super(message);
this.name = 'JokoorWebhookSignatureError';
}
}
exports.JokoorWebhookSignatureError = JokoorWebhookSignatureError;
/**
* Type guard to check if an error is a JokoorError
*/
function isJokoorError(error) {
return error instanceof JokoorError;
}
/**
* Helper to create appropriate error from API response
*/
function createErrorFromResponse(response) {
const statusCode = response.status || response.statusCode;
const data = response.data || response;
const message = data.error || data.message || 'An error occurred';
const code = data.code;
switch (statusCode) {
case 401:
return new JokoorAuthenticationError(message);
case 403:
return new JokoorPermissionError(message);
case 404:
return new JokoorNotFoundError(message);
case 429:
return new JokoorRateLimitError(message);
case 400:
if (data.errors && typeof data.errors === 'object') {
return new JokoorValidationError(message, data.errors);
}
return new JokoorValidationError(message);
default:
return new JokoorAPIError(message, statusCode, code, data);
}
}
//# sourceMappingURL=errors.js.map