WXL
3 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js
@@ -18,8 +18,7 @@
const { countIterable } = require("../util/IterableHelpers");
const { combine, first } = require("../util/SetHelpers");
const makeSerializable = require("../util/makeSerializable");
const propertyAccess = require("../util/propertyAccess");
const { propertyName } = require("../util/propertyName");
const { propertyAccess, propertyName } = require("../util/property");
const {
   filterRuntime,
   getRuntimeKey,
@@ -58,16 +57,20 @@
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
/** @typedef {import("./HarmonyImportDependency").Ids} Ids */
/** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
/** @typedef {import("./HarmonyExportInitFragment").ExportMap} ExportMap */
/** @typedef {import("../dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-dynamic-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-fake-namespace-object"|"reexport-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
/** @typedef {"missing" | "unused" | "empty-star" | "reexport-dynamic-default" | "reexport-named-default" | "reexport-namespace-object" | "reexport-fake-namespace-object" | "reexport-undefined" | "normal-reexport" | "dynamic-reexport"} ExportModeType */
const { ExportPresenceModes } = HarmonyImportDependency;
const idsSymbol = Symbol("HarmonyExportImportedSpecifierDependency.ids");
const idsSymbol = /** @type {symbol} */ (
   Symbol("HarmonyExportImportedSpecifierDependency.ids")
);
class NormalReexportItem {
   /**
    * Creates an instance of NormalReexportItem.
    * @param {string} name export name
    * @param {Ids} ids reexported ids from other module
    * @param {ExportInfo} exportInfo export info from other module
@@ -88,6 +91,7 @@
class ExportMode {
   /**
    * Creates an instance of ExportMode.
    * @param {ExportModeType} type type of the mode
    */
   constructor(type) {
@@ -125,6 +129,7 @@
/** @typedef {number[]} DependencyIndices */
/**
 * Determine export assignments.
 * @param {ModuleGraph} moduleGraph module graph
 * @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
 * @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
@@ -168,6 +173,7 @@
};
/**
 * Finds dependency for name.
 * @param {object} options options
 * @param {ExportInfoName[]} options.names names
 * @param {DependencyIndices} options.dependencyIndices dependency indices
@@ -197,6 +203,7 @@
};
/**
 * Returns the export mode.
 * @param {ModuleGraph} moduleGraph the module graph
 * @param {HarmonyExportImportedSpecifierDependency} dep the dependency
 * @param {string} runtimeKey the runtime key
@@ -264,6 +271,7 @@
   // reexporting with a fixed name
   if (name) {
      /** @type {ExportMode} */
      let mode;
      const exportInfo = exportsInfo.getReadOnlyExportInfo(name);
@@ -370,6 +378,7 @@
class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
   /**
    * Creates an instance of HarmonyExportImportedSpecifierDependency.
    * @param {string} request the request string
    * @param {number} sourceOrder the order in the original source file
    * @param {Ids} ids the requested export name of the imported module
@@ -404,6 +413,7 @@
   }
   /**
    * Could affect referencing module.
    * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
    */
   couldAffectReferencingModule() {
@@ -411,16 +421,28 @@
   }
   // TODO webpack 6 remove
   /**
    * Returns id.
    * @deprecated
    */
   get id() {
      throw new Error("id was renamed to ids and type changed to string[]");
   }
   // TODO webpack 6 remove
   /**
    * Returns id.
    * @deprecated
    */
   getId() {
      throw new Error("id was renamed to ids and type changed to string[]");
   }
   // TODO webpack 6 remove
   /**
    * Updates id.
    * @deprecated
    */
   setId() {
      throw new Error("id was renamed to ids and type changed to string[]");
   }
@@ -430,6 +452,7 @@
   }
   /**
    * Returns the imported id.
    * @param {ModuleGraph} moduleGraph the module graph
    * @returns {Ids} the imported id
    */
@@ -438,6 +461,7 @@
   }
   /**
    * Updates ids using the provided module graph.
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {Ids} ids the imported ids
    * @returns {void}
@@ -447,6 +471,7 @@
   }
   /**
    * Returns the export mode.
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {RuntimeSpec} runtime the runtime
    * @returns {ExportMode} the export mode
@@ -460,11 +485,12 @@
   }
   /**
    * Gets star reexports.
    * @param {ModuleGraph} moduleGraph the module graph
    * @param {RuntimeSpec} runtime the runtime
    * @param {ExportsInfo} exportsInfo exports info about the current module (optional)
    * @param {Module} importedModule the imported module (optional)
    * @returns {{exports?: Exports, checked?: Checked, ignoredExports: IgnoredExports, hidden?: Hidden}} information
    * @returns {{ exports?: Exports, checked?: Checked, ignoredExports: IgnoredExports, hidden?: Hidden }} information
    */
   getStarReexports(
      moduleGraph,
@@ -480,8 +506,10 @@
      const noExtraImports =
         exportsInfo.otherExportsInfo.getUsed(runtime) === UsageState.Unused;
      /** @type {IgnoredExports} */
      const ignoredExports = new Set(["default", ...this.activeExports]);
      /** @type {Hidden | undefined} */
      let hiddenExports;
      const otherStarExports =
         this._discoverActiveExportsFromOtherStarExports(moduleGraph);
@@ -546,6 +574,7 @@
   }
   /**
    * Returns function to determine if the connection is active.
    * @param {ModuleGraph} moduleGraph module graph
    * @returns {null | false | GetConditionFn} function to determine if the connection is active
    */
@@ -557,6 +586,7 @@
   }
   /**
    * Gets module evaluation side effects state.
    * @param {ModuleGraph} moduleGraph the module graph
    * @returns {ConnectionState} how this dependency connects the module to referencing modules
    */
