UNPKG

@eka-care/patient-ts-sdk

Version:

TypeScript SDK for Trinity Patient Profile Management System

118 lines (117 loc) 3.26 kB
/** * Custom error classes for the Trinity Profiles SDK */ /** * Base class for all SDK errors */ export class TrinitySDKError extends Error { constructor(message, statusCode, response) { super(message); this.name = this.constructor.name; this.statusCode = statusCode; this.response = response; // Maintains proper stack trace for where our error was thrown if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } } } /** * Authentication error (401) */ export class AuthenticationError extends TrinitySDKError { constructor(message = "Authentication failed", response) { super(message, 401, response); } } /** * Authorization error (403) */ export class AuthorizationError extends TrinitySDKError { constructor(message = "Access denied", response) { super(message, 403, response); } } /** * Validation error (400) */ export class ValidationError extends TrinitySDKError { constructor(message, response, validationErrors) { super(message, 400, response); this.validationErrors = validationErrors; } } /** * Not found error (404) */ export class NotFoundError extends TrinitySDKError { constructor(message = "Resource not found", response) { super(message, 404, response); } } /** * Conflict error (409) */ export class ConflictError extends TrinitySDKError { constructor(message = "Resource conflict", response) { super(message, 409, response); } } /** * Server error (5xx) */ export class ServerError extends TrinitySDKError { constructor(message = "Internal server error", statusCode = 500, response) { super(message, statusCode, response); } } /** * Network error (connection issues) */ export class NetworkError extends TrinitySDKError { constructor(message = "Network error", response) { super(message, 0, response); } } /** * Timeout error */ export class TimeoutError extends TrinitySDKError { constructor(message = "Request timeout", response) { super(message, 408, response); } } /** * Rate limit error (429) */ export class RateLimitError extends TrinitySDKError { constructor(message = "Rate limit exceeded", response) { super(message, 429, response); } } /** * Create appropriate error based on HTTP status code */ export function createErrorFromResponse(statusCode, message, response) { switch (statusCode) { case 400: return new ValidationError(message, response); case 401: return new AuthenticationError(message, response); case 403: return new AuthorizationError(message, response); case 404: return new NotFoundError(message, response); case 408: return new TimeoutError(message, response); case 409: return new ConflictError(message, response); case 429: return new RateLimitError(message, response); default: if (statusCode >= 500) { return new ServerError(message, statusCode, response); } return new TrinitySDKError(message, statusCode, response); } }