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
@@ -9,20 +9,33 @@ const memoize = require("../util/memoize");
9
9
  const LAZY_TARGET = Symbol("lazy serialization target");
10
10
  const LAZY_SERIALIZED_VALUE = Symbol("lazy serialization data");
11
11
 
12
+ /** @typedef {SerializerMiddleware<EXPECTED_ANY, EXPECTED_ANY, Record<string, EXPECTED_ANY>>} LazyTarget */
13
+ /** @typedef {Record<string, EXPECTED_ANY>} LazyOptions */
14
+
15
+ /**
16
+ * @template InputValue
17
+ * @template OutputValue
18
+ * @template {LazyTarget} InternalLazyTarget
19
+ * @template {LazyOptions | undefined} InternalLazyOptions
20
+ * @typedef {(() => InputValue | Promise<InputValue>) & Partial<{ [LAZY_TARGET]: InternalLazyTarget, options: InternalLazyOptions, [LAZY_SERIALIZED_VALUE]?: OutputValue | LazyFunction<OutputValue, InputValue, InternalLazyTarget, InternalLazyOptions> | undefined }>} LazyFunction
21
+ */
22
+
12
23
  /**
13
24
  * @template DeserializedType
14
25
  * @template SerializedType
26
+ * @template Context
15
27
  */
