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.

127 lines 7.13 kB
"use strict"; /** * 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQ0UsT0FBZSxFQUNDLElBQVksRUFDWixPQUFpQztRQUVqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFHakQsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7UUFFNUIsMERBQTBEO1FBQzFELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztDQUNGO0FBZEQsc0NBY0M7QUFFRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsYUFBYTtJQUNuRCxZQUFZLE9BQWUsRUFBRSxPQUFpQztRQUM1RCxLQUFLLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsZ0RBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsYUFBYTtJQUNwRCxZQUFZLE9BQWUsRUFBRSxPQUFpQztRQUM1RCxLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLGFBQWE7SUFDekMsWUFDRSxPQUFlLEVBQ0MsVUFBbUIsRUFDbkIsUUFBa0IsRUFDbEMsT0FBaUM7UUFFakMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFKckIsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSWxDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQVZELDRCQVVDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQ0UsT0FBZSxFQUNDLFVBQW1CLEVBQ25DLE9BQWlDO1FBRWpDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUh4QixlQUFVLEdBQVYsVUFBVSxDQUFTO1FBSW5DLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBVEQsd0NBU0M7QUFFRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxhQUFhO0lBQ2hELFlBQ0UsT0FBZSxFQUNDLGdCQUEwQixFQUMxQyxPQUFpQztRQUVqQyxLQUFLLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBSDVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBVTtRQUkxQyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQVRELDBDQVNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxhQUFhO0lBQzdDLFlBQ0UsT0FBZSxFQUNDLGFBQXFCLEVBQ3JDLE9BQWlDO1FBRWpDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBSHpCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBSXJDLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQVRELG9DQVNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxZQUFZO0lBQzVDLFlBQVksT0FBZSxFQUFFLE9BQWlDO1FBQzVELEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUxELG9DQUtDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsS0FBYztJQUM1QyxPQUFPLEtBQUssWUFBWSxhQUFhLENBQUM7QUFDeEMsQ0FBQztBQUZELDBDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFjO0lBQzdDLE9BQU8sS0FBSyxZQUFZLGNBQWMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsNENBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsSUFBSSxLQUFLLFlBQVksWUFBWSxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7UUFDbEUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUksS0FBSyxZQUFZLFFBQVEsRUFBRTtRQUM3Qiw4Q0FBOEM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNwQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLEtBQUssR0FBRyxJQUFJLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUMzRjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVpELDRDQVlDIn0=