UNPKG

@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.

120 lines 6.45 kB
/** * Custom error types for the gov-deals package */ /** * Base error class for all gov-deals errors */ export class GovDealsError extends Error { code; details; 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); } } } /** * Configuration error */ export class ConfigurationError extends GovDealsError { constructor(message, details) { super(message, 'CONFIGURATION_ERROR', details); this.name = 'ConfigurationError'; } } /** * Authentication error for API requests */ export class AuthenticationError extends GovDealsError { constructor(message, details) { super(message, 'AUTHENTICATION_ERROR', details); this.name = 'AuthenticationError'; } } /** * API request error */ export class ApiError extends GovDealsError { statusCode; response; constructor(message, statusCode, response, details) { super(message, 'API_ERROR', details); this.statusCode = statusCode; this.response = response; this.name = 'ApiError'; } } /** * Rate limit error */ export class RateLimitError extends ApiError { retryAfter; constructor(message, retryAfter, details) { super(message, 429, undefined, details); this.retryAfter = retryAfter; this.name = 'RateLimitError'; } } /** * Validation error for data validation failures */ export class ValidationError extends GovDealsError { validationErrors; constructor(message, validationErrors, details) { super(message, 'VALIDATION_ERROR', details); this.validationErrors = validationErrors; this.name = 'ValidationError'; } } /** * Network error for connection issues */ export class NetworkError extends GovDealsError { originalError; constructor(message, originalError, details) { super(message, 'NETWORK_ERROR', details); this.originalError = originalError; this.name = 'NetworkError'; } } /** * Timeout error */ export class TimeoutError extends NetworkError { constructor(message, details) { super(message, undefined, details); this.name = 'TimeoutError'; } } /** * Check if an error is a gov-deals error */ export function isGovDealsError(error) { return error instanceof GovDealsError; } /** * Check if an error is a rate limit error */ export function isRateLimitError(error) { return error instanceof RateLimitError; } /** * Check if an error is retryable */ export 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; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFHcEI7SUFDQTtJQUhsQixZQUNFLE9BQWUsRUFDQyxJQUFZLEVBQ1osT0FBaUM7UUFFakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBR2pELElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO1FBRTVCLDBEQUEwRDtRQUMxRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFDbkQsWUFBWSxPQUFlLEVBQUUsT0FBaUM7UUFDNUQsS0FBSyxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUFDcEQsWUFBWSxPQUFlLEVBQUUsT0FBaUM7UUFDNUQsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVMsU0FBUSxhQUFhO0lBR3ZCO0lBQ0E7SUFIbEIsWUFDRSxPQUFlLEVBQ0MsVUFBbUIsRUFDbkIs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