| 
									
										
										
										
											2013-02-16 00:08:14 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2018-07-30 23:08:51 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | "use strict"; | 
					
						
							| 
									
										
										
										
											2017-08-02 21:39:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-30 05:28:42 +08:00
										 |  |  | const Dependency = require("../Dependency"); | 
					
						
							| 
									
										
										
										
											2018-07-30 23:08:51 +08:00
										 |  |  | const Template = require("../Template"); | 
					
						
							| 
									
										
										
										
											2018-10-12 00:08:31 +08:00
										 |  |  | const makeSerializable = require("../util/makeSerializable"); | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | const ModuleDependency = require("./ModuleDependency"); | 
					
						
							| 
									
										
										
										
											2013-02-16 00:08:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ | 
					
						
							| 
									
										
										
										
											2020-05-28 02:34:55 +08:00
										 |  |  | /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */ | 
					
						
							| 
									
										
										
										
											2018-07-18 01:38:42 +08:00
										 |  |  | /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ | 
					
						
							| 
									
										
										
										
											2018-07-24 23:35:36 +08:00
										 |  |  | /** @typedef {import("../ModuleGraph")} ModuleGraph */ | 
					
						
							| 
									
										
										
										
											2023-05-22 04:31:30 +08:00
										 |  |  | /** @typedef {import("../javascript/JavascriptParser").Range} Range */ | 
					
						
							| 
									
										
										
										
											2020-07-28 00:09:48 +08:00
										 |  |  | /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */ | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | class RequireIncludeDependency extends ModuleDependency { | 
					
						
							| 
									
										
										
										
											2023-05-22 04:31:30 +08:00
										 |  |  | 	/** | 
					
						
							|  |  |  | 	 * @param {string} request the request string | 
					
						
							|  |  |  | 	 * @param {Range} range location in source code | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | 	constructor(request, range) { | 
					
						
							|  |  |  | 		super(request); | 
					
						
							| 
									
										
										
										
											2018-10-12 00:08:31 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | 		this.range = range; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-25 15:33:48 +08:00
										 |  |  | 	/** | 
					
						
							| 
									
										
										
										
											2019-10-30 05:28:42 +08:00
										 |  |  | 	 * Returns list of exports referenced by this dependency | 
					
						
							| 
									
										
										
										
											2018-07-24 23:35:36 +08:00
										 |  |  | 	 * @param {ModuleGraph} moduleGraph module graph | 
					
						
							| 
									
										
										
										
											2020-07-28 00:09:48 +08:00
										 |  |  | 	 * @param {RuntimeSpec} runtime the runtime for which the module is analysed | 
					
						
							| 
									
										
										
										
											2020-05-28 02:34:55 +08:00
										 |  |  | 	 * @returns {(string[] | ReferencedExport)[]} referenced exports | 
					
						
							| 
									
										
										
										
											2018-07-25 15:33:48 +08:00
										 |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2020-07-28 00:09:48 +08:00
										 |  |  | 	getReferencedExports(moduleGraph, runtime) { | 
					
						
							| 
									
										
										
										
											2018-04-04 15:17:10 +08:00
										 |  |  | 		// This doesn't use any export
 | 
					
						
							| 
									
										
										
										
											2019-10-30 14:57:55 +08:00
										 |  |  | 		return Dependency.NO_EXPORTS_REFERENCED; | 
					
						
							| 
									
										
										
										
											2017-12-04 23:14:46 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | 	get type() { | 
					
						
							|  |  |  | 		return "require.include"; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-06-18 05:03:02 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	get category() { | 
					
						
							|  |  |  | 		return "commonjs"; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-02-16 00:08:14 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-12 00:08:31 +08:00
										 |  |  | makeSerializable( | 
					
						
							|  |  |  | 	RequireIncludeDependency, | 
					
						
							|  |  |  | 	"webpack/lib/dependencies/RequireIncludeDependency" | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-26 17:52:55 +08:00
										 |  |  | RequireIncludeDependency.Template = class RequireIncludeDependencyTemplate extends ( | 
					
						
							|  |  |  | 	ModuleDependency.Template | 
					
						
							|  |  |  | ) { | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | 	/** | 
					
						
							|  |  |  | 	 * @param {Dependency} dependency the dependency for which the template should be applied | 
					
						
							|  |  |  | 	 * @param {ReplaceSource} source the current replace source which can be modified | 
					
						
							| 
									
										
										
										
											2018-07-18 01:38:42 +08:00
										 |  |  | 	 * @param {DependencyTemplateContext} templateContext the context object | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | 	 * @returns {void} | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2018-07-18 01:38:42 +08:00
										 |  |  | 	apply(dependency, source, { runtimeTemplate }) { | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | 		const dep = /** @type {RequireIncludeDependency} */ (dependency); | 
					
						
							|  |  |  | 		const comment = runtimeTemplate.outputOptions.pathinfo | 
					
						
							| 
									
										
										
										
											2018-02-25 09:00:20 +08:00
										 |  |  | 			? Template.toComment( | 
					
						
							| 
									
										
										
										
											2018-07-23 23:33:29 +08:00
										 |  |  | 					`require.include ${runtimeTemplate.requestShortener.shorten( | 
					
						
							|  |  |  | 						dep.request | 
					
						
							|  |  |  | 					)}`
 | 
					
						
							| 
									
										
										
										
											2024-01-14 09:41:34 +08:00
										 |  |  | 				) | 
					
						
							| 
									
										
										
										
											2018-02-25 09:00:20 +08:00
										 |  |  | 			: ""; | 
					
						
							| 
									
										
										
										
											2018-10-12 00:08:31 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | 		source.replace(dep.range[0], dep.range[1] - 1, `undefined${comment}`); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-02-16 00:08:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 22:21:25 +08:00
										 |  |  | module.exports = RequireIncludeDependency; |