webpack 5.59.0 → 5.94.0

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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
10
11
  const RuntimeGlobals = require("./RuntimeGlobals");
11
12
  const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
12
13
  const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
@@ -24,14 +25,21 @@ const makeSerializable = require("./util/makeSerializable");
24
25
  /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
25
26
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
26
27
  /** @typedef {import("./Module").SourceContext} SourceContext */
28
+ /** @typedef {import("./Module").SourceTypes} SourceTypes */
27
29
  /** @typedef {import("./RequestShortener")} RequestShortener */
28
30
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
29
31
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
30
32
  /** @typedef {import("./WebpackError")} WebpackError */
31
33
  /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
34
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
35
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
36
  /** @typedef {import("./util/Hash")} Hash */
33
37
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
34
38
 
39
+ /** @typedef {string} SourceRequest */
40
+ /** @typedef {"require" | "object"} Type */
41
+ /** @typedef {TODO} Data */
42
+
35
43
  const TYPES = new Set(["javascript"]);
36
44
  const RUNTIME_REQUIREMENTS = new Set([
37
45
  RuntimeGlobals.module,
@@ -39,8 +47,15 @@ const RUNTIME_REQUIREMENTS = new Set([
39
47
  ]);
40
48
 
41
49
  class DelegatedModule extends Module {
50
+ /**
51
+ * @param {SourceRequest} sourceRequest source request
52
+ * @param {Data} data data
53
+ * @param {Type} type type
54
+ * @param {string} userRequest user request
55
+ * @param {string | Module} originalRequest original request
56
+ */
42
57
  constructor(sourceRequest, data, type, userRequest, originalRequest) {
43
- super("javascript/dynamic", null);
58
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
44
59
 
45
60
  // Info from Factory
46
61
  this.sourceRequest = sourceRequest;
@@ -48,7 +63,7 @@ class DelegatedModule extends Module {
48
63
  this.delegationType = type;
49
64
  this.userRequest = userRequest;
50
65
  this.originalRequest = originalRequest;
51
- /** @type {ManifestModuleData} */
66
+ /** @type {ManifestModuleData | undefined} */
52
67
  this.delegateData = data;
53
68
 
54
69
  // Build info
@@ -56,7 +71,7 @@ class DelegatedModule extends Module {
56
71
  }
57
72
 
58
73
  /**
59
- * @returns {Set<string>} types available (do not mutate)
74
+ * @returns {SourceTypes} types available (do not mutate)
60
75
  */
61
76
  getSourceTypes() {
62
77
  return TYPES;
@@ -91,7 +106,7 @@ class DelegatedModule extends Module {
91
106
 
92
107
  /**
93
108
  * @param {NeedBuildContext} context context info
94
- * @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
109
+ * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
95
110
  * @returns {void}
96
111
  */
97
112
  needBuild(context, callback) {
@@ -107,7 +122,8 @@ class DelegatedModule extends Module {
107
122
  * @returns {void}
108
123
  */
109
124
  build(options, compilation, resolver, fs, callback) {
110
- this.buildMeta = { ...this.delegateData.buildMeta };
125
+ const delegateData = /** @type {ManifestModuleData} */ (this.delegateData);
126
+ this.buildMeta = { ...delegateData.buildMeta };
111
127
  this.buildInfo = {};
112
128
  this.dependencies.length = 0;
113
129
  this.delegatedSourceDependency = new DelegatedSourceDependency(
@@ -115,7 +131,7 @@ class DelegatedModule extends Module {
115
131
  );
116
132
  this.addDependency(this.delegatedSourceDependency);
117
133
  this.addDependency(
118
- new StaticExportsDependency(this.delegateData.exports || true, false)
134
+ new StaticExportsDependency(delegateData.exports || true, false)
119
135
  );
120
136
  callback();
121
137
  }
@@ -185,6 +201,9 @@ class DelegatedModule extends Module {
185
201
  super.updateHash(hash, context);
186
202
  }
187
203
 
204
+ /**
205
+ * @param {ObjectSerializerContext} context context
206
+ */
188
207
  serialize(context) {
189
208
  const { write } = context;
190
209
  // constructor
@@ -196,6 +215,10 @@ class DelegatedModule extends Module {
196
215
  super.serialize(context);
197
216
  }
198
217
 
218
+ /**
219
+ * @param {ObjectDeserializerContext} context context\
220
+ * @returns {DelegatedModule} DelegatedModule
221
+ */
199
222
  static deserialize(context) {
200
223
  const { read } = context;
201
224
  const obj = new DelegatedModule(
@@ -7,19 +7,38 @@
7
7
 
8
8
  const DelegatedModule = require("./DelegatedModule");
9
9
 
10
- // options.source
11
- // options.type
12
- // options.context
13
- // options.scope
14
- // options.content
15
- // options.associatedObjectForCache
10
+ /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
11
+ /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
12
+ /** @typedef {import("./DelegatedModule").Data} Data */
13
+ /** @typedef {import("./DelegatedModule").SourceRequest} SourceRequest */
14
+ /** @typedef {import("./DelegatedModule").Type} Type */
15
+ /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
16
+
17
+ /**
18
+ * @typedef {object} Options
19
+ * @property {SourceRequest} source source
20
+ * @property {NonNullable<DllReferencePluginOptions["context"]>} context absolute context path to which lib ident is relative to
21
+ * @property {DllReferencePluginOptionsContent} content content
22
+ * @property {DllReferencePluginOptions["type"]} type type
23
+ * @property {DllReferencePluginOptions["extensions"]} extensions extensions
24
+ * @property {DllReferencePluginOptions["scope"]} scope scope
25
+ * @property {object=} associatedObjectForCache object for caching
26
+ */
27
+
16
28
  class DelegatedModuleFactoryPlugin {
29
+ /**
30
+ * @param {Options} options options
31
+ */
17
32
  constructor(options) {
18
33
  this.options = options;
19
34
  options.type = options.type || "require";
20
35
  options.extensions = options.extensions || ["", ".js", ".json", ".wasm"];
21
36
  }
22
37
 
38
+ /**
39
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
40
+ * @returns {void}
41
+ */
23
42
  apply(normalModuleFactory) {
24
43
  const scope = this.options.scope;
25
44
  if (scope) {
@@ -29,7 +48,7 @@ class DelegatedModuleFactoryPlugin {
29
48
  const [dependency] = data.dependencies;
30
49
  const { request } = dependency;
31
50
  if (request && request.startsWith(`${scope}/`)) {
32
- const innerRequest = "." + request.substr(scope.length);
51
+ const innerRequest = `.${request.slice(scope.length)}`;
33
52
  let resolved;
34
53
  if (innerRequest in this.options.content) {
35
54
  resolved = this.options.content[innerRequest];
@@ -38,14 +57,17 @@ class DelegatedModuleFactoryPlugin {
38
57
  new DelegatedModule(
39
58
  this.options.source,
40
59
  resolved,
41
- this.options.type,
60
+ /** @type {Type} */ (this.options.type),
42
61
  innerRequest,
43
62
  request
44
63
  )
45
64
  );
46
65
  }
47
- for (let i = 0; i < this.options.extensions.length; i++) {
48
- const extension = this.options.extensions[i];
66
+ const extensions =
67
+ /** @type {string[]} */
68
+ (this.options.extensions);
69
+ for (let i = 0; i < extensions.length; i++) {
70
+ const extension = extensions[i];
49
71
  const requestPlusExt = innerRequest + extension;
50
72
  if (requestPlusExt in this.options.content) {
51
73
  resolved = this.options.content[requestPlusExt];
@@ -54,7 +76,7 @@ class DelegatedModuleFactoryPlugin {
54
76
  new DelegatedModule(
55
77
  this.options.source,
56
78
  resolved,
57
- this.options.type,
79
+ /** @type {Type} */ (this.options.type),
58
80
  requestPlusExt,
59
81
  request + extension
60
82
  )
@@ -70,17 +92,15 @@ class DelegatedModuleFactoryPlugin {
70
92
  "DelegatedModuleFactoryPlugin",
71
93
  module => {
72
94
  const request = module.libIdent(this.options);
73
- if (request) {
74
- if (request in this.options.content) {
75
- const resolved = this.options.content[request];
76
- return new DelegatedModule(
77
- this.options.source,
78
- resolved,
79
- this.options.type,
80
- request,
81
- module
82
- );
83
- }
95
+ if (request && request in this.options.content) {
96
+ const resolved = this.options.content[request];
97
+ return new DelegatedModule(
98
+ this.options.source,
99
+ resolved,
100
+ /** @type {Type} */ (this.options.type),
101
+ request,
102
+ module
103
+ );
84
104
  }
85
105
  return module;
86
106
  }
@@ -9,8 +9,12 @@ const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
9
9
  const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
10
10
 
11
11
  /** @typedef {import("./Compiler")} Compiler */
12
+ /** @typedef {import("./DelegatedModuleFactoryPlugin").Options} Options */
12
13
 
13
14
  class DelegatedPlugin {
15
+ /**
16
+ * @param {Options} options options
17
+ */
14
18
  constructor(options) {
15
19
  this.options = options;
16
20
  }
@@ -12,17 +12,27 @@ const makeSerializable = require("./util/makeSerializable");
12
12
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
13
13
  /** @typedef {import("./Dependency")} Dependency */
14
14
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
15
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
17
  /** @typedef {import("./util/Hash")} Hash */
16
18
 
17
19
  /** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
18
20
 
21
+ /**
22
+ * DependenciesBlock is the base class for all Module classes in webpack. It describes a
23
+ * "block" of dependencies which are pointers to other DependenciesBlock instances. For example
24
+ * when a Module has a CommonJs require statement, the DependencyBlock for the CommonJs module
25
+ * would be added as a dependency to the Module. DependenciesBlock is inherited by two types of classes:
26
+ * Module subclasses and AsyncDependenciesBlock subclasses. The only difference between the two is that
27
+ * AsyncDependenciesBlock subclasses are used for code-splitting (async boundary) and Module subclasses are not.
28
+ */
19
29
  class DependenciesBlock {
20
30
  constructor() {
21
31
  /** @type {Dependency[]} */
22
32
  this.dependencies = [];
23
33
  /** @type {AsyncDependenciesBlock[]} */
24
34
  this.blocks = [];
25
- /** @type {DependenciesBlock} */
35
+ /** @type {DependenciesBlock | undefined} */
26
36
  this.parent = undefined;
27
37
  }
28
38
 
@@ -36,7 +46,6 @@ class DependenciesBlock {
36
46
  /**
37
47
  * Adds a DependencyBlock to DependencyBlock relationship.
38
48
  * This is used for when a Module has a AsyncDependencyBlock tie (for code-splitting)
39
- *
40
49
  * @param {AsyncDependenciesBlock} block block being added
41
50
  * @returns {void}
42
51
  */
@@ -88,11 +97,17 @@ class DependenciesBlock {
88
97
  }
89
98
  }
90
99
 
100
+ /**
101
+ * @param {ObjectSerializerContext} context context
102
+ */
91
103
  serialize({ write }) {
92
104
  write(this.dependencies);
93
105
  write(this.blocks);
94
106
  }
95
107
 
108
+ /**
109
+ * @param {ObjectDeserializerContext} context context
110
+ */
96
111
  deserialize({ read }) {
97
112
  this.dependencies = read();
98
113
  this.blocks = read();
package/lib/Dependency.js CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const RawModule = require("./RawModule");
8
9
  const memoize = require("./util/memoize");
9
10
 
10
11
  /** @typedef {import("webpack-sources").Source} Source */
@@ -17,39 +18,41 @@ const memoize = require("./util/memoize");
17
18
  /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
18
19
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
19
20
  /** @typedef {import("./WebpackError")} WebpackError */
21
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
23
  /** @typedef {import("./util/Hash")} Hash */
21
24
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
22
25
 
23
26
  /**
24
- * @typedef {Object} UpdateHashContext
27
+ * @typedef {object} UpdateHashContext
25
28
  * @property {ChunkGraph} chunkGraph
26
29
  * @property {RuntimeSpec} runtime
27
30
  * @property {RuntimeTemplate=} runtimeTemplate
28
31
  */
29
32
 
30
33
  /**
31
- * @typedef {Object} SourcePosition
34
+ * @typedef {object} SourcePosition
32
35
  * @property {number} line
33
36
  * @property {number=} column
34
37
  */
35
38
 
36
39
  /**
37
- * @typedef {Object} RealDependencyLocation
40
+ * @typedef {object} RealDependencyLocation
38
41
  * @property {SourcePosition} start
39
42
  * @property {SourcePosition=} end
40
43
  * @property {number=} index
41
44
  */
42
45
 
43
46
  /**
44
- * @typedef {Object} SyntheticDependencyLocation
47
+ * @typedef {object} SyntheticDependencyLocation
45
48
  * @property {string} name
46
49
  * @property {number=} index
47
50
  */
48
51
 
49
- /** @typedef {SyntheticDependencyLocation|RealDependencyLocation} DependencyLocation */
52
+ /** @typedef {SyntheticDependencyLocation | RealDependencyLocation} DependencyLocation */
50
53
 
51
54
  /**
52
- * @typedef {Object} ExportSpec
55
+ * @typedef {object} ExportSpec
53
56
  * @property {string} name the name of the export
54
57
  * @property {boolean=} canMangle can the export be renamed (defaults to true)
55
58
  * @property {boolean=} terminalBinding is the export a terminal binding that should be checked for export star conflicts
@@ -61,10 +64,10 @@ const memoize = require("./util/memoize");
61
64
  */
62
65
 
63
66
  /**
64
- * @typedef {Object} ExportsSpec
67
+ * @typedef {object} ExportsSpec
65
68
  * @property {(string | ExportSpec)[] | true | null} exports exported names, true for unknown exports or null for no exports
66
69
  * @property {Set<string>=} excludeExports when exports = true, list of unaffected exports
67
- * @property {Set<string>=} hideExports list of maybe prior exposed, but now hidden exports
70
+ * @property {(Set<string> | null)=} hideExports list of maybe prior exposed, but now hidden exports
68
71
  * @property {ModuleGraphConnection=} from when reexported: from which module
69
72
  * @property {number=} priority when reexported: with which priority
70
73
  * @property {boolean=} canMangle can the export be renamed (defaults to true)
@@ -73,23 +76,24 @@ const memoize = require("./util/memoize");
73
76
  */
74
77
 
75
78
  /**
76
- * @typedef {Object} ReferencedExport
79
+ * @typedef {object} ReferencedExport
77
80
  * @property {string[]} name name of the referenced export
78
81
  * @property {boolean=} canMangle when false, referenced export can not be mangled, defaults to true
79
82
  */
80
83
 
84
+ /** @typedef {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} GetConditionFn */
85
+
81
86
  const TRANSITIVE = Symbol("transitive");
82
87
 
83
- const getIgnoredModule = memoize(() => {
84
- const RawModule = require("./RawModule");
85
- return new RawModule("/* (ignored) */", `ignored`, `(ignored)`);
86
- });
88
+ const getIgnoredModule = memoize(
89
+ () => new RawModule("/* (ignored) */", "ignored", "(ignored)")
90
+ );
87
91
 
88
92
  class Dependency {
89
93
  constructor() {
90
- /** @type {Module} */
94
+ /** @type {Module | undefined} */
91
95
  this._parentModule = undefined;
92
- /** @type {DependenciesBlock} */
96
+ /** @type {DependenciesBlock | undefined} */
93
97
  this._parentDependenciesBlock = undefined;
94
98
  /** @type {number} */
95
99
  this._parentDependenciesBlockIndex = -1;
@@ -159,19 +163,34 @@ class Dependency {
159
163
  this._locEL = 0;
160
164
  this._locEC = 0;
161
165
  }
162
- if ("index" in loc) {
163
- this._locI = loc.index;
164
- } else {
165
- this._locI = undefined;
166
- }
167
- if ("name" in loc) {
168
- this._locN = loc.name;
169
- } else {
170
- this._locN = undefined;
171
- }
166
+ this._locI = "index" in loc ? loc.index : undefined;
167
+ this._locN = "name" in loc ? loc.name : undefined;
172
168
  this._loc = loc;
173
169
  }
174
170
 
171
+ /**
172
+ * @param {number} startLine start line
173
+ * @param {number} startColumn start column
174
+ * @param {number} endLine end line
175
+ * @param {number} endColumn end column
176
+ */
177
+ setLoc(startLine, startColumn, endLine, endColumn) {
178
+ this._locSL = startLine;
179
+ this._locSC = startColumn;
180
+ this._locEL = endLine;
181
+ this._locEC = endColumn;
182
+ this._locI = undefined;
183
+ this._locN = undefined;
184
+ this._loc = undefined;
185
+ }
186
+
187
+ /**
188
+ * @returns {string | undefined} a request context
189
+ */
190
+ getContext() {
191
+ return undefined;
192
+ }
193
+
175
194
  /**
176
195
  * @returns {string | null} an identifier to merge equal requests
177
196
  */
@@ -210,7 +229,7 @@ class Dependency {
210
229
 
211
230
  /**
212
231
  * @param {ModuleGraph} moduleGraph module graph
213
- * @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
232
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
214
233
  */
215
234
  getCondition(moduleGraph) {
216
235
  return null;
@@ -228,7 +247,7 @@ class Dependency {
228
247
  /**
229
248
  * Returns warnings
230
249
  * @param {ModuleGraph} moduleGraph module graph
231
- * @returns {WebpackError[]} warnings
250
+ * @returns {WebpackError[] | null | undefined} warnings
232
251
  */
233
252
  getWarnings(moduleGraph) {
234
253
  return null;
@@ -237,7 +256,7 @@ class Dependency {
237
256
  /**
238
257
  * Returns errors
239
258
  * @param {ModuleGraph} moduleGraph module graph
240
- * @returns {WebpackError[]} errors
259
+ * @returns {WebpackError[] | null | undefined} errors
241
260
  */
242
261
  getErrors(moduleGraph) {
243
262
  return null;
@@ -269,12 +288,15 @@ class Dependency {
269
288
 
270
289
  /**
271
290
  * @param {string} context context directory
272
- * @returns {Module} a module
291
+ * @returns {Module | null} a module
273
292
  */
274
293
  createIgnoredModule(context) {
275
294
  return getIgnoredModule();
276
295
  }
277
296
 
297
+ /**
298
+ * @param {ObjectSerializerContext} context context
299
+ */
278
300
  serialize({ write }) {
279
301
  write(this.weak);
280
302
  write(this.optional);
@@ -286,6 +308,9 @@ class Dependency {
286
308
  write(this._locN);
287
309
  }
288
310
 
311
+ /**
312
+ * @param {ObjectDeserializerContext} context context
313
+ */
289
314
  deserialize({ read }) {
290
315
  this.weak = read();
291
316
  this.optional = read();
@@ -303,6 +328,8 @@ Dependency.NO_EXPORTS_REFERENCED = [];
303
328
  /** @type {string[][]} */
304
329
  Dependency.EXPORTS_OBJECT_REFERENCED = [[]];
305
330
 
331
+ // eslint-disable-next-line no-warning-comments
332
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
306
333
  Object.defineProperty(Dependency.prototype, "module", {
307
334
  /**
308
335
  * @deprecated
@@ -325,6 +352,8 @@ Object.defineProperty(Dependency.prototype, "module", {
325
352
  }
326
353
  });
327
354
 
355
+ // eslint-disable-next-line no-warning-comments
356
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
328
357
  Object.defineProperty(Dependency.prototype, "disconnect", {
329
358
  get() {
330
359
  throw new Error(
@@ -7,29 +7,50 @@
7
7
 
8
8
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
9
9
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
10
+ /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
10
11
  /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
11
12
  /** @typedef {import("./Dependency")} Dependency */
12
13
  /** @typedef {import("./Dependency").RuntimeSpec} RuntimeSpec */
13
14
  /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
14
15
  /** @typedef {import("./Generator").GenerateContext} GenerateContext */
15
- /** @template T @typedef {import("./InitFragment")<T>} InitFragment */
16
16
  /** @typedef {import("./Module")} Module */
17
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
17
18
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
18
19
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
19
20
 
20
21
  /**
21
- * @typedef {Object} DependencyTemplateContext
22
+ * @template T
23
+ * @typedef {import("./InitFragment")<T>} InitFragment
24
+ */
25
+
26
+ /**
27
+ * @typedef {object} DependencyTemplateContext
22
28
  * @property {RuntimeTemplate} runtimeTemplate the runtime template
23
29
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
24
30
  * @property {ModuleGraph} moduleGraph the module graph
25
31
  * @property {ChunkGraph} chunkGraph the chunk graph
26
- * @property {Set<string>} runtimeRequirements the requirements for runtime
32
+ * @property {RuntimeRequirements} runtimeRequirements the requirements for runtime
27
33
  * @property {Module} module current module
28
34
  * @property {RuntimeSpec} runtime current runtimes, for which code is generated
29
35
  * @property {InitFragment<GenerateContext>[]} initFragments mutable array of init fragments for the current module
30
36
  * @property {ConcatenationScope=} concatenationScope when in a concatenated module, information about other concatenated modules
37
+ * @property {CodeGenerationResults} codeGenerationResults the code generation results
38
+ * @property {InitFragment<GenerateContext>[]} chunkInitFragments chunkInitFragments
39
+ */
40
+
41
+ /**
42
+ * @typedef {object} CssDependencyTemplateContextExtras
43
+ * @property {CssExportsData} cssExportsData the css exports data
31
44
  */
32
45
 
46
+ /**
47
+ * @typedef {object} CssExportsData
48
+ * @property {boolean} esModule whether export __esModule
49
+ * @property {Map<string, string>} exports the css exports
50
+ */
51
+
52
+ /** @typedef {DependencyTemplateContext & CssDependencyTemplateContextExtras} CssDependencyTemplateContext */
53
+
33
54
  class DependencyTemplate {
34
55
  /* istanbul ignore next */
35
56
  /**
@@ -27,7 +27,7 @@ class DependencyTemplates {
27
27
 
28
28
  /**
29
29
  * @param {DependencyConstructor} dependency Constructor of Dependency
30
- * @returns {DependencyTemplate} template for this dependency
30
+ * @returns {DependencyTemplate | undefined} template for this dependency
31
31
  */
32
32
  get(dependency) {
33
33
  return this._map.get(dependency);
@@ -57,7 +57,7 @@ class DependencyTemplates {
57
57
  }
58
58
 
59
59
  clone() {
60
- const newInstance = new DependencyTemplates();
60
+ const newInstance = new DependencyTemplates(this._hashFunction);
61
61
  newInstance._map = new Map(this._map);
62
62
  newInstance._hash = this._hash;
63
63
  return newInstance;
@@ -9,13 +9,27 @@ const DllModuleFactory = require("./DllModuleFactory");
9
9
  const DllEntryDependency = require("./dependencies/DllEntryDependency");
10
10
  const EntryDependency = require("./dependencies/EntryDependency");
11
11
 
12
+ /** @typedef {import("./Compiler")} Compiler */
13
+ /** @typedef {string[]} Entries */
14
+ /** @typedef {{ name: string, filename: TODO }} Options */
15
+
12
16
  class DllEntryPlugin {
17
+ /**
18
+ * @param {string} context context
19
+ * @param {Entries} entries entry names
20
+ * @param {Options} options options
21
+ */
13
22
  constructor(context, entries, options) {
14
23
  this.context = context;
15
24
  this.entries = entries;
16
25
  this.options = options;
17
26
  }
18
27
 
28
+ /**
29
+ * Apply the plugin
30
+ * @param {Compiler} compiler the compiler instance
31
+ * @returns {void}
32
+ */
19
33
  apply(compiler) {
20
34
  compiler.hooks.compilation.tap(
21
35
  "DllEntryPlugin",
@@ -46,7 +60,10 @@ class DllEntryPlugin {
46
60
  this.options.name
47
61
  ),
48
62
  this.options,
49
- callback
63
+ error => {
64
+ if (error) return callback(error);
65
+ callback();
66
+ }
50
67
  );
51
68
  });
52
69
  }