vulnzap-core
Version:
Secure AI-generated code by intercepting vulnerabilities in real-time
186 lines (185 loc) • 5.74 kB
TypeScript
/**
* Scanner Manager
*
* Central system for coordinating vulnerability scanning across multiple package ecosystems.
* Handles scheduling, executing, and aggregating scan results.
*/
import { EventEmitter } from 'events';
interface ScannerManagerOptions {
cachePath: any;
concurrency: any;
timeout: any;
}
/**
* Scanner Manager class
*
* Coordinates vulnerability scanning across multiple ecosystems
*/
export declare class ScannerManager extends EventEmitter {
private options;
private dataSources;
private activeScans;
private ecosystemScanners;
private resultsCache;
constructor(options?: ScannerManagerOptions);
/**
* Initialize scanner manager
* @private
*/
_init(): Promise<void>;
/**
* Load ecosystem-specific scanners
* @private
*/
_loadEcosystemScanners(): void;
/**
* Initialize all data sources
* @private
*/
_initializeDataSources(): Promise<void>;
/**
* Create a scanner function for a specific ecosystem
* @private
* @param {string} ecosystem - Ecosystem name
* @returns {Function} - Scanner function for the ecosystem
*/
_createEcosystemScannerFn(ecosystem: any): (packageName: any, version: any, options?: any) => Promise<any>;
/**
* Remove duplicate vulnerability reports
* @private
* @param {Array} results - Vulnerability results
* @returns {Array} - Deduplicated results
*/
_deduplicateResults(results: any): any[];
/**
* Save results to cache file
* @private
* @param {string} key - Cache key
* @param {any} data - Data to cache
* @param {number} ttl - Time to live in seconds
*/
private _saveToCache;
/**
* Get data from cache
* @private
* @param {string} key - Cache key
* @returns {Promise<any>} - Cached data or null
*/
private _getFromCache;
/**
* Scan a single package for vulnerabilities
*
* @param {string} packageName - Package name
* @param {string} version - Package version
* @param {string} ecosystem - Package ecosystem (npm, pip, etc.)
* @param {Object} options - Scan options
* @returns {Promise<Array>} - Vulnerability scan results
*/
scanPackage(packageName: string, version: string, ecosystem: string, options?: any): Promise<any>;
/**
* Scan a directory for vulnerabilities in all detected ecosystems
*
* @param {string} directory - Directory to scan
* @param {Object} options - Scan options
* @returns {Promise<Object>} - Scan results by ecosystem
*/
scanDirectory(directory: any, options?: any): Promise<{
directory: any;
timestamp: string;
results: {};
error?: undefined;
} | {
error: any;
directory?: undefined;
timestamp?: undefined;
results?: undefined;
}>;
/**
* Scan multiple packages in batch
*
* @param {Array<{name: string, version: string, ecosystem: string}>} packages - Packages to scan
* @param {Object} options - Scan options
* @returns {Promise<Array>} - Scan results
*/
batchScan(packages: any, options?: any): Promise<{
timestamp: string;
totalPackages: any;
results: any;
}>;
/**
* Normalize package name according to ecosystem conventions
*
* @private
* @param {string} packageName - Package name
* @param {string} ecosystem - Package ecosystem
* @returns {string} - Normalized package name
*/
_normalizePackageName(packageName: any, ecosystem: any): any;
/**
* Get ecosystem-specific remediation advice
*
* @param {string} packageName - Package name
* @param {string} version - Vulnerable version
* @param {string} ecosystem - Package ecosystem
* @param {Array} vulnerabilities - Vulnerability data
* @returns {Object} - Remediation advice
*/
getRemediationAdvice(packageName: any, version: any, ecosystem: any, vulnerabilities: any): {
error: string;
packageName?: undefined;
currentVersion?: undefined;
ecosystem?: undefined;
recommendedVersion?: undefined;
updateInstructions?: undefined;
alternativePackages?: undefined;
notes?: undefined;
} | {
packageName: any;
currentVersion: any;
ecosystem: any;
recommendedVersion: null;
updateInstructions: null;
alternativePackages: never[];
notes: string;
error?: undefined;
};
/**
* Generate a vulnerability report
*
* @param {Object} scanResults - Scan results
* @param {Object} options - Report options
* @returns {Object} - Vulnerability report
*/
generateReport(scanResults: any, options?: any): {
timestamp: string;
summary: {
scannedPackages: number;
vulnerablePackages: number;
totalVulnerabilities: number;
criticalVulnerabilities: number;
highVulnerabilities: number;
mediumVulnerabilities: number;
lowVulnerabilities: number;
ecosystems: {};
};
vulnerablePackages: any;
metadata: {
scanId: any;
directory: any;
options: any;
};
};
/**
* Get the highest severity from an array of vulnerabilities
*
* @private
* @param {Array} vulnerabilities - Vulnerabilities
* @returns {string} - Highest severity
*/
_getHighestSeverity(vulnerabilities: any): string;
/**
* Clear all cache data
*/
clearCache(): Promise<void>;
}
export default ScannerManager;