summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
commitefbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch)
tree2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js')
-rw-r--r--node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js b/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js
new file mode 100644
index 00000000..740bbe8c
--- /dev/null
+++ b/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js
@@ -0,0 +1,55 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+*/
+
+"use strict";
+
+const RuntimeGlobals = require("../RuntimeGlobals");
+const RuntimeModule = require("../RuntimeModule");
+const Template = require("../Template");
+
+/** @typedef {import("../Chunk")} Chunk */
+/** @typedef {import("../Compilation")} Compilation */
+/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
+
+class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
+ /**
+ * @param {{ onChunks: Chunk[], chunks: Set<Chunk> }[]} startupChunks chunk ids to trigger when chunks are loaded
+ */
+ constructor(startupChunks) {
+ super("startup prefetch", RuntimeModule.STAGE_TRIGGER);
+ this.startupChunks = startupChunks;
+ }
+
+ /**
+ * @returns {string | null} runtime code
+ */
+ generate() {
+ const { startupChunks } = this;
+ const compilation = /** @type {Compilation} */ (this.compilation);
+ const chunk = /** @type {Chunk} */ (this.chunk);
+ const { runtimeTemplate } = compilation;
+ return Template.asString(
+ startupChunks.map(
+ ({ onChunks, chunks }) =>
+ `${RuntimeGlobals.onChunksLoaded}(0, ${JSON.stringify(
+ // This need to include itself to delay execution after this chunk has been fully loaded
+ onChunks.filter(c => c === chunk).map(c => c.id)
+ )}, ${runtimeTemplate.basicFunction(
+ "",
+ chunks.size < 3
+ ? Array.from(
+ chunks,
+ c =>
+ `${RuntimeGlobals.prefetchChunk}(${JSON.stringify(c.id)});`
+ )
+ : `${JSON.stringify(Array.from(chunks, c => c.id))}.map(${
+ RuntimeGlobals.prefetchChunk
+ });`
+ )}, 5);`
+ )
+ );
+ }
+}
+
+module.exports = ChunkPrefetchStartupRuntimeModule;