| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 'use strict';const {signalsByName} = require('human-signals');const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {	if (timedOut) {		return `timed out after ${timeout} milliseconds`;	}	if (isCanceled) {		return 'was canceled';	}	if (errorCode !== undefined) {		return `failed with ${errorCode}`;	}	if (signal !== undefined) {		return `was killed with ${signal} (${signalDescription})`;	}	if (exitCode !== undefined) {		return `failed with exit code ${exitCode}`;	}	return 'failed';};const makeError = ({	stdout,	stderr,	all,	error,	signal,	exitCode,	command,	escapedCommand,	timedOut,	isCanceled,	killed,	parsed: {options: {timeout}}}) => {	// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.	// We normalize them to `undefined`	exitCode = exitCode === null ? undefined : exitCode;	signal = signal === null ? undefined : signal;	const signalDescription = signal === undefined ? undefined : signalsByName[signal].description;	const errorCode = error && error.code;	const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});	const execaMessage = `Command ${prefix}: ${command}`;	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 (isError) {		error.originalMessage = error.message;		error.message = message;	} else {		error = new Error(message);	}	error.shortMessage = shortMessage;	error.command = command;	error.escapedCommand = escapedCommand;	error.exitCode = exitCode;	error.signal = signal;	error.signalDescription = signalDescription;	error.stdout = stdout;	error.stderr = stderr;	if (all !== undefined) {		error.all = all;	}	if ('bufferedData' in error) {		delete error.bufferedData;	}	error.failed = true;	error.timedOut = Boolean(timedOut);	error.isCanceled = isCanceled;	error.killed = killed && !timedOut;	return error;};module.exports = makeError;
 |