Initial commit
This commit is contained in:
24
node_modules/execa/lib/pipe/sequence.js
generated
vendored
Normal file
24
node_modules/execa/lib/pipe/sequence.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
// Like Bash, we await both subprocesses. This is unlike some other shells which only await the destination subprocess.
|
||||
// Like Bash with the `pipefail` option, if either subprocess fails, the whole pipe fails.
|
||||
// Like Bash, if both subprocesses fail, we return the failure of the destination.
|
||||
// This ensures both subprocesses' errors are present, using `error.pipedFrom`.
|
||||
export const waitForBothSubprocesses = async subprocessPromises => {
|
||||
const [
|
||||
{status: sourceStatus, reason: sourceReason, value: sourceResult = sourceReason},
|
||||
{status: destinationStatus, reason: destinationReason, value: destinationResult = destinationReason},
|
||||
] = await subprocessPromises;
|
||||
|
||||
if (!destinationResult.pipedFrom.includes(sourceResult)) {
|
||||
destinationResult.pipedFrom.push(sourceResult);
|
||||
}
|
||||
|
||||
if (destinationStatus === 'rejected') {
|
||||
throw destinationResult;
|
||||
}
|
||||
|
||||
if (sourceStatus === 'rejected') {
|
||||
throw sourceResult;
|
||||
}
|
||||
|
||||
return destinationResult;
|
||||
};
|
||||
Reference in New Issue
Block a user