mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | const { exec } = require('child_process'); | ||
|  | 
 | ||
|  | const URL_LIST = [ | ||
|  |   // Not encountered by Vite, thus we cannot hit it
 | ||
|  |   'https://github.com/advisories/GHSA-67mh-4wv8-2f99' | ||
|  | ]; | ||
|  | 
 | ||
|  | const runNpmAudit = () => new Promise((resolve, reject) => { | ||
|  |   exec('npm audit --omit dev --json', (error, stdout, stderr) => { | ||
|  |     if (error && stderr) { | ||
|  |       // npm audit returns a non-zero exit code if there are vulnerabilities
 | ||
|  |       reject(`Audit error: ${error}\n${stdout}\n${stderr}`); | ||
|  |       return; | ||
|  |     } | ||
|  |     resolve(stdout); | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | // interface Audit {
 | ||
|  | //   [name: string]: AuditEntry;
 | ||
|  | // }
 | ||
|  | 
 | ||
|  | // interface AuditEntry {
 | ||
|  | //   severity: string;
 | ||
|  | //   range: string;
 | ||
|  | //   via: Array<{
 | ||
|  | //     url: string;
 | ||
|  | //   } | string>;
 | ||
|  | // }
 | ||
|  | 
 | ||
|  | const checkAudit = async () => { | ||
|  |   const audit = JSON.parse(await runNpmAudit()); | ||
|  | 
 | ||
|  |   const validVulnerabilities = Object.entries(audit.vulnerabilities).filter(([_name, entry]) => { | ||
|  |     const originalVulnerabilities = entry.via.filter(viaEntry => typeof viaEntry === 'object' && !URL_LIST.includes(viaEntry.url)); | ||
|  |     return originalVulnerabilities.length > 0; | ||
|  |   }); | ||
|  | 
 | ||
|  |   for (const [name, entry] of validVulnerabilities) { | ||
|  |     console.error(`Vulnerability (${entry.severity}): ${name} ${entry.range}`); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (validVulnerabilities.length > 0) { | ||
|  |     process.exit(1); | ||
|  |   } | ||
|  | 
 | ||
|  |   console.log('No vulnerabilities found'); | ||
|  | }; | ||
|  | 
 | ||
|  | // You can manually run `npm audit --omit dev` to see the vulnerabilities in a human-friendly
 | ||
|  | checkAudit().catch(error => { | ||
|  |   console.error(error); | ||
|  |   process.exit(1); | ||
|  | }); |