vulncheck-sdk
Version:
A comprehensive TypeScript/JavaScript SDK for the VulnCheck API - vulnerability intelligence platform with enriched CVE data, threat intelligence, and security tooling
78 lines • 3.01 kB
JavaScript
export 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);
}
}
}
export class VulnCheckAuthError extends VulnCheckError {
constructor(message = 'Authentication failed', endpoint) {
super(message, 401, endpoint);
this.name = 'VulnCheckAuthError';
}
}
export class VulnCheckRateLimitError extends VulnCheckError {
constructor(message = 'Rate limit exceeded', endpoint, retryAfter) {
super(message, 429, endpoint);
this.name = 'VulnCheckRateLimitError';
if (retryAfter !== undefined)
this.retryAfter = retryAfter;
}
}
export class VulnCheckNotFoundError extends VulnCheckError {
constructor(message = 'Resource not found', endpoint) {
super(message, 404, endpoint);
this.name = 'VulnCheckNotFoundError';
}
}
export class VulnCheckValidationError extends VulnCheckError {
constructor(message = 'Invalid request parameters', endpoint) {
super(message, 400, endpoint);
this.name = 'VulnCheckValidationError';
}
}
export class VulnCheckServerError extends VulnCheckError {
constructor(message = 'Server error', endpoint, statusCode = 500) {
super(message, statusCode, endpoint);
this.name = 'VulnCheckServerError';
}
}
export 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);
}
//# sourceMappingURL=index.js.map