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.
		
		
		
		
		
			
		
			
				
					
					
						
							89 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							89 lines
						
					
					
						
							2.0 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
 | 
						|
const util = require("util"); | 
						|
const compareLocations = require("./compareLocations"); | 
						|
const DependencyReference = require("./dependencies/DependencyReference"); | 
						|
 | 
						|
/** @typedef {import("./Module")} Module */ | 
						|
/** @typedef {import("webpack-sources").Source} Source */ | 
						|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ | 
						|
 | 
						|
/** | 
						|
 * @typedef {Object} DependencyTemplate | 
						|
 * @property {function(Dependency, Source, RuntimeTemplate, Map<Function, DependencyTemplate>): void} apply | 
						|
 */ | 
						|
 | 
						|
/** @typedef {Object} SourcePosition | 
						|
 *  @property {number} line | 
						|
 *  @property {number=} column | 
						|
 */ | 
						|
 | 
						|
/** @typedef {Object} RealDependencyLocation | 
						|
 *  @property {SourcePosition} start | 
						|
 *  @property {SourcePosition=} end | 
						|
 *  @property {number=} index | 
						|
 */ | 
						|
 | 
						|
/** @typedef {Object} SynteticDependencyLocation | 
						|
 *  @property {string} name | 
						|
 *  @property {number=} index | 
						|
 */ | 
						|
 | 
						|
/** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */ | 
						|
 | 
						|
class Dependency { | 
						|
	constructor() { | 
						|
		/** @type {Module|null} */ | 
						|
		this.module = null; | 
						|
		// TODO remove in webpack 5 | 
						|
		/** @type {boolean} */ | 
						|
		this.weak = false; | 
						|
		/** @type {boolean} */ | 
						|
		this.optional = false; | 
						|
		/** @type {DependencyLocation} */ | 
						|
		this.loc = undefined; | 
						|
	} | 
						|
 | 
						|
	getResourceIdentifier() { | 
						|
		return null; | 
						|
	} | 
						|
 | 
						|
	// Returns the referenced module and export | 
						|
	getReference() { | 
						|
		if (!this.module) return null; | 
						|
		return new DependencyReference(this.module, true, this.weak); | 
						|
	} | 
						|
 | 
						|
	// Returns the exported names | 
						|
	getExports() { | 
						|
		return null; | 
						|
	} | 
						|
 | 
						|
	getWarnings() { | 
						|
		return null; | 
						|
	} | 
						|
 | 
						|
	getErrors() { | 
						|
		return null; | 
						|
	} | 
						|
 | 
						|
	updateHash(hash) { | 
						|
		hash.update((this.module && this.module.id) + ""); | 
						|
	} | 
						|
 | 
						|
	disconnect() { | 
						|
		this.module = null; | 
						|
	} | 
						|
} | 
						|
 | 
						|
// TODO remove in webpack 5 | 
						|
Dependency.compare = util.deprecate( | 
						|
	(a, b) => compareLocations(a.loc, b.loc), | 
						|
	"Dependency.compare is deprecated and will be removed in the next major version" | 
						|
); | 
						|
 | 
						|
module.exports = Dependency;
 | 
						|
 |