| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const Dependency = require("../Dependency");const DependencyTemplate = require("../DependencyTemplate");const memoize = require("../util/memoize");/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE *//** @typedef {import("../Module")} Module */const getRawModule = memoize(() => require("../RawModule"));class ModuleDependency extends Dependency {	/**	 * @param {string} request request path which needs resolving	 */	constructor(request) {		super();		this.request = request;		this.userRequest = request;		this.range = undefined;		// assertions must be serialized by subclasses that use it		/** @type {Record<string, any> | undefined} */		this.assertions = undefined;		this._context = undefined;	}	/**	 * @returns {string | undefined} a request context	 */	getContext() {		return this._context;	}	/**	 * @returns {string | null} an identifier to merge equal requests	 */	getResourceIdentifier() {		let str = `context${this._context || ""}|module${this.request}`;		if (this.assertions !== undefined) {			str += JSON.stringify(this.assertions);		}		return str;	}	/**	 * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module	 */	couldAffectReferencingModule() {		return true;	}	/**	 * @param {string} context context directory	 * @returns {Module} a module	 */	createIgnoredModule(context) {		const RawModule = getRawModule();		return new RawModule(			"/* (ignored) */",			`ignored|${context}|${this.request}`,			`${this.request} (ignored)`		);	}	serialize(context) {		const { write } = context;		write(this.request);		write(this.userRequest);		write(this._context);		write(this.range);		super.serialize(context);	}	deserialize(context) {		const { read } = context;		this.request = read();		this.userRequest = read();		this._context = read();		this.range = read();		super.deserialize(context);	}}ModuleDependency.Template = DependencyTemplate;module.exports = ModuleDependency;
 |