Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

teen_process

Package Overview
Dependencies
Maintainers
5
Versions
160
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

teen_process - npm Package Compare versions

Comparing version 1.3.0 to 1.3.1

10

build/index.js

@@ -0,6 +1,6 @@

require('source-map-support').install();
'use strict';
var _Object$defineProperty = require('babel-runtime/core-js/object/define-property')['default'];
_Object$defineProperty(exports, '__esModule', {
Object.defineProperty(exports, '__esModule', {
value: true

@@ -11,7 +11,5 @@ });

require('source-map-support').install();
exports.exec = _libTeen_process.exec;
exports.spawn = _libTeen_process.spawn;
exports.SubProcess = _libTeen_process.SubProcess;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OytCQUV3QyxvQkFBb0I7O0FBRjVELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOztRQUkvQixJQUFJLG9CQUZKLElBQUk7UUFFRSxLQUFLLG9CQUZMLEtBQUs7UUFFRSxVQUFVLG9CQUZWLFVBQVUiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQnKS5pbnN0YWxsKCk7XG5cbmltcG9ydCB7IGV4ZWMsIHNwYXduLCBTdWJQcm9jZXNzIH0gZnJvbSAnLi9saWIvdGVlbl9wcm9jZXNzJztcblxuZXhwb3J0IHsgZXhlYywgc3Bhd24sIFN1YlByb2Nlc3MgfTtcblxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OytCQUV3QyxvQkFBb0I7O1FBRW5ELElBQUk7UUFBRSxLQUFLO1FBQUUsVUFBVSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCB7IGV4ZWMsIHNwYXduLCBTdWJQcm9jZXNzIH0gZnJvbSAnLi9saWIvdGVlbl9wcm9jZXNzJztcblxuZXhwb3J0IHsgZXhlYywgc3Bhd24sIFN1YlByb2Nlc3MgfTtcblxuIl19

92

build/lib/teen_process.js
'use strict';
var _get = require('babel-runtime/helpers/get')['default'];
var _inherits = require('babel-runtime/helpers/inherits')['default'];
var _get = require('babel-runtime/helpers/get')['default'];
var _createClass = require('babel-runtime/helpers/create-class')['default'];

@@ -11,4 +11,2 @@

var _Object$defineProperty = require('babel-runtime/core-js/object/define-property')['default'];
var _Object$assign = require('babel-runtime/core-js/object/assign')['default'];

@@ -22,3 +20,3 @@

_Object$defineProperty(exports, '__esModule', {
Object.defineProperty(exports, '__esModule', {
value: true

@@ -42,7 +40,7 @@ });

function exec(cmd) {
var args = arguments[1] === undefined ? [] : arguments[1];
var opts = arguments[2] === undefined ? {} : arguments[2];
var args = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
var opts = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
// get a quoted representation of the command for error strings
var rep = _shellQuote.quote([cmd].concat(args));
var rep = (0, _shellQuote.quote)([cmd].concat(args));

@@ -64,5 +62,5 @@ // extend default options; we're basically re-implementing exec's options

// the other 'spawn' options through the API
var proc = _child_process.spawn(cmd, args, { cwd: opts.cwd, env: opts.env });
var stdout = '',
stderr = '',
var proc = (0, _child_process.spawn)(cmd, args, { cwd: opts.cwd, env: opts.env });
var stdout = "",
stderr = "",
timer = null;

@@ -122,4 +120,6 @@

var SubProcess = (function (_EventEmitter) {
_inherits(SubProcess, _EventEmitter);
function SubProcess(cmd) {
var args = arguments[1] === undefined ? [] : arguments[1];
var args = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];

@@ -129,5 +129,5 @@ _classCallCheck(this, SubProcess);

_get(Object.getPrototypeOf(SubProcess.prototype), 'constructor', this).call(this);
if (!cmd) throw new Error('Command is required');
if (typeof cmd !== 'string') throw new Error('Command must be a string');
if (!(args instanceof Array)) throw new Error('Args must be an array');
if (!cmd) throw new Error("Command is required");
if (typeof cmd !== "string") throw new Error("Command must be a string");
if (!(args instanceof Array)) throw new Error("Args must be an array");
this.cmd = cmd;

@@ -138,3 +138,4 @@ this.args = args;

_inherits(SubProcess, _EventEmitter);
// spawn the subprocess and return control whenever we deem that it has fully
// "started"

@@ -144,4 +145,4 @@ _createClass(SubProcess, [{

value: function start() {
var startDetector = arguments[0] === undefined ? null : arguments[0];
var timeoutMs = arguments[1] === undefined ? null : arguments[1];
var startDetector = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
var timeoutMs = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
var startDelay;

@@ -155,3 +156,3 @@ return _regeneratorRuntime.async(function start$(context$2$0) {

// the default start detector is that we get any output
// the default start detector simply returns true when we get any output
if (startDetector === null) {

@@ -164,3 +165,3 @@ startDetector = function (stdout, stderr) {

// if the user passes a number, then we simply delay a certain amount of
// time before returning control
// time before returning control, rather than waiting for a condition
if (typeof startDetector === 'number') {

@@ -171,11 +172,8 @@ startDelay = startDetector;

// return a promise so we can wrap the async behavior
return context$2$0.abrupt('return', new _Promise(function (resolve, reject) {
if (typeof timeoutMs === 'number') {
setTimeout(function () {
reject(new Error('The process did not start in the allotted time ' + ('(' + timeoutMs + 'ms)')));
}, timeoutMs);
}
try {
_this.proc = _child_process.spawn(_this.cmd, _this.args);
// actually spawn the subproc
_this.proc = (0, _child_process.spawn)(_this.cmd, _this.args);
} catch (e) {

@@ -186,5 +184,8 @@ reject(e);

_this.proc.stderr.setEncoding('utf8');
_this.lastLinePortion = { stdout: '', stderr: '' };
_this.lastLinePortion = { stdout: "", stderr: "" };
// this function handles output that we collect from the subproc
var handleOutput = function handleOutput(data) {
// if we have a startDetector, run it on the output so we can resolve/
// reject and move on from start
try {

@@ -197,3 +198,10 @@ if (startDetector && startDetector(data.stdout, data.stderr)) {

}
// emit the actual output for whomever's listening
_this.emit('output', data.stdout, data.stderr);
// we also want to emit lines, but it's more complex since output
// comes in chunks and a line could come in two different chunks, so
// we have logic to handle that case (using this.lastLinePortion to
// remember a line that started but did not finish in the last chunk)
var _arr = ['stdout', 'stderr'];

@@ -203,3 +211,3 @@ for (var _i = 0; _i < _arr.length; _i++) {

if (!data[stream]) continue;
var lines = data[stream].split('\n');
var lines = data[stream].split("\n");
if (lines.length > 1) {

@@ -216,2 +224,3 @@ var retLines = lines.slice(0, -1);

// if we get an error spawning the proc, reject and clean up the proc
_this.proc.on('error', function (err) {

@@ -223,10 +232,13 @@ _this.proc.removeAllListeners('exit');

_this.proc.stdout.pipe(_through2['default'](function (stdout) {
_this.proc.stdout.pipe((0, _through2['default'])(function (stdout) {
handleOutput({ stdout: stdout, stderr: '' });
}));
_this.proc.stderr.pipe(_through2['default'](function (stderr) {
_this.proc.stderr.pipe((0, _through2['default'])(function (stderr) {
handleOutput({ stdout: '', stderr: stderr });
}));
// when the proc exits, we might still have a buffer of lines we were
// waiting on more chunks to complete. Go ahead and emit those, then
// re-emit the exit so a listener can handle the possibly-unexpected exit
_this.proc.on('exit', function (code, signal) {

@@ -238,2 +250,4 @@ _this.handleLastLines();

// if the user hasn't given us a startDetector, instead just resolve
// when startDelay ms have passed
if (!startDetector) {

@@ -244,2 +258,10 @@ setTimeout(function () {

}
// if the user has given us a timeout, start the clock for rejecting
// the promise if we take too long to start
if (typeof timeoutMs === "number") {
setTimeout(function () {
reject(new Error("The process did not start in the allotted time " + ('(' + timeoutMs + 'ms)')));
}, timeoutMs);
}
}));

@@ -269,4 +291,4 @@

value: function stop() {
var signal = arguments[0] === undefined ? 'SIGTERM' : arguments[0];
var timeout = arguments[1] === undefined ? 10000 : arguments[1];
var signal = arguments.length <= 0 || arguments[0] === undefined ? 'SIGTERM' : arguments[0];
var timeout = arguments.length <= 1 || arguments[1] === undefined ? 10000 : arguments[1];
return _regeneratorRuntime.async(function stop$(context$2$0) {

@@ -282,5 +304,7 @@ var _this2 = this;

throw new Error('Can\'t stop process; it\'s not currently running');
throw new Error("Can't stop process; it's not currently running");
case 2:
// make sure to emit any data in our lines buffer whenever we're done with
// the proc
this.handleLastLines();

@@ -309,2 +333,2 @@ return context$2$0.abrupt('return', new _Promise(function (resolve, reject) {

exports.SubProcess = SubProcess;
//# sourceMappingURL=data:application/json;base64,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QUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2hDLGNBQUksQ0FBQyxJQUFJLFlBQVUsTUFBTSxFQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsY0FBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDbkM7T0FDRjtLQUNGOzs7V0FFVTtVQUFDLE1BQU0sZ0NBQUcsU0FBUztVQUFFLE9BQU8sZ0NBQUcsS0FBSzs7Ozs7O2dCQUN4QyxJQUFJLENBQUMsSUFBSTs7Ozs7a0JBQ04sSUFBSSxLQUFLLENBQUMsa0RBQWdELENBQUM7OztBQUVuRSxnQkFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dEQUNoQixhQUFZLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBSztBQUN0QyxxQkFBSyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvQixxQkFBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHdCQUFVLENBQUMsWUFBTTtBQUNmLHNCQUFNLENBQUMsSUFBSSxLQUFLLGdDQUE2QixPQUFPLFFBQUssQ0FBQyxDQUFDO2VBQzVELEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDYixDQUFDOzs7Ozs7O0tBQ0g7OztTQXJIRyxVQUFVO0dBQVMsWUFBWTs7UUF3SDVCLElBQUksR0FBSixJQUFJO1FBQUUsS0FBSyxrQkF4TVgsS0FBSztRQXdNUSxVQUFVLEdBQVYsVUFBVSIsImZpbGUiOiJsaWIvdGVlbl9wcm9jZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHF1b3RlIH0gZnJvbSAnc2hlbGwtcXVvdGUnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICdldmVudHMnO1xuaW1wb3J0IHRocm91Z2ggZnJvbSAndGhyb3VnaCc7XG5jb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gZXZlbnRzO1xuXG5mdW5jdGlvbiBleGVjIChjbWQsIGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gIC8vIGdldCBhIHF1b3RlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tbWFuZCBmb3IgZXJyb3Igc3RyaW5nc1xuICBsZXQgcmVwID0gcXVvdGUoW2NtZF0uY29uY2F0KGFyZ3MpKTtcblxuICAvLyBleHRlbmQgZGVmYXVsdCBvcHRpb25zOyB3ZSdyZSBiYXNpY2FsbHkgcmUtaW1wbGVtZW50aW5nIGV4ZWMncyBvcHRpb25zXG4gIC8vIGZvciB1c2UgaGVyZSB3aXRoIHNwYXduIHVuZGVyIHRoZSBob29kXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICB0aW1lb3V0OiBudWxsLFxuICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAga2lsbFNpZ25hbDogJ1NJR1RFUk0nLFxuICAgIGN3ZDogdW5kZWZpbmVkLFxuICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgaWdub3JlT3V0cHV0OiBmYWxzZVxuICB9LCBvcHRzKTtcblxuICAvLyB0aGlzIGlzIGFuIGFzeW5jIGZ1bmN0aW9uLCBzbyByZXR1cm4gYSBwcm9taXNlXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgd2l0aCBvcHRpb25zOyB3ZSBkb24ndCBjdXJyZW50bHkgZXhwb3NlIGFueSBvZlxuICAgIC8vIHRoZSBvdGhlciAnc3Bhd24nIG9wdGlvbnMgdGhyb3VnaCB0aGUgQVBJXG4gICAgbGV0IHByb2MgPSBzcGF3bihjbWQsIGFyZ3MsIHtjd2Q6IG9wdHMuY3dkLCBlbnY6IG9wdHMuZW52fSk7XG4gICAgbGV0IHN0ZG91dCA9IFwiXCIsIHN0ZGVyciA9IFwiXCIsIHRpbWVyID0gbnVsbDtcblxuICAgIC8vIGlmIHRoZSBwcm9jZXNzIGVycm9ycyBvdXQsIHJlamVjdCB0aGUgcHJvbWlzZVxuICAgIHByb2Mub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ29tbWFuZCAnJHtyZXB9JyBlcnJvcmVkIG91dDogJHtlcnIuc3RhY2t9YCkpO1xuICAgIH0pO1xuXG4gICAgLy8ga2VlcCB0cmFjayBvZiBzdGRvdXQvc3RkZXJyIGlmIHdlIGhhdmVuJ3Qgc2FpZCBub3QgdG9cbiAgICBpZiAoIW9wdHMuaWdub3JlT3V0cHV0KSB7XG4gICAgICBwcm9jLnN0ZG91dC5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZG91dCArPSBkYXRhO1xuICAgICAgfSk7XG4gICAgICBwcm9jLnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZGVyciArPSBkYXRhO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHByb2Nlc3MgZW5kcywgZWl0aGVyIHJlc29sdmUgb3IgcmVqZWN0IHRoZSBwcm9taXNlIGJhc2VkIG9uIHRoZVxuICAgIC8vIGV4aXQgY29kZSBvZiB0aGUgcHJvY2Vzcy4gZWl0aGVyIHdheSwgYXR0YWNoIHN0ZG91dCwgc3RkZXJyLCBhbmQgY29kZS5cbiAgICAvLyBBbHNvIGNsZWFuIHVwIHRoZSB0aW1lciBpZiBpdCBleGlzdHNcbiAgICBwcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBpZiAodGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCA9IHN0ZG91dC50b1N0cmluZyhvcHRzLmVuY29kaW5nKTtcbiAgICAgIHN0ZGVyciA9IHN0ZGVyci50b1N0cmluZyhvcHRzLmVuY29kaW5nKTtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoe3N0ZG91dCwgc3RkZXJyLCBjb2RlfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZXJyID0gbmV3IEVycm9yKGBDb21tYW5kICcke3JlcH0nIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApO1xuICAgICAgICBlcnIgPSBPYmplY3QuYXNzaWduKGVyciwge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gaWYgd2Ugc2V0IGEgdGltZW91dCBvbiB0aGUgY2hpbGQgcHJvY2VzcywgY3V0IGludG8gdGhlIGV4ZWN1dGlvbiBhbmRcbiAgICAvLyByZWplY3QgaWYgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC4gQXR0YWNoIHRoZSBzdGRvdXQvc3RkZXJyIHdlIGN1cnJlbnRseVxuICAgIC8vIGhhdmUgaW4gY2FzZSBpdCdzIGhlbHBmdWwgaW4gZGVidWdnaW5nXG4gICAgaWYgKG9wdHMudGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc3Rkb3V0ID0gc3Rkb3V0LnRvU3RyaW5nKG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICBzdGRlcnIgPSBzdGRlcnIudG9TdHJpbmcob3B0cy5lbmNvZGluZyk7XG4gICAgICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoYENvbW1hbmQgJyR7cmVwfScgdGltZWQgb3V0IGFmdGVyICR7b3B0cy50aW1lb3V0fWAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBtc2ApO1xuICAgICAgICBlcnIgPSBPYmplY3QuYXNzaWduKGVyciwge3N0ZG91dCwgc3RkZXJyLCBjb2RlOiBudWxsfSk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAvLyByZWplY3QgYW5kIFRIRU4ga2lsbCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCB0aGUgaGFuZGxlcnNcbiAgICAgICAgLy8gYWJvdmVcbiAgICAgICAgcHJvYy5raWxsKG9wdHMua2lsbFNpZ25hbCk7XG4gICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmNsYXNzIFN1YlByb2Nlc3MgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoY21kLCBhcmdzID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghY21kKSB0aHJvdyBuZXcgRXJyb3IoXCJDb21tYW5kIGlzIHJlcXVpcmVkXCIpO1xuICAgIGlmICh0eXBlb2YgY21kICE9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDb21tYW5kIG11c3QgYmUgYSBzdHJpbmdcIik7XG4gICAgaWYgKCEoYXJncyBpbnN0YW5jZW9mIEFycmF5KSkgdGhyb3cgbmV3IEVycm9yKFwiQXJncyBtdXN0IGJlIGFuIGFycmF5XCIpO1xuICAgIHRoaXMuY21kID0gY21kO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0IChzdGFydERldGVjdG9yID0gbnVsbCwgdGltZW91dE1zID0gbnVsbCkge1xuICAgIGxldCBzdGFydERlbGF5ID0gMTA7XG5cbiAgICAvLyB0aGUgZGVmYXVsdCBzdGFydCBkZXRlY3RvciBpcyB0aGF0IHdlIGdldCBhbnkgb3V0cHV0XG4gICAgaWYgKHN0YXJ0RGV0ZWN0b3IgPT09IG51bGwpIHtcbiAgICAgIHN0YXJ0RGV0ZWN0b3IgPSAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBhIG51bWJlciwgdGhlbiB3ZSBzaW1wbHkgZGVsYXkgYSBjZXJ0YWluIGFtb3VudCBvZlxuICAgIC8vIHRpbWUgYmVmb3JlIHJldHVybmluZyBjb250cm9sXG4gICAgaWYgKHR5cGVvZiBzdGFydERldGVjdG9yID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhcnREZWxheSA9IHN0YXJ0RGV0ZWN0b3I7XG4gICAgICBzdGFydERldGVjdG9yID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0aW1lb3V0TXMgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRoZSBwcm9jZXNzIGRpZCBub3Qgc3RhcnQgaW4gdGhlIGFsbG90dGVkIHRpbWUgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgke3RpbWVvdXRNc31tcylgKSk7XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucHJvYyA9IHNwYXduKHRoaXMuY21kLCB0aGlzLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Muc3Rkb3V0LnNldEVuY29kaW5nKCd1dGY4Jyk7XG4gICAgICB0aGlzLnByb2Muc3RkZXJyLnNldEVuY29kaW5nKCd1dGY4Jyk7XG4gICAgICB0aGlzLmxhc3RMaW5lUG9ydGlvbiA9IHtzdGRvdXQ6IFwiXCIsIHN0ZGVycjogXCJcIn07XG5cbiAgICAgIGNvbnN0IGhhbmRsZU91dHB1dCA9IChkYXRhKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHN0YXJ0RGV0ZWN0b3IgJiYgc3RhcnREZXRlY3RvcihkYXRhLnN0ZG91dCwgZGF0YS5zdGRlcnIpKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdCgnb3V0cHV0JywgZGF0YS5zdGRvdXQsIGRhdGEuc3RkZXJyKTtcbiAgICAgICAgZm9yIChsZXQgc3RyZWFtIG9mIFsnc3Rkb3V0JywgJ3N0ZGVyciddKSB7XG4gICAgICAgICAgaWYgKCFkYXRhW3N0cmVhbV0pIGNvbnRpbnVlO1xuICAgICAgICAgIGxldCBsaW5lcyA9IGRhdGFbc3RyZWFtXS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGV0IHJldExpbmVzID0gbGluZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgcmV0TGluZXNbMF0gPSB0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dICsgcmV0TGluZXNbMF07XG4gICAgICAgICAgICB0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLmVtaXQoYGxpbmVzLSR7c3RyZWFtfWAsIHJldExpbmVzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXSArPSBsaW5lc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRoaXMucHJvYy5vbignZXJyb3InLCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnByb2MucmVtb3ZlQWxsTGlzdGVuZXJzKCdleGl0Jyk7XG4gICAgICAgIHRoaXMucHJvYy5raWxsKCdTSUdJTlQnKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wcm9jLnN0ZG91dC5waXBlKHRocm91Z2goc3Rkb3V0ID0+IHtcbiAgICAgICAgaGFuZGxlT3V0cHV0KHtzdGRvdXQsIHN0ZGVycjogJyd9KTtcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5wcm9jLnN0ZGVyci5waXBlKHRocm91Z2goc3RkZXJyID0+IHtcbiAgICAgICAgaGFuZGxlT3V0cHV0KHtzdGRvdXQ6ICcnLCBzdGRlcnJ9KTtcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxhc3RMaW5lcygpO1xuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCBjb2RlLCBzaWduYWwpO1xuICAgICAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghc3RhcnREZXRlY3Rvcikge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sIHN0YXJ0RGVsYXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlTGFzdExpbmVzICgpIHtcbiAgICBmb3IgKGxldCBzdHJlYW0gb2YgWydzdGRvdXQnLCAnc3RkZXJyJ10pIHtcbiAgICAgIGlmICh0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dKSB7XG4gICAgICAgIHRoaXMuZW1pdChgbGluZXMtJHtzdHJlYW19YCwgW3RoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV1dKTtcbiAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3AgKHNpZ25hbCA9ICdTSUdURVJNJywgdGltZW91dCA9IDEwMDAwKSB7XG4gICAgaWYgKCF0aGlzLnByb2MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0b3AgcHJvY2VzczsgaXQncyBub3QgY3VycmVudGx5IHJ1bm5pbmdcIik7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlTGFzdExpbmVzKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucHJvYy5vbignY2xvc2UnLCByZXNvbHZlKTtcbiAgICAgIHRoaXMucHJvYy5raWxsKHNpZ25hbCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgUHJvY2VzcyBkaWRuJ3QgZW5kIGFmdGVyICR7dGltZW91dH1tc2ApKTtcbiAgICAgIH0sIHRpbWVvdXQpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7IGV4ZWMsIHNwYXduLCBTdWJQcm9jZXNzIH07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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ZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2hDLGNBQUksQ0FBQyxJQUFJLFlBQVUsTUFBTSxFQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsY0FBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDbkM7T0FDRjtLQUNGOzs7V0FFVTtVQUFDLE1BQU0seURBQUcsU0FBUztVQUFFLE9BQU8seURBQUcsS0FBSzs7Ozs7O2dCQUN4QyxJQUFJLENBQUMsSUFBSTs7Ozs7a0JBQ04sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUM7Ozs7O0FBSW5FLGdCQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0RBQ2hCLGFBQVksVUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFLO0FBQ3RDLHFCQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLHFCQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkIsd0JBQVUsQ0FBQyxZQUFNO0FBQ2Ysc0JBQU0sQ0FBQyxJQUFJLEtBQUssZ0NBQTZCLE9BQU8sUUFBSyxDQUFDLENBQUM7ZUFDNUQsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNiLENBQUM7Ozs7Ozs7S0FDSDs7O1NBOUlHLFVBQVU7R0FBUyxZQUFZOztRQWlKNUIsSUFBSSxHQUFKLElBQUk7UUFBRSxLQUFLO1FBQUUsVUFBVSxHQUFWLFVBQVUiLCJmaWxlIjoibGliL3RlZW5fcHJvY2Vzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBxdW90ZSB9IGZyb20gJ3NoZWxsLXF1b3RlJztcbmltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcbmltcG9ydCB0aHJvdWdoIGZyb20gJ3Rocm91Z2gnO1xuY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IGV2ZW50cztcblxuZnVuY3Rpb24gZXhlYyAoY21kLCBhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICAvLyBnZXQgYSBxdW90ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbW1hbmQgZm9yIGVycm9yIHN0cmluZ3NcbiAgbGV0IHJlcCA9IHF1b3RlKFtjbWRdLmNvbmNhdChhcmdzKSk7XG5cbiAgLy8gZXh0ZW5kIGRlZmF1bHQgb3B0aW9uczsgd2UncmUgYmFzaWNhbGx5IHJlLWltcGxlbWVudGluZyBleGVjJ3Mgb3B0aW9uc1xuICAvLyBmb3IgdXNlIGhlcmUgd2l0aCBzcGF3biB1bmRlciB0aGUgaG9vZFxuICBvcHRzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgdGltZW91dDogbnVsbCxcbiAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgIGtpbGxTaWduYWw6ICdTSUdURVJNJyxcbiAgICBjd2Q6IHVuZGVmaW5lZCxcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIGlnbm9yZU91dHB1dDogZmFsc2VcbiAgfSwgb3B0cyk7XG5cbiAgLy8gdGhpcyBpcyBhbiBhc3luYyBmdW5jdGlvbiwgc28gcmV0dXJuIGEgcHJvbWlzZVxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIHdpdGggb3B0aW9uczsgd2UgZG9uJ3QgY3VycmVudGx5IGV4cG9zZSBhbnkgb2ZcbiAgICAvLyB0aGUgb3RoZXIgJ3NwYXduJyBvcHRpb25zIHRocm91Z2ggdGhlIEFQSVxuICAgIGxldCBwcm9jID0gc3Bhd24oY21kLCBhcmdzLCB7Y3dkOiBvcHRzLmN3ZCwgZW52OiBvcHRzLmVudn0pO1xuICAgIGxldCBzdGRvdXQgPSBcIlwiLCBzdGRlcnIgPSBcIlwiLCB0aW1lciA9IG51bGw7XG5cbiAgICAvLyBpZiB0aGUgcHJvY2VzcyBlcnJvcnMgb3V0LCByZWplY3QgdGhlIHByb21pc2VcbiAgICBwcm9jLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgJyR7cmVwfScgZXJyb3JlZCBvdXQ6ICR7ZXJyLnN0YWNrfWApKTtcbiAgICB9KTtcblxuICAgIC8vIGtlZXAgdHJhY2sgb2Ygc3Rkb3V0L3N0ZGVyciBpZiB3ZSBoYXZlbid0IHNhaWQgbm90IHRvXG4gICAgaWYgKCFvcHRzLmlnbm9yZU91dHB1dCkge1xuICAgICAgcHJvYy5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICBzdGRvdXQgKz0gZGF0YTtcbiAgICAgIH0pO1xuICAgICAgcHJvYy5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICBzdGRlcnIgKz0gZGF0YTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBwcm9jZXNzIGVuZHMsIGVpdGhlciByZXNvbHZlIG9yIHJlamVjdCB0aGUgcHJvbWlzZSBiYXNlZCBvbiB0aGVcbiAgICAvLyBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MuIGVpdGhlciB3YXksIGF0dGFjaCBzdGRvdXQsIHN0ZGVyciwgYW5kIGNvZGUuXG4gICAgLy8gQWxzbyBjbGVhbiB1cCB0aGUgdGltZXIgaWYgaXQgZXhpc3RzXG4gICAgcHJvYy5vbignY2xvc2UnLCAoY29kZSkgPT4ge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB9XG4gICAgICBzdGRvdXQgPSBzdGRvdXQudG9TdHJpbmcob3B0cy5lbmNvZGluZyk7XG4gICAgICBzdGRlcnIgPSBzdGRlcnIudG9TdHJpbmcob3B0cy5lbmNvZGluZyk7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKHtzdGRvdXQsIHN0ZGVyciwgY29kZX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGVyciA9IG5ldyBFcnJvcihgQ29tbWFuZCAnJHtyZXB9JyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKTtcbiAgICAgICAgZXJyID0gT2JqZWN0LmFzc2lnbihlcnIsIHtzdGRvdXQsIHN0ZGVyciwgY29kZX0pO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIHNldCBhIHRpbWVvdXQgb24gdGhlIGNoaWxkIHByb2Nlc3MsIGN1dCBpbnRvIHRoZSBleGVjdXRpb24gYW5kXG4gICAgLy8gcmVqZWN0IGlmIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuIEF0dGFjaCB0aGUgc3Rkb3V0L3N0ZGVyciB3ZSBjdXJyZW50bHlcbiAgICAvLyBoYXZlIGluIGNhc2UgaXQncyBoZWxwZnVsIGluIGRlYnVnZ2luZ1xuICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHN0ZG91dCA9IHN0ZG91dC50b1N0cmluZyhvcHRzLmVuY29kaW5nKTtcbiAgICAgICAgc3RkZXJyID0gc3RkZXJyLnRvU3RyaW5nKG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICBsZXQgZXJyID0gbmV3IEVycm9yKGBDb21tYW5kICcke3JlcH0nIHRpbWVkIG91dCBhZnRlciAke29wdHMudGltZW91dH1gICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbXNgKTtcbiAgICAgICAgZXJyID0gT2JqZWN0LmFzc2lnbihlcnIsIHtzdGRvdXQsIHN0ZGVyciwgY29kZTogbnVsbH0pO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgLy8gcmVqZWN0IGFuZCBUSEVOIGtpbGwgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgICAgIC8vIGFib3ZlXG4gICAgICAgIHByb2Mua2lsbChvcHRzLmtpbGxTaWduYWwpO1xuICAgICAgfSwgb3B0cy50aW1lb3V0KTtcbiAgICB9XG4gIH0pO1xufVxuXG5jbGFzcyBTdWJQcm9jZXNzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKGNtZCwgYXJncyA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWNtZCkgdGhyb3cgbmV3IEVycm9yKFwiQ29tbWFuZCBpcyByZXF1aXJlZFwiKTtcbiAgICBpZiAodHlwZW9mIGNtZCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiQ29tbWFuZCBtdXN0IGJlIGEgc3RyaW5nXCIpO1xuICAgIGlmICghKGFyZ3MgaW5zdGFuY2VvZiBBcnJheSkpIHRocm93IG5ldyBFcnJvcihcIkFyZ3MgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICB0aGlzLmNtZCA9IGNtZDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICAvLyBzcGF3biB0aGUgc3VicHJvY2VzcyBhbmQgcmV0dXJuIGNvbnRyb2wgd2hlbmV2ZXIgd2UgZGVlbSB0aGF0IGl0IGhhcyBmdWxseVxuICAvLyBcInN0YXJ0ZWRcIlxuICBhc3luYyBzdGFydCAoc3RhcnREZXRlY3RvciA9IG51bGwsIHRpbWVvdXRNcyA9IG51bGwpIHtcbiAgICBsZXQgc3RhcnREZWxheSA9IDEwO1xuXG4gICAgLy8gdGhlIGRlZmF1bHQgc3RhcnQgZGV0ZWN0b3Igc2ltcGx5IHJldHVybnMgdHJ1ZSB3aGVuIHdlIGdldCBhbnkgb3V0cHV0XG4gICAgaWYgKHN0YXJ0RGV0ZWN0b3IgPT09IG51bGwpIHtcbiAgICAgIHN0YXJ0RGV0ZWN0b3IgPSAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBhIG51bWJlciwgdGhlbiB3ZSBzaW1wbHkgZGVsYXkgYSBjZXJ0YWluIGFtb3VudCBvZlxuICAgIC8vIHRpbWUgYmVmb3JlIHJldHVybmluZyBjb250cm9sLCByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciBhIGNvbmRpdGlvblxuICAgIGlmICh0eXBlb2Ygc3RhcnREZXRlY3RvciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YXJ0RGVsYXkgPSBzdGFydERldGVjdG9yO1xuICAgICAgc3RhcnREZXRlY3RvciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIGEgcHJvbWlzZSBzbyB3ZSBjYW4gd3JhcCB0aGUgYXN5bmMgYmVoYXZpb3JcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBhY3R1YWxseSBzcGF3biB0aGUgc3VicHJvY1xuICAgICAgICB0aGlzLnByb2MgPSBzcGF3bih0aGlzLmNtZCwgdGhpcy5hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jLnN0ZG91dC5zZXRFbmNvZGluZygndXRmOCcpO1xuICAgICAgdGhpcy5wcm9jLnN0ZGVyci5zZXRFbmNvZGluZygndXRmOCcpO1xuICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb24gPSB7c3Rkb3V0OiBcIlwiLCBzdGRlcnI6IFwiXCJ9O1xuXG4gICAgICAvLyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgb3V0cHV0IHRoYXQgd2UgY29sbGVjdCBmcm9tIHRoZSBzdWJwcm9jXG4gICAgICBjb25zdCBoYW5kbGVPdXRwdXQgPSAoZGF0YSkgPT4ge1xuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgc3RhcnREZXRlY3RvciwgcnVuIGl0IG9uIHRoZSBvdXRwdXQgc28gd2UgY2FuIHJlc29sdmUvXG4gICAgICAgIC8vIHJlamVjdCBhbmQgbW92ZSBvbiBmcm9tIHN0YXJ0XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHN0YXJ0RGV0ZWN0b3IgJiYgc3RhcnREZXRlY3RvcihkYXRhLnN0ZG91dCwgZGF0YS5zdGRlcnIpKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCB0aGUgYWN0dWFsIG91dHB1dCBmb3Igd2hvbWV2ZXIncyBsaXN0ZW5pbmdcbiAgICAgICAgdGhpcy5lbWl0KCdvdXRwdXQnLCBkYXRhLnN0ZG91dCwgZGF0YS5zdGRlcnIpO1xuXG4gICAgICAgIC8vIHdlIGFsc28gd2FudCB0byBlbWl0IGxpbmVzLCBidXQgaXQncyBtb3JlIGNvbXBsZXggc2luY2Ugb3V0cHV0XG4gICAgICAgIC8vIGNvbWVzIGluIGNodW5rcyBhbmQgYSBsaW5lIGNvdWxkIGNvbWUgaW4gdHdvIGRpZmZlcmVudCBjaHVua3MsIHNvXG4gICAgICAgIC8vIHdlIGhhdmUgbG9naWMgdG8gaGFuZGxlIHRoYXQgY2FzZSAodXNpbmcgdGhpcy5sYXN0TGluZVBvcnRpb24gdG9cbiAgICAgICAgLy8gcmVtZW1iZXIgYSBsaW5lIHRoYXQgc3RhcnRlZCBidXQgZGlkIG5vdCBmaW5pc2ggaW4gdGhlIGxhc3QgY2h1bmspXG4gICAgICAgIGZvciAobGV0IHN0cmVhbSBvZiBbJ3N0ZG91dCcsICdzdGRlcnInXSkge1xuICAgICAgICAgIGlmICghZGF0YVtzdHJlYW1dKSBjb250aW51ZTtcbiAgICAgICAgICBsZXQgbGluZXMgPSBkYXRhW3N0cmVhbV0uc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCByZXRMaW5lcyA9IGxpbmVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIHJldExpbmVzWzBdID0gdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXSArIHJldExpbmVzWzBdO1xuICAgICAgICAgICAgdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdGhpcy5lbWl0KGBsaW5lcy0ke3N0cmVhbX1gLCByZXRMaW5lcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV0gKz0gbGluZXNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvLyBpZiB3ZSBnZXQgYW4gZXJyb3Igc3Bhd25pbmcgdGhlIHByb2MsIHJlamVjdCBhbmQgY2xlYW4gdXAgdGhlIHByb2NcbiAgICAgIHRoaXMucHJvYy5vbignZXJyb3InLCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnByb2MucmVtb3ZlQWxsTGlzdGVuZXJzKCdleGl0Jyk7XG4gICAgICAgIHRoaXMucHJvYy5raWxsKCdTSUdJTlQnKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wcm9jLnN0ZG91dC5waXBlKHRocm91Z2goc3Rkb3V0ID0+IHtcbiAgICAgICAgaGFuZGxlT3V0cHV0KHtzdGRvdXQsIHN0ZGVycjogJyd9KTtcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5wcm9jLnN0ZGVyci5waXBlKHRocm91Z2goc3RkZXJyID0+IHtcbiAgICAgICAgaGFuZGxlT3V0cHV0KHtzdGRvdXQ6ICcnLCBzdGRlcnJ9KTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gd2hlbiB0aGUgcHJvYyBleGl0cywgd2UgbWlnaHQgc3RpbGwgaGF2ZSBhIGJ1ZmZlciBvZiBsaW5lcyB3ZSB3ZXJlXG4gICAgICAvLyB3YWl0aW5nIG9uIG1vcmUgY2h1bmtzIHRvIGNvbXBsZXRlLiBHbyBhaGVhZCBhbmQgZW1pdCB0aG9zZSwgdGhlblxuICAgICAgLy8gcmUtZW1pdCB0aGUgZXhpdCBzbyBhIGxpc3RlbmVyIGNhbiBoYW5kbGUgdGhlIHBvc3NpYmx5LXVuZXhwZWN0ZWQgZXhpdFxuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxhc3RMaW5lcygpO1xuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCBjb2RlLCBzaWduYWwpO1xuICAgICAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGlmIHRoZSB1c2VyIGhhc24ndCBnaXZlbiB1cyBhIHN0YXJ0RGV0ZWN0b3IsIGluc3RlYWQganVzdCByZXNvbHZlXG4gICAgICAvLyB3aGVuIHN0YXJ0RGVsYXkgbXMgaGF2ZSBwYXNzZWRcbiAgICAgIGlmICghc3RhcnREZXRlY3Rvcikge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sIHN0YXJ0RGVsYXkpO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgdXNlciBoYXMgZ2l2ZW4gdXMgYSB0aW1lb3V0LCBzdGFydCB0aGUgY2xvY2sgZm9yIHJlamVjdGluZ1xuICAgICAgLy8gdGhlIHByb21pc2UgaWYgd2UgdGFrZSB0b28gbG9uZyB0byBzdGFydFxuICAgICAgaWYgKHR5cGVvZiB0aW1lb3V0TXMgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRoZSBwcm9jZXNzIGRpZCBub3Qgc3RhcnQgaW4gdGhlIGFsbG90dGVkIHRpbWUgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgke3RpbWVvdXRNc31tcylgKSk7XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVMYXN0TGluZXMgKCkge1xuICAgIGZvciAobGV0IHN0cmVhbSBvZiBbJ3N0ZG91dCcsICdzdGRlcnInXSkge1xuICAgICAgaWYgKHRoaXMubGFzdExpbmVQb3J0aW9uW3N0cmVhbV0pIHtcbiAgICAgICAgdGhpcy5lbWl0KGBsaW5lcy0ke3N0cmVhbX1gLCBbdGhpcy5sYXN0TGluZVBvcnRpb25bc3RyZWFtXV0pO1xuICAgICAgICB0aGlzLmxhc3RMaW5lUG9ydGlvbltzdHJlYW1dID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcCAoc2lnbmFsID0gJ1NJR1RFUk0nLCB0aW1lb3V0ID0gMTAwMDApIHtcbiAgICBpZiAoIXRoaXMucHJvYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3Qgc3RvcCBwcm9jZXNzOyBpdCdzIG5vdCBjdXJyZW50bHkgcnVubmluZ1wiKTtcbiAgICB9XG4gICAgLy8gbWFrZSBzdXJlIHRvIGVtaXQgYW55IGRhdGEgaW4gb3VyIGxpbmVzIGJ1ZmZlciB3aGVuZXZlciB3ZSdyZSBkb25lIHdpdGhcbiAgICAvLyB0aGUgcHJvY1xuICAgIHRoaXMuaGFuZGxlTGFzdExpbmVzKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucHJvYy5vbignY2xvc2UnLCByZXNvbHZlKTtcbiAgICAgIHRoaXMucHJvYy5raWxsKHNpZ25hbCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgUHJvY2VzcyBkaWRuJ3QgZW5kIGFmdGVyICR7dGltZW91dH1tc2ApKTtcbiAgICAgIH0sIHRpbWVvdXQpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7IGV4ZWMsIHNwYXduLCBTdWJQcm9jZXNzIH07XG4iXX0=

@@ -0,1 +1,3 @@

require('source-map-support').install();
'use strict';

@@ -27,4 +29,2 @@

require('source-map-support').install();
var should = _chai2['default'].should();

@@ -43,3 +43,3 @@ _chai2['default'].use(_chaiAsPromised2['default']);

context$2$0.next = 4;
return _.exec(cmd, args);
return _regeneratorRuntime.awrap((0, _.exec)(cmd, args));

@@ -52,4 +52,4 @@ case 4:

stdout.should.contain('exec-specs.js');
stderr.should.equal('');
stdout.should.contain("exec-specs.js");
stderr.should.equal("");
code.should.equal(0);

@@ -64,12 +64,12 @@

it('should throw an error with a bad exit code', function callee$1$1() {
it('should throw an error with a bad exit code', function callee$1$0() {
var cmd, err;
return _regeneratorRuntime.async(function callee$1$1$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('bad_exit.sh');
cmd = (0, _helpers.getFixture)("bad_exit.sh");
err = undefined;
context$2$0.prev = 2;
context$2$0.next = 5;
return _.exec(cmd);
return _regeneratorRuntime.awrap((0, _.exec)(cmd));

@@ -88,4 +88,4 @@ case 5:

should.exist(err);
err.stdout.trim().should.equal('foo');
err.stderr.trim().should.equal('bar');
err.stdout.trim().should.equal("foo");
err.stderr.trim().should.equal("bar");
err.code.should.equal(1);

@@ -100,13 +100,13 @@

it('should work with spaces in arguments', function callee$1$2() {
it('should work with spaces in arguments', function callee$1$0() {
var cmd, echo1, echo2, _ref2, stdout, stderr, code;
return _regeneratorRuntime.async(function callee$1$2$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('echo.sh');
echo1 = 'my name is bob';
echo2 = 'lol';
cmd = (0, _helpers.getFixture)("echo.sh");
echo1 = "my name is bob";
echo2 = "lol";
context$2$0.next = 5;
return _.exec(cmd, [echo1, echo2]);
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [echo1, echo2]));

@@ -130,13 +130,13 @@ case 5:

it('should work with backslashes in arguments', function callee$1$3() {
it('should work with backslashes in arguments', function callee$1$0() {
var cmd, echo1, echo2, _ref3, stdout, stderr, code;
return _regeneratorRuntime.async(function callee$1$3$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('echo.sh');
echo1 = 'my\\ name\\ is\\ bob';
echo2 = 'lol';
cmd = (0, _helpers.getFixture)("echo.sh");
echo1 = "my\\ name\\ is\\ bob";
echo2 = "lol";
context$2$0.next = 5;
return _.exec(cmd, [echo1, echo2]);
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [echo1, echo2]));

@@ -160,13 +160,13 @@ case 5:

it('should work with spaces in commands', function callee$1$4() {
it('should work with spaces in commands', function callee$1$0() {
var cmd, echo1, echo2, _ref4, stdout, stderr, code;
return _regeneratorRuntime.async(function callee$1$4$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('echo with space.sh');
echo1 = 'my name is bob';
echo2 = 'lol';
cmd = (0, _helpers.getFixture)("echo with space.sh");
echo1 = "my name is bob";
echo2 = "lol";
context$2$0.next = 5;
return _.exec(cmd, [echo1, echo2]);
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [echo1, echo2]));

@@ -190,14 +190,14 @@ case 5:

it('should respect cwd', function callee$1$5() {
it('should respect cwd', function callee$1$0() {
var cmd, echo1, echo2, cwd, _ref5, stdout, stderr, code;
return _regeneratorRuntime.async(function callee$1$5$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = './echo.sh';
echo1 = 'my name is bob';
echo2 = 'lol';
cwd = _path2['default'].dirname(_helpers.getFixture('echo.sh'));
cmd = "./echo.sh";
echo1 = "my name is bob";
echo2 = "lol";
cwd = _path2['default'].dirname((0, _helpers.getFixture)("echo.sh"));
context$2$0.next = 6;
return _.exec(cmd, [echo1, echo2], { cwd: cwd });
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [echo1, echo2], { cwd: cwd }));

@@ -221,12 +221,12 @@ case 6:

it('should respect env', function callee$1$6() {
it('should respect env', function callee$1$0() {
var cmd, env, _ref6, stdout, code;
return _regeneratorRuntime.async(function callee$1$6$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('env.sh');
env = { FOO: 'lolol' };
cmd = (0, _helpers.getFixture)("env.sh");
env = { FOO: "lolol" };
context$2$0.next = 4;
return _.exec(cmd, [], { env: env });
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [], { env: env }));

@@ -238,3 +238,3 @@ case 4:

stdout.trim().should.equal('' + env.FOO + ' ' + env.FOO);
stdout.trim().should.equal(env.FOO + ' ' + env.FOO);
code.should.equal(0);

@@ -249,13 +249,13 @@

it('should allow a timeout parameter', function callee$1$7() {
it('should allow a timeout parameter', function callee$1$0() {
var cmd, args, err;
return _regeneratorRuntime.async(function callee$1$7$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = 'sleep';
args = ['10'];
cmd = "sleep";
args = ["10"];
err = undefined;
context$2$0.prev = 3;
context$2$0.next = 6;
return _.exec(cmd, args, { timeout: 500 });
return _regeneratorRuntime.awrap((0, _.exec)(cmd, args, { timeout: 500 }));

@@ -268,9 +268,9 @@ case 6:

context$2$0.prev = 8;
context$2$0.t1 = context$2$0['catch'](3);
context$2$0.t0 = context$2$0['catch'](3);
err = context$2$0.t1;
err = context$2$0.t0;
case 11:
should.exist(err);
err.message.should.contain('timed out');
err.message.should.contain("timed out");
err.message.should.contain(cmd);

@@ -285,10 +285,10 @@

it('should allow large amounts of output', function callee$1$8() {
it('should allow large amounts of output', function callee$1$0() {
var _ref7, stdout;
return _regeneratorRuntime.async(function callee$1$8$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _.exec(_helpers.getFixture('bigbuffer.js'));
return _regeneratorRuntime.awrap((0, _.exec)((0, _helpers.getFixture)("bigbuffer.js")));

@@ -308,12 +308,12 @@ case 2:

it('should ignore output if requested', function callee$1$9() {
it('should ignore output if requested', function callee$1$0() {
var cmd, echo1, _ref8, stdout, code;
return _regeneratorRuntime.async(function callee$1$9$(context$2$0) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
cmd = _helpers.getFixture('echo.sh');
echo1 = 'my name is bob';
cmd = (0, _helpers.getFixture)("echo.sh");
echo1 = "my name is bob";
context$2$0.next = 4;
return _.exec(cmd, [echo1], { ignoreOutput: true });
return _regeneratorRuntime.awrap((0, _.exec)(cmd, [echo1], { ignoreOutput: true }));

@@ -325,3 +325,3 @@ case 4:

stdout.should.equal('');
stdout.should.equal("");
code.should.equal(0);

@@ -336,2 +336,2 @@

});
//# sourceMappingURL=data:application/json;base64,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TSxFQUFFLElBQUk7Ozs7O0FBRmIsYUFBRyxHQUFHLFNBbEdMLFVBQVUsQ0FrR00sU0FBUyxDQUFDO0FBQzNCLGVBQUssR0FBRyxnQkFBZ0I7O2lCQUNELEVBeEd0QixJQUFJLENBd0d1QixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsQ0FBQzs7OztBQUE5RCxnQkFBTSxTQUFOLE1BQU07QUFBRSxjQUFJLFNBQUosSUFBSTs7QUFDakIsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLGNBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7Ozs7O0dBQ3RCLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2V4ZWMtc3BlY3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCdzb3VyY2UtbWFwLXN1cHBvcnQnKS5pbnN0YWxsKCk7XG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0ICdtb2NoYXdhaXQnO1xuaW1wb3J0IHsgZ2V0Rml4dHVyZSB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IHNob3VsZCA9IGNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmRlc2NyaWJlKCdleGVjJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIHdvcmsgd2l0aCBhcmd1bWVudHMgbGlrZSBzcGF3bicsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gJ2xzJztcbiAgICBsZXQgYXJncyA9IFtfX2Rpcm5hbWVdO1xuICAgIGxldCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9ID0gYXdhaXQgZXhlYyhjbWQsIGFyZ3MpO1xuICAgIHN0ZG91dC5zaG91bGQuY29udGFpbihcImV4ZWMtc3BlY3MuanNcIik7XG4gICAgc3RkZXJyLnNob3VsZC5lcXVhbChcIlwiKTtcbiAgICBjb2RlLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aXRoIGEgYmFkIGV4aXQgY29kZScsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gZ2V0Rml4dHVyZShcImJhZF9leGl0LnNoXCIpO1xuICAgIGxldCBlcnI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWMoY21kKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnIgPSBlO1xuICAgIH1cbiAgICBzaG91bGQuZXhpc3QoZXJyKTtcbiAgICBlcnIuc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoXCJmb29cIik7XG4gICAgZXJyLnN0ZGVyci50cmltKCkuc2hvdWxkLmVxdWFsKFwiYmFyXCIpO1xuICAgIGVyci5jb2RlLnNob3VsZC5lcXVhbCgxKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3b3JrIHdpdGggc3BhY2VzIGluIGFyZ3VtZW50cycsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gZ2V0Rml4dHVyZShcImVjaG8uc2hcIik7XG4gICAgbGV0IGVjaG8xID0gXCJteSBuYW1lIGlzIGJvYlwiO1xuICAgIGxldCBlY2hvMiA9IFwibG9sXCI7XG4gICAgbGV0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBleGVjKGNtZCwgW2VjaG8xLCBlY2hvMl0pO1xuICAgIHN0ZG91dC50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8xKTtcbiAgICBzdGRlcnIudHJpbSgpLnNob3VsZC5lcXVhbChlY2hvMik7XG4gICAgY29kZS5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd29yayB3aXRoIGJhY2tzbGFzaGVzIGluIGFyZ3VtZW50cycsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gZ2V0Rml4dHVyZShcImVjaG8uc2hcIik7XG4gICAgbGV0IGVjaG8xID0gXCJteVxcXFwgbmFtZVxcXFwgaXNcXFxcIGJvYlwiO1xuICAgIGxldCBlY2hvMiA9IFwibG9sXCI7XG4gICAgbGV0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBleGVjKGNtZCwgW2VjaG8xLCBlY2hvMl0pO1xuICAgIHN0ZG91dC50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8xKTtcbiAgICBzdGRlcnIudHJpbSgpLnNob3VsZC5lcXVhbChlY2hvMik7XG4gICAgY29kZS5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd29yayB3aXRoIHNwYWNlcyBpbiBjb21tYW5kcycsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gZ2V0Rml4dHVyZShcImVjaG8gd2l0aCBzcGFjZS5zaFwiKTtcbiAgICBsZXQgZWNobzEgPSBcIm15IG5hbWUgaXMgYm9iXCI7XG4gICAgbGV0IGVjaG8yID0gXCJsb2xcIjtcbiAgICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoY21kLCBbZWNobzEsIGVjaG8yXSk7XG4gICAgc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoZWNobzEpO1xuICAgIHN0ZGVyci50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8yKTtcbiAgICBjb2RlLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IGN3ZCcsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gXCIuL2VjaG8uc2hcIjtcbiAgICBsZXQgZWNobzEgPSBcIm15IG5hbWUgaXMgYm9iXCI7XG4gICAgbGV0IGVjaG8yID0gXCJsb2xcIjtcbiAgICBsZXQgY3dkID0gcGF0aC5kaXJuYW1lKGdldEZpeHR1cmUoXCJlY2hvLnNoXCIpKTtcbiAgICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoY21kLCBbZWNobzEsIGVjaG8yXSwge2N3ZH0pO1xuICAgIHN0ZG91dC50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8xKTtcbiAgICBzdGRlcnIudHJpbSgpLnNob3VsZC5lcXVhbChlY2hvMik7XG4gICAgY29kZS5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVzcGVjdCBlbnYnLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IGdldEZpeHR1cmUoXCJlbnYuc2hcIik7XG4gICAgbGV0IGVudiA9IHtGT086IFwibG9sb2xcIn07XG4gICAgbGV0IHtzdGRvdXQsIGNvZGV9ID0gYXdhaXQgZXhlYyhjbWQsIFtdLCB7ZW52fSk7XG4gICAgc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoYCR7ZW52LkZPT30gJHtlbnYuRk9PfWApO1xuICAgIGNvZGUuc2hvdWxkLmVxdWFsKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGEgdGltZW91dCBwYXJhbWV0ZXInLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IFwic2xlZXBcIjtcbiAgICBsZXQgYXJncyA9IFtcIjEwXCJdO1xuICAgIGxldCBlcnI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWMoY21kLCBhcmdzLCB7dGltZW91dDogNTAwfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyID0gZTtcbiAgICB9XG4gICAgc2hvdWxkLmV4aXN0KGVycik7XG4gICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oXCJ0aW1lZCBvdXRcIik7XG4gICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLmNvbnRhaW4oY21kKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBsYXJnZSBhbW91bnRzIG9mIG91dHB1dCcsIGFzeW5jICgpID0+IHtcbiAgICBsZXQge3N0ZG91dH0gPSBhd2FpdCBleGVjKGdldEZpeHR1cmUoXCJiaWdidWZmZXIuanNcIikpO1xuICAgIHN0ZG91dC5sZW5ndGguc2hvdWxkLmJlLmFib3ZlKDUxMiAqIDEwMjQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGlnbm9yZSBvdXRwdXQgaWYgcmVxdWVzdGVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBnZXRGaXh0dXJlKFwiZWNoby5zaFwiKTtcbiAgICBsZXQgZWNobzEgPSBcIm15IG5hbWUgaXMgYm9iXCI7XG4gICAgbGV0IHtzdGRvdXQsIGNvZGV9ID0gYXdhaXQgZXhlYyhjbWQsIFtlY2hvMV0sIHtpZ25vcmVPdXRwdXQ6IHRydWV9KTtcbiAgICBzdGRvdXQuc2hvdWxkLmVxdWFsKFwiXCIpO1xuICAgIGNvZGUuc2hvdWxkLmVxdWFsKDApO1xuICB9KTtcbn0pO1xuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,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QUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7Ozs7O0dBQ3RCLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2V4ZWMtc3BlY3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgJ21vY2hhd2FpdCc7XG5pbXBvcnQgeyBnZXRGaXh0dXJlIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3Qgc2hvdWxkID0gY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxuZGVzY3JpYmUoJ2V4ZWMnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgd29yayB3aXRoIGFyZ3VtZW50cyBsaWtlIHNwYXduJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSAnbHMnO1xuICAgIGxldCBhcmdzID0gW19fZGlybmFtZV07XG4gICAgbGV0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBleGVjKGNtZCwgYXJncyk7XG4gICAgc3Rkb3V0LnNob3VsZC5jb250YWluKFwiZXhlYy1zcGVjcy5qc1wiKTtcbiAgICBzdGRlcnIuc2hvdWxkLmVxdWFsKFwiXCIpO1xuICAgIGNvZGUuc2hvdWxkLmVxdWFsKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdpdGggYSBiYWQgZXhpdCBjb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBnZXRGaXh0dXJlKFwiYmFkX2V4aXQuc2hcIik7XG4gICAgbGV0IGVycjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyhjbWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyciA9IGU7XG4gICAgfVxuICAgIHNob3VsZC5leGlzdChlcnIpO1xuICAgIGVyci5zdGRvdXQudHJpbSgpLnNob3VsZC5lcXVhbChcImZvb1wiKTtcbiAgICBlcnIuc3RkZXJyLnRyaW0oKS5zaG91bGQuZXF1YWwoXCJiYXJcIik7XG4gICAgZXJyLmNvZGUuc2hvdWxkLmVxdWFsKDEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdvcmsgd2l0aCBzcGFjZXMgaW4gYXJndW1lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBnZXRGaXh0dXJlKFwiZWNoby5zaFwiKTtcbiAgICBsZXQgZWNobzEgPSBcIm15IG5hbWUgaXMgYm9iXCI7XG4gICAgbGV0IGVjaG8yID0gXCJsb2xcIjtcbiAgICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoY21kLCBbZWNobzEsIGVjaG8yXSk7XG4gICAgc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoZWNobzEpO1xuICAgIHN0ZGVyci50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8yKTtcbiAgICBjb2RlLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3b3JrIHdpdGggYmFja3NsYXNoZXMgaW4gYXJndW1lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBnZXRGaXh0dXJlKFwiZWNoby5zaFwiKTtcbiAgICBsZXQgZWNobzEgPSBcIm15XFxcXCBuYW1lXFxcXCBpc1xcXFwgYm9iXCI7XG4gICAgbGV0IGVjaG8yID0gXCJsb2xcIjtcbiAgICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoY21kLCBbZWNobzEsIGVjaG8yXSk7XG4gICAgc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoZWNobzEpO1xuICAgIHN0ZGVyci50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8yKTtcbiAgICBjb2RlLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3b3JrIHdpdGggc3BhY2VzIGluIGNvbW1hbmRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBnZXRGaXh0dXJlKFwiZWNobyB3aXRoIHNwYWNlLnNoXCIpO1xuICAgIGxldCBlY2hvMSA9IFwibXkgbmFtZSBpcyBib2JcIjtcbiAgICBsZXQgZWNobzIgPSBcImxvbFwiO1xuICAgIGxldCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9ID0gYXdhaXQgZXhlYyhjbWQsIFtlY2hvMSwgZWNobzJdKTtcbiAgICBzdGRvdXQudHJpbSgpLnNob3VsZC5lcXVhbChlY2hvMSk7XG4gICAgc3RkZXJyLnRyaW0oKS5zaG91bGQuZXF1YWwoZWNobzIpO1xuICAgIGNvZGUuc2hvdWxkLmVxdWFsKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlc3BlY3QgY3dkJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBcIi4vZWNoby5zaFwiO1xuICAgIGxldCBlY2hvMSA9IFwibXkgbmFtZSBpcyBib2JcIjtcbiAgICBsZXQgZWNobzIgPSBcImxvbFwiO1xuICAgIGxldCBjd2QgPSBwYXRoLmRpcm5hbWUoZ2V0Rml4dHVyZShcImVjaG8uc2hcIikpO1xuICAgIGxldCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9ID0gYXdhaXQgZXhlYyhjbWQsIFtlY2hvMSwgZWNobzJdLCB7Y3dkfSk7XG4gICAgc3Rkb3V0LnRyaW0oKS5zaG91bGQuZXF1YWwoZWNobzEpO1xuICAgIHN0ZGVyci50cmltKCkuc2hvdWxkLmVxdWFsKGVjaG8yKTtcbiAgICBjb2RlLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IGVudicsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gZ2V0Rml4dHVyZShcImVudi5zaFwiKTtcbiAgICBsZXQgZW52ID0ge0ZPTzogXCJsb2xvbFwifTtcbiAgICBsZXQge3N0ZG91dCwgY29kZX0gPSBhd2FpdCBleGVjKGNtZCwgW10sIHtlbnZ9KTtcbiAgICBzdGRvdXQudHJpbSgpLnNob3VsZC5lcXVhbChgJHtlbnYuRk9PfSAke2Vudi5GT099YCk7XG4gICAgY29kZS5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgYSB0aW1lb3V0IHBhcmFtZXRlcicsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgY21kID0gXCJzbGVlcFwiO1xuICAgIGxldCBhcmdzID0gW1wiMTBcIl07XG4gICAgbGV0IGVycjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyhjbWQsIGFyZ3MsIHt0aW1lb3V0OiA1MDB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnIgPSBlO1xuICAgIH1cbiAgICBzaG91bGQuZXhpc3QoZXJyKTtcbiAgICBlcnIubWVzc2FnZS5zaG91bGQuY29udGFpbihcInRpbWVkIG91dFwiKTtcbiAgICBlcnIubWVzc2FnZS5zaG91bGQuY29udGFpbihjbWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGxhcmdlIGFtb3VudHMgb2Ygb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoZ2V0Rml4dHVyZShcImJpZ2J1ZmZlci5qc1wiKSk7XG4gICAgc3Rkb3V0Lmxlbmd0aC5zaG91bGQuYmUuYWJvdmUoNTEyICogMTAyNCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaWdub3JlIG91dHB1dCBpZiByZXF1ZXN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IGdldEZpeHR1cmUoXCJlY2hvLnNoXCIpO1xuICAgIGxldCBlY2hvMSA9IFwibXkgbmFtZSBpcyBib2JcIjtcbiAgICBsZXQge3N0ZG91dCwgY29kZX0gPSBhd2FpdCBleGVjKGNtZCwgW2VjaG8xXSwge2lnbm9yZU91dHB1dDogdHJ1ZX0pO1xuICAgIHN0ZG91dC5zaG91bGQuZXF1YWwoXCJcIik7XG4gICAgY29kZS5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xufSk7XG5cbiJdfQ==
"use strict";
var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
_Object$defineProperty(exports, "__esModule", {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _path = require("path");
var _path = require('path');

@@ -20,2 +18,2 @@ var _path2 = _interopRequireDefault(_path);

exports.getFixture = getFixture;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O29CQUFpQixNQUFNOzs7O0FBRXZCLFNBQVMsVUFBVSxDQUFFLEdBQUcsRUFBRTtBQUN4QixTQUFPLGtCQUFLLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQ3JFOztRQUVRLFVBQVUsR0FBVixVQUFVIiwiZmlsZSI6InRlc3QvaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5mdW5jdGlvbiBnZXRGaXh0dXJlIChmaXgpIHtcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcInRlc3RcIiwgXCJmaXh0dXJlc1wiLCBmaXgpO1xufVxuXG5leHBvcnQgeyBnZXRGaXh0dXJlIH07XG5cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztvQkFBaUIsTUFBTTs7OztBQUV2QixTQUFTLFVBQVUsQ0FBRSxHQUFHLEVBQUU7QUFDeEIsU0FBTyxrQkFBSyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUNyRTs7UUFFUSxVQUFVLEdBQVYsVUFBVSIsImZpbGUiOiJ0ZXN0L2hlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuZnVuY3Rpb24gZ2V0Rml4dHVyZSAoZml4KSB7XG4gIHJldHVybiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJ0ZXN0XCIsIFwiZml4dHVyZXNcIiwgZml4KTtcbn1cblxuZXhwb3J0IHsgZ2V0Rml4dHVyZSB9O1xuXG4iXX0=

@@ -0,7 +1,9 @@

require('source-map-support').install();
'use strict';
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _Promise = require('babel-runtime/core-js/promise')['default'];
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];

@@ -33,4 +35,2 @@

require('source-map-support').install();
var should = _chai2['default'].should();

@@ -77,3 +77,3 @@ _chai2['default'].use(_chaiAsPromised2['default']);

context$3$0.next = 3;
return s.start().should.eventually.be.rejectedWith(/ENOENT/);
return _regeneratorRuntime.awrap(s.start().should.eventually.be.rejectedWith(/ENOENT/));

@@ -86,5 +86,5 @@ case 3:

});
it('should have a default startDetector of waiting for output', function callee$2$1() {
it('should have a default startDetector of waiting for output', function callee$2$0() {
var hasData, s;
return _regeneratorRuntime.async(function callee$2$1$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -101,3 +101,3 @@ case 0:

context$3$0.next = 5;
return s.start();
return _regeneratorRuntime.awrap(s.start());

@@ -113,9 +113,9 @@ case 5:

});
it('should interpret a numeric startDetector as a start timeout', function callee$2$2() {
it('should interpret a numeric startDetector as a start timeout', function callee$2$0() {
var hasData, s;
return _regeneratorRuntime.async(function callee$2$2$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {
case 0:
hasData = false;
s = new _.SubProcess(_helpers.getFixture('sleepyproc.sh'), ['ls']);
s = new _.SubProcess((0, _helpers.getFixture)('sleepyproc.sh'), ['ls']);

@@ -128,3 +128,3 @@ s.on('output', function (stdout) {

context$3$0.next = 5;
return s.start(0);
return _regeneratorRuntime.awrap(s.start(0));

@@ -134,3 +134,3 @@ case 5:

context$3$0.next = 8;
return _bluebird2['default'].delay(1200);
return _regeneratorRuntime.awrap(_bluebird2['default'].delay(1200));

@@ -146,5 +146,5 @@ case 8:

});
it('should fail even with a start timeout of 0 when command is bad', function callee$2$3() {
it('should fail even with a start timeout of 0 when command is bad', function callee$2$0() {
var s;
return _regeneratorRuntime.async(function callee$2$3$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -154,3 +154,3 @@ case 0:

context$3$0.next = 3;
return s.start(0).should.eventually.be.rejectedWith(/ENOENT/);
return _regeneratorRuntime.awrap(s.start(0).should.eventually.be.rejectedWith(/ENOENT/));

@@ -163,5 +163,5 @@ case 3:

});
it('should be able to provide a custom startDetector function', function callee$2$4() {
it('should be able to provide a custom startDetector function', function callee$2$0() {
var sd, hasData, s;
return _regeneratorRuntime.async(function callee$2$4$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -182,3 +182,3 @@ case 0:

context$3$0.next = 6;
return s.start(sd);
return _regeneratorRuntime.awrap(s.start(sd));

@@ -194,5 +194,5 @@ case 6:

});
it('should pass on custom errors from startDetector', function callee$2$5() {
it('should pass on custom errors from startDetector', function callee$2$0() {
var sd, s;
return _regeneratorRuntime.async(function callee$2$5$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -206,3 +206,3 @@ case 0:

context$3$0.next = 4;
return s.start(sd).should.eventually.be.rejectedWith(/foo/);
return _regeneratorRuntime.awrap(s.start(sd).should.eventually.be.rejectedWith(/foo/));

@@ -215,5 +215,5 @@ case 4:

});
it('should time out starts that take longer than specified ms', function callee$2$6() {
it('should time out starts that take longer than specified ms', function callee$2$0() {
var sd, s, start;
return _regeneratorRuntime.async(function callee$2$6$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -228,3 +228,3 @@ case 0:

context$3$0.next = 5;
return s.start(sd, 500).should.eventually.be.rejectedWith(/did not start.+time/i);
return _regeneratorRuntime.awrap(s.start(sd, 500).should.eventually.be.rejectedWith(/did not start.+time/i));

@@ -251,7 +251,7 @@ case 5:

context$3$0.next = 2;
return new _Promise(function callee$3$0(resolve) {
return _regeneratorRuntime.awrap(new _Promise(function callee$3$0(resolve) {
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
subproc = new _.SubProcess(_helpers.getFixture('sleepyproc.sh'), ['ls', _path2['default'].resolve(__dirname)]);
subproc = new _.SubProcess((0, _helpers.getFixture)('sleepyproc.sh'), ['ls', _path2['default'].resolve(__dirname)]);
subproc.on('output', function (stdout) {

@@ -263,3 +263,3 @@ if (stdout && stdout.indexOf('subproc-specs') !== -1) {

context$4$0.next = 4;
return subproc.start();
return _regeneratorRuntime.awrap(subproc.start());

@@ -271,15 +271,15 @@ case 4:

}, null, _this2);
});
}));
case 2:
context$3$0.next = 4;
return subproc.stop();
return _regeneratorRuntime.awrap(subproc.stop());
case 4:
context$3$0.next = 6;
return new _Promise(function callee$3$1(resolve) {
return _regeneratorRuntime.async(function callee$3$1$(context$4$0) {
return _regeneratorRuntime.awrap(new _Promise(function callee$3$0(resolve) {
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
subproc = new _.SubProcess(_helpers.getFixture('echo.sh'), ['foo', 'bar']);
subproc = new _.SubProcess((0, _helpers.getFixture)('echo.sh'), ['foo', 'bar']);
subproc.on('output', function (stdout, stderr) {

@@ -291,3 +291,3 @@ if (stderr && stderr.indexOf('bar') !== -1) {

context$4$0.next = 4;
return subproc.start();
return _regeneratorRuntime.awrap(subproc.start());

@@ -299,7 +299,7 @@ case 4:

}, null, _this2);
});
}));
case 6:
context$3$0.next = 8;
return subproc.stop();
return _regeneratorRuntime.awrap(subproc.stop());

@@ -313,5 +313,5 @@ case 8:

it('should get output by lines', function callee$2$1() {
it('should get output by lines', function callee$2$0() {
var lines;
return _regeneratorRuntime.async(function callee$2$1$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -326,7 +326,7 @@ case 0:

context$3$0.next = 5;
return subproc.start(0);
return _regeneratorRuntime.awrap(subproc.start(0));
case 5:
context$3$0.next = 7;
return _bluebird2['default'].delay(50);
return _regeneratorRuntime.awrap(_bluebird2['default'].delay(50));

@@ -358,3 +358,3 @@ case 7:

context$4$0.next = 3;
return subproc.start();
return _regeneratorRuntime.awrap(subproc.start());

@@ -371,3 +371,3 @@ case 3:

context$4$0.next = 6;
return subproc.stop('SIGHUP');
return _regeneratorRuntime.awrap(subproc.stop('SIGHUP'));

@@ -388,14 +388,14 @@ case 6:

it('should time out if stop doesnt complete fast enough', function callee$2$1() {
it('should time out if stop doesnt complete fast enough', function callee$2$0() {
var subproc;
return _regeneratorRuntime.async(function callee$2$1$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {
case 0:
subproc = new _.SubProcess(_helpers.getFixture('traphup.sh'), ['tail', '-f', _path2['default'].resolve(__filename)]);
subproc = new _.SubProcess((0, _helpers.getFixture)('traphup.sh'), ['tail', '-f', _path2['default'].resolve(__filename)]);
context$3$0.next = 3;
return subproc.start();
return _regeneratorRuntime.awrap(subproc.start());
case 3:
context$3$0.next = 5;
return subproc.stop('SIGHUP', 10).should.eventually.be.rejectedWith(/Process didn't end/);
return _regeneratorRuntime.awrap(subproc.stop('SIGHUP', 10).should.eventually.be.rejectedWith(/Process didn't end/));

@@ -409,5 +409,5 @@ case 5:

it('should error if there is no process to stop', function callee$2$2() {
it('should error if there is no process to stop', function callee$2$0() {
var subproc;
return _regeneratorRuntime.async(function callee$2$2$(context$3$0) {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {

@@ -417,15 +417,15 @@ case 0:

context$3$0.next = 3;
return subproc.stop().should.eventually.be.rejectedWith(/Can't stop/);
return _regeneratorRuntime.awrap(subproc.stop().should.eventually.be.rejectedWith(/Can't stop/));
case 3:
context$3$0.next = 5;
return subproc.start();
return _regeneratorRuntime.awrap(subproc.start());
case 5:
context$3$0.next = 7;
return _bluebird2['default'].delay(10);
return _regeneratorRuntime.awrap(_bluebird2['default'].delay(10));
case 7:
context$3$0.next = 9;
return subproc.stop().should.eventually.be.rejectedWith(/Can't stop/);
return _regeneratorRuntime.awrap(subproc.stop().should.eventually.be.rejectedWith(/Can't stop/));

@@ -440,2 +440,2 @@ case 9:

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3Qvc3VicHJvYy1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3dCQUVjLFVBQVU7Ozs7b0JBQ1AsTUFBTTs7OztnQkFDSSxPQUFPOztvQkFDakIsTUFBTTs7Ozs4QkFDSSxrQkFBa0I7Ozs7UUFDdEMsV0FBVzs7dUJBQ1MsV0FBVzs7QUFSdEMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7O0FBVXhDLElBQU0sTUFBTSxHQUFHLGtCQUFLLE1BQU0sRUFBRSxDQUFDO0FBQzdCLGtCQUFLLEdBQUcsNkJBQWdCLENBQUM7O0FBRXpCLFFBQVEsQ0FBQyxZQUFZLEVBQUUsWUFBTTtBQUMzQixJQUFFLENBQUMsd0RBQXdELEVBQUUsWUFBTTtBQUNqRSxVQUFNLFNBQU0sQ0FBQyxZQUFNO0FBQ2pCLFlBWkcsVUFBVSxFQVlHLENBQUM7S0FDbEIsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0FBQ0gsSUFBRSxDQUFDLHlEQUF5RCxFQUFFLFlBQU07QUFDbEUsVUFBTSxTQUFNLENBQUMsWUFBTTtBQUNqQixZQWpCRyxVQUFVLENBaUJFLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7S0FDN0IsQ0FBQyxDQUFDO0FBQ0gsVUFBTSxTQUFNLENBQUMsWUFBTTtBQUNqQixZQXBCRyxVQUFVLENBb0JFLENBQUMsQ0FBQyxDQUFDO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztBQUNILElBQUUsQ0FBQyxvREFBb0QsRUFBRSxZQUFNO0FBQzdELFVBQU0sU0FBTSxDQUFDLFlBQU07QUFDakIsWUF6QkcsVUFBVSxDQXlCRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDN0IsQ0FBQyxDQUFDO0FBQ0gsVUFBTSxTQUFNLENBQUMsWUFBTTtBQUNqQixZQTVCRyxVQUFVLENBNEJFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6QixDQUFDLENBQUM7QUFDSCxVQUFNLFNBQU0sQ0FB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LFFBQVEsQ0FBQzs7Ozs7OzthQUM3QixDQUFDOzs7Ozs7O0tBQ0gsQ0FBQyxDQUFDOztBQUVILE1BQUUsQ0FBQyxxREFBcUQsRUFBRTtVQUNwRCxPQUFPOzs7O0FBQVAsbUJBQU8sR0FBRyxNQTVKWCxVQUFVLENBNEpnQixTQXhKMUIsVUFBVSxDQXdKMkIsWUFBWSxDQUFDLEVBQ3hCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxrQkFBSyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzs7bUJBQ2hFLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Ozs7bUJBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQzs7Ozs7OztLQUNqRSxDQUFDLENBQUM7O0FBRUgsTUFBRSxDQUFDLDZDQUE2QyxFQUFFO1VBQzVDLE9BQU87Ozs7QUFBUCxtQkFBTyxHQUFHLE1BcEtYLFVBQVUsQ0FvS2dCLElBQUksQ0FBQzs7bUJBQzVCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDOzs7O21CQUM5RCxPQUFPLENBQUMsS0FBSyxFQUFFOzs7O21CQUNmLHNCQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Ozs7bUJBQ1gsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Ozs7Ozs7S0FDckUsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0NBQ0osQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3Qvc3VicHJvYy1zcGVjcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydCcpLmluc3RhbGwoKTtcblxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgJ21vY2hhd2FpdCc7XG5pbXBvcnQgeyBnZXRGaXh0dXJlIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3Qgc2hvdWxkID0gY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxuZGVzY3JpYmUoJ1N1YlByb2Nlc3MnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgaW5pdGlhbGl6ZWQgd2l0aG91dCBhIGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgc2hvdWxkLnRocm93KCgpID0+IHtcbiAgICAgIG5ldyBTdWJQcm9jZXNzKCk7XG4gICAgfSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIGluaXRpYWxpemVkIHdpdGggYSBiYWQgY29tbWFuZCcsICgpID0+IHtcbiAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgbmV3IFN1YlByb2Nlc3Moe2xvbDogdHJ1ZX0pO1xuICAgIH0pO1xuICAgIHNob3VsZC50aHJvdygoKSA9PiB7XG4gICAgICBuZXcgU3ViUHJvY2VzcygxKTtcbiAgICB9KTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgaW5pdGlhbGl6ZWQgd2l0aCBiYWQgYXJncycsICgpID0+IHtcbiAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgbmV3IFN1YlByb2Nlc3MoJ2xzJywgJ2ZvbycpO1xuICAgIH0pO1xuICAgIHNob3VsZC50aHJvdygoKSA9PiB7XG4gICAgICBuZXcgU3ViUHJvY2VzcygnbHMnLCAxKTtcbiAgICB9KTtcbiAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgbmV3IFN1YlByb2Nlc3MoJ2xzJywge30pO1xuICAgIH0pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBkZWZhdWx0IGFyZ3MgbGlzdCB0byBbXScsICgpID0+IHtcbiAgICBsZXQgeCA9IG5ldyBTdWJQcm9jZXNzKCdscycpO1xuICAgIHguYXJncy5zaG91bGQuZXFsKFtdKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNzdGFydCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIGNvbW1hbmQgZmFpbHMgb24gc3RhcnR1cCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzID0gbmV3IFN1YlByb2Nlc3MoJ2JsYXJnaW1hcmcnKTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0VOT0VOVC8pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgaGF2ZSBhIGRlZmF1bHQgc3RhcnREZXRlY3RvciBvZiB3YWl0aW5nIGZvciBvdXRwdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgaGFzRGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IHMgPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICAgIHMub24oJ291dHB1dCcsIChzdGRvdXQpID0+IHtcbiAgICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICAgIGhhc0RhdGEgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoKTtcbiAgICAgIGhhc0RhdGEuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBpbnRlcnByZXQgYSBudW1lcmljIHN0YXJ0RGV0ZWN0b3IgYXMgYSBzdGFydCB0aW1lb3V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGhhc0RhdGEgPSBmYWxzZTtcbiAgICAgIGxldCBzID0gbmV3IFN1YlByb2Nlc3MoZ2V0Rml4dHVyZSgnc2xlZXB5cHJvYy5zaCcpLCBbJ2xzJ10pO1xuICAgICAgcy5vbignb3V0cHV0JywgKHN0ZG91dCkgPT4ge1xuICAgICAgICBpZiAoc3Rkb3V0KSB7XG4gICAgICAgICAgaGFzRGF0YSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgcy5zdGFydCgwKTtcbiAgICAgIGhhc0RhdGEuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgYXdhaXQgQi5kZWxheSgxMjAwKTtcbiAgICAgIGhhc0RhdGEuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGV2ZW4gd2l0aCBhIHN0YXJ0IHRpbWVvdXQgb2YgMCB3aGVuIGNvbW1hbmQgaXMgYmFkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHMgPSBuZXcgU3ViUHJvY2VzcygnYmxhcmdpbWFyZycpO1xuICAgICAgYXdhaXQgcy5zdGFydCgwKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0VOT0VOVC8pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBwcm92aWRlIGEgY3VzdG9tIHN0YXJ0RGV0ZWN0b3IgZnVuY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgc2QgPSAoc3Rkb3V0KSA9PiB7IHJldHVybiBzdGRvdXQ7IH07XG4gICAgICBsZXQgaGFzRGF0YSA9IGZhbHNlO1xuICAgICAgbGV0IHMgPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICAgIHMub24oJ291dHB1dCcsIChzdGRvdXQpID0+IHtcbiAgICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICAgIGhhc0RhdGEgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoc2QpO1xuICAgICAgaGFzRGF0YS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHBhc3Mgb24gY3VzdG9tIGVycm9ycyBmcm9tIHN0YXJ0RGV0ZWN0b3InLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgc2QgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcignZm9vJyk7IH07XG4gICAgICBsZXQgcyA9IG5ldyBTdWJQcm9jZXNzKCdscycpO1xuICAgICAgYXdhaXQgcy5zdGFydChzZCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9mb28vKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRpbWUgb3V0IHN0YXJ0cyB0aGF0IHRha2UgbG9uZ2VyIHRoYW4gc3BlY2lmaWVkIG1zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHNkID0gKHN0ZG91dCkgPT4geyByZXR1cm4gc3Rkb3V0LmluZGV4T2YoJ25vdGhlcmUnKSAhPT0gLTE7IH07XG4gICAgICBsZXQgcyA9IG5ldyBTdWJQcm9jZXNzKCdscycpO1xuICAgICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoc2QsIDUwMCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9kaWQgbm90IHN0YXJ0Lit0aW1lL2kpO1xuICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmJlbG93KDYwMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsaXN0ZW5pbmcgZm9yIGRhdGEnLCAoKSA9PiB7XG4gICAgbGV0IHN1YnByb2M7XG4gICAgaXQoJ3Nob3VsZCBnZXQgb3V0cHV0IGFzIHBhcmFtcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHN1YnByb2MgPSBuZXcgU3ViUHJvY2VzcyhnZXRGaXh0dXJlKCdzbGVlcHlwcm9jLnNoJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xzJywgcGF0aC5yZXNvbHZlKF9fZGlybmFtZSldKTtcbiAgICAgICAgc3VicHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCkgPT4ge1xuICAgICAgICAgIGlmIChzdGRvdXQgJiYgc3Rkb3V0LmluZGV4T2YoJ3N1YnByb2Mtc3BlY3MnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzdWJwcm9jLnN0YXJ0KCk7XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHN1YnByb2Muc3RvcCgpO1xuXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgICBzdWJwcm9jID0gbmV3IFN1YlByb2Nlc3MoZ2V0Rml4dHVyZSgnZWNoby5zaCcpLCBbJ2ZvbycsICdiYXInXSk7XG4gICAgICAgIHN1YnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgIGlmIChzdGRlcnIgJiYgc3RkZXJyLmluZGV4T2YoJ2JhcicpICE9PSAtMSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHN1YnByb2Muc3RhcnQoKTtcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgc3VicHJvYy5zdG9wKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCBvdXRwdXQgYnkgbGluZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBzdWJwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ2xzJywgW3BhdGgucmVzb2x2ZShfX2Rpcm5hbWUpXSk7XG4gICAgICBsZXQgbGluZXMgPSBbXTtcbiAgICAgIHN1YnByb2Mub24oJ2xpbmVzLXN0ZG91dCcsIChuZXdMaW5lcykgPT4ge1xuICAgICAgICBsaW5lcyA9IGxpbmVzLmNvbmNhdChuZXdMaW5lcyk7XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHN1YnByb2Muc3RhcnQoMCk7XG4gICAgICBhd2FpdCBCLmRlbGF5KDUwKTtcbiAgICAgIGxpbmVzLnNob3VsZC5lcWwoWydleGVjLXNwZWNzLmpzJywgJ2ZpeHR1cmVzJywgJ2hlbHBlcnMuanMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YnByb2Mtc3BlY3MuanMnXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjc3RvcCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNlbmQgdGhlIHJpZ2h0IHNpZ25hbCB0byBzdG9wIGEgcHJvYycsIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBzdWJwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgcGF0aC5yZXNvbHZlKF9fZmlsZW5hbWUpXSk7XG4gICAgICAgIGF3YWl0IHN1YnByb2Muc3RhcnQoKTtcbiAgICAgICAgc3VicHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2lnbmFsLnNob3VsZC5lcXVhbCgnU0lHSFVQJyk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHN1YnByb2Muc3RvcCgnU0lHSFVQJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGltZSBvdXQgaWYgc3RvcCBkb2VzbnQgY29tcGxldGUgZmFzdCBlbm91Z2gnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgc3VicHJvYyA9IG5ldyBTdWJQcm9jZXNzKGdldEZpeHR1cmUoJ3RyYXBodXAuc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0YWlsJywgJy1mJywgcGF0aC5yZXNvbHZlKF9fZmlsZW5hbWUpXSk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0YXJ0KCk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0b3AoJ1NJR0hVUCcsIDEwKVxuICAgICAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9Qcm9jZXNzIGRpZG4ndCBlbmQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXJyb3IgaWYgdGhlcmUgaXMgbm8gcHJvY2VzcyB0byBzdG9wJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHN1YnByb2MgPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICAgIGF3YWl0IHN1YnByb2Muc3RvcCgpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvQ2FuJ3Qgc3RvcC8pO1xuICAgICAgYXdhaXQgc3VicHJvYy5zdGFydCgpO1xuICAgICAgYXdhaXQgQi5kZWxheSgxMCk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0b3AoKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0Nhbid0IHN0b3AvKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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TSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDOzs7Ozs7O0tBQ2pFLENBQUMsQ0FBQzs7QUFFSCxNQUFFLENBQUMsNkNBQTZDLEVBQUU7VUFDNUMsT0FBTzs7OztBQUFQLG1CQUFPLEdBQUcsaUJBQWUsSUFBSSxDQUFDOzs2Q0FDNUIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Ozs7NkNBQzlELE9BQU8sQ0FBQyxLQUFLLEVBQUU7Ozs7NkNBQ2Ysc0JBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQzs7Ozs2Q0FDWCxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQzs7Ozs7OztLQUNyRSxDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9zdWJwcm9jLXNwZWNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0ICdtb2NoYXdhaXQnO1xuaW1wb3J0IHsgZ2V0Rml4dHVyZSB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IHNob3VsZCA9IGNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmRlc2NyaWJlKCdTdWJQcm9jZXNzJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIGluaXRpYWxpemVkIHdpdGhvdXQgYSBjb21tYW5kJywgKCkgPT4ge1xuICAgIHNob3VsZC50aHJvdygoKSA9PiB7XG4gICAgICBuZXcgU3ViUHJvY2VzcygpO1xuICAgIH0pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBpbml0aWFsaXplZCB3aXRoIGEgYmFkIGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgc2hvdWxkLnRocm93KCgpID0+IHtcbiAgICAgIG5ldyBTdWJQcm9jZXNzKHtsb2w6IHRydWV9KTtcbiAgICB9KTtcbiAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgbmV3IFN1YlByb2Nlc3MoMSk7XG4gICAgfSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIGluaXRpYWxpemVkIHdpdGggYmFkIGFyZ3MnLCAoKSA9PiB7XG4gICAgc2hvdWxkLnRocm93KCgpID0+IHtcbiAgICAgIG5ldyBTdWJQcm9jZXNzKCdscycsICdmb28nKTtcbiAgICB9KTtcbiAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgbmV3IFN1YlByb2Nlc3MoJ2xzJywgMSk7XG4gICAgfSk7XG4gICAgc2hvdWxkLnRocm93KCgpID0+IHtcbiAgICAgIG5ldyBTdWJQcm9jZXNzKCdscycsIHt9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgZGVmYXVsdCBhcmdzIGxpc3QgdG8gW10nLCAoKSA9PiB7XG4gICAgbGV0IHggPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICB4LmFyZ3Muc2hvdWxkLmVxbChbXSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjc3RhcnQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBjb21tYW5kIGZhaWxzIG9uIHN0YXJ0dXAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgcyA9IG5ldyBTdWJQcm9jZXNzKCdibGFyZ2ltYXJnJyk7XG4gICAgICBhd2FpdCBzLnN0YXJ0KCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9FTk9FTlQvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGhhdmUgYSBkZWZhdWx0IHN0YXJ0RGV0ZWN0b3Igb2Ygd2FpdGluZyBmb3Igb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGhhc0RhdGEgPSBmYWxzZTtcbiAgICAgIGxldCBzID0gbmV3IFN1YlByb2Nlc3MoJ2xzJyk7XG4gICAgICBzLm9uKCdvdXRwdXQnLCAoc3Rkb3V0KSA9PiB7XG4gICAgICAgIGlmIChzdGRvdXQpIHtcbiAgICAgICAgICBoYXNEYXRhID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBhd2FpdCBzLnN0YXJ0KCk7XG4gICAgICBoYXNEYXRhLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgaW50ZXJwcmV0IGEgbnVtZXJpYyBzdGFydERldGVjdG9yIGFzIGEgc3RhcnQgdGltZW91dCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBoYXNEYXRhID0gZmFsc2U7XG4gICAgICBsZXQgcyA9IG5ldyBTdWJQcm9jZXNzKGdldEZpeHR1cmUoJ3NsZWVweXByb2Muc2gnKSwgWydscyddKTtcbiAgICAgIHMub24oJ291dHB1dCcsIChzdGRvdXQpID0+IHtcbiAgICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICAgIGhhc0RhdGEgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoMCk7XG4gICAgICBoYXNEYXRhLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoMTIwMCk7XG4gICAgICBoYXNEYXRhLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmFpbCBldmVuIHdpdGggYSBzdGFydCB0aW1lb3V0IG9mIDAgd2hlbiBjb21tYW5kIGlzIGJhZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzID0gbmV3IFN1YlByb2Nlc3MoJ2JsYXJnaW1hcmcnKTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoMCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9FTk9FTlQvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gcHJvdmlkZSBhIGN1c3RvbSBzdGFydERldGVjdG9yIGZ1bmN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHNkID0gKHN0ZG91dCkgPT4geyByZXR1cm4gc3Rkb3V0OyB9O1xuICAgICAgbGV0IGhhc0RhdGEgPSBmYWxzZTtcbiAgICAgIGxldCBzID0gbmV3IFN1YlByb2Nlc3MoJ2xzJyk7XG4gICAgICBzLm9uKCdvdXRwdXQnLCAoc3Rkb3V0KSA9PiB7XG4gICAgICAgIGlmIChzdGRvdXQpIHtcbiAgICAgICAgICBoYXNEYXRhID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBhd2FpdCBzLnN0YXJ0KHNkKTtcbiAgICAgIGhhc0RhdGEuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBwYXNzIG9uIGN1c3RvbSBlcnJvcnMgZnJvbSBzdGFydERldGVjdG9yJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHNkID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ2ZvbycpOyB9O1xuICAgICAgbGV0IHMgPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICAgIGF3YWl0IHMuc3RhcnQoc2QpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvZm9vLyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0aW1lIG91dCBzdGFydHMgdGhhdCB0YWtlIGxvbmdlciB0aGFuIHNwZWNpZmllZCBtcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzZCA9IChzdGRvdXQpID0+IHsgcmV0dXJuIHN0ZG91dC5pbmRleE9mKCdub3RoZXJlJykgIT09IC0xOyB9O1xuICAgICAgbGV0IHMgPSBuZXcgU3ViUHJvY2VzcygnbHMnKTtcbiAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICBhd2FpdCBzLnN0YXJ0KHNkLCA1MDApLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvZGlkIG5vdCBzdGFydC4rdGltZS9pKTtcbiAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5iZWxvdyg2MDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbGlzdGVuaW5nIGZvciBkYXRhJywgKCkgPT4ge1xuICAgIGxldCBzdWJwcm9jO1xuICAgIGl0KCdzaG91bGQgZ2V0IG91dHB1dCBhcyBwYXJhbXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgICBzdWJwcm9jID0gbmV3IFN1YlByb2Nlc3MoZ2V0Rml4dHVyZSgnc2xlZXB5cHJvYy5zaCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydscycsIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUpXSk7XG4gICAgICAgIHN1YnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQpID0+IHtcbiAgICAgICAgICBpZiAoc3Rkb3V0ICYmIHN0ZG91dC5pbmRleE9mKCdzdWJwcm9jLXNwZWNzJykgIT09IC0xKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgc3VicHJvYy5zdGFydCgpO1xuICAgICAgfSk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0b3AoKTtcblxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgICAgc3VicHJvYyA9IG5ldyBTdWJQcm9jZXNzKGdldEZpeHR1cmUoJ2VjaG8uc2gnKSwgWydmb28nLCAnYmFyJ10pO1xuICAgICAgICBzdWJwcm9jLm9uKCdvdXRwdXQnLCAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgICBpZiAoc3RkZXJyICYmIHN0ZGVyci5pbmRleE9mKCdiYXInKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzdWJwcm9jLnN0YXJ0KCk7XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHN1YnByb2Muc3RvcCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgb3V0cHV0IGJ5IGxpbmVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgc3VicHJvYyA9IG5ldyBTdWJQcm9jZXNzKCdscycsIFtwYXRoLnJlc29sdmUoX19kaXJuYW1lKV0pO1xuICAgICAgbGV0IGxpbmVzID0gW107XG4gICAgICBzdWJwcm9jLm9uKCdsaW5lcy1zdGRvdXQnLCAobmV3TGluZXMpID0+IHtcbiAgICAgICAgbGluZXMgPSBsaW5lcy5jb25jYXQobmV3TGluZXMpO1xuICAgICAgfSk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0YXJ0KDApO1xuICAgICAgYXdhaXQgQi5kZWxheSg1MCk7XG4gICAgICBsaW5lcy5zaG91bGQuZXFsKFsnZXhlYy1zcGVjcy5qcycsICdmaXh0dXJlcycsICdoZWxwZXJzLmpzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWJwcm9jLXNwZWNzLmpzJ10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3N0b3AnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZW5kIHRoZSByaWdodCBzaWduYWwgdG8gc3RvcCBhIHByb2MnLCBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgc3VicHJvYyA9IG5ldyBTdWJQcm9jZXNzKCd0YWlsJywgWyctZicsIHBhdGgucmVzb2x2ZShfX2ZpbGVuYW1lKV0pO1xuICAgICAgICBhd2FpdCBzdWJwcm9jLnN0YXJ0KCk7XG4gICAgICAgIHN1YnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNpZ25hbC5zaG91bGQuZXF1YWwoJ1NJR0hVUCcpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzdWJwcm9jLnN0b3AoJ1NJR0hVUCcpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRpbWUgb3V0IGlmIHN0b3AgZG9lc250IGNvbXBsZXRlIGZhc3QgZW5vdWdoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHN1YnByb2MgPSBuZXcgU3ViUHJvY2VzcyhnZXRGaXh0dXJlKCd0cmFwaHVwLnNoJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGFpbCcsICctZicsIHBhdGgucmVzb2x2ZShfX2ZpbGVuYW1lKV0pO1xuICAgICAgYXdhaXQgc3VicHJvYy5zdGFydCgpO1xuICAgICAgYXdhaXQgc3VicHJvYy5zdG9wKCdTSUdIVVAnLCAxMClcbiAgICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvUHJvY2VzcyBkaWRuJ3QgZW5kLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVycm9yIGlmIHRoZXJlIGlzIG5vIHByb2Nlc3MgdG8gc3RvcCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzdWJwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ2xzJyk7XG4gICAgICBhd2FpdCBzdWJwcm9jLnN0b3AoKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0Nhbid0IHN0b3AvKTtcbiAgICAgIGF3YWl0IHN1YnByb2Muc3RhcnQoKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoMTApO1xuICAgICAgYXdhaXQgc3VicHJvYy5zdG9wKCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9DYW4ndCBzdG9wLyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=

@@ -92,6 +92,8 @@ import { spawn } from 'child_process';

// spawn the subprocess and return control whenever we deem that it has fully
// "started"
async start (startDetector = null, timeoutMs = null) {
let startDelay = 10;
// the default start detector is that we get any output
// the default start detector simply returns true when we get any output
if (startDetector === null) {

@@ -104,3 +106,3 @@ startDetector = (stdout, stderr) => {

// if the user passes a number, then we simply delay a certain amount of
// time before returning control
// time before returning control, rather than waiting for a condition
if (typeof startDetector === 'number') {

@@ -111,11 +113,7 @@ startDelay = startDetector;

// return a promise so we can wrap the async behavior
return new Promise((resolve, reject) => {
if (typeof timeoutMs === "number") {
setTimeout(() => {
reject(new Error("The process did not start in the allotted time " +
`(${timeoutMs}ms)`));
}, timeoutMs);
}
try {
// actually spawn the subproc
this.proc = spawn(this.cmd, this.args);

@@ -129,3 +127,6 @@ } catch (e) {

// this function handles output that we collect from the subproc
const handleOutput = (data) => {
// if we have a startDetector, run it on the output so we can resolve/
// reject and move on from start
try {

@@ -138,3 +139,10 @@ if (startDetector && startDetector(data.stdout, data.stderr)) {

}
// emit the actual output for whomever's listening
this.emit('output', data.stdout, data.stderr);
// we also want to emit lines, but it's more complex since output
// comes in chunks and a line could come in two different chunks, so
// we have logic to handle that case (using this.lastLinePortion to
// remember a line that started but did not finish in the last chunk)
for (let stream of ['stdout', 'stderr']) {

@@ -154,2 +162,3 @@ if (!data[stream]) continue;

// if we get an error spawning the proc, reject and clean up the proc
this.proc.on('error', err => {

@@ -169,2 +178,5 @@ this.proc.removeAllListeners('exit');

// when the proc exits, we might still have a buffer of lines we were
// waiting on more chunks to complete. Go ahead and emit those, then
// re-emit the exit so a listener can handle the possibly-unexpected exit
this.proc.on('exit', (code, signal) => {

@@ -176,2 +188,4 @@ this.handleLastLines();

// if the user hasn't given us a startDetector, instead just resolve
// when startDelay ms have passed
if (!startDetector) {

@@ -182,2 +196,11 @@ setTimeout(() => {

}
// if the user has given us a timeout, start the clock for rejecting
// the promise if we take too long to start
if (typeof timeoutMs === "number") {
setTimeout(() => {
reject(new Error("The process did not start in the allotted time " +
`(${timeoutMs}ms)`));
}, timeoutMs);
}
});

@@ -199,2 +222,4 @@ }

}
// make sure to emit any data in our lines buffer whenever we're done with
// the proc
this.handleLastLines();

@@ -201,0 +226,0 @@ return new Promise((resolve, reject) => {

@@ -8,3 +8,3 @@ {

],
"version": "1.3.0",
"version": "1.3.1",
"author": "appium",

@@ -28,3 +28,3 @@ "license": "Apache License 2.0",

"dependencies": {
"babel-runtime": "^5.1.9",
"babel-runtime": "=5.5.5",
"bluebird": "^2.9.25",

@@ -31,0 +31,0 @@ "shell-quote": "^1.4.3",

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc