UNPKG

npm-audit-pipeline

Version:
72 lines (71 loc) 2.39 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.runNpmAuditCommand = void 0; var E = require('fp-ts/Either'); var TE = require('fp-ts/TaskEither'); var RTE = require('fp-ts/ReaderTaskEither'); var function_1 = require('fp-ts/function'); var Console_1 = require('fp-ts/lib/Console'); var executorResponseHandler_1 = require('./executorResponseHandler'); var retry_ts_1 = require('retry-ts'); var Task_1 = require('retry-ts/Task'); var policy = function (retries) { return (0, retry_ts_1.capDelay)( 2000, retry_ts_1.Monoid.concat( (0, retry_ts_1.exponentialBackoff)(200), (0, retry_ts_1.limitRetries)(retries), ), ); }; var getCommand = function (config) { if (config.packageManager === 'npm') { return process.platform === 'win32' ? 'set dir=%cd% && cd / && npx npm --prefix %dir% audit --json' : 'dir=$(pwd) && cd / && npx npm --prefix ${dir} audit --json'; } return ''.concat(config.packageManager, ' audit --json'); }; var execAsPromise = function (env, command) { return new Promise(function (resolve, reject) { return env.exec(command, function (err, stdout, stderr) { return err && !stdout ? (0, function_1.pipe)((0, Console_1.error)(err)(), function () { return reject(err); }) : resolve({ stdout: stdout, stderr: stderr }); }); }); }; var runNpmAuditCommand = function (config) { return (0, function_1.pipe)( RTE.ask(), RTE.chainTaskEitherK(function (env) { return (0, Task_1.retrying)( policy(config.retry), function () { return (0, function_1.pipe)( TE.tryCatch( function () { return execAsPromise(env, getCommand(config)); }, function (error) { return error instanceof Error ? error : new Error('Failed to execute child process command'); }, ), TE.chainEitherK( config.packageManager === 'yarn' ? executorResponseHandler_1.handleExecYarnResponse : executorResponseHandler_1.handleExecResponse, ), ); }, E.isLeft, ); }), ); }; exports.runNpmAuditCommand = runNpmAuditCommand; // "x=$(pwd) && cd / && npx npm --prefix ${x} audit --json"