UNPKG

@cabin-interactive/qrz-api-client

Version:
116 lines (115 loc) 3.81 kB
// Base error class for all Qrz-related errors export class QrzError extends Error { constructor(message) { super(message); this.name = 'QrzError'; Object.setPrototypeOf(this, QrzError.prototype); } } // Authentication-related errors export class QrzAuthError extends QrzError { constructor(message = 'Authentication failed') { super(message); this.name = 'QrzAuthError'; Object.setPrototypeOf(this, QrzAuthError.prototype); } } // Session-related errors export class QrzSessionError extends QrzError { constructor(message = 'Invalid or expired session') { super(message); this.name = 'QrzSessionError'; Object.setPrototypeOf(this, QrzSessionError.prototype); } } // Rate limiting errors export class QrzRateLimitError extends QrzError { constructor(message = 'Rate limit exceeded', retryAfter) { super(message); this.retryAfter = retryAfter; this.name = 'QrzRateLimitError'; Object.setPrototypeOf(this, QrzRateLimitError.prototype); } } // Network-related errors export class QrzNetworkError extends QrzError { constructor(message, statusCode, originalError) { super(message); this.statusCode = statusCode; this.originalError = originalError; this.name = 'QrzNetworkError'; Object.setPrototypeOf(this, QrzNetworkError.prototype); } } // Not found errors export class QrzNotFoundError extends QrzError { constructor(message = 'Resource not found', callsign) { super(message); this.callsign = callsign; this.name = 'QrzNotFoundError'; Object.setPrototypeOf(this, QrzNotFoundError.prototype); } } // ACTION was not recognized by the QRZ API export class QrzUnknownActionError extends QrzError { constructor(message, command) { super(message); this.command = command; this.name = 'QrzUnrecognizedCommandError'; Object.setPrototypeOf(this, QrzUnknownActionError.prototype); } } /** * Thrown when a QSO is attempted with a station callsign that doesn't match the logbook */ export class QrzQsoStationCallsignError extends QrzError { constructor(message, providedCallsign, expectedCallsign) { super(message); this.providedCallsign = providedCallsign; this.expectedCallsign = expectedCallsign; this.name = 'QrzQsoStationCallsignError'; Object.setPrototypeOf(this, QrzQsoStationCallsignError.prototype); } } /** * Thrown when a QSO date is outside the allowed range for the logbook */ export class QrzQsoDateRangeError extends QrzError { constructor(message, providedDate) { super(message); this.providedDate = providedDate; this.name = 'QrzQsoDateRangeError'; Object.setPrototypeOf(this, QrzQsoDateRangeError.prototype); } } /** * Thrown when the ADIF record format is invalid */ export class QrzAdifFormatError extends QrzError { constructor(message) { super(message); this.name = 'QrzAdifFormatError'; Object.setPrototypeOf(this, QrzAdifFormatError.prototype); } } /** * Thrown when input validation fails for QRZ API requests */ export class QrzQsoValidationError extends QrzError { constructor(message, field, value) { super(message); this.field = field; this.value = value; this.name = 'QrzQsoValidationError'; Object.setPrototypeOf(this, QrzQsoValidationError.prototype); } } export class QrzDuplicateQsoError extends QrzError { constructor(message, field, value) { super(message); this.field = field; this.value = value; this.name = 'QrzDuplicateQsoError'; Object.setPrototypeOf(this, QrzDuplicateQsoError.prototype); } }