resolver/path.js
function normalizeStringPosix(path, allowAboveRoot) {
	var res = '';
	var lastSlash = -1;
	var dots = 0;
	var code;
	for (var i = 0; i <= path.length; ++i) {
		if (i < path.length) code = path.charCodeAt(i);else if (code === 47 /*/*/) break;else code = 47 /*/*/;
		if (code === 47 /*/*/) {
				if (lastSlash === i - 1 || dots === 1) {
					// NOOP
				} else if (lastSlash !== i - 1 && dots === 2) {
						if (res.length < 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {
								if (res.length > 2) {
									var start = res.length - 1;
									var j = start;
									for (; j >= 0; --j) {
										if (res.charCodeAt(j) === 47 /*/*/) break;
									}
									if (j !== start) {
										if (j === -1) res = '';else res = res.slice(0, j);
										lastSlash = i;
										dots = 0;
										continue;
									}
								} else if (res.length === 2 || res.length === 1) {
									res = '';
									lastSlash = i;
									dots = 0;
									continue;
								}
							}
						if (allowAboveRoot) {
							if (res.length > 0) res += '/..';else res = '..';
						}
					} else {
						if (res.length > 0) res += '/' + path.slice(lastSlash + 1, i);else res = path.slice(lastSlash + 1, i);
					}
				lastSlash = i;
				dots = 0;
			} else if (code === 46 /*.*/ && dots !== -1) {
			++dots;
		} else {
			dots = -1;
		}
	}
	return res;
}
function normalizeStringPosix(path, allowAboveRoot) {
	var res = '';
	var lastSlash = -1;
	var dots = 0;
	var code;
	for (var i = 0; i <= path.length; ++i) {
		if (i < path.length) code = path.charCodeAt(i);else if (code === 47 /*/*/) break;else code = 47 /*/*/;
		if (code === 47 /*/*/) {
				if (lastSlash === i - 1 || dots === 1) {
					// NOOP
				} else if (lastSlash !== i - 1 && dots === 2) {
						if (res.length < 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {
								if (res.length > 2) {
									var start = res.length - 1;
									var j = start;
									for (; j >= 0; --j) {
										if (res.charCodeAt(j) === 47 /*/*/) break;
									}
									if (j !== start) {
										if (j === -1) res = '';else res = res.slice(0, j);
										lastSlash = i;
										dots = 0;
										continue;
									}
								} else if (res.length === 2 || res.length === 1) {
									res = '';
									lastSlash = i;
									dots = 0;
									continue;
								}
							}
						if (allowAboveRoot) {
							if (res.length > 0) res += '/..';else res = '..';
						}
					} else {
						if (res.length > 0) res += '/' + path.slice(lastSlash + 1, i);else res = path.slice(lastSlash + 1, i);
					}
				lastSlash = i;
				dots = 0;
			} else if (code === 46 /*.*/ && dots !== -1) {
			++dots;
		} else {
			dots = -1;
		}
	}
	return res;
}
function normalizeStringPosix ( path , allowAboveRoot ) { var res = '' ; var lastSlash = - 1 ; var dots = 0 ; var code ; for ( var i = 0 ; i <= path . length ; ++ i ) { if ( i < path . length ) code = path . charCodeAt ( i ) ; else if ( code === 47 /*/*/ ) break ; else code = 47 /*/*/ ; if ( code === 47 /*/*/ ) { if ( lastSlash === i - 1 || dots === 1 ) { // NOOP } else if ( lastSlash !== i - 1 && dots === 2 ) { if ( res . length < 2 || res . charCodeAt ( res . length - 1 ) !== 46 /*.*/ || res . charCodeAt ( res . length - 2 ) !== 46 /*.*/ ) { if ( res . length > 2 ) { var start = res . length - 1 ; var j = start ; for ( ; j >= 0 ; -- j ) { if ( res . charCodeAt ( j ) === 47 /*/*/ ) break ; } if ( j !== start ) { if ( j === - 1 ) res = '' ; else res = res . slice ( 0 , j ) ; lastSlash = i ; dots = 0 ; continue ; } } else if ( res . length === 2 || res . length === 1 ) { res = '' ; lastSlash = i ; dots = 0 ; continue ; } } if ( allowAboveRoot ) { if ( res . length > 0 ) res += '/..' ; else res = '..' ; } } else { if ( res . length > 0 ) res += '/' + path . slice ( lastSlash + 1 , i ) ; else res = path . slice ( lastSlash + 1 , i ) ; } lastSlash = i ; dots = 0 ; } else if ( code === 46 /*.*/ && dots !== - 1 ) { ++ dots ; } else { dots = - 1 ; } } return res ; }
Resolves . and .. elements in a path with directory names
Resolves . and .. elements in a path with directory names