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
@@ -10,14 +10,16 @@ const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const RuntimeModule = require("../RuntimeModule");
11
11
  const Template = require("../Template");
12
12
  const {
13
- getChunkFilenameTemplate,
14
- chunkHasJs
13
+ generateJavascriptHMR
14
+ } = require("../hmr/JavascriptHotModuleReplacementHelper");
15
+ const {
16
+ chunkHasJs,
17
+ getChunkFilenameTemplate
15
18
  } = require("../javascript/JavascriptModulesPlugin");
16
19
  const { getInitialChunkIds } = require("../javascript/StartupHelpers");
17
20
  const compileBooleanMatcher = require("../util/compileBooleanMatcher");
18
21
  const { getUndoPath } = require("../util/identifier");
19
22
 
20
- /** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
21
23
  /** @typedef {import("../Chunk")} Chunk */
22
24
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
23
25
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
@@ -88,12 +90,10 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
88
90
  const compilation = /** @type {Compilation} */ (this.compilation);
89
91
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
90
92
  const chunk = /** @type {Chunk} */ (this.chunk);
91
- const environment =
92
- /** @type {Environment} */
93
- (compilation.outputOptions.environment);
93
+ const environment = compilation.outputOptions.environment;
94
94
  const {
95
95
  runtimeTemplate,
96
- outputOptions: { importFunctionName, crossOriginLoading }
96
+ outputOptions: { importFunctionName, crossOriginLoading, charset }
97
97
  } = compilation;
98
98
  const fn = RuntimeGlobals.ensureChunkHandlers;
99
99
  const withBaseURI = this._runtimeRequirements.has(RuntimeGlobals.baseURI);
@@ -109,6 +109,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
109
109
  const withHmr = this._runtimeRequirements.has(
110
110
  RuntimeGlobals.hmrDownloadUpdateHandlers
111
111
  );
112
+ const withHmrManifest = this._runtimeRequirements.has(
113
+ RuntimeGlobals.hmrDownloadManifest
114
+ );
112
115
  const { linkPreload, linkPrefetch } =
113
116
  ModuleChunkLoadingRuntimeModule.getCompilationHooks(compilation);
114
117
  const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
@@ -133,7 +136,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
133
136
  );
134
137
  const rootOutputDir = getUndoPath(
135
138
  outputName,
136
- /** @type {string} */ (compilation.outputOptions.path),
139
+ compilation.outputOptions.path,
137
140
  true
138
141
  );
139
142
 
@@ -153,7 +156,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
153
156
  stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
