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.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VulnCheckClient = void 0;
const http_1 = require("./http");
const utils_1 = require("../utils");
const errors_1 = require("../errors");
class VulnCheckClient {
constructor(config) {
(0, utils_1.validateConfig)(config);
this.http = new http_1.HttpClient(config);
}
async getCVE(cveId, indexName = 'vulncheck-nvd2') {
if (!(0, utils_1.isValidCVE)(cveId)) {
throw new errors_1.VulnCheckValidationError(`Invalid CVE ID format: ${cveId}`);
}
const response = await this.http.get(`/v3/index/${indexName}?cve=${cveId}`);
return response.data.length > 0 ? response.data[0] : null;
}
async getCVEsFromIndex(indexName, options = {}) {
const queryString = (0, utils_1.buildQueryString)(options);
return this.http.get(`/v3/index/${indexName}${queryString}`);
}
async getCVEsByCPE(cpe, options = {}) {
if (!(0, utils_1.isValidCPE)(cpe)) {
throw new errors_1.VulnCheckValidationError(`Invalid CPE format: ${cpe}`);
}
const queryString = (0, utils_1.buildQueryString)({ cpe, ...options });
return this.http.get(`/v3/cpe${queryString}`);
}
async getCVEsByPURL(purl, options = {}) {
if (!(0, utils_1.isValidPURL)(purl)) {
throw new errors_1.VulnCheckValidationError(`Invalid PURL format: ${purl}`);
}
const queryString = (0, utils_1.buildQueryString)({ purl, ...options });
return this.http.get(`/v3/purl${queryString}`);
}
async searchCPEs(criteria, options = {}) {
if (Object.keys(criteria).length === 0) {
throw new errors_1.VulnCheckValidationError('At least one search criteria must be provided');
}
const queryString = (0, utils_1.buildQueryString)({ ...criteria, ...options });
return this.http.get(`/v3/search/cpe${queryString}`);
}
async getIndexes() {
return this.http.get('/v3/index');
}
async queryIndex(indexName, options = {}) {
if (!indexName) {
throw new errors_1.VulnCheckValidationError('Index name is required');
}
const queryString = (0, utils_1.buildQueryString)(options);
return this.http.get(`/v3/index/${indexName}${queryString}`);
}
async getBackups() {
return this.http.get('/v3/backup');
}
async downloadBackup(indexName) {
if (!indexName) {
throw new errors_1.VulnCheckValidationError('Index name is required');
}
return this.http.get(`/v3/backup/${indexName}`);
}
async getInitialAccessRules(rules) {
if (!rules) {
throw new errors_1.VulnCheckValidationError('Rules parameter is required');
}
return this.http.get(`/v3/rules/initial-access/${rules}`);
}
async getIPsByTags(filter, options = {}) {
if (!filter) {
throw new errors_1.VulnCheckValidationError('Filter is required');
}
const queryString = (0, utils_1.buildQueryString)(options);
return this.http.get(`/v3/tags/${filter}${queryString}`);
}
async getDNSByTags(filter, options = {}) {
if (!filter) {
throw new errors_1.VulnCheckValidationError('Filter is required');
}
const queryString = (0, utils_1.buildQueryString)(options);
return this.http.get(`/v3/pdns/${filter}${queryString}`);
}
async getOpenAPISpec() {
return this.http.get('/v3/openapi');
}
}
exports.VulnCheckClient = VulnCheckClient;
//# sourceMappingURL=index.js.map