WXL
3 天以前 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7
node_modules/webpack/lib/Module.js
@@ -9,7 +9,11 @@
const ChunkGraph = require("./ChunkGraph");
const DependenciesBlock = require("./DependenciesBlock");
const ModuleGraph = require("./ModuleGraph");
const { JS_TYPES } = require("./ModuleSourceTypesConstants");
const {
   JAVASCRIPT_TYPE,
   UNKNOWN_TYPE
} = require("./ModuleSourceTypeConstants");
const { JAVASCRIPT_TYPES } = require("./ModuleSourceTypeConstants");
const RuntimeGlobals = require("./RuntimeGlobals");
const { first } = require("./util/SetHelpers");
const { compareChunksById } = require("./util/comparators");
@@ -24,24 +28,26 @@
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
/** @typedef {import("./Compilation")} Compilation */
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
/** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
/** @typedef {import("./Compilation").UnsafeCacheData} UnsafeCacheData */
/** @typedef {import("./ConcatenationScope")} ConcatenationScope */
/** @typedef {import("./Dependency")} Dependency */
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
/** @typedef {import("./DependencyTemplate").CssData} CssData */
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
/** @typedef {import("./ModuleSourceTypeConstants").AllTypes} AllTypes */
/** @typedef {import("./FileSystemInfo")} FileSystemInfo */
/** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
/** @typedef {import("./ModuleTypeConstants").ModuleTypes} ModuleTypes */
/** @typedef {import("./ModuleGraph").OptimizationBailouts} OptimizationBailouts */
/** @typedef {import("./ModuleProfile")} ModuleProfile */
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
/** @typedef {import("./RequestShortener")} RequestShortener */
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
/** @typedef {import("../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
/**
 * Defines the init fragment type used by this module.
 * @template T
 * @typedef {import("./InitFragment")<T>} InitFragment
 */
@@ -53,14 +59,20 @@
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
/** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
/**
 * @template T
 * @typedef {import("./util/SortableSet")<T>} SortableSet
 */
/** @typedef {"namespace" | "default-only" | "default-with-named" | "dynamic"} ExportsType */
/**
 * Defines the shared type used by this module.
 * @template T
 * @typedef {import("./util/LazySet")<T>} LazySet<T>
 */
/**
 * Defines the source context type used by this module.
 * @typedef {object} SourceContext
 * @property {DependencyTemplates} dependencyTemplates the dependency templates
 * @property {RuntimeTemplate} runtimeTemplate the runtime template
@@ -70,16 +82,22 @@
 * @property {string=} type the type of source that should be generated
 */
/** @typedef {ReadonlySet<string>} SourceTypes */
/** @typedef {AllTypes} KnownSourceType */
/** @typedef {KnownSourceType | string} SourceType */
/** @typedef {ReadonlySet<SourceType>} SourceTypes */
/** @typedef {ReadonlySet<typeof JAVASCRIPT_TYPE | string>} BasicSourceTypes */
// TODO webpack 6: compilation will be required in CodeGenerationContext
/**
 * Defines the code generation context type used by this module.
 * @typedef {object} CodeGenerationContext
 * @property {DependencyTemplates} dependencyTemplates the dependency templates
 * @property {RuntimeTemplate} runtimeTemplate the runtime template
 * @property {ModuleGraph} moduleGraph the module graph
 * @property {ChunkGraph} chunkGraph the chunk graph
 * @property {RuntimeSpec} runtime the runtimes code should be generated for
 * @property {RuntimeSpec[]} runtimes all runtimes code should be generated for
 * @property {ConcatenationScope=} concatenationScope when in concatenated module, information about other concatenated modules
 * @property {CodeGenerationResults | undefined} codeGenerationResults code generation results of other modules (need to have a codeGenerationDependency to use that)
 * @property {Compilation=} compilation the compilation
@@ -87,6 +105,7 @@
 */
