execa
Advanced tools
Comparing version 4.0.0 to 4.0.1
@@ -51,6 +51,7 @@ 'use strict'; | ||
const execaMessage = `Command ${prefix}: ${command}`; | ||
const shortMessage = error instanceof Error ? `${execaMessage}\n${error.message}` : execaMessage; | ||
const isError = Object.prototype.toString.call(error) === '[object Error]'; | ||
const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage; | ||
const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n'); | ||
if (error instanceof Error) { | ||
if (isError) { | ||
error.originalMessage = error.message; | ||
@@ -57,0 +58,0 @@ error.message = message; |
'use strict'; | ||
const mergePromiseProperty = (spawned, promise, property) => { | ||
// Starting the main `promise` is deferred to avoid consuming streams | ||
const value = typeof promise === 'function' ? | ||
(...args) => promise()[property](...args) : | ||
promise[property].bind(promise); | ||
Object.defineProperty(spawned, property, { | ||
value, | ||
writable: true, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
}; | ||
const descriptors = ['then', 'catch', 'finally'].map(property => [ | ||
property, | ||
Reflect.getOwnPropertyDescriptor(Promise.prototype, property) | ||
]); | ||
// The return value is a mixin of `childProcess` and `Promise` | ||
const mergePromise = (spawned, promise) => { | ||
mergePromiseProperty(spawned, promise, 'then'); | ||
mergePromiseProperty(spawned, promise, 'catch'); | ||
mergePromiseProperty(spawned, promise, 'finally'); | ||
for (const [property, descriptor] of descriptors) { | ||
// Starting the main `promise` is deferred to avoid consuming streams | ||
const value = typeof promise === 'function' ? | ||
(...args) => Reflect.apply(descriptor.value, promise(), args) : | ||
descriptor.value.bind(promise); | ||
Reflect.defineProperty(spawned, property, {...descriptor, value}); | ||
} | ||
return spawned; | ||
@@ -22,0 +20,0 @@ }; |
{ | ||
"name": "execa", | ||
"version": "4.0.0", | ||
"version": "4.0.1", | ||
"description": "Process execution for humans", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -633,2 +633,3 @@ <img src="media/logo.svg" width="400"> | ||
- [nvexeca](https://github.com/ehmicky/nvexeca) - Run `execa` using any Node.js version | ||
- [sudo-prompt](https://github.com/jorangreef/sudo-prompt) - Run commands with elevated privileges. | ||
@@ -635,0 +636,0 @@ ## Maintainers |
55476
651
984