UNPKG

npm-audit-pipeline

Version:
42 lines (41 loc) 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runAudit = exports.ExitStatus = void 0; var function_1 = require("fp-ts/lib/function"); var TE = require("fp-ts/TaskEither"); var T = require("fp-ts/Task"); var RT = require("fp-ts/ReaderTask"); var IO = require("fp-ts/IO"); var Console_1 = require("fp-ts/Console"); var argsParser_1 = require("./argsParser"); var auditor_1 = require("./auditor"); var ExitStatus; (function (ExitStatus) { ExitStatus[ExitStatus["success"] = 0] = "success"; ExitStatus[ExitStatus["failed"] = 1] = "failed"; })(ExitStatus = exports.ExitStatus || (exports.ExitStatus = {})); var writeVulnerabilityResultToTerminal = function (failedVulnerabilities) { return failedVulnerabilities.map(function (x) { var level = x.level, expectedCount = x.expectedCount, actualCount = x.actualCount; return (0, function_1.pipe)((0, Console_1.error)('\x1b[31m \x1b[40m NPM AUDIT FAILED'), IO.chain(function () { return (0, Console_1.error)("\u001B[0m \u001B[33m For level: ".concat(level, ", the expected vulnerabilities should be ").concat(expectedCount, " but got ").concat(actualCount, "\n")); }))(); }); }; var logResultToTerminal = function (result) { return (0, function_1.pipe)(result, TE.fold(function (error) { return (0, function_1.pipe)((0, Console_1.info)("\u001B[31m \u001B[40m Failed to run npm audit pipeline - Reason: ".concat(error.message)), IO.map((0, function_1.constant)(ExitStatus.failed)), T.fromIO); }, (0, function_1.flow)(IO.of, IO.chainFirst((0, function_1.flow)(writeVulnerabilityResultToTerminal, function_1.constVoid, IO.of)), IO.chain(function (failedVulnerabilities) { return failedVulnerabilities.length ? IO.of(ExitStatus.failed) : (0, function_1.pipe)((0, Console_1.info)('NPM audit passed...'), IO.map((0, function_1.constant)(ExitStatus.success))); }), T.fromIO))); }; var runAudit = function () { return (0, function_1.pipe)(RT.ask(), RT.chainTaskK(function (env) { return (0, function_1.pipe)(env.getCommandLineArgs(), argsParser_1.parseCommandLineArgs, TE.fromEither, TE.chain(function (config) { return (0, function_1.pipe)(config, env.runNpmAuditCommand, TE.map((0, auditor_1.evaluateFailedVulnerabilities)(config))); }), logResultToTerminal); })); }; exports.runAudit = runAudit;