WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/webpack/lib/dependencies/CachedConstDependency.js
@@ -21,28 +21,38 @@
class CachedConstDependency extends NullDependency {
   /**
    * Creates an instance of CachedConstDependency.
    * @param {string} expression expression
    * @param {Range} range range
    * @param {Range | null} range range
    * @param {string} identifier identifier
    * @param {number=} place place where we inject the expression
    */
   constructor(expression, range, identifier) {
   constructor(
      expression,
      range,
      identifier,
      place = CachedConstDependency.PLACE_MODULE
   ) {
      super();
      this.expression = expression;
      this.range = range;
      this.identifier = identifier;
      this.place = place;
      /** @type {undefined | string} */
      this._hashUpdate = undefined;
   }
   /**
    * Create hash update.
    * @returns {string} hash update
    */
   _createHashUpdate() {
      return `${this.identifier}${this.range}${this.expression}`;
      return `${this.place}${this.identifier}${this.range}${this.expression}`;
   }
   /**
    * Update the hash
    * Updates the hash with the data contributed by this instance.
    * @param {Hash} hash hash to be updated
    * @param {UpdateHashContext} context context
    * @returns {void}
@@ -55,6 +65,7 @@
   }
   /**
    * Serializes this instance into the provided serializer context.
    * @param {ObjectSerializerContext} context context
    */
   serialize(context) {
@@ -63,11 +74,13 @@
      write(this.expression);
      write(this.range);
      write(this.identifier);
      write(this.place);
      super.serialize(context);
   }
   /**
    * Restores this instance from the provided deserializer context.
    * @param {ObjectDeserializerContext} context context
    */
   deserialize(context) {
@@ -76,10 +89,14 @@
      this.expression = read();
      this.range = read();
      this.identifier = read();
      this.place = read();
      super.deserialize(context);
   }
}
CachedConstDependency.PLACE_MODULE = 10;
CachedConstDependency.PLACE_CHUNK = 20;
makeSerializable(
   CachedConstDependency,
@@ -90,30 +107,33 @@
   DependencyTemplate
) {
   /**
    * Applies the plugin by registering its hooks on the compiler.
    * @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, { initFragments }) {
   apply(dependency, source, { initFragments, chunkInitFragments }) {
      const dep = /** @type {CachedConstDependency} */ (dependency);
      initFragments.push(
      (dep.place === CachedConstDependency.PLACE_MODULE
         ? initFragments
         : chunkInitFragments
      ).push(
         new InitFragment(
            `var ${dep.identifier} = ${dep.expression};\n`,
            InitFragment.STAGE_CONSTANTS,
            0,
            // For a chunk we inject expression after imports
            dep.place === CachedConstDependency.PLACE_MODULE ? 0 : 10,
            `const ${dep.identifier}`
         )
      );
      if (typeof dep.range === "number") {
         source.insert(dep.range, dep.identifier);
         return;
      } else if (dep.range !== null) {
         source.replace(dep.range[0], dep.range[1] - 1, dep.identifier);
      }
      source.replace(dep.range[0], dep.range[1] - 1, dep.identifier);
   }
};