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
@@ -11,6 +11,8 @@ const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDepende
11
11
  /** @typedef {import("./Compiler")} Compiler */
12
12
  /** @typedef {import("./DelegatedModuleFactoryPlugin").Options} Options */
13
13
 
14
+ const PLUGIN_NAME = "DelegatedPlugin";
15
+
14
16
  class DelegatedPlugin {
15
17
  /**
16
18
  * @param {Options} options options
@@ -26,7 +28,7 @@ class DelegatedPlugin {
26
28
  */
27
29
  apply(compiler) {
28
30
  compiler.hooks.compilation.tap(
29
- "DelegatedPlugin",
31
+ PLUGIN_NAME,
30
32
  (compilation, { normalModuleFactory }) => {
31
33
  compilation.dependencyFactories.set(
32
34
  DelegatedSourceDependency,
@@ -35,7 +37,7 @@ class DelegatedPlugin {
35
37
  }
36
38
  );
37
39
 
38
- compiler.hooks.compile.tap("DelegatedPlugin", ({ normalModuleFactory }) => {
40
+ compiler.hooks.compile.tap(PLUGIN_NAME, ({ normalModuleFactory }) => {
39
41
  new DelegatedModuleFactoryPlugin({
40
42
  associatedObjectForCache: compiler.root,
41
43
  ...this.options
@@ -8,8 +8,6 @@
8
8
  const makeSerializable = require("./util/makeSerializable");
9
9
 
10
10
  /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
13
11
  /** @typedef {import("./Dependency")} Dependency */
14
12
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
15
13
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
package/lib/Dependency.js CHANGED
@@ -5,13 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const RawModule = require("./RawModule");
9
8
  const memoize = require("./util/memoize");
10
9
 
11
- /** @typedef {import("webpack-sources").Source} Source */
12
10
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
13
11
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
14
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
15
12
  /** @typedef {import("./Module")} Module */
16
13
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
17
14
  /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
@@ -22,7 +19,7 @@ const memoize = require("./util/memoize");
22
19
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
20
  /** @typedef {import("./util/Hash")} Hash */
24
21
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
25
-
22
+ /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
26
23
  /**
27
24
  * @typedef {object} UpdateHashContext
28
25
  * @property {ChunkGraph} chunkGraph
@@ -63,10 +60,12 @@ const memoize = require("./util/memoize");
63
60
  * @property {boolean=} hidden export is not visible, because another export blends over it
64
61
  */
65
62
 
63
+ /** @typedef {Set<string>} ExportsSpecExcludeExports */
64
+
66
65
  /**
67
66
  * @typedef {object} ExportsSpec
68
67
  * @property {(string | ExportSpec)[] | true | null} exports exported names, true for unknown exports or null for no exports
69
- * @property {Set<string>=} excludeExports when exports = true, list of unaffected exports
68
+ * @property {ExportsSpecExcludeExports=} excludeExports when exports = true, list of unaffected exports
70
69
  * @property {(Set<string> | null)=} hideExports list of maybe prior exposed, but now hidden exports
71
70
  * @property {ModuleGraphConnection=} from when reexported: from which module
72
71
  * @property {number=} priority when reexported: with which priority
@@ -81,13 +80,20 @@ const memoize = require("./util/memoize");
81
80
  * @property {boolean=} canMangle when false, referenced export can not be mangled, defaults to true
82
81
  */
83
82
 
84
- /** @typedef {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} GetConditionFn */
83
+ /** @typedef {string[][]} RawReferencedExports */
84
+ /** @typedef {(string[] | ReferencedExport)[]} ReferencedExports */
85
+
86
+ /** @typedef {(moduleGraphConnection: ModuleGraphConnection, runtime: RuntimeSpec) => ConnectionState} GetConditionFn */
85
87
 
86
88
  const TRANSITIVE = Symbol("transitive");
87
89
 
88
- const getIgnoredModule = memoize(
89
- () => new RawModule("/* (ignored) */", "ignored", "(ignored)")
90
- );
90
+ const getIgnoredModule = memoize(() => {
91
+ const RawModule = require("./RawModule");
92
+
93
+ const module = new RawModule("/* (ignored) */", "ignored", "(ignored)");
94
+ module.factoryMeta = { sideEffectFree: true };
95
+ return module;
96
+ });
91
97
 
92
98
  class Dependency {
93
99
  constructor() {
@@ -101,7 +107,7 @@ class Dependency {
101
107
  /** @type {boolean} */
102
108
  this.weak = false;
103
109
  // TODO check if this can be moved into ModuleDependency
104
- /** @type {boolean} */
110
+ /** @type {boolean | undefined} */
105
111
  this.optional = false;
106
112
  this._locSL = 0;
107
113
  this._locSC = 0;
@@ -131,8 +137,10 @@ class Dependency {
131
137
  */
132
138
  get loc() {
133
139
  if (this._loc !== undefined) return this._loc;
140
+
134
141
  /** @type {SyntheticDependencyLocation & RealDependencyLocation} */
135
142
  const loc = {};
143
+
136
144
  if (this._locSL > 0) {
137
145
  loc.start = { line: this._locSL, column: this._locSC };
138
146
  }
@@ -145,6 +153,7 @@ class Dependency {
145
153
  if (this._locI !== undefined) {
146
154
  loc.index = this._locI;
147
155
  }
156
+
148
157
  return (this._loc = loc);
149
158
  }
150
159
 
@@ -221,7 +230,7 @@ class Dependency {
221
230
  * Returns list of exports referenced by this dependency
222
231
  * @param {ModuleGraph} moduleGraph module graph
223
232
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
224
- * @returns {(string[] | ReferencedExport)[]} referenced exports
233
+ * @returns {ReferencedExports} referenced exports
225
234
  */
226
235
  getReferencedExports(moduleGraph, runtime) {
227
236
  return Dependency.EXPORTS_OBJECT_REFERENCED;
@@ -288,7 +297,7 @@ class Dependency {
288
297
 
289
298
  /**
290
299
  * @param {string} context context directory
291
- * @returns {Module | null} a module
300
+ * @returns {Module} ignored module
292
301
  */
293
302
  createIgnoredModule(context) {
294
303
  return getIgnoredModule();
@@ -323,17 +332,16 @@ class Dependency {
323
332
  }
324
333
  }
325
334
 
326
- /** @type {string[][]} */
335
+ /** @type {RawReferencedExports} */
327
336
  Dependency.NO_EXPORTS_REFERENCED = [];
328
- /** @type {string[][]} */
337
+ /** @type {RawReferencedExports} */
329
338
  Dependency.EXPORTS_OBJECT_REFERENCED = [[]];
330
339
 
331
- // eslint-disable-next-line no-warning-comments
332
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
340
+ // TODO remove in webpack 6
333
341
  Object.defineProperty(Dependency.prototype, "module", {
334
342
  /**
335
343
  * @deprecated
336
- * @returns {never} throws
344
+ * @returns {EXPECTED_ANY} throws
337
345
  */
338
346
  get() {
339
347
  throw new Error(
@@ -352,9 +360,19 @@ Object.defineProperty(Dependency.prototype, "module", {
352
360
  }
353
361
  });
354
362
 
355
- // eslint-disable-next-line no-warning-comments
356
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
363
+ /**
364
+ * @param {Dependency} dependency dep
365
+ * @returns {boolean} true if the dependency is a low priority dependency
366
+ */
367
+ Dependency.isLowPriorityDependency = (dependency) =>
368
+ /** @type {ModuleDependency} */ (dependency).sourceOrder === Infinity;
369
+
370
+ // TODO remove in webpack 6
357
371
  Object.defineProperty(Dependency.prototype, "disconnect", {
372
+ /**
373
+ * @deprecated
374
+ * @returns {EXPECTED_ANY} throws
375
+ */
358
376
  get() {
359
377
  throw new Error(
360
378
  "disconnect was removed from Dependency (Dependency no longer carries graph specific information)"
@@ -41,6 +41,7 @@
41
41
  /**
42
42
  * @typedef {object} CssDependencyTemplateContextExtras
43
43
  * @property {CssData} cssData the css exports data
44
+ * @property {string} type the css exports data
44
45
  */
45
46
 
46
47
  /**
@@ -62,6 +63,7 @@ class DependencyTemplate {
62
63
  */
63
64
  apply(dependency, source, templateContext) {
64
65
  const AbstractMethodError = require("./AbstractMethodError");
66
+
65
67
  throw new AbstractMethodError();
66
68
  }
67
69
  }
@@ -5,20 +5,19 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { DEFAULTS } = require("./config/defaults");
8
9
  const createHash = require("./util/createHash");
9
10
 
10
- /** @typedef {import("./Dependency")} Dependency */
11
+ /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
11
12
  /** @typedef {import("./DependencyTemplate")} DependencyTemplate */
12
13
  /** @typedef {typeof import("./util/Hash")} Hash */
13
14
 
14
- /** @typedef {new (...args: any[]) => Dependency} DependencyConstructor */
15
-
16
15
  class DependencyTemplates {
17
16
  /**
18
17
  * @param {string | Hash} hashFunction the hash function to use
19
18
  */
20
- constructor(hashFunction = "md4") {
21
- /** @type {Map<Function, DependencyTemplate>} */
19
+ constructor(hashFunction = DEFAULTS.HASH_FUNCTION) {
20
+ /** @type {Map<DependencyConstructor, DependencyTemplate>} */
22
21
  this._map = new Map();
23
22
  /** @type {string} */
24
23
  this._hash = "31d6cfe0d16ae931b73c59d7e0c089c0";
@@ -49,7 +48,7 @@ class DependencyTemplates {
49
48
  updateHash(part) {
50
49
  const hash = createHash(this._hashFunction);
51
50
  hash.update(`${this._hash}${part}`);
52
- this._hash = /** @type {string} */ (hash.digest("hex"));
51
+ this._hash = hash.digest("hex");
53
52
  }
54
53
 
55
54
  getHash() {
@@ -10,8 +10,12 @@ const DllEntryDependency = require("./dependencies/DllEntryDependency");
10
10
  const EntryDependency = require("./dependencies/EntryDependency");
11
11
 
12
12
  /** @typedef {import("./Compiler")} Compiler */
13
+ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
14
+
13
15
  /** @typedef {string[]} Entries */
14
- /** @typedef {{ name: string, filename: TODO }} Options */
16
+ /** @typedef {EntryOptions & { name: string }} Options */
17
+
18
+ const PLUGIN_NAME = "DllEntryPlugin";
15
19
 
16
20
  class DllEntryPlugin {
17
21
  /**
@@ -32,7 +36,7 @@ class DllEntryPlugin {
32
36
  */
33
37
  apply(compiler) {
34
38
  compiler.hooks.compilation.tap(
35
- "DllEntryPlugin",
39
+ PLUGIN_NAME,
36
40
  (compilation, { normalModuleFactory }) => {
37
41
  const dllModuleFactory = new DllModuleFactory();
38
42
  compilation.dependencyFactories.set(
@@ -45,7 +49,7 @@ class DllEntryPlugin {
45
49
  );
46
50
  }
47
51
  );
48
- compiler.hooks.make.tapAsync("DllEntryPlugin", (compilation, callback) => {
52
+ compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
49
53
  compilation.addEntry(
50
54
  this.context,
51
55
  new DllEntryDependency(
@@ -60,7 +64,7 @@ class DllEntryPlugin {
60
64
  this.options.name
61
65
  ),
62
66
  this.options,
63
- error => {
67
+ (error) => {
64
68
  if (error) return callback(error);
65
69
  callback();
66
70
  }
package/lib/DllModule.js CHANGED
@@ -7,27 +7,26 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
- const { JS_TYPES } = require("./ModuleSourceTypesConstants");
10
+ const {
11
+ JAVASCRIPT_TYPE,
12
+ JAVASCRIPT_TYPES
13
+ } = require("./ModuleSourceTypeConstants");
11
14
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
12
15
  const RuntimeGlobals = require("./RuntimeGlobals");
13
16
  const makeSerializable = require("./util/makeSerializable");
14
17
 
15
- /** @typedef {import("webpack-sources").Source} Source */
16
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
17
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
18
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
18
19
  /** @typedef {import("./Compilation")} Compilation */
19
20
  /** @typedef {import("./Dependency")} Dependency */
20
21
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
21
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
22
22
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
23
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
23
24
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
24
25
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
26
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
25
27
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
26
- /** @typedef {import("./Module").SourceContext} SourceContext */
27
28
  /** @typedef {import("./RequestShortener")} RequestShortener */
28
29
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
29
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
30
- /** @typedef {import("./WebpackError")} WebpackError */
31
30
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
32
31
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
33
32
  /** @typedef {import("./util/Hash")} Hash */
@@ -57,7 +56,7 @@ class DllModule extends Module {
57
56
  * @returns {SourceTypes} types available (do not mutate)
58
57
  */
59
58
  getSourceTypes() {
60
- return JS_TYPES;
59
+ return JAVASCRIPT_TYPES;
61
60
  }
62
61
 
63
62
  /**
@@ -80,7 +79,7 @@ class DllModule extends Module {
80
79
  * @param {Compilation} compilation the compilation
81
80
  * @param {ResolverWithOptions} resolver the resolver
82
81
  * @param {InputFileSystem} fs the file system
83
- * @param {function(WebpackError=): void} callback callback function
82
+ * @param {BuildCallback} callback callback function
84
83
  * @returns {void}
85
84
  */
86
85
  build(options, compilation, resolver, fs, callback) {
@@ -96,7 +95,7 @@ class DllModule extends Module {
96
95
  codeGeneration(context) {
97
96
  const sources = new Map();
98
97
  sources.set(
99
- "javascript",
98
+ JAVASCRIPT_TYPE,
100
99
  new RawSource(`module.exports = ${RuntimeGlobals.require};`)
101
100
  );
102
101
  return {
@@ -107,7 +106,7 @@ class DllModule extends Module {
107
106
 
108
107
  /**
109
108
  * @param {NeedBuildContext} context context info
110
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
109
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
111
110
  * @returns {void}
112
111
  */
113
112
  needBuild(context, callback) {
@@ -8,8 +8,8 @@
8
8
  const DllModule = require("./DllModule");
9
9
  const ModuleFactory = require("./ModuleFactory");
10
10
 
11
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
11
12
  /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
12
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
13
13
  /** @typedef {import("./dependencies/DllEntryDependency")} DllEntryDependency */
14
14
 
15
15
  class DllModuleFactory extends ModuleFactory {
@@ -20,7 +20,7 @@ class DllModuleFactory extends ModuleFactory {
20
20
 
21
21
  /**
22
22
  * @param {ModuleFactoryCreateData} data data object
23
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
23
+ * @param {ModuleFactoryCallback} callback callback
24
24
  * @returns {void}
25
25
  */
26
26
  create(data, callback) {
package/lib/DllPlugin.js CHANGED
@@ -16,7 +16,7 @@ const createSchemaValidation = require("./util/create-schema-validation");
16
16
  /** @typedef {import("./DllEntryPlugin").Options} Options */
17
17
 
18
18
  const validate = createSchemaValidation(
19
- require("../schemas/plugins/DllPlugin.check.js"),
19
+ require("../schemas/plugins/DllPlugin.check"),
20
20
  () => require("../schemas/plugins/DllPlugin.json"),
21
21
  {
22
22
  name: "Dll Plugin",
@@ -24,6 +24,8 @@ const validate = createSchemaValidation(
24
24
  }
25
25
  );
26
26
 
27
+ const PLUGIN_NAME = "DllPlugin";
28
+
27
29
  class DllPlugin {
28
30
  /**
29
31
  * @param {DllPluginOptions} options options object
@@ -42,27 +44,28 @@ class DllPlugin {
42
44
  * @returns {void}
43
45
  */
44
46
  apply(compiler) {
45
- compiler.hooks.entryOption.tap("DllPlugin", (context, entry) => {
47
+ compiler.hooks.entryOption.tap(PLUGIN_NAME, (context, entry) => {
46
48
  if (typeof entry !== "function") {
47
49
  for (const name of Object.keys(entry)) {
48
50
  /** @type {Options} */
49
- const options = { name, filename: entry.filename };
51
+ const options = { name };
50
52
  new DllEntryPlugin(
51
53
  context,
52
- /** @type {Entries} */ (entry[name].import),
54
+ /** @type {Entries} */
55
+ (entry[name].import),
53
56
  options
54
57
  ).apply(compiler);
55
58
  }
56
59
  } else {
57
60
  throw new Error(
58
- "DllPlugin doesn't support dynamic entry (function) yet"
61
+ `${PLUGIN_NAME} doesn't support dynamic entry (function) yet`
59
62
  );
60
63
  }
61
64
  return true;
62
65
  });
63
66
  new LibManifestPlugin(this.options).apply(compiler);
64
67
  if (!this.options.entryOnly) {
65
- new FlagAllModulesAsUsedPlugin("DllPlugin").apply(compiler);
68
+ new FlagAllModulesAsUsedPlugin(PLUGIN_NAME).apply(compiler);
66
69
  }
67
70
  }
68
71
  }
@@ -18,10 +18,11 @@ const makePathsRelative = require("./util/identifier").makePathsRelative;
18
18
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
19
19
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsManifest} DllReferencePluginOptionsManifest */
20
20
  /** @typedef {import("./Compiler")} Compiler */
21
+ /** @typedef {import("./Compiler").CompilationParams} CompilationParams */
21
22
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
22
23
 
23
24
  const validate = createSchemaValidation(
24
- require("../schemas/plugins/DllReferencePlugin.check.js"),
25
+ require("../schemas/plugins/DllReferencePlugin.check"),
25
26
  () => require("../schemas/plugins/DllReferencePlugin.json"),
26
27
  {
27
28
  name: "Dll Reference Plugin",
@@ -31,6 +32,8 @@ const validate = createSchemaValidation(
31
32
 
32
33
  /** @typedef {{ path: string, data: DllReferencePluginOptionsManifest | undefined, error: Error | undefined }} CompilationDataItem */
33
34
 
35
+ const PLUGIN_NAME = "DllReferencePlugin";
36
+
34
37
  class DllReferencePlugin {
35
38
  /**
36
39
  * @param {DllReferencePluginOptions} options options object
@@ -38,7 +41,7 @@ class DllReferencePlugin {
38
41
  constructor(options) {
39
42
  validate(options);
40
43
  this.options = options;
41
- /** @type {WeakMap<object, CompilationDataItem>} */
44
+ /** @type {WeakMap<CompilationParams, CompilationDataItem>} */
42
45
  this._compilationData = new WeakMap();
43
46
  }
44
47
 
@@ -49,7 +52,7 @@ class DllReferencePlugin {
49
52
  */
50
53
  apply(compiler) {
51
54
  compiler.hooks.compilation.tap(
52
- "DllReferencePlugin",
55
+ PLUGIN_NAME,
53
56
  (compilation, { normalModuleFactory }) => {
54
57
  compilation.dependencyFactories.set(
55
58
  DelegatedSourceDependency,
@@ -58,51 +61,48 @@ class DllReferencePlugin {
58
61
  }
59
62
  );
60
63
 
61
- compiler.hooks.beforeCompile.tapAsync(
62
- "DllReferencePlugin",
63
- (params, callback) => {
64
- if ("manifest" in this.options) {
65
- const manifest = this.options.manifest;
66
- if (typeof manifest === "string") {
67
- /** @type {InputFileSystem} */
68
- (compiler.inputFileSystem).readFile(manifest, (err, result) => {
69
- if (err) return callback(err);
70
- /** @type {CompilationDataItem} */
71
- const data = {
72
- path: manifest,
73
- data: undefined,
74
- error: undefined
75
- };
76
- // Catch errors parsing the manifest so that blank
77
- // or malformed manifest files don't kill the process.
78
- try {
79
- data.data = parseJson(
80
- /** @type {Buffer} */ (result).toString("utf-8")
81
- );
82
- } catch (parseErr) {
83
- // Store the error in the params so that it can
84
- // be added as a compilation error later on.
85
- const manifestPath = makePathsRelative(
86
- /** @type {string} */ (compiler.options.context),
87
- manifest,
88
- compiler.root
89
- );
90
- data.error = new DllManifestError(
91
- manifestPath,
92
- /** @type {Error} */ (parseErr).message
93
- );
94
- }
95
- this._compilationData.set(params, data);
96
- return callback();
97
- });
98
- return;
99
- }
64
+ compiler.hooks.beforeCompile.tapAsync(PLUGIN_NAME, (params, callback) => {
65
+ if ("manifest" in this.options) {
66
+ const manifest = this.options.manifest;
67
+ if (typeof manifest === "string") {
68
+ /** @type {InputFileSystem} */
69
+ (compiler.inputFileSystem).readFile(manifest, (err, result) => {
70
+ if (err) return callback(err);
71
+ /** @type {CompilationDataItem} */
72
+ const data = {
73
+ path: manifest,
74
+ data: undefined,
75
+ error: undefined
76
+ };
77
+ // Catch errors parsing the manifest so that blank
78
+ // or malformed manifest files don't kill the process.
79
+ try {
80
+ data.data = parseJson(
81
+ /** @type {Buffer} */ (result).toString("utf8")
82
+ );
83
+ } catch (parseErr) {
84
+ // Store the error in the params so that it can
85
+ // be added as a compilation error later on.
86
+ const manifestPath = makePathsRelative(
87
+ compiler.context,
88
+ manifest,
89
+ compiler.root
90
+ );
91
+ data.error = new DllManifestError(
92
+ manifestPath,
93
+ /** @type {Error} */ (parseErr).message
94
+ );
95
+ }
96
+ this._compilationData.set(params, data);
97
+ return callback();
98
+ });
99
+ return;
100
100
  }
101
- return callback();
102
101
  }
103
- );
102
+ return callback();
103
+ });
104
104
 
105
- compiler.hooks.compile.tap("DllReferencePlugin", params => {
105
+ compiler.hooks.compile.tap(PLUGIN_NAME, (params) => {
106
106
  let name = this.options.name;
107
107
  let sourceType = this.options.sourceType;
108
108
  let resolvedContent =
@@ -142,9 +142,7 @@ class DllReferencePlugin {
142
142
  source,
143
143
  type: this.options.type,
144
144
  scope: this.options.scope,
145
- context:
146
- /** @type {string} */
147
- (this.options.context || compiler.options.context),
145
+ context: this.options.context || compiler.context,
148
146
  content:
149
147
  /** @type {DllReferencePluginOptionsContent} */
150
148
  (resolvedContent),
@@ -153,27 +151,24 @@ class DllReferencePlugin {
153
151
  }).apply(normalModuleFactory);
154
152
  });
155
153
 
156
- compiler.hooks.compilation.tap(
157
- "DllReferencePlugin",
158
- (compilation, params) => {
159
- if ("manifest" in this.options) {
160
- const manifest = this.options.manifest;
161
- if (typeof manifest === "string") {
162
- const data = /** @type {CompilationDataItem} */ (
163
- this._compilationData.get(params)
154
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation, params) => {
155
+ if ("manifest" in this.options) {
156
+ const manifest = this.options.manifest;
157
+ if (typeof manifest === "string") {
158
+ const data = /** @type {CompilationDataItem} */ (
159
+ this._compilationData.get(params)
160
+ );
161
+ // If there was an error parsing the manifest file, add the
162
+ // error as a compilation error to make the compilation fail.
163
+ if (data.error) {
164
+ compilation.errors.push(
165
+ /** @type {DllManifestError} */ (data.error)
164
166
  );
165
- // If there was an error parsing the manifest file, add the
166
- // error as a compilation error to make the compilation fail.
167
- if (data.error) {
168
- compilation.errors.push(
169
- /** @type {DllManifestError} */ (data.error)
170
- );
171
- }
172
- compilation.fileDependencies.add(manifest);
173
167
  }
168
+ compilation.fileDependencies.add(manifest);
174
169
  }
175
170
  }
176
- );
171
+ });
177
172
  }
178
173
  }
179
174