|                                                         |  | '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,};
 |