webpack 5.76.1 → 5.88.2

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (442) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +6 -1
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +18 -14
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +95 -47
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DependencyTemplates.js +1 -1
  38. package/lib/DllEntryPlugin.js +16 -1
  39. package/lib/DllModule.js +17 -2
  40. package/lib/DllModuleFactory.js +1 -1
  41. package/lib/DllReferencePlugin.js +13 -1
  42. package/lib/Entrypoint.js +1 -1
  43. package/lib/ErrorHelpers.js +62 -22
  44. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  45. package/lib/ExportsInfo.js +25 -4
  46. package/lib/ExportsInfoApiPlugin.js +30 -14
  47. package/lib/ExternalModule.js +30 -9
  48. package/lib/FileSystemInfo.js +61 -25
  49. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  50. package/lib/FlagDependencyExportsPlugin.js +336 -348
  51. package/lib/FlagDependencyUsagePlugin.js +9 -9
  52. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  53. package/lib/Generator.js +7 -0
  54. package/lib/HookWebpackError.js +1 -1
  55. package/lib/HotModuleReplacementPlugin.js +60 -46
  56. package/lib/IgnoreErrorModuleFactory.js +1 -1
  57. package/lib/InitFragment.js +28 -5
  58. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  59. package/lib/LibManifestPlugin.js +22 -5
  60. package/lib/LoaderOptionsPlugin.js +12 -2
  61. package/lib/MainTemplate.js +2 -2
  62. package/lib/Module.js +44 -12
  63. package/lib/ModuleBuildError.js +9 -0
  64. package/lib/ModuleDependencyError.js +4 -2
  65. package/lib/ModuleDependencyWarning.js +4 -2
  66. package/lib/ModuleError.js +9 -0
  67. package/lib/ModuleFactory.js +1 -1
  68. package/lib/ModuleFilenameHelpers.js +114 -4
  69. package/lib/ModuleGraph.js +33 -23
  70. package/lib/ModuleGraphConnection.js +19 -6
  71. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  72. package/lib/ModuleNotFoundError.js +5 -2
  73. package/lib/ModuleParseError.js +9 -0
  74. package/lib/ModuleProfile.js +1 -0
  75. package/lib/ModuleRestoreError.js +2 -0
  76. package/lib/ModuleStoreError.js +2 -1
  77. package/lib/ModuleTypeConstants.js +169 -0
  78. package/lib/ModuleWarning.js +9 -0
  79. package/lib/MultiWatching.js +4 -0
  80. package/lib/NodeStuffPlugin.js +65 -35
  81. package/lib/NormalModule.js +12 -2
  82. package/lib/NormalModuleFactory.js +56 -8
  83. package/lib/NormalModuleReplacementPlugin.js +5 -3
  84. package/lib/NullFactory.js +1 -1
  85. package/lib/PrefetchPlugin.js +4 -0
  86. package/lib/ProgressPlugin.js +71 -15
  87. package/lib/ProvidePlugin.js +30 -14
  88. package/lib/RawModule.js +13 -2
  89. package/lib/RecordIdsPlugin.js +4 -4
  90. package/lib/RequireJsStuffPlugin.js +22 -15
  91. package/lib/RuntimeGlobals.js +5 -0
  92. package/lib/RuntimeModule.js +12 -11
  93. package/lib/RuntimePlugin.js +10 -3
  94. package/lib/RuntimeTemplate.js +29 -11
  95. package/lib/SelfModuleFactory.js +12 -0
  96. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  97. package/lib/SourceMapDevToolPlugin.js +47 -11
  98. package/lib/Template.js +5 -3
  99. package/lib/UseStrictPlugin.js +29 -11
  100. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  101. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  102. package/lib/WatchIgnorePlugin.js +4 -0
  103. package/lib/Watching.js +62 -25
  104. package/lib/WebpackError.js +14 -5
  105. package/lib/WebpackIsIncludedPlugin.js +22 -13
  106. package/lib/WebpackOptionsApply.js +41 -44
  107. package/lib/WebpackOptionsDefaulter.js +10 -3
  108. package/lib/asset/AssetGenerator.js +24 -9
  109. package/lib/asset/AssetModulesPlugin.js +28 -12
  110. package/lib/asset/AssetParser.js +15 -7
  111. package/lib/asset/AssetSourceParser.js +8 -3
  112. package/lib/asset/RawDataUrlModule.js +15 -4
  113. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  114. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  115. package/lib/buildChunkGraph.js +37 -21
  116. package/lib/cache/IdleFileCachePlugin.js +2 -1
  117. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  118. package/lib/cache/PackFileCacheStrategy.js +59 -22
  119. package/lib/cache/ResolverCachePlugin.js +3 -0
  120. package/lib/config/browserslistTargetHandler.js +10 -10
  121. package/lib/config/defaults.js +306 -105
  122. package/lib/config/normalization.js +110 -71
  123. package/lib/config/target.js +37 -10
  124. package/lib/container/ContainerEntryModule.js +11 -1
  125. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  126. package/lib/container/ContainerExposedDependency.js +9 -0
  127. package/lib/container/ContainerPlugin.js +3 -1
  128. package/lib/container/FallbackDependency.js +13 -0
  129. package/lib/container/FallbackItemDependency.js +3 -0
  130. package/lib/container/FallbackModule.js +12 -2
  131. package/lib/container/FallbackModuleFactory.js +1 -1
  132. package/lib/container/RemoteModule.js +11 -1
  133. package/lib/container/RemoteRuntimeModule.js +3 -2
  134. package/lib/container/RemoteToExternalDependency.js +3 -0
  135. package/lib/css/CssExportsGenerator.js +9 -0
  136. package/lib/css/CssGenerator.js +5 -1
  137. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  138. package/lib/css/CssModulesPlugin.js +253 -74
  139. package/lib/css/CssParser.js +697 -282
  140. package/lib/css/walkCssTokens.js +269 -138
  141. package/lib/debug/ProfilingPlugin.js +33 -12
  142. package/lib/dependencies/AMDDefineDependency.js +54 -10
  143. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  144. package/lib/dependencies/AMDPlugin.js +33 -20
  145. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  146. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  147. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  148. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  149. package/lib/dependencies/AMDRequireDependency.js +16 -1
  150. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  151. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  152. package/lib/dependencies/CachedConstDependency.js +14 -0
  153. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  154. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  155. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  156. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  157. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  158. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  159. package/lib/dependencies/CommonJsPlugin.js +51 -26
  160. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  161. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  162. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  163. package/lib/dependencies/ConstDependency.js +11 -2
  164. package/lib/dependencies/ContextDependency.js +15 -2
  165. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  166. package/lib/dependencies/ContextElementDependency.js +8 -0
  167. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  168. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  169. package/lib/dependencies/CssExportDependency.js +8 -0
  170. package/lib/dependencies/CssImportDependency.js +55 -3
  171. package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
  172. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  173. package/lib/dependencies/CssUrlDependency.js +46 -16
  174. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  175. package/lib/dependencies/DllEntryDependency.js +14 -0
  176. package/lib/dependencies/DynamicExports.js +10 -6
  177. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  178. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  179. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  180. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  181. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  182. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  183. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  184. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  185. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  186. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  187. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  188. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  189. package/lib/dependencies/HarmonyExports.js +11 -5
  190. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  191. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  192. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  193. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  194. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  195. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  196. package/lib/dependencies/ImportContextDependency.js +15 -0
  197. package/lib/dependencies/ImportDependency.js +15 -4
  198. package/lib/dependencies/ImportEagerDependency.js +7 -4
  199. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  200. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  201. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  202. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  203. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  204. package/lib/dependencies/ImportParserPlugin.js +83 -25
  205. package/lib/dependencies/ImportPlugin.js +21 -7
  206. package/lib/dependencies/ImportWeakDependency.js +7 -4
  207. package/lib/dependencies/JsonExportsDependency.js +9 -1
  208. package/lib/dependencies/LocalModule.js +16 -0
  209. package/lib/dependencies/LocalModuleDependency.js +15 -0
  210. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  211. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  212. package/lib/dependencies/ModuleDependency.js +9 -1
  213. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  214. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  215. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  216. package/lib/dependencies/PrefetchDependency.js +3 -0
  217. package/lib/dependencies/ProvidedDependency.js +14 -2
  218. package/lib/dependencies/PureExpressionDependency.js +10 -1
  219. package/lib/dependencies/RequireContextDependency.js +6 -0
  220. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  221. package/lib/dependencies/RequireContextPlugin.js +19 -6
  222. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  223. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  224. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  225. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  226. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  227. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  228. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  229. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  230. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  231. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  232. package/lib/dependencies/RequireResolveDependency.js +6 -0
  233. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  234. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  235. package/lib/dependencies/StaticExportsDependency.js +8 -0
  236. package/lib/dependencies/SystemPlugin.js +48 -21
  237. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  238. package/lib/dependencies/URLDependency.js +13 -4
  239. package/lib/dependencies/URLPlugin.js +31 -18
  240. package/lib/dependencies/UnsupportedDependency.js +13 -0
  241. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  242. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  243. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  244. package/lib/dependencies/WorkerDependency.js +47 -3
  245. package/lib/dependencies/WorkerPlugin.js +105 -32
  246. package/lib/dependencies/getFunctionExpression.js +7 -0
  247. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  248. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  249. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  250. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  251. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  252. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  253. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  254. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  255. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  256. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  257. package/lib/ids/IdHelpers.js +6 -0
  258. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  259. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  260. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  261. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  262. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  263. package/lib/index.js +8 -0
  264. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  265. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  266. package/lib/javascript/ChunkHelpers.js +2 -2
  267. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  268. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  269. package/lib/javascript/JavascriptModulesPlugin.js +217 -198
  270. package/lib/javascript/JavascriptParser.js +941 -256
  271. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  272. package/lib/javascript/StartupHelpers.js +2 -2
  273. package/lib/json/JsonData.js +26 -1
  274. package/lib/json/JsonGenerator.js +21 -7
  275. package/lib/json/JsonModulesPlugin.js +14 -5
  276. package/lib/json/JsonParser.js +27 -13
  277. package/lib/library/AbstractLibraryPlugin.js +4 -0
  278. package/lib/library/AmdLibraryPlugin.js +22 -6
  279. package/lib/library/AssignLibraryPlugin.js +19 -5
  280. package/lib/library/EnableLibraryPlugin.js +4 -0
  281. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  282. package/lib/library/ModuleLibraryPlugin.js +8 -4
  283. package/lib/library/SystemLibraryPlugin.js +2 -1
  284. package/lib/library/UmdLibraryPlugin.js +24 -2
  285. package/lib/logging/runtime.js +1 -1
  286. package/lib/logging/truncateArgs.js +4 -0
  287. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  288. package/lib/node/NodeTargetPlugin.js +3 -0
  289. package/lib/node/NodeTemplatePlugin.js +10 -2
  290. package/lib/node/NodeWatchFileSystem.js +1 -1
  291. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  292. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  293. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  294. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  295. package/lib/node/nodeConsole.js +2 -4
  296. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  297. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  298. package/lib/optimize/ConcatenatedModule.js +8 -6
  299. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  300. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  301. package/lib/optimize/InnerGraph.js +5 -5
  302. package/lib/optimize/InnerGraphPlugin.js +57 -48
  303. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  304. package/lib/optimize/MangleExportsPlugin.js +1 -1
  305. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  306. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  307. package/lib/optimize/RealContentHashPlugin.js +86 -30
  308. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  309. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  310. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  311. package/lib/optimize/SplitChunksPlugin.js +71 -31
  312. package/lib/performance/SizeLimitsPlugin.js +7 -4
  313. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  314. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  315. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  316. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  317. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  318. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  319. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  320. package/lib/rules/RuleSetCompiler.js +3 -3
  321. package/lib/rules/UseEffectRulePlugin.js +6 -4
  322. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  323. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  324. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  325. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  326. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  327. package/lib/runtime/CompatRuntimeModule.js +7 -2
  328. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  329. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  330. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  331. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  332. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  333. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  334. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  335. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  336. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  337. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  338. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  339. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  340. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  341. package/lib/runtime/NonceRuntimeModule.js +1 -1
  342. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  343. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  344. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  345. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  346. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  347. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  348. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  349. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  350. package/lib/schemes/DataUriPlugin.js +16 -3
  351. package/lib/schemes/HttpUriPlugin.js +38 -0
  352. package/lib/serialization/ArraySerializer.js +22 -6
  353. package/lib/serialization/BinaryMiddleware.js +164 -1
  354. package/lib/serialization/DateObjectSerializer.js +15 -4
  355. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  356. package/lib/serialization/FileMiddleware.js +17 -0
  357. package/lib/serialization/MapObjectSerializer.js +24 -8
  358. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  359. package/lib/serialization/ObjectMiddleware.js +33 -2
  360. package/lib/serialization/PlainObjectSerializer.js +23 -12
  361. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  362. package/lib/serialization/SetObjectSerializer.js +21 -6
  363. package/lib/serialization/types.js +1 -1
  364. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  365. package/lib/sharing/ConsumeSharedModule.js +13 -2
  366. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  367. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  368. package/lib/sharing/ProvideSharedDependency.js +17 -0
  369. package/lib/sharing/ProvideSharedModule.js +11 -1
  370. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  371. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  372. package/lib/sharing/ShareRuntimeModule.js +19 -9
  373. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  374. package/lib/sharing/utils.js +320 -7
  375. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  376. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  377. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  378. package/lib/util/AsyncQueue.js +4 -2
  379. package/lib/util/LazySet.js +10 -2
  380. package/lib/util/MapHelpers.js +19 -5
  381. package/lib/util/ParallelismFactorCalculator.js +10 -0
  382. package/lib/util/Semaphore.js +1 -1
  383. package/lib/util/StackedCacheMap.js +7 -1
  384. package/lib/util/StringXor.js +51 -0
  385. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  386. package/lib/util/binarySearchBounds.js +49 -0
  387. package/lib/util/compileBooleanMatcher.js +31 -0
  388. package/lib/util/createHash.js +35 -13
  389. package/lib/util/deprecation.js +18 -3
  390. package/lib/util/deterministicGrouping.js +50 -11
  391. package/lib/util/findGraphRoots.js +4 -2
  392. package/lib/util/hash/md4.js +2 -2
  393. package/lib/util/hash/xxhash64.js +1 -1
  394. package/lib/util/identifier.js +4 -0
  395. package/lib/util/internalSerializables.js +1 -0
  396. package/lib/util/makeSerializable.js +7 -0
  397. package/lib/util/memoize.js +3 -3
  398. package/lib/util/numberHash.js +75 -21
  399. package/lib/util/processAsyncTree.js +7 -1
  400. package/lib/util/propertyAccess.js +9 -54
  401. package/lib/util/propertyName.js +79 -0
  402. package/lib/util/registerExternalSerializer.js +1 -1
  403. package/lib/util/runtime.js +84 -21
  404. package/lib/util/semver.js +2 -1
  405. package/lib/util/serialization.js +10 -0
  406. package/lib/util/smartGrouping.js +1 -1
  407. package/lib/validateSchema.js +6 -2
  408. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  409. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  410. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  411. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  412. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  413. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  414. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  415. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  416. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  417. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  418. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  419. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  420. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  421. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  422. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  423. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  424. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  425. package/lib/webpack.js +12 -3
  426. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  427. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  428. package/module.d.ts +55 -37
  429. package/package.json +59 -56
  430. package/schemas/WebpackOptions.check.js +1 -1
  431. package/schemas/WebpackOptions.json +133 -6
  432. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  433. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  434. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  435. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  436. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  437. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  438. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  439. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  440. package/schemas/plugins/css/CssParserOptions.json +1 -1
  441. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  442. package/types.d.ts +1629 -683
