webpack 5.76.1 → 5.88.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.

Potentially problematic release.


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

Files changed (436) 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 +4 -0
  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 +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  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/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -7,17 +7,28 @@
7
7
 
8
8
  const util = require("util");
9
9
 
10
+ /** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptions */
11
+ /** @typedef {import("../../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
10
12
  /** @typedef {import("../../declarations/WebpackOptions").EntryStatic} EntryStatic */
11
13
  /** @typedef {import("../../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
14
+ /** @typedef {import("../../declarations/WebpackOptions").Externals} Externals */
12
15
  /** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
13
16
  /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
17
+ /** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptionsNormalized */
14
18
  /** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunk} OptimizationRuntimeChunk */
15
19
  /** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunkNormalized} OptimizationRuntimeChunkNormalized */
16
20
  /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
21
+ /** @typedef {import("../../declarations/WebpackOptions").Plugins} Plugins */
17
22
  /** @typedef {import("../../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
18
23
  /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
24
+ /** @typedef {import("../Entrypoint")} Entrypoint */
19
25
 
20
26
  const handledDeprecatedNoEmitOnErrors = util.deprecate(
27
+ /**
28
+ * @param {boolean} noEmitOnErrors no emit on errors
29
+ * @param {boolean | undefined} emitOnErrors emit on errors
30
+ * @returns {boolean} emit on errors
31
+ */
21
32
  (noEmitOnErrors, emitOnErrors) => {
22
33
  if (emitOnErrors !== undefined && !noEmitOnErrors === !emitOnErrors) {
23
34
  throw new Error(
@@ -117,45 +128,51 @@ const getNormalizedWebpackOptions = config => {
117
128
  return {
118
129
  amd: config.amd,
119
130
  bail: config.bail,
120
- cache: optionalNestedConfig(config.cache, cache => {
121
- if (cache === false) return false;
122
- if (cache === true) {
123
- return {
124
- type: "memory",
125
- maxGenerations: undefined
126
- };
127
- }
128
- switch (cache.type) {
129
- case "filesystem":
130
- return {
131
- type: "filesystem",
132
- allowCollectingMemory: cache.allowCollectingMemory,
133
- maxMemoryGenerations: cache.maxMemoryGenerations,
134
- maxAge: cache.maxAge,
135
- profile: cache.profile,
136
- buildDependencies: cloneObject(cache.buildDependencies),
137
- cacheDirectory: cache.cacheDirectory,
138
- cacheLocation: cache.cacheLocation,
139
- hashAlgorithm: cache.hashAlgorithm,
140
- compression: cache.compression,
141
- idleTimeout: cache.idleTimeout,
142
- idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
143
- idleTimeoutAfterLargeChanges: cache.idleTimeoutAfterLargeChanges,
144
- name: cache.name,
145
- store: cache.store,
146
- version: cache.version
147
- };
148
- case undefined:
149
- case "memory":
150
- return {
151
- type: "memory",
152
- maxGenerations: cache.maxGenerations
153
- };
154
- default:
155
- // @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
156
- throw new Error(`Not implemented cache.type ${cache.type}`);
157
- }
158
- }),
131
+ cache:
132
+ /** @type {NonNullable<CacheOptions>} */
133
+ (
134
+ optionalNestedConfig(config.cache, cache => {
135
+ if (cache === false) return false;
136
+ if (cache === true) {
137
+ return {
138
+ type: "memory",
139
+ maxGenerations: undefined
140
+ };
141
+ }
142
+ switch (cache.type) {
143
+ case "filesystem":
144
+ return {
145
+ type: "filesystem",
146
+ allowCollectingMemory: cache.allowCollectingMemory,
147
+ maxMemoryGenerations: cache.maxMemoryGenerations,
148
+ maxAge: cache.maxAge,
149
+ profile: cache.profile,
150
+ buildDependencies: cloneObject(cache.buildDependencies),
151
+ cacheDirectory: cache.cacheDirectory,
152
+ cacheLocation: cache.cacheLocation,
153
+ hashAlgorithm: cache.hashAlgorithm,
154
+ compression: cache.compression,
155
+ idleTimeout: cache.idleTimeout,
156
+ idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
157
+ idleTimeoutAfterLargeChanges:
158
+ cache.idleTimeoutAfterLargeChanges,
159
+ name: cache.name,
160
+ store: cache.store,
161
+ version: cache.version,
162
+ readonly: cache.readonly
163
+ };
164
+ case undefined:
165
+ case "memory":
166
+ return {
167
+ type: "memory",
168
+ maxGenerations: cache.maxGenerations
169
+ };
170
+ default:
171
+ // @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
172
+ throw new Error(`Not implemented cache.type ${cache.type}`);
173
+ }
174
+ })
175
+ ),
159
176
  context: config.context,
160
177
  dependencies: config.dependencies,
161
178
  devServer: optionalNestedConfig(config.devServer, devServer => ({
@@ -184,7 +201,7 @@ const getNormalizedWebpackOptions = config => {
184
201
  options === true ? {} : options
185
202
  )
186
203
  })),
187
- externals: config.externals,
204
+ externals: /** @type {NonNullable<Externals>} */ (config.externals),
188
205
  externalsPresets: cloneObject(config.externalsPresets),
189
206
  externalsType: config.externalsType,
190
207
  ignoreWarnings: config.ignoreWarnings
@@ -215,32 +232,36 @@ const getNormalizedWebpackOptions = config => {
215
232
  infrastructureLogging: cloneObject(config.infrastructureLogging),
216
233
  loader: cloneObject(config.loader),
217
234
  mode: config.mode,
218
- module: nestedConfig(config.module, module => ({
219
- noParse: module.noParse,
220
- unsafeCache: module.unsafeCache,
221
- parser: keyedNestedConfig(module.parser, cloneObject, {
222
- javascript: parserOptions => ({
223
- unknownContextRequest: module.unknownContextRequest,
224
- unknownContextRegExp: module.unknownContextRegExp,
225
- unknownContextRecursive: module.unknownContextRecursive,
226
- unknownContextCritical: module.unknownContextCritical,
227
- exprContextRequest: module.exprContextRequest,
228
- exprContextRegExp: module.exprContextRegExp,
229
- exprContextRecursive: module.exprContextRecursive,
230
- exprContextCritical: module.exprContextCritical,
231
- wrappedContextRegExp: module.wrappedContextRegExp,
232
- wrappedContextRecursive: module.wrappedContextRecursive,
233
- wrappedContextCritical: module.wrappedContextCritical,
234
- // TODO webpack 6 remove
235
- strictExportPresence: module.strictExportPresence,
236
- strictThisContextOnImports: module.strictThisContextOnImports,
237
- ...parserOptions
238
- })
239
- }),
240
- generator: cloneObject(module.generator),
241
- defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
242
- rules: nestedArray(module.rules, r => [...r])
243
- })),
235
+ module:
236
+ /** @type {ModuleOptionsNormalized} */
237
+ (
238
+ nestedConfig(config.module, module => ({
239
+ noParse: module.noParse,
240
+ unsafeCache: module.unsafeCache,
241
+ parser: keyedNestedConfig(module.parser, cloneObject, {
242
+ javascript: parserOptions => ({
243
+ unknownContextRequest: module.unknownContextRequest,
244
+ unknownContextRegExp: module.unknownContextRegExp,
245
+ unknownContextRecursive: module.unknownContextRecursive,
246
+ unknownContextCritical: module.unknownContextCritical,
247
+ exprContextRequest: module.exprContextRequest,
248
+ exprContextRegExp: module.exprContextRegExp,
249
+ exprContextRecursive: module.exprContextRecursive,
250
+ exprContextCritical: module.exprContextCritical,
251
+ wrappedContextRegExp: module.wrappedContextRegExp,
252
+ wrappedContextRecursive: module.wrappedContextRecursive,
253
+ wrappedContextCritical: module.wrappedContextCritical,
254
+ // TODO webpack 6 remove
255
+ strictExportPresence: module.strictExportPresence,
256
+ strictThisContextOnImports: module.strictThisContextOnImports,
257
+ ...parserOptions
258
+ })
259
+ }),
260
+ generator: cloneObject(module.generator),
261
+ defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
262
+ rules: nestedArray(module.rules, r => [...r])
263
+ }))
264
+ ),
244
265
  name: config.name,
245
266
  node: nestedConfig(
246
267
  config.node,
@@ -327,6 +348,7 @@ const getNormalizedWebpackOptions = config => {
327
348
  hotUpdateChunkFilename: output.hotUpdateChunkFilename,
328
349
  hotUpdateGlobal: output.hotUpdateGlobal,
329
350
  hotUpdateMainFilename: output.hotUpdateMainFilename,
351
+ ignoreBrowserWarnings: output.ignoreBrowserWarnings,
330
352
  iife: output.iife,
331
353
  importFunctionName: output.importFunctionName,
332
354
  importMetaName: output.importMetaName,
@@ -340,6 +362,10 @@ const getNormalizedWebpackOptions = config => {
340
362
  output.auxiliaryComment !== undefined
341
363
  ? output.auxiliaryComment
342
364
  : libraryBase.auxiliaryComment,
365
+ amdContainer:
366
+ output.amdContainer !== undefined
367
+ ? output.amdContainer
368
+ : libraryBase.amdContainer,
343
369
  export:
344
370
  output.libraryExport !== undefined
345
371
  ? output.libraryExport
@@ -369,6 +395,7 @@ const getNormalizedWebpackOptions = config => {
369
395
  uniqueName: output.uniqueName,
370
396
  wasmLoading: output.wasmLoading,
371
397
  webassemblyModuleFilename: output.webassemblyModuleFilename,
398
+ workerPublicPath: output.workerPublicPath,
372
399
  workerChunkLoading: output.workerChunkLoading,
373
400
  workerWasmLoading: output.workerWasmLoading
374
401
  };
@@ -381,7 +408,7 @@ const getNormalizedWebpackOptions = config => {
381
408
  ...performance
382
409
  };
383
410
  }),
384
- plugins: nestedArray(config.plugins, p => [...p]),
411
+ plugins: /** @type {Plugins} */ (nestedArray(config.plugins, p => [...p])),
385
412
  profile: config.profile,
386
413
  recordsInputPath:
387
414
  config.recordsInputPath !== undefined
@@ -482,8 +509,11 @@ const getNormalizedEntryStatic = entry => {
482
509
  } else {
483
510
  result[key] = {
484
511
  import:
485
- value.import &&
486
- (Array.isArray(value.import) ? value.import : [value.import]),
512
+ /** @type {EntryDescriptionNormalized["import"]} */
513
+ (
514
+ value.import &&
515
+ (Array.isArray(value.import) ? value.import : [value.import])
516
+ ),
487
517
  filename: value.filename,
488
518
  layer: value.layer,
489
519
  runtime: value.runtime,
@@ -493,8 +523,13 @@ const getNormalizedEntryStatic = entry => {
493
523
  asyncChunks: value.asyncChunks,
494
524
  wasmLoading: value.wasmLoading,
495
525
  dependOn:
496
- value.dependOn &&
497
- (Array.isArray(value.dependOn) ? value.dependOn : [value.dependOn]),
526
+ /** @type {EntryDescriptionNormalized["dependOn"]} */
527
+ (
528
+ value.dependOn &&
529
+ (Array.isArray(value.dependOn)
530
+ ? value.dependOn
531
+ : [value.dependOn])
532
+ ),
498
533
  library: value.library
499
534
  };
500
535
  }
@@ -516,6 +551,10 @@ const getNormalizedOptimizationRuntimeChunk = runtimeChunk => {
516
551
  }
517
552
  if (runtimeChunk === true || runtimeChunk === "multiple") {
518
553
  return {
554
+ /**
555
+ * @param {Entrypoint} entrypoint entrypoint
556
+ * @returns {string} runtime chunk name
557
+ */
519
558
  name: entrypoint => `runtime~${entrypoint.name}`
520
559
  };
521
560
  }
@@ -64,20 +64,39 @@ const getDefaultTarget = context => {
64
64
  */
65
65
 
66
66
  ///** @typedef {PlatformTargetProperties | ApiTargetProperties | EcmaTargetProperties | PlatformTargetProperties & ApiTargetProperties | PlatformTargetProperties & EcmaTargetProperties | ApiTargetProperties & EcmaTargetProperties} TargetProperties */
67
- /** @template T @typedef {{ [P in keyof T]?: never }} Never<T> */
68
- /** @template A @template B @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A,B> */
67
+
68
+ /**
69
+ * @template T
70
+ * @typedef {{ [P in keyof T]?: never }} Never<T>
71
+ */
72
+
73
+ /**
74
+ * @template A
75
+ * @template B
76
+ * @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A, B>
77
+ */
78
+
69
79
  /** @typedef {Mix<Mix<PlatformTargetProperties, ElectronContextTargetProperties>, Mix<ApiTargetProperties, EcmaTargetProperties>>} TargetProperties */
70
80
 
81
+ /**
82
+ * @param {string} major major version
83
+ * @param {string | undefined} minor minor version
84
+ * @returns {(vMajor: number, vMinor?: number) => boolean | undefined} check if version is greater or equal
85
+ */
71
86
  const versionDependent = (major, minor) => {
72
- if (!major) return () => /** @type {undefined} */ (undefined);
73
- major = +major;
74
- minor = minor ? +minor : 0;
87
+ if (!major) {
88
+ return () => /** @type {undefined} */ (undefined);
89
+ }
90
+ /** @type {number} */
91
+ const nMajor = +major;
92
+ /** @type {number} */
93
+ const nMinor = minor ? +minor : 0;
75
94
  return (vMajor, vMinor = 0) => {
76
- return major > vMajor || (major === vMajor && minor >= vMinor);
95
+ return nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
77
96
  };
78
97
  };
79
98
 
80
- /** @type {[string, string, RegExp, (...args: string[]) => TargetProperties | false][]} */
99
+ /** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
81
100
  const TARGETS = [
82
101
  [
83
102
  "browserslist / browserslist:env / browserslist:query / browserslist:path-to-config / browserslist:path-to-config:env",
@@ -95,6 +114,7 @@ See https://github.com/browserslist/browserslist#queries for possible ways to pr
95
114
  The recommended way is to add a 'browserslist' key to your package.json and list supported browsers (resp. node.js versions).
96
115
  You can also more options via the 'target' option: 'browserslist' / 'browserslist:env' / 'browserslist:query' / 'browserslist:path-to-config' / 'browserslist:path-to-config:env'`);
97
116
  }
117
+
98
118
  return browserslistTargetHandler.resolve(browsers);
99
119
  }
100
120
  ],
@@ -294,7 +314,7 @@ const getTargetProperties = (target, context) => {
294
314
  if (match) {
295
315
  const [, ...args] = match;
296
316
  const result = handler(...args, context);
297
- if (result) return result;
317
+ if (result) return /** @type {TargetProperties} */ (result);
298
318
  }
299
319
  }
300
320
  throw new Error(
@@ -304,13 +324,19 @@ const getTargetProperties = (target, context) => {
304
324
  );
305
325
  };
306
326
 
327
+ /**
328
+ * @param {TargetProperties[]} targetProperties array of target properties
329
+ * @returns {TargetProperties} merged target properties
330
+ */
307
331
  const mergeTargetProperties = targetProperties => {
332
+ /** @type {Set<keyof TargetProperties>} */
308
333
  const keys = new Set();
309
334
  for (const tp of targetProperties) {
310
335
  for (const key of Object.keys(tp)) {
311
- keys.add(key);
336
+ keys.add(/** @type {keyof TargetProperties} */ (key));
312
337
  }
313
338
  }
339
+ /** @type {Object} */
314
340
  const result = {};
315
341
  for (const key of keys) {
316
342
  let hasTrue = false;
@@ -327,7 +353,8 @@ const mergeTargetProperties = targetProperties => {
327
353
  }
328
354
  }
329
355
  if (hasTrue || hasFalse)
330
- result[key] = hasFalse && hasTrue ? null : hasTrue ? true : false;
356
+ /** @type {TargetProperties} */
357
+ (result)[key] = hasFalse && hasTrue ? null : hasTrue ? true : false;
331
358
  }
332
359
  return /** @type {TargetProperties} */ (result);
333
360
  };
@@ -8,6 +8,7 @@
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
10
10
  const Module = require("../Module");
11
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("../ModuleTypeConstants");
11
12
  const RuntimeGlobals = require("../RuntimeGlobals");
12
13
  const Template = require("../Template");
13
14
  const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
@@ -25,6 +26,8 @@ const ContainerExposedDependency = require("./ContainerExposedDependency");
25
26
  /** @typedef {import("../RequestShortener")} RequestShortener */
26
27
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
27
28
  /** @typedef {import("../WebpackError")} WebpackError */
29
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
30
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
28
31
  /** @typedef {import("../util/Hash")} Hash */
29
32
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
30
33
  /** @typedef {import("./ContainerEntryDependency")} ContainerEntryDependency */
@@ -44,7 +47,7 @@ class ContainerEntryModule extends Module {
44
47
  * @param {string} shareScope name of the share scope
45
48
  */
46
49
  constructor(name, exposes, shareScope) {
47
- super("javascript/dynamic", null);
50
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
48
51
  this._name = name;
49
52
  this._exposes = exposes;
50
53
  this._shareScope = shareScope;
@@ -259,6 +262,9 @@ class ContainerEntryModule extends Module {
259
262
  return 42;
260
263
  }
261
264
 
265
+ /**
266
+ * @param {ObjectSerializerContext} context context
267
+ */
262
268
  serialize(context) {
263
269
  const { write } = context;
264
270
  write(this._name);
@@ -267,6 +273,10 @@ class ContainerEntryModule extends Module {
267
273
  super.serialize(context);
268
274
  }
269
275
 
276
+ /**
277
+ * @param {ObjectDeserializerContext} context context
278
+ * @returns {ContainerEntryModule} deserialized container entry module
279
+ */
270
280
  static deserialize(context) {
271
281
  const { read } = context;
272
282
  const obj = new ContainerEntryModule(read(), read(), read());
@@ -15,7 +15,7 @@ const ContainerEntryModule = require("./ContainerEntryModule");
15
15
  module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
18
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create({ dependencies: [dependency] }, callback) {
@@ -8,6 +8,9 @@
8
8
  const ModuleDependency = require("../dependencies/ModuleDependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
+
11
14
  class ContainerExposedDependency extends ModuleDependency {
12
15
  /**
13
16
  * @param {string} exposedName public name
@@ -33,11 +36,17 @@ class ContainerExposedDependency extends ModuleDependency {
33
36
  return `exposed dependency ${this.exposedName}=${this.request}`;
34
37
  }
35
38
 
39
+ /**
40
+ * @param {ObjectSerializerContext} context context
41
+ */
36
42
  serialize(context) {
37
43
  context.write(this.exposedName);
38
44
  super.serialize(context);
39
45
  }
40
46
 
47
+ /**
48
+ * @param {ObjectDeserializerContext} context context
49
+ */
41
50
  deserialize(context) {
42
51
  this.exposedName = context.read();
43
52
  super.deserialize(context);
@@ -64,7 +64,9 @@ class ContainerPlugin {
64
64
  const { name, exposes, shareScope, filename, library, runtime } =
65
65
  this._options;
66
66
 
67
- compiler.options.output.enabledLibraryTypes.push(library.type);
67
+ if (!compiler.options.output.enabledLibraryTypes.includes(library.type)) {
68
+ compiler.options.output.enabledLibraryTypes.push(library.type);
69
+ }
68
70
 
69
71
  compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
70
72
  const dep = new ContainerEntryDependency(name, exposes, shareScope);
@@ -8,7 +8,13 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
+
11
14
  class FallbackDependency extends Dependency {
15
+ /**
16
+ * @param {string[]} requests requests
17
+ */
12
18
  constructor(requests) {
13
19
  super();
14
20
  this.requests = requests;
@@ -29,12 +35,19 @@ class FallbackDependency extends Dependency {
29
35
  return "esm";
30
36
  }
31
37
 
38
+ /**
39
+ * @param {ObjectSerializerContext} context context
40
+ */
32
41
  serialize(context) {
33
42
  const { write } = context;
34
43
  write(this.requests);
35
44
  super.serialize(context);
36
45
  }
37
46
 
47
+ /**
48
+ * @param {ObjectDeserializerContext} context context
49
+ * @returns {FallbackDependency} deserialize fallback dependency
50
+ */
38
51
  static deserialize(context) {
39
52
  const { read } = context;
40
53
  const obj = new FallbackDependency(read());
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class FallbackItemDependency extends ModuleDependency {
12
+ /**
13
+ * @param {string} request request
14
+ */
12
15
  constructor(request) {
13
16
  super(request);
14
17
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("../Module");
10
+ const { WEBPACK_MODULE_TYPE_FALLBACK } = require("../ModuleTypeConstants");
10
11
  const RuntimeGlobals = require("../RuntimeGlobals");
11
12
  const Template = require("../Template");
12
13
  const makeSerializable = require("../util/makeSerializable");
@@ -24,6 +25,8 @@ const FallbackItemDependency = require("./FallbackItemDependency");
24
25
  /** @typedef {import("../RequestShortener")} RequestShortener */
25
26
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
26
27
  /** @typedef {import("../WebpackError")} WebpackError */
28
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
29
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
30
  /** @typedef {import("../util/Hash")} Hash */
28
31
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
29
32
 
@@ -35,7 +38,7 @@ class FallbackModule extends Module {
35
38
  * @param {string[]} requests list of requests to choose one
36
39
  */
37
40
  constructor(requests) {
38
- super("fallback-module");
41
+ super(WEBPACK_MODULE_TYPE_FALLBACK);
39
42
  this.requests = requests;
40
43
  this._identifier = `fallback ${this.requests.join(" ")}`;
41
44
  }
@@ -133,7 +136,7 @@ class FallbackModule extends Module {
133
136
  `var loop = ${runtimeTemplate.basicFunction("next", [
134
137
  "while(i < ids.length) {",
135
138
  Template.indent([
136
- "try { next = __webpack_require__(ids[i++]); } catch(e) { return handleError(e); }",
139
+ `try { next = ${RuntimeGlobals.require}(ids[i++]); } catch(e) { return handleError(e); }`,
137
140
  "if(next) return next.then ? next.then(handleResult, handleError) : handleResult(next);"
138
141
  ]),
139
142
  "}",
@@ -154,12 +157,19 @@ class FallbackModule extends Module {
154
157
  return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS };
155
158
  }
156
159
 
160
+ /**
161
+ * @param {ObjectSerializerContext} context context
162
+ */
157
163
  serialize(context) {
158
164
  const { write } = context;
159
165
  write(this.requests);
160
166
  super.serialize(context);
161
167
  }
162
168
 
169
+ /**
170
+ * @param {ObjectDeserializerContext} context context
171
+ * @returns {FallbackModule} deserialized fallback module
172
+ */
163
173
  static deserialize(context) {
164
174
  const { read } = context;
165
175
  const obj = new FallbackModule(read());
@@ -15,7 +15,7 @@ const FallbackModule = require("./FallbackModule");
15
15
  module.exports = class FallbackModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
18
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create({ dependencies: [dependency] }, callback) {
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("../Module");
10
+ const { WEBPACK_MODULE_TYPE_REMOTE } = require("../ModuleTypeConstants");
10
11
  const RuntimeGlobals = require("../RuntimeGlobals");
11
12
  const makeSerializable = require("../util/makeSerializable");
12
13
  const FallbackDependency = require("./FallbackDependency");
@@ -23,6 +24,8 @@ const RemoteToExternalDependency = require("./RemoteToExternalDependency");
23
24
  /** @typedef {import("../RequestShortener")} RequestShortener */
24
25
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
25
26
  /** @typedef {import("../WebpackError")} WebpackError */
27
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
28
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
26
29
  /** @typedef {import("../util/Hash")} Hash */
27
30
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
28
31
 
@@ -37,7 +40,7 @@ class RemoteModule extends Module {
37
40
  * @param {string} shareScope the used share scope name
38
41
  */
39
42
  constructor(request, externalRequests, internalRequest, shareScope) {
40
- super("remote-module");
43
+ super(WEBPACK_MODULE_TYPE_REMOTE);
41
44
  this.request = request;
42
45
  this.externalRequests = externalRequests;
43
46
  this.internalRequest = internalRequest;
@@ -149,6 +152,9 @@ class RemoteModule extends Module {
149
152
  return { sources, data, runtimeRequirements: RUNTIME_REQUIREMENTS };
150
153
  }
151
154
 
155
+ /**
156
+ * @param {ObjectSerializerContext} context context
157
+ */
152
158
  serialize(context) {
153
159
  const { write } = context;
154
160
  write(this.request);
@@ -158,6 +164,10 @@ class RemoteModule extends Module {
158
164
  super.serialize(context);
159
165
  }
160
166
 
167
+ /**
168
+ * @param {ObjectDeserializerContext} context context
169
+ * @returns {RemoteModule} deserialized module
170
+ */
161
171
  static deserialize(context) {
162
172
  const { read } = context;
163
173
  const obj = new RemoteModule(read(), read(), read(), read());
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
+ /** @typedef {import("../Chunk")} Chunk */
12
13
  /** @typedef {import("./RemoteModule")} RemoteModule */
13
14
 
14
15
  class RemoteRuntimeModule extends RuntimeModule {
@@ -17,7 +18,7 @@ class RemoteRuntimeModule extends RuntimeModule {
17
18
  }
18
19
 
19
20
  /**
20
- * @returns {string} runtime code
21
+ * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
23
24
  const { compilation, chunkGraph } = this;
@@ -117,7 +118,7 @@ class RemoteRuntimeModule extends RuntimeModule {
117
118
  "module.exports = factory();"
118
119
  ])}`
119
120
  ])};`,
120
- "handleFunction(__webpack_require__, data[2], 0, 0, onExternal, 1);"
121
+ `handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`
121
122
  ])});`
122
123
  ]),
123
124
  "}"
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class RemoteToExternalDependency extends ModuleDependency {
12
+ /**
13
+ * @param {string} request request
14
+ */
12
15
  constructor(request) {
13
16
  super(request);
14
17
  }