/**
 * Defines the concatenation bailout reason context type used by this module.
 * @typedef {object} ConcatenationBailoutReasonContext
 * @property {ModuleGraph} moduleGraph the module graph
 * @property {ChunkGraph} chunkGraph the chunk graph
@@ -95,30 +114,60 @@
/** @typedef {Set<string>} RuntimeRequirements */
/** @typedef {ReadonlySet<string>} ReadOnlyRuntimeRequirements */
/** @typedef {Map<"topLevelDeclarations", Set<string>> & Map<"chunkInitFragments", InitFragment<EXPECTED_ANY>[]>} KnownCodeGenerationResultDataForJavascriptModules */
/** @typedef {Map<"url", { ["css-url"]: string }>} KnownCodeGenerationResultDataForCssModules */
/** @typedef {Map<"filename", string> & Map<"assetInfo", AssetInfo> & Map<"fullContentHash", string>} KnownCodeGenerationResultDataForAssetModules */
/** @typedef {Map<"share-init", [{ shareScope: string, initStage: number, init: string }]>} KnownCodeGenerationResultForSharing */
/** @typedef {KnownCodeGenerationResultDataForJavascriptModules & KnownCodeGenerationResultDataForCssModules & KnownCodeGenerationResultDataForAssetModules & KnownCodeGenerationResultForSharing & Map<string, EXPECTED_ANY>} CodeGenerationResultData */
/**
 * Defines the all code generation schemas type used by this module.
 * @typedef {object} AllCodeGenerationSchemas
 * @property {Set<string>} topLevelDeclarations top level declarations for javascript modules
 * @property {InitFragment<EXPECTED_ANY>[]} chunkInitFragments chunk init fragments for javascript modules
 * @property {{ javascript?: string, ["css-url"]?: string }} url url for css and javascript modules
 * @property {string} filename a filename for asset modules
 * @property {AssetInfo} assetInfo an asset info for asset modules
 * @property {string} fullContentHash a full content hash for asset modules
 * @property {[{ shareScope: string, initStage: number, init: string }]} share-init share-init for modules federation
 */
/**
 * Defines the code gen value type used by this module.
 * @template {string} K
 * @typedef {K extends keyof AllCodeGenerationSchemas ? AllCodeGenerationSchemas[K] : EXPECTED_ANY} CodeGenValue
 */
/**
 * Defines the code gen map overloads type used by this module.
 * @typedef {object} CodeGenMapOverloads
 * @property {<K extends string>(key: K) => CodeGenValue<K> | undefined} get
 * @property {<K extends string>(key: K, value: CodeGenValue<K>) => CodeGenerationResultData} set
 * @property {<K extends string>(key: K) => boolean} has
 * @property {<K extends string>(key: K) => boolean} delete
 */
/**
 * Defines the code generation result data type used by this module.
 * @typedef {Omit<Map<string, EXPECTED_ANY>, "get" | "set" | "has" | "delete"> & CodeGenMapOverloads} CodeGenerationResultData
 */
/** @typedef {Map<SourceType, Source>} Sources */
/**
 * Defines the code generation result type used by this module.
 * @typedef {object} CodeGenerationResult
 * @property {Map<string, Source>} sources the resulting sources for all source types
 * @property {Sources} sources the resulting sources for all source types
 * @property {CodeGenerationResultData=} data the resulting data for all source types
 * @property {ReadOnlyRuntimeRequirements | null} runtimeRequirements the runtime requirements
 * @property {string=} hash a hash of the code generation result (will be automatically calculated from sources and runtimeRequirements if not provided)
 */
/**
 * Defines the lib ident options type used by this module.
 * @typedef {object} LibIdentOptions
 * @property {string} context absolute context path to which lib ident is relative to
 * @property {AssociatedObjectForCache=} associatedObjectForCache object for caching
 */
/**
 * Defines the known build meta type used by this module.
 * @typedef {object} KnownBuildMeta
 * @property {("default" | "namespace" | "flagged" | "dynamic")=} exportsType
 * @property {CssParserExportType=} exportType
 * @property {(false | "redirect" | "redirect-warn")=} defaultObject
 * @property {boolean=} strictHarmonyModule
 * @property {boolean=} treatAsCommonJs
@@ -126,13 +175,12 @@
 * @property {boolean=} sideEffectFree
 * @property {boolean=} isCSSModule
 * @property {Record<string, string>=} jsIncompatibleExports
 * @property {Record<string, string>=} exportsFinalName
 * @property {string=} factoryExportsBinding
 * @property {Map<string, Record<string, string>>=} exportsFinalNameByRuntime
 * @property {Map<string, string>=} exportsSourceByRuntime
 */
