Socket
Socket
Sign inDemoInstall

execa

Package Overview
Dependencies
10
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.2 to 0.3.0

97

index.js

@@ -10,32 +10,59 @@ 'use strict';

module.exports = function (cmd, args, opts) {
return new Promise(function (resolve, reject) {
var parsed = crossSpawnAsync._parse(cmd, args, opts);
function handleArgs(cmd, args, opts) {
var parsed;
opts = objectAssign({
maxBuffer: TEN_MEBIBYTE,
stripEof: true,
preferLocal: true
}, parsed.options);
if (opts && opts.__winShell === true) {
delete opts.__winShell;
parsed = {
command: cmd,
args: args,
options: opts,
file: cmd,
original: cmd
};
} else {
parsed = crossSpawnAsync._parse(cmd, args, opts);
}
var handle = function (val) {
if (opts.stripEof) {
val = stripEof(val);
}
opts = objectAssign({
maxBuffer: TEN_MEBIBYTE,
stripEof: true,
preferLocal: true,
encoding: 'utf8'
}, parsed.options);
return val;
};
if (opts.preferLocal) {
opts.env = objectAssign({}, opts.env || process.env);
opts.env[pathKey] = npmRunPath({
cwd: opts.cwd,
path: opts.env[pathKey]
});
}
if (opts.preferLocal) {
opts.env = objectAssign({}, opts.env || process.env);
opts.env[pathKey] = npmRunPath({
cwd: opts.cwd,
path: opts.env[pathKey]
});
}
return {
cmd: parsed.command,
args: parsed.args,
opts: opts
};
}
var spawned = childProcess.execFile(parsed.command, parsed.args, opts, function (err, stdout, stderr) {
function handleOutput(opts, val) {
if (opts.stripEof) {
val = stripEof(val);
}
return val;
}
module.exports = function (cmd, args, opts) {
var spawned;
var promise = new Promise(function (resolve, reject) {
var parsed = handleArgs(cmd, args, opts);
spawned = childProcess.execFile(parsed.cmd, parsed.args, parsed.opts, function (err, stdout, stderr) {
if (err) {
err.stdout = stdout;
err.stderr = stderr;
err.message += stdout;
reject(err);

@@ -46,4 +73,4 @@ return;

resolve({
stdout: handle(stdout),
stderr: handle(stderr)
stdout: handleOutput(parsed.opts, stdout),
stderr: handleOutput(parsed.opts, stderr)
});

@@ -54,2 +81,7 @@ });

});
promise.kill = spawned.kill.bind(spawned);
promise.pid = spawned.pid;
return promise;
};

@@ -64,2 +96,3 @@

if (process.platform === 'win32') {
opts.__winShell = true;
file = process.env.comspec || 'cmd.exe';

@@ -80,2 +113,16 @@ args = ['/s', '/c', '"' + cmd + '"'];

module.exports.spawn = crossSpawnAsync;
module.exports.spawn = function (cmd, args, opts) {
var parsed = handleArgs(cmd, args, opts);
var spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
crossSpawnAsync._enoent.hookChildProcess(spawned, parsed);
return spawned;
};
module.exports.sync = function (cmd, args, opts) {
var parsed = handleArgs(cmd, args, opts);
var out = childProcess.execFileSync(parsed.cmd, parsed.args, parsed.opts);
return handleOutput(parsed.opts, out);
};
{
"name": "execa",
"version": "0.2.2",
"version": "0.3.0",
"description": "A better `child_process`",

@@ -16,3 +16,4 @@ "license": "MIT",

"scripts": {
"test": "xo && ava"
"test": "xo && nyc ava",
"coveralls": "nyc report --reporter=text-lcov | coveralls"
},

@@ -24,6 +25,6 @@ "files": [

"exec",
"child",
"process",
"execute",
"fork",
"child",
"process",
"execfile",

@@ -50,4 +51,7 @@ "spawn",

"cat-names": "^1.0.2",
"coveralls": "^2.11.9",
"get-stream": "^2.0.0",
"nyc": "^6.4.0",
"xo": "*"
}
}

@@ -1,2 +0,2 @@

# execa [![Build Status](https://travis-ci.org/sindresorhus/execa.svg?branch=master)](https://travis-ci.org/sindresorhus/execa)
# 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)

@@ -60,3 +60,3 @@ > A better [`child_process`](https://nodejs.org/api/child_process.html)

Execute a file directly.
Execute a file.

@@ -67,2 +67,4 @@ Same options as [`child_process.execFile`](https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback).

The promise instance has a `pid` property (ID of the child process) and a `kill` method (for sending signals to the child process).
### execa.shell(command, [options])

@@ -76,2 +78,4 @@

The promise instance has a `pid` property (ID of the child process) and a `kill` method (for sending signals to the child process).
### execa.spawn(file, [arguments], [options])

@@ -83,5 +87,13 @@

### execa.sync(file, [arguments], [options])
Execute a file synchronously.
Same options as [`child_process.execFileSync`](https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback), except that the default encoding is `utf8` instead of `buffer`.
Returns `stdout`.
### options
Additional exposed options:
Additional options:

@@ -106,2 +118,2 @@ #### stripEof

MIT © [Sindre Sorhus](http://sindresorhus.com)
MIT © [Sindre Sorhus](https://sindresorhus.com)
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc