UNPKG

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
"use strict"; 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