| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Florent Cailhol @ooflorent*/"use strict";/** @typedef {import("../Module")} Module */class DependencyReference {	// TODO webpack 5: module must be dynamic, you must pass a function returning a module	// This is needed to remove the hack in ConcatenatedModule	// The problem is that the `module` in Dependency could be replaced i. e. because of Scope Hoisting	/**	 *	 * @param {Module} module the referenced module	 * @param {string[] | boolean} importedNames imported named from the module	 * @param {boolean=} weak if this is a weak reference	 * @param {number} order the order information or NaN if don't care	 */	constructor(module, importedNames, weak = false, order = NaN) {		// TODO webpack 5: make it a getter		this.module = module;		// true: full object		// false: only sideeffects/no export		// array of strings: the exports with this names		this.importedNames = importedNames;		this.weak = !!weak;		this.order = order;	}	/**	 * @param {DependencyReference[]} array an array (will be modified)	 * @returns {DependencyReference[]} the array again	 */	static sort(array) {		/** @type {WeakMap<DependencyReference, number>} */		const originalOrder = new WeakMap();		let i = 0;		for (const ref of array) {			originalOrder.set(ref, i++);		}		return array.sort((a, b) => {			const aOrder = a.order;			const bOrder = b.order;			if (isNaN(aOrder)) {				if (!isNaN(bOrder)) {					return 1;				}			} else {				if (isNaN(bOrder)) {					return -1;				}				if (aOrder !== bOrder) {					return aOrder - bOrder;				}			}			const aOrg = originalOrder.get(a);			const bOrg = originalOrder.get(b);			return aOrg - bOrg;		});	}}module.exports = DependencyReference;
 |