/** @typedef {LazySet<string>} FileSystemDependencies */
/**
 * Defines the known build info type used by this module.
 * @typedef {object} KnownBuildInfo
 * @property {boolean=} cacheable
 * @property {boolean=} parsed
@@ -158,6 +206,7 @@
 * @property {boolean=} javascriptModule for external modules
 * @property {boolean=} active for lazy compilation modules
 * @property {CssData=} cssData for css modules
 * @property {string=} charset for css modules (charset at-rule)
 * @property {JsonData=} jsonData for json modules
 * @property {Set<string>=} topLevelDeclarations top level declaration names
 */
@@ -166,6 +215,7 @@
/** @typedef {Map<string, ValueCacheVersion>} ValueCacheVersions */
/**
 * Defines the need build context type used by this module.
 * @typedef {object} NeedBuildContext
 * @property {Compilation} compilation
 * @property {FileSystemInfo} fileSystemInfo
@@ -180,6 +230,7 @@
/** @typedef {KnownBuildInfo & Record<string, EXPECTED_ANY>} BuildInfo */
/**
 * Defines the factory meta type used by this module.
 * @typedef {object} FactoryMeta
 * @property {boolean=} sideEffectFree
 */
@@ -188,10 +239,12 @@
let debugId = 1000;
const DEFAULT_TYPES_UNKNOWN = new Set(["unknown"]);
/** @type {SourceTypes} */
const DEFAULT_TYPES_UNKNOWN = new Set([UNKNOWN_TYPE]);
const deprecatedNeedRebuild = util.deprecate(
   /**
    * Handles the callback logic for this hook.
    * @param {Module} module the module
    * @param {NeedBuildContext} context context info
    * @returns {boolean} true, when rebuild is needed
@@ -212,6 +265,7 @@
class Module extends DependenciesBlock {
   /**
    * Creates an instance of Module.
    * @param {ModuleTypes | ""} type the module type, when deserializing the type is not known and is an empty string
    * @param {(string | null)=} context an optional context
    * @param {(string | null)=} layer an optional layer in which the module is
@@ -266,6 +320,8 @@
   // TODO remove in webpack 6
   // BACKWARD-COMPAT START
   /**
    * Returns the module id assigned by the chunk graph.
    * @deprecated
    * @returns {ModuleId | null} module id
    */
   get id() {
@@ -277,6 +333,8 @@
   }
   /**
    * Updates the module id using the provided value.
    * @deprecated
    * @param {ModuleId} value value
    */
   set id(value) {
@@ -292,6 +350,8 @@
   }
   /**
    * Returns the hash of the module.
    * @deprecated
    * @returns {string} the hash of the module
    */
   get hash() {
@@ -303,6 +363,8 @@
   }
   /**
    * Returns the rendered hash of the module.
    * @deprecated
    * @returns {string} the shortened hash of the module
    */
   get renderedHash() {
@@ -313,6 +375,10 @@
      ).getRenderedModuleHash(this, undefined);
   }
   /**
    * @deprecated
    * @returns {ModuleProfile | undefined} module profile
    */
   get profile() {
      return ModuleGraph.getModuleGraphForModule(
         this,
@@ -321,6 +387,10 @@
      ).getProfile(this);
   }
   /**
    * @deprecated
    * @param {ModuleProfile | undefined} value module profile
    */
   set profile(value) {
      ModuleGraph.getModuleGraphForModule(
         this,
@@ -330,6 +400,8 @@
   }
   /**
    * Returns the pre-order index.
    * @deprecated
    * @returns {number | null} the pre order index
    */
   get index() {
@@ -341,6 +413,8 @@
   }
   /**
    * Updates the pre-order index using the provided value.
    * @deprecated
    * @param {number} value the pre order index
    */
   set index(value) {
@@ -352,6 +426,8 @@
   }
   /**
    * Returns the post-order index.
    * @deprecated
    * @returns {number | null} the post order index
    */
   get index2() {
@@ -363,6 +439,8 @@
   }
   /**
    * Updates the post-order index using the provided value.
    * @deprecated
    * @param {number} value the post order index
    */
   set index2(value) {
@@ -374,6 +452,8 @@
   }
   /**
    * Returns the depth.
    * @deprecated
    * @returns {number | null} the depth
    */
   get depth() {
@@ -385,6 +465,8 @@
   }
   /**
    * Updates the depth using the provided value.
    * @deprecated
    * @param {number} value the depth
    */
   set depth(value) {
@@ -396,6 +478,8 @@
   }
   /**
    * Returns the issuer.
    * @deprecated
    * @returns {Module | null | undefined} issuer
    */
   get issuer() {
@@ -407,6 +491,8 @@
   }
   /**
    * Updates the issuer using the provided value.
    * @deprecated
    * @param {Module | null} value issuer
    */
   set issuer(value) {
@@ -417,6 +503,10 @@
      ).setIssuer(this, value);
   }
   /**
    * @deprecated
    * @returns {boolean | SortableSet<string> | null} used exports
    */
   get usedExports() {
      return ModuleGraph.getModuleGraphForModule(
         this,
@@ -426,6 +516,7 @@
   }
   /**
    * Gets optimization bailout.
    * @deprecated
    * @returns {OptimizationBailouts} list
    */
@@ -437,6 +528,10 @@
      ).getOptimizationBailout(this);
   }
   /**
    * @deprecated
    * @returns {boolean} true when optional, otherwise false
    */
   get optional() {
      return this.isOptional(
         ModuleGraph.getModuleGraphForModule(
@@ -448,6 +543,8 @@
   }
   /**
    * Adds the provided chunk to the module.
    * @deprecated
    * @param {Chunk} chunk the chunk
    * @returns {boolean} true, when the module was added
    */
@@ -463,6 +560,8 @@
   }
   /**
    * Removes the provided chunk from the module.
    * @deprecated
    * @param {Chunk} chunk the chunk
    * @returns {void}
    */
@@ -475,6 +574,8 @@
   }
   /**
    * Checks whether this module is in the provided chunk.
    * @deprecated
    * @param {Chunk} chunk the chunk
    * @returns {boolean} true, when the module is in the chunk
    */
