You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| const RuntimeGlobals = require("../RuntimeGlobals");
 | |
| const RuntimeModule = require("../RuntimeModule");
 | |
| 
 | |
| /** @typedef {import("../Chunk")} Chunk */
 | |
| /** @typedef {import("../ChunkGraph")} ChunkGraph */
 | |
| /** @typedef {import("../Compilation")} Compilation */
 | |
| /** @typedef {import("../MainTemplate")} MainTemplate */
 | |
| 
 | |
| class CompatRuntimeModule extends RuntimeModule {
 | |
| 	constructor() {
 | |
| 		super("compat", RuntimeModule.STAGE_ATTACH);
 | |
| 		this.fullHash = true;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @returns {string | null} runtime code
 | |
| 	 */
 | |
| 	generate() {
 | |
| 		const compilation = /** @type {Compilation} */ (this.compilation);
 | |
| 		const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
 | |
| 		const chunk = /** @type {Chunk} */ (this.chunk);
 | |
| 		const {
 | |
| 			runtimeTemplate,
 | |
| 			mainTemplate,
 | |
| 			moduleTemplates,
 | |
| 			dependencyTemplates
 | |
| 		} = compilation;
 | |
| 		const bootstrap = mainTemplate.hooks.bootstrap.call(
 | |
| 			"",
 | |
| 			chunk,
 | |
| 			compilation.hash || "XXXX",
 | |
| 			moduleTemplates.javascript,
 | |
| 			dependencyTemplates
 | |
| 		);
 | |
| 		const localVars = mainTemplate.hooks.localVars.call(
 | |
| 			"",
 | |
| 			chunk,
 | |
| 			compilation.hash || "XXXX"
 | |
| 		);
 | |
| 		const requireExtensions = mainTemplate.hooks.requireExtensions.call(
 | |
| 			"",
 | |
| 			chunk,
 | |
| 			compilation.hash || "XXXX"
 | |
| 		);
 | |
| 		const runtimeRequirements = chunkGraph.getTreeRuntimeRequirements(chunk);
 | |
| 		let requireEnsure = "";
 | |
| 		if (runtimeRequirements.has(RuntimeGlobals.ensureChunk)) {
 | |
| 			const requireEnsureHandler = mainTemplate.hooks.requireEnsure.call(
 | |
| 				"",
 | |
| 				chunk,
 | |
| 				compilation.hash || "XXXX",
 | |
| 				"chunkId"
 | |
| 			);
 | |
| 			if (requireEnsureHandler) {
 | |
| 				requireEnsure = `${
 | |
| 					RuntimeGlobals.ensureChunkHandlers
 | |
| 				}.compat = ${runtimeTemplate.basicFunction(
 | |
| 					"chunkId, promises",
 | |
| 					requireEnsureHandler
 | |
| 				)};`;
 | |
| 			}
 | |
| 		}
 | |
| 		return [bootstrap, localVars, requireEnsure, requireExtensions]
 | |
| 			.filter(Boolean)
 | |
| 			.join("\n");
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @returns {boolean} true, if the runtime module should get it's own scope
 | |
| 	 */
 | |
| 	shouldIsolate() {
 | |
| 		// We avoid isolating this to have better backward-compat
 | |
| 		return false;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| module.exports = CompatRuntimeModule;
 |