| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | /*	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 RawModule = require("../RawModule");/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE *//** @typedef {import("../Module")} Module *//** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes *//** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext *//** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */class ModuleDependency extends Dependency {	/**	 * @param {string} request request path which needs resolving	 */	constructor(request) {		super();		this.request = request;		this.userRequest = request;		this.range = undefined;		// TODO move it to subclasses and rename		// assertions must be serialized by subclasses that use it		/** @type {ImportAttributes | 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} ignored module	 */	createIgnoredModule(context) {		const module = new RawModule(			"/* (ignored) */",			`ignored|${context}|${this.request}`,			`${this.request} (ignored)`		);		module.factoryMeta = { sideEffectFree: true };		return module;	}	/**	 * @param {ObjectSerializerContext} context context	 */	serialize(context) {		const { write } = context;		write(this.request);		write(this.userRequest);		write(this._context);		write(this.range);		super.serialize(context);	}	/**	 * @param {ObjectDeserializerContext} context 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;
 |