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
@@ -10,9 +10,16 @@ const { RawSource } = require("webpack-sources");
10
10
  const ChunkGraph = require("./ChunkGraph");
11
11
  const Compilation = require("./Compilation");
12
12
  const HotUpdateChunk = require("./HotUpdateChunk");
13
+ const {
14
+ JAVASCRIPT_MODULE_TYPE_AUTO,
15
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
16
+ JAVASCRIPT_MODULE_TYPE_ESM,
17
+ WEBPACK_MODULE_TYPE_RUNTIME
18
+ } = require("./ModuleTypeConstants");
13
19
  const NormalModule = require("./NormalModule");
14
20
  const RuntimeGlobals = require("./RuntimeGlobals");
15
21
  const WebpackError = require("./WebpackError");
22
+ const { chunkHasCss } = require("./css/CssModulesPlugin");
16
23
  const ConstDependency = require("./dependencies/ConstDependency");
17
24
  const ImportMetaHotAcceptDependency = require("./dependencies/ImportMetaHotAcceptDependency");
18
25
  const ImportMetaHotDeclineDependency = require("./dependencies/ImportMetaHotDeclineDependency");
@@ -27,30 +34,24 @@ const { find, isSubset } = require("./util/SetHelpers");
27
34
  const TupleSet = require("./util/TupleSet");
28
35
  const { compareModulesById } = require("./util/comparators");
29
36
  const {
37
+ forEachRuntime,
30
38
  getRuntimeKey,
39
+ intersectRuntime,
31
40
  keyToRuntime,
32
- forEachRuntime,
33
41
  mergeRuntimeOwned,
34
- subtractRuntime,
35
- intersectRuntime
42
+ subtractRuntime
36
43
  } = require("./util/runtime");
37
44
 
38
- const {
39
- JAVASCRIPT_MODULE_TYPE_AUTO,
40
- JAVASCRIPT_MODULE_TYPE_DYNAMIC,
41
- JAVASCRIPT_MODULE_TYPE_ESM,
42
- WEBPACK_MODULE_TYPE_RUNTIME
43
- } = require("./ModuleTypeConstants");
44
-
45
45
  /** @typedef {import("estree").CallExpression} CallExpression */
46
46
  /** @typedef {import("estree").Expression} Expression */
47
47
  /** @typedef {import("estree").SpreadElement} SpreadElement */
48
- /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
49
48
  /** @typedef {import("./Chunk")} Chunk */
50
49
  /** @typedef {import("./Chunk").ChunkId} ChunkId */
51
50
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
52
51
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
52
+ /** @typedef {import("./Compilation").Records} Records */
53
53
  /** @typedef {import("./Compiler")} Compiler */
54
+ /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
54
55
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
55
56
  /** @typedef {import("./Module")} Module */
