@lineai/gov-deals
Version:
Explore Federal contracts for government building renovations, city hall renovations, courthouse updates, library modernizations, federal building improvement contracts, base housing and facilities upgrades.
127 lines • 7.13 kB
JavaScript
;
/**
* Custom error types for the gov-deals package
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.isRetryableError = exports.isRateLimitError = exports.isGovDealsError = exports.TimeoutError = exports.NetworkError = exports.ValidationError = exports.RateLimitError = exports.ApiError = exports.AuthenticationError = exports.ConfigurationError = exports.GovDealsError = void 0;
/**
* Base error class for all gov-deals errors
*/
class GovDealsError extends Error {
constructor(message, code, details) {
super(message);
this.code = code;
this.details = details;
this.name = 'GovDealsError';
// Maintains proper stack trace for where error was thrown
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
}
exports.GovDealsError = GovDealsError;
/**
* Configuration error
*/
class ConfigurationError extends GovDealsError {
constructor(message, details) {
super(message, 'CONFIGURATION_ERROR', details);
this.name = 'ConfigurationError';
}
}
exports.ConfigurationError = ConfigurationError;
/**
* Authentication error for API requests
*/
class AuthenticationError extends GovDealsError {
constructor(message, details) {
super(message, 'AUTHENTICATION_ERROR', details);
this.name = 'AuthenticationError';
}
}
exports.AuthenticationError = AuthenticationError;
/**
* API request error
*/
class ApiError extends GovDealsError {
constructor(message, statusCode, response, details) {
super(message, 'API_ERROR', details);
this.statusCode = statusCode;
this.response = response;
this.name = 'ApiError';
}
}
exports.ApiError = ApiError;
/**
* Rate limit error
*/
class RateLimitError extends ApiError {
constructor(message, retryAfter, details) {
super(message, 429, undefined, details);
this.retryAfter = retryAfter;
this.name = 'RateLimitError';
}
}
exports.RateLimitError = RateLimitError;
/**
* Validation error for data validation failures
*/
class ValidationError extends GovDealsError {
constructor(message, validationErrors, details) {
super(message, 'VALIDATION_ERROR', details);
this.validationErrors = validationErrors;
this.name = 'ValidationError';
}
}
exports.ValidationError = ValidationError;
/**
* Network error for connection issues
*/
class NetworkError extends GovDealsError {
constructor(message, originalError, details) {
super(message, 'NETWORK_ERROR', details);
this.originalError = originalError;
this.name = 'NetworkError';
}
}
exports.NetworkError = NetworkError;
/**
* Timeout error
*/
class TimeoutError extends NetworkError {
constructor(message, details) {
super(message, undefined, details);
this.name = 'TimeoutError';
}
}
exports.TimeoutError = TimeoutError;
/**
* Check if an error is a gov-deals error
*/
function isGovDealsError(error) {
return error instanceof GovDealsError;
}
exports.isGovDealsError = isGovDealsError;
/**
* Check if an error is a rate limit error
*/
function isRateLimitError(error) {
return error instanceof RateLimitError;
}
exports.isRateLimitError = isRateLimitError;
/**
* Check if an error is retryable
*/
function isRetryableError(error) {
if (error instanceof NetworkError || error instanceof TimeoutError) {
return true;
}
if (error instanceof ApiError) {
// Retry on 5xx errors and specific 4xx errors
const statusCode = error.statusCode;
return statusCode ? statusCode >= 500 || statusCode === 429 || statusCode === 408 : false;
}
return false;
}
exports.isRetryableError = isRetryableError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQ0UsT0FBZSxFQUNDLElBQVksRUFDWixPQUFpQztRQUVqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFHakQsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7UUFFNUIsMERBQTBEO1FBQzFELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztDQUNGO0FBZEQsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsYUFBYTtJQUNuRCxZQUFZLE9BQWUsRUFBRSxPQUFpQztRQUM1RCxLQUFLLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsZ0RBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsYUFBYTtJQUNwRCxZQUFZLE9BQWUsRUFBRSxPQUFpQztRQUM1RCxLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLGFBQWE7SUFDekMsWUFDRSxPQUFlLEVBQ0MsVUFBbUIsRUFDbkIsUUFBa0Is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