154
157
  }{`,
155
158
  Template.indent(
156
- Array.from(initialChunkIds, id => `${JSON.stringify(id)}: 0`).join(
159
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
157
160
  ",\n"
158
161
  )
159
162
  ),
@@ -162,29 +165,33 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
162
165
  withLoading || withExternalInstallChunk
163
166
  ? `var installChunk = ${runtimeTemplate.basicFunction("data", [
164
167
  runtimeTemplate.destructureObject(
165
- ["__webpack_ids__", "__webpack_modules__", "__webpack_runtime__"],
168
+ [
169
+ RuntimeGlobals.esmIds,
170
+ RuntimeGlobals.esmModules,
171
+ RuntimeGlobals.esmRuntime
172
+ ],
166
173
  "data"
167
174
  ),
168
175
  '// add "modules" to the modules object,',
169
176
  '// then flag all "ids" as loaded and fire callback',
170
177
  "var moduleId, chunkId, i = 0;",
171
- "for(moduleId in __webpack_modules__) {",
178
+ `for(moduleId in ${RuntimeGlobals.esmModules}) {`,
172
179
  Template.indent([
173
- `if(${RuntimeGlobals.hasOwnProperty}(__webpack_modules__, moduleId)) {`,
180
+ `if(${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.esmModules}, moduleId)) {`,
174
181
  Template.indent(
175
- `${RuntimeGlobals.moduleFactories}[moduleId] = __webpack_modules__[moduleId];`
182
+ `${RuntimeGlobals.moduleFactories}[moduleId] = ${RuntimeGlobals.esmModules}[moduleId];`
176
183
  ),
177
184
  "}"
178
185
  ]),
179
186
  "}",
180
- `if(__webpack_runtime__) __webpack_runtime__(${RuntimeGlobals.require});`,
181
- "for(;i < __webpack_ids__.length; i++) {",
187
+ `if(${RuntimeGlobals.esmRuntime}) ${RuntimeGlobals.esmRuntime}(${RuntimeGlobals.require});`,
188
+ `for(;i < ${RuntimeGlobals.esmIds}.length; i++) {`,
182
189
  Template.indent([
183
- "chunkId = __webpack_ids__[i];",
190
+ `chunkId = ${RuntimeGlobals.esmIds}[i];`,
184
191
  `if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) && installedChunks[chunkId]) {`,
185
192
  Template.indent("installedChunks[chunkId][0]();"),
186
193
  "}",
187
- "installedChunks[__webpack_ids__[i]] = 0;"
194
+ `installedChunks[${RuntimeGlobals.esmIds}[i]] = 0;`
188
195
  ]),
189
196
  "}",
190
197
  withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
@@ -214,9 +221,11 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
214
221
  : `if(${hasJsMatcher("chunkId")}) {`,
215
222
  Template.indent([
216
223
  "// setup Promise in chunk cache",
217
- `var promise = ${importFunctionName}(${JSON.stringify(
218
- rootOutputDir
219
- )} + ${
224
+ `var promise = ${importFunctionName}(${
225
+ compilation.outputOptions.publicPath === "auto"
226
+ ? JSON.stringify(rootOutputDir)
227
+ : RuntimeGlobals.publicPath
228
+ } + ${
220
229
  RuntimeGlobals.getChunkScriptFilename
221
230
  }(chunkId)).then(installChunk, ${runtimeTemplate.basicFunction(
222
231
  "e",
@@ -248,6 +257,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
248
257
  ? `${
249
258
  RuntimeGlobals.prefetchChunkHandlers
250
259
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
260
+ isNeutralPlatform
261
+ ? "if (typeof document === 'undefined') return;"
262
+ : "",
251
263
  `if((!${
252
264
  RuntimeGlobals.hasOwnProperty
253
265
  }(installedChunks, chunkId) || installedChunks[chunkId] === undefined) && ${
@@ -255,12 +267,10 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
255
267
  }) {`,
256
268
  Template.indent([
257
269
  "installedChunks[chunkId] = null;",
258
- isNeutralPlatform
259
- ? "if (typeof document === 'undefined') return;"
260
- : "",
261
270
  linkPrefetch.call(
262
271
  Template.asString([
263
272
  "var link = document.createElement('link');",
273
+ charset ? "link.charset = 'utf-8';" : "",
264
274
  crossOriginLoading
265
275
  ? `link.crossOrigin = ${JSON.stringify(
266
276
  crossOriginLoading
@@ -287,6 +297,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
287
297
  ? `${
288
298
  RuntimeGlobals.preloadChunkHandlers
289
299
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
300
+ isNeutralPlatform
301
+ ? "if (typeof document === 'undefined') return;"
302
+ : "",
290
303
  `if((!${
291
304
  RuntimeGlobals.hasOwnProperty
292
305
  }(installedChunks, chunkId) || installedChunks[chunkId] === undefined) && ${
@@ -294,13 +307,10 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
294
307
  }) {`,
295
308
  Template.indent([
296
309
  "installedChunks[chunkId] = null;",
297
- isNeutralPlatform
298
- ? "if (typeof document === 'undefined') return;"
299
- : "",
300
310
  linkPreload.call(
301
311
  Template.asString([
302
312
  "var link = document.createElement('link');",
303
- "link.charset = 'utf-8';",
313
+ charset ? "link.charset = 'utf-8';" : "",
304
314
  `if (${RuntimeGlobals.scriptNonce}) {`,
305
315
  Template.indent(
306
316
  `link.setAttribute("nonce", ${RuntimeGlobals.scriptNonce});`
@@ -343,7 +353,71 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
343
353
  "installedChunks[chunkId] === 0",
344
354
  "chunkId"
345
355
  )};`
346
- : "// no on chunks loaded"
356
+ : "// no on chunks loaded",
357
+ withHmr
358
+ ? Template.asString([
359
+ generateJavascriptHMR("module"),
360
+ "",
361
+ "function loadUpdateChunk(chunkId, updatedModulesList) {",
362
+ Template.indent([
363
+ `return new Promise(${runtimeTemplate.basicFunction(
364
+ "resolve, reject",
365
+ [
366
+ "// start update chunk loading",
367
+ `var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
368
+ `var onResolve = ${runtimeTemplate.basicFunction("obj", [
369
+ `var updatedModules = obj.${RuntimeGlobals.esmModules};`,
370
+ `var updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
371
+ "if(updatedRuntime) currentUpdateRuntime.push(updatedRuntime);",
372
+ "for(var moduleId in updatedModules) {",
373
+ Template.indent([
374
+ `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
375
+ Template.indent([
376
+ "currentUpdate[moduleId] = updatedModules[moduleId];",
377
+ "if(updatedModulesList) updatedModulesList.push(moduleId);"
378
+ ]),
379
+ "}"
380
+ ]),
381
+ "}",
382
+ "resolve(obj);"
383
+ ])};`,
384
+ `var onReject = ${runtimeTemplate.basicFunction("error", [
385
+ "var errorMsg = error.message || 'unknown reason';",
386
+ "error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorMsg + ')';",
387
+ "error.name = 'ChunkLoadError';",
388
+ "reject(error);"
389
+ ])}`,
390
+ `var loadScript = ${runtimeTemplate.basicFunction(
391
+ "url, onResolve, onReject",
392
+ [
393
+ `return ${importFunctionName}(/* webpackIgnore: true */ url).then(onResolve).catch(onReject)`
394
+ ]
395
+ )}`,
396
+ "loadScript(url, onResolve, onReject);"
397
+ ]
398
+ )});`
399
+ ]),
400
+ "}",
401
+ ""
402
+ ])
403
+ : "// no HMR",
404
+ "",
405
+ withHmrManifest
406
+ ? Template.asString([
407
+ `${
408
+ RuntimeGlobals.hmrDownloadManifest
409
+ } = ${runtimeTemplate.basicFunction("", [
410
+ `return ${importFunctionName}(/* webpackIgnore: true */ ${RuntimeGlobals.publicPath} + ${
411
+ RuntimeGlobals.getUpdateManifestFilename
412
+ }()).then(${runtimeTemplate.basicFunction("obj", [
413
+ "return obj.default;"
414
+ ])}, ${runtimeTemplate.basicFunction("error", [
415
+ "if(['MODULE_NOT_FOUND', 'ENOENT'].includes(error.code)) return;",
416
+ "throw error;"
417
+ ])});`
418
+ ])};`
419
+ ])
420
+ : "// no HMR manifest"
347
421
  ]);
348
422
  }
349
423
  }
@@ -12,7 +12,7 @@
12
12
  * @param {SourcePosition} pos position
13
13
  * @returns {string} formatted position
14
14
  */
15
- const formatPosition = pos => {
15
+ const formatPosition = (pos) => {
16
16
  if (pos && typeof pos === "object") {
17
17
  if ("line" in pos && "column" in pos) {
18
18
  return `${pos.line}:${pos.column}`;
@@ -27,7 +27,7 @@ const formatPosition = pos => {
27
27
  * @param {DependencyLocation} loc location
28
28
  * @returns {string} formatted location
29
29
  */
30
- const formatLocation = loc => {
30
+ const formatLocation = (loc) => {
31
31
  if (loc && typeof loc === "object") {
32
32
  if ("start" in loc && loc.start && "end" in loc && loc.end) {
33
33
  if (
@@ -8,7 +8,6 @@
8
8
 
9
9
  var $interceptModuleExecution$ = undefined;
10
10
  var $moduleCache$ = undefined;
11
- // eslint-disable-next-line no-unused-vars
12
11
  var $hmrModuleData$ = undefined;
13
12
  /** @type {() => Promise} */
14
13
  var $hmrDownloadManifest$ = undefined;
@@ -286,7 +285,8 @@ module.exports = function () {
286
285
  update.m,
287
286
  promises,
288
287
  currentUpdateApplyHandlers,
289
- updatedModules
288
+ updatedModules,
289
+ update.css
290
290
  );
291
291
  return promises;
292
292
  }, [])
@@ -355,38 +355,50 @@ module.exports = function () {
355
355
  };
356
356
 
357
357
  var outdatedModules = [];
358
- results.forEach(function (result) {
359
- if (result.apply) {
360
- var modules = result.apply(reportError);
361
- if (modules) {
362
- for (var i = 0; i < modules.length; i++) {
363
- outdatedModules.push(modules[i]);
364
- }
365
- }
366
- }
367
- });
368
358
 
369
- return Promise.all([disposePromise, applyPromise]).then(function () {
370
- // handle errors in accept handlers and self accepted module load
371
- if (error) {
372
- return setStatus("fail").then(function () {
373
- throw error;
374
- });
375
- }
359
+ var onAccepted = function () {
360
+ return Promise.all([disposePromise, applyPromise]).then(function () {
361
+ // handle errors in accept handlers and self accepted module load
362
+ if (error) {
363
+ return setStatus("fail").then(function () {
364
+ throw error;
365
+ });
366
+ }
376
367
 
377
- if (queuedInvalidatedModules) {
378
- return internalApply(options).then(function (list) {
379
- outdatedModules.forEach(function (moduleId) {
380
- if (list.indexOf(moduleId) < 0) list.push(moduleId);
368
+ if (queuedInvalidatedModules) {
369
+ return internalApply(options).then(function (list) {
370
+ outdatedModules.forEach(function (moduleId) {
371
+ if (list.indexOf(moduleId) < 0) list.push(moduleId);
372
+ });
373
+ return list;
381
374
  });
382
- return list;
383
- });
384
- }
375
+ }
385
376
 
386
- return setStatus("idle").then(function () {
387
- return outdatedModules;
377
+ return setStatus("idle").then(function () {
378
+ return outdatedModules;
379
+ });
388
380
  });
389
- });
381
+ };
382
+
383
+ return Promise.all(
384
+ results
385
+ .filter(function (result) {
386
+ return result.apply;
387
+ })
388
+ .map(function (result) {
389
+ return result.apply(reportError);
390
+ })
391
+ )
392
+ .then(function (applyResults) {
393
+ applyResults.forEach(function (modules) {
394
+ if (modules) {
395
+ for (var i = 0; i < modules.length; i++) {
396
+ outdatedModules.push(modules[i]);
397
+ }
398
+ }
399
+ });
400
+ })
401
+ .then(onAccepted);
390
402
  }
391
403
 
392
404
  function applyInvalidatedModules() {
@@ -19,7 +19,7 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
19
19
  */
20
20
  generate() {
21
21
  return Template.getFunctionContent(
22
- require("./HotModuleReplacement.runtime.js")
22
+ require("./HotModuleReplacement.runtime")
23
23
  )
24
24
  .replace(
25
25
  /\$interceptModuleExecution\$/g,
@@ -117,7 +117,6 @@ module.exports = function () {
117
117
  for (var moduleId in currentUpdate) {
118
118
  if ($hasOwnProperty$(currentUpdate, moduleId)) {
119
119
  var newModuleFactory = currentUpdate[moduleId];
120
- /** @type {TODO} */
121
120
  var result = newModuleFactory
122
121
  ? getAffectedModuleEffects(moduleId)
123
122
  : {
@@ -282,6 +281,7 @@ module.exports = function () {
282
281
  }
283
282
  },
284
283
  apply: function (reportError) {
284
+ var acceptPromises = [];
285
285
  // insert new code
286
286
  for (var updateModuleId in appliedUpdate) {
287
287
  if ($hasOwnProperty$(appliedUpdate, updateModuleId)) {
@@ -318,8 +318,9 @@ module.exports = function () {
318
318
  }
319
319
  }
320
320
  for (var k = 0; k < callbacks.length; k++) {
321
+ var result;
321
322
  try {
322
- callbacks[k].call(null, moduleOutdatedDependencies);
323
+ result = callbacks[k].call(null, moduleOutdatedDependencies);
323
324
  } catch (err) {
324
325
  if (typeof errorHandlers[k] === "function") {
325
326
  try {
@@ -356,54 +357,63 @@ module.exports = function () {
356
357
  }
357
358
  }
358
359
  }
360
+ if (result && typeof result.then === "function") {
361
+ acceptPromises.push(result);
362
+ }
359
363
  }
360
364
  }
361
365
  }
362
366
  }
363
367
 
364
- // Load self accepted modules
365
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
366
- var item = outdatedSelfAcceptedModules[o];
367
- var moduleId = item.module;
368
- try {
369
- item.require(moduleId);
370
- } catch (err) {
371
- if (typeof item.errorHandler === "function") {
372
- try {
373
- item.errorHandler(err, {
374
- moduleId: moduleId,
375
- module: $moduleCache$[moduleId]
376
- });
377
- } catch (err1) {
368
+ var onAccepted = function () {
369
+ // Load self accepted modules
370
+ for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
371
+ var item = outdatedSelfAcceptedModules[o];
372
+ var moduleId = item.module;
373
+ try {
374
+ item.require(moduleId);
375
+ } catch (err) {
376
+ if (typeof item.errorHandler === "function") {
377
+ try {
378
+ item.errorHandler(err, {
379
+ moduleId: moduleId,
380
+ module: $moduleCache$[moduleId]
381
+ });
382
+ } catch (err1) {
383
+ if (options.onErrored) {
384
+ options.onErrored({
385
+ type: "self-accept-error-handler-errored",
386
+ moduleId: moduleId,
387
+ error: err1,
388
+ originalError: err
389
+ });
390
+ }
391
+ if (!options.ignoreErrored) {
392
+ reportError(err1);
393
+ reportError(err);
394
+ }
395
+ }
396
+ } else {
378
397
  if (options.onErrored) {
379
398
  options.onErrored({
380
- type: "self-accept-error-handler-errored",
399
+ type: "self-accept-errored",
381
400
  moduleId: moduleId,
382
- error: err1,
383
- originalError: err
401
+ error: err
384
402
  });
385
403
  }
386
404
  if (!options.ignoreErrored) {
387
- reportError(err1);
388
405
  reportError(err);
389
406
  }
390
407
  }
391
- } else {
392
- if (options.onErrored) {
393
- options.onErrored({
394
- type: "self-accept-errored",
395
- moduleId: moduleId,
396
- error: err
397
- });
398
- }
399
- if (!options.ignoreErrored) {
400
- reportError(err);
401
- }
402
408
  }
403
409
  }
404
- }
410
+ };
405
411
 
406
- return outdatedModules;
412
+ return Promise.all(acceptPromises)
413
+ .then(onAccepted)
414
+ .then(function () {
415
+ return outdatedModules;
416
+ });
407
417
  }
408
418
  };
409
419
  }
@@ -0,0 +1,37 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Haijie Xie @hai-x
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+
10
+ const Template = require("../Template");
11
+
12
+ /**
13
+ * @param {string} type unique identifier used for HMR runtime properties
14
+ * @returns {string} HMR runtime code
15
+ */
16
+ const generateJavascriptHMR = (type) =>
17
+ Template.getFunctionContent(
18
+ require("../hmr/JavascriptHotModuleReplacement.runtime")
19
+ )
20
+ .replace(/\$key\$/g, type)
21
+ .replace(/\$installedChunks\$/g, "installedChunks")
22
+ .replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
23
+ .replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
24
+ .replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
25
+ .replace(/\$ensureChunkHandlers\$/g, RuntimeGlobals.ensureChunkHandlers)
26
+ .replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
27
+ .replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
28
+ .replace(
29
+ /\$hmrDownloadUpdateHandlers\$/g,
30
+ RuntimeGlobals.hmrDownloadUpdateHandlers
31
+ )
32
+ .replace(
33
+ /\$hmrInvalidateModuleHandlers\$/g,
34
+ RuntimeGlobals.hmrInvalidateModuleHandlers
35
+ );
36
+
37
+ module.exports.generateJavascriptHMR = generateJavascriptHMR;