Files
npm-audit-action/src/audit.ts

40 lines
965 B
TypeScript
Raw Normal View History

import {spawnSync, SpawnSyncReturns} from 'child_process'
import stripAnsi from 'strip-ansi'
export class Audit {
stdout: string = ''
private status: number | null = null
public async run(): Promise<void> {
try {
const result: SpawnSyncReturns<string> = spawnSync('npm', ['audit'], {
encoding: 'utf-8'
})
if (result.error) {
throw result.error
}
if (result.status === null) {
throw new Error('the subprocess terminated due to a signal.')
}
if (result.stderr && result.stderr.length > 0) {
throw new Error(result.stderr)
}
this.status = result.status
this.stdout = result.stdout
} catch (error) {
throw error
}
}
public foundVulnerability(): boolean {
// `npm audit` return 1 when it found vulnerabilities
return this.status === 1
}
public strippedStdout(): string {
return `\`\`\`\n${stripAnsi(this.stdout)}\n\`\`\``
}
}