56
57
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
@@ -59,12 +60,21 @@ const {
59
60
  /** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
60
61
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
61
62
 
63
+ /** @typedef {string[]} Requests */
64
+
62
65
  /**
63
66
  * @typedef {object} HMRJavascriptParserHooks
64
- * @property {SyncBailHook<[Expression | SpreadElement, string[]], void>} hotAcceptCallback
65
- * @property {SyncBailHook<[CallExpression, string[]], void>} hotAcceptWithoutCallback
67
+ * @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
68
+ * @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
66
69
  */
67
70
 
71
+ /** @typedef {number} HotIndex */
72
+ /** @typedef {Record<string, string>} FullHashChunkModuleHashes */
73
+ /** @typedef {Record<string, string>} ChunkModuleHashes */
74
+ /** @typedef {Record<ChunkId, string>} ChunkHashes */
75
+ /** @typedef {Record<ChunkId, string>} ChunkRuntime */
76
+ /** @typedef {Record<ChunkId, ModuleId[]>} ChunkModuleIds */
77
+
68
78
  /** @typedef {{ updatedChunkIds: Set<ChunkId>, removedChunkIds: Set<ChunkId>, removedModules: Set<Module>, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
69
79
  /** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
70
80
 
@@ -95,13 +105,6 @@ class HotModuleReplacementPlugin {
95
105
  return hooks;
96
106
  }
97
107
 
98
- /**
99
- * @param {object=} options options
100
- */
101
- constructor(options) {
102
- this.options = options || {};
103
- }
104
-
105
108
  /**
106
109
  * Apply the plugin
107
110
  * @param {Compiler} compiler the compiler instance
@@ -109,8 +112,9 @@ class HotModuleReplacementPlugin {
109
112
  */
110
113
  apply(compiler) {
111
114
  const { _backCompat: backCompat } = compiler;
112
- if (compiler.options.output.strictModuleErrorHandling === undefined)
115
+ if (compiler.options.output.strictModuleErrorHandling === undefined) {
113
116
  compiler.options.output.strictModuleErrorHandling = true;
117
+ }
114
118
  const runtimeRequirements = [RuntimeGlobals.module];
115
119
 
116
120
  /**
@@ -122,7 +126,7 @@ class HotModuleReplacementPlugin {
122
126
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
123
127
  HotModuleReplacementPlugin.getParserHooks(parser);
124
128
 
125
- return expr => {
129
+ return (expr) => {
126
130
  const module = parser.state.module;
127
131
  const dep = new ConstDependency(
128
132
  `${module.moduleArgument}.hot.accept`,
@@ -144,9 +148,9 @@ class HotModuleReplacementPlugin {
144
148
  } else if (arg.isArray()) {
145
149
  params =
146
150
  /** @type {BasicEvaluatedExpression[]} */
147
- (arg.items).filter(param => param.isString());
151
+ (arg.items).filter((param) => param.isString());
148
152
  }
149
- /** @type {string[]} */
153
+ /** @type {Requests} */
150
154
  const requests = [];
151
155
  if (params.length > 0) {
152
156
  for (const [idx, param] of params.entries()) {
@@ -184,7 +188,7 @@ class HotModuleReplacementPlugin {
184
188
  * @param {typeof ModuleHotDeclineDependency} ParamDependency dependency
185
189
  * @returns {(expr: CallExpression) => boolean | undefined} callback
186
190
  */
187
- const createDeclineHandler = (parser, ParamDependency) => expr => {
191
+ const createDeclineHandler = (parser, ParamDependency) => (expr) => {
188
192
  const module = parser.state.module;
189
193
  const dep = new ConstDependency(
190
194
  `${module.moduleArgument}.hot.decline`,
@@ -204,7 +208,7 @@ class HotModuleReplacementPlugin {
204
208
  } else if (arg.isArray()) {
205
209
  params =
206
210
  /** @type {BasicEvaluatedExpression[]} */
207
- (arg.items).filter(param => param.isString());
211
+ (arg.items).filter((param) => param.isString());
208
212
  }
209
213
  for (const [idx, param] of params.entries()) {
210
214
  const dep = new ParamDependency(
@@ -224,7 +228,7 @@ class HotModuleReplacementPlugin {
224
228
  * @param {JavascriptParser} parser the parser
225
229
  * @returns {(expr: Expression) => boolean | undefined} callback
226
230
  */
227
- const createHMRExpressionHandler = parser => expr => {
231
+ const createHMRExpressionHandler = (parser) => (expr) => {
228
232
  const module = parser.state.module;
229
233
  const dep = new ConstDependency(
230
234
  `${module.moduleArgument}.hot`,
@@ -242,13 +246,13 @@ class HotModuleReplacementPlugin {
242
246
  * @param {JavascriptParser} parser the parser
243
247
  * @returns {void}
244
248
  */
245
- const applyModuleHot = parser => {
249
+ const applyModuleHot = (parser) => {
246
250
  parser.hooks.evaluateIdentifier.for("module.hot").tap(
247
251
  {
248
252
  name: PLUGIN_NAME,
249
253
  before: "NodeStuffPlugin"
250
254
  },
251
- expr =>
255
+ (expr) =>
252
256
  evaluateToIdentifier(
253
257
  "module.hot",
254
258
  "module",
@@ -277,10 +281,10 @@ class HotModuleReplacementPlugin {
277
281
  * @param {JavascriptParser} parser the parser
278
282
  * @returns {void}
279
283
  */
280
- const applyImportMetaHot = parser => {
284
+ const applyImportMetaHot = (parser) => {
281
285
  parser.hooks.evaluateIdentifier
282
286
  .for("import.meta.webpackHot")
283
- .tap(PLUGIN_NAME, expr =>
287
+ .tap(PLUGIN_NAME, (expr) =>
284
288
  evaluateToIdentifier(
285
289
  "import.meta.webpackHot",
286
290
  "import.meta",
@@ -350,10 +354,11 @@ class HotModuleReplacementPlugin {
350
354
  );
351
355
  // #endregion
352
356
 
357
+ /** @type {HotIndex} */
353
358
  let hotIndex = 0;
354
- /** @type {Record<string, string>} */
359
+ /** @type {FullHashChunkModuleHashes} */
355
360
  const fullHashChunkModuleHashes = {};
356
- /** @type {Record<string, string>} */
361
+ /** @type {ChunkModuleHashes} */
357
362
  const chunkModuleHashes = {};
358
363
 
359
364
  compilation.hooks.record.tap(PLUGIN_NAME, (compilation, records) => {
@@ -367,43 +372,42 @@ class HotModuleReplacementPlugin {
367
372
  records.chunkRuntime = {};
368
373
  for (const chunk of compilation.chunks) {
369
374
  const chunkId = /** @type {ChunkId} */ (chunk.id);
370
- records.chunkHashes[chunkId] = chunk.hash;
375
+ records.chunkHashes[chunkId] = /** @type {string} */ (chunk.hash);
371
376
  records.chunkRuntime[chunkId] = getRuntimeKey(chunk.runtime);
372
377
  }
373
378
  records.chunkModuleIds = {};
374
379
  for (const chunk of compilation.chunks) {
375
- records.chunkModuleIds[/** @type {ChunkId} */ (chunk.id)] =
376
- Array.from(
377
- chunkGraph.getOrderedChunkModulesIterable(
378
- chunk,
379
- compareModulesById(chunkGraph)
380
- ),
381
- m => chunkGraph.getModuleId(m)
382
- );
380
+ const chunkId = /** @type {ChunkId} */ (chunk.id);
381
+
382
+ records.chunkModuleIds[chunkId] = Array.from(
383
+ chunkGraph.getOrderedChunkModulesIterable(
384
+ chunk,
385
+ compareModulesById(chunkGraph)
386
+ ),
387
+ (m) => /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
388
+ );
383
389
  }
384
390
  });
385
- /** @type {TupleSet<[Module, Chunk]>} */
391
+ /** @type {TupleSet<Module, Chunk>} */
386
392
  const updatedModules = new TupleSet();
387
- /** @type {TupleSet<[Module, Chunk]>} */
393
+ /** @type {TupleSet<Module, Chunk>} */
388
394
  const fullHashModules = new TupleSet();
389
- /** @type {TupleSet<[Module, RuntimeSpec]>} */
395
+ /** @type {TupleSet<Module, RuntimeSpec>} */
390
396
  const nonCodeGeneratedModules = new TupleSet();
391
- compilation.hooks.fullHash.tap(PLUGIN_NAME, hash => {
397
+ compilation.hooks.fullHash.tap(PLUGIN_NAME, (hash) => {
392
398
  const chunkGraph = compilation.chunkGraph;
393
- const records = compilation.records;
399
+ const records = /** @type {Records} */ (compilation.records);
394
400
  for (const chunk of compilation.chunks) {
395
401
  /**
396
402
  * @param {Module} module module
397
403
  * @returns {string} module hash
398
404
  */
399
- const getModuleHash = module => {
400
- if (
401
- compilation.codeGenerationResults.has(module, chunk.runtime)
402
- ) {
403
- return compilation.codeGenerationResults.getHash(
404
- module,
405
- chunk.runtime
406
- );
405
+ const getModuleHash = (module) => {
406
+ const codeGenerationResults =
407
+ /** @type {CodeGenerationResults} */
408
+ (compilation.codeGenerationResults);
409
+ if (codeGenerationResults.has(module, chunk.runtime)) {
410
+ return codeGenerationResults.getHash(module, chunk.runtime);
407
411
  }
408
412
  nonCodeGeneratedModules.add(module, chunk.runtime);
409
413
  return chunkGraph.getModuleHash(module, chunk.runtime);
@@ -424,10 +428,14 @@ class HotModuleReplacementPlugin {
424
428
  const hash = getModuleHash(module);
425
429
  if (
426
430
  fullHashModulesInThisChunk.has(
427
- /** @type {RuntimeModule} */ (module)
431
+ /** @type {RuntimeModule} */
432
+ (module)
428
433
  )
429
434
  ) {
430
- if (records.fullHashChunkModuleHashes[key] !== hash) {
435
+ if (
436
+ /** @type {FullHashChunkModuleHashes} */
437
+ (records.fullHashChunkModuleHashes)[key] !== hash
438
+ ) {
431
439
  updatedModules.add(module, chunk);
432
440
  }
433
441
  fullHashChunkModuleHashes[key] = hash;
@@ -484,7 +492,7 @@ class HotModuleReplacementPlugin {
484
492
  },
485
493
  () => {
486
494
  const chunkGraph = compilation.chunkGraph;
487
- const records = compilation.records;
495
+ const records = /** @type {Records} */ (compilation.records);
488
496
  if (records.hash === compilation.hash) return;
489
497
  if (
490
498
  !records.chunkModuleHashes ||
@@ -493,14 +501,14 @@ class HotModuleReplacementPlugin {
493
501
  ) {
494
502
  return;
495
503
  }
504
+ const codeGenerationResults =
505
+ /** @type {CodeGenerationResults} */
506
+ (compilation.codeGenerationResults);
496
507
  for (const [module, chunk] of fullHashModules) {
497
508
  const key = `${chunk.id}|${module.identifier()}`;
498
509
  const hash = nonCodeGeneratedModules.has(module, chunk.runtime)
499
510
  ? chunkGraph.getModuleHash(module, chunk.runtime)
500
- : compilation.codeGenerationResults.getHash(
501
- module,
502
- chunk.runtime
503
- );
511
+ : codeGenerationResults.getHash(module, chunk.runtime);
504
512
  if (records.chunkModuleHashes[key] !== hash) {
505
513
  updatedModules.add(module, chunk);
506
514
  }
@@ -510,15 +518,17 @@ class HotModuleReplacementPlugin {
510
518
  /** @type {HotUpdateMainContentByRuntime} */
511
519
  const hotUpdateMainContentByRuntime = new Map();
512
520
  let allOldRuntime;
513
- for (const key of Object.keys(records.chunkRuntime)) {
514
- const runtime = keyToRuntime(records.chunkRuntime[key]);
521
+ const chunkRuntime =
522
+ /** @type {ChunkRuntime} */
523
+ (records.chunkRuntime);
524
+ for (const key of Object.keys(chunkRuntime)) {
525
+ const runtime = keyToRuntime(chunkRuntime[key]);
515
526
  allOldRuntime = mergeRuntimeOwned(allOldRuntime, runtime);
516
527
  }
517
- forEachRuntime(allOldRuntime, runtime => {
528
+ forEachRuntime(allOldRuntime, (runtime) => {
518
529
  const { path: filename, info: assetInfo } =
519
530
  compilation.getPathWithInfo(
520
- /** @type {NonNullable<OutputNormalized["hotUpdateMainFilename"]>} */
521
- (compilation.outputOptions.hotUpdateMainFilename),
531
+ compilation.outputOptions.hotUpdateMainFilename,
522
532
  {
523
533
  hash: records.hash,
524
534
  runtime
@@ -538,7 +548,7 @@ class HotModuleReplacementPlugin {
538
548
  if (hotUpdateMainContentByRuntime.size === 0) return;
539
549
 
540
550
  // Create a list of all active modules to verify which modules are removed completely
541
- /** @type {Map<number|string, Module>} */
551
+ /** @type {Map<ModuleId, Module>} */
542
552
  const allModules = new Map();
543
553
  for (const module of compilation.modules) {
544
554
  const id =
@@ -548,11 +558,14 @@ class HotModuleReplacementPlugin {
548
558
  }
549
559
 
550
560
  // List of completely removed modules
551
- /** @type {Set<string | number>} */
561
+ /** @type {Set<ModuleId>} */
552
562
  const completelyRemovedModules = new Set();
553
563
 
554
564
  for (const key of Object.keys(records.chunkHashes)) {
555
- const oldRuntime = keyToRuntime(records.chunkRuntime[key]);
565
+ const oldRuntime = keyToRuntime(
566
+ /** @type {ChunkRuntime} */
567
+ (records.chunkRuntime)[key]
568
+ );
556
569
  /** @type {Module[]} */
557
570
  const remainingModules = [];
558
571
  // Check which modules are removed
@@ -575,7 +588,7 @@ class HotModuleReplacementPlugin {
575
588
  let removedFromRuntime;
576
589
  const currentChunk = find(
577
590
  compilation.chunks,
578
- chunk => `${chunk.id}` === key
591
+ (chunk) => `${chunk.id}` === key
579
592
  );
580
593
  if (currentChunk) {
581
594
  chunkId = currentChunk.id;
@@ -586,22 +599,22 @@ class HotModuleReplacementPlugin {
586
599
  if (newRuntime === undefined) continue;
587
600
  newModules = chunkGraph
588
601
  .getChunkModules(currentChunk)
589
- .filter(module => updatedModules.has(module, currentChunk));
590
- newRuntimeModules = Array.from(
591
- chunkGraph.getChunkRuntimeModulesIterable(currentChunk)
592
- ).filter(module => updatedModules.has(module, currentChunk));
602
+ .filter((module) => updatedModules.has(module, currentChunk));
603
+ newRuntimeModules = [
604
+ ...chunkGraph.getChunkRuntimeModulesIterable(currentChunk)
605
+ ].filter((module) => updatedModules.has(module, currentChunk));
593
606
  const fullHashModules =
594
607
  chunkGraph.getChunkFullHashModulesIterable(currentChunk);
595
608
  newFullHashModules =
596
609
  fullHashModules &&
597
- Array.from(fullHashModules).filter(module =>
610
+ [...fullHashModules].filter((module) =>
598
611
  updatedModules.has(module, currentChunk)
599
612
  );
600
613
  const dependentHashModules =
601
614
  chunkGraph.getChunkDependentHashModulesIterable(currentChunk);
602
615
  newDependentHashModules =
603
616
  dependentHashModules &&
604
- Array.from(dependentHashModules).filter(module =>
617
+ [...dependentHashModules].filter((module) =>
605
618
  updatedModules.has(module, currentChunk)
606
619
  );
607
620
  removedFromRuntime = subtractRuntime(oldRuntime, newRuntime);
@@ -613,7 +626,7 @@ class HotModuleReplacementPlugin {
613
626
  }
614
627
  if (removedFromRuntime) {
615
628
  // chunk was removed from some runtimes
616
- forEachRuntime(removedFromRuntime, runtime => {
629
+ forEachRuntime(removedFromRuntime, (runtime) => {
617
630
  const item =
618
631
  /** @type {HotUpdateMainContentByRuntimeItem} */
619
632
  (
@@ -633,10 +646,7 @@ class HotModuleReplacementPlugin {
633
646
  // Module is still in the same runtime combination
634
647
  const hash = nonCodeGeneratedModules.has(module, newRuntime)
635
648
  ? chunkGraph.getModuleHash(module, newRuntime)
636
- : compilation.codeGenerationResults.getHash(
637
- module,
638
- newRuntime
639
- );
649
+ : codeGenerationResults.getHash(module, newRuntime);
640
650
  if (hash !== oldHash) {
641
651
  if (module.type === WEBPACK_MODULE_TYPE_RUNTIME) {
642
652
  newRuntimeModules = newRuntimeModules || [];
@@ -652,7 +662,7 @@ class HotModuleReplacementPlugin {
652
662
  // module is no longer in this runtime combination
653
663
  // We (incorrectly) assume that it's not in an overlapping runtime combination
654
664
  // and dispose it from the main runtimes the chunk was removed from
655
- forEachRuntime(removedFromRuntime, runtime => {
665
+ forEachRuntime(removedFromRuntime, (runtime) => {
656
666
  // If the module is still used in this runtime, do not dispose it
657
667
  // This could create a bad runtime state where the module is still loaded,
658
668
  // but no chunk which contains it. This means we don't receive further HMR updates
@@ -664,8 +674,9 @@ class HotModuleReplacementPlugin {
664
674
  } else if (
665
675
  moduleRuntime !== undefined &&
666
676
  moduleRuntime.has(/** @type {string} */ (runtime))
667
- )
677
+ ) {
668
678
  return;
679
+ }
669
680
  }
670
681
  const item =
671
682
  /** @type {HotUpdateMainContentByRuntimeItem} */ (
@@ -683,15 +694,17 @@ class HotModuleReplacementPlugin {
683
694
  (newRuntimeModules && newRuntimeModules.length > 0)
684
695
  ) {
685
696
  const hotUpdateChunk = new HotUpdateChunk();
686
- if (backCompat)
697
+ if (backCompat) {
687
698
  ChunkGraph.setChunkGraphForChunk(hotUpdateChunk, chunkGraph);
699
+ }
688
700
  hotUpdateChunk.id = chunkId;
689
701
  hotUpdateChunk.runtime = currentChunk
690
702
  ? currentChunk.runtime
691
703
  : newRuntime;
692
704
  if (currentChunk) {
693
- for (const group of currentChunk.groupsIterable)
705
+ for (const group of currentChunk.groupsIterable) {
694
706
  hotUpdateChunk.addGroup(group);
707
+ }
695
708
  }
696
709
  chunkGraph.attachModules(hotUpdateChunk, newModules || []);
697
710
  chunkGraph.attachRuntimeModules(
@@ -712,12 +725,14 @@ class HotModuleReplacementPlugin {
712
725
  }
713
726
  const renderManifest = compilation.getRenderManifest({
714
727
  chunk: hotUpdateChunk,
715
- hash: records.hash,
716
- fullHash: records.hash,
728
+ hash: /** @type {string} */ (records.hash),
729
+ fullHash: /** @type {string} */ (records.hash),
717
730
  outputOptions: compilation.outputOptions,
718
731
  moduleTemplates: compilation.moduleTemplates,
719
732
  dependencyTemplates: compilation.dependencyTemplates,
720
- codeGenerationResults: compilation.codeGenerationResults,
733
+ codeGenerationResults: /** @type {CodeGenerationResults} */ (
734
+ compilation.codeGenerationResults
735
+ ),
721
736
  runtimeTemplate: compilation.runtimeTemplate,
722
737
  moduleGraph: compilation.moduleGraph,
723
738
  chunkGraph
@@ -748,7 +763,7 @@ class HotModuleReplacementPlugin {
748
763
  compilation.hooks.chunkAsset.call(currentChunk, filename);
749
764
  }
750
765
  }
751
- forEachRuntime(newRuntime, runtime => {
766
+ forEachRuntime(newRuntime, (runtime) => {
752
767
  const item =
753
768
  /** @type {HotUpdateMainContentByRuntimeItem} */ (
754
769
  hotUpdateMainContentByRuntime.get(
@@ -759,9 +774,7 @@ class HotModuleReplacementPlugin {
759
774
  });
760
775
  }
761
776
  }
762
- const completelyRemovedModulesArray = Array.from(
763
- completelyRemovedModules
764
- );
777
+ const completelyRemovedModulesArray = [...completelyRemovedModules];
765
778
  const hotUpdateMainContentByFilename = new Map();
766
779
  for (const {
767
780
  removedChunkIds,
@@ -783,12 +796,15 @@ The configured output.hotUpdateMainFilename doesn't lead to unique filenames per
783
796
  This might lead to incorrect runtime behavior of the applied update.
784
797
  To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename option, or use the default config.`)
785
798
  );
786
- for (const chunkId of removedChunkIds)
799
+ for (const chunkId of removedChunkIds) {
787
800
  old.removedChunkIds.add(chunkId);
788
- for (const chunkId of removedModules)
801
+ }
802
+ for (const chunkId of removedModules) {
789
803
  old.removedModules.add(chunkId);
790
- for (const chunkId of updatedChunkIds)
804
+ }
805
+ for (const chunkId of updatedChunkIds) {
791
806
  old.updatedChunkIds.add(chunkId);
807
+ }
792
808
  continue;
793
809
  }
794
810
  hotUpdateMainContentByFilename.set(filename, {
@@ -802,22 +818,47 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
802
818
  filename,
803
819
  { removedChunkIds, removedModules, updatedChunkIds, assetInfo }
804
820
  ] of hotUpdateMainContentByFilename) {
821
+ /** @type {{c: ChunkId[], r: ChunkId[], m: ModuleId[], css?: {r: ChunkId[]}}} */
805
822
  const hotUpdateMainJson = {
806
- c: Array.from(updatedChunkIds),
807
- r: Array.from(removedChunkIds),
823
+ c: [...updatedChunkIds],
824
+ r: [...removedChunkIds],
808
825
  m:
809
826
  removedModules.size === 0
810
827
  ? completelyRemovedModulesArray
811
- : completelyRemovedModulesArray.concat(
812
- Array.from(
828
+ : [
829
+ ...completelyRemovedModulesArray,
830
+ ...Array.from(
813
831
  removedModules,
814
- m =>
832
+ (m) =>
815
833
  /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
816
834
  )
817
- )
835
+ ]
818
836
  };
819
837
 
820
- const source = new RawSource(JSON.stringify(hotUpdateMainJson));
838
+ // Build CSS removed chunks list (chunks in updatedChunkIds that no longer have CSS)
839
+ /** @type {ChunkId[]} */
840
+ const cssRemovedChunkIds = [];
841
+ if (compilation.options.experiments.css) {
842
+ for (const chunkId of updatedChunkIds) {
843
+ for (const /** @type {Chunk} */ chunk of compilation.chunks) {
844
+ if (chunk.id === chunkId) {
845
+ if (!chunkHasCss(chunk, chunkGraph)) {
846
+ cssRemovedChunkIds.push(chunkId);
847
+ }
848
+ break;
849
+ }
850
+ }
851
+ }
852
+ }
853
+
854
+ if (cssRemovedChunkIds.length > 0) {
855
+ hotUpdateMainJson.css = { r: cssRemovedChunkIds };
856
+ }
857
+
858
+ const source = new RawSource(
859
+ (filename.endsWith(".json") ? "" : "export default ") +
860
+ JSON.stringify(hotUpdateMainJson)
861
+ );
821
862
  compilation.emitAsset(filename, source, {
822
863
  hotModuleReplacement: true,
823
864
  ...assetInfo
@@ -842,28 +883,28 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
842
883
 
843
884
  normalModuleFactory.hooks.parser
844
885
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)
845
- .tap(PLUGIN_NAME, parser => {
886
+ .tap(PLUGIN_NAME, (parser) => {
846
887
  applyModuleHot(parser);
847
888
  applyImportMetaHot(parser);
848
889
  });
849
890
  normalModuleFactory.hooks.parser
850
891
  .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
851
- .tap(PLUGIN_NAME, parser => {
892
+ .tap(PLUGIN_NAME, (parser) => {
852
893
  applyModuleHot(parser);
853
894
  });
854
895
  normalModuleFactory.hooks.parser
855
896
  .for(JAVASCRIPT_MODULE_TYPE_ESM)
856
- .tap(PLUGIN_NAME, parser => {
897
+ .tap(PLUGIN_NAME, (parser) => {
857
898
  applyImportMetaHot(parser);
858
899
  });
859
- normalModuleFactory.hooks.module.tap(PLUGIN_NAME, module => {
900
+ normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module) => {
860
901
  module.hot = true;
861
902
  return module;
862
903
  });
863
904
 
864
905
  NormalModule.getCompilationHooks(compilation).loader.tap(
865
906
  PLUGIN_NAME,
866
- context => {
907
+ (context) => {
867
908
  context.hot = true;
868
909
  }
869
910
  );
@@ -7,9 +7,6 @@
7
7
 
8
8
  const Chunk = require("./Chunk");
9
9
 
10
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
11
- /** @typedef {import("./util/Hash")} Hash */
12
-
13
10
  class HotUpdateChunk extends Chunk {
14
11
  constructor() {
15
12
  super();
@@ -7,8 +7,8 @@
7
7
 
8
8
  const ModuleFactory = require("./ModuleFactory");
9
9
 
10
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
10
11
  /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
11
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
12
12
  /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
13
13
 
14
14
  /**
@@ -26,7 +26,7 @@ class IgnoreErrorModuleFactory extends ModuleFactory {
26
26
 
27
27
  /**
28
28
  * @param {ModuleFactoryCreateData} data data object
29
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
29
+ * @param {ModuleFactoryCallback} callback callback
30
30
  * @returns {void}
31
31
  */
32
32
  create(data, callback) {