@@ -5,10 +5,16 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_ESM,
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC
12
+ } = require("./ModuleTypeConstants");
8
13
  const RuntimeGlobals = require("./RuntimeGlobals");
9
14
  const WebpackError = require("./WebpackError");
10
15
  const ConstDependency = require("./dependencies/ConstDependency");
11
16
  const BasicEvaluatedExpression = require("./javascript/BasicEvaluatedExpression");
17
+
12
18
  const {
13
19
  evaluateToString,
14
20
  toConstantDependency
@@ -20,6 +26,7 @@ const createHash = require("./util/createHash");
20
26
  /** @typedef {import("./NormalModule")} NormalModule */
21
27
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
22
28
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
29
+ /** @typedef {import("./logging/Logger").Logger} Logger */
23
30
 
24
31
  /** @typedef {null|undefined|RegExp|Function|string|number|boolean|bigint|undefined} CodeValuePrimitive */
25
32
  /** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive|RuntimeValue>} CodeValue */
@@ -111,7 +118,9 @@ class RuntimeValue {
111
118
  * @param {Map<string, string | Set<string>>} valueCacheVersions valueCacheVersions
112
119
  * @param {string} key the defined key
113
120
  * @param {RuntimeTemplate} runtimeTemplate the runtime template
121
+ * @param {Logger} logger the logger object
114
122
  * @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded)
123
+ * @param {Set<string>|undefined=} objKeys used keys
115
124
  * @returns {string} code converted to string that evaluates
116
125
  */
117
126
  const stringifyObj = (
@@ -120,24 +129,47 @@ const stringifyObj = (
120
129
  valueCacheVersions,
121
130
  key,
122
131
  runtimeTemplate,
123
- asiSafe
132
+ logger,
133
+ asiSafe,
134
+ objKeys
124
135
  ) => {
125
136
  let code;
126
137
  let arr = Array.isArray(obj);
127
138
  if (arr) {
128
139
  code = `[${obj
129
140
  .map(code =>
130
- toCode(code, parser, valueCacheVersions, key, runtimeTemplate, null)
141
+ toCode(
142
+ code,
143
+ parser,
144
+ valueCacheVersions,
145
+ key,
146
+ runtimeTemplate,
147
+ logger,
148
+ null
149
+ )
131
150
  )
132
151
  .join(",")}]`;
133
152
  } else {
134
- code = `{${Object.keys(obj)
153
+ let keys = Object.keys(obj);
154
+ if (objKeys) {
155
+ if (objKeys.size === 0) keys = [];
156
+ else keys = keys.filter(k => objKeys.has(k));
157
+ }
158
+ code = `{${keys
135
159
  .map(key => {
136
160
  const code = obj[key];
137
161
  return (
138
162
  JSON.stringify(key) +
139
163
  ":" +
140
- toCode(code, parser, valueCacheVersions, key, runtimeTemplate, null)
164
+ toCode(
165
+ code,
166
+ parser,
167
+ valueCacheVersions,
168
+ key,
169
+ runtimeTemplate,
170
+ logger,
171
+ null
172
+ )
141
173
  );
142
174
  })
143
175
  .join(",")}}`;
@@ -162,7 +194,9 @@ const stringifyObj = (
162
194
  * @param {Map<string, string | Set<string>>} valueCacheVersions valueCacheVersions
163
195
  * @param {string} key the defined key
164
196
  * @param {RuntimeTemplate} runtimeTemplate the runtime template
197
+ * @param {Logger} logger the logger object
165
198
  * @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded)
199
+ * @param {Set<string>|undefined=} objKeys used keys
166
200
  * @returns {string} code converted to string that evaluates
167
201
  */
168
202
  const toCode = (
@@ -171,49 +205,62 @@ const toCode = (
171
205
  valueCacheVersions,
172
206
  key,
173
207
  runtimeTemplate,
174
- asiSafe
208
+ logger,
209
+ asiSafe,
210
+ objKeys
175
211
  ) => {
176
- if (code === null) {
177
- return "null";
178
- }
179
- if (code === undefined) {
180
- return "undefined";
181
- }
182
- if (Object.is(code, -0)) {
183
- return "-0";
184
- }
185
- if (code instanceof RuntimeValue) {
186
- return toCode(
187
- code.exec(parser, valueCacheVersions, key),
188
- parser,
189
- valueCacheVersions,
190
- key,
191
- runtimeTemplate,
192
- asiSafe
193
- );
194
- }
195
- if (code instanceof RegExp && code.toString) {
196
- return code.toString();
197
- }
198
- if (typeof code === "function" && code.toString) {
199
- return "(" + code.toString() + ")";
200
- }
201
- if (typeof code === "object") {
202
- return stringifyObj(
203
- code,
204
- parser,
205
- valueCacheVersions,
206
- key,
207
- runtimeTemplate,
208
- asiSafe
209
- );
210
- }
211
- if (typeof code === "bigint") {
212
- return runtimeTemplate.supportsBigIntLiteral()
213
- ? `${code}n`
214
- : `BigInt("${code}")`;
215
- }
216
- return code + "";
212
+ const transformToCode = () => {
213
+ if (code === null) {
214
+ return "null";
215
+ }
216
+ if (code === undefined) {
217
+ return "undefined";
218
+ }
219
+ if (Object.is(code, -0)) {
220
+ return "-0";
221
+ }
222
+ if (code instanceof RuntimeValue) {
223
+ return toCode(
224
+ code.exec(parser, valueCacheVersions, key),
225
+ parser,
226
+ valueCacheVersions,
227
+ key,
228
+ runtimeTemplate,
229
+ logger,
230
+ asiSafe
231
+ );
232
+ }
233
+ if (code instanceof RegExp && code.toString) {
234
+ return code.toString();
235
+ }
236
+ if (typeof code === "function" && code.toString) {
237
+ return "(" + code.toString() + ")";
238
+ }
239
+ if (typeof code === "object") {
240
+ return stringifyObj(
241
+ code,
242
+ parser,
243
+ valueCacheVersions,
244
+ key,
245
+ runtimeTemplate,
246
+ logger,
247
+ asiSafe,
248
+ objKeys
249
+ );
250
+ }
251
+ if (typeof code === "bigint") {
252
+ return runtimeTemplate.supportsBigIntLiteral()
253
+ ? `${code}n`
254
+ : `BigInt("${code}")`;
255
+ }
256
+ return code + "";
257
+ };
258
+
259
+ const strCode = transformToCode();
260
+
261
+ logger.log(`Replaced "${key}" with "${strCode}"`);
262
+
263
+ return strCode;
217
264
  };
218
265
 
219
266
  const toCacheVersion = code => {
@@ -249,8 +296,12 @@ const toCacheVersion = code => {
249
296
  return code + "";
250
297
  };
251
298
 
252
- const VALUE_DEP_PREFIX = "webpack/DefinePlugin ";
253
- const VALUE_DEP_MAIN = "webpack/DefinePlugin_hash";
299
+ const PLUGIN_NAME = "DefinePlugin";
300
+ const VALUE_DEP_PREFIX = `webpack/${PLUGIN_NAME} `;
301
+ const VALUE_DEP_MAIN = `webpack/${PLUGIN_NAME}_hash`;
302
+ const TYPEOF_OPERATOR_REGEXP = /^typeof\s+/;
303
+ const WEBPACK_REQUIRE_FUNCTION_REGEXP = /__webpack_require__\s*(!?\.)/;
304
+ const WEBPACK_REQUIRE_IDENTIFIER_REGEXP = /__webpack_require__/;
254
305
 
255
306
  class DefinePlugin {
256
307
  /**
@@ -278,8 +329,9 @@ class DefinePlugin {
278
329
  apply(compiler) {
279
330
  const definitions = this.definitions;
280
331
  compiler.hooks.compilation.tap(
281
- "DefinePlugin",
332
+ PLUGIN_NAME,
282
333
  (compilation, { normalModuleFactory }) => {
334
+ const logger = compilation.getLogger("webpack.DefinePlugin");
283
335
  compilation.dependencyTemplates.set(
284
336
  ConstDependency,
285
337
  new ConstDependency.Template()
@@ -300,7 +352,7 @@ class DefinePlugin {
300
352
  */
301
353
  const handler = parser => {
302
354
  const mainValue = compilation.valueCacheVersions.get(VALUE_DEP_MAIN);
303
- parser.hooks.program.tap("DefinePlugin", () => {
355
+ parser.hooks.program.tap(PLUGIN_NAME, () => {
304
356
  const { buildInfo } = parser.state.module;
305
357
  if (!buildInfo.valueDependencies)
306
358
  buildInfo.valueDependencies = new Map();
@@ -356,7 +408,7 @@ class DefinePlugin {
356
408
  const splittedKey = key.split(".");
357
409
  splittedKey.slice(1).forEach((_, i) => {
358
410
  const fullKey = prefix + splittedKey.slice(0, i + 1).join(".");
359
- parser.hooks.canRename.for(fullKey).tap("DefinePlugin", () => {
411
+ parser.hooks.canRename.for(fullKey).tap(PLUGIN_NAME, () => {
360
412
  addValueDependency(key);
361
413
  return true;
362
414
  });
@@ -371,18 +423,18 @@ class DefinePlugin {
371
423
  */
372
424
  const applyDefine = (key, code) => {
373
425
  const originalKey = key;
374
- const isTypeof = /^typeof\s+/.test(key);
375
- if (isTypeof) key = key.replace(/^typeof\s+/, "");
426
+ const isTypeof = TYPEOF_OPERATOR_REGEXP.test(key);
427
+ if (isTypeof) key = key.replace(TYPEOF_OPERATOR_REGEXP, "");
376
428
  let recurse = false;
377
429
  let recurseTypeof = false;
378
430
  if (!isTypeof) {
379
- parser.hooks.canRename.for(key).tap("DefinePlugin", () => {
431
+ parser.hooks.canRename.for(key).tap(PLUGIN_NAME, () => {
380
432
  addValueDependency(originalKey);
381
433
  return true;
382
434
  });
383
435
  parser.hooks.evaluateIdentifier
384
436
  .for(key)
385
- .tap("DefinePlugin", expr => {
437
+ .tap(PLUGIN_NAME, expr => {
386
438
  /**
387
439
  * this is needed in case there is a recursion in the DefinePlugin
388
440
  * to prevent an endless recursion
@@ -401,6 +453,7 @@ class DefinePlugin {
401
453
  compilation.valueCacheVersions,
402
454
  key,
403
455
  runtimeTemplate,
456
+ logger,
404
457
  null
405
458
  )
406
459
  );
@@ -408,21 +461,28 @@ class DefinePlugin {
408
461
  res.setRange(expr.range);
409
462
  return res;
410
463
  });
411
- parser.hooks.expression.for(key).tap("DefinePlugin", expr => {
464
+ parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
412
465
  addValueDependency(originalKey);
413
- const strCode = toCode(
466
+ let strCode = toCode(
414
467
  code,
415
468
  parser,
416
469
  compilation.valueCacheVersions,
417
470
  originalKey,
418
471
  runtimeTemplate,
419
- !parser.isAsiPosition(expr.range[0])
472
+ logger,
473
+ !parser.isAsiPosition(expr.range[0]),
474
+ parser.destructuringAssignmentPropertiesFor(expr)
420
475
  );
421
- if (/__webpack_require__\s*(!?\.)/.test(strCode)) {
476
+
477
+ if (parser.scope.inShorthand) {
478
+ strCode = parser.scope.inShorthand + ":" + strCode;
479
+ }
480
+
481
+ if (WEBPACK_REQUIRE_FUNCTION_REGEXP.test(strCode)) {
422
482
  return toConstantDependency(parser, strCode, [
423
483
  RuntimeGlobals.require
424
484
  ])(expr);
425
- } else if (/__webpack_require__/.test(strCode)) {
485
+ } else if (WEBPACK_REQUIRE_IDENTIFIER_REGEXP.test(strCode)) {
426
486
  return toConstantDependency(parser, strCode, [
427
487
  RuntimeGlobals.requireScope
428
488
  ])(expr);
@@ -431,7 +491,7 @@ class DefinePlugin {
431
491
  }
432
492
  });
433
493
  }
434
- parser.hooks.evaluateTypeof.for(key).tap("DefinePlugin", expr => {
494
+ parser.hooks.evaluateTypeof.for(key).tap(PLUGIN_NAME, expr => {
435
495
  /**
436
496
  * this is needed in case there is a recursion in the DefinePlugin
437
497
  * to prevent an endless recursion
@@ -449,6 +509,7 @@ class DefinePlugin {
449
509
  compilation.valueCacheVersions,
450
510
  originalKey,
451
511
  runtimeTemplate,
512
+ logger,
452
513
  null
453
514
  );
454
515
  const typeofCode = isTypeof
@@ -459,7 +520,7 @@ class DefinePlugin {
459
520
  res.setRange(expr.range);
460
521
  return res;
461
522
  });
462
- parser.hooks.typeof.for(key).tap("DefinePlugin", expr => {
523
+ parser.hooks.typeof.for(key).tap(PLUGIN_NAME, expr => {
463
524
  addValueDependency(originalKey);
464
525
  const codeCode = toCode(
465
526
  code,
@@ -467,6 +528,7 @@ class DefinePlugin {
467
528
  compilation.valueCacheVersions,
468
529
  originalKey,
469
530
  runtimeTemplate,
531
+ logger,
470
532
  null
471
533
  );
472
534
  const typeofCode = isTypeof
@@ -488,41 +550,45 @@ class DefinePlugin {
488
550
  * @returns {void}
489
551
  */
490
552
  const applyObjectDefine = (key, obj) => {
491
- parser.hooks.canRename.for(key).tap("DefinePlugin", () => {
553
+ parser.hooks.canRename.for(key).tap(PLUGIN_NAME, () => {
492
554
  addValueDependency(key);
493
555
  return true;
494
556
  });
495
- parser.hooks.evaluateIdentifier
496
- .for(key)
497
- .tap("DefinePlugin", expr => {
498
- addValueDependency(key);
499
- return new BasicEvaluatedExpression()
500
- .setTruthy()
501
- .setSideEffects(false)
502
- .setRange(expr.range);
503
- });
557
+ parser.hooks.evaluateIdentifier.for(key).tap(PLUGIN_NAME, expr => {
558
+ addValueDependency(key);
559
+ return new BasicEvaluatedExpression()
560
+ .setTruthy()
561
+ .setSideEffects(false)
562
+ .setRange(expr.range);
563
+ });
504
564
  parser.hooks.evaluateTypeof
505
565
  .for(key)
506
566
  .tap(
507
- "DefinePlugin",
567
+ PLUGIN_NAME,
508
568
  withValueDependency(key, evaluateToString("object"))
509
569
  );
510
- parser.hooks.expression.for(key).tap("DefinePlugin", expr => {
570
+ parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
511
571
  addValueDependency(key);
512
- const strCode = stringifyObj(
572
+ let strCode = stringifyObj(
513
573
  obj,
514
574
  parser,
515
575
  compilation.valueCacheVersions,
516
576
  key,
517
577
  runtimeTemplate,
518
- !parser.isAsiPosition(expr.range[0])
578
+ logger,
579
+ !parser.isAsiPosition(expr.range[0]),
580
+ parser.destructuringAssignmentPropertiesFor(expr)
519
581
  );
520
582
 
521
- if (/__webpack_require__\s*(!?\.)/.test(strCode)) {
583
+ if (parser.scope.inShorthand) {
584
+ strCode = parser.scope.inShorthand + ":" + strCode;
585
+ }
586
+
587
+ if (WEBPACK_REQUIRE_FUNCTION_REGEXP.test(strCode)) {
522
588
  return toConstantDependency(parser, strCode, [
523
589
  RuntimeGlobals.require
524
590
  ])(expr);
525
- } else if (/__webpack_require__/.test(strCode)) {
591
+ } else if (WEBPACK_REQUIRE_IDENTIFIER_REGEXP.test(strCode)) {
526
592
  return toConstantDependency(parser, strCode, [
527
593
  RuntimeGlobals.requireScope
528
594
  ])(expr);
@@ -533,7 +599,7 @@ class DefinePlugin {
533
599
  parser.hooks.typeof
534
600
  .for(key)
535
601
  .tap(
536
- "DefinePlugin",
602
+ PLUGIN_NAME,
537
603
  withValueDependency(
538
604
  key,
539
605
  toConstantDependency(parser, JSON.stringify("object"))
@@ -545,14 +611,14 @@ class DefinePlugin {
545
611
  };
546
612
 
547
613
  normalModuleFactory.hooks.parser
548
- .for("javascript/auto")
549
- .tap("DefinePlugin", handler);
614
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
615
+ .tap(PLUGIN_NAME, handler);
550
616
  normalModuleFactory.hooks.parser
551
- .for("javascript/dynamic")
552
- .tap("DefinePlugin", handler);
617
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
618
+ .tap(PLUGIN_NAME, handler);
553
619
  normalModuleFactory.hooks.parser
554
- .for("javascript/esm")
555
- .tap("DefinePlugin", handler);
620
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
621
+ .tap(PLUGIN_NAME, handler);
556
622
 
557
623
  /**
558
624
  * Walk definitions
@@ -571,7 +637,7 @@ class DefinePlugin {
571
637
  compilation.valueCacheVersions.set(name, version);
572
638
  } else if (oldVersion !== version) {
573
639
  const warning = new WebpackError(
574
- `DefinePlugin\nConflicting values for '${prefix + key}'`
640
+ `${PLUGIN_NAME}\nConflicting values for '${prefix + key}'`
575
641
  );
576
642
  warning.details = `'${oldVersion}' !== '${version}'`;
577
643
  warning.hideStack = true;
@@ -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");
@@ -29,6 +30,8 @@ const makeSerializable = require("./util/makeSerializable");
29
30
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
30
31
  /** @typedef {import("./WebpackError")} WebpackError */
31
32
  /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
33
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
34
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
35
  /** @typedef {import("./util/Hash")} Hash */
33
36
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
34
37
 
@@ -39,8 +42,15 @@ const RUNTIME_REQUIREMENTS = new Set([
39
42
  ]);
40
43
 
41
44
  class DelegatedModule extends Module {
45
+ /**
46
+ * @param {string} sourceRequest source request
47
+ * @param {TODO} data data
48
+ * @param {"require" | "object"} type type
49
+ * @param {string} userRequest user request
50
+ * @param {string | Module} originalRequest original request
51
+ */
42
52
  constructor(sourceRequest, data, type, userRequest, originalRequest) {
43
- super("javascript/dynamic", null);
53
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
44
54
 
45
55
  // Info from Factory
46
56
  this.sourceRequest = sourceRequest;
@@ -48,7 +58,7 @@ class DelegatedModule extends Module {
48
58
  this.delegationType = type;
49
59
  this.userRequest = userRequest;
50
60
  this.originalRequest = originalRequest;
51
- /** @type {ManifestModuleData} */
61
+ /** @type {ManifestModuleData | undefined} */
52
62
  this.delegateData = data;
53
63
 
54
64
  // Build info
@@ -107,7 +117,8 @@ class DelegatedModule extends Module {
107
117
  * @returns {void}
108
118
  */
109
119
  build(options, compilation, resolver, fs, callback) {
110
- this.buildMeta = { ...this.delegateData.buildMeta };
120
+ const delegateData = /** @type {ManifestModuleData} */ (this.delegateData);
121
+ this.buildMeta = { ...delegateData.buildMeta };
111
122
  this.buildInfo = {};
112
123
  this.dependencies.length = 0;
113
124
  this.delegatedSourceDependency = new DelegatedSourceDependency(
@@ -115,7 +126,7 @@ class DelegatedModule extends Module {
115
126
  );
116
127
  this.addDependency(this.delegatedSourceDependency);
117
128
  this.addDependency(
118
- new StaticExportsDependency(this.delegateData.exports || true, false)
129
+ new StaticExportsDependency(delegateData.exports || true, false)
119
130
  );
120
131
  callback();
121
132
  }
@@ -185,6 +196,9 @@ class DelegatedModule extends Module {
185
196
  super.updateHash(hash, context);
186
197
  }
187
198
 
199
+ /**
200
+ * @param {ObjectSerializerContext} context context
201
+ */
188
202
  serialize(context) {
189
203
  const { write } = context;
190
204
  // constructor
@@ -196,6 +210,10 @@ class DelegatedModule extends Module {
196
210
  super.serialize(context);
197
211
  }
198
212
 
213
+ /**
214
+ * @param {ObjectDeserializerContext} context context\
215
+ * @returns {DelegatedModule} DelegatedModule
216
+ */
199
217
  static deserialize(context) {
200
218
  const { read } = context;
201
219
  const obj = new DelegatedModule(
@@ -7,6 +7,8 @@
7
7
 
8
8
  const DelegatedModule = require("./DelegatedModule");
9
9
 
10
+ /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
11
+
10
12
  // options.source
11
13
  // options.type
12
14
  // options.context
@@ -20,6 +22,10 @@ class DelegatedModuleFactoryPlugin {
20
22
  options.extensions = options.extensions || ["", ".js", ".json", ".wasm"];
21
23
  }
22
24
 
25
+ /**
26
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
27
+ * @returns {void}
28
+ */
23
29
  apply(normalModuleFactory) {
24
30
  const scope = this.options.scope;
25
31
  if (scope) {
@@ -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
 
@@ -88,11 +98,17 @@ class DependenciesBlock {
88
98
  }
89
99
  }
90
100
 
101
+ /**
102
+ * @param {ObjectSerializerContext} context context
103
+ */
91
104
  serialize({ write }) {
92
105
  write(this.dependencies);
93
106
  write(this.blocks);
94
107
  }
95
108
 
109
+ /**
110
+ * @param {ObjectDeserializerContext} context context
111
+ */
96
112
  deserialize({ read }) {
97
113
  this.dependencies = read();
98
114
  this.blocks = read();
package/lib/Dependency.js CHANGED
@@ -17,6 +17,8 @@ const memoize = require("./util/memoize");
17
17
  /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
18
18
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
19
19
  /** @typedef {import("./WebpackError")} WebpackError */
20
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
22
  /** @typedef {import("./util/Hash")} Hash */
21
23
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
22
24
 
@@ -87,9 +89,9 @@ const getIgnoredModule = memoize(() => {
87
89
 
88
90
  class Dependency {
89
91
  constructor() {
90
- /** @type {Module} */
92
+ /** @type {Module | undefined} */
91
93
  this._parentModule = undefined;
92
- /** @type {DependenciesBlock} */
94
+ /** @type {DependenciesBlock | undefined} */
93
95
  this._parentDependenciesBlock = undefined;
94
96
  /** @type {number} */
95
97
  this._parentDependenciesBlockIndex = -1;
@@ -172,6 +174,12 @@ class Dependency {
172
174
  this._loc = loc;
173
175
  }
174
176
 
177
+ /**
178
+ * @param {number} startLine start line
179
+ * @param {number} startColumn start column
180
+ * @param {number} endLine end line
181
+ * @param {number} endColumn end column
182
+ */
175
183
  setLoc(startLine, startColumn, endLine, endColumn) {
176
184
  this._locSL = startLine;
177
185
  this._locSC = startColumn;
@@ -245,7 +253,7 @@ class Dependency {
245
253
  /**
246
254
  * Returns warnings
247
255
  * @param {ModuleGraph} moduleGraph module graph
248
- * @returns {WebpackError[]} warnings
256
+ * @returns {WebpackError[] | null | undefined} warnings
249
257
  */
250
258
  getWarnings(moduleGraph) {
251
259
  return null;
@@ -254,7 +262,7 @@ class Dependency {
254
262
  /**
255
263
  * Returns errors
256
264
  * @param {ModuleGraph} moduleGraph module graph
257
- * @returns {WebpackError[]} errors
265
+ * @returns {WebpackError[] | null | undefined} errors
258
266
  */
259
267
  getErrors(moduleGraph) {
260
268
  return null;
@@ -286,12 +294,15 @@ class Dependency {
286
294
 
287
295
  /**
288
296
  * @param {string} context context directory
289
- * @returns {Module} a module
297
+ * @returns {Module | null} a module
290
298
  */
291
299
  createIgnoredModule(context) {
292
300
  return getIgnoredModule();
293
301
  }
294
302
 
303
+ /**
304
+ * @param {ObjectSerializerContext} context context
305
+ */
295
306
  serialize({ write }) {
296
307
  write(this.weak);
297
308
  write(this.optional);
@@ -303,6 +314,9 @@ class Dependency {
303
314
  write(this._locN);
304
315
  }
305
316
 
317
+ /**
318
+ * @param {ObjectDeserializerContext} context context
319
+ */
306
320
  deserialize({ read }) {
307
321
  this.weak = read();
308
322
  this.optional = read();
@@ -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);