16
28
  class SerializerMiddleware {
17
29
  /* istanbul ignore next */
18
30
  /**
19
31
  * @abstract
20
32
  * @param {DeserializedType} data data
21
- * @param {object} context context object
22
- * @returns {SerializedType|Promise<SerializedType>} serialized data
33
+ * @param {Context} context context object
34
+ * @returns {SerializedType | Promise<SerializedType> | null} serialized data
23
35
  */
24
36
  serialize(data, context) {
25
37
  const AbstractMethodError = require("../AbstractMethodError");
38
+
26
39
  throw new AbstractMethodError();
27
40
  }
28
41
 
@@ -30,34 +43,47 @@ class SerializerMiddleware {
30
43
  /**
31
44
  * @abstract
32
45
  * @param {SerializedType} data data
33
- * @param {object} context context object
34
- * @returns {DeserializedType|Promise<DeserializedType>} deserialized data
46
+ * @param {Context} context context object
47
+ * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
35
48
  */
36
49
  deserialize(data, context) {
37
50
  const AbstractMethodError = require("../AbstractMethodError");
51
+
38
52
  throw new AbstractMethodError();
39
53
  }
40
54
 
41
55
  /**
42
- * @param {any | function(): Promise<any> | any} value contained value or function to value
43
- * @param {SerializerMiddleware<any, any>} target target middleware
44
- * @param {object=} options lazy options
45
- * @param {any=} serializedValue serialized value
46
- * @returns {function(): Promise<any> | any} lazy function
56
+ * @template TLazyInputValue
57
+ * @template TLazyOutputValue
58
+ * @template {LazyTarget} TLazyTarget
59
+ * @template {LazyOptions | undefined} TLazyOptions
60
+ * @param {TLazyInputValue | (() => TLazyInputValue)} value contained value or function to value
61
+ * @param {TLazyTarget} target target middleware
62
+ * @param {TLazyOptions=} options lazy options
63
+ * @param {TLazyOutputValue=} serializedValue serialized value
64
+ * @returns {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} lazy function
47
65
  */
48
- static createLazy(value, target, options = {}, serializedValue = undefined) {
66
+ static createLazy(
67
+ value,
68
+ target,
69
+ options = /** @type {TLazyOptions} */ ({}),
70
+ serializedValue = undefined
71
+ ) {
49
72
  if (SerializerMiddleware.isLazy(value, target)) return value;
50
- const fn = typeof value === "function" ? value : () => value;
73
+ const fn =
74
+ /** @type {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} */
75
+ (typeof value === "function" ? value : () => value);
51
76
  fn[LAZY_TARGET] = target;
52
- /** @type {any} */ (fn).options = options;
77
+ fn.options = options;
53
78
  fn[LAZY_SERIALIZED_VALUE] = serializedValue;
54
79
  return fn;
55
80
  }
56
81
 
57
82
  /**
58
- * @param {function(): Promise<any> | any} fn lazy function
59
- * @param {SerializerMiddleware<any, any>=} target target middleware
60
- * @returns {boolean} true, when fn is a lazy function (optionally of that target)
83
+ * @template {LazyTarget} TLazyTarget
84
+ * @param {EXPECTED_ANY} fn lazy function
85
+ * @param {TLazyTarget=} target target middleware
86
+ * @returns {fn is LazyFunction<EXPECTED_ANY, EXPECTED_ANY, TLazyTarget, EXPECTED_ANY>} true, when fn is a lazy function (optionally of that target)
61
87
  */
62
88
  static isLazy(fn, target) {
63
89
  if (typeof fn !== "function") return false;
@@ -66,17 +92,25 @@ class SerializerMiddleware {
66
92
  }
67
93
 
68
94
  /**
69
- * @param {function(): Promise<any> | any} fn lazy function
70
- * @returns {object | undefined} options
95
+ * @template TLazyInputValue
96
+ * @template TLazyOutputValue
97
+ * @template {LazyTarget} TLazyTarget
98
+ * @template {Record<string, EXPECTED_ANY>} TLazyOptions
99
+ * @param {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} fn lazy function
100
+ * @returns {LazyOptions | undefined} options
71
101
  */
72
102
  static getLazyOptions(fn) {
73
103
  if (typeof fn !== "function") return;
74
- return /** @type {any} */ (fn).options;
104
+ return fn.options;
75
105
  }
76
106
 
77
107
  /**
78
- * @param {function(): Promise<any> | any} fn lazy function
79
- * @returns {any | undefined} serialized value
108
+ * @template TLazyInputValue
109
+ * @template TLazyOutputValue
110
+ * @template {LazyTarget} TLazyTarget
111
+ * @template {LazyOptions} TLazyOptions
112
+ * @param {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions> | EXPECTED_ANY} fn lazy function
113
+ * @returns {TLazyOutputValue | undefined} serialized value
80
114
  */
81
115
  static getLazySerializedValue(fn) {
82
116
  if (typeof fn !== "function") return;
@@ -84,8 +118,12 @@ class SerializerMiddleware {
84
118
  }
85
119
 
86
120
  /**
87
- * @param {function(): Promise<any> | any} fn lazy function
88
- * @param {any} value serialized value
121
+ * @template TLazyInputValue
122
+ * @template TLazyOutputValue
123
+ * @template {LazyTarget} TLazyTarget
124
+ * @template {LazyOptions} TLazyOptions
125
+ * @param {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} fn lazy function
126
+ * @param {TLazyOutputValue} value serialized value
89
127
  * @returns {void}
90
128
  */
91
129
  static setLazySerializedValue(fn, value) {
@@ -93,60 +131,94 @@ class SerializerMiddleware {
93
131
  }
94
132
 
95
133
  /**
96
- * @param {function(): Promise<any> | any} lazy lazy function
97
- * @param {function(any): Promise<any> | any} serialize serialize function
98
- * @returns {function(): Promise<any> | any} new lazy
134
+ * @template TLazyInputValue DeserializedValue
135
+ * @template TLazyOutputValue SerializedValue
136
+ * @template {LazyTarget} TLazyTarget
137
+ * @template {LazyOptions | undefined} TLazyOptions
138
+ * @param {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} lazy lazy function
139
+ * @param {(value: TLazyInputValue) => TLazyOutputValue} serialize serialize function
140
+ * @returns {LazyFunction<TLazyOutputValue, TLazyInputValue, TLazyTarget, TLazyOptions>} new lazy
99
141
  */
100
142
  static serializeLazy(lazy, serialize) {
101
- const fn = memoize(() => {
102
- const r = lazy();
103
- if (r && typeof r.then === "function") {
104
- return r.then(data => data && serialize(data));
105
- }
106
- return serialize(r);
107
- });
143
+ const fn =
144
+ /** @type {LazyFunction<TLazyOutputValue, TLazyInputValue, TLazyTarget, TLazyOptions>} */
145
+ (
146
+ memoize(() => {
147
+ const r = lazy();
148
+ if (
149
+ r &&
150
+ typeof (/** @type {Promise<TLazyInputValue>} */ (r).then) ===
151
+ "function"
152
+ ) {
153
+ return (
154
+ /** @type {Promise<TLazyInputValue>} */
155
+ (r).then((data) => data && serialize(data))
156
+ );
157
+ }
158
+ return serialize(/** @type {TLazyInputValue} */ (r));
159
+ })
160
+ );
108
161
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
109
- /** @type {any} */ (fn).options = /** @type {any} */ (lazy).options;
162
+ fn.options = lazy.options;
110
163
  lazy[LAZY_SERIALIZED_VALUE] = fn;
111
164
  return fn;
112
165
  }
113
166
 
114
167
  /**
115
- * @template T
116
- * @param {function(): Promise<any> | any} lazy lazy function
117
- * @param {function(T): Promise<T> | T} deserialize deserialize function
118
- * @returns {function(): Promise<T> | T} new lazy
168
+ * @template TLazyInputValue SerializedValue
169
+ * @template TLazyOutputValue DeserializedValue
170
+ * @template {LazyTarget} TLazyTarget
171
+ * @template {LazyOptions | undefined} TLazyOptions
172
+ * @param {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} lazy lazy function
173
+ * @param {(data: TLazyInputValue) => TLazyOutputValue} deserialize deserialize function
174
+ * @returns {LazyFunction<TLazyOutputValue, TLazyInputValue, TLazyTarget, TLazyOptions>} new lazy
119
175
  */
120
176
  static deserializeLazy(lazy, deserialize) {
121
- const fn = memoize(() => {
122
- const r = lazy();
123
- if (r && typeof r.then === "function") {
124
- return r.then(data => deserialize(data));
125
- }
126
- return deserialize(r);
127
- });
177
+ const fn =
178
+ /** @type {LazyFunction<TLazyOutputValue, TLazyInputValue, TLazyTarget, TLazyOptions>} */ (
179
+ memoize(() => {
180
+ const r = lazy();
181
+ if (
182
+ r &&
183
+ typeof (/** @type {Promise<TLazyInputValue>} */ (r).then) ===
184
+ "function"
185
+ ) {
186
+ return (
187
+ /** @type {Promise<TLazyInputValue>} */
188
+ (r).then((data) => deserialize(data))
189
+ );
190
+ }
191
+ return deserialize(/** @type {TLazyInputValue} */ (r));
192
+ })
193
+ );
128
194
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
129
- /** @type {any} */ (fn).options = /** @type {any} */ (lazy).options;
195
+ fn.options = lazy.options;
130
196
  fn[LAZY_SERIALIZED_VALUE] = lazy;
131
197
  return fn;
132
198
  }
133
199
 
134
200
  /**
135
- * @param {function(): Promise<any> | any} lazy lazy function
136
- * @returns {function(): Promise<any> | any} new lazy
201
+ * @template TLazyInputValue
202
+ * @template TLazyOutputValue
203
+ * @template {LazyTarget} TLazyTarget
204
+ * @template {LazyOptions} TLazyOptions
205
+ * @param {LazyFunction<TLazyInputValue | TLazyOutputValue, TLazyInputValue | TLazyOutputValue, TLazyTarget, TLazyOptions> | undefined} lazy lazy function
206
+ * @returns {LazyFunction<TLazyInputValue | TLazyOutputValue, TLazyInputValue | TLazyOutputValue, TLazyTarget, TLazyOptions> | undefined} new lazy
137
207
  */
138
208
  static unMemoizeLazy(lazy) {
139
209
  if (!SerializerMiddleware.isLazy(lazy)) return lazy;
210
+ /** @type {LazyFunction<TLazyInputValue | TLazyOutputValue, TLazyInputValue | TLazyOutputValue, TLazyTarget, TLazyOptions>} */
140
211
  const fn = () => {
141
212
  throw new Error(
142
213
  "A lazy value that has been unmemorized can't be called again"
143
214
  );
144
215
  };
145
216
  fn[LAZY_SERIALIZED_VALUE] = SerializerMiddleware.unMemoizeLazy(
146
- lazy[LAZY_SERIALIZED_VALUE]
217
+ /** @type {LazyFunction<TLazyInputValue | TLazyOutputValue, TLazyInputValue | TLazyOutputValue, TLazyTarget, TLazyOptions>} */
218
+ (lazy[LAZY_SERIALIZED_VALUE])
147
219
  );
148
220
  fn[LAZY_TARGET] = lazy[LAZY_TARGET];
149
- fn.options = /** @type {any} */ (lazy).options;
221
+ fn.options = lazy.options;
150
222
  return fn;
151
223
  }
152
224
  }
@@ -6,16 +6,18 @@
6
6
 
7
7
  const SerializerMiddleware = require("./SerializerMiddleware");
8
8
 
9
+ /** @typedef {EXPECTED_ANY} DeserializedType */
10
+ /** @typedef {EXPECTED_ANY[]} SerializedType */
11
+ /** @typedef {EXPECTED_OBJECT} Context */
12
+
9
13
  /**
10
- * @typedef {any} DeserializedType
11
- * @typedef {any[]} SerializedType
12
- * @extends {SerializerMiddleware<any, any[]>}
14
+ * @extends {SerializerMiddleware<DeserializedType, SerializedType, Context>}
13
15
  */
14
16
  class SingleItemMiddleware extends SerializerMiddleware {
15
17
  /**
16
18
  * @param {DeserializedType} data data
17
- * @param {object} context context object
18
- * @returns {SerializedType|Promise<SerializedType>} serialized data
19
+ * @param {Context} context context object
20
+ * @returns {SerializedType | Promise<SerializedType> | null} serialized data
19
21
  */
20
22
  serialize(data, context) {
21
23
  return [data];
@@ -23,8 +25,8 @@ class SingleItemMiddleware extends SerializerMiddleware {
23
25
 
24
26
  /**
25
27
  * @param {SerializedType} data data
26
- * @param {object} context context object
27
- * @returns {DeserializedType|Promise<DeserializedType>} deserialized data
28
+ * @param {Context} context context object
29
+ * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
28
30
  */
29
31
  deserialize(data, context) {
30
32
  return data[0];
@@ -4,7 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {undefined | null | number | string | boolean | Buffer | object | (() => ComplexSerializableType[] | Promise<ComplexSerializableType[]>)} ComplexSerializableType */
7
+ /** @typedef {undefined | null | number | bigint | string | boolean | Buffer | EXPECTED_OBJECT | (() => ComplexSerializableType[] | Promise<ComplexSerializableType[]>)} ComplexSerializableType */
8
8
 
9
9
  /** @typedef {undefined | null | number | bigint | string | boolean | Buffer | (() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>)} PrimitiveSerializableType */
10
10
 
@@ -8,7 +8,7 @@
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
10
10
  const Module = require("../Module");
11
- const { CONSUME_SHARED_TYPES } = require("../ModuleSourceTypesConstants");
11
+ const { CONSUME_SHARED_TYPES } = require("../ModuleSourceTypeConstants");
12
12
  const {
13
13
  WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE
14
14
  } = require("../ModuleTypeConstants");
@@ -17,19 +17,19 @@ const makeSerializable = require("../util/makeSerializable");
17
17
  const { rangeToString, stringifyHoley } = require("../util/semver");
18
18
  const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependency");
19
19
 
20
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
21
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
22
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
20
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
23
21
  /** @typedef {import("../Compilation")} Compilation */
24
22
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
23
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
25
24
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
26
25
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
27
26
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
27
+ /** @typedef {import("../Module").LibIdent} LibIdent */
28
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
28
29
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
29
30
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
30
31
  /** @typedef {import("../RequestShortener")} RequestShortener */
31
32
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
32
- /** @typedef {import("../WebpackError")} WebpackError */
33
33
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
34
34
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
35
35
  /** @typedef {import("../util/Hash")} Hash */
@@ -102,7 +102,7 @@ class ConsumeSharedModule extends Module {
102
102
 
103
103
  /**
104
104
  * @param {LibIdentOptions} options options
105
- * @returns {string | null} an identifier for library inclusion
105
+ * @returns {LibIdent | null} an identifier for library inclusion
106
106
  */
107
107
  libIdent(options) {
108
108
  const { shareKey, shareScope, import: request } = this.options;
@@ -115,7 +115,7 @@ class ConsumeSharedModule extends Module {
115
115
 
116
116
  /**
117
117
  * @param {NeedBuildContext} context context info
118
- * @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
119
119
  * @returns {void}
120
120
  */
121
121
  needBuild(context, callback) {
@@ -127,7 +127,7 @@ class ConsumeSharedModule extends Module {
127
127
  * @param {Compilation} compilation the compilation
128
128
  * @param {ResolverWithOptions} resolver the resolver
129
129
  * @param {InputFileSystem} fs the file system
130
- * @param {function(WebpackError=): void} callback callback function
130
+ * @param {BuildCallback} callback callback function
131
131
  * @returns {void}
132
132
  */
133
133
  build(options, compilation, resolver, fs, callback) {
@@ -175,7 +175,7 @@ class ConsumeSharedModule extends Module {
175
175
  * @param {CodeGenerationContext} context context for code generation
176
176
  * @returns {CodeGenerationResult} result
177
177
  */
178
- codeGeneration({ chunkGraph, moduleGraph, runtimeTemplate }) {
178
+ codeGeneration({ chunkGraph, runtimeTemplate }) {
179
179
  const runtimeRequirements = new Set([RuntimeGlobals.shareScopeMap]);
180
180
  const {
181
181
  shareScope,
@@ -18,13 +18,13 @@ const ConsumeSharedRuntimeModule = require("./ConsumeSharedRuntimeModule");
18
18
  const ProvideForSharedDependency = require("./ProvideForSharedDependency");
19
19
  const { resolveMatchedConfigs } = require("./resolveMatchedConfigs");
20
20
  const {
21
- isRequiredVersion,
22
21
  getDescriptionFile,
23
- getRequiredVersionFromDescriptionFile
22
+ getRequiredVersionFromDescriptionFile,
23
+ isRequiredVersion
24
24
  } = require("./utils");
25
25
 
26
+ /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
26
27
  /** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumeSharedPluginOptions} ConsumeSharedPluginOptions */
27
- /** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumesConfig} ConsumesConfig */
28
28
  /** @typedef {import("../Compiler")} Compiler */
29
29
  /** @typedef {import("../ResolverFactory").ResolveOptionsWithDependencyType} ResolveOptionsWithDependencyType */
30
30
  /** @typedef {import("../util/semver").SemVerRange} SemVerRange */
@@ -32,7 +32,7 @@ const {
32
32
  /** @typedef {import("./utils").DescriptionFile} DescriptionFile */
33
33
 
34
34
  const validate = createSchemaValidation(
35
- require("../../schemas/plugins/sharing/ConsumeSharedPlugin.check.js"),
35
+ require("../../schemas/plugins/sharing/ConsumeSharedPlugin.check"),
36
36
  () => require("../../schemas/plugins/sharing/ConsumeSharedPlugin.json"),
37
37
  {
38
38
  name: "Consume Shared Plugin",
@@ -119,11 +119,13 @@ class ConsumeSharedPlugin {
119
119
  normalModuleFactory
120
120
  );
121
121
 
122
- /** @type {Map<string, ConsumeOptions>} */
122
+ /** @typedef {Map<string, ConsumeOptions>} Consumes */
123
+
124
+ /** @type {Consumes} */
123
125
  let unresolvedConsumes;
124
- /** @type {Map<string, ConsumeOptions>} */
126
+ /** @type {Consumes} */
125
127
  let resolvedConsumes;
126
- /** @type {Map<string, ConsumeOptions>} */
128
+ /** @type {Consumes} */
127
129
  let prefixedConsumes;
128
130
  const promise = resolveMatchedConfigs(compilation, this._consumes).then(
129
131
  ({ resolved, unresolved, prefixed }) => {
@@ -148,7 +150,7 @@ class ConsumeSharedPlugin {
148
150
  /**
149
151
  * @param {string} details details
150
152
  */
151
- const requiredVersionWarning = details => {
153
+ const requiredVersionWarning = (details) => {
152
154
  const error = new WebpackError(
153
155
  `No required version specified and unable to automatically determine one. ${details}`
154
156
  );
@@ -163,17 +165,15 @@ class ConsumeSharedPlugin {
163
165
  /**
164
166
  * @param {(value?: string) => void} resolve resolve
165
167
  */
166
- resolve => {
168
+ (resolve) => {
167
169
  if (!config.import) {
168
170
  resolve();
169
171
  return;
170
172
  }
173
+ /** @typedef {ResolveContext} */
171
174
  const resolveContext = {
172
- /** @type {LazySet<string>} */
173
175
  fileDependencies: new LazySet(),
174
- /** @type {LazySet<string>} */
175
176
  contextDependencies: new LazySet(),
176
- /** @type {LazySet<string>} */
177
177
  missingDependencies: new LazySet()
178
178
  };
179
179
  resolver.resolve(
@@ -208,7 +208,7 @@ class ConsumeSharedPlugin {
208
208
  /**
209
209
  * @param {(value?: SemVerRange) => void} resolve resolve
210
210
  */
211
- resolve => {
211
+ (resolve) => {
212
212
  if (config.requiredVersion !== undefined) {
213
213
  resolve(/** @type {SemVerRange} */ (config.requiredVersion));
214
214
  return;
@@ -276,7 +276,7 @@ class ConsumeSharedPlugin {
276
276
 
277
277
  resolve();
278
278
  },
279
- result => {
279
+ (result) => {
280
280
  if (!result) return false;
281
281
  const maybeRequiredVersion =
282
282
  getRequiredVersionFromDescriptionFile(
@@ -10,9 +10,9 @@ const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
  const {
12
12
  parseVersionRuntimeCode,
13
- versionLtRuntimeCode,
14
13
  rangeToStringRuntimeCode,
15
- satisfyRuntimeCode
14
+ satisfyRuntimeCode,
15
+ versionLtRuntimeCode
16
16
  } = require("../util/semver");
17
17
 
18
18
  /** @typedef {import("webpack-sources").Source} Source */
@@ -23,7 +23,7 @@ const {
23
23
  /** @typedef {import("../Compilation")} Compilation */
24
24
  /** @typedef {import("../Module")} Module */
25
25
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
26
- /** @typedef {import("./ConsumeSharedModule")} ConsumeSharedModule */
26
+ /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
27
27
 
28
28
  class ConsumeSharedRuntimeModule extends RuntimeModule {
29
29
  /**
@@ -40,17 +40,20 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
40
40
  generate() {
41
41
  const compilation = /** @type {Compilation} */ (this.compilation);
42
42
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
43
- const { runtimeTemplate, codeGenerationResults } = compilation;
44
- /** @type {Record<ChunkId, (string | number)[]>} */
43
+ const codeGenerationResults =
44
+ /** @type {CodeGenerationResults} */
45
+ (compilation.codeGenerationResults);
46
+ const { runtimeTemplate } = compilation;
47
+ /** @type {Record<ChunkId, ModuleId[]>} */
45
48
  const chunkToModuleMapping = {};
46
- /** @type {Map<string | number, Source>} */
49
+ /** @type {Map<ModuleId, Source>} */
47
50
  const moduleIdToSourceMapping = new Map();
48
- /** @type {(string | number)[]} */
51
+ /** @type {ModuleId[]} */
49
52
  const initialConsumes = [];
50
53
  /**
51
54
  * @param {Iterable<Module>} modules modules
52
55
  * @param {Chunk} chunk the chunk
53
- * @param {(string | number)[]} list list of ids
56
+ * @param {ModuleId[]} list list of ids
54
57
  */
55
58
  const addModules = (modules, chunk, list) => {
56
59
  for (const m of modules) {
@@ -7,28 +7,26 @@
7
7
 
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const Module = require("../Module");
10
- const { SHARED_INIT_TYPES } = require("../ModuleSourceTypesConstants");
10
+ const { SHARED_INIT_TYPES } = require("../ModuleSourceTypeConstants");
11
11
  const { WEBPACK_MODULE_TYPE_PROVIDE } = require("../ModuleTypeConstants");
12
12
  const RuntimeGlobals = require("../RuntimeGlobals");
13
13
  const makeSerializable = require("../util/makeSerializable");
14
14
  const ProvideForSharedDependency = require("./ProvideForSharedDependency");
15
15
 
16
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
17
- /** @typedef {import("../Chunk")} Chunk */
18
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
19
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
16
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
20
17
  /** @typedef {import("../Compilation")} Compilation */
18
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
21
19
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
22
20
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
23
21
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
22
+ /** @typedef {import("../Module").LibIdent} LibIdent */
23
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
24
24
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
25
25
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
26
26
  /** @typedef {import("../RequestShortener")} RequestShortener */
27
27
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
28
- /** @typedef {import("../WebpackError")} WebpackError */
29
28
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
30
29
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
31
- /** @typedef {import("../util/Hash")} Hash */
32
30
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
33
31
 
34
32
  class ProvideSharedModule extends Module {
@@ -67,7 +65,7 @@ class ProvideSharedModule extends Module {
67
65
 
68
66
  /**
69
67
  * @param {LibIdentOptions} options options
70
- * @returns {string | null} an identifier for library inclusion
68
+ * @returns {LibIdent | null} an identifier for library inclusion
71
69
  */
72
70
  libIdent(options) {
73
71
  return `${this.layer ? `(${this.layer})/` : ""}webpack/sharing/provide/${
@@ -77,7 +75,7 @@ class ProvideSharedModule extends Module {
77
75
 
78
76
  /**
79
77
  * @param {NeedBuildContext} context context info
80
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
78
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
81
79
  * @returns {void}
82
80
  */
83
81
  needBuild(context, callback) {
@@ -89,7 +87,7 @@ class ProvideSharedModule extends Module {
89
87
  * @param {Compilation} compilation the compilation
90
88
  * @param {ResolverWithOptions} resolver the resolver
91
89
  * @param {InputFileSystem} fs the file system
92
- * @param {function(WebpackError=): void} callback callback function
90
+ * @param {BuildCallback} callback callback function
93
91
  * @returns {void}
94
92
  */
95
93
  build(options, compilation, resolver, fs, callback) {
@@ -130,7 +128,7 @@ class ProvideSharedModule extends Module {
130
128
  * @param {CodeGenerationContext} context context for code generation
131
129
  * @returns {CodeGenerationResult} result
132
130
  */
133
- codeGeneration({ runtimeTemplate, moduleGraph, chunkGraph }) {
131
+ codeGeneration({ runtimeTemplate, chunkGraph }) {
134
132
  const runtimeRequirements = new Set([RuntimeGlobals.initializeSharing]);
135
133
  const code = `register(${JSON.stringify(this._name)}, ${JSON.stringify(
136
134
  this._version || "0"
@@ -8,18 +8,20 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const ProvideSharedModule = require("./ProvideSharedModule");
10
10
 
11
+ /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
11
12
  /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
13
13
  /** @typedef {import("./ProvideSharedDependency")} ProvideSharedDependency */
14
14
 
15
15
  class ProvideSharedModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
18
+ * @param {ModuleFactoryCallback} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create(data, callback) {
22
- const dep = /** @type {ProvideSharedDependency} */ (data.dependencies[0]);
22
+ const dep =
23
+ /** @type {ProvideSharedDependency} */
24
+ (data.dependencies[0]);
23
25
  callback(null, {
24
26
  module: new ProvideSharedModule(
25
27
  dep.shareScope,