webpack 5.76.1 → 5.88.2

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