vulncheck-sdk
Version:
A comprehensive TypeScript/JavaScript SDK for the VulnCheck API - vulnerability intelligence platform with enriched CVE data, threat intelligence, and security tooling
88 lines • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createErrorFromResponse = exports.VulnCheckServerError = exports.VulnCheckValidationError = exports.VulnCheckNotFoundError = exports.VulnCheckRateLimitError = exports.VulnCheckAuthError = exports.VulnCheckError = void 0;
class VulnCheckError extends Error {
constructor(message, statusCode, endpoint, originalError) {
super(message);
this.name = 'VulnCheckError';
if (statusCode !== undefined)
this.statusCode = statusCode;
if (endpoint !== undefined)
this.endpoint = endpoint;
if (originalError !== undefined)
this.originalError = originalError;
if (Error.captureStackTrace) {
Error.captureStackTrace(this, VulnCheckError);
}
}
}
exports.VulnCheckError = VulnCheckError;
class VulnCheckAuthError extends VulnCheckError {
constructor(message = 'Authentication failed', endpoint) {
super(message, 401, endpoint);
this.name = 'VulnCheckAuthError';
}
}
exports.VulnCheckAuthError = VulnCheckAuthError;
class VulnCheckRateLimitError extends VulnCheckError {
constructor(message = 'Rate limit exceeded', endpoint, retryAfter) {
super(message, 429, endpoint);
this.name = 'VulnCheckRateLimitError';
if (retryAfter !== undefined)
this.retryAfter = retryAfter;
}
}
exports.VulnCheckRateLimitError = VulnCheckRateLimitError;
class VulnCheckNotFoundError extends VulnCheckError {
constructor(message = 'Resource not found', endpoint) {
super(message, 404, endpoint);
this.name = 'VulnCheckNotFoundError';
}
}
exports.VulnCheckNotFoundError = VulnCheckNotFoundError;
class VulnCheckValidationError extends VulnCheckError {
constructor(message = 'Invalid request parameters', endpoint) {
super(message, 400, endpoint);
this.name = 'VulnCheckValidationError';
}
}
exports.VulnCheckValidationError = VulnCheckValidationError;
class VulnCheckServerError extends VulnCheckError {
constructor(message = 'Server error', endpoint, statusCode = 500) {
super(message, statusCode, endpoint);
this.name = 'VulnCheckServerError';
}
}
exports.VulnCheckServerError = VulnCheckServerError;
function createErrorFromResponse(error, endpoint) {
const err = error;
if (err.response) {
const { status, data } = err.response;
const message = data?.message || data?.error || err.message;
switch (status) {
case 401:
return new VulnCheckAuthError(message, endpoint);
case 404:
return new VulnCheckNotFoundError(message, endpoint);
case 400:
return new VulnCheckValidationError(message, endpoint);
case 429: {
const retryAfter = err.response.headers?.['retry-after'];
return new VulnCheckRateLimitError(message, endpoint, retryAfter ? parseInt(retryAfter) : undefined);
}
case 500:
case 502:
case 503:
case 504:
return new VulnCheckServerError(message, endpoint, status);
default:
return new VulnCheckError(message, status, endpoint, err);
}
}
if (err.request) {
return new VulnCheckError('Network error: No response received', undefined, endpoint, err);
}
return new VulnCheckError(err.message || 'Unknown error occurred', undefined, endpoint, err);
}
exports.createErrorFromResponse = createErrorFromResponse;
//# sourceMappingURL=index.js.map