| 
						 | 
						- 'use strict';
 - 
 - const isWin = process.platform === 'win32';
 - 
 - function notFoundError(original, syscall) {
 -     return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
 -         code: 'ENOENT',
 -         errno: 'ENOENT',
 -         syscall: `${syscall} ${original.command}`,
 -         path: original.command,
 -         spawnargs: original.args,
 -     });
 - }
 - 
 - function hookChildProcess(cp, parsed) {
 -     if (!isWin) {
 -         return;
 -     }
 - 
 -     const originalEmit = cp.emit;
 - 
 -     cp.emit = function (name, arg1) {
 -         // If emitting "exit" event and exit code is 1, we need to check if
 -         // the command exists and emit an "error" instead
 -         // See https://github.com/IndigoUnited/node-cross-spawn/issues/16
 -         if (name === 'exit') {
 -             const err = verifyENOENT(arg1, parsed);
 - 
 -             if (err) {
 -                 return originalEmit.call(cp, 'error', err);
 -             }
 -         }
 - 
 -         return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
 -     };
 - }
 - 
 - function verifyENOENT(status, parsed) {
 -     if (isWin && status === 1 && !parsed.file) {
 -         return notFoundError(parsed.original, 'spawn');
 -     }
 - 
 -     return null;
 - }
 - 
 - function verifyENOENTSync(status, parsed) {
 -     if (isWin && status === 1 && !parsed.file) {
 -         return notFoundError(parsed.original, 'spawnSync');
 -     }
 - 
 -     return null;
 - }
 - 
 - module.exports = {
 -     hookChildProcess,
 -     verifyENOENT,
 -     verifyENOENTSync,
 -     notFoundError,
 - };
 
 
  |