@@ -638,6 +668,7 @@
   }
   /**
    * Discover active exports from other star exports.
    * @param {ModuleGraph} moduleGraph the module graph
    * @returns {{ names: ExportInfoName[], namesSlice: number, dependencyIndices: DependencyIndices, dependencyIndex: number } | undefined} exported names and their origin dependency
    */
@@ -816,6 +847,7 @@
   }
   /**
    * Get effective export presence level.
    * @param {ModuleGraph} moduleGraph module graph
    * @returns {ExportPresenceMode} effective mode
    */
@@ -830,7 +862,7 @@
   }
   /**
    * Returns warnings
    * Returns warnings.
    * @param {ModuleGraph} moduleGraph module graph
    * @returns {WebpackError[] | null | undefined} warnings
    */
@@ -843,7 +875,7 @@
   }
   /**
    * Returns errors
    * Returns errors.
    * @param {ModuleGraph} moduleGraph module graph
    * @returns {WebpackError[] | null | undefined} errors
    */
@@ -856,6 +888,7 @@
   }
   /**
    * Returns errors.
    * @param {ModuleGraph} moduleGraph module graph
    * @returns {WebpackError[] | undefined} errors
    */
@@ -942,6 +975,7 @@
   }
   /**
    * Serializes this instance into the provided serializer context.
    * @param {ObjectSerializerContext} context context
    */
   serialize(context) {
@@ -959,6 +993,7 @@
   }
   /**
    * Restores this instance from the provided deserializer context.
    * @param {ObjectDeserializerContext} context context
    */
   deserialize(context) {
@@ -985,6 +1020,7 @@
   HarmonyImportDependency.Template
) {
   /**
    * 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
@@ -1028,6 +1064,7 @@
   }
   /**
    * Add export fragments.
    * @param {InitFragment<GenerateContext>[]} initFragments target array for init fragments
    * @param {HarmonyExportImportedSpecifierDependency} dep dependency
    * @param {ExportMode} mode the export mode
@@ -1251,9 +1288,11 @@
            }
            content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
            content += runtimeTemplate.supportsArrowFunction()
               ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
               : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
            content +=
               runtimeTemplate.supportsArrowFunction() &&
               runtimeTemplate.supportsConst()
                  ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
                  : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
            runtimeRequirements.add(RuntimeGlobals.exports);
            runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
@@ -1277,6 +1316,7 @@
   }
   /**
    * Gets reexport fragment.
    * @param {Module} module the current module
    * @param {string} comment comment
    * @param {UsedName} key key
@@ -1298,6 +1338,7 @@
      runtimeRequirements.add(RuntimeGlobals.exports);
      runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
      /** @type {ExportMap} */
      const map = new Map();
      map.set(key, `/* ${comment} */ ${returnValue}`);
@@ -1305,6 +1346,7 @@
   }
   /**
    * Gets reexport fake namespace object fragments.
    * @param {Module} module module
    * @param {UsedName} key key
    * @param {string} name name
@@ -1323,6 +1365,7 @@
      runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
      runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
      /** @type {ExportMap} */
      const map = new Map();
      map.set(
         key,
@@ -1343,6 +1386,7 @@
   }
   /**
    * Gets reexport deferred namespace object fragments.
    * @param {Module} module module
    * @param {ChunkGraph} chunkGraph chunkGraph
    * @param {UsedName} key key
@@ -1363,6 +1407,7 @@
      runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
      runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
      /** @type {ExportMap} */
      const map = new Map();
      const moduleId = JSON.stringify(chunkGraph.getModuleId(module));
      const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
@@ -1383,6 +1428,7 @@
   }
   /**
    * Gets conditional reexport statement.
    * @param {Module} module module
    * @param {string} key key
    * @param {string} name name
@@ -1418,6 +1464,7 @@
   }
   /**
    * Returns value.
    * @param {string} name name
    * @param {null | false | string | string[]} valueKey value key
    * @returns {string | undefined} value
@@ -1446,6 +1493,7 @@
   }
   /**
    * Processes the provided dep.
    * @param {HarmonyExportImportedSpecifierDependency} dep dependency
    * @returns {void}
    */
@@ -1458,6 +1506,7 @@
   }
   /**
    * Serializes this instance into the provided serializer context.
    * @param {ObjectSerializerContext} context context
    */
   serialize({ write, setCircularReference }) {
@@ -1466,6 +1515,7 @@
   }
   /**
    * Restores this instance from the provided deserializer context.
    * @param {ObjectDeserializerContext} context context
    */
   deserialize({ read, setCircularReference }) {