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,7 +10,8 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
10
10
  const Dependency = require("../Dependency");
11
11
  const Module = require("../Module");
12
12
  const ModuleFactory = require("../ModuleFactory");
13
- const { JS_TYPES } = require("../ModuleSourceTypesConstants");
13
+ const { JAVASCRIPT_TYPES } = require("../ModuleSourceTypeConstants");
14
+ const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
14
15
  const {
15
16
  WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY
16
17
  } = require("../ModuleTypeConstants");
@@ -19,21 +20,23 @@ const Template = require("../Template");
19
20
  const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
20
21
  const { registerNotSerializable } = require("../util/serialization");
21
22
 
22
- /** @typedef {import("../../declarations/WebpackOptions")} WebpackOptions */
23
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
23
24
  /** @typedef {import("../Compilation")} Compilation */
24
25
  /** @typedef {import("../Compiler")} Compiler */
25
26
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
27
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
26
28
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
27
29
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
28
30
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
29
31
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
32
+ /** @typedef {import("../Module").LibIdent} LibIdent */
33
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
30
34
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
31
35
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
36
+ /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
32
37
  /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
33
- /** @typedef {import("../ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
34
38
  /** @typedef {import("../RequestShortener")} RequestShortener */
35
39
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
36
- /** @typedef {import("../WebpackError")} WebpackError */
37
40
  /** @typedef {import("../dependencies/HarmonyImportDependency")} HarmonyImportDependency */
38
41
  /** @typedef {import("../util/Hash")} Hash */
39
42
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
@@ -42,8 +45,8 @@ const { registerNotSerializable } = require("../util/serialization");
42
45
 
43
46
  /**
44
47
  * @typedef {object} BackendApi
45
- * @property {function(function((Error | null)=) : void): void} dispose
46
- * @property {function(Module): ModuleResult} module
48
+ * @property {(callback: (err?: (Error | null)) => void) => void} dispose
49
+ * @property {(module: Module) => ModuleResult} module
47
50
  */
48
51
 
