| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Florent Cailhol @ooflorent*/"use strict";const DependencyTemplate = require("../DependencyTemplate");const InitFragment = require("../InitFragment");const makeSerializable = require("../util/makeSerializable");const NullDependency = require("./NullDependency");/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource *//** @typedef {import("../ChunkGraph")} ChunkGraph *//** @typedef {import("../Dependency")} Dependency *//** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext *//** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext *//** @typedef {import("../DependencyTemplates")} DependencyTemplates *//** @typedef {import("../ModuleGraph")} ModuleGraph *//** @typedef {import("../RuntimeTemplate")} RuntimeTemplate *//** @typedef {import("../util/Hash")} Hash */class CachedConstDependency extends NullDependency {	constructor(expression, range, identifier) {		super();		this.expression = expression;		this.range = range;		this.identifier = identifier;		this._hashUpdate = undefined;	}	/**	 * Update the hash	 * @param {Hash} hash hash to be updated	 * @param {UpdateHashContext} context context	 * @returns {void}	 */	updateHash(hash, context) {		if (this._hashUpdate === undefined)			this._hashUpdate = "" + this.identifier + this.range + this.expression;		hash.update(this._hashUpdate);	}	serialize(context) {		const { write } = context;		write(this.expression);		write(this.range);		write(this.identifier);		super.serialize(context);	}	deserialize(context) {		const { read } = context;		this.expression = read();		this.range = read();		this.identifier = read();		super.deserialize(context);	}}makeSerializable(	CachedConstDependency,	"webpack/lib/dependencies/CachedConstDependency");CachedConstDependency.Template = class CachedConstDependencyTemplate extends (	DependencyTemplate) {	/**	 * @param {Dependency} dependency the dependency for which the template should be applied	 * @param {ReplaceSource} source the current replace source which can be modified	 * @param {DependencyTemplateContext} templateContext the context object	 * @returns {void}	 */	apply(		dependency,		source,		{ runtimeTemplate, dependencyTemplates, initFragments }	) {		const dep = /** @type {CachedConstDependency} */ (dependency);		initFragments.push(			new InitFragment(				`var ${dep.identifier} = ${dep.expression};\n`,				InitFragment.STAGE_CONSTANTS,				0,				`const ${dep.identifier}`			)		);		if (typeof dep.range === "number") {			source.insert(dep.range, dep.identifier);			return;		}		source.replace(dep.range[0], dep.range[1] - 1, dep.identifier);	}};module.exports = CachedConstDependency;
 |