summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/container/ContainerPlugin.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/container/ContainerPlugin.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/webpack/lib/container/ContainerPlugin.js')
-rw-r--r--node_modules/webpack/lib/container/ContainerPlugin.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/container/ContainerPlugin.js b/node_modules/webpack/lib/container/ContainerPlugin.js
new file mode 100644
index 00000000..83309104
--- /dev/null
+++ b/node_modules/webpack/lib/container/ContainerPlugin.js
@@ -0,0 +1,107 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
+*/
+
+"use strict";
+
+const createSchemaValidation = require("../util/create-schema-validation");
+const ContainerEntryDependency = require("./ContainerEntryDependency");
+const ContainerEntryModuleFactory = require("./ContainerEntryModuleFactory");
+const ContainerExposedDependency = require("./ContainerExposedDependency");
+const { parseOptions } = require("./options");
+
+/** @typedef {import("../../declarations/plugins/container/ContainerPlugin").ContainerPluginOptions} ContainerPluginOptions */
+/** @typedef {import("../Compiler")} Compiler */
+
+const validate = createSchemaValidation(
+ require("../../schemas/plugins/container/ContainerPlugin.check.js"),
+ () => require("../../schemas/plugins/container/ContainerPlugin.json"),
+ {
+ name: "Container Plugin",
+ baseDataPath: "options"
+ }
+);
+
+const PLUGIN_NAME = "ContainerPlugin";
+
+class ContainerPlugin {
+ /**
+ * @param {ContainerPluginOptions} options options
+ */
+ constructor(options) {
+ validate(options);
+
+ this._options = {
+ name: options.name,
+ shareScope: options.shareScope || "default",
+ library: options.library || {
+ type: "var",
+ name: options.name
+ },
+ runtime: options.runtime,
+ filename: options.filename || undefined,
+ exposes: parseOptions(
+ options.exposes,
+ item => ({
+ import: Array.isArray(item) ? item : [item],
+ name: undefined
+ }),
+ item => ({
+ import: Array.isArray(item.import) ? item.import : [item.import],
+ name: item.name || undefined
+ })
+ )
+ };
+ }
+
+ /**
+ * Apply the plugin
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ apply(compiler) {
+ const { name, exposes, shareScope, filename, library, runtime } =
+ this._options;
+
+ if (!compiler.options.output.enabledLibraryTypes.includes(library.type)) {
+ compiler.options.output.enabledLibraryTypes.push(library.type);
+ }
+
+ compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
+ const dep = new ContainerEntryDependency(name, exposes, shareScope);
+ dep.loc = { name };
+ compilation.addEntry(
+ compilation.options.context,
+ dep,
+ {
+ name,
+ filename,
+ runtime,
+ library
+ },
+ error => {
+ if (error) return callback(error);
+ callback();
+ }
+ );
+ });
+
+ compiler.hooks.thisCompilation.tap(
+ PLUGIN_NAME,
+ (compilation, { normalModuleFactory }) => {
+ compilation.dependencyFactories.set(
+ ContainerEntryDependency,
+ new ContainerEntryModuleFactory()
+ );
+
+ compilation.dependencyFactories.set(
+ ContainerExposedDependency,
+ normalModuleFactory
+ );
+ }
+ );
+ }
+}
+
+module.exports = ContainerPlugin;