You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							1.3 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
 | 
						|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ | 
						|
 | 
						|
// TODO webpack 5 remove string type from a and b | 
						|
/** | 
						|
 * Compare two locations | 
						|
 * @param {string|DependencyLocation} a A location node | 
						|
 * @param {string|DependencyLocation} b A location node | 
						|
 * @returns {-1|0|1} sorting comparator value | 
						|
 */ | 
						|
module.exports = (a, b) => { | 
						|
	if (typeof a === "string") { | 
						|
		if (typeof b === "string") { | 
						|
			if (a < b) return -1; | 
						|
			if (a > b) return 1; | 
						|
			return 0; | 
						|
		} else if (typeof b === "object") { | 
						|
			return 1; | 
						|
		} else { | 
						|
			return 0; | 
						|
		} | 
						|
	} else if (typeof a === "object") { | 
						|
		if (typeof b === "string") { | 
						|
			return -1; | 
						|
		} else if (typeof b === "object") { | 
						|
			if ("start" in a && "start" in b) { | 
						|
				const ap = a.start; | 
						|
				const bp = b.start; | 
						|
				if (ap.line < bp.line) return -1; | 
						|
				if (ap.line > bp.line) return 1; | 
						|
				if (ap.column < bp.column) return -1; | 
						|
				if (ap.column > bp.column) return 1; | 
						|
			} | 
						|
			if ("name" in a && "name" in b) { | 
						|
				if (a.name < b.name) return -1; | 
						|
				if (a.name > b.name) return 1; | 
						|
			} | 
						|
			if ("index" in a && "index" in b) { | 
						|
				if (a.index < b.index) return -1; | 
						|
				if (a.index > b.index) return 1; | 
						|
			} | 
						|
			return 0; | 
						|
		} else { | 
						|
			return 0; | 
						|
		} | 
						|
	} | 
						|
};
 | 
						|
 |