spawn-streaming
Version:
Formats spawn with prefix and colors
209 lines • 7.88 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return spawnStreaming;
}
});
var _crossspawncb = /*#__PURE__*/ _interop_require_wildcard(require("cross-spawn-cb"));
var _onone = /*#__PURE__*/ _interop_require_default(require("on-one"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _concatWritable = /*#__PURE__*/ _interop_require_default(require("./lib/concatWritable.js"));
var _nextColor = /*#__PURE__*/ _interop_require_default(require("./lib/nextColor.js"));
var _prefixTransform = /*#__PURE__*/ _interop_require_default(require("./lib/prefixTransform.js"));
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
function _object_spread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _object_without_properties(source, excluded) {
if (source == null) return {};
var target = _object_without_properties_loose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for(i = 0; i < sourceSymbolKeys.length; i++){
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
function _object_without_properties_loose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for(i = 0; i < sourceKeys.length; i++){
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function pipeline(input, output, options, color) {
if (options.prefix) return input.pipe((0, _prefixTransform.default)(options.prefix, color)).pipe(output);
return input.pipe(output);
}
function spawnStreaming(command, args, spawnOptions, options, callback) {
var encoding = spawnOptions.encoding, stdio = spawnOptions.stdio, csOptions = _object_without_properties(spawnOptions, [
"encoding",
"stdio"
]);
var cp = (0, _crossspawncb.crossSpawn)(command, args, csOptions);
var color = options.prefix ? (0, _nextColor.default)() : null;
var outputs = {
stdout: null,
stderr: null
};
if (cp.stdout && process.stdout.getMaxListeners) {
process.stdout.setMaxListeners(process.stdout.getMaxListeners() + 1);
process.stderr.setMaxListeners(process.stderr.getMaxListeners() + 1);
}
var queue = new _queuecb.default();
if (cp.stdout) {
if (stdio === 'inherit') pipeline(cp.stdout, process.stdout, options, color);
else {
outputs.stdout = (0, _concatWritable.default)(function(output) {
outputs.stdout.output = output.toString(encoding || 'utf8');
});
queue.defer(_onone.default.bind(null, pipeline(cp.stdout, outputs.stdout, options, color), [
'error',
'end',
'close',
'finish'
]));
}
}
if (cp.stderr) {
if (stdio === 'inherit') pipeline(cp.stderr, process.stderr, options, color);
else {
outputs.stderr = (0, _concatWritable.default)(function(output) {
outputs.stderr.output = output.toString(encoding || 'utf8');
});
queue.defer(_onone.default.bind(null, pipeline(cp.stderr, outputs.stderr, options, color), [
'error',
'end',
'close',
'finish'
]));
}
}
queue.defer(_crossspawncb.default.worker.bind(null, cp, _object_spread_props(_object_spread({}, csOptions), {
encoding: 'utf8'
})));
queue.await(function(err) {
if (cp.stdout && process.stdout.getMaxListeners) {
process.stdout.setMaxListeners(process.stdout.getMaxListeners() - 1);
process.stderr.setMaxListeners(process.stderr.getMaxListeners() - 1);
}
var res = err ? err : {};
res.stdout = outputs.stdout ? outputs.stdout.output : null;
res.stderr = outputs.stderr ? outputs.stderr.output : null;
res.output = [
res.stdout,
res.stderr,
null
];
err ? callback(err) : callback(null, res);
});
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
;