UNPKG

owasp-dependency-check

Version:

A Node.js wrapper for the OWASP dependency-check-cli.

62 lines (61 loc) 1.82 kB
import colors from "@colors/colors/safe.js"; import extract from "extract-zip"; import fs from "node:fs/promises"; export async function cleanDir(dir) { log(`Cleaning directory ${dir}`); await deleteQuietly(dir, true); await fs.mkdir(dir, { recursive: true }); } async function deleteQuietly(path, recursive) { try { await fs.rm(path, { force: true, recursive: recursive }); } catch (e) { const error = ensureError(e); logWarning(`Could not delete path "${path}. Reason: ${error}`); } } export function log(...logData) { console.log([ colors.bgGreen(colors.white(" owasp-dependency-check: ")), ...logData, ].join(" ")); } function logWarning(...logData) { console.log([colors.bgYellow(colors.white(" WARNING: ")), ...logData].join(" ")); } export function logError(...logData) { console.error([colors.bgRed(colors.white(" ERROR: ")), ...logData].join(" ")); } export function ensureError(value) { if (value instanceof Error) return value; let stringified; try { stringified = JSON.stringify(value); } catch { stringified = "[Unable to stringify the thrown value]"; } return new Error(`This value was thrown as is, not through an Error: ${stringified}`); } const SECRET_REGEX = /(--\S*(?:key|token|pass)[^\s=]*(?:=| +))(\S*)/gi; export function hideSecrets(input) { return input.replace(SECRET_REGEX, "$1<secret value>"); } export function exitProcess(code, ignoreErrors) { if (ignoreErrors) { process.exit(0); } else { process.exit(code); } } export async function unzipFileIntoDirectory(zipFile, destDir, deleteZip) { await extract(zipFile, { dir: destDir, }); if (deleteZip) { await deleteQuietly(zipFile, false); } }