49
52
  const HMR_DEPENDENCY_TYPES = new Set([
@@ -54,7 +57,7 @@ const HMR_DEPENDENCY_TYPES = new Set([
54
57
  ]);
55
58
 
56
59
  /**
57
- * @param {undefined|string|RegExp|Function} test test option
60
+ * @param {Options["test"]} test test option
58
61
  * @param {Module} module the module
59
62
  * @returns {boolean | null | string} true, if the module should be selected
60
63
  */
@@ -159,7 +162,7 @@ class LazyCompilationProxyModule extends Module {
159
162
 
160
163
  /**
161
164
  * @param {LibIdentOptions} options options
162
- * @returns {string | null} an identifier for library inclusion
165
+ * @returns {LibIdent | null} an identifier for library inclusion
163
166
  */
164
167
  libIdent(options) {
165
168
  return `${this.originalModule.libIdent(
@@ -169,7 +172,7 @@ class LazyCompilationProxyModule extends Module {
169
172
 
170
173
  /**
171
174
  * @param {NeedBuildContext} context context info
172
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
175
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
173
176
  * @returns {void}
174
177
  */
175
178
  needBuild(context, callback) {
@@ -181,7 +184,7 @@ class LazyCompilationProxyModule extends Module {
181
184
  * @param {Compilation} compilation the compilation
182
185
  * @param {ResolverWithOptions} resolver the resolver
183
186
  * @param {InputFileSystem} fs the file system
184
- * @param {function(WebpackError=): void} callback callback function
187
+ * @param {BuildCallback} callback callback function
185
188
  * @returns {void}
186
189
  */
187
190
  build(options, compilation, resolver, fs, callback) {
@@ -206,7 +209,7 @@ class LazyCompilationProxyModule extends Module {
206
209
  * @returns {SourceTypes} types available (do not mutate)
207
210
  */
208
211
  getSourceTypes() {
209
- return JS_TYPES;
212
+ return JAVASCRIPT_TYPES;
210
213
  }
211
214
 
212
215
  /**
@@ -255,6 +258,7 @@ class LazyCompilationProxyModule extends Module {
255
258
  block,
256
259
  module,
257
260
  request: this.request,
261
+ dependency: dep,
258
262
  strict: false, // TODO this should be inherited from the original module
259
263
  message: "import()",
260
264
  runtimeRequirements
@@ -287,7 +291,7 @@ class LazyCompilationProxyModule extends Module {
287
291
  keepActive
288
292
  ]);
289
293
  }
290
- sources.set("javascript", new RawSource(source));
294
+ sources.set(JAVASCRIPT_TYPE, new RawSource(source));
291
295
  return {
292
296
  sources,
293
297
  runtimeRequirements
@@ -315,13 +319,13 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
315
319
 
316
320
  /**
317
321
  * @param {ModuleFactoryCreateData} data data object
318
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
322
+ * @param {ModuleFactoryCallback} callback callback
319
323
  * @returns {void}
320
324
  */
321
325
  create(data, callback) {
322
- const dependency = /** @type {LazyCompilationDependency} */ (
323
- data.dependencies[0]
324
- );
326
+ const dependency =
327
+ /** @type {LazyCompilationDependency} */
328
+ (data.dependencies[0]);
325
329
  callback(null, {
326
330
  module: dependency.proxyModule.originalModule
327
331
  });
@@ -331,7 +335,7 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
331
335
  /**
332
336
  * @callback BackendHandler
333
337
  * @param {Compiler} compiler compiler
334
- * @param {function(Error | null, BackendApi=): void} callback callback
338
+ * @param {(err: Error | null, backendApi?: BackendApi) => void} callback callback
335
339
  * @returns {void}
336
340
  */
337
341
 
@@ -341,13 +345,23 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
341
345
  * @returns {Promise<BackendApi>} backend
342
346
  */
343
347
 
348
+ /** @typedef {BackendHandler | PromiseBackendHandler} BackEnd */
349
+
350
+ /** @typedef {(module: Module) => boolean} TestFn */
351
+
352
+ /**
353
+ * @typedef {object} Options options
354
+ * @property {BackEnd} backend the backend
355
+ * @property {boolean=} entries
356
+ * @property {boolean=} imports
357
+ * @property {RegExp | string | TestFn=} test additional filter for lazy compiled entrypoint modules
358
+ */
359
+
360
+ const PLUGIN_NAME = "LazyCompilationPlugin";
361
+
344
362
  class LazyCompilationPlugin {
345
363
  /**
346
- * @param {object} options options
347
- * @param {BackendHandler | PromiseBackendHandler} options.backend the backend
348
- * @param {boolean} options.entries true, when entries are lazy compiled
349
- * @param {boolean} options.imports true, when import() modules are lazy compiled
350
- * @param {RegExp | string | (function(Module): boolean) | undefined} options.test additional filter for lazy compiled entrypoint modules
364
+ * @param {Options} options options
351
365
  */
352
366
  constructor({ backend, entries, imports, test }) {
353
367
  this.backend = backend;
@@ -364,31 +378,28 @@ class LazyCompilationPlugin {
364
378
  apply(compiler) {
365
379
  /** @type {BackendApi} */
366
380
  let backend;
367
- compiler.hooks.beforeCompile.tapAsync(
368
- "LazyCompilationPlugin",
369
- (params, callback) => {
370
- if (backend !== undefined) return callback();
371
- const promise = this.backend(compiler, (err, result) => {
372
- if (err) return callback(err);
373
- backend = /** @type {BackendApi} */ (result);
381
+ compiler.hooks.beforeCompile.tapAsync(PLUGIN_NAME, (params, callback) => {
382
+ if (backend !== undefined) return callback();
383
+ const promise = this.backend(compiler, (err, result) => {
384
+ if (err) return callback(err);
385
+ backend = /** @type {BackendApi} */ (result);
386
+ callback();
387
+ });
388
+ if (promise && promise.then) {
389
+ promise.then((b) => {
390
+ backend = b;
374
391
  callback();
375
- });
376
- if (promise && promise.then) {
377
- promise.then(b => {
378
- backend = b;
379
- callback();
380
- }, callback);
381
- }
392
+ }, callback);
382
393
  }
383
- );
394
+ });
384
395
  compiler.hooks.thisCompilation.tap(
385
- "LazyCompilationPlugin",
396
+ PLUGIN_NAME,
386
397
  (compilation, { normalModuleFactory }) => {
387
398
  normalModuleFactory.hooks.module.tap(
388
- "LazyCompilationPlugin",
389
- (originalModule, createData, resolveData) => {
399
+ PLUGIN_NAME,
400
+ (module, createData, resolveData) => {
390
401
  if (
391
- resolveData.dependencies.every(dep =>
402
+ resolveData.dependencies.every((dep) =>
392
403
  HMR_DEPENDENCY_TYPES.has(dep.type)
393
404
  )
394
405
  ) {
@@ -399,40 +410,42 @@ class LazyCompilationPlugin {
399
410
  /** @type {Module} */
400
411
  (compilation.moduleGraph.getParentModule(hmrDep));
401
412
  const isReferringToDynamicImport = originModule.blocks.some(
402
- block =>
413
+ (block) =>
403
414
  block.dependencies.some(
404
- dep =>
415
+ (dep) =>
405
416
  dep.type === "import()" &&
406
417
  /** @type {HarmonyImportDependency} */ (dep).request ===
407
418
  hmrDep.request
408
419
  )
409
420
  );
410
- if (!isReferringToDynamicImport) return;
421
+ if (!isReferringToDynamicImport) return module;
411
422
  } else if (
412
423
  !resolveData.dependencies.every(
413
- dep =>
424
+ (dep) =>
414
425
  HMR_DEPENDENCY_TYPES.has(dep.type) ||
415
426
  (this.imports &&
416
427
  (dep.type === "import()" ||
417
428
  dep.type === "import() context element")) ||
418
429
  (this.entries && dep.type === "entry")
419
430
  )
420
- )
421
- return;
431
+ ) {
432
+ return module;
433
+ }
422
434
  if (
423
435
  /webpack[/\\]hot[/\\]|webpack-dev-server[/\\]client|webpack-hot-middleware[/\\]client/.test(
424
436
  resolveData.request
425
437
  ) ||
426
- !checkTest(this.test, originalModule)
427
- )
428
- return;
429
- const moduleInfo = backend.module(originalModule);
430
- if (!moduleInfo) return;
438
+ !checkTest(this.test, module)
439
+ ) {
440
+ return module;
441
+ }
442
+ const moduleInfo = backend.module(module);
443
+ if (!moduleInfo) return module;
431
444
  const { client, data, active } = moduleInfo;
432
445
 
433
446
  return new LazyCompilationProxyModule(
434
447
  compiler.context,
435
- originalModule,
448
+ module,
436
449
  resolveData.request,
437
450
  client,
438
451
  data,
@@ -446,7 +459,7 @@ class LazyCompilationPlugin {
446
459
  );
447
460
  }
448
461
  );
449
- compiler.hooks.shutdown.tapAsync("LazyCompilationPlugin", callback => {
462
+ compiler.hooks.shutdown.tapAsync(PLUGIN_NAME, (callback) => {
450
463
  backend.dispose(callback);
451
464
  });
452
465
  }
@@ -5,24 +5,24 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("http").IncomingMessage} IncomingMessage */
9
8
  /** @typedef {import("http").RequestListener} RequestListener */
10
9
  /** @typedef {import("http").ServerOptions} HttpServerOptions */
11
- /** @typedef {import("http").ServerResponse} ServerResponse */
10
+ /** @typedef {import("http").Server} HttpServer */
12
11
  /** @typedef {import("https").ServerOptions} HttpsServerOptions */
12
+ /** @typedef {import("https").Server} HttpsServer */
13
13
  /** @typedef {import("net").AddressInfo} AddressInfo */
14
- /** @typedef {import("net").Server} Server */
15
- /** @typedef {import("../../declarations/WebpackOptions").LazyCompilationDefaultBackendOptions} LazyCompilationDefaultBackendOptions */
16
- /** @typedef {import("../Compiler")} Compiler */
17
- /** @typedef {import("../Module")} Module */
18
- /** @typedef {import("./LazyCompilationPlugin").BackendApi} BackendApi */
19
14
  /** @typedef {import("./LazyCompilationPlugin").BackendHandler} BackendHandler */
15
+ /** @typedef {import("../../declarations/WebpackOptions").LazyCompilationDefaultBackendOptions} LazyCompilationDefaultBackendOptions */
16
+
17
+ /** @typedef {HttpServer | HttpsServer} Server */
18
+ /** @typedef {(server: Server) => void} Listen */
19
+ /** @typedef {() => Server} CreateServerFunction */
20
20
 
21
21
  /**
22
22
  * @param {Omit<LazyCompilationDefaultBackendOptions, "client"> & { client: NonNullable<LazyCompilationDefaultBackendOptions["client"]>}} options additional options for the backend
23
23
  * @returns {BackendHandler} backend
24
24
  */
25
- module.exports = options => (compiler, callback) => {
25
+ module.exports = (options) => (compiler, callback) => {
26
26
  const logger = compiler.getInfrastructureLogger("LazyCompilationBackend");
27
27
  const activeModules = new Map();
28
28
  const prefix = "/lazy-compilation-using-";
@@ -32,25 +32,29 @@ module.exports = options => (compiler, callback) => {
32
32
  (typeof options.server === "object" &&
33
33
  ("key" in options.server || "pfx" in options.server));
34
34
 
35
+ /** @type {CreateServerFunction} */
35
36
  const createServer =
36
37
  typeof options.server === "function"
37
38
  ? options.server
38
39
  : (() => {
39
40
  const http = isHttps ? require("https") : require("http");
40
- return http.createServer.bind(
41
+ return /** @type {(this: import("http") | import("https"), options: HttpServerOptions | HttpsServerOptions) => Server} */ (
42
+ http.createServer
43
+ ).bind(
41
44
  http,
42
45
  /** @type {HttpServerOptions | HttpsServerOptions} */
43
46
  (options.server)
44
47
  );
45
48
  })();
46
- /** @type {function(Server): void} */
49
+ /** @type {Listen} */
47
50
  const listen =
48
51
  typeof options.listen === "function"
49
52
  ? options.listen
50
- : server => {
53
+ : (server) => {
51
54
  let listen = options.listen;
52
- if (typeof listen === "object" && !("port" in listen))
55
+ if (typeof listen === "object" && !("port" in listen)) {
53
56
  listen = { ...listen, port: undefined };
57
+ }
54
58
  server.listen(listen);
55
59
  };
56
60
 
@@ -93,20 +97,20 @@ module.exports = options => (compiler, callback) => {
93
97
  if (moduleActivated && compiler.watching) compiler.watching.invalidate();
94
98
  };
95
99
 
96
- const server = /** @type {Server} */ (createServer());
100
+ const server = createServer();
97
101
  server.on("request", requestListener);
98
102
 
99
103
  let isClosing = false;
100
104
  /** @type {Set<import("net").Socket>} */
101
105
  const sockets = new Set();
102
- server.on("connection", socket => {
106
+ server.on("connection", (socket) => {
103
107
  sockets.add(socket);
104
108
  socket.on("close", () => {
105
109
  sockets.delete(socket);
106
110
  });
107
111
  if (isClosing) socket.destroy();
108
112
  });
109
- server.on("clientError", e => {
113
+ server.on("clientError", (e) => {
110
114
  if (e.message !== "Server is disposing") logger.warn(e);
111
115
  });
112
116
 
@@ -116,11 +120,12 @@ module.exports = options => (compiler, callback) => {
116
120
  * @param {Error} err error
117
121
  * @returns {void}
118
122
  */
119
- err => {
123
+ (err) => {
120
124
  if (err) return callback(err);
121
125
  const _addr = server.address();
122
- if (typeof _addr === "string")
126
+ if (typeof _addr === "string") {
123
127
  throw new Error("addr must not be a string");
128
+ }
124
129
  const addr = /** @type {AddressInfo} */ (_addr);
125
130
  const urlBase =
126
131
  addr.address === "::" || addr.address === "0.0.0.0"
@@ -136,7 +141,7 @@ module.exports = options => (compiler, callback) => {
136
141
  isClosing = true;
137
142
  // Removing the listener is a workaround for a memory leak in node.js
138
143
  server.off("request", requestListener);
139
- server.close(err => {
144
+ server.close((err) => {
140
145
  callback(err);
141
146
  });
142
147
  for (const socket of sockets) {
@@ -7,11 +7,12 @@
7
7
 
8
8
  const { find } = require("../util/SetHelpers");
9
9
  const {
10
- compareModulesByPreOrderIndexOrIdentifier,
11
- compareModulesByPostOrderIndexOrIdentifier
10
+ compareModulesByPostOrderIndexOrIdentifier,
11
+ compareModulesByPreOrderIndexOrIdentifier
12
12
  } = require("../util/comparators");
13
13
 
14
14
  /** @typedef {import("../Compiler")} Compiler */
15
+ /** @typedef {import("../Module")} Module */
15
16
 
16
17
  /**
17
18
  * @typedef {object} ChunkModuleIdRangePluginOptions
@@ -21,6 +22,8 @@ const {
21
22
  * @property {number=} end end id
22
23
  */
23
24
 
25
+ const PLUGIN_NAME = "ChunkModuleIdRangePlugin";
26
+
24
27
  class ChunkModuleIdRangePlugin {
25
28
  /**
26
29
  * @param {ChunkModuleIdRangePluginOptions} options options object
@@ -36,20 +39,21 @@ class ChunkModuleIdRangePlugin {
36
39
  */
37
40
  apply(compiler) {
38
41
  const options = this.options;
39
- compiler.hooks.compilation.tap("ChunkModuleIdRangePlugin", compilation => {
42
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
40
43
  const moduleGraph = compilation.moduleGraph;
41
- compilation.hooks.moduleIds.tap("ChunkModuleIdRangePlugin", modules => {
44
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, (modules) => {
42
45
  const chunkGraph = compilation.chunkGraph;
43
46
  const chunk = find(
44
47
  compilation.chunks,
45
- chunk => chunk.name === options.name
48
+ (chunk) => chunk.name === options.name
46
49
  );
47
50
  if (!chunk) {
48
51
  throw new Error(
49
- `ChunkModuleIdRangePlugin: Chunk with name '${options.name}"' was not found`
52
+ `${PLUGIN_NAME}: Chunk with name '${options.name}"' was not found`
50
53
  );
51
54
  }
52
55
 
56
+ /** @type {Module[]} */
53
57
  let chunkModules;
54
58
  if (options.order) {
55
59
  let cmpFn;
@@ -63,14 +67,12 @@ class ChunkModuleIdRangePlugin {
63
67
  cmpFn = compareModulesByPostOrderIndexOrIdentifier(moduleGraph);
64
68
  break;
65
69
  default:
66
- throw new Error(
67
- "ChunkModuleIdRangePlugin: unexpected value of order"
68
- );
70
+ throw new Error(`${PLUGIN_NAME}: unexpected value of order`);
69
71
  }
70
72
  chunkModules = chunkGraph.getOrderedChunkModules(chunk, cmpFn);
71
73
  } else {
72
- chunkModules = Array.from(modules)
73
- .filter(m => chunkGraph.isModuleInChunk(m, chunk))
74
+ chunkModules = [...modules]
75
+ .filter((m) => chunkGraph.isModuleInChunk(m, chunk))
74
76
  .sort(compareModulesByPreOrderIndexOrIdentifier(moduleGraph));
75
77
  }
76
78
 
@@ -86,4 +88,5 @@ class ChunkModuleIdRangePlugin {
86
88
  });
87
89
  }
88
90
  }
91
+
89
92
  module.exports = ChunkModuleIdRangePlugin;
@@ -7,13 +7,12 @@
7
7
 
8
8
  const { compareChunksNatural } = require("../util/comparators");
9
9
  const {
10
+ assignDeterministicIds,
10
11
  getFullChunkName,
11
- getUsedChunkIds,
12
- assignDeterministicIds
12
+ getUsedChunkIds
13
13
  } = require("./IdHelpers");
14
14
 
15
15
  /** @typedef {import("../Compiler")} Compiler */
16
- /** @typedef {import("../Module")} Module */
17
16
 
18
17
  /**
19
18
  * @typedef {object} DeterministicChunkIdsPluginOptions
@@ -21,9 +20,11 @@ const {
21
20
  * @property {number=} maxLength maximum length of ids
22
21
  */
23
22
 
23
+ const PLUGIN_NAME = "DeterministicChunkIdsPlugin";
24
+
24
25
  class DeterministicChunkIdsPlugin {
25
26
  /**
26
- * @param {DeterministicChunkIdsPluginOptions} [options] options
27
+ * @param {DeterministicChunkIdsPluginOptions=} options options
27
28
  */
28
29
  constructor(options = {}) {
29
30
  this.options = options;
@@ -35,42 +36,36 @@ class DeterministicChunkIdsPlugin {
35
36
  * @returns {void}
36
37
  */
37
38
  apply(compiler) {
38
- compiler.hooks.compilation.tap(
39
- "DeterministicChunkIdsPlugin",
40
- compilation => {
41
- compilation.hooks.chunkIds.tap(
42
- "DeterministicChunkIdsPlugin",
43
- chunks => {
44
- const chunkGraph = compilation.chunkGraph;
45
- const context = this.options.context
46
- ? this.options.context
47
- : compiler.context;
48
- const maxLength = this.options.maxLength || 3;
39
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
40
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
41
+ const chunkGraph = compilation.chunkGraph;
42
+ const context = this.options.context
43
+ ? this.options.context
44
+ : compiler.context;
45
+ const maxLength = this.options.maxLength || 3;
49
46
 
50
- const compareNatural = compareChunksNatural(chunkGraph);
47
+ const compareNatural = compareChunksNatural(chunkGraph);
51
48
 
52
- const usedIds = getUsedChunkIds(compilation);
53
- assignDeterministicIds(
54
- Array.from(chunks).filter(chunk => chunk.id === null),
55
- chunk =>
56
- getFullChunkName(chunk, chunkGraph, context, compiler.root),
57
- compareNatural,
58
- (chunk, id) => {
59
- const size = usedIds.size;
60
- usedIds.add(`${id}`);
61
- if (size === usedIds.size) return false;
62
- chunk.id = id;
63
- chunk.ids = [id];
64
- return true;
65
- },
66
- [10 ** maxLength],
67
- 10,
68
- usedIds.size
69
- );
70
- }
49
+ const usedIds = getUsedChunkIds(compilation);
50
+ assignDeterministicIds(
51
+ [...chunks].filter((chunk) => chunk.id === null),
52
+ (chunk) =>
53
+ getFullChunkName(chunk, chunkGraph, context, compiler.root),
54
+ compareNatural,
55
+ (chunk, id) => {
56
+ const size = usedIds.size;
57
+ usedIds.add(`${id}`);
58
+ if (size === usedIds.size) return false;
59
+ chunk.id = id;
60
+ chunk.ids = [id];
61
+ return true;
62
+ },
63
+ [10 ** maxLength],
64
+ 10,
65
+ usedIds.size
71
66
  );
72
- }
73
- );
67
+ });
68
+ });
74
69
  }
75
70
  }
76
71