UNPKG

vulnzap-core

Version:

Secure AI-generated code by intercepting vulnerabilities in real-time

186 lines (185 loc) 5.74 kB
/** * 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;