@@ -486,6 +587,10 @@
      ).isModuleInChunk(this, chunk);
   }
   /**
    * @deprecated
    * @returns {boolean} true when is entry module, otherwise false
    */
   isEntryModule() {
      return ChunkGraph.getChunkGraphForModule(
         this,
@@ -494,6 +599,10 @@
      ).isEntryModule(this);
   }
   /**
    * @deprecated
    * @returns {Chunk[]} chunks
    */
   getChunks() {
      return ChunkGraph.getChunkGraphForModule(
         this,
@@ -502,6 +611,10 @@
      ).getModuleChunks(this);
   }
   /**
    * @deprecated
    * @returns {number} number of chunks
    */
   getNumberOfChunks() {
      return ChunkGraph.getChunkGraphForModule(
         this,
@@ -510,6 +623,10 @@
      ).getNumberOfModuleChunks(this);
   }
   /**
    * @deprecated
    * @returns {Iterable<Chunk>} chunks
    */
   get chunksIterable() {
      return ChunkGraph.getChunkGraphForModule(
         this,
@@ -519,6 +636,8 @@
   }
   /**
    * Checks whether this module provides the specified export.
    * @deprecated
    * @param {string} exportName a name of an export
    * @returns {boolean | null} true, if the export is provided why the module.
    * null, if it's unknown.
@@ -534,6 +653,7 @@
   // BACKWARD-COMPAT END
   /**
    * Gets exports argument.
    * @returns {string} name of the exports argument
    */
   get exportsArgument() {
@@ -541,6 +661,7 @@
   }
   /**
    * Gets module argument.
    * @returns {string} name of the module argument
    */
   get moduleArgument() {
@@ -548,6 +669,7 @@
   }
   /**
    * Returns export type.
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {boolean | undefined} strict the importing module is strict
    * @returns {ExportsType} export type
@@ -618,6 +740,7 @@
   }
   /**
    * Adds presentational dependency.
    * @param {Dependency} presentationalDependency dependency being tied to module.
    * This is a Dependency without edge in the module graph. It's only for presentation.
    * @returns {void}
@@ -630,6 +753,7 @@
   }
   /**
    * Adds code generation dependency.
    * @param {Dependency} codeGenerationDependency dependency being tied to module.
    * This is a Dependency where the code generation result of the referenced module is needed during code generation.
    * The Dependency should also be added to normal dependencies via addDependency.
@@ -643,7 +767,7 @@
   }
   /**
    * Removes all dependencies and blocks
    * Clear dependencies and blocks.
    * @returns {void}
    */
   clearDependenciesAndBlocks() {
@@ -657,6 +781,7 @@
   }
   /**
    * Adds the provided warning to the module.
    * @param {WebpackError} warning the warning
    * @returns {void}
    */
@@ -668,6 +793,7 @@
   }
   /**
    * Returns list of warnings if any.
    * @returns {Iterable<WebpackError> | undefined} list of warnings if any
    */
   getWarnings() {
@@ -675,6 +801,7 @@
   }
   /**
    * Gets number of warnings.
    * @returns {number} number of warnings
    */
   getNumberOfWarnings() {
@@ -682,6 +809,7 @@
   }
   /**
    * Adds the provided error to the module.
    * @param {WebpackError} error the error
    * @returns {void}
    */
