webpack 5.97.1 → 5.104.1

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.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -6,7 +6,6 @@
6
6
  "use strict";
7
7
 
8
8
  const RuntimeGlobals = require("./RuntimeGlobals");
9
- const { getChunkFilenameTemplate } = require("./css/CssModulesPlugin");
10
9
  const RuntimeRequirementsDependency = require("./dependencies/RuntimeRequirementsDependency");
11
10
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
12
11
  const AsyncModuleRuntimeModule = require("./runtime/AsyncModuleRuntimeModule");
@@ -25,6 +24,10 @@ const GetTrustedTypesPolicyRuntimeModule = require("./runtime/GetTrustedTypesPol
25
24
  const GlobalRuntimeModule = require("./runtime/GlobalRuntimeModule");
26
25
  const HasOwnPropertyRuntimeModule = require("./runtime/HasOwnPropertyRuntimeModule");
27
26
  const LoadScriptRuntimeModule = require("./runtime/LoadScriptRuntimeModule");
27
+ const {
28
+ MakeDeferredNamespaceObjectRuntimeModule,
29
+ MakeOptimizedDeferredNamespaceObjectRuntimeModule
30
+ } = require("./runtime/MakeDeferredNamespaceObjectRuntime");
28
31
  const MakeNamespaceObjectRuntimeModule = require("./runtime/MakeNamespaceObjectRuntimeModule");
29
32
  const NonceRuntimeModule = require("./runtime/NonceRuntimeModule");
30
33
  const OnChunksLoadedRuntimeModule = require("./runtime/OnChunksLoadedRuntimeModule");
@@ -32,16 +35,14 @@ const PublicPathRuntimeModule = require("./runtime/PublicPathRuntimeModule");
32
35
  const RelativeUrlRuntimeModule = require("./runtime/RelativeUrlRuntimeModule");
33
36
  const RuntimeIdRuntimeModule = require("./runtime/RuntimeIdRuntimeModule");
34
37
  const SystemContextRuntimeModule = require("./runtime/SystemContextRuntimeModule");
38
+ const ToBinaryRuntimeModule = require("./runtime/ToBinaryRuntimeModule");
35
39
  const ShareRuntimeModule = require("./sharing/ShareRuntimeModule");
36
40
  const StringXor = require("./util/StringXor");
37
41
  const memoize = require("./util/memoize");
38
42
 
39
43
  /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
40
- /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
41
44
  /** @typedef {import("./Chunk")} Chunk */
42
45
  /** @typedef {import("./Compiler")} Compiler */
43
- /** @typedef {import("./Module")} Module */
44
- /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
45
46
 
46
47
  const getJavascriptModulesPlugin = memoize(() =>
47
48
  require("./javascript/JavascriptModulesPlugin")
@@ -79,7 +80,9 @@ const GLOBALS_ON_REQUIRE = [
79
80
  RuntimeGlobals.initializeSharing,
80
81
  RuntimeGlobals.loadScript,
81
82
  RuntimeGlobals.systemContext,
82
- RuntimeGlobals.onChunksLoaded
83
+ RuntimeGlobals.onChunksLoaded,
84
+ RuntimeGlobals.makeOptimizedDeferredNamespaceObject,
85
+ RuntimeGlobals.makeDeferredNamespaceObject
83
86
  ];
84
87
 
85
88
  const MODULE_DEPENDENCIES = {
@@ -97,23 +100,32 @@ const TREE_DEPENDENCIES = {
97
100
  RuntimeGlobals.makeNamespaceObject,
98
101
  RuntimeGlobals.require
99
102
  ],
103
+ [RuntimeGlobals.makeOptimizedDeferredNamespaceObject]: [
104
+ RuntimeGlobals.require
105
+ ],
106
+ [RuntimeGlobals.makeDeferredNamespaceObject]: [
107
+ RuntimeGlobals.createFakeNamespaceObject,
108
+ RuntimeGlobals.require
109
+ ],
100
110
  [RuntimeGlobals.initializeSharing]: [RuntimeGlobals.shareScopeMap],
101
111
  [RuntimeGlobals.shareScopeMap]: [RuntimeGlobals.hasOwnProperty]
102
112
  };
103
113
 
114
+ const PLUGIN_NAME = "RuntimePlugin";
115
+
104
116
  class RuntimePlugin {
105
117
  /**
106
118
  * @param {Compiler} compiler the Compiler
107
119
  * @returns {void}
108
120
  */
109
121
  apply(compiler) {
110
- compiler.hooks.compilation.tap("RuntimePlugin", compilation => {
122
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
111
123
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
112
124
  /**
113
125
  * @param {Chunk} chunk chunk
114
126
  * @returns {boolean} true, when chunk loading is disabled for the chunk
115
127
  */
116
- const isChunkLoadingDisabledForChunk = chunk => {
128
+ const isChunkLoadingDisabledForChunk = (chunk) => {
117
129
  const options = chunk.getEntryOptions();
118
130
  const chunkLoading =
119
131
  options && options.chunkLoading !== undefined
@@ -128,12 +140,12 @@ class RuntimePlugin {
128
140
  for (const req of GLOBALS_ON_REQUIRE) {
129
141
  compilation.hooks.runtimeRequirementInModule
130
142
  .for(req)
131
- .tap("RuntimePlugin", (module, set) => {
143
+ .tap(PLUGIN_NAME, (module, set) => {
132
144
  set.add(RuntimeGlobals.requireScope);
133
145
  });
134
146
  compilation.hooks.runtimeRequirementInTree
135
147
  .for(req)
136
- .tap("RuntimePlugin", (module, set) => {
148
+ .tap(PLUGIN_NAME, (module, set) => {
137
149
  set.add(RuntimeGlobals.requireScope);
138
150
  });
139
151
  }
@@ -142,7 +154,7 @@ class RuntimePlugin {
142
154
  TREE_DEPENDENCIES[/** @type {keyof TREE_DEPENDENCIES} */ (req)];
143
155
  compilation.hooks.runtimeRequirementInTree
144
156
  .for(req)
145
- .tap("RuntimePlugin", (chunk, set) => {
157
+ .tap(PLUGIN_NAME, (chunk, set) => {
146
158
  for (const dep of deps) set.add(dep);
147
159
  });
148
160
  }
@@ -151,13 +163,13 @@ class RuntimePlugin {
151
163
  MODULE_DEPENDENCIES[/** @type {keyof MODULE_DEPENDENCIES} */ (req)];
152
164
  compilation.hooks.runtimeRequirementInModule
153
165
  .for(req)
154
- .tap("RuntimePlugin", (chunk, set) => {
166
+ .tap(PLUGIN_NAME, (chunk, set) => {
155
167
  for (const dep of deps) set.add(dep);
156
168
  });
157
169
  }
158
170
  compilation.hooks.runtimeRequirementInTree
159
171
  .for(RuntimeGlobals.definePropertyGetters)
160
- .tap("RuntimePlugin", chunk => {
172
+ .tap(PLUGIN_NAME, (chunk) => {
161
173
  compilation.addRuntimeModule(
162
174
  chunk,
163
175
  new DefinePropertyGettersRuntimeModule()
@@ -166,7 +178,7 @@ class RuntimePlugin {
166
178
  });
167
179
  compilation.hooks.runtimeRequirementInTree
168
180
  .for(RuntimeGlobals.makeNamespaceObject)
169
- .tap("RuntimePlugin", chunk => {
181
+ .tap(PLUGIN_NAME, (chunk) => {
170
182
  compilation.addRuntimeModule(
171
183
  chunk,
172
184
  new MakeNamespaceObjectRuntimeModule()
@@ -175,16 +187,38 @@ class RuntimePlugin {
175
187
  });
176
188
  compilation.hooks.runtimeRequirementInTree
177
189
  .for(RuntimeGlobals.createFakeNamespaceObject)
178
- .tap("RuntimePlugin", chunk => {
190
+ .tap(PLUGIN_NAME, (chunk) => {
179
191
  compilation.addRuntimeModule(
180
192
  chunk,
181
193
  new CreateFakeNamespaceObjectRuntimeModule()
182
194
  );
183
195
  return true;
184
196
  });
197
+ compilation.hooks.runtimeRequirementInTree
198
+ .for(RuntimeGlobals.makeOptimizedDeferredNamespaceObject)
199
+ .tap("RuntimePlugin", (chunk, runtimeRequirement) => {
200
+ compilation.addRuntimeModule(
201
+ chunk,
202
+ new MakeOptimizedDeferredNamespaceObjectRuntimeModule(
203
+ runtimeRequirement.has(RuntimeGlobals.asyncModule)
204
+ )
205
+ );
206
+ return true;
207
+ });
208
+ compilation.hooks.runtimeRequirementInTree
209
+ .for(RuntimeGlobals.makeDeferredNamespaceObject)
210
+ .tap("RuntimePlugin", (chunk, runtimeRequirement) => {
211
+ compilation.addRuntimeModule(
212
+ chunk,
213
+ new MakeDeferredNamespaceObjectRuntimeModule(
214
+ runtimeRequirement.has(RuntimeGlobals.asyncModule)
215
+ )
216
+ );
217
+ return true;
218
+ });
185
219
  compilation.hooks.runtimeRequirementInTree
186
220
  .for(RuntimeGlobals.hasOwnProperty)
187
- .tap("RuntimePlugin", chunk => {
221
+ .tap(PLUGIN_NAME, (chunk) => {
188
222
  compilation.addRuntimeModule(
189
223
  chunk,
190
224
  new HasOwnPropertyRuntimeModule()
@@ -193,7 +227,7 @@ class RuntimePlugin {
193
227
  });
194
228
  compilation.hooks.runtimeRequirementInTree
195
229
  .for(RuntimeGlobals.compatGetDefaultExport)
196
- .tap("RuntimePlugin", chunk => {
230
+ .tap(PLUGIN_NAME, (chunk) => {
197
231
  compilation.addRuntimeModule(
198
232
  chunk,
199
233
  new CompatGetDefaultExportRuntimeModule()
@@ -202,13 +236,13 @@ class RuntimePlugin {
202
236
  });
203
237
  compilation.hooks.runtimeRequirementInTree
204
238
  .for(RuntimeGlobals.runtimeId)
205
- .tap("RuntimePlugin", chunk => {
239
+ .tap(PLUGIN_NAME, (chunk) => {
206
240
  compilation.addRuntimeModule(chunk, new RuntimeIdRuntimeModule());
207
241
  return true;
208
242
  });
209
243
  compilation.hooks.runtimeRequirementInTree
210
244
  .for(RuntimeGlobals.publicPath)
211
- .tap("RuntimePlugin", (chunk, set) => {
245
+ .tap(PLUGIN_NAME, (chunk, set) => {
212
246
  const { outputOptions } = compilation;
213
247
  const { publicPath: globalPublicPath, scriptType } = outputOptions;
214
248
  const entryOptions = chunk.getEntryOptions();
@@ -219,7 +253,13 @@ class RuntimePlugin {
219
253
 
220
254
  if (publicPath === "auto") {
221
255
  const module = new AutoPublicPathRuntimeModule();
222
- if (scriptType !== "module") set.add(RuntimeGlobals.global);
256
+ if (
257
+ scriptType !== "module" &&
258
+ !outputOptions.environment.globalThis
259
+ ) {
260
+ set.add(RuntimeGlobals.global);
261
+ }
262
+
223
263
  compilation.addRuntimeModule(chunk, module);
224
264
  } else {
225
265
  const module = new PublicPathRuntimeModule(publicPath);
@@ -237,19 +277,23 @@ class RuntimePlugin {
237
277
  });
238
278
  compilation.hooks.runtimeRequirementInTree
239
279
  .for(RuntimeGlobals.global)
240
- .tap("RuntimePlugin", chunk => {
280
+ .tap(PLUGIN_NAME, (chunk) => {
241
281
  compilation.addRuntimeModule(chunk, new GlobalRuntimeModule());
242
282
  return true;
243
283
  });
244
284
  compilation.hooks.runtimeRequirementInTree
245
285
  .for(RuntimeGlobals.asyncModule)
246
- .tap("RuntimePlugin", chunk => {
247
- compilation.addRuntimeModule(chunk, new AsyncModuleRuntimeModule());
286
+ .tap(PLUGIN_NAME, (chunk) => {
287
+ const experiments = compilation.options.experiments;
288
+ compilation.addRuntimeModule(
289
+ chunk,
290
+ new AsyncModuleRuntimeModule(experiments.deferImport)
291
+ );
248
292
  return true;
249
293
  });
250
294
  compilation.hooks.runtimeRequirementInTree
251
295
  .for(RuntimeGlobals.systemContext)
252
- .tap("RuntimePlugin", chunk => {
296
+ .tap(PLUGIN_NAME, (chunk) => {
253
297
  const entryOptions = chunk.getEntryOptions();
254
298
  const libraryType =
255
299
  entryOptions && entryOptions.library !== undefined
@@ -267,7 +311,7 @@ class RuntimePlugin {
267
311
  });
268
312
  compilation.hooks.runtimeRequirementInTree
269
313
  .for(RuntimeGlobals.getChunkScriptFilename)
270
- .tap("RuntimePlugin", (chunk, set, { chunkGraph }) => {
314
+ .tap(PLUGIN_NAME, (chunk, set, { chunkGraph }) => {
271
315
  if (
272
316
  typeof compilation.outputOptions.chunkFilename === "string" &&
273
317
  /\[(full)?hash(:\d+)?\]/.test(
@@ -282,22 +326,20 @@ class RuntimePlugin {
282
326
  "javascript",
283
327
  "javascript",
284
328
  RuntimeGlobals.getChunkScriptFilename,
285
- chunk =>
329
+ (chunk) =>
286
330
  getJavascriptModulesPlugin().chunkHasJs(chunk, chunkGraph) &&
287
- /** @type {TemplatePath} */ (
288
- chunk.filenameTemplate ||
289
- (chunk.canBeInitial()
290
- ? compilation.outputOptions.filename
291
- : compilation.outputOptions.chunkFilename)
292
- ),
293
- false
331
+ (chunk.filenameTemplate ||
332
+ (chunk.canBeInitial()
333
+ ? compilation.outputOptions.filename
334
+ : compilation.outputOptions.chunkFilename)),
335
+ set.has(RuntimeGlobals.hmrDownloadUpdateHandlers)
294
336
  )
295
337
  );
296
338
  return true;
297
339
  });
298
340
  compilation.hooks.runtimeRequirementInTree
299
341
  .for(RuntimeGlobals.getChunkCssFilename)
300
- .tap("RuntimePlugin", (chunk, set, { chunkGraph }) => {
342
+ .tap(PLUGIN_NAME, (chunk, set, { chunkGraph }) => {
301
343
  if (
302
344
  typeof compilation.outputOptions.cssChunkFilename === "string" &&
303
345
  /\[(full)?hash(:\d+)?\]/.test(
@@ -312,9 +354,17 @@ class RuntimePlugin {
312
354
  "css",
313
355
  "css",
314
356
  RuntimeGlobals.getChunkCssFilename,
315
- chunk =>
316
- getCssModulesPlugin().chunkHasCss(chunk, chunkGraph) &&
317
- getChunkFilenameTemplate(chunk, compilation.outputOptions),
357
+ (chunk) => {
358
+ const cssModulePlugin = getCssModulesPlugin();
359
+
360
+ return (
361
+ cssModulePlugin.chunkHasCss(chunk, chunkGraph) &&
362
+ cssModulePlugin.getChunkFilenameTemplate(
363
+ chunk,
364
+ compilation.outputOptions
365
+ )
366
+ );
367
+ },
318
368
  set.has(RuntimeGlobals.hmrDownloadUpdateHandlers)
319
369
  )
320
370
  );
@@ -322,23 +372,21 @@ class RuntimePlugin {
322
372
  });
323
373
  compilation.hooks.runtimeRequirementInTree
324
374
  .for(RuntimeGlobals.getChunkUpdateScriptFilename)
325
- .tap("RuntimePlugin", (chunk, set) => {
375
+ .tap(PLUGIN_NAME, (chunk, set) => {
326
376
  if (
327
377
  /\[(full)?hash(:\d+)?\]/.test(
328
- /** @type {NonNullable<OutputNormalized["hotUpdateChunkFilename"]>} */
329
- (compilation.outputOptions.hotUpdateChunkFilename)
378
+ compilation.outputOptions.hotUpdateChunkFilename
330
379
  )
331
- )
380
+ ) {
332
381
  set.add(RuntimeGlobals.getFullHash);
382
+ }
333
383
  compilation.addRuntimeModule(
334
384
  chunk,
335
385
  new GetChunkFilenameRuntimeModule(
336
386
  "javascript",
337
387
  "javascript update",
338
388
  RuntimeGlobals.getChunkUpdateScriptFilename,
339
- c =>
340
- /** @type {NonNullable<OutputNormalized["hotUpdateChunkFilename"]>} */
341
- (compilation.outputOptions.hotUpdateChunkFilename),
389
+ (_chunk) => compilation.outputOptions.hotUpdateChunkFilename,
342
390
  true
343
391
  )
344
392
  );
@@ -346,11 +394,10 @@ class RuntimePlugin {
346
394
  });
347
395
  compilation.hooks.runtimeRequirementInTree
348
396
  .for(RuntimeGlobals.getUpdateManifestFilename)
349
- .tap("RuntimePlugin", (chunk, set) => {
397
+ .tap(PLUGIN_NAME, (chunk, set) => {
350
398
  if (
351
399
  /\[(full)?hash(:\d+)?\]/.test(
352
- /** @type {NonNullable<OutputNormalized["hotUpdateMainFilename"]>} */
353
- (compilation.outputOptions.hotUpdateMainFilename)
400
+ compilation.outputOptions.hotUpdateMainFilename
354
401
  )
355
402
  ) {
356
403
  set.add(RuntimeGlobals.getFullHash);
@@ -360,15 +407,14 @@ class RuntimePlugin {
360
407
  new GetMainFilenameRuntimeModule(
361
408
  "update manifest",
362
409
  RuntimeGlobals.getUpdateManifestFilename,
363
- /** @type {NonNullable<OutputNormalized["hotUpdateMainFilename"]>} */
364
- (compilation.outputOptions.hotUpdateMainFilename)
410
+ compilation.outputOptions.hotUpdateMainFilename
365
411
  )
366
412
  );
367
413
  return true;
368
414
  });
369
415
  compilation.hooks.runtimeRequirementInTree
370
416
  .for(RuntimeGlobals.ensureChunk)
371
- .tap("RuntimePlugin", (chunk, set) => {
417
+ .tap(PLUGIN_NAME, (chunk, set) => {
372
418
  const hasAsyncChunks = chunk.hasAsyncChunks();
373
419
  if (hasAsyncChunks) {
374
420
  set.add(RuntimeGlobals.ensureChunkHandlers);
@@ -381,18 +427,18 @@ class RuntimePlugin {
381
427
  });
382
428
  compilation.hooks.runtimeRequirementInTree
383
429
  .for(RuntimeGlobals.ensureChunkIncludeEntries)
384
- .tap("RuntimePlugin", (chunk, set) => {
430
+ .tap(PLUGIN_NAME, (chunk, set) => {
385
431
  set.add(RuntimeGlobals.ensureChunkHandlers);
386
432
  });
387
433
  compilation.hooks.runtimeRequirementInTree
388
434
  .for(RuntimeGlobals.shareScopeMap)
389
- .tap("RuntimePlugin", (chunk, set) => {
435
+ .tap(PLUGIN_NAME, (chunk, set) => {
390
436
  compilation.addRuntimeModule(chunk, new ShareRuntimeModule());
391
437
  return true;
392
438
  });
393
439
  compilation.hooks.runtimeRequirementInTree
394
440
  .for(RuntimeGlobals.loadScript)
395
- .tap("RuntimePlugin", (chunk, set) => {
441
+ .tap(PLUGIN_NAME, (chunk, set) => {
396
442
  const withCreateScriptUrl = Boolean(
397
443
  compilation.outputOptions.trustedTypes
398
444
  );
@@ -408,7 +454,7 @@ class RuntimePlugin {
408
454
  });
409
455
  compilation.hooks.runtimeRequirementInTree
410
456
  .for(RuntimeGlobals.createScript)
411
- .tap("RuntimePlugin", (chunk, set) => {
457
+ .tap(PLUGIN_NAME, (chunk, set) => {
412
458
  if (compilation.outputOptions.trustedTypes) {
413
459
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
414
460
  }
@@ -417,7 +463,7 @@ class RuntimePlugin {
417
463
  });
418
464
  compilation.hooks.runtimeRequirementInTree
419
465
  .for(RuntimeGlobals.createScriptUrl)
420
- .tap("RuntimePlugin", (chunk, set) => {
466
+ .tap(PLUGIN_NAME, (chunk, set) => {
421
467
  if (compilation.outputOptions.trustedTypes) {
422
468
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
423
469
  }
@@ -429,7 +475,7 @@ class RuntimePlugin {
429
475
  });
430
476
  compilation.hooks.runtimeRequirementInTree
431
477
  .for(RuntimeGlobals.getTrustedTypesPolicy)
432
- .tap("RuntimePlugin", (chunk, set) => {
478
+ .tap(PLUGIN_NAME, (chunk, set) => {
433
479
  compilation.addRuntimeModule(
434
480
  chunk,
435
481
  new GetTrustedTypesPolicyRuntimeModule(set)
@@ -438,13 +484,13 @@ class RuntimePlugin {
438
484
  });
439
485
  compilation.hooks.runtimeRequirementInTree
440
486
  .for(RuntimeGlobals.relativeUrl)
441
- .tap("RuntimePlugin", (chunk, set) => {
487
+ .tap(PLUGIN_NAME, (chunk, _set) => {
442
488
  compilation.addRuntimeModule(chunk, new RelativeUrlRuntimeModule());
443
489
  return true;
444
490
  });
445
491
  compilation.hooks.runtimeRequirementInTree
446
492
  .for(RuntimeGlobals.onChunksLoaded)
447
- .tap("RuntimePlugin", (chunk, set) => {
493
+ .tap(PLUGIN_NAME, (chunk, _set) => {
448
494
  compilation.addRuntimeModule(
449
495
  chunk,
450
496
  new OnChunksLoadedRuntimeModule()
@@ -453,7 +499,7 @@ class RuntimePlugin {
453
499
  });
454
500
  compilation.hooks.runtimeRequirementInTree
455
501
  .for(RuntimeGlobals.baseURI)
456
- .tap("RuntimePlugin", chunk => {
502
+ .tap(PLUGIN_NAME, (chunk) => {
457
503
  if (isChunkLoadingDisabledForChunk(chunk)) {
458
504
  compilation.addRuntimeModule(chunk, new BaseUriRuntimeModule());
459
505
  return true;
@@ -461,14 +507,20 @@ class RuntimePlugin {
461
507
  });
462
508
  compilation.hooks.runtimeRequirementInTree
463
509
  .for(RuntimeGlobals.scriptNonce)
464
- .tap("RuntimePlugin", chunk => {
510
+ .tap(PLUGIN_NAME, (chunk) => {
465
511
  compilation.addRuntimeModule(chunk, new NonceRuntimeModule());
466
512
  return true;
467
513
  });
514
+ compilation.hooks.runtimeRequirementInTree
515
+ .for(RuntimeGlobals.toBinary)
516
+ .tap(PLUGIN_NAME, (chunk) => {
517
+ compilation.addRuntimeModule(chunk, new ToBinaryRuntimeModule());
518
+ return true;
519
+ });
468
520
  // TODO webpack 6: remove CompatRuntimeModule
469
521
  compilation.hooks.additionalTreeRuntimeRequirements.tap(
470
- "RuntimePlugin",
471
- (chunk, set) => {
522
+ PLUGIN_NAME,
523
+ (chunk, _set) => {
472
524
  const { mainTemplate } = compilation;
473
525
  if (
474
526
  mainTemplate.hooks.bootstrap.isUsed() ||
@@ -481,7 +533,7 @@ class RuntimePlugin {
481
533
  }
482
534
  );
483
535
  JavascriptModulesPlugin.getCompilationHooks(compilation).chunkHash.tap(
484
- "RuntimePlugin",
536
+ PLUGIN_NAME,
485
537
  (chunk, hash, { chunkGraph }) => {
486
538
  const xor = new StringXor();
487
539
  for (const m of chunkGraph.getChunkRuntimeModulesIterable(chunk)) {
@@ -493,4 +545,5 @@ class RuntimePlugin {
493
545
  });
494
546
  }
495
547
  }
548
+
496
549
  module.exports = RuntimePlugin;