summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/RuntimePlugin.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/RuntimePlugin.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/webpack/lib/RuntimePlugin.js')
-rw-r--r--node_modules/webpack/lib/RuntimePlugin.js476
1 files changed, 476 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/RuntimePlugin.js b/node_modules/webpack/lib/RuntimePlugin.js
new file mode 100644
index 00000000..ac0ab75f
--- /dev/null
+++ b/node_modules/webpack/lib/RuntimePlugin.js
@@ -0,0 +1,476 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const RuntimeGlobals = require("./RuntimeGlobals");
+const { getChunkFilenameTemplate } = require("./css/CssModulesPlugin");
+const RuntimeRequirementsDependency = require("./dependencies/RuntimeRequirementsDependency");
+const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
+const AsyncModuleRuntimeModule = require("./runtime/AsyncModuleRuntimeModule");
+const AutoPublicPathRuntimeModule = require("./runtime/AutoPublicPathRuntimeModule");
+const BaseUriRuntimeModule = require("./runtime/BaseUriRuntimeModule");
+const CompatGetDefaultExportRuntimeModule = require("./runtime/CompatGetDefaultExportRuntimeModule");
+const CompatRuntimeModule = require("./runtime/CompatRuntimeModule");
+const CreateFakeNamespaceObjectRuntimeModule = require("./runtime/CreateFakeNamespaceObjectRuntimeModule");
+const CreateScriptRuntimeModule = require("./runtime/CreateScriptRuntimeModule");
+const CreateScriptUrlRuntimeModule = require("./runtime/CreateScriptUrlRuntimeModule");
+const DefinePropertyGettersRuntimeModule = require("./runtime/DefinePropertyGettersRuntimeModule");
+const EnsureChunkRuntimeModule = require("./runtime/EnsureChunkRuntimeModule");
+const GetChunkFilenameRuntimeModule = require("./runtime/GetChunkFilenameRuntimeModule");
+const GetMainFilenameRuntimeModule = require("./runtime/GetMainFilenameRuntimeModule");
+const GetTrustedTypesPolicyRuntimeModule = require("./runtime/GetTrustedTypesPolicyRuntimeModule");
+const GlobalRuntimeModule = require("./runtime/GlobalRuntimeModule");
+const HasOwnPropertyRuntimeModule = require("./runtime/HasOwnPropertyRuntimeModule");
+const LoadScriptRuntimeModule = require("./runtime/LoadScriptRuntimeModule");
+const MakeNamespaceObjectRuntimeModule = require("./runtime/MakeNamespaceObjectRuntimeModule");
+const NonceRuntimeModule = require("./runtime/NonceRuntimeModule");
+const OnChunksLoadedRuntimeModule = require("./runtime/OnChunksLoadedRuntimeModule");
+const PublicPathRuntimeModule = require("./runtime/PublicPathRuntimeModule");
+const RelativeUrlRuntimeModule = require("./runtime/RelativeUrlRuntimeModule");
+const RuntimeIdRuntimeModule = require("./runtime/RuntimeIdRuntimeModule");
+const SystemContextRuntimeModule = require("./runtime/SystemContextRuntimeModule");
+const ShareRuntimeModule = require("./sharing/ShareRuntimeModule");
+const StringXor = require("./util/StringXor");
+
+/** @typedef {import("./Chunk")} Chunk */
+/** @typedef {import("./Compiler")} Compiler */
+/** @typedef {import("./Module")} Module */
+
+const GLOBALS_ON_REQUIRE = [
+ RuntimeGlobals.chunkName,
+ RuntimeGlobals.runtimeId,
+ RuntimeGlobals.compatGetDefaultExport,
+ RuntimeGlobals.createFakeNamespaceObject,
+ RuntimeGlobals.createScript,
+ RuntimeGlobals.createScriptUrl,
+ RuntimeGlobals.getTrustedTypesPolicy,
+ RuntimeGlobals.definePropertyGetters,
+ RuntimeGlobals.ensureChunk,
+ RuntimeGlobals.entryModuleId,
+ RuntimeGlobals.getFullHash,
+ RuntimeGlobals.global,
+ RuntimeGlobals.makeNamespaceObject,
+ RuntimeGlobals.moduleCache,
+ RuntimeGlobals.moduleFactories,
+ RuntimeGlobals.moduleFactoriesAddOnly,
+ RuntimeGlobals.interceptModuleExecution,
+ RuntimeGlobals.publicPath,
+ RuntimeGlobals.baseURI,
+ RuntimeGlobals.relativeUrl,
+ RuntimeGlobals.scriptNonce,
+ RuntimeGlobals.uncaughtErrorHandler,
+ RuntimeGlobals.asyncModule,
+ RuntimeGlobals.wasmInstances,
+ RuntimeGlobals.instantiateWasm,
+ RuntimeGlobals.shareScopeMap,
+ RuntimeGlobals.initializeSharing,
+ RuntimeGlobals.loadScript,
+ RuntimeGlobals.systemContext,
+ RuntimeGlobals.onChunksLoaded
+];
+
+const MODULE_DEPENDENCIES = {
+ [RuntimeGlobals.moduleLoaded]: [RuntimeGlobals.module],
+ [RuntimeGlobals.moduleId]: [RuntimeGlobals.module]
+};
+
+const TREE_DEPENDENCIES = {
+ [RuntimeGlobals.definePropertyGetters]: [RuntimeGlobals.hasOwnProperty],
+ [RuntimeGlobals.compatGetDefaultExport]: [
+ RuntimeGlobals.definePropertyGetters
+ ],
+ [RuntimeGlobals.createFakeNamespaceObject]: [
+ RuntimeGlobals.definePropertyGetters,
+ RuntimeGlobals.makeNamespaceObject,
+ RuntimeGlobals.require
+ ],
+ [RuntimeGlobals.initializeSharing]: [RuntimeGlobals.shareScopeMap],
+ [RuntimeGlobals.shareScopeMap]: [RuntimeGlobals.hasOwnProperty]
+};
+
+class RuntimePlugin {
+ /**
+ * @param {Compiler} compiler the Compiler
+ * @returns {void}
+ */
+ apply(compiler) {
+ compiler.hooks.compilation.tap("RuntimePlugin", compilation => {
+ const globalChunkLoading = compilation.outputOptions.chunkLoading;
+ /**
+ * @param {Chunk} chunk chunk
+ * @returns {boolean} true, when chunk loading is disabled for the chunk
+ */
+ const isChunkLoadingDisabledForChunk = chunk => {
+ const options = chunk.getEntryOptions();
+ const chunkLoading =
+ options && options.chunkLoading !== undefined
+ ? options.chunkLoading
+ : globalChunkLoading;
+ return chunkLoading === false;
+ };
+ compilation.dependencyTemplates.set(
+ RuntimeRequirementsDependency,
+ new RuntimeRequirementsDependency.Template()
+ );
+ for (const req of GLOBALS_ON_REQUIRE) {
+ compilation.hooks.runtimeRequirementInModule
+ .for(req)
+ .tap("RuntimePlugin", (module, set) => {
+ set.add(RuntimeGlobals.requireScope);
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(req)
+ .tap("RuntimePlugin", (module, set) => {
+ set.add(RuntimeGlobals.requireScope);
+ });
+ }
+ for (const req of Object.keys(TREE_DEPENDENCIES)) {
+ const deps =
+ TREE_DEPENDENCIES[/** @type {keyof TREE_DEPENDENCIES} */ (req)];
+ compilation.hooks.runtimeRequirementInTree
+ .for(req)
+ .tap("RuntimePlugin", (chunk, set) => {
+ for (const dep of deps) set.add(dep);
+ });
+ }
+ for (const req of Object.keys(MODULE_DEPENDENCIES)) {
+ const deps =
+ MODULE_DEPENDENCIES[/** @type {keyof MODULE_DEPENDENCIES} */ (req)];
+ compilation.hooks.runtimeRequirementInModule
+ .for(req)
+ .tap("RuntimePlugin", (chunk, set) => {
+ for (const dep of deps) set.add(dep);
+ });
+ }
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.definePropertyGetters)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(
+ chunk,
+ new DefinePropertyGettersRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.makeNamespaceObject)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(
+ chunk,
+ new MakeNamespaceObjectRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.createFakeNamespaceObject)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(
+ chunk,
+ new CreateFakeNamespaceObjectRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.hasOwnProperty)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(
+ chunk,
+ new HasOwnPropertyRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.compatGetDefaultExport)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(
+ chunk,
+ new CompatGetDefaultExportRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.runtimeId)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(chunk, new RuntimeIdRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.publicPath)
+ .tap("RuntimePlugin", (chunk, set) => {
+ const { outputOptions } = compilation;
+ const { publicPath: globalPublicPath, scriptType } = outputOptions;
+ const entryOptions = chunk.getEntryOptions();
+ const publicPath =
+ entryOptions && entryOptions.publicPath !== undefined
+ ? entryOptions.publicPath
+ : globalPublicPath;
+
+ if (publicPath === "auto") {
+ const module = new AutoPublicPathRuntimeModule();
+ if (scriptType !== "module") set.add(RuntimeGlobals.global);
+ compilation.addRuntimeModule(chunk, module);
+ } else {
+ const module = new PublicPathRuntimeModule(publicPath);
+
+ if (
+ typeof publicPath !== "string" ||
+ /\[(full)?hash\]/.test(publicPath)
+ ) {
+ module.fullHash = true;
+ }
+
+ compilation.addRuntimeModule(chunk, module);
+ }
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.global)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(chunk, new GlobalRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.asyncModule)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(chunk, new AsyncModuleRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.systemContext)
+ .tap("RuntimePlugin", chunk => {
+ const { outputOptions } = compilation;
+ const { library: globalLibrary } = outputOptions;
+ const entryOptions = chunk.getEntryOptions();
+ const libraryType =
+ entryOptions && entryOptions.library !== undefined
+ ? entryOptions.library.type
+ : globalLibrary.type;
+
+ if (libraryType === "system") {
+ compilation.addRuntimeModule(
+ chunk,
+ new SystemContextRuntimeModule()
+ );
+ }
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.getChunkScriptFilename)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (
+ typeof compilation.outputOptions.chunkFilename === "string" &&
+ /\[(full)?hash(:\d+)?\]/.test(
+ compilation.outputOptions.chunkFilename
+ )
+ ) {
+ set.add(RuntimeGlobals.getFullHash);
+ }
+ compilation.addRuntimeModule(
+ chunk,
+ new GetChunkFilenameRuntimeModule(
+ "javascript",
+ "javascript",
+ RuntimeGlobals.getChunkScriptFilename,
+ chunk =>
+ chunk.filenameTemplate ||
+ (chunk.canBeInitial()
+ ? compilation.outputOptions.filename
+ : compilation.outputOptions.chunkFilename),
+ false
+ )
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.getChunkCssFilename)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (
+ typeof compilation.outputOptions.cssChunkFilename === "string" &&
+ /\[(full)?hash(:\d+)?\]/.test(
+ compilation.outputOptions.cssChunkFilename
+ )
+ ) {
+ set.add(RuntimeGlobals.getFullHash);
+ }
+ compilation.addRuntimeModule(
+ chunk,
+ new GetChunkFilenameRuntimeModule(
+ "css",
+ "css",
+ RuntimeGlobals.getChunkCssFilename,
+ chunk =>
+ getChunkFilenameTemplate(chunk, compilation.outputOptions),
+ set.has(RuntimeGlobals.hmrDownloadUpdateHandlers)
+ )
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.getChunkUpdateScriptFilename)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (
+ /\[(full)?hash(:\d+)?\]/.test(
+ compilation.outputOptions.hotUpdateChunkFilename
+ )
+ )
+ set.add(RuntimeGlobals.getFullHash);
+ compilation.addRuntimeModule(
+ chunk,
+ new GetChunkFilenameRuntimeModule(
+ "javascript",
+ "javascript update",
+ RuntimeGlobals.getChunkUpdateScriptFilename,
+ c => compilation.outputOptions.hotUpdateChunkFilename,
+ true
+ )
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.getUpdateManifestFilename)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (
+ /\[(full)?hash(:\d+)?\]/.test(
+ compilation.outputOptions.hotUpdateMainFilename
+ )
+ ) {
+ set.add(RuntimeGlobals.getFullHash);
+ }
+ compilation.addRuntimeModule(
+ chunk,
+ new GetMainFilenameRuntimeModule(
+ "update manifest",
+ RuntimeGlobals.getUpdateManifestFilename,
+ compilation.outputOptions.hotUpdateMainFilename
+ )
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.ensureChunk)
+ .tap("RuntimePlugin", (chunk, set) => {
+ const hasAsyncChunks = chunk.hasAsyncChunks();
+ if (hasAsyncChunks) {
+ set.add(RuntimeGlobals.ensureChunkHandlers);
+ }
+ compilation.addRuntimeModule(
+ chunk,
+ new EnsureChunkRuntimeModule(set)
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.ensureChunkIncludeEntries)
+ .tap("RuntimePlugin", (chunk, set) => {
+ set.add(RuntimeGlobals.ensureChunkHandlers);
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.shareScopeMap)
+ .tap("RuntimePlugin", (chunk, set) => {
+ compilation.addRuntimeModule(chunk, new ShareRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.loadScript)
+ .tap("RuntimePlugin", (chunk, set) => {
+ const withCreateScriptUrl = !!compilation.outputOptions.trustedTypes;
+ if (withCreateScriptUrl) {
+ set.add(RuntimeGlobals.createScriptUrl);
+ }
+ const withFetchPriority = set.has(RuntimeGlobals.hasFetchPriority);
+ compilation.addRuntimeModule(
+ chunk,
+ new LoadScriptRuntimeModule(withCreateScriptUrl, withFetchPriority)
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.createScript)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (compilation.outputOptions.trustedTypes) {
+ set.add(RuntimeGlobals.getTrustedTypesPolicy);
+ }
+ compilation.addRuntimeModule(chunk, new CreateScriptRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.createScriptUrl)
+ .tap("RuntimePlugin", (chunk, set) => {
+ if (compilation.outputOptions.trustedTypes) {
+ set.add(RuntimeGlobals.getTrustedTypesPolicy);
+ }
+ compilation.addRuntimeModule(
+ chunk,
+ new CreateScriptUrlRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.getTrustedTypesPolicy)
+ .tap("RuntimePlugin", (chunk, set) => {
+ compilation.addRuntimeModule(
+ chunk,
+ new GetTrustedTypesPolicyRuntimeModule(set)
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.relativeUrl)
+ .tap("RuntimePlugin", (chunk, set) => {
+ compilation.addRuntimeModule(chunk, new RelativeUrlRuntimeModule());
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.onChunksLoaded)
+ .tap("RuntimePlugin", (chunk, set) => {
+ compilation.addRuntimeModule(
+ chunk,
+ new OnChunksLoadedRuntimeModule()
+ );
+ return true;
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.baseURI)
+ .tap("RuntimePlugin", chunk => {
+ if (isChunkLoadingDisabledForChunk(chunk)) {
+ compilation.addRuntimeModule(chunk, new BaseUriRuntimeModule());
+ return true;
+ }
+ });
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.scriptNonce)
+ .tap("RuntimePlugin", chunk => {
+ compilation.addRuntimeModule(chunk, new NonceRuntimeModule());
+ return true;
+ });
+ // TODO webpack 6: remove CompatRuntimeModule
+ compilation.hooks.additionalTreeRuntimeRequirements.tap(
+ "RuntimePlugin",
+ (chunk, set) => {
+ const { mainTemplate } = compilation;
+ if (
+ mainTemplate.hooks.bootstrap.isUsed() ||
+ mainTemplate.hooks.localVars.isUsed() ||
+ mainTemplate.hooks.requireEnsure.isUsed() ||
+ mainTemplate.hooks.requireExtensions.isUsed()
+ ) {
+ compilation.addRuntimeModule(chunk, new CompatRuntimeModule());
+ }
+ }
+ );
+ JavascriptModulesPlugin.getCompilationHooks(compilation).chunkHash.tap(
+ "RuntimePlugin",
+ (chunk, hash, { chunkGraph }) => {
+ const xor = new StringXor();
+ for (const m of chunkGraph.getChunkRuntimeModulesIterable(chunk)) {
+ xor.add(chunkGraph.getModuleHash(m, chunk.runtime));
+ }
+ xor.updateHash(hash);
+ }
+ );
+ });
+ }
+}
+module.exports = RuntimePlugin;