@@ -693,6 +821,7 @@
   }
   /**
    * Returns list of errors if any.
    * @returns {Iterable<WebpackError> | undefined} list of errors if any
    */
   getErrors() {
@@ -700,6 +829,7 @@
   }
   /**
    * Gets number of errors.
    * @returns {number} number of errors
    */
   getNumberOfErrors() {
@@ -720,6 +850,7 @@
   }
   /**
    * Checks whether this module is optional.
    * @param {ModuleGraph} moduleGraph the module graph
    * @returns {boolean} true, if the module is optional
    */
@@ -739,6 +870,7 @@
   }
   /**
    * Checks whether this module is accessible in chunk.
    * @param {ChunkGraph} chunkGraph the chunk graph
    * @param {Chunk} chunk a chunk
    * @param {Chunk=} ignoreChunk chunk to be ignored
@@ -753,6 +885,7 @@
   }
   /**
    * Checks whether this module is accessible in chunk group.
    * @param {ChunkGraph} chunkGraph the chunk graph
    * @param {ChunkGroup} chunkGroup a chunk group
    * @param {Chunk=} ignoreChunk chunk to be ignored
@@ -780,6 +913,7 @@
   }
   /**
    * Checks whether this module contains the chunk.
    * @param {Chunk} chunk a chunk
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {ChunkGraph} chunkGraph the chunk graph
@@ -805,6 +939,7 @@
   }
   /**
    * Checks whether this module contains the module graph.
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {RuntimeSpec} runtime the runtime
    * @returns {boolean} true if at least one other module depends on this module
@@ -817,6 +952,7 @@
   }
   /**
    * Returns a string representation.
    * @returns {string} for debugging
    */
   toString() {
@@ -824,6 +960,7 @@
   }
   /**
    * Checks whether the module needs to be rebuilt for the current build state.
    * @param {NeedBuildContext} context context info
    * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
    * @returns {void}
@@ -838,9 +975,10 @@
   }
   /**
    * Checks whether it needs rebuild.
    * @deprecated Use needBuild instead
    * @param {Map<string, number|null>} fileTimestamps timestamps of files
    * @param {Map<string, number|null>} contextTimestamps timestamps of directories
    * @param {Map<string, number | null>} fileTimestamps timestamps of files
    * @param {Map<string, number | null>} contextTimestamps timestamps of directories
    * @returns {boolean} true, if the module needs a rebuild
    */
   needRebuild(fileTimestamps, contextTimestamps) {
@@ -848,6 +986,7 @@
   }
   /**
    * Updates the hash with the data contributed by this instance.
    * @param {Hash} hash the hash used to track dependencies
    * @param {UpdateHashContext} context context
    * @returns {void}
@@ -874,6 +1013,7 @@
   }
   /**
    * Invalidates the cached state associated with this value.
    * @returns {void}
    */
   invalidateBuild() {
@@ -882,6 +1022,7 @@
   /* istanbul ignore next */
   /**
    * Returns the unique identifier used to reference this module.
    * @abstract
    * @returns {string} a unique identifier of the module
    */
@@ -893,6 +1034,7 @@
   /* istanbul ignore next */
   /**
    * Returns a human-readable identifier for this module.
    * @abstract
    * @param {RequestShortener} requestShortener the request shortener
    * @returns {string} a user readable identifier of the module
@@ -905,6 +1047,7 @@
   /* istanbul ignore next */
   /**
    * Builds the module using the provided compilation context.
    * @abstract
    * @param {WebpackOptions} options webpack options
    * @param {Compilation} compilation the compilation
@@ -920,6 +1063,7 @@
   }
   /**
    * Returns the source types this module can generate.
    * @abstract
    * @returns {SourceTypes} types available (do not mutate)
    */
@@ -928,18 +1072,32 @@
      if (this.source === Module.prototype.source) {
         return DEFAULT_TYPES_UNKNOWN;
      }
      return JS_TYPES;
      return JAVASCRIPT_TYPES;
   }
   /**
    * Basic source types are high-level categories like javascript, css, webassembly, etc.
    * We only have built-in knowledge about the javascript basic type here; other basic types may be
    * added or changed over time by generators and do not need to be handled or detected here.
    *
    * Some modules, e.g. RemoteModule, may return non-basic source types like "remote" and "share-init"
    * from getSourceTypes(), but their generated output is still JavaScript, i.e. their basic type is JS.
    * @returns {BasicSourceTypes} types available (do not mutate)
    */
   getSourceBasicTypes() {
      return this.getSourceTypes();
   }
   /**
    * Returns generated source.
    * @abstract
    * @deprecated Use codeGeneration() instead
    * @param {DependencyTemplates} dependencyTemplates the dependency templates
    * @param {RuntimeTemplate} runtimeTemplate the runtime template
    * @param {string=} type the type of source that should be generated
    * @param {SourceType=} type the type of source that should be generated
    * @returns {Source} generated source
    */
   source(dependencyTemplates, runtimeTemplate, type = "javascript") {
   source(dependencyTemplates, runtimeTemplate, type = JAVASCRIPT_TYPE) {
      if (this.codeGeneration === Module.prototype.codeGeneration) {
         const AbstractMethodError = require("./AbstractMethodError");
@@ -957,6 +1115,7 @@
         moduleGraph: chunkGraph.moduleGraph,
         chunkGraph,
         runtime: undefined,
         runtimes: [],
         codeGenerationResults: undefined
      };
      const sources = this.codeGeneration(codeGenContext).sources;
@@ -964,12 +1123,13 @@
      return /** @type {Source} */ (
         type
            ? sources.get(type)
            : sources.get(/** @type {string} */ (first(this.getSourceTypes())))
            : sources.get(/** @type {SourceType} */ (first(this.getSourceTypes())))
      );
   }
   /* istanbul ignore next */
   /**
    * Returns the estimated size for the requested source type.
    * @abstract
    * @param {string=} type the source type for which the size should be estimated
    * @returns {number} the estimated size of the module (must be non-zero)
@@ -981,6 +1141,7 @@
   }
   /**
    * Gets the library identifier.
    * @param {LibIdentOptions} options options
    * @returns {LibIdent | null} an identifier for library inclusion
    */
@@ -989,6 +1150,7 @@
   }
   /**
    * Returns the path used when matching this module against rule conditions.
    * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
    */
   nameForCondition() {
@@ -996,6 +1158,7 @@
   }
   /**
    * Returns the reason this module cannot be concatenated, when one exists.
    * @param {ConcatenationBailoutReasonContext} context context
    * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
    */
