aboutsummaryrefslogtreecommitdiff
path: root/node_modules/execa
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/execa')
-rw-r--r--node_modules/execa/index.js309
-rw-r--r--node_modules/execa/lib/errname.js37
-rw-r--r--node_modules/execa/lib/stdio.js41
-rw-r--r--node_modules/execa/license9
-rw-r--r--node_modules/execa/node_modules/cross-spawn/CHANGELOG.md6
-rw-r--r--node_modules/execa/node_modules/cross-spawn/LICENSE19
-rw-r--r--node_modules/execa/node_modules/cross-spawn/README.md85
-rw-r--r--node_modules/execa/node_modules/cross-spawn/index.js59
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/enoent.js73
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/parse.js113
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/util/escapeArgument.js30
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/util/escapeCommand.js12
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js18
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/util/readShebang.js37
-rw-r--r--node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js31
l---------node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which1
-rw-r--r--node_modules/execa/node_modules/cross-spawn/package.json53
-rw-r--r--node_modules/execa/package.json76
-rw-r--r--node_modules/execa/readme.md279
19 files changed, 0 insertions, 1288 deletions
diff --git a/node_modules/execa/index.js b/node_modules/execa/index.js
deleted file mode 100644
index 74ba8ee2d..000000000
--- a/node_modules/execa/index.js
+++ /dev/null
@@ -1,309 +0,0 @@
-'use strict';
-const childProcess = require('child_process');
-const util = require('util');
-const crossSpawn = require('cross-spawn');
-const stripEof = require('strip-eof');
-const npmRunPath = require('npm-run-path');
-const isStream = require('is-stream');
-const _getStream = require('get-stream');
-const pFinally = require('p-finally');
-const onExit = require('signal-exit');
-const errname = require('./lib/errname');
-const stdio = require('./lib/stdio');
-
-const TEN_MEGABYTES = 1000 * 1000 * 10;
-
-function handleArgs(cmd, args, opts) {
- let parsed;
-
- if (opts && opts.env && opts.extendEnv !== false) {
- opts.env = Object.assign({}, process.env, opts.env);
- }
-
- if (opts && opts.__winShell === true) {
- delete opts.__winShell;
- parsed = {
- command: cmd,
- args,
- options: opts,
- file: cmd,
- original: cmd
- };
- } else {
- parsed = crossSpawn._parse(cmd, args, opts);
- }
-
- opts = Object.assign({
- maxBuffer: TEN_MEGABYTES,
- stripEof: true,
- preferLocal: true,
- localDir: parsed.options.cwd || process.cwd(),
- encoding: 'utf8',
- reject: true,
- cleanup: true
- }, parsed.options);
-
- opts.stdio = stdio(opts);
-
- if (opts.preferLocal) {
- opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir}));
- }
-
- return {
- cmd: parsed.command,
- args: parsed.args,
- opts,
- parsed
- };
-}
-
-function handleInput(spawned, opts) {
- const input = opts.input;
-
- if (input === null || input === undefined) {
- return;
- }
-
- if (isStream(input)) {
- input.pipe(spawned.stdin);
- } else {
- spawned.stdin.end(input);
- }
-}
-
-function handleOutput(opts, val) {
- if (val && opts.stripEof) {
- val = stripEof(val);
- }
-
- return val;
-}
-
-function handleShell(fn, cmd, opts) {
- let file = '/bin/sh';
- let args = ['-c', cmd];
-
- opts = Object.assign({}, opts);
-
- if (process.platform === 'win32') {
- opts.__winShell = true;
- file = process.env.comspec || 'cmd.exe';
- args = ['/s', '/c', `"${cmd}"`];
- opts.windowsVerbatimArguments = true;
- }
-
- if (opts.shell) {
- file = opts.shell;
- delete opts.shell;
- }
-
- return fn(file, args, opts);
-}
-
-function getStream(process, stream, encoding, maxBuffer) {
- if (!process[stream]) {
- return null;
- }
-
- let ret;
-
- if (encoding) {
- ret = _getStream(process[stream], {
- encoding,
- maxBuffer
- });
- } else {
- ret = _getStream.buffer(process[stream], {maxBuffer});
- }
-
- return ret.catch(err => {
- err.stream = stream;
- err.message = `${stream} ${err.message}`;
- throw err;
- });
-}
-
-module.exports = (cmd, args, opts) => {
- let joinedCmd = cmd;
-
- if (Array.isArray(args) && args.length > 0) {
- joinedCmd += ' ' + args.join(' ');
- }
-
- const parsed = handleArgs(cmd, args, opts);
- const encoding = parsed.opts.encoding;
- const maxBuffer = parsed.opts.maxBuffer;
-
- let spawned;
- try {
- spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
- } catch (err) {
- return Promise.reject(err);
- }
-
- let removeExitHandler;
- if (parsed.opts.cleanup) {
- removeExitHandler = onExit(() => {
- spawned.kill();
- });
- }
-
- let timeoutId = null;
- let timedOut = false;
-
- const cleanupTimeout = () => {
- if (timeoutId) {
- clearTimeout(timeoutId);
- timeoutId = null;
- }
- };
-
- if (parsed.opts.timeout > 0) {
- timeoutId = setTimeout(() => {
- timeoutId = null;
- timedOut = true;
- spawned.kill(parsed.opts.killSignal);
- }, parsed.opts.timeout);
- }
-
- const processDone = new Promise(resolve => {
- spawned.on('exit', (code, signal) => {
- cleanupTimeout();
- resolve({code, signal});
- });
-
- spawned.on('error', err => {
- cleanupTimeout();
- resolve({err});
- });
-
- if (spawned.stdin) {
- spawned.stdin.on('error', err => {
- cleanupTimeout();
- resolve({err});
- });
- }
- });
-
- function destroy() {
- if (spawned.stdout) {
- spawned.stdout.destroy();
- }
-
- if (spawned.stderr) {
- spawned.stderr.destroy();
- }
- }
-
- const promise = pFinally(Promise.all([
- processDone,
- getStream(spawned, 'stdout', encoding, maxBuffer),
- getStream(spawned, 'stderr', encoding, maxBuffer)
- ]).then(arr => {
- const result = arr[0];
- const stdout = arr[1];
- const stderr = arr[2];
-
- let err = result.err;
- const code = result.code;
- const signal = result.signal;
-
- if (removeExitHandler) {
- removeExitHandler();
- }
-
- if (err || code !== 0 || signal !== null) {
- if (!err) {
- let output = '';
-
- if (Array.isArray(parsed.opts.stdio)) {
- if (parsed.opts.stdio[2] !== 'inherit') {
- output += output.length > 0 ? stderr : `\n${stderr}`;
- }
-
- if (parsed.opts.stdio[1] !== 'inherit') {
- output += `\n${stdout}`;
- }
- } else if (parsed.opts.stdio !== 'inherit') {
- output = `\n${stderr}${stdout}`;
- }
-
- err = new Error(`Command failed: ${joinedCmd}${output}`);
- err.code = code < 0 ? errname(code) : code;
- }
-
- // TODO: missing some timeout logic for killed
- // https://github.com/nodejs/node/blob/master/lib/child_process.js#L203
- // err.killed = spawned.killed || killed;
- err.killed = err.killed || spawned.killed;
-
- err.stdout = stdout;
- err.stderr = stderr;
- err.failed = true;
- err.signal = signal || null;
- err.cmd = joinedCmd;
- err.timedOut = timedOut;
-
- if (!parsed.opts.reject) {
- return err;
- }
-
- throw err;
- }
-
- return {
- stdout: handleOutput(parsed.opts, stdout),
- stderr: handleOutput(parsed.opts, stderr),
- code: 0,
- failed: false,
- killed: false,
- signal: null,
- cmd: joinedCmd,
- timedOut: false
- };
- }), destroy);
-
- crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
-
- handleInput(spawned, parsed.opts);
-
- spawned.then = promise.then.bind(promise);
- spawned.catch = promise.catch.bind(promise);
-
- return spawned;
-};
-
-module.exports.stdout = function () {
- // TODO: set `stderr: 'ignore'` when that option is implemented
- return module.exports.apply(null, arguments).then(x => x.stdout);
-};
-
-module.exports.stderr = function () {
- // TODO: set `stdout: 'ignore'` when that option is implemented
- return module.exports.apply(null, arguments).then(x => x.stderr);
-};
-
-module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts);
-
-module.exports.sync = (cmd, args, opts) => {
- const parsed = handleArgs(cmd, args, opts);
-
- if (isStream(parsed.opts.input)) {
- throw new TypeError('The `input` option cannot be a stream in sync mode');
- }
-
- const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts);
-
- if (result.error || result.status !== 0) {
- throw (result.error || new Error(result.stderr === '' ? result.stdout : result.stderr));
- }
-
- result.stdout = handleOutput(parsed.opts, result.stdout);
- result.stderr = handleOutput(parsed.opts, result.stderr);
-
- return result;
-};
-
-module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts);
-
-module.exports.spawn = util.deprecate(module.exports, 'execa.spawn() is deprecated. Use execa() instead.');
diff --git a/node_modules/execa/lib/errname.js b/node_modules/execa/lib/errname.js
deleted file mode 100644
index 328f3e35d..000000000
--- a/node_modules/execa/lib/errname.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-// The Node team wants to deprecate `process.bind(...)`.
-// https://github.com/nodejs/node/pull/2768
-//
-// However, we need the 'uv' binding for errname support.
-// This is a defensive wrapper around it so `execa` will not fail entirely if it stops working someday.
-//
-// If this ever stops working. See: https://github.com/sindresorhus/execa/issues/31#issuecomment-215939939 for another possible solution.
-let uv;
-
-try {
- uv = process.binding('uv');
-
- if (typeof uv.errname !== 'function') {
- throw new TypeError('uv.errname is not a function');
- }
-} catch (err) {
- console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err);
- uv = null;
-}
-
-function errname(uv, code) {
- if (uv) {
- return uv.errname(code);
- }
-
- if (!(code < 0)) {
- throw new Error('err >= 0');
- }
-
- return `Unknown system error ${code}`;
-}
-
-module.exports = code => errname(uv, code);
-
-// Used for testing the fallback behavior
-module.exports.__test__ = errname;
diff --git a/node_modules/execa/lib/stdio.js b/node_modules/execa/lib/stdio.js
deleted file mode 100644
index a82d46838..000000000
--- a/node_modules/execa/lib/stdio.js
+++ /dev/null
@@ -1,41 +0,0 @@
-'use strict';
-const alias = ['stdin', 'stdout', 'stderr'];
-
-const hasAlias = opts => alias.some(x => Boolean(opts[x]));
-
-module.exports = opts => {
- if (!opts) {
- return null;
- }
-
- if (opts.stdio && hasAlias(opts)) {
- throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`);
- }
-
- if (typeof opts.stdio === 'string') {
- return opts.stdio;
- }
-
- const stdio = opts.stdio || [];
-
- if (!Array.isArray(stdio)) {
- throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
- }
-
- const result = [];
- const len = Math.max(stdio.length, alias.length);
-
- for (let i = 0; i < len; i++) {
- let value = null;
-
- if (stdio[i] !== undefined) {
- value = stdio[i];
- } else if (opts[alias[i]] !== undefined) {
- value = opts[alias[i]];
- }
-
- result[i] = value;
- }
-
- return result;
-};
diff --git a/node_modules/execa/license b/node_modules/execa/license
deleted file mode 100644
index e7af2f771..000000000
--- a/node_modules/execa/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/execa/node_modules/cross-spawn/CHANGELOG.md b/node_modules/execa/node_modules/cross-spawn/CHANGELOG.md
deleted file mode 100644
index f1298a82f..000000000
--- a/node_modules/execa/node_modules/cross-spawn/CHANGELOG.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## 5.0.0 - 2016-10-30
-
-- Add support for `options.shell`
-- Improve parsing of shebangs by using [`shebang-command`](https://github.com/kevva/shebang-command) module
-- Refactor some code to make it more clear
-- Update README caveats
diff --git a/node_modules/execa/node_modules/cross-spawn/LICENSE b/node_modules/execa/node_modules/cross-spawn/LICENSE
deleted file mode 100644
index db5e914de..000000000
--- a/node_modules/execa/node_modules/cross-spawn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 IndigoUnited
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/execa/node_modules/cross-spawn/README.md b/node_modules/execa/node_modules/cross-spawn/README.md
deleted file mode 100644
index dde730df1..000000000
--- a/node_modules/execa/node_modules/cross-spawn/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# cross-spawn
-
-[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Build status][appveyor-image]][appveyor-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url]
-
-[npm-url]:https://npmjs.org/package/cross-spawn
-[downloads-image]:http://img.shields.io/npm/dm/cross-spawn.svg
-[npm-image]:http://img.shields.io/npm/v/cross-spawn.svg
-[travis-url]:https://travis-ci.org/IndigoUnited/node-cross-spawn
-[travis-image]:http://img.shields.io/travis/IndigoUnited/node-cross-spawn/master.svg
-[appveyor-url]:https://ci.appveyor.com/project/satazor/node-cross-spawn
-[appveyor-image]:https://img.shields.io/appveyor/ci/satazor/node-cross-spawn/master.svg
-[david-dm-url]:https://david-dm.org/IndigoUnited/node-cross-spawn
-[david-dm-image]:https://img.shields.io/david/IndigoUnited/node-cross-spawn.svg
-[david-dm-dev-url]:https://david-dm.org/IndigoUnited/node-cross-spawn#info=devDependencies
-[david-dm-dev-image]:https://img.shields.io/david/dev/IndigoUnited/node-cross-spawn.svg
-
-A cross platform solution to node's spawn and spawnSync.
-
-
-## Installation
-
-`$ npm install cross-spawn`
-
-If you are using `spawnSync` on node 0.10 or older, you will also need to install `spawn-sync`:
-
-`$ npm install spawn-sync`
-
-
-## Why
-
-Node has issues when using spawn on Windows:
-
-- It ignores [PATHEXT](https://github.com/joyent/node/issues/2318)
-- It does not support [shebangs](http://pt.wikipedia.org/wiki/Shebang)
-- No `options.shell` support on node < v6
-- It does not allow you to run `del` or `dir`
-
-All these issues are handled correctly by `cross-spawn`.
-There are some known modules, such as [win-spawn](https://github.com/ForbesLindesay/win-spawn), that try to solve this but they are either broken or provide faulty escaping of shell arguments.
-
-
-## Usage
-
-Exactly the same way as node's [`spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) or [`spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options), so it's a drop in replacement.
-
-
-```js
-var spawn = require('cross-spawn');
-
-// Spawn NPM asynchronously
-var child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
-
-// Spawn NPM synchronously
-var results = spawn.sync('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
-```
-
-
-## Caveats
-
-#### `options.shell` as an alternative to `cross-spawn`
-
-Starting from node v6, `spawn` has a `shell` option that allows you run commands from within a shell. This new option solves most of the problems that `cross-spawn` attempts to solve, but:
-
-- It's not supported in node < v6
-- It has no support for shebangs on Windows
-- You must manually escape the command and arguments which is very error prone, specially when passing user input
-
-If you are using the `shell` option to spawn a command in a cross platform way, consider using `cross-spawn` instead. You have been warned.
-
-
-#### Shebangs
-
-While `cross-spawn` handles shebangs on Windows, its support is limited: e.g.: it doesn't handle arguments after the path, e.g.: `#!/bin/bash -e`.
-
-Remember to always test your code on Windows!
-
-
-## Tests
-
-`$ npm test`
-
-
-## License
-
-Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
diff --git a/node_modules/execa/node_modules/cross-spawn/index.js b/node_modules/execa/node_modules/cross-spawn/index.js
deleted file mode 100644
index 7814a9692..000000000
--- a/node_modules/execa/node_modules/cross-spawn/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-'use strict';
-
-var cp = require('child_process');
-var parse = require('./lib/parse');
-var enoent = require('./lib/enoent');
-
-var cpSpawnSync = cp.spawnSync;
-
-function spawn(command, args, options) {
- var parsed;
- var spawned;
-
- // Parse the arguments
- parsed = parse(command, args, options);
-
- // Spawn the child process
- spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
-
- // Hook into child process "exit" event to emit an error if the command
- // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- enoent.hookChildProcess(spawned, parsed);
-
- return spawned;
-}
-
-function spawnSync(command, args, options) {
- var parsed;
- var result;
-
- if (!cpSpawnSync) {
- try {
- cpSpawnSync = require('spawn-sync'); // eslint-disable-line global-require
- } catch (ex) {
- throw new Error(
- 'In order to use spawnSync on node 0.10 or older, you must ' +
- 'install spawn-sync:\n\n' +
- ' npm install spawn-sync --save'
- );
- }
- }
-
- // Parse the arguments
- parsed = parse(command, args, options);
-
- // Spawn the child process
- result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
-
- // Analyze if the command does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
-
- return result;
-}
-
-module.exports = spawn;
-module.exports.spawn = spawn;
-module.exports.sync = spawnSync;
-
-module.exports._parse = parse;
-module.exports._enoent = enoent;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/enoent.js b/node_modules/execa/node_modules/cross-spawn/lib/enoent.js
deleted file mode 100644
index d0a193aec..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/enoent.js
+++ /dev/null
@@ -1,73 +0,0 @@
-'use strict';
-
-var isWin = process.platform === 'win32';
-var resolveCommand = require('./util/resolveCommand');
-
-var isNode10 = process.version.indexOf('v0.10.') === 0;
-
-function notFoundError(command, syscall) {
- var err;
-
- err = new Error(syscall + ' ' + command + ' ENOENT');
- err.code = err.errno = 'ENOENT';
- err.syscall = syscall + ' ' + command;
-
- return err;
-}
-
-function hookChildProcess(cp, parsed) {
- var originalEmit;
-
- if (!isWin) {
- return;
- }
-
- originalEmit = cp.emit;
- cp.emit = function (name, arg1) {
- var err;
-
- // If emitting "exit" event and exit code is 1, we need to check if
- // the command exists and emit an "error" instead
- // See: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- if (name === 'exit') {
- err = verifyENOENT(arg1, parsed, 'spawn');
-
- if (err) {
- return originalEmit.call(cp, 'error', err);
- }
- }
-
- return originalEmit.apply(cp, arguments);
- };
-}
-
-function verifyENOENT(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawn');
- }
-
- return null;
-}
-
-function verifyENOENTSync(status, parsed) {
- if (isWin && status === 1 && !parsed.file) {
- return notFoundError(parsed.original, 'spawnSync');
- }
-
- // If we are in node 10, then we are using spawn-sync; if it exited
- // with -1 it probably means that the command does not exist
- if (isNode10 && status === -1) {
- parsed.file = isWin ? parsed.file : resolveCommand(parsed.original);
-
- if (!parsed.file) {
- return notFoundError(parsed.original, 'spawnSync');
- }
- }
-
- return null;
-}
-
-module.exports.hookChildProcess = hookChildProcess;
-module.exports.verifyENOENT = verifyENOENT;
-module.exports.verifyENOENTSync = verifyENOENTSync;
-module.exports.notFoundError = notFoundError;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/parse.js b/node_modules/execa/node_modules/cross-spawn/lib/parse.js
deleted file mode 100644
index 10a013625..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/parse.js
+++ /dev/null
@@ -1,113 +0,0 @@
-'use strict';
-
-var resolveCommand = require('./util/resolveCommand');
-var hasEmptyArgumentBug = require('./util/hasEmptyArgumentBug');
-var escapeArgument = require('./util/escapeArgument');
-var escapeCommand = require('./util/escapeCommand');
-var readShebang = require('./util/readShebang');
-
-var isWin = process.platform === 'win32';
-var skipShellRegExp = /\.(?:com|exe)$/i;
-
-// Supported in Node >= 6 and >= 4.8
-var supportsShellOption = parseInt(process.version.substr(1).split('.')[0], 10) >= 6 ||
- parseInt(process.version.substr(1).split('.')[0], 10) === 4 && parseInt(process.version.substr(1).split('.')[1], 10) >= 8;
-
-function parseNonShell(parsed) {
- var shebang;
- var needsShell;
- var applyQuotes;
-
- if (!isWin) {
- return parsed;
- }
-
- // Detect & add support for shebangs
- parsed.file = resolveCommand(parsed.command);
- parsed.file = parsed.file || resolveCommand(parsed.command, true);
- shebang = parsed.file && readShebang(parsed.file);
-
- if (shebang) {
- parsed.args.unshift(parsed.file);
- parsed.command = shebang;
- needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(resolveCommand(shebang) || resolveCommand(shebang, true));
- } else {
- needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(parsed.file);
- }
-
- // If a shell is required, use cmd.exe and take care of escaping everything correctly
- if (needsShell) {
- // Escape command & arguments
- applyQuotes = (parsed.command !== 'echo'); // Do not quote arguments for the special "echo" command
- parsed.command = escapeCommand(parsed.command);
- parsed.args = parsed.args.map(function (arg) {
- return escapeArgument(arg, applyQuotes);
- });
-
- // Make use of cmd.exe
- parsed.args = ['/d', '/s', '/c', '"' + parsed.command + (parsed.args.length ? ' ' + parsed.args.join(' ') : '') + '"'];
- parsed.command = process.env.comspec || 'cmd.exe';
- parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
- }
-
- return parsed;
-}
-
-function parseShell(parsed) {
- var shellCommand;
-
- // If node supports the shell option, there's no need to mimic its behavior
- if (supportsShellOption) {
- return parsed;
- }
-
- // Mimic node shell option, see: https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
- shellCommand = [parsed.command].concat(parsed.args).join(' ');
-
- if (isWin) {
- parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
- parsed.args = ['/d', '/s', '/c', '"' + shellCommand + '"'];
- parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
- } else {
- if (typeof parsed.options.shell === 'string') {
- parsed.command = parsed.options.shell;
- } else if (process.platform === 'android') {
- parsed.command = '/system/bin/sh';
- } else {
- parsed.command = '/bin/sh';
- }
-
- parsed.args = ['-c', shellCommand];
- }
-
- return parsed;
-}
-
-// ------------------------------------------------
-
-function parse(command, args, options) {
- var parsed;
-
- // Normalize arguments, similar to nodejs
- if (args && !Array.isArray(args)) {
- options = args;
- args = null;
- }
-
- args = args ? args.slice(0) : []; // Clone array to avoid changing the original
- options = options || {};
-
- // Build our parsed object
- parsed = {
- command: command,
- args: args,
- options: options,
- file: undefined,
- original: command,
- };
-
- // Delegate further parsing to shell or non-shell
- return options.shell ? parseShell(parsed) : parseNonShell(parsed);
-}
-
-module.exports = parse;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/util/escapeArgument.js b/node_modules/execa/node_modules/cross-spawn/lib/util/escapeArgument.js
deleted file mode 100644
index 367263f66..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/util/escapeArgument.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-
-function escapeArgument(arg, quote) {
- // Convert to string
- arg = '' + arg;
-
- // If we are not going to quote the argument,
- // escape shell metacharacters, including double and single quotes:
- if (!quote) {
- arg = arg.replace(/([()%!^<>&|;,"'\s])/g, '^$1');
- } else {
- // Sequence of backslashes followed by a double quote:
- // double up all the backslashes and escape the double quote
- arg = arg.replace(/(\\*)"/g, '$1$1\\"');
-
- // Sequence of backslashes followed by the end of the string
- // (which will become a double quote later):
- // double up all the backslashes
- arg = arg.replace(/(\\*)$/, '$1$1');
-
- // All other backslashes occur literally
-
- // Quote the whole thing:
- arg = '"' + arg + '"';
- }
-
- return arg;
-}
-
-module.exports = escapeArgument;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/util/escapeCommand.js b/node_modules/execa/node_modules/cross-spawn/lib/util/escapeCommand.js
deleted file mode 100644
index d9c25b265..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/util/escapeCommand.js
+++ /dev/null
@@ -1,12 +0,0 @@
-'use strict';
-
-var escapeArgument = require('./escapeArgument');
-
-function escapeCommand(command) {
- // Do not escape if this command is not dangerous..
- // We do this so that commands like "echo" or "ifconfig" work
- // Quoting them, will make them unaccessible
- return /^[a-z0-9_-]+$/i.test(command) ? command : escapeArgument(command, true);
-}
-
-module.exports = escapeCommand;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js b/node_modules/execa/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js
deleted file mode 100644
index 9f2eba635..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-// See: https://github.com/IndigoUnited/node-cross-spawn/pull/34#issuecomment-221623455
-function hasEmptyArgumentBug() {
- var nodeVer;
-
- if (process.platform !== 'win32') {
- return false;
- }
-
- nodeVer = process.version.substr(1).split('.').map(function (num) {
- return parseInt(num, 10);
- });
-
- return (nodeVer[0] === 0 && nodeVer[1] < 12);
-}
-
-module.exports = hasEmptyArgumentBug();
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/util/readShebang.js b/node_modules/execa/node_modules/cross-spawn/lib/util/readShebang.js
deleted file mode 100644
index 2cf3541c9..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/util/readShebang.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-var fs = require('fs');
-var LRU = require('lru-cache');
-var shebangCommand = require('shebang-command');
-
-var shebangCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
-
-function readShebang(command) {
- var buffer;
- var fd;
- var shebang;
-
- // Check if it is in the cache first
- if (shebangCache.has(command)) {
- return shebangCache.get(command);
- }
-
- // Read the first 150 bytes from the file
- buffer = new Buffer(150);
-
- try {
- fd = fs.openSync(command, 'r');
- fs.readSync(fd, buffer, 0, 150, 0);
- fs.closeSync(fd);
- } catch (e) { /* empty */ }
-
- // Attempt to extract shebang (null is returned if not a shebang)
- shebang = shebangCommand(buffer.toString());
-
- // Store the shebang in the cache
- shebangCache.set(command, shebang);
-
- return shebang;
-}
-
-module.exports = readShebang;
diff --git a/node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js b/node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js
deleted file mode 100644
index b7a949097..000000000
--- a/node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-
-var path = require('path');
-var which = require('which');
-var LRU = require('lru-cache');
-
-var commandCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
-
-function resolveCommand(command, noExtension) {
- var resolved;
-
- noExtension = !!noExtension;
- resolved = commandCache.get(command + '!' + noExtension);
-
- // Check if its resolved in the cache
- if (commandCache.has(command)) {
- return commandCache.get(command);
- }
-
- try {
- resolved = !noExtension ?
- which.sync(command) :
- which.sync(command, { pathExt: path.delimiter + (process.env.PATHEXT || '') });
- } catch (e) { /* empty */ }
-
- commandCache.set(command + '!' + noExtension, resolved);
-
- return resolved;
-}
-
-module.exports = resolveCommand;
diff --git a/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which b/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which
deleted file mode 120000
index 8bc48ab0f..000000000
--- a/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../which/bin/which \ No newline at end of file
diff --git a/node_modules/execa/node_modules/cross-spawn/package.json b/node_modules/execa/node_modules/cross-spawn/package.json
deleted file mode 100644
index 7c10c9720..000000000
--- a/node_modules/execa/node_modules/cross-spawn/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "cross-spawn",
- "version": "5.1.0",
- "description": "Cross platform child_process#spawn and child_process#spawnSync",
- "main": "index.js",
- "scripts": {
- "test": "node test/prepare && mocha --bail test/test",
- "lint": "eslint '{*.js,lib/**/*.js,test/**/*.js}'"
- },
- "bugs": {
- "url": "https://github.com/IndigoUnited/node-cross-spawn/issues/"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/IndigoUnited/node-cross-spawn.git"
- },
- "files": [
- "index.js",
- "lib"
- ],
- "keywords": [
- "spawn",
- "spawnSync",
- "windows",
- "cross",
- "platform",
- "path",
- "ext",
- "path-ext",
- "path_ext",
- "shebang",
- "hashbang",
- "cmd",
- "execute"
- ],
- "author": "IndigoUnited <hello@indigounited.com> (http://indigounited.com)",
- "license": "MIT",
- "dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "devDependencies": {
- "@satazor/eslint-config": "^3.0.0",
- "eslint": "^3.0.0",
- "expect.js": "^0.3.0",
- "glob": "^7.0.0",
- "mkdirp": "^0.5.1",
- "mocha": "^3.0.2",
- "once": "^1.4.0",
- "rimraf": "^2.5.0"
- }
-}
diff --git a/node_modules/execa/package.json b/node_modules/execa/package.json
deleted file mode 100644
index 41d934ddd..000000000
--- a/node_modules/execa/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "execa",
- "version": "0.7.0",
- "description": "A better `child_process`",
- "license": "MIT",
- "repository": "sindresorhus/execa",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "maintainers": [
- {
- "name": "James Talmage",
- "email": "james@talmage.io",
- "url": "github.com/jamestalmage"
- }
- ],
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && nyc ava"
- },
- "files": [
- "index.js",
- "lib"
- ],
- "keywords": [
- "exec",
- "child",
- "process",
- "execute",
- "fork",
- "execfile",
- "spawn",
- "file",
- "shell",
- "bin",
- "binary",
- "binaries",
- "npm",
- "path",
- "local"
- ],
- "dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "cat-names": "^1.0.2",
- "coveralls": "^2.11.9",
- "delay": "^2.0.0",
- "is-running": "^2.0.0",
- "nyc": "^11.0.2",
- "tempfile": "^2.0.0",
- "xo": "*"
- },
- "nyc": {
- "reporter": [
- "text",
- "lcov"
- ],
- "exclude": [
- "**/fixtures/**",
- "**/test.js",
- "**/test/**"
- ]
- }
-}
diff --git a/node_modules/execa/readme.md b/node_modules/execa/readme.md
deleted file mode 100644
index 18c808aa6..000000000
--- a/node_modules/execa/readme.md
+++ /dev/null
@@ -1,279 +0,0 @@
-# execa [![Build Status: Linux](https://travis-ci.org/sindresorhus/execa.svg?branch=master)](https://travis-ci.org/sindresorhus/execa) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/x5ajamxtjtt93cqv/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/execa/branch/master) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/execa/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/execa?branch=master)
-
-> A better [`child_process`](https://nodejs.org/api/child_process.html)
-
-
-## Why
-
-- Promise interface.
-- [Strips EOF](https://github.com/sindresorhus/strip-eof) from the output so you don't have to `stdout.trim()`.
-- Supports [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) binaries cross-platform.
-- [Improved Windows support.](https://github.com/IndigoUnited/node-cross-spawn#why)
-- Higher max buffer. 10 MB instead of 200 KB.
-- [Executes locally installed binaries by name.](#preferlocal)
-- [Cleans up spawned processes when the parent process dies.](#cleanup)
-
-
-## Install
-
-```
-$ npm install --save execa
-```
-
-
-## Usage
-
-```js
-const execa = require('execa');
-
-execa('echo', ['unicorns']).then(result => {
- console.log(result.stdout);
- //=> 'unicorns'
-});
-
-// pipe the child process stdout to the current stdout
-execa('echo', ['unicorns']).stdout.pipe(process.stdout);
-
-execa.shell('echo unicorns').then(result => {
- console.log(result.stdout);
- //=> 'unicorns'
-});
-
-// example of catching an error
-execa.shell('exit 3').catch(error => {
- console.log(error);
- /*
- {
- message: 'Command failed: /bin/sh -c exit 3'
- killed: false,
- code: 3,
- signal: null,
- cmd: '/bin/sh -c exit 3',
- stdout: '',
- stderr: '',
- timedOut: false
- }
- */
-});
-```
-
-
-## API
-
-### execa(file, [arguments], [options])
-
-Execute a file.
-
-Think of this as a mix of `child_process.execFile` and `child_process.spawn`.
-
-Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess), which is enhanced to also be a `Promise` for a result `Object` with `stdout` and `stderr` properties.
-
-### execa.stdout(file, [arguments], [options])
-
-Same as `execa()`, but returns only `stdout`.
-
-### execa.stderr(file, [arguments], [options])
-
-Same as `execa()`, but returns only `stderr`.
-
-### execa.shell(command, [options])
-
-Execute a command through the system shell. Prefer `execa()` whenever possible, as it's both faster and safer.
-
-Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess).
-
-The `child_process` instance is enhanced to also be promise for a result object with `stdout` and `stderr` properties.
-
-### execa.sync(file, [arguments], [options])
-
-Execute a file synchronously.
-
-Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
-
-This method throws an `Error` if the command fails.
-
-### execa.shellSync(file, [options])
-
-Execute a command synchronously through the system shell.
-
-Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
-
-### options
-
-Type: `Object`
-
-#### cwd
-
-Type: `string`<br>
-Default: `process.cwd()`
-
-Current working directory of the child process.
-
-#### env
-
-Type: `Object`<br>
-Default: `process.env`
-
-Environment key-value pairs. Extends automatically from `process.env`. Set `extendEnv` to `false` if you don't want this.
-
-#### extendEnv
-
-Type: `boolean`<br>
-Default: `true`
-
-Set to `false` if you don't want to extend the environment variables when providing the `env` property.
-
-#### argv0
-
-Type: `string`
-
-Explicitly set the value of `argv[0]` sent to the child process. This will be set to `command` or `file` if not specified.
-
-#### stdio
-
-Type: `Array` `string`<br>
-Default: `pipe`
-
-Child's [stdio](https://nodejs.org/api/child_process.html#child_process_options_stdio) configuration.
-
-#### detached
-
-Type: `boolean`
-
-Prepare child to run independently of its parent process. Specific behavior [depends on the platform](https://nodejs.org/api/child_process.html#child_process_options_detached).
-
-#### uid
-
-Type: `number`
-
-Sets the user identity of the process.
-
-#### gid
-
-Type: `number`
-
-Sets the group identity of the process.
-
-#### shell
-
-Type: `boolean` `string`<br>
-Default: `false`
-
-If `true`, runs `command` inside of a shell. Uses `/bin/sh` on UNIX and `cmd.exe` on Windows. A different shell can be specified as a string. The shell should understand the `-c` switch on UNIX or `/d /s /c` on Windows.
-
-#### stripEof
-
-Type: `boolean`<br>
-Default: `true`
-
-[Strip EOF](https://github.com/sindresorhus/strip-eof) (last newline) from the output.
-
-#### preferLocal
-
-Type: `boolean`<br>
-Default: `true`
-
-Prefer locally installed binaries when looking for a binary to execute.<br>
-If you `$ npm install foo`, you can then `execa('foo')`.
-
-#### localDir
-
-Type: `string`<br>
-Default: `process.cwd()`
-
-Preferred path to find locally installed binaries in (use with `preferLocal`).
-
-#### input
-
-Type: `string` `Buffer` `stream.Readable`
-
-Write some input to the `stdin` of your binary.<br>
-Streams are not allowed when using the synchronous methods.
-
-#### reject
-
-Type: `boolean`<br>
-Default: `true`
-
-Setting this to `false` resolves the promise with the error instead of rejecting it.
-
-#### cleanup
-
-Type: `boolean`<br>
-Default: `true`
-
-Keep track of the spawned process and `kill` it when the parent process exits.
-
-#### encoding
-
-Type: `string`<br>
-Default: `utf8`
-
-Specify the character encoding used to decode the `stdout` and `stderr` output.
-
-#### timeout
-
-Type: `number`<br>
-Default: `0`
-
-If timeout is greater than `0`, the parent will send the signal identified by the `killSignal` property (the default is `SIGTERM`) if the child runs longer than timeout milliseconds.
-
-#### maxBuffer
-
-Type: `number`<br>
-Default: `10000000` (10MB)
-
-Largest amount of data in bytes allowed on `stdout` or `stderr`.
-
-#### killSignal
-
-Type: `string` `number`<br>
-Default: `SIGTERM`
-
-Signal value to be used when the spawned process will be killed.
-
-#### stdin
-
-Type: `string` `number` `Stream` `undefined` `null`<br>
-Default: `pipe`
-
-Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
-
-#### stdout
-
-Type: `string` `number` `Stream` `undefined` `null`<br>
-Default: `pipe`
-
-Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
-
-#### stderr
-
-Type: `string` `number` `Stream` `undefined` `null`<br>
-Default: `pipe`
-
-Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
-
-
-## Tips
-
-### Save and pipe output from a child process
-
-Let's say you want to show the output of a child process in real-time while also saving it to a variable.
-
-```js
-const execa = require('execa');
-const getStream = require('get-stream');
-
-const stream = execa('echo', ['foo']).stdout;
-
-stream.pipe(process.stdout);
-
-getStream(stream).then(value => {
- console.log('child output:', value);
-});
-```
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)