MACHIN
This commit is contained in:
		
							
								
								
									
										45
									
								
								30/node_modules/cross-spawn/lib/util/escape.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								30/node_modules/cross-spawn/lib/util/escape.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
// See http://www.robvanderwoude.com/escapechars.php
 | 
			
		||||
const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
 | 
			
		||||
 | 
			
		||||
function escapeCommand(arg) {
 | 
			
		||||
    // Escape meta chars
 | 
			
		||||
    arg = arg.replace(metaCharsRegExp, '^$1');
 | 
			
		||||
 | 
			
		||||
    return arg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function escapeArgument(arg, doubleEscapeMetaChars) {
 | 
			
		||||
    // Convert to string
 | 
			
		||||
    arg = `${arg}`;
 | 
			
		||||
 | 
			
		||||
    // Algorithm below is based on https://qntm.org/cmd
 | 
			
		||||
 | 
			
		||||
    // Sequence of backslashes followed by a double quote:
 | 
			
		||||
    // double up all the backslashes and escape the double quote
 | 
			
		||||
    arg = arg.replace(/(\\*)"/g, '$1$1\\"');
 | 
			
		||||
 | 
			
		||||
    // Sequence of backslashes followed by the end of the string
 | 
			
		||||
    // (which will become a double quote later):
 | 
			
		||||
    // double up all the backslashes
 | 
			
		||||
    arg = arg.replace(/(\\*)$/, '$1$1');
 | 
			
		||||
 | 
			
		||||
    // All other backslashes occur literally
 | 
			
		||||
 | 
			
		||||
    // Quote the whole thing:
 | 
			
		||||
    arg = `"${arg}"`;
 | 
			
		||||
 | 
			
		||||
    // Escape meta chars
 | 
			
		||||
    arg = arg.replace(metaCharsRegExp, '^$1');
 | 
			
		||||
 | 
			
		||||
    // Double escape meta chars if necessary
 | 
			
		||||
    if (doubleEscapeMetaChars) {
 | 
			
		||||
        arg = arg.replace(metaCharsRegExp, '^$1');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return arg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.command = escapeCommand;
 | 
			
		||||
module.exports.argument = escapeArgument;
 | 
			
		||||
							
								
								
									
										23
									
								
								30/node_modules/cross-spawn/lib/util/readShebang.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								30/node_modules/cross-spawn/lib/util/readShebang.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const fs = require('fs');
 | 
			
		||||
const shebangCommand = require('shebang-command');
 | 
			
		||||
 | 
			
		||||
function readShebang(command) {
 | 
			
		||||
    // Read the first 150 bytes from the file
 | 
			
		||||
    const size = 150;
 | 
			
		||||
    const buffer = Buffer.alloc(size);
 | 
			
		||||
 | 
			
		||||
    let fd;
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
        fd = fs.openSync(command, 'r');
 | 
			
		||||
        fs.readSync(fd, buffer, 0, size, 0);
 | 
			
		||||
        fs.closeSync(fd);
 | 
			
		||||
    } catch (e) { /* Empty */ }
 | 
			
		||||
 | 
			
		||||
    // Attempt to extract shebang (null is returned if not a shebang)
 | 
			
		||||
    return shebangCommand(buffer.toString());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = readShebang;
 | 
			
		||||
							
								
								
									
										52
									
								
								30/node_modules/cross-spawn/lib/util/resolveCommand.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								30/node_modules/cross-spawn/lib/util/resolveCommand.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const path = require('path');
 | 
			
		||||
const which = require('which');
 | 
			
		||||
const getPathKey = require('path-key');
 | 
			
		||||
 | 
			
		||||
function resolveCommandAttempt(parsed, withoutPathExt) {
 | 
			
		||||
    const env = parsed.options.env || process.env;
 | 
			
		||||
    const cwd = process.cwd();
 | 
			
		||||
    const hasCustomCwd = parsed.options.cwd != null;
 | 
			
		||||
    // Worker threads do not have process.chdir()
 | 
			
		||||
    const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;
 | 
			
		||||
 | 
			
		||||
    // If a custom `cwd` was specified, we need to change the process cwd
 | 
			
		||||
    // because `which` will do stat calls but does not support a custom cwd
 | 
			
		||||
    if (shouldSwitchCwd) {
 | 
			
		||||
        try {
 | 
			
		||||
            process.chdir(parsed.options.cwd);
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
            /* Empty */
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let resolved;
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
        resolved = which.sync(parsed.command, {
 | 
			
		||||
            path: env[getPathKey({ env })],
 | 
			
		||||
            pathExt: withoutPathExt ? path.delimiter : undefined,
 | 
			
		||||
        });
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
        /* Empty */
 | 
			
		||||
    } finally {
 | 
			
		||||
        if (shouldSwitchCwd) {
 | 
			
		||||
            process.chdir(cwd);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // If we successfully resolved, ensure that an absolute path is returned
 | 
			
		||||
    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it
 | 
			
		||||
    if (resolved) {
 | 
			
		||||
        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return resolved;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function resolveCommand(parsed) {
 | 
			
		||||
    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = resolveCommand;
 | 
			
		||||
		Reference in New Issue
	
	Block a user