source: frontend/node_modules/execa/lib/error.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1'use strict';
2const {signalsByName} = require('human-signals');
3
4const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {
5 if (timedOut) {
6 return `timed out after ${timeout} milliseconds`;
7 }
8
9 if (isCanceled) {
10 return 'was canceled';
11 }
12
13 if (errorCode !== undefined) {
14 return `failed with ${errorCode}`;
15 }
16
17 if (signal !== undefined) {
18 return `was killed with ${signal} (${signalDescription})`;
19 }
20
21 if (exitCode !== undefined) {
22 return `failed with exit code ${exitCode}`;
23 }
24
25 return 'failed';
26};
27
28const makeError = ({
29 stdout,
30 stderr,
31 all,
32 error,
33 signal,
34 exitCode,
35 command,
36 escapedCommand,
37 timedOut,
38 isCanceled,
39 killed,
40 parsed: {options: {timeout}}
41}) => {
42 // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.
43 // We normalize them to `undefined`
44 exitCode = exitCode === null ? undefined : exitCode;
45 signal = signal === null ? undefined : signal;
46 const signalDescription = signal === undefined ? undefined : signalsByName[signal].description;
47
48 const errorCode = error && error.code;
49
50 const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});
51 const execaMessage = `Command ${prefix}: ${command}`;
52 const isError = Object.prototype.toString.call(error) === '[object Error]';
53 const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage;
54 const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n');
55
56 if (isError) {
57 error.originalMessage = error.message;
58 error.message = message;
59 } else {
60 error = new Error(message);
61 }
62
63 error.shortMessage = shortMessage;
64 error.command = command;
65 error.escapedCommand = escapedCommand;
66 error.exitCode = exitCode;
67 error.signal = signal;
68 error.signalDescription = signalDescription;
69 error.stdout = stdout;
70 error.stderr = stderr;
71
72 if (all !== undefined) {
73 error.all = all;
74 }
75
76 if ('bufferedData' in error) {
77 delete error.bufferedData;
78 }
79
80 error.failed = true;
81 error.timedOut = Boolean(timedOut);
82 error.isCanceled = isCanceled;
83 error.killed = killed && !timedOut;
84
85 return error;
86};
87
88module.exports = makeError;
Note: See TracBrowser for help on using the repository browser.