summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/processExportInfo.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
commitd1d9f00b1bd660842addf5e6b1d1b64c852a9eea (patch)
tree60fb37ae73a1109d95301de5ec9b61b5726a4b61 /node_modules/webpack/lib/dependencies/processExportInfo.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/webpack/lib/dependencies/processExportInfo.js')
-rw-r--r--node_modules/webpack/lib/dependencies/processExportInfo.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/dependencies/processExportInfo.js b/node_modules/webpack/lib/dependencies/processExportInfo.js
new file mode 100644
index 00000000..435c4ac9
--- /dev/null
+++ b/node_modules/webpack/lib/dependencies/processExportInfo.js
@@ -0,0 +1,65 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { UsageState } = require("../ExportsInfo");
+
+/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
+/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
+
+/**
+ * @param {RuntimeSpec} runtime the runtime
+ * @param {string[][]} referencedExports list of referenced exports, will be added to
+ * @param {string[]} prefix export prefix
+ * @param {ExportInfo=} exportInfo the export info
+ * @param {boolean} defaultPointsToSelf when true, using default will reference itself
+ * @param {Set<ExportInfo>} alreadyVisited already visited export info (to handle circular reexports)
+ */
+const processExportInfo = (
+ runtime,
+ referencedExports,
+ prefix,
+ exportInfo,
+ defaultPointsToSelf = false,
+ alreadyVisited = new Set()
+) => {
+ if (!exportInfo) {
+ referencedExports.push(prefix);
+ return;
+ }
+ const used = exportInfo.getUsed(runtime);
+ if (used === UsageState.Unused) return;
+ if (alreadyVisited.has(exportInfo)) {
+ referencedExports.push(prefix);
+ return;
+ }
+ alreadyVisited.add(exportInfo);
+ if (
+ used !== UsageState.OnlyPropertiesUsed ||
+ !exportInfo.exportsInfo ||
+ exportInfo.exportsInfo.otherExportsInfo.getUsed(runtime) !==
+ UsageState.Unused
+ ) {
+ alreadyVisited.delete(exportInfo);
+ referencedExports.push(prefix);
+ return;
+ }
+ const exportsInfo = exportInfo.exportsInfo;
+ for (const exportInfo of exportsInfo.orderedExports) {
+ processExportInfo(
+ runtime,
+ referencedExports,
+ defaultPointsToSelf && exportInfo.name === "default"
+ ? prefix
+ : prefix.concat(exportInfo.name),
+ exportInfo,
+ false,
+ alreadyVisited
+ );
+ }
+ alreadyVisited.delete(exportInfo);
+};
+module.exports = processExportInfo;