webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -5,10 +5,11 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { SyncWaterfallHook } = require("tapable");
8
9
  const {
9
10
  JAVASCRIPT_MODULE_TYPE_AUTO,
10
- JAVASCRIPT_MODULE_TYPE_ESM,
11
- JAVASCRIPT_MODULE_TYPE_DYNAMIC
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
+ JAVASCRIPT_MODULE_TYPE_ESM
12
13
  } = require("./ModuleTypeConstants");
13
14
  const RuntimeGlobals = require("./RuntimeGlobals");
14
15
  const WebpackError = require("./WebpackError");
@@ -24,17 +25,18 @@ const createHash = require("./util/createHash");
24
25
  /** @typedef {import("estree").Expression} Expression */
25
26
  /** @typedef {import("./Compiler")} Compiler */
26
27
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
28
+ /** @typedef {import("./Module").ValueCacheVersion} ValueCacheVersion */
27
29
  /** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
28
30
  /** @typedef {import("./NormalModule")} NormalModule */
29
31
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
30
32
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
31
- /** @typedef {import("./javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
33
+ /** @typedef {import("./javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
32
34
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
33
35
  /** @typedef {import("./logging/Logger").Logger} Logger */
34
- /** @typedef {import("./util/createHash").Algorithm} Algorithm */
36
+ /** @typedef {import("./Compilation")} Compilation */
35
37
 
36
- /** @typedef {null|undefined|RegExp|Function|string|number|boolean|bigint|undefined} CodeValuePrimitive */
37
- /** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive|RuntimeValue>} CodeValue */
38
+ /** @typedef {null | undefined | RegExp | EXPECTED_FUNCTION | string | number | boolean | bigint | undefined} CodeValuePrimitive */
39
+ /** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive | RuntimeValue>} CodeValue */
38
40
 
39
41
  /**
40
42
  * @typedef {object} RuntimeValueOptions
@@ -42,11 +44,10 @@ const createHash = require("./util/createHash");
42
44
  * @property {string[]=} contextDependencies
43
45
  * @property {string[]=} missingDependencies
44
46
  * @property {string[]=} buildDependencies
45
- * @property {string|function(): string=} version
47
+ * @property {string | (() => string)=} version
46
48
  */
47
49
 
48
- /** @typedef {string | Set<string>} ValueCacheVersion */
49
- /** @typedef {function({ module: NormalModule, key: string, readonly version: ValueCacheVersion }): CodeValuePrimitive} GeneratorFn */
50
+ /** @typedef {(value: { module: NormalModule, key: string, readonly version: ValueCacheVersion }) => CodeValuePrimitive} GeneratorFn */
50
51
 
