You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
"use strict";
 | 
						|
Object.defineProperty(exports, "__esModule", { value: true });
 | 
						|
exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0;
 | 
						|
const os = require("os");
 | 
						|
const path = require("path");
 | 
						|
const IS_WINDOWS_PLATFORM = os.platform() === 'win32';
 | 
						|
const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\
 | 
						|
/**
 | 
						|
 * All non-escaped special characters.
 | 
						|
 * Posix: ()*?[\]{|}, !+@ before (, ! at the beginning, \\ before non-special characters.
 | 
						|
 * Windows: (){}, !+@ before (, ! at the beginning.
 | 
						|
 */
 | 
						|
const POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g;
 | 
						|
const WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([(){}]|^!|[!+@](?=\())/g;
 | 
						|
/**
 | 
						|
 * The device path (\\.\ or \\?\).
 | 
						|
 * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths
 | 
						|
 */
 | 
						|
const DOS_DEVICE_PATH_RE = /^\\\\([.?])/;
 | 
						|
/**
 | 
						|
 * All backslashes except those escaping special characters.
 | 
						|
 * Windows: !()+@{}
 | 
						|
 * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
 | 
						|
 */
 | 
						|
const WINDOWS_BACKSLASHES_RE = /\\(?![!()+@{}])/g;
 | 
						|
/**
 | 
						|
 * Designed to work only with simple paths: `dir\\file`.
 | 
						|
 */
 | 
						|
function unixify(filepath) {
 | 
						|
    return filepath.replace(/\\/g, '/');
 | 
						|
}
 | 
						|
exports.unixify = unixify;
 | 
						|
function makeAbsolute(cwd, filepath) {
 | 
						|
    return path.resolve(cwd, filepath);
 | 
						|
}
 | 
						|
exports.makeAbsolute = makeAbsolute;
 | 
						|
function removeLeadingDotSegment(entry) {
 | 
						|
    // We do not use `startsWith` because this is 10x slower than current implementation for some cases.
 | 
						|
    // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
 | 
						|
    if (entry.charAt(0) === '.') {
 | 
						|
        const secondCharactery = entry.charAt(1);
 | 
						|
        if (secondCharactery === '/' || secondCharactery === '\\') {
 | 
						|
            return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return entry;
 | 
						|
}
 | 
						|
exports.removeLeadingDotSegment = removeLeadingDotSegment;
 | 
						|
exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath;
 | 
						|
function escapeWindowsPath(pattern) {
 | 
						|
    return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
 | 
						|
}
 | 
						|
exports.escapeWindowsPath = escapeWindowsPath;
 | 
						|
function escapePosixPath(pattern) {
 | 
						|
    return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2');
 | 
						|
}
 | 
						|
exports.escapePosixPath = escapePosixPath;
 | 
						|
exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern;
 | 
						|
function convertWindowsPathToPattern(filepath) {
 | 
						|
    return escapeWindowsPath(filepath)
 | 
						|
        .replace(DOS_DEVICE_PATH_RE, '//$1')
 | 
						|
        .replace(WINDOWS_BACKSLASHES_RE, '/');
 | 
						|
}
 | 
						|
exports.convertWindowsPathToPattern = convertWindowsPathToPattern;
 | 
						|
function convertPosixPathToPattern(filepath) {
 | 
						|
    return escapePosixPath(filepath);
 | 
						|
}
 | 
						|
exports.convertPosixPathToPattern = convertPosixPathToPattern;
 |