| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const { OriginalSource, RawSource } = require("webpack-sources");const Module = require("./Module");const WebpackMissingModule = require("./dependencies/WebpackMissingModule");const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");/** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency *//** @typedef {import("./util/createHash").Hash} Hash */class DelegatedModule extends Module {	constructor(sourceRequest, data, type, userRequest, originalRequest) {		super("javascript/dynamic", null);		// Info from Factory		this.sourceRequest = sourceRequest;		this.request = data.id;		this.type = type;		this.userRequest = userRequest;		this.originalRequest = originalRequest;		this.delegateData = data;		// Build info		this.delegatedSourceDependency = undefined;	}	libIdent(options) {		return typeof this.originalRequest === "string"			? this.originalRequest			: this.originalRequest.libIdent(options);	}	identifier() {		return `delegated ${JSON.stringify(this.request)} from ${			this.sourceRequest		}`;	}	readableIdentifier() {		return `delegated ${this.userRequest} from ${this.sourceRequest}`;	}	needRebuild() {		return false;	}	build(options, compilation, resolver, fs, callback) {		this.built = true;		this.buildMeta = Object.assign({}, this.delegateData.buildMeta);		this.buildInfo = {};		this.delegatedSourceDependency = new DelegatedSourceDependency(			this.sourceRequest		);		this.addDependency(this.delegatedSourceDependency);		this.addDependency(			new DelegatedExportsDependency(this, this.delegateData.exports || true)		);		callback();	}	source(depTemplates, runtime) {		const dep = /** @type {DelegatedSourceDependency} */ (this.dependencies[0]);		const sourceModule = dep.module;		let str;		if (!sourceModule) {			str = WebpackMissingModule.moduleCode(this.sourceRequest);		} else {			str = `module.exports = (${runtime.moduleExports({				module: sourceModule,				request: dep.request			})})`;			switch (this.type) {				case "require":					str += `(${JSON.stringify(this.request)})`;					break;				case "object":					str += `[${JSON.stringify(this.request)}]`;					break;			}			str += ";";		}		if (this.useSourceMap) {			return new OriginalSource(str, this.identifier());		} else {			return new RawSource(str);		}	}	size() {		return 42;	}	/**	 * @param {Hash} hash the hash used to track dependencies	 * @returns {void}	 */	updateHash(hash) {		hash.update(this.type);		hash.update(JSON.stringify(this.request));		super.updateHash(hash);	}}module.exports = DelegatedModule;
 |