summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js')
-rw-r--r--node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js b/node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js
new file mode 100644
index 00000000..d2826d12
--- /dev/null
+++ b/node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js
@@ -0,0 +1,56 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { getEntryRuntime } = require("./util/runtime");
+
+/** @typedef {import("./Compiler")} Compiler */
+
+const PLUGIN_NAME = "FlagEntryExportAsUsedPlugin";
+
+class FlagEntryExportAsUsedPlugin {
+ /**
+ * @param {boolean} nsObjectUsed true, if the ns object is used
+ * @param {string} explanation explanation for the reason
+ */
+ constructor(nsObjectUsed, explanation) {
+ this.nsObjectUsed = nsObjectUsed;
+ this.explanation = explanation;
+ }
+
+ /**
+ * Apply the plugin
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ apply(compiler) {
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
+ const moduleGraph = compilation.moduleGraph;
+ compilation.hooks.seal.tap(PLUGIN_NAME, () => {
+ for (const [
+ entryName,
+ { dependencies: deps, options }
+ ] of compilation.entries) {
+ const runtime = getEntryRuntime(compilation, entryName, options);
+ for (const dep of deps) {
+ const module = moduleGraph.getModule(dep);
+ if (module) {
+ const exportsInfo = moduleGraph.getExportsInfo(module);
+ if (this.nsObjectUsed) {
+ exportsInfo.setUsedInUnknownWay(runtime);
+ } else {
+ exportsInfo.setAllKnownExportsUsed(runtime);
+ }
+ moduleGraph.addExtraReason(module, this.explanation);
+ }
+ }
+ }
+ });
+ });
+ }
+}
+
+module.exports = FlagEntryExportAsUsedPlugin;