WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/webpack/lib/Generator.js
@@ -5,6 +5,8 @@
"use strict";
const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
/** @typedef {import("webpack-sources").Source} Source */
/** @typedef {import("./ChunkGraph")} ChunkGraph */
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
@@ -13,6 +15,7 @@
/** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
/** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
/** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
/** @typedef {import("./Module").SourceType} SourceType */
/** @typedef {import("./Module").SourceTypes} SourceTypes */
/** @typedef {import("./ModuleGraph")} ModuleGraph */
/** @typedef {import("./NormalModule")} NormalModule */
@@ -21,6 +24,7 @@
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
/**
 * Defines the generate context type used by this module.
 * @typedef {object} GenerateContext
 * @property {DependencyTemplates} dependencyTemplates mapping from dependencies to templates
 * @property {RuntimeTemplate} runtimeTemplate the runtime template
@@ -30,11 +34,12 @@
 * @property {RuntimeSpec} runtime the runtime
 * @property {ConcatenationScope=} concatenationScope when in concatenated module, information about other concatenated modules
 * @property {CodeGenerationResults=} codeGenerationResults code generation results of other modules (need to have a codeGenerationDependency to use that)
 * @property {string} type which kind of code should be generated
 * @property {SourceType} type which kind of code should be generated
 * @property {() => CodeGenerationResultData=} getData get access to the code generation data
 */
/**
 * Defines the generate error fn callback.
 * @callback GenerateErrorFn
 * @param {Error} error the error
 * @param {NormalModule} module module for which the code should be generated
@@ -43,6 +48,7 @@
 */
/**
 * Represents the generator runtime component.
 * @typedef {object} UpdateHashContext
 * @property {NormalModule} module the module
 * @property {ChunkGraph} chunkGraph
@@ -52,7 +58,8 @@
class Generator {
   /**
    * @param {Record<string, Generator>} map map of types
    * Returns generator by type.
    * @param {{ [key in SourceType]?: Generator }} map map of types
    * @returns {ByTypeGenerator} generator by type
    */
   static byType(map) {
@@ -61,6 +68,7 @@
   /* istanbul ignore next */
   /**
    * Returns the source types available for this module.
    * @abstract
    * @param {NormalModule} module fresh module
    * @returns {SourceTypes} available types (do not mutate)
@@ -73,9 +81,10 @@
   /* istanbul ignore next */
   /**
    * Returns the estimated size for the requested source type.
    * @abstract
    * @param {NormalModule} module the module
    * @param {string=} type source type
    * @param {SourceType=} type source type
    * @returns {number} estimate size of the module
    */
   getSize(module, type) {
@@ -86,6 +95,7 @@
   /* istanbul ignore next */
   /**
    * Generates generated code for this runtime module.
    * @abstract
    * @param {NormalModule} module module for which the code should be generated
    * @param {GenerateContext} generateContext context for generate
@@ -101,6 +111,7 @@
   }
   /**
    * Returns the reason this module cannot be concatenated, when one exists.
    * @param {NormalModule} module module for which the bailout reason should be determined
    * @param {ConcatenationBailoutReasonContext} context context
    * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
@@ -110,6 +121,7 @@
   }
   /**
    * Updates the hash with the data contributed by this instance.
    * @param {Hash} hash hash that will be modified
    * @param {UpdateHashContext} updateHashContext context for updating hash
    */
@@ -138,17 +150,19 @@
class ByTypeGenerator extends Generator {
   /**
    * @param {Record<string, Generator>} map map of types
    * Creates an instance of ByTypeGenerator.
    * @param {{ [key in SourceType]?: Generator }} map map of types
    */
   constructor(map) {
      super();
      this.map = map;
      this._types = new Set(Object.keys(map));
      this._types = /** @type {SourceTypes} */ (new Set(Object.keys(map)));
      /** @type {GenerateErrorFn | undefined} */
      this.generateError = generateError.bind(this);
   }
   /**
    * Returns the source types available for this module.
    * @param {NormalModule} module fresh module
    * @returns {SourceTypes} available types (do not mutate)
    */
@@ -157,17 +171,19 @@
   }
   /**
    * Returns the estimated size for the requested source type.
    * @param {NormalModule} module the module
    * @param {string=} type source type
    * @param {SourceType=} type source type
    * @returns {number} estimate size of the module
    */
   getSize(module, type = "javascript") {
   getSize(module, type = JAVASCRIPT_TYPE) {
      const t = type;
      const generator = this.map[t];
      return generator ? generator.getSize(module, t) : 0;
   }
   /**
    * Generates generated code for this runtime module.
    * @param {NormalModule} module module for which the code should be generated
    * @param {GenerateContext} generateContext context for generate
    * @returns {Source | null} generated code