@@ -1004,6 +1167,7 @@
   }
   /**
    * Gets side effects connection state.
    * @param {ModuleGraph} moduleGraph the module graph
    * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
    */
@@ -1012,14 +1176,16 @@
   }
   /**
    * Generates code and runtime requirements for this module.
    * @param {CodeGenerationContext} context context for code generation
    * @returns {CodeGenerationResult} result
    */
   codeGeneration(context) {
      // Best override this method
      /** @type {Sources} */
      const sources = new Map();
      for (const type of this.getSourceTypes()) {
         if (type !== "unknown") {
         if (type !== UNKNOWN_TYPE) {
            sources.set(
               type,
               this.source(
@@ -1041,9 +1207,10 @@
   }
   /**
    * Returns true if the module can be placed in the chunk.
    * @param {Chunk} chunk the chunk which condition should be checked
    * @param {Compilation} compilation the compilation
    * @returns {boolean} true, if the chunk is ok for the module
    * @returns {boolean} true if the module can be placed in the chunk
    */
   chunkCondition(chunk, compilation) {
      return true;
@@ -1099,6 +1266,7 @@
   }
   /**
    * Gets the original source.
    * @returns {Source | null} the original source for the module before webpack transformation
    */
   originalSource() {
@@ -1106,6 +1274,7 @@
   }
   /**
    * Adds the provided file dependencies to the module.
    * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
    * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
    * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
@@ -1119,6 +1288,7 @@
   ) {}
   /**
    * Serializes this instance into the provided serializer context.
    * @param {ObjectSerializerContext} context context
    */
   serialize(context) {
@@ -1149,6 +1319,7 @@
   }
   /**
    * Restores this instance from the provided deserializer context.
    * @param {ObjectDeserializerContext} context context
    */
   deserialize(context) {
@@ -1169,6 +1340,22 @@
      this.codeGenerationDependencies = read();
      super.deserialize(context);
   }
   // TODO remove in webpack 6
   /**
    * Gets source basic types.
    * @deprecated In webpack 6, call getSourceBasicTypes() directly on the module instance instead of using this static method.
    * @param {Module} module the module
    * @returns {ReturnType<Module["getSourceBasicTypes"]>} the source types of the module
    */
   static getSourceBasicTypes(module) {
      if (!(module instanceof Module)) {
         // https://github.com/webpack/webpack/issues/20597
         // fallback to javascript
         return JAVASCRIPT_TYPES;
      }
      return module.getSourceBasicTypes();
   }
}
makeSerializable(Module, "webpack/lib/Module");
@@ -1176,6 +1363,7 @@
// TODO remove in webpack 6
Object.defineProperty(Module.prototype, "hasEqualsChunks", {
   /**
    * Gets has equals chunks.
    * @deprecated
    * @returns {EXPECTED_ANY} throw an error
    */
@@ -1189,6 +1377,7 @@
// TODO remove in webpack 6
Object.defineProperty(Module.prototype, "isUsed", {
   /**
    * Returns throw an error.
    * @deprecated
    * @returns {EXPECTED_ANY} throw an error
    */
@@ -1202,11 +1391,13 @@
// TODO remove in webpack 6
Object.defineProperty(Module.prototype, "errors", {
   /**
    * Returns errors.
    * @deprecated
    * @returns {WebpackError[]} errors
    */
   get: util.deprecate(
      /**
       * Returns errors.
       * @this {Module}
       * @returns {WebpackError[]} errors
       */
@@ -1224,11 +1415,13 @@
// TODO remove in webpack 6
Object.defineProperty(Module.prototype, "warnings", {
   /**
    * Returns warnings.
    * @deprecated
    * @returns {WebpackError[]} warnings
    */
   get: util.deprecate(
      /**
       * Returns warnings.
       * @this {Module}
       * @returns {WebpackError[]} warnings
       */
@@ -1246,6 +1439,7 @@
// TODO remove in webpack 6
Object.defineProperty(Module.prototype, "used", {
   /**
    * Returns throw an error.
    * @deprecated
    * @returns {EXPECTED_ANY} throw an error
    */
@@ -1255,6 +1449,7 @@
      );
   },
   /**
    * Updates used using the provided value.
    * @param {EXPECTED_ANY} value value
    */
   set(value) {