123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- "use strict";
- const RuntimeGlobals = require("../RuntimeGlobals");
- const RuntimeModule = require("../RuntimeModule");
- const Template = require("../Template");
- class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
-
- constructor(asyncChunkLoading) {
- super("startup chunk dependencies", RuntimeModule.STAGE_TRIGGER);
- this.asyncChunkLoading = asyncChunkLoading;
- }
-
- generate() {
- const chunkGraph = (this.chunkGraph);
- const chunk = (this.chunk);
- const chunkIds = Array.from(
- chunkGraph.getChunkEntryDependentChunksIterable(chunk)
- ).map(chunk => chunk.id);
- const compilation = (this.compilation);
- const { runtimeTemplate } = compilation;
- return Template.asString([
- `var next = ${RuntimeGlobals.startup};`,
- `${RuntimeGlobals.startup} = ${runtimeTemplate.basicFunction(
- "",
- !this.asyncChunkLoading
- ? chunkIds
- .map(
- id => `${RuntimeGlobals.ensureChunk}(${JSON.stringify(id)});`
- )
- .concat("return next();")
- : chunkIds.length === 1
- ? `return ${RuntimeGlobals.ensureChunk}(${JSON.stringify(
- chunkIds[0]
- )}).then(next);`
- : chunkIds.length > 2
- ? [
- // using map is shorter for 3 or more chunks
- `return Promise.all(${JSON.stringify(chunkIds)}.map(${
- RuntimeGlobals.ensureChunk
- }, ${RuntimeGlobals.require})).then(next);`
- ]
- : [
- // calling ensureChunk directly is shorter for 0 - 2 chunks
- "return Promise.all([",
- Template.indent(
- chunkIds
- .map(
- id =>
- `${RuntimeGlobals.ensureChunk}(${JSON.stringify(id)})`
- )
- .join(",\n")
- ),
- "]).then(next);"
- ]
- )};`
- ]);
- }
- }
- module.exports = StartupChunkDependenciesRuntimeModule;
|