* Renders runtime modules. * @param {RuntimeModule[]} runtimeModules array of runtime modules in order * @param {RenderContext & { codeGenerationResults?: CodeGenerationResults }} renderContext render context * @returns {Source} rendered runtime modules in a Source object
(runtimeModules, renderContext)
| 385 | * @returns {Source} rendered runtime modules in a Source object |
| 386 | */ |
| 387 | static renderRuntimeModules(runtimeModules, renderContext) { |
| 388 | const source = new ConcatSource(); |
| 389 | for (const module of runtimeModules) { |
| 390 | const codeGenerationResults = renderContext.codeGenerationResults; |
| 391 | /** @type {undefined | Source} */ |
| 392 | let runtimeSource; |
| 393 | if (codeGenerationResults) { |
| 394 | runtimeSource = codeGenerationResults.getSource( |
| 395 | module, |
| 396 | renderContext.chunk.runtime, |
| 397 | WEBPACK_MODULE_TYPE_RUNTIME |
| 398 | ); |
| 399 | } else { |
| 400 | const codeGenResult = module.codeGeneration({ |
| 401 | chunkGraph: renderContext.chunkGraph, |
| 402 | dependencyTemplates: renderContext.dependencyTemplates, |
| 403 | moduleGraph: renderContext.moduleGraph, |
| 404 | runtimeTemplate: renderContext.runtimeTemplate, |
| 405 | runtime: renderContext.chunk.runtime, |
| 406 | runtimes: [renderContext.chunk.runtime], |
| 407 | codeGenerationResults |
| 408 | }); |
| 409 | if (!codeGenResult) continue; |
| 410 | runtimeSource = codeGenResult.sources.get(class="st">"runtime"); |
| 411 | } |
| 412 | if (runtimeSource) { |
| 413 | source.add(`${Template.toNormalComment(module.identifier())}\n`); |
| 414 | if (!module.shouldIsolate()) { |
| 415 | source.add(runtimeSource); |
| 416 | source.add(class="st">"\n\n"); |
| 417 | } else if (renderContext.runtimeTemplate.supportsArrowFunction()) { |
| 418 | source.add(class="st">"(() => {\n"); |
| 419 | source.add(new PrefixSource(class="st">"\t", runtimeSource)); |
| 420 | source.add(class="st">"\n})();\n\n"); |
| 421 | } else { |
| 422 | source.add(class="st">"!function() {\n"); |
| 423 | source.add(new PrefixSource(class="st">"\t", runtimeSource)); |
| 424 | source.add(class="st">"\n}();\n\n"); |
| 425 | } |
| 426 | } |
| 427 | } |
| 428 | return source; |
| 429 | } |
| 430 | |
| 431 | /** |
| 432 | * Renders chunk runtime modules. |
no test coverage detected