51
52
  class RuntimeValue {
52
53
  /**
@@ -125,19 +126,19 @@ class RuntimeValue {
125
126
  }
126
127
 
127
128
  /**
128
- * @param {Set<DestructuringAssignmentProperty> | undefined} properties properties
129
+ * @param {DestructuringAssignmentProperties | undefined} properties properties
129
130
  * @returns {Set<string> | undefined} used keys
130
131
  */
131
132
  function getObjKeys(properties) {
132
133
  if (!properties) return;
133
- return new Set([...properties].map(p => p.id));
134
+ return new Set([...properties].map((p) => p.id));
134
135
  }
135
136
 
136
137
  /** @typedef {Set<string> | null} ObjKeys */
137
138
  /** @typedef {boolean | undefined | null} AsiSafe */
138
139
 
139
140
  /**
140
- * @param {any[]|{[k: string]: any}} obj obj
141
+ * @param {EXPECTED_ANY[] | {[k: string]: EXPECTED_ANY}} obj obj
141
142
  * @param {JavascriptParser} parser Parser
142
143
  * @param {ValueCacheVersions} valueCacheVersions valueCacheVersions
143
144
  * @param {string} key the defined key
@@ -160,30 +161,28 @@ const stringifyObj = (
160
161
  let code;
161
162
  const arr = Array.isArray(obj);
162
163
  if (arr) {
163
- code = `[${
164
- /** @type {any[]} */ (obj)
165
- .map(code =>
166
- toCode(
167
- code,
168
- parser,
169
- valueCacheVersions,
170
- key,
171
- runtimeTemplate,
172
- logger,
173
- null
174
- )
164
+ code = `[${obj
165
+ .map((code) =>
166
+ toCode(
167
+ code,
168
+ parser,
169
+ valueCacheVersions,
170
+ key,
171
+ runtimeTemplate,
172
+ logger,
173
+ null
175
174
  )
176
- .join(",")
177
- }]`;
175
+ )
176
+ .join(",")}]`;
178
177
  } else {
179
178
  let keys = Object.keys(obj);
180
179
  if (objKeys) {
181
- keys = objKeys.size === 0 ? [] : keys.filter(k => objKeys.has(k));
180
+ keys = objKeys.size === 0 ? [] : keys.filter((k) => objKeys.has(k));
182
181
  }
183
182
  code = `{${keys
184
- .map(key => {
185
- const code = /** @type {{[k: string]: any}} */ (obj)[key];
186
- return `${JSON.stringify(key)}:${toCode(
183
+ .map((key) => {
184
+ const code = obj[key];
185
+ return `${key === "__proto__" ? '["__proto__"]' : JSON.stringify(key)}:${toCode(
187
186
  code,
188
187
  parser,
189
188
  valueCacheVersions,
@@ -288,7 +287,7 @@ const toCode = (
288
287
  * @param {CodeValue} code code
289
288
  * @returns {string | undefined} result
290
289
  */
291
- const toCacheVersion = code => {
290
+ const toCacheVersion = (code) => {
292
291
  if (code === null) {
293
292
  return "null";
294
293
  }
@@ -308,9 +307,12 @@ const toCacheVersion = code => {
308
307
  return `(${code.toString()})`;
309
308
  }
310
309
  if (typeof code === "object") {
311
- const items = Object.keys(code).map(key => ({
310
+ const items = Object.keys(code).map((key) => ({
312
311
  key,
313
- value: toCacheVersion(/** @type {Record<string, any>} */ (code)[key])
312
+ value: toCacheVersion(
313
+ /** @type {Record<string, EXPECTED_ANY>} */
314
+ (code)[key]
315
+ )
314
316
  }));
315
317
  if (items.some(({ value }) => value === undefined)) return;
316
318
  return `{${items.map(({ key, value }) => `${key}: ${value}`).join(", ")}}`;
@@ -330,7 +332,30 @@ const WEBPACK_REQUIRE_FUNCTION_REGEXP = new RegExp(
330
332
  );
331
333
  const WEBPACK_REQUIRE_IDENTIFIER_REGEXP = new RegExp(RuntimeGlobals.require);
332
334
 
335
+ /**
336
+ * @typedef {object} DefinePluginHooks
337
+ * @property {SyncWaterfallHook<[Record<string, CodeValue>]>} definitions
338
+ */
339
+
340
+ /** @type {WeakMap<Compilation, DefinePluginHooks>} */
341
+ const compilationHooksMap = new WeakMap();
342
+
333
343
  class DefinePlugin {
344
+ /**
345
+ * @param {Compilation} compilation the compilation
346
+ * @returns {DefinePluginHooks} the attached hooks
347
+ */
348
+ static getCompilationHooks(compilation) {
349
+ let hooks = compilationHooksMap.get(compilation);
350
+ if (hooks === undefined) {
351
+ hooks = {
352
+ definitions: new SyncWaterfallHook(["definitions"])
353
+ };
354
+ compilationHooksMap.set(compilation, hooks);
355
+ }
356
+ return hooks;
357
+ }
358
+
334
359
  /**
335
360
  * Create a new define plugin
336
361
  * @param {Record<string, CodeValue>} definitions A map of global object definitions
@@ -354,10 +379,26 @@ class DefinePlugin {
354
379
  * @returns {void}
355
380
  */
356
381
  apply(compiler) {
357
- const definitions = this.definitions;
358
382
  compiler.hooks.compilation.tap(
359
383
  PLUGIN_NAME,
360
384
  (compilation, { normalModuleFactory }) => {
385
+ const definitions = this.definitions;
386
+ const hooks = DefinePlugin.getCompilationHooks(compilation);
387
+
388
+ hooks.definitions.tap(PLUGIN_NAME, (previousDefinitions) => ({
389
+ ...previousDefinitions,
390
+ ...definitions
391
+ }));
392
+
393
+ /**
394
+ * @type {Map<string, Set<string>>}
395
+ */
396
+ const finalByNestedKey = new Map();
397
+ /**
398
+ * @type {Map<string, Set<string>>}
399
+ */
400
+ const nestedByFinalKey = new Map();
401
+
361
402
  const logger = compilation.getLogger("webpack.DefinePlugin");
362
403
  compilation.dependencyTemplates.set(
363
404
  ConstDependency,
@@ -365,10 +406,7 @@ class DefinePlugin {
365
406
  );
366
407
  const { runtimeTemplate } = compilation;
367
408
 
368
- const mainHash = createHash(
369
- /** @type {Algorithm} */
370
- (compilation.outputOptions.hashFunction)
371
- );
409
+ const mainHash = createHash(compilation.outputOptions.hashFunction);
372
410
  mainHash.update(
373
411
  /** @type {string} */
374
412
  (compilation.valueCacheVersions.get(VALUE_DEP_MAIN)) || ""
@@ -379,7 +417,8 @@ class DefinePlugin {
379
417
  * @param {JavascriptParser} parser Parser
380
418
  * @returns {void}
381
419
  */
382
- const handler = parser => {
420
+ const handler = (parser) => {
421
+ const hooked = new Set();
383
422
  const mainValue =
384
423
  /** @type {ValueCacheVersion} */
385
424
  (compilation.valueCacheVersions.get(VALUE_DEP_MAIN));
@@ -387,15 +426,16 @@ class DefinePlugin {
387
426
  const buildInfo = /** @type {BuildInfo} */ (
388
427
  parser.state.module.buildInfo
389
428
  );
390
- if (!buildInfo.valueDependencies)
429
+ if (!buildInfo.valueDependencies) {
391
430
  buildInfo.valueDependencies = new Map();
431
+ }
392
432
  buildInfo.valueDependencies.set(VALUE_DEP_MAIN, mainValue);
393
433
  });
394
434
 
395
435
  /**
396
436
  * @param {string} key key
397
437
  */
398
- const addValueDependency = key => {
438
+ const addValueDependency = (key) => {
399
439
  const buildInfo =
400
440
  /** @type {BuildInfo} */
401
441
  (parser.state.module.buildInfo);
@@ -408,10 +448,10 @@ class DefinePlugin {
408
448
  };
409
449
 
410
450
  /**
411
- * @template {Function} T
451
+ * @template T
412
452
  * @param {string} key key
413
- * @param {T} fn fn
414
- * @returns {function(TODO): TODO} result
453
+ * @param {(expression: Expression) => T} fn fn
454
+ * @returns {(expression: Expression) => T} result
415
455
  */
416
456
  const withValueDependency =
417
457
  (key, fn) =>
@@ -468,6 +508,68 @@ class DefinePlugin {
468
508
  return true;
469
509
  });
470
510
  }
511
+ if (prefix === "") {
512
+ const final = splittedKey[splittedKey.length - 1];
513
+ const nestedSet = nestedByFinalKey.get(final);
514
+ if (!nestedSet || nestedSet.size <= 0) return;
515
+ for (const nested of /** @type {Set<string>} */ (nestedSet)) {
516
+ if (nested && !hooked.has(nested)) {
517
+ // only detect the same nested key once
518
+ hooked.add(nested);
519
+ parser.hooks.collectDestructuringAssignmentProperties.tap(
520
+ PLUGIN_NAME,
521
+ (expr) => {
522
+ const nameInfo = parser.getNameForExpression(expr);
523
+ if (nameInfo && nameInfo.name === nested) return true;
524
+ }
525
+ );
526
+ parser.hooks.expression.for(nested).tap(
527
+ {
528
+ name: PLUGIN_NAME,
529
+ // why 100? Ensures it runs after object define
530
+ stage: 100
531
+ },
532
+ (expr) => {
533
+ const destructed =
534
+ parser.destructuringAssignmentPropertiesFor(expr);
535
+ if (destructed === undefined) {
536
+ return;
537
+ }
538
+ /** @type {Record<string, CodeValue>} */
539
+ const obj = Object.create(null);
540
+ const finalSet = finalByNestedKey.get(nested);
541
+ for (const { id } of destructed) {
542
+ const fullKey = `${nested}.${id}`;
543
+ if (
544
+ !finalSet ||
545
+ !finalSet.has(id) ||
546
+ !definitions[fullKey]
547
+ ) {
548
+ return;
549
+ }
550
+ obj[id] = definitions[fullKey];
551
+ }
552
+ let strCode = stringifyObj(
553
+ obj,
554
+ parser,
555
+ compilation.valueCacheVersions,
556
+ key,
557
+ runtimeTemplate,
558
+ logger,
559
+ !parser.isAsiPosition(
560
+ /** @type {Range} */ (expr.range)[0]
561
+ ),
562
+ getObjKeys(destructed)
563
+ );
564
+ if (parser.scope.inShorthand) {
565
+ strCode = `${parser.scope.inShorthand}:${strCode}`;
566
+ }
567
+ return toConstantDependency(parser, strCode)(expr);
568
+ }
569
+ );
570
+ }
571
+ }
572
+ }
471
573
  };
472
574
 
473
575
  /**
@@ -489,7 +591,7 @@ class DefinePlugin {
489
591
  });
490
592
  parser.hooks.evaluateIdentifier
491
593
  .for(key)
492
- .tap(PLUGIN_NAME, expr => {
594
+ .tap(PLUGIN_NAME, (expr) => {
493
595
  /**
494
596
  * this is needed in case there is a recursion in the DefinePlugin
495
597
  * to prevent an endless recursion
@@ -516,7 +618,7 @@ class DefinePlugin {
516
618
  res.setRange(/** @type {Range} */ (expr.range));
517
619
  return res;
518
620
  });
519
- parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
621
+ parser.hooks.expression.for(key).tap(PLUGIN_NAME, (expr) => {
520
622
  addValueDependency(originalKey);
521
623
  let strCode = toCode(
522
624
  code,
@@ -545,7 +647,7 @@ class DefinePlugin {
545
647
  return toConstantDependency(parser, strCode)(expr);
546
648
  });
547
649
  }
548
- parser.hooks.evaluateTypeof.for(key).tap(PLUGIN_NAME, expr => {
650
+ parser.hooks.evaluateTypeof.for(key).tap(PLUGIN_NAME, (expr) => {
549
651
  /**
550
652
  * this is needed in case there is a recursion in the DefinePlugin
551
653
  * to prevent an endless recursion
@@ -572,7 +674,7 @@ class DefinePlugin {
572
674
  res.setRange(/** @type {Range} */ (expr.range));
573
675
  return res;
574
676
  });
575
- parser.hooks.typeof.for(key).tap(PLUGIN_NAME, expr => {
677
+ parser.hooks.typeof.for(key).tap(PLUGIN_NAME, (expr) => {
576
678
  addValueDependency(originalKey);
577
679
  const codeCode = toCode(
578
680
  code,
@@ -604,20 +706,29 @@ class DefinePlugin {
604
706
  addValueDependency(key);
605
707
  return true;
606
708
  });
607
- parser.hooks.evaluateIdentifier.for(key).tap(PLUGIN_NAME, expr => {
608
- addValueDependency(key);
609
- return new BasicEvaluatedExpression()
610
- .setTruthy()
611
- .setSideEffects(false)
612
- .setRange(/** @type {Range} */ (expr.range));
613
- });
709
+ parser.hooks.evaluateIdentifier
710
+ .for(key)
711
+ .tap(PLUGIN_NAME, (expr) => {
712
+ addValueDependency(key);
713
+ return new BasicEvaluatedExpression()
714
+ .setTruthy()
715
+ .setSideEffects(false)
716
+ .setRange(/** @type {Range} */ (expr.range));
717
+ });
614
718
  parser.hooks.evaluateTypeof
615
719
  .for(key)
616
720
  .tap(
617
721
  PLUGIN_NAME,
618
722
  withValueDependency(key, evaluateToString("object"))
619
723
  );
620
- parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
724
+ parser.hooks.collectDestructuringAssignmentProperties.tap(
725
+ PLUGIN_NAME,
726
+ (expr) => {
727
+ const nameInfo = parser.getNameForExpression(expr);
728
+ if (nameInfo && nameInfo.name === key) return true;
729
+ }
730
+ );
731
+ parser.hooks.expression.for(key).tap(PLUGIN_NAME, (expr) => {
621
732
  addValueDependency(key);
622
733
  let strCode = stringifyObj(
623
734
  obj,
@@ -706,14 +817,55 @@ class DefinePlugin {
706
817
  }
707
818
  };
708
819
 
820
+ /**
821
+ * @param {Record<string, CodeValue>} definitions Definitions map
822
+ * @returns {void}
823
+ */
824
+ const walkDefinitionsForKeys = (definitions) => {
825
+ /**
826
+ * @param {Map<string, Set<string>>} map Map
827
+ * @param {string} key key
828
+ * @param {string} value v
829
+ * @returns {void}
830
+ */
831
+ const addToMap = (map, key, value) => {
832
+ if (map.has(key)) {
833
+ /** @type {Set<string>} */
834
+ (map.get(key)).add(value);
835
+ } else {
836
+ map.set(key, new Set([value]));
837
+ }
838
+ };
839
+ for (const key of Object.keys(definitions)) {
840
+ const code = definitions[key];
841
+ if (
842
+ !code ||
843
+ typeof code === "object" ||
844
+ TYPEOF_OPERATOR_REGEXP.test(key)
845
+ ) {
846
+ continue;
847
+ }
848
+ const idx = key.lastIndexOf(".");
849
+ if (idx <= 0 || idx >= key.length - 1) {
850
+ continue;
851
+ }
852
+ const nested = key.slice(0, idx);
853
+ const final = key.slice(idx + 1);
854
+ addToMap(finalByNestedKey, nested, final);
855
+ addToMap(nestedByFinalKey, final, nested);
856
+ }
857
+ };
858
+
859
+ walkDefinitionsForKeys(definitions);
709
860
  walkDefinitionsForValues(definitions, "");
710
861
 
711
862
  compilation.valueCacheVersions.set(
712
863
  VALUE_DEP_MAIN,
713
- /** @type {string} */ (mainHash.digest("hex").slice(0, 8))
864
+ mainHash.digest("hex").slice(0, 8)
714
865
  );
715
866
  }
716
867
  );
717
868
  }
718
869
  }
870
+
719
871
  module.exports = DefinePlugin;
@@ -7,39 +7,49 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
- const { JS_TYPES } = require("./ModuleSourceTypesConstants");
10
+ const {
11
+ JAVASCRIPT_TYPE,
12
+ JAVASCRIPT_TYPES
13
+ } = require("./ModuleSourceTypeConstants");
11
14
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
12
15
  const RuntimeGlobals = require("./RuntimeGlobals");
13
16
  const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
14
17
  const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
15
18
  const makeSerializable = require("./util/makeSerializable");
16
19
 
17
- /** @typedef {import("webpack-sources").Source} Source */
18
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
19
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
20
+ /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
21
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
20
22
  /** @typedef {import("./Compilation")} Compilation */
21
23
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
22
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
23
24
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
24
25
  /** @typedef {import("./LibManifestPlugin").ManifestModuleData} ManifestModuleData */
26
+ /** @typedef {import("./Module").ModuleId} ModuleId */
27
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
28
+ /** @typedef {import("./Module").BuildMeta} BuildMeta */
25
29
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
26
30
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
27
31
  /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
32
+ /** @typedef {import("./Module").LibIdent} LibIdent */
33
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
28
34
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
29
- /** @typedef {import("./Module").SourceContext} SourceContext */
30
35
  /** @typedef {import("./RequestShortener")} RequestShortener */
31
36
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
32
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
33
- /** @typedef {import("./WebpackError")} WebpackError */
34
- /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
35
37
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
36
38
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
39
+ /** @typedef {import("./dependencies/StaticExportsDependency").Exports} Exports */
37
40
  /** @typedef {import("./util/Hash")} Hash */
38
41
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
39
42
 
40
- /** @typedef {string} SourceRequest */
41
- /** @typedef {"require" | "object"} Type */
42
- /** @typedef {TODO} Data */
43
+ /** @typedef {string} DelegatedModuleSourceRequest */
44
+
45
+ /** @typedef {NonNullable<DllReferencePluginOptions["type"]>} DelegatedModuleType */
46
+
47
+ /**
48
+ * @typedef {object} DelegatedModuleData
49
+ * @property {BuildMeta=} buildMeta build meta
50
+ * @property {Exports=} exports exports
51
+ * @property {ModuleId} id module id
52
+ */
43
53
 
44
54
  const RUNTIME_REQUIREMENTS = new Set([
45
55
  RuntimeGlobals.module,
@@ -48,9 +58,9 @@ const RUNTIME_REQUIREMENTS = new Set([
48
58
 
49
59
  class DelegatedModule extends Module {
50
60
  /**
51
- * @param {SourceRequest} sourceRequest source request
52
- * @param {Data} data data
53
- * @param {Type} type type
61
+ * @param {DelegatedModuleSourceRequest} sourceRequest source request
62
+ * @param {DelegatedModuleData} data data
63
+ * @param {DelegatedModuleType} type type
54
64
  * @param {string} userRequest user request
55
65
  * @param {string | Module} originalRequest original request
56
66
  */
@@ -63,7 +73,6 @@ class DelegatedModule extends Module {
63
73
  this.delegationType = type;
64
74
  this.userRequest = userRequest;
65
75
  this.originalRequest = originalRequest;
66
- /** @type {ManifestModuleData | undefined} */
67
76
  this.delegateData = data;
68
77
 
69
78
  // Build info
@@ -74,12 +83,12 @@ class DelegatedModule extends Module {
74
83
  * @returns {SourceTypes} types available (do not mutate)
75
84
  */
76
85
  getSourceTypes() {
77
- return JS_TYPES;
86
+ return JAVASCRIPT_TYPES;
78
87
  }
79
88
 
80
89
  /**
81
90
  * @param {LibIdentOptions} options options
82
- * @returns {string | null} an identifier for library inclusion
91
+ * @returns {LibIdent | null} an identifier for library inclusion
83
92
  */
84
93
  libIdent(options) {
85
94
  return typeof this.originalRequest === "string"
@@ -106,7 +115,7 @@ class DelegatedModule extends Module {
106
115
 
107
116
  /**
108
117
  * @param {NeedBuildContext} context context info
109
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
118
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
110
119
  * @returns {void}
111
120
  */
112
121
  needBuild(context, callback) {
@@ -118,7 +127,7 @@ class DelegatedModule extends Module {
118
127
  * @param {Compilation} compilation the compilation
119
128
  * @param {ResolverWithOptions} resolver the resolver
120
129
  * @param {InputFileSystem} fs the file system
121
- * @param {function(WebpackError=): void} callback callback function
130
+ * @param {BuildCallback} callback callback function
122
131
  * @returns {void}
123
132
  */
124
133
  build(options, compilation, resolver, fs, callback) {
@@ -171,9 +180,9 @@ class DelegatedModule extends Module {
171
180
 
172
181
  const sources = new Map();
173
182
  if (this.useSourceMap || this.useSimpleSourceMap) {
174
- sources.set("javascript", new OriginalSource(str, this.identifier()));
183
+ sources.set(JAVASCRIPT_TYPE, new OriginalSource(str, this.identifier()));
175
184
  } else {
176
- sources.set("javascript", new RawSource(str));
185
+ sources.set(JAVASCRIPT_TYPE, new RawSource(str));
177
186
  }
178
187
 
179
188
  return {
@@ -253,7 +262,9 @@ class DelegatedModule extends Module {
253
262
  */
254
263
  cleanupForCache() {
255
264
  super.cleanupForCache();
256
- this.delegateData = undefined;
265
+ this.delegateData =
266
+ /** @type {EXPECTED_ANY} */
267
+ (undefined);
257
268
  }
258
269
  }
259
270
 
@@ -9,22 +9,24 @@ const DelegatedModule = require("./DelegatedModule");
9
9
 
10
10
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
11
11
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
12
- /** @typedef {import("./DelegatedModule").Data} Data */
13
- /** @typedef {import("./DelegatedModule").SourceRequest} SourceRequest */
14
- /** @typedef {import("./DelegatedModule").Type} Type */
12
+ /** @typedef {import("./DelegatedModule").DelegatedModuleSourceRequest} DelegatedModuleSourceRequest */
13
+ /** @typedef {import("./DelegatedModule").DelegatedModuleType} DelegatedModuleType */
15
14
  /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
15
+ /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
16
16
 
17
17
  /**
18
18
  * @typedef {object} Options
19
- * @property {SourceRequest} source source
19
+ * @property {DelegatedModuleSourceRequest} source source
20
20
  * @property {NonNullable<DllReferencePluginOptions["context"]>} context absolute context path to which lib ident is relative to
21
21
  * @property {DllReferencePluginOptionsContent} content content
22
22
  * @property {DllReferencePluginOptions["type"]} type type
23
23
  * @property {DllReferencePluginOptions["extensions"]} extensions extensions
24
24
  * @property {DllReferencePluginOptions["scope"]} scope scope
25
- * @property {object=} associatedObjectForCache object for caching
25
+ * @property {AssociatedObjectForCache=} associatedObjectForCache object for caching
26
26
  */
27
27
 
28
+ const PLUGIN_NAME = "DelegatedModuleFactoryPlugin";
29
+
28
30
  class DelegatedModuleFactoryPlugin {
29
31
  /**
30
32
  * @param {Options} options options
@@ -43,7 +45,7 @@ class DelegatedModuleFactoryPlugin {
43
45
  const scope = this.options.scope;
44
46
  if (scope) {
45
47
  normalModuleFactory.hooks.factorize.tapAsync(
46
- "DelegatedModuleFactoryPlugin",
48
+ PLUGIN_NAME,
47
49
  (data, callback) => {
48
50
  const [dependency] = data.dependencies;
49
51
  const { request } = dependency;
@@ -57,7 +59,8 @@ class DelegatedModuleFactoryPlugin {
57
59
  new DelegatedModule(
58
60
  this.options.source,
59
61
  resolved,
60
- /** @type {Type} */ (this.options.type),
62
+ /** @type {DelegatedModuleType} */
63
+ (this.options.type),
61
64
  innerRequest,
62
65
  request
63
66
  )
@@ -76,7 +79,8 @@ class DelegatedModuleFactoryPlugin {
76
79
  new DelegatedModule(
77
80
  this.options.source,
78
81
  resolved,
79
- /** @type {Type} */ (this.options.type),
82
+ /** @type {DelegatedModuleType} */
83
+ (this.options.type),
80
84
  requestPlusExt,
81
85
  request + extension
82
86
  )
@@ -88,24 +92,23 @@ class DelegatedModuleFactoryPlugin {
88
92
  }
89
93
  );
90
94
  } else {
91
- normalModuleFactory.hooks.module.tap(
92
- "DelegatedModuleFactoryPlugin",
93
- module => {
94
- const request = module.libIdent(this.options);
95
- if (request && request in this.options.content) {
96
- const resolved = this.options.content[request];
97
- return new DelegatedModule(
98
- this.options.source,
99
- resolved,
100
- /** @type {Type} */ (this.options.type),
101
- request,
102
- module
103
- );
104
- }
105
- return module;
95
+ normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module) => {
96
+ const request = module.libIdent(this.options);
97
+ if (request && request in this.options.content) {
98
+ const resolved = this.options.content[request];
99
+ return new DelegatedModule(
100
+ this.options.source,
101
+ resolved,
102
+ /** @type {DelegatedModuleType} */
103
+ (this.options.type),
104
+ request,
105
+ module
106
+ );
106
107
  }
107
- );
108
+ return module;
109
+ });
108
110
  }
109
111
  }
110
112
  }
113
+
111
114
  module.exports = DelegatedModuleFactoryPlugin;