webpack 5.76.1 → 5.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (436) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +4 -0
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -18,6 +18,12 @@ const Compilation = require("../Compilation");
18
18
  const { tryRunOrWebpackError } = require("../HookWebpackError");
19
19
  const HotUpdateChunk = require("../HotUpdateChunk");
20
20
  const InitFragment = require("../InitFragment");
21
+ const {
22
+ JAVASCRIPT_MODULE_TYPE_AUTO,
23
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
24
+ JAVASCRIPT_MODULE_TYPE_ESM,
25
+ WEBPACK_MODULE_TYPE_RUNTIME
26
+ } = require("../ModuleTypeConstants");
21
27
  const RuntimeGlobals = require("../RuntimeGlobals");
22
28
  const Template = require("../Template");
23
29
  const { last, someInIterable } = require("../util/IterableHelpers");
@@ -124,8 +130,8 @@ const printGeneratedCodeForStack = (module, code) => {
124
130
  * @property {SyncWaterfallHook<[Source, Module, StartupRenderContext]>} renderStartup
125
131
  * @property {SyncWaterfallHook<[string, RenderBootstrapContext]>} renderRequire
126
132
  * @property {SyncBailHook<[Module, RenderBootstrapContext], string>} inlineInRuntimeBailout
127
- * @property {SyncBailHook<[Module, RenderContext], string>} embedInRuntimeBailout
128
- * @property {SyncBailHook<[RenderContext], string>} strictRuntimeBailout
133
+ * @property {SyncBailHook<[Module, RenderContext], string | void>} embedInRuntimeBailout
134
+ * @property {SyncBailHook<[RenderContext], string | void>} strictRuntimeBailout
129
135
  * @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
130
136
  * @property {SyncBailHook<[Chunk, RenderContext], boolean>} useSourceMap
131
137
  */
@@ -133,6 +139,8 @@ const printGeneratedCodeForStack = (module, code) => {
133
139
  /** @type {WeakMap<Compilation, CompilationHooks>} */
134
140
  const compilationHooksMap = new WeakMap();
135
141
 
142
+ const PLUGIN_NAME = "JavascriptModulesPlugin";
143
+
136
144
  class JavascriptModulesPlugin {
137
145
  /**
138
146
  * @param {Compilation} compilation the compilation
@@ -196,154 +204,147 @@ class JavascriptModulesPlugin {
196
204
  */
197
205
  apply(compiler) {
198
206
  compiler.hooks.compilation.tap(
199
- "JavascriptModulesPlugin",
207
+ PLUGIN_NAME,
200
208
  (compilation, { normalModuleFactory }) => {
201
209
  const hooks = JavascriptModulesPlugin.getCompilationHooks(compilation);
202
210
  normalModuleFactory.hooks.createParser
203
- .for("javascript/auto")
204
- .tap("JavascriptModulesPlugin", options => {
211
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
212
+ .tap(PLUGIN_NAME, options => {
205
213
  return new JavascriptParser("auto");
206
214
  });
207
215
  normalModuleFactory.hooks.createParser
208
- .for("javascript/dynamic")
209
- .tap("JavascriptModulesPlugin", options => {
216
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
217
+ .tap(PLUGIN_NAME, options => {
210
218
  return new JavascriptParser("script");
211
219
  });
212
220
  normalModuleFactory.hooks.createParser
213
- .for("javascript/esm")
214
- .tap("JavascriptModulesPlugin", options => {
221
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
222
+ .tap(PLUGIN_NAME, options => {
215
223
  return new JavascriptParser("module");
216
224
  });
217
225
  normalModuleFactory.hooks.createGenerator
218
- .for("javascript/auto")
219
- .tap("JavascriptModulesPlugin", () => {
226
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
227
+ .tap(PLUGIN_NAME, () => {
220
228
  return new JavascriptGenerator();
221
229
  });
222
230
  normalModuleFactory.hooks.createGenerator
223
- .for("javascript/dynamic")
224
- .tap("JavascriptModulesPlugin", () => {
231
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
232
+ .tap(PLUGIN_NAME, () => {
225
233
  return new JavascriptGenerator();
226
234
  });
227
235
  normalModuleFactory.hooks.createGenerator
228
- .for("javascript/esm")
229
- .tap("JavascriptModulesPlugin", () => {
236
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
237
+ .tap(PLUGIN_NAME, () => {
230
238
  return new JavascriptGenerator();
231
239
  });
232
- compilation.hooks.renderManifest.tap(
233
- "JavascriptModulesPlugin",
234
- (result, options) => {
235
- const {
236
- hash,
237
- chunk,
238
- chunkGraph,
239
- moduleGraph,
240
- runtimeTemplate,
241
- dependencyTemplates,
242
- outputOptions,
243
- codeGenerationResults
244
- } = options;
240
+ compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
241
+ const {
242
+ hash,
243
+ chunk,
244
+ chunkGraph,
245
+ moduleGraph,
246
+ runtimeTemplate,
247
+ dependencyTemplates,
248
+ outputOptions,
249
+ codeGenerationResults
250
+ } = options;
245
251
 
246
- const hotUpdateChunk =
247
- chunk instanceof HotUpdateChunk ? chunk : null;
252
+ const hotUpdateChunk = chunk instanceof HotUpdateChunk ? chunk : null;
248
253
 
249
- let render;
250
- const filenameTemplate =
251
- JavascriptModulesPlugin.getChunkFilenameTemplate(
252
- chunk,
253
- outputOptions
254
+ let render;
255
+ const filenameTemplate =
256
+ JavascriptModulesPlugin.getChunkFilenameTemplate(
257
+ chunk,
258
+ outputOptions
259
+ );
260
+ if (hotUpdateChunk) {
261
+ render = () =>
262
+ this.renderChunk(
263
+ {
264
+ chunk,
265
+ dependencyTemplates,
266
+ runtimeTemplate,
267
+ moduleGraph,
268
+ chunkGraph,
269
+ codeGenerationResults,
270
+ strictMode: runtimeTemplate.isModule()
271
+ },
272
+ hooks
254
273
  );
255
- if (hotUpdateChunk) {
256
- render = () =>
257
- this.renderChunk(
258
- {
259
- chunk,
260
- dependencyTemplates,
261
- runtimeTemplate,
262
- moduleGraph,
263
- chunkGraph,
264
- codeGenerationResults,
265
- strictMode: runtimeTemplate.isModule()
266
- },
267
- hooks
268
- );
269
- } else if (chunk.hasRuntime()) {
270
- render = () =>
271
- this.renderMain(
272
- {
273
- hash,
274
- chunk,
275
- dependencyTemplates,
276
- runtimeTemplate,
277
- moduleGraph,
278
- chunkGraph,
279
- codeGenerationResults,
280
- strictMode: runtimeTemplate.isModule()
281
- },
282
- hooks,
283
- compilation
284
- );
285
- } else {
286
- if (!chunkHasJs(chunk, chunkGraph)) {
287
- return result;
288
- }
289
-
290
- render = () =>
291
- this.renderChunk(
292
- {
293
- chunk,
294
- dependencyTemplates,
295
- runtimeTemplate,
296
- moduleGraph,
297
- chunkGraph,
298
- codeGenerationResults,
299
- strictMode: runtimeTemplate.isModule()
300
- },
301
- hooks
302
- );
274
+ } else if (chunk.hasRuntime()) {
275
+ render = () =>
276
+ this.renderMain(
277
+ {
278
+ hash,
279
+ chunk,
280
+ dependencyTemplates,
281
+ runtimeTemplate,
282
+ moduleGraph,
283
+ chunkGraph,
284
+ codeGenerationResults,
285
+ strictMode: runtimeTemplate.isModule()
286
+ },
287
+ hooks,
288
+ compilation
289
+ );
290
+ } else {
291
+ if (!chunkHasJs(chunk, chunkGraph)) {
292
+ return result;
303
293
  }
304
294
 
305
- result.push({
306
- render,
307
- filenameTemplate,
308
- pathOptions: {
309
- hash,
310
- runtime: chunk.runtime,
311
- chunk,
312
- contentHashType: "javascript"
313
- },
314
- info: {
315
- javascriptModule: compilation.runtimeTemplate.isModule()
316
- },
317
- identifier: hotUpdateChunk
318
- ? `hotupdatechunk${chunk.id}`
319
- : `chunk${chunk.id}`,
320
- hash: chunk.contentHash.javascript
321
- });
322
-
323
- return result;
324
- }
325
- );
326
- compilation.hooks.chunkHash.tap(
327
- "JavascriptModulesPlugin",
328
- (chunk, hash, context) => {
329
- hooks.chunkHash.call(chunk, hash, context);
330
- if (chunk.hasRuntime()) {
331
- this.updateHashWithBootstrap(
332
- hash,
295
+ render = () =>
296
+ this.renderChunk(
333
297
  {
334
- hash: "0000",
335
298
  chunk,
336
- codeGenerationResults: context.codeGenerationResults,
337
- chunkGraph: context.chunkGraph,
338
- moduleGraph: context.moduleGraph,
339
- runtimeTemplate: context.runtimeTemplate
299
+ dependencyTemplates,
300
+ runtimeTemplate,
301
+ moduleGraph,
302
+ chunkGraph,
303
+ codeGenerationResults,
304
+ strictMode: runtimeTemplate.isModule()
340
305
  },
341
306
  hooks
342
307
  );
343
- }
344
308
  }
345
- );
346
- compilation.hooks.contentHash.tap("JavascriptModulesPlugin", chunk => {
309
+
310
+ result.push({
311
+ render,
312
+ filenameTemplate,
313
+ pathOptions: {
314
+ hash,
315
+ runtime: chunk.runtime,
316
+ chunk,
317
+ contentHashType: "javascript"
318
+ },
319
+ info: {
320
+ javascriptModule: compilation.runtimeTemplate.isModule()
321
+ },
322
+ identifier: hotUpdateChunk
323
+ ? `hotupdatechunk${chunk.id}`
324
+ : `chunk${chunk.id}`,
325
+ hash: chunk.contentHash.javascript
326
+ });
327
+
328
+ return result;
329
+ });
330
+ compilation.hooks.chunkHash.tap(PLUGIN_NAME, (chunk, hash, context) => {
331
+ hooks.chunkHash.call(chunk, hash, context);
332
+ if (chunk.hasRuntime()) {
333
+ this.updateHashWithBootstrap(
334
+ hash,
335
+ {
336
+ hash: "0000",
337
+ chunk,
338
+ codeGenerationResults: context.codeGenerationResults,
339
+ chunkGraph: context.chunkGraph,
340
+ moduleGraph: context.moduleGraph,
341
+ runtimeTemplate: context.runtimeTemplate
342
+ },
343
+ hooks
344
+ );
345
+ }
346
+ });
347
+ compilation.hooks.contentHash.tap(PLUGIN_NAME, chunk => {
347
348
  const {
348
349
  chunkGraph,
349
350
  codeGenerationResults,
@@ -394,7 +395,7 @@ class JavascriptModulesPlugin {
394
395
  }
395
396
  const runtimeModules = chunkGraph.getChunkModulesIterableBySourceType(
396
397
  chunk,
397
- "runtime"
398
+ WEBPACK_MODULE_TYPE_RUNTIME
398
399
  );
399
400
  if (runtimeModules) {
400
401
  const xor = new StringXor();
@@ -410,7 +411,7 @@ class JavascriptModulesPlugin {
410
411
  );
411
412
  });
412
413
  compilation.hooks.additionalTreeRuntimeRequirements.tap(
413
- "JavascriptModulesPlugin",
414
+ PLUGIN_NAME,
414
415
  (chunk, set, { chunkGraph }) => {
415
416
  if (
416
417
  !set.has(RuntimeGlobals.startupNoDefault) &&
@@ -421,58 +422,51 @@ class JavascriptModulesPlugin {
421
422
  }
422
423
  }
423
424
  );
424
- compilation.hooks.executeModule.tap(
425
- "JavascriptModulesPlugin",
426
- (options, context) => {
427
- const source =
428
- options.codeGenerationResult.sources.get("javascript");
429
- if (source === undefined) return;
430
- const { module, moduleObject } = options;
431
- const code = source.source();
425
+ compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
426
+ const source = options.codeGenerationResult.sources.get("javascript");
427
+ if (source === undefined) return;
428
+ const { module, moduleObject } = options;
429
+ const code = source.source();
432
430
 
433
- const fn = vm.runInThisContext(
434
- `(function(${module.moduleArgument}, ${module.exportsArgument}, __webpack_require__) {\n${code}\n/**/})`,
435
- {
436
- filename: module.identifier(),
437
- lineOffset: -1
438
- }
439
- );
440
- try {
441
- fn.call(
442
- moduleObject.exports,
443
- moduleObject,
444
- moduleObject.exports,
445
- context.__webpack_require__
446
- );
447
- } catch (e) {
448
- e.stack += printGeneratedCodeForStack(options.module, code);
449
- throw e;
431
+ const fn = vm.runInThisContext(
432
+ `(function(${module.moduleArgument}, ${module.exportsArgument}, ${RuntimeGlobals.require}) {\n${code}\n/**/})`,
433
+ {
434
+ filename: module.identifier(),
435
+ lineOffset: -1
450
436
  }
437
+ );
438
+ try {
439
+ fn.call(
440
+ moduleObject.exports,
441
+ moduleObject,
442
+ moduleObject.exports,
443
+ context.__webpack_require__
444
+ );
445
+ } catch (e) {
446
+ e.stack += printGeneratedCodeForStack(options.module, code);
447
+ throw e;
451
448
  }
452
- );
453
- compilation.hooks.executeModule.tap(
454
- "JavascriptModulesPlugin",
455
- (options, context) => {
456
- const source = options.codeGenerationResult.sources.get("runtime");
457
- if (source === undefined) return;
458
- let code = source.source();
459
- if (typeof code !== "string") code = code.toString();
449
+ });
450
+ compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
451
+ const source = options.codeGenerationResult.sources.get("runtime");
452
+ if (source === undefined) return;
453
+ let code = source.source();
454
+ if (typeof code !== "string") code = code.toString();
460
455
 
461
- const fn = vm.runInThisContext(
462
- `(function(__webpack_require__) {\n${code}\n/**/})`,
463
- {
464
- filename: options.module.identifier(),
465
- lineOffset: -1
466
- }
467
- );
468
- try {
469
- fn.call(null, context.__webpack_require__);
470
- } catch (e) {
471
- e.stack += printGeneratedCodeForStack(options.module, code);
472
- throw e;
456
+ const fn = vm.runInThisContext(
457
+ `(function(${RuntimeGlobals.require}) {\n${code}\n/**/})`,
458
+ {
459
+ filename: options.module.identifier(),
460
+ lineOffset: -1
473
461
  }
462
+ );
463
+ try {
464
+ fn.call(null, context.__webpack_require__);
465
+ } catch (e) {
466
+ e.stack += printGeneratedCodeForStack(options.module, code);
467
+ throw e;
474
468
  }
475
- );
469
+ });
476
470
  }
477
471
  );
478
472
  }
@@ -563,7 +557,7 @@ class JavascriptModulesPlugin {
563
557
  ? module.exportsArgument
564
558
  : "__unused_webpack_" + module.exportsArgument
565
559
  );
566
- if (needRequire) args.push("__webpack_require__");
560
+ if (needRequire) args.push(RuntimeGlobals.require);
567
561
  if (!needThisAsExports && runtimeTemplate.supportsArrowFunction()) {
568
562
  factorySource.add("/***/ ((" + args.join(", ") + ") => {\n\n");
569
563
  } else {
@@ -697,6 +691,7 @@ class JavascriptModulesPlugin {
697
691
  );
698
692
 
699
693
  const hasEntryModules = chunkGraph.getNumberOfEntryModules(chunk) > 0;
694
+ /** @type {Set<Module> | undefined} */
700
695
  let inlinedModules;
701
696
  if (bootstrap.allowInlineStartup && hasEntryModules) {
702
697
  inlinedModules = new Set(chunkGraph.getChunkEntryModulesIterable(chunk));
@@ -738,7 +733,9 @@ class JavascriptModulesPlugin {
738
733
  const chunkModules = Template.renderChunkModules(
739
734
  chunkRenderContext,
740
735
  inlinedModules
741
- ? allModules.filter(m => !inlinedModules.has(m))
736
+ ? allModules.filter(
737
+ m => !(/** @type {Set<Module>} */ (inlinedModules).has(m))
738
+ )
742
739
  : allModules,
743
740
  module => this.renderModule(module, chunkRenderContext, hooks, true),
744
741
  prefix
@@ -804,7 +801,7 @@ class JavascriptModulesPlugin {
804
801
  }
805
802
  const lastInlinedModule = last(inlinedModules);
806
803
  const startupSource = new ConcatSource();
807
- startupSource.add(`var __webpack_exports__ = {};\n`);
804
+ startupSource.add(`var ${RuntimeGlobals.exports} = {};\n`);
808
805
  for (const m of inlinedModules) {
809
806
  const renderedModule = this.renderModule(
810
807
  m,
@@ -820,7 +817,7 @@ class JavascriptModulesPlugin {
820
817
  );
821
818
  const exports = runtimeRequirements.has(RuntimeGlobals.exports);
822
819
  const webpackExports =
823
- exports && m.exportsArgument === "__webpack_exports__";
820
+ exports && m.exportsArgument === RuntimeGlobals.exports;
824
821
  let iife = innerStrict
825
822
  ? "it need to be in strict mode."
826
823
  : inlinedModules.size > 1
@@ -852,9 +849,9 @@ class JavascriptModulesPlugin {
852
849
  if (exports) {
853
850
  if (m !== lastInlinedModule)
854
851
  startupSource.add(`var ${m.exportsArgument} = {};\n`);
855
- else if (m.exportsArgument !== "__webpack_exports__")
852
+ else if (m.exportsArgument !== RuntimeGlobals.exports)
856
853
  startupSource.add(
857
- `var ${m.exportsArgument} = __webpack_exports__;\n`
854
+ `var ${m.exportsArgument} = ${RuntimeGlobals.exports};\n`
858
855
  );
859
856
  }
860
857
  startupSource.add(renderedModule);
@@ -863,7 +860,7 @@ class JavascriptModulesPlugin {
863
860
  }
864
861
  if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
865
862
  startupSource.add(
866
- `__webpack_exports__ = ${RuntimeGlobals.onChunksLoaded}(__webpack_exports__);\n`
863
+ `${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});\n`
867
864
  );
868
865
  }
869
866
  source.add(
@@ -915,7 +912,7 @@ class JavascriptModulesPlugin {
915
912
  hasEntryModules &&
916
913
  runtimeRequirements.has(RuntimeGlobals.returnExportsFromRuntime)
917
914
  ) {
918
- source.add(`${prefix}return __webpack_exports__;\n`);
915
+ source.add(`${prefix}return ${RuntimeGlobals.exports};\n`);
919
916
  }
920
917
  if (iife) {
921
918
  source.add("/******/ })()\n");
@@ -940,6 +937,7 @@ class JavascriptModulesPlugin {
940
937
  "JavascriptModulesPlugin error: JavascriptModulesPlugin.getCompilationHooks().renderContent plugins should return something"
941
938
  );
942
939
  }
940
+
943
941
  finalSource = InitFragment.addToSource(
944
942
  finalSource,
945
943
  chunkRenderContext.chunkInitFragments,
@@ -1044,13 +1042,13 @@ class JavascriptModulesPlugin {
1044
1042
 
1045
1043
  if (useRequire) {
1046
1044
  buf.push("// The require function");
1047
- buf.push(`function __webpack_require__(moduleId) {`);
1045
+ buf.push(`function ${RuntimeGlobals.require}(moduleId) {`);
1048
1046
  buf.push(Template.indent(this.renderRequire(renderContext, hooks)));
1049
1047
  buf.push("}");
1050
1048
  buf.push("");
1051
1049
  } else if (runtimeRequirements.has(RuntimeGlobals.requireScope)) {
1052
1050
  buf.push("// The require scope");
1053
- buf.push("var __webpack_require__ = {};");
1051
+ buf.push(`var ${RuntimeGlobals.require} = {};`);
1054
1052
  buf.push("");
1055
1053
  }
1056
1054
 
@@ -1164,32 +1162,32 @@ class JavascriptModulesPlugin {
1164
1162
  }
1165
1163
  if (chunks.length > 0) {
1166
1164
  buf2.push(
1167
- `${i === 0 ? "var __webpack_exports__ = " : ""}${
1165
+ `${i === 0 ? `var ${RuntimeGlobals.exports} = ` : ""}${
1168
1166
  RuntimeGlobals.onChunksLoaded
1169
1167
  }(undefined, ${JSON.stringify(
1170
1168
  chunks.map(c => c.id)
1171
1169
  )}, ${runtimeTemplate.returningFunction(
1172
- `__webpack_require__(${moduleIdExpr})`
1170
+ `${RuntimeGlobals.require}(${moduleIdExpr})`
1173
1171
  )})`
1174
1172
  );
1175
1173
  } else if (useRequire) {
1176
1174
  buf2.push(
1177
- `${
1178
- i === 0 ? "var __webpack_exports__ = " : ""
1179
- }__webpack_require__(${moduleIdExpr});`
1175
+ `${i === 0 ? `var ${RuntimeGlobals.exports} = ` : ""}${
1176
+ RuntimeGlobals.require
1177
+ }(${moduleIdExpr});`
1180
1178
  );
1181
1179
  } else {
1182
- if (i === 0) buf2.push("var __webpack_exports__ = {};");
1180
+ if (i === 0) buf2.push(`var ${RuntimeGlobals.exports} = {};`);
1183
1181
  if (requireScopeUsed) {
1184
1182
  buf2.push(
1185
1183
  `__webpack_modules__[${moduleIdExpr}](0, ${
1186
- i === 0 ? "__webpack_exports__" : "{}"
1187
- }, __webpack_require__);`
1184
+ i === 0 ? RuntimeGlobals.exports : "{}"
1185
+ }, ${RuntimeGlobals.require});`
1188
1186
  );
1189
1187
  } else if (entryRuntimeRequirements.has(RuntimeGlobals.exports)) {
1190
1188
  buf2.push(
1191
1189
  `__webpack_modules__[${moduleIdExpr}](0, ${
1192
- i === 0 ? "__webpack_exports__" : "{}"
1190
+ i === 0 ? RuntimeGlobals.exports : "{}"
1193
1191
  });`
1194
1192
  );
1195
1193
  } else {
@@ -1199,7 +1197,7 @@ class JavascriptModulesPlugin {
1199
1197
  }
1200
1198
  if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
1201
1199
  buf2.push(
1202
- `__webpack_exports__ = ${RuntimeGlobals.onChunksLoaded}(__webpack_exports__);`
1200
+ `${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
1203
1201
  );
1204
1202
  }
1205
1203
  if (
@@ -1212,13 +1210,13 @@ class JavascriptModulesPlugin {
1212
1210
  buf.push(
1213
1211
  `${RuntimeGlobals.startup} = ${runtimeTemplate.basicFunction("", [
1214
1212
  ...buf2,
1215
- "return __webpack_exports__;"
1213
+ `return ${RuntimeGlobals.exports};`
1216
1214
  ])};`
1217
1215
  );
1218
1216
  buf.push("");
1219
1217
  startup.push("// run startup");
1220
1218
  startup.push(
1221
- `var __webpack_exports__ = ${RuntimeGlobals.startup}();`
1219
+ `var ${RuntimeGlobals.exports} = ${RuntimeGlobals.startup}();`
1222
1220
  );
1223
1221
  } else if (runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore)) {
1224
1222
  buf.push("// the startup function");
@@ -1266,7 +1264,9 @@ class JavascriptModulesPlugin {
1266
1264
  `${RuntimeGlobals.startup} = ${runtimeTemplate.emptyFunction()};`
1267
1265
  );
1268
1266
  startup.push("// run startup");
1269
- startup.push(`var __webpack_exports__ = ${RuntimeGlobals.startup}();`);
1267
+ startup.push(
1268
+ `var ${RuntimeGlobals.exports} = ${RuntimeGlobals.startup}();`
1269
+ );
1270
1270
  }
1271
1271
  return result;
1272
1272
  }
@@ -1287,17 +1287,17 @@ class JavascriptModulesPlugin {
1287
1287
  RuntimeGlobals.interceptModuleExecution
1288
1288
  )
1289
1289
  ? Template.asString([
1290
- "var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: __webpack_require__ };",
1290
+ `var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: ${RuntimeGlobals.require} };`,
1291
1291
  `${RuntimeGlobals.interceptModuleExecution}.forEach(function(handler) { handler(execOptions); });`,
1292
1292
  "module = execOptions.module;",
1293
1293
  "execOptions.factory.call(module.exports, module, module.exports, execOptions.require);"
1294
1294
  ])
1295
1295
  : runtimeRequirements.has(RuntimeGlobals.thisAsExports)
1296
1296
  ? Template.asString([
1297
- "__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);"
1297
+ `__webpack_modules__[moduleId].call(module.exports, module, module.exports, ${RuntimeGlobals.require});`
1298
1298
  ])
1299
1299
  : Template.asString([
1300
- "__webpack_modules__[moduleId](module, module.exports, __webpack_require__);"
1300
+ `__webpack_modules__[moduleId](module, module.exports, ${RuntimeGlobals.require});`
1301
1301
  ]);
1302
1302
  const needModuleId = runtimeRequirements.has(RuntimeGlobals.moduleId);
1303
1303
  const needModuleLoaded = runtimeRequirements.has(
@@ -1352,7 +1352,7 @@ class JavascriptModulesPlugin {
1352
1352
  ? Template.asString([
1353
1353
  "",
1354
1354
  "// Flag the module as loaded",
1355
- "module.loaded = true;",
1355
+ `${RuntimeGlobals.moduleLoaded} = true;`,
1356
1356
  ""
1357
1357
  ])
1358
1358
  : "",