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
package/bin/webpack.js CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ "use strict";
4
+
3
5
  /**
4
6
  * @param {string} command process to run
5
7
  * @param {string[]} args command line arguments
@@ -7,17 +9,18 @@
7
9
  */
8
10
  const runCommand = (command, args) => {
9
11
  const cp = require("child_process");
12
+
10
13
  return new Promise((resolve, reject) => {
11
14
  const executedCommand = cp.spawn(command, args, {
12
15
  stdio: "inherit",
13
16
  shell: true
14
17
  });
15
18
 
16
- executedCommand.on("error", error => {
19
+ executedCommand.on("error", (error) => {
17
20
  reject(error);
18
21
  });
19
22
 
20
- executedCommand.on("exit", code => {
23
+ executedCommand.on("exit", (code) => {
21
24
  if (code === 0) {
22
25
  resolve();
23
26
  } else {
@@ -31,7 +34,7 @@ const runCommand = (command, args) => {
31
34
  * @param {string} packageName name of the package
32
35
  * @returns {boolean} is the package installed?
33
36
  */
34
- const isInstalled = packageName => {
37
+ const isInstalled = (packageName) => {
35
38
  if (process.versions.pnp) {
36
39
  return true;
37
40
  }
@@ -73,14 +76,16 @@ const isInstalled = packageName => {
73
76
  * @param {CliOption} cli options
74
77
  * @returns {void}
75
78
  */
76
- const runCli = cli => {
79
+ const runCli = (cli) => {
77
80
  const path = require("path");
81
+
78
82
  const pkgPath = require.resolve(`${cli.package}/package.json`);
83
+
79
84
  const pkg = require(pkgPath);
80
85
 
81
86
  if (pkg.type === "module" || /\.mjs/i.test(pkg.bin[cli.binName])) {
82
87
  import(path.resolve(path.dirname(pkgPath), pkg.bin[cli.binName])).catch(
83
- err => {
88
+ (err) => {
84
89
  console.error(err);
85
90
  process.exitCode = 1;
86
91
  }
@@ -147,7 +152,7 @@ if (!cli.installed) {
147
152
  // executed. Setting the exit code here to ensure the script exits correctly in those cases. The callback
148
153
  // function is responsible for clearing the exit code if the user wishes to install webpack-cli.
149
154
  process.exitCode = 1;
150
- questionInterface.question(question, answer => {
155
+ questionInterface.question(question, (answer) => {
151
156
  questionInterface.close();
152
157
 
153
158
  const normalizedAnswer = answer.toLowerCase().startsWith("y");
@@ -171,13 +176,14 @@ if (!cli.installed) {
171
176
  );
172
177
 
173
178
  runCommand(
174
- /** @type {string} */ (packageManager),
175
- installOptions.concat(cli.package)
179
+ /** @type {string} */
180
+ (packageManager),
181
+ [...installOptions, cli.package]
176
182
  )
177
183
  .then(() => {
178
184
  runCli(cli);
179
185
  })
180
- .catch(err => {
186
+ .catch((err) => {
181
187
  console.error(err);
182
188
  process.exitCode = 1;
183
189
  });
package/hot/dev-server.js CHANGED
@@ -61,14 +61,29 @@ if (module.hot) {
61
61
  }
62
62
  });
63
63
  };
64
+ /** @type {EventTarget | NodeJS.EventEmitter} */
64
65
  var hotEmitter = require("./emitter");
65
- hotEmitter.on("webpackHotUpdate", function (currentHash) {
66
- lastHash = currentHash;
66
+ /**
67
+ * @param {CustomEvent<{ currentHash: string }>} event event or hash
68
+ */
69
+ var handler = function (event) {
70
+ lastHash = typeof event === "string" ? event : event.detail.currentHash;
67
71
  if (!upToDate() && module.hot.status() === "idle") {
68
72
  log("info", "[HMR] Checking for updates on the server...");
69
73
  check();
70
74
  }
71
- });
75
+ };
76
+
77
+ if (typeof EventTarget !== "undefined" && hotEmitter instanceof EventTarget) {
78
+ hotEmitter.addEventListener(
79
+ "webpackHotUpdate",
80
+ /** @type {EventListener} */
81
+ (handler)
82
+ );
83
+ } else {
84
+ hotEmitter.on("webpackHotUpdate", handler);
85
+ }
86
+
72
87
  log("info", "[HMR] Waiting for update signal from WDS...");
73
88
  } else {
74
89
  throw new Error("[HMR] Hot Module Replacement is disabled.");
@@ -0,0 +1,7 @@
1
+ if (typeof EventTarget !== "function") {
2
+ throw new Error(
3
+ "Environment doesn't support lazy compilation (requires EventTarget)"
4
+ );
5
+ }
6
+
7
+ module.exports = new EventTarget();
@@ -1,7 +1,7 @@
1
- /* global __resourceQuery */
2
-
3
1
  "use strict";
4
2
 
3
+ /* global __resourceQuery */
4
+
5
5
  var urlBase = decodeURIComponent(__resourceQuery.slice(1));
6
6
 
7
7
  /**
@@ -10,29 +10,6 @@ var urlBase = decodeURIComponent(__resourceQuery.slice(1));
10
10
  */
11
11
  exports.keepAlive = function (options) {
12
12
  var data = options.data;
13
- var onError = options.onError;
14
- var active = options.active;
15
- var module = options.module;
16
- /** @type {import("http").IncomingMessage} */
17
- var response;
18
- var request = (
19
- urlBase.startsWith("https") ? require("https") : require("http")
20
- ).request(
21
- urlBase + data,
22
- {
23
- agent: false,
24
- headers: { accept: "text/event-stream" }
25
- },
26
- function (res) {
27
- response = res;
28
- response.on("error", errorHandler);
29
- if (!active && !module.hot) {
30
- console.log(
31
- "Hot Module Replacement is not enabled. Waiting for process restart..."
32
- );
33
- }
34
- }
35
- );
36
13
 
37
14
  /**
38
15
  * @param {Error} err error
@@ -40,11 +17,50 @@ exports.keepAlive = function (options) {
40
17
  function errorHandler(err) {
41
18
  err.message =
42
19
  "Problem communicating active modules to the server: " + err.message;
43
- onError(err);
20
+ options.onError(err);
44
21
  }
45
- request.on("error", errorHandler);
46
- request.end();
22
+
23
+ /** @type {Promise<import("http") | import("https")>} */
24
+ var mod = require("./load-http")(urlBase.startsWith("https"));
25
+
26
+ /** @type {import("http").ClientRequest} */
27
+ var request;
28
+ /** @type {import("http").IncomingMessage} */
29
+ var response;
30
+
31
+ mod.then(function (client) {
32
+ request = client.request(
33
+ urlBase + data,
34
+ {
35
+ agent: false,
36
+ headers: { accept: "text/event-stream" }
37
+ },
38
+ function (res) {
39
+ response = res;
40
+ response.on("error", errorHandler);
41
+
42
+ if (!options.active && !options.module.hot) {
43
+ console.log(
44
+ "Hot Module Replacement is not enabled. Waiting for process restart..."
45
+ );
46
+ }
47
+ }
48
+ );
49
+
50
+ request.on("error", errorHandler);
51
+ request.end();
52
+ });
53
+
47
54
  return function () {
48
- response.destroy();
55
+ if (response) {
56
+ response.destroy();
57
+ }
49
58
  };
50
59
  };
60
+
61
+ /**
62
+ * @param {string} value new url value
63
+ */
64
+ exports.setUrl = function (value) {
65
+ urlBase = value;
66
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ /* global __resourceQuery */
4
+
5
+ var isNodeLikeEnv =
6
+ typeof global !== "undefined" && typeof global.process !== "undefined";
7
+
8
+ var handler = isNodeLikeEnv
9
+ ? require("./lazy-compilation-node")
10
+ : require("./lazy-compilation-web");
11
+
12
+ handler.setUrl(decodeURIComponent(__resourceQuery.slice(1)));
13
+
14
+ /**
15
+ * @param {{ data: string, onError: (err: Error) => void, active: boolean, module: module }} options options
16
+ * @returns {() => void} function to destroy response
17
+ */
18
+ module.exports = handler;
@@ -1,7 +1,7 @@
1
- /* global __resourceQuery */
2
-
3
1
  "use strict";
4
2
 
3
+ /* global __resourceQuery */
4
+
5
5
  if (typeof EventSource !== "function") {
6
6
  throw new Error(
7
7
  "Environment doesn't support lazy compilation (requires EventSource)"
@@ -54,15 +54,18 @@ var updateEventSource = function updateEventSource() {
54
54
  exports.keepAlive = function (options) {
55
55
  var data = options.data;
56
56
  var onError = options.onError;
57
- var active = options.active;
58
- var module = options.module;
57
+
59
58
  errorHandlers.add(onError);
59
+
60
60
  var value = activeKeys.get(data) || 0;
61
+
61
62
  activeKeys.set(data, value + 1);
63
+
62
64
  if (value === 0) {
63
65
  updateEventSource();
64
66
  }
65
- if (!active && !module.hot) {
67
+
68
+ if (!options.active && !options.module.hot) {
66
69
  console.log(
67
70
  "Hot Module Replacement is not enabled. Waiting for process restart..."
68
71
  );
@@ -81,3 +84,10 @@ exports.keepAlive = function (options) {
81
84
  }, 1000);
82
85
  };
83
86
  };
87
+
88
+ /**
89
+ * @param {string} value new url value
90
+ */
91
+ exports.setUrl = function (value) {
92
+ urlBase = value;
93
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {boolean} isHTTPS true when need https module, otherwise false
3
+ * @returns {Promise<import("http") | import("https")>}
4
+ */
5
+ module.exports = function (isHTTPS) {
6
+ return isHTTPS ? import("https") : import("http");
7
+ };
package/hot/log.js CHANGED
@@ -45,6 +45,21 @@ module.exports = function (level, msg) {
45
45
  }
46
46
  };
47
47
 
48
+ /**
49
+ * @param {Error} err error
50
+ * @returns {string} formatted error
51
+ */
52
+ module.exports.formatError = function (err) {
53
+ var message = err.message;
54
+ var stack = err.stack;
55
+ if (!stack) {
56
+ return message;
57
+ } else if (stack.indexOf(message) < 0) {
58
+ return message + "\n" + stack;
59
+ }
60
+ return stack;
61
+ };
62
+
48
63
  var group = console.group || dummy;
49
64
  var groupCollapsed = console.groupCollapsed || dummy;
50
65
  var groupEnd = console.groupEnd || dummy;
@@ -61,18 +76,3 @@ module.exports.groupEnd = logGroup(groupEnd);
61
76
  module.exports.setLogLevel = function (level) {
62
77
  logLevel = level;
63
78
  };
64
-
65
- /**
66
- * @param {Error} err error
67
- * @returns {string} formatted error
68
- */
69
- module.exports.formatError = function (err) {
70
- var message = err.message;
71
- var stack = err.stack;
72
- if (!stack) {
73
- return message;
74
- } else if (stack.indexOf(message) < 0) {
75
- return message + "\n" + stack;
76
- }
77
- return stack;
78
- };
@@ -4,7 +4,7 @@
4
4
  */
5
5
  /* globals __webpack_hash__ */
6
6
  if (module.hot) {
7
- /** @type {undefined|string} */
7
+ /** @type {undefined | string} */
8
8
  var lastHash;
9
9
  var upToDate = function upToDate() {
10
10
  return /** @type {string} */ (lastHash).indexOf(__webpack_hash__) >= 0;
@@ -79,9 +79,13 @@ if (module.hot) {
79
79
  }
80
80
  });
81
81
  };
82
+ /** @type {EventTarget | NodeJS.EventEmitter} */
82
83
  var hotEmitter = require("./emitter");
83
- hotEmitter.on("webpackHotUpdate", function (currentHash) {
84
- lastHash = currentHash;
84
+ /**
85
+ * @param {CustomEvent<{ currentHash: string }>} event event or hash
86
+ */
87
+ var handler = function (event) {
88
+ lastHash = typeof event === "string" ? event : event.detail.currentHash;
85
89
  if (!upToDate()) {
86
90
  var status = module.hot.status();
87
91
  if (status === "idle") {
@@ -96,7 +100,18 @@ if (module.hot) {
96
100
  );
97
101
  }
98
102
  }
99
- });
103
+ };
104
+
105
+ if (typeof EventTarget !== "undefined" && hotEmitter instanceof EventTarget) {
106
+ hotEmitter.addEventListener(
107
+ "webpackHotUpdate",
108
+ /** @type {EventListener} */
109
+ (handler)
110
+ );
111
+ } else {
112
+ hotEmitter.on("webpackHotUpdate", handler);
113
+ }
114
+
100
115
  log("info", "[HMR] Waiting for update signal from WDS...");
101
116
  } else {
102
117
  throw new Error("[HMR] Hot Module Replacement is disabled.");
package/hot/poll.js CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  /* globals __resourceQuery */
6
6
  if (module.hot) {
7
+ // eslint-disable-next-line no-implicit-coercion
7
8
  var hotPollInterval = +__resourceQuery.slice(1) || 10 * 60 * 1000;
8
9
  var log = require("./log");
9
10
 
package/lib/APIPlugin.js CHANGED
@@ -5,7 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const InitFragment = require("./InitFragment");
8
+ const {
9
+ getExternalModuleNodeCommonjsInitFragment
10
+ } = require("./ExternalModule");
9
11
  const {
10
12
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
13
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
@@ -17,8 +19,8 @@ const ConstDependency = require("./dependencies/ConstDependency");
17
19
  const BasicEvaluatedExpression = require("./javascript/BasicEvaluatedExpression");
18
20
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
19
21
  const {
20
- toConstantDependency,
21
- evaluateToString
22
+ evaluateToString,
23
+ toConstantDependency
22
24
  } = require("./javascript/JavascriptParserHelpers");
23
25
  const ChunkNameRuntimeModule = require("./runtime/ChunkNameRuntimeModule");
24
26
  const GetFullHashRuntimeModule = require("./runtime/GetFullHashRuntimeModule");
@@ -30,11 +32,9 @@ const GetFullHashRuntimeModule = require("./runtime/GetFullHashRuntimeModule");
30
32
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
31
33
 
32
34
  /**
33
- * @param {boolean | undefined} module true if ES module
34
- * @param {string} importMetaName `import.meta` name
35
35
  * @returns {Record<string, {expr: string, req: string[] | null, type?: string, assign: boolean}>} replacements
36
36
  */
37
- function getReplacements(module, importMetaName) {
37
+ function getReplacements() {
38
38
  return {
39
39
  __webpack_require__: {
40
40
  expr: RuntimeGlobals.require,
@@ -42,6 +42,12 @@ function getReplacements(module, importMetaName) {
42
42
  type: "function",
43
43
  assign: false
44
44
  },
45
+ __webpack_global__: {
46
+ expr: RuntimeGlobals.require,
47
+ req: [RuntimeGlobals.require],
48
+ type: "function",
49
+ assign: false
50
+ },
45
51
  __webpack_public_path__: {
46
52
  expr: RuntimeGlobals.publicPath,
47
53
  req: [RuntimeGlobals.publicPath],
@@ -67,9 +73,7 @@ function getReplacements(module, importMetaName) {
67
73
  assign: true
68
74
  },
69
75
  __non_webpack_require__: {
70
- expr: module
71
- ? `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)`
72
- : "require",
76
+ expr: "require",
73
77
  req: null,
74
78
  type: undefined, // type is not known, depends on environment
75
79
  assign: true
@@ -132,19 +136,7 @@ function getReplacements(module, importMetaName) {
132
136
 
133
137
  const PLUGIN_NAME = "APIPlugin";
134
138
 
135
- /**
136
- * @typedef {object} APIPluginOptions
137
- * @property {boolean} [module] the output filename
138
- */
139
-
140
139
  class APIPlugin {
141
- /**
142
- * @param {APIPluginOptions} [options] options
143
- */
144
- constructor(options = {}) {
145
- this.options = options;
146
- }
147
-
148
140
  /**
149
141
  * Apply the plugin
150
142
  * @param {Compiler} compiler the compiler instance
@@ -154,13 +146,15 @@ class APIPlugin {
154
146
  compiler.hooks.compilation.tap(
155
147
  PLUGIN_NAME,
156
148
  (compilation, { normalModuleFactory }) => {
157
- const importMetaName = /** @type {string} */ (
158
- compilation.outputOptions.importMetaName
159
- );
160
- const REPLACEMENTS = getReplacements(
161
- this.options.module,
162
- importMetaName
163
- );
149
+ const moduleOutput = compilation.options.output.module;
150
+ const nodeTarget = compiler.platform.node;
151
+ const nodeEsm = moduleOutput && nodeTarget;
152
+
153
+ const REPLACEMENTS = getReplacements();
154
+ if (nodeEsm) {
155
+ REPLACEMENTS.__non_webpack_require__.expr =
156
+ "__WEBPACK_EXTERNAL_createRequire_require";
157
+ }
164
158
 
165
159
  compilation.dependencyTemplates.set(
166
160
  ConstDependency,
@@ -169,7 +163,7 @@ class APIPlugin {
169
163
 
170
164
  compilation.hooks.runtimeRequirementInTree
171
165
  .for(RuntimeGlobals.chunkName)
172
- .tap(PLUGIN_NAME, chunk => {
166
+ .tap(PLUGIN_NAME, (chunk) => {
173
167
  compilation.addRuntimeModule(
174
168
  chunk,
175
169
  new ChunkNameRuntimeModule(/** @type {string} */ (chunk.name))
@@ -179,7 +173,7 @@ class APIPlugin {
179
173
 
180
174
  compilation.hooks.runtimeRequirementInTree
181
175
  .for(RuntimeGlobals.getFullHash)
182
- .tap(PLUGIN_NAME, (chunk, set) => {
176
+ .tap(PLUGIN_NAME, (chunk, _set) => {
183
177
  compilation.addRuntimeModule(chunk, new GetFullHashRuntimeModule());
184
178
  return true;
185
179
  });
@@ -190,16 +184,9 @@ class APIPlugin {
190
184
  PLUGIN_NAME,
191
185
  (source, module, renderContext) => {
192
186
  if (/** @type {BuildInfo} */ (module.buildInfo).needCreateRequire) {
193
- const needPrefix =
194
- renderContext.runtimeTemplate.supportNodePrefixForCoreModules();
195
187
  const chunkInitFragments = [
196
- new InitFragment(
197
- `import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "${
198
- needPrefix ? "node:" : ""
199
- }module";\n`,
200
- InitFragment.STAGE_HARMONY_IMPORTS,
201
- 0,
202
- "external module node-commonjs"
188
+ getExternalModuleNodeCommonjsInitFragment(
189
+ renderContext.runtimeTemplate
203
190
  )
204
191
  ];
205
192
 
@@ -213,21 +200,32 @@ class APIPlugin {
213
200
  /**
214
201
  * @param {JavascriptParser} parser the parser
215
202
  */
216
- const handler = parser => {
203
+ const handler = (parser) => {
217
204
  for (const key of Object.keys(REPLACEMENTS)) {
218
205
  const info = REPLACEMENTS[key];
219
- parser.hooks.expression.for(key).tap(PLUGIN_NAME, expression => {
206
+ parser.hooks.expression.for(key).tap(PLUGIN_NAME, (expression) => {
220
207
  const dep = toConstantDependency(parser, info.expr, info.req);
221
208
 
222
- if (key === "__non_webpack_require__" && this.options.module) {
223
- /** @type {BuildInfo} */
224
- (parser.state.module.buildInfo).needCreateRequire = true;
209
+ if (key === "__non_webpack_require__" && moduleOutput) {
210
+ if (nodeTarget) {
211
+ /** @type {BuildInfo} */
212
+ (parser.state.module.buildInfo).needCreateRequire = true;
213
+ } else {
214
+ const warning = new WebpackError(
215
+ `${PLUGIN_NAME}\n__non_webpack_require__ is only allowed in target node`
216
+ );
217
+ warning.loc = /** @type {DependencyLocation} */ (
218
+ expression.loc
219
+ );
220
+ warning.module = parser.state.module;
221
+ compilation.warnings.push(warning);
222
+ }
225
223
  }
226
224
 
227
225
  return dep(expression);
228
226
  });
229
227
  if (info.assign === false) {
230
- parser.hooks.assign.for(key).tap(PLUGIN_NAME, expr => {
228
+ parser.hooks.assign.for(key).tap(PLUGIN_NAME, (expr) => {
231
229
  const err = new WebpackError(`${key} must not be assigned`);
232
230
  err.loc = /** @type {DependencyLocation} */ (expr.loc);
233
231
  throw err;
@@ -242,7 +240,7 @@ class APIPlugin {
242
240
 
243
241
  parser.hooks.expression
244
242
  .for("__webpack_layer__")
245
- .tap(PLUGIN_NAME, expr => {
243
+ .tap(PLUGIN_NAME, (expr) => {
246
244
  const dep = new ConstDependency(
247
245
  JSON.stringify(parser.state.module.layer),
248
246
  /** @type {Range} */ (expr.range)
@@ -253,7 +251,7 @@ class APIPlugin {
253
251
  });
254
252
  parser.hooks.evaluateIdentifier
255
253
  .for("__webpack_layer__")
256
- .tap(PLUGIN_NAME, expr =>
254
+ .tap(PLUGIN_NAME, (expr) =>
257
255
  (parser.state.module.layer === null
258
256
  ? new BasicEvaluatedExpression().setNull()
259
257
  : new BasicEvaluatedExpression().setString(
@@ -263,7 +261,7 @@ class APIPlugin {
263
261
  );
264
262
  parser.hooks.evaluateTypeof
265
263
  .for("__webpack_layer__")
266
- .tap(PLUGIN_NAME, expr =>
264
+ .tap(PLUGIN_NAME, (expr) =>
267
265
  new BasicEvaluatedExpression()
268
266
  .setString(
269
267
  parser.state.module.layer === null ? "object" : "string"
@@ -273,7 +271,7 @@ class APIPlugin {
273
271
 
274
272
  parser.hooks.expression
275
273
  .for("__webpack_module__.id")
276
- .tap(PLUGIN_NAME, expr => {
274
+ .tap(PLUGIN_NAME, (expr) => {
277
275
  /** @type {BuildInfo} */
278
276
  (parser.state.module.buildInfo).moduleConcatenationBailout =
279
277
  "__webpack_module__.id";
@@ -289,7 +287,7 @@ class APIPlugin {
289
287
 
290
288
  parser.hooks.expression
291
289
  .for("__webpack_module__")
292
- .tap(PLUGIN_NAME, expr => {
290
+ .tap(PLUGIN_NAME, (expr) => {
293
291
  /** @type {BuildInfo} */
294
292
  (parser.state.module.buildInfo).moduleConcatenationBailout =
295
293
  "__webpack_module__";
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const WebpackError = require("./WebpackError");
9
+
9
10
  const CURRENT_METHOD_REGEXP = /at ([a-zA-Z0-9_.]*)/;
10
11
 
11
12
  /**
@@ -8,20 +8,19 @@
8
8
  const DependenciesBlock = require("./DependenciesBlock");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
13
11
  /** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
14
12
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
15
13
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
16
14
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
17
- /** @typedef {import("./Module")} Module */
18
15
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
16
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
17
  /** @typedef {import("./util/Hash")} Hash */
21
18
 
19
+ /** @typedef {(ChunkGroupOptions & { entryOptions?: EntryOptions }) | string} GroupOptions */
20
+
22
21
  class AsyncDependenciesBlock extends DependenciesBlock {
23
22
  /**
24
- * @param {(ChunkGroupOptions & { entryOptions?: EntryOptions }) | null} groupOptions options for the group
23
+ * @param {GroupOptions | null} groupOptions options for the group
25
24
  * @param {(DependencyLocation | null)=} loc the line of code
26
25
  * @param {(string | null)=} request the request
27
26
  */
@@ -39,7 +38,7 @@ class AsyncDependenciesBlock extends DependenciesBlock {
39
38
  }
40
39
 
41
40
  /**
42
- * @returns {string | null | undefined} The name of the chunk
41
+ * @returns {ChunkGroupOptions["name"]} The name of the chunk
43
42
  */
44
43
  get chunkName() {
45
44
  return this.groupOptions.name;