@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,389 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Haijie Xie @hai-x
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const Dependency = require("./Dependency");
9
+
10
+ /** @typedef {import("./Compilation")} Compilation */
11
+ /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
12
+ /** @typedef {import("./Module")} Module */
13
+ /** @typedef {import("./ModuleFactory")} ModuleFactory */
14
+
15
+ /**
16
+ * Defines the deferred request group type used by this module.
17
+ * @typedef {object} DependencyGroup
18
+ * @property {ModuleFactory} factory factory for the request
19
+ * @property {Dependency[]} dependencies deferred dependencies of the request
20
+ * @property {string | undefined} context request context
21
+ */
22
+
23
+ /**
24
+ * Defines the lazy barrel state type used by this module.
25
+ * @typedef {object} LazyBarrelState
26
+ * @property {Set<string> | true} forwardedIds export names requested so far, true for all
27
+ * @property {LazyBarrelInfo | undefined} lazyBarrelInfo deferred dependencies, undefined until classified
28
+ */
29
+
30
+ /**
31
+ * Defines the lazy barrel unlazy item type used by this module.
32
+ * @typedef {object} UnlazyDependencyInfo
33
+ * @property {ModuleFactory} factory factory for the request
34
+ * @property {Dependency[]} dependencies deferred dependencies of the request
35
+ * @property {string | undefined} context request context
36
+ * @property {Module} originModule the lazy barrel module
37
+ */
38
+
39
+ /**
40
+ * Collects the export names a dependency group requests from its target.
41
+ * @param {Dependency[]} dependencies dependency group resolving to one module
42
+ * @returns {Set<string> | true} requested export names, true for all
43
+ */
44
+ function getForwardedIds(dependencies) {
45
+ /** @type {Set<string>} */
46
+ const ids = new Set();
47
+ for (const dependency of dependencies) {
48
+ // TODO remove in webpack 6
49
+ // It may be missing on custom dependency types not extending the base Dependency
50
+ if (!("getForwardId" in dependency)) continue;
51
+
52
+ const id = dependency.getForwardId();
53
+ if (id === true) return true;
54
+ if (id !== null) ids.add(id);
55
+ }
56
+ return ids;
57
+ }
58
+
59
+ /**
60
+ * Tracks the deferred (not yet factorized/built) dependencies of a
61
+ * side-effect-free barrel module and which export names resolve to them.
62
+ */
63
+ class LazyBarrelInfo {
64
+ constructor() {
65
+ /** @type {Map<string, string>} forward id -> request key */
66
+ this._forwardIdToRequest = new Map();
67
+ /** @type {Map<string, DependencyGroup>} request key -> still-deferred group */
68
+ this._requestToDepGroup = new Map();
69
+ /** @type {Set<string> | undefined} locally provided export names */
70
+ this._terminalIds = undefined;
71
+ /** @type {Set<string> | undefined} requests of star re-exports */
72
+ this._fallbackRequests = undefined;
73
+ }
74
+
75
+ /**
76
+ * Records a deferred dependency under its request key.
77
+ * @param {string} requestKey request key
78
+ * @param {Dependency} dependency dependency to defer
79
+ * @param {ModuleFactory} factory factory for the request
80
+ * @param {string | undefined} context request context
81
+ */
82
+ addLazy(requestKey, dependency, factory, context) {
83
+ let group = this._requestToDepGroup.get(requestKey);
84
+ if (group === undefined) {
85
+ group = { factory, dependencies: [], context };
86
+ this._requestToDepGroup.set(requestKey, group);
87
+ }
88
+ group.dependencies.push(dependency);
89
+ }
90
+
91
+ /**
92
+ * Maps an export name to the request providing it.
93
+ * @param {string} id export name
94
+ * @param {string} requestKey request key
95
+ */
96
+ addForwardId(id, requestKey) {
97
+ this._forwardIdToRequest.set(id, requestKey);
98
+ }
99
+
100
+ /**
101
+ * Registers a locally provided export name.
102
+ * @param {string} id export name
103
+ */
104
+ addTerminal(id) {
105
+ if (this._terminalIds === undefined) this._terminalIds = new Set();
106
+ this._terminalIds.add(id);
107
+ }
108
+
109
+ /**
110
+ * Registers a star re-export request key.
111
+ * @param {string} requestKey request key
112
+ */
113
+ addFallback(requestKey) {
114
+ if (this._fallbackRequests === undefined) {
115
+ this._fallbackRequests = new Set();
116
+ }
117
+ this._fallbackRequests.add(requestKey);
118
+ }
119
+
120
+ /**
121
+ * Returns whether nothing is deferred.
122
+ * @returns {boolean} true, when no dependency is deferred
123
+ */
124
+ isEmpty() {
125
+ return this._requestToDepGroup.size === 0;
126
+ }
127
+
128
+ /**
129
+ * Returns the requests of the still-lazy groups.
130
+ * @returns {Iterable<string>} still-lazy requests
131
+ */
132
+ getLazyRequests() {
133
+ return this._requestToDepGroup.keys();
134
+ }
135
+
136
+ /**
137
+ * Drops the export-name lookups once no group stays deferred; they only serve
138
+ * to find still-deferred groups, so keeping them per module wastes memory.
139
+ */
140
+ _release() {
141
+ this._forwardIdToRequest.clear();
142
+ this._terminalIds = undefined;
143
+ this._fallbackRequests = undefined;
144
+ }
145
+
146
+ /**
147
+ * Removes and returns the groups needed to provide the requested export names.
148
+ * @param {Set<string> | true} forwardedIds requested export names, true for all
149
+ * @returns {DependencyGroup[]} groups that must be processed now
150
+ */
151
+ request(forwardedIds) {
152
+ /** @type {DependencyGroup[]} */
153
+ const result = [];
154
+ /**
155
+ * @param {DependencyGroup} group taken group
156
+ */
157
+ const unlazy = (group) => {
158
+ for (const dependency of group.dependencies) {
159
+ dependency.setLazy(false);
160
+ }
161
+ result.push(group);
162
+ };
163
+ if (forwardedIds === true) {
164
+ for (const group of this._requestToDepGroup.values()) unlazy(group);
165
+ this._requestToDepGroup.clear();
166
+ this._release();
167
+ return result;
168
+ }
169
+ /**
170
+ * @param {string} requestKey request key to take
171
+ */
172
+ const take = (requestKey) => {
173
+ const group = this._requestToDepGroup.get(requestKey);
174
+ if (group === undefined) return;
175
+ this._requestToDepGroup.delete(requestKey);
176
+ unlazy(group);
177
+ };
178
+ for (const id of forwardedIds) {
179
+ if (this._terminalIds !== undefined && this._terminalIds.has(id)) {
180
+ continue;
181
+ }
182
+ const requestKey = this._forwardIdToRequest.get(id);
183
+ if (requestKey !== undefined) {
184
+ take(requestKey);
185
+ } else if (this._fallbackRequests !== undefined) {
186
+ // unknown name: any star re-export may provide it
187
+ for (const fallbackKey of this._fallbackRequests) take(fallbackKey);
188
+ }
189
+ }
190
+ if (this._requestToDepGroup.size === 0) this._release();
191
+ return result;
192
+ }
193
+ }
194
+
195
+ const esmDependencyCategory = "esm";
196
+
197
+ /**
198
+ * Owns the per side-effect-free module lazy barrel state for a `Compilation`,
199
+ * keeping the deferral bookkeeping out of `Compilation` itself.
200
+ */
201
+ class LazyBarrelController {
202
+ /**
203
+ * @param {Compilation} compilation the owning compilation
204
+ */
205
+ constructor(compilation) {
206
+ /** @type {Compilation} */
207
+ this._compilation = compilation;
208
+ /** @type {WeakMap<Module, LazyBarrelState>} */
209
+ this._modules = new WeakMap();
210
+ }
211
+
212
+ /**
213
+ * Releases all per-module deferral state. The last consumer is
214
+ * `FlagDependencyExportsPlugin`'s cache key during `finishModules`, so the
215
+ * bookkeeping is dead weight once sealing starts.
216
+ */
217
+ clear() {
218
+ this._modules = new WeakMap();
219
+ }
220
+
221
+ /**
222
+ * requests of the re-export targets `module` still keeps lazy.
223
+ * `FlagDependencyExportsPlugin` folds them into its provided-exports cache
224
+ * key, so a barrel whose built targets differ from a cached run does not
225
+ * reuse that run's stale exports.
226
+ * @param {Module} module the module
227
+ * @returns {Iterable<string> | undefined} still-lazy requests, if any
228
+ */
229
+ getLazyRequests(module) {
230
+ const factoryMeta = module.factoryMeta;
231
+ if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
232
+ const state = this._modules.get(module);
233
+ if (state === undefined) return;
234
+ const info = state.lazyBarrelInfo;
235
+ if (info === undefined || info.isEmpty()) return;
236
+ return info.getLazyRequests();
237
+ }
238
+
239
+ /**
240
+ * Classifies the re-export dependencies of a side-effect-free module (lazy barrel)
241
+ * into deferrable groups and marks the deferred ones.
242
+ * @param {Module} module the module whose dependencies are processed
243
+ * @returns {boolean} true, when some dependencies were deferred
244
+ */
245
+ classify(module) {
246
+ const modules = this._modules;
247
+ const factoryMeta = module.factoryMeta;
248
+ if (factoryMeta === undefined || !factoryMeta.sideEffectFree) {
249
+ return false;
250
+ }
251
+ const dependencies = module.dependencies;
252
+ const dependencyFactories = this._compilation.dependencyFactories;
253
+ /** @type {LazyBarrelInfo | undefined} */
254
+ let info;
255
+ let hasFallback = false;
256
+ for (const dep of dependencies) {
257
+ // TODO remove in webpack 6
258
+ // It may be missing on custom dependency types not extending the base Dependency
259
+ if (!("getLazyUntil" in dep)) continue;
260
+
261
+ const until = dep.getLazyUntil();
262
+ // null (eager) and LAZY_UNTIL_LOCAL (terminal) defer nothing; terminals are
263
+ // only consulted alongside a star re-export, so they are recorded below
264
+ if (until === null || until === Dependency.LAZY_UNTIL_LOCAL) continue;
265
+ // deferrable: setLazy is needed to toggle its deferred state
266
+ if (!("setLazy" in dep)) continue;
267
+ const resourceIdent = dep.getResourceIdentifier();
268
+ if (resourceIdent === null) continue;
269
+ const factory = dependencyFactories.get(
270
+ /** @type {DependencyConstructor} */ (dep.constructor)
271
+ );
272
+ if (factory === undefined) continue;
273
+ const category = dep.category;
274
+ // Match the request grouping key of `processDependencyForResolving`
275
+ const requestKey =
276
+ category === esmDependencyCategory
277
+ ? resourceIdent
278
+ : `${category}${resourceIdent}`;
279
+ if (info === undefined) info = new LazyBarrelInfo();
280
+ if (dep.isLazy()) {
281
+ info.addLazy(requestKey, dep, factory, dep.getContext());
282
+ }
283
+ if (until === Dependency.LAZY_UNTIL_ID) {
284
+ info.addForwardId(
285
+ /** @type {string} */ (dep.getLazyName()),
286
+ requestKey
287
+ );
288
+ } else if (until === Dependency.LAZY_UNTIL_FALLBACK) {
289
+ info.addFallback(requestKey);
290
+ hasFallback = true;
291
+ }
292
+ }
293
+ const state = modules.get(module);
294
+ // info is only created once a deferrable target exists, so it is never empty here
295
+ if (info === undefined) {
296
+ if (state !== undefined) modules.delete(module);
297
+ return false;
298
+ }
299
+ // terminals only matter together with a star re-export (to avoid building it
300
+ // for a locally-provided name); skip the extra pass otherwise
301
+ if (hasFallback) {
302
+ for (const dep of dependencies) {
303
+ if (
304
+ "getLazyUntil" in dep &&
305
+ dep.getLazyUntil() === Dependency.LAZY_UNTIL_LOCAL
306
+ ) {
307
+ info.addTerminal(/** @type {string} */ (dep.getLazyName()));
308
+ }
309
+ }
310
+ }
311
+ if (state !== undefined) {
312
+ // barrel classified after its targets were already requested: replay the
313
+ // recorded ids so processDependency un-lazies and builds those targets now
314
+ info.request(state.forwardedIds);
315
+ // stay lazy only while some targets remain deferred
316
+ if (info.isEmpty()) return false;
317
+ state.lazyBarrelInfo = info;
318
+ return true;
319
+ }
320
+
321
+ modules.set(module, {
322
+ forwardedIds: new Set(),
323
+ lazyBarrelInfo: info
324
+ });
325
+
326
+ return true;
327
+ }
328
+
329
+ /**
330
+ * Requests the export names that `dependencies` need from a lazy barrel and
331
+ * returns the deferred re-export targets that must be built now. Records the
332
+ * request when the barrel's dependencies were not classified yet.
333
+ * @param {Module} module the resolved module
334
+ * @param {Dependency[]} dependencies the dependencies that resolved to the module
335
+ * @returns {UnlazyDependencyInfo[] | undefined} items to process, if any
336
+ */
337
+ request(module, dependencies) {
338
+ // state only exists for side-effect-free modules, so a non-side-effect-free
339
+ // module never has state — skip the WeakMap lookup entirely for it
340
+ const factoryMeta = module.factoryMeta;
341
+ if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
342
+ const modules = this._modules;
343
+ const state = modules.get(module);
344
+
345
+ if (state === undefined) {
346
+ const forwardedIds = getForwardedIds(dependencies);
347
+ if (forwardedIds !== true && forwardedIds.size === 0) return;
348
+ modules.set(module, {
349
+ forwardedIds,
350
+ lazyBarrelInfo: undefined
351
+ });
352
+ return;
353
+ }
354
+
355
+ const forwardedIds = getForwardedIds(dependencies);
356
+ if (forwardedIds !== true && forwardedIds.size === 0) return;
357
+ if (state.forwardedIds !== true) {
358
+ if (forwardedIds === true) state.forwardedIds = true;
359
+ else for (const id of forwardedIds) state.forwardedIds.add(id);
360
+ }
361
+ const info = state.lazyBarrelInfo;
362
+ // Pending requests will be replayed during `classify` later
363
+ if (info === undefined) return;
364
+ const groups = info.request(forwardedIds);
365
+ // drop the per-module state once every deferred target has been built
366
+ if (info.isEmpty()) state.lazyBarrelInfo = undefined;
367
+ if (groups.length === 0) return;
368
+ return groups.map((group) => ({
369
+ factory: group.factory,
370
+ dependencies: group.dependencies,
371
+ context: group.context,
372
+ originModule: module
373
+ }));
374
+ }
375
+
376
+ /**
377
+ * Queues the deferred dependency groups of a lazy barrel requested by a single dependency.
378
+ * @param {Module} module the resolved module of the dependency
379
+ * @param {Dependency} dependency the requesting dependency
380
+ * @param {{ factory: ModuleFactory, dependencies: Dependency[], context: string | undefined, originModule: Module | null }[]} sortedDependencies item list to append to
381
+ */
382
+ unlazyForDependency(module, dependency, sortedDependencies) {
383
+ const unlazyItems = this.request(module, [dependency]);
384
+ if (unlazyItems === undefined) return;
385
+ for (const item of unlazyItems) sortedDependencies.push(item);
386
+ }
387
+ }
388
+
389
+ module.exports = LazyBarrelController;
@@ -17,6 +17,7 @@ const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
17
17
  // TODO webpack 6 remove
18
18
  class LibraryTemplatePlugin {
19
19
  /**
20
+ * Creates an instance of LibraryTemplatePlugin.
20
21
  * @param {LibraryName} name name of library
21
22
  * @param {LibraryType} target type of library
22
23
  * @param {UmdNamedDefine} umdNamedDefine setting this to true will name the UMD module
@@ -34,7 +35,7 @@ class LibraryTemplatePlugin {
34
35
  }
35
36
 
36
37
  /**
37
- * Apply the plugin
38
+ * Applies the plugin by registering its hooks on the compiler.
38
39
  * @param {Compiler} compiler the compiler instance
39
40
  * @returns {void}
40
41
  */
@@ -13,6 +13,7 @@ const NormalModule = require("./NormalModule");
13
13
  /** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
14
14
 
15
15
  /**
16
+ * Defines the loader context type used by this module.
16
17
  * @template T
17
18
  * @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
18
19
  */
@@ -21,6 +22,7 @@ const PLUGIN_NAME = "LoaderOptionsPlugin";
21
22
 
22
23
  class LoaderOptionsPlugin {
23
24
  /**
25
+ * Creates an instance of LoaderOptionsPlugin.
24
26
  * @param {LoaderOptionsPluginOptions & MatchObject} options options object
25
27
  */
26
28
  constructor(options = {}) {
@@ -34,7 +36,7 @@ class LoaderOptionsPlugin {
34
36
  }
35
37
 
36
38
  /**
37
- * Apply the plugin
39
+ * Applies the plugin by registering its hooks on the compiler.
38
40
  * @param {Compiler} compiler the compiler instance
39
41
  * @returns {void}
40
42
  */
@@ -13,14 +13,16 @@ const PLUGIN_NAME = "LoaderTargetPlugin";
13
13
 
14
14
  class LoaderTargetPlugin {
15
15
  /**
16
+ * Creates an instance of LoaderTargetPlugin.
16
17
  * @param {string} target the target
17
18
  */
18
19
  constructor(target) {
20
+ /** @type {string} */
19
21
  this.target = target;
20
22
  }
21
23
 
22
24
  /**
23
- * Apply the plugin
25
+ * Applies the plugin by registering its hooks on the compiler.
24
26
  * @param {Compiler} compiler the compiler instance
25
27
  * @returns {void}
26
28
  */
@@ -26,6 +26,7 @@ const memoize = require("./util/memoize");
26
26
  /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
27
27
  /** @typedef {import("./TemplatedPathPlugin").PathData} PathData */
28
28
  /**
29
+ * Defines the if set type used by this module.
29
30
  * @template T
30
31
  * @typedef {import("tapable").IfSet<T>} IfSet
31
32
  */
@@ -43,6 +44,7 @@ const getLoadScriptRuntimeModule = memoize(() =>
43
44
  // TODO webpack 6 remove this class
44
45
  class MainTemplate {
45
46
  /**
47
+ * Creates an instance of MainTemplate.
46
48
  * @param {OutputOptions} outputOptions output options for the MainTemplate
47
49
  * @param {Compilation} compilation the compilation
48
50
  */
@@ -53,6 +55,7 @@ class MainTemplate {
53
55
  renderManifest: {
54
56
  tap: util.deprecate(
55
57
  /**
58
+ * Handles the callback logic for this hook.
56
59
  * @template AdditionalOptions
57
60
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
58
61
  * @param {(renderManifestEntries: RenderManifestEntry[], renderManifestOptions: RenderManifestOptions) => RenderManifestEntry[]} fn fn
@@ -87,6 +90,7 @@ class MainTemplate {
87
90
  require: {
88
91
  tap: util.deprecate(
89
92
  /**
93
+ * Handles the callback logic for this hook.
90
94
  * @template AdditionalOptions
91
95
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
92
96
  * @param {(value: string, renderBootstrapContext: RenderBootstrapContext) => string} fn fn
@@ -124,6 +128,7 @@ class MainTemplate {
124
128
  render: {
125
129
  tap: util.deprecate(
126
130
  /**
131
+ * Handles the callback logic for this hook.
127
132
  * @template AdditionalOptions
128
133
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
129
134
  * @param {(source: Source, chunk: Chunk, hash: string | undefined, moduleTemplate: ModuleTemplate, dependencyTemplates: DependencyTemplates) => Source} fn fn
@@ -156,6 +161,7 @@ class MainTemplate {
156
161
  renderWithEntry: {
157
162
  tap: util.deprecate(
158
163
  /**
164
+ * Handles the callback logic for this hook.
159
165
  * @template AdditionalOptions
160
166
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
161
167
  * @param {(source: Source, chunk: Chunk, hash: string | undefined) => Source} fn fn
@@ -182,6 +188,7 @@ class MainTemplate {
182
188
  assetPath: {
183
189
  tap: util.deprecate(
184
190
  /**
191
+ * Handles the callback logic for this hook.
185
192
  * @template AdditionalOptions
186
193
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
187
194
  * @param {(value: string, path: PathData, assetInfo: AssetInfo | undefined) => string} fn fn
@@ -194,6 +201,7 @@ class MainTemplate {
194
201
  ),
195
202
  call: util.deprecate(
196
203
  /**
204
+ * Handles the call callback for this hook.
197
205
  * @param {TemplatePath} filename used to get asset path with hash
198
206
  * @param {PathData} options context data
199
207
  * @returns {string} interpolated path
@@ -206,6 +214,7 @@ class MainTemplate {
206
214
  hash: {
207
215
  tap: util.deprecate(
208
216
  /**
217
+ * Handles the callback logic for this hook.
209
218
  * @template AdditionalOptions
210
219
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
211
220
  * @param {(hash: Hash) => void} fn fn
@@ -220,6 +229,7 @@ class MainTemplate {
220
229
  hashForChunk: {
221
230
  tap: util.deprecate(
222
231
  /**
232
+ * Handles the callback logic for this hook.
223
233
  * @template AdditionalOptions
224
234
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
225
235
  * @param {(hash: Hash, chunk: Chunk) => void} fn fn
@@ -295,6 +305,7 @@ class MainTemplate {
295
305
 
296
306
  this.renderCurrentHashCode = util.deprecate(
297
307
  /**
308
+ * Handles the require ensure callback for this hook.
298
309
  * @deprecated
299
310
  * @param {string} hash the hash
300
311
  * @param {number=} length length of the hash
@@ -314,6 +325,7 @@ class MainTemplate {
314
325
 
315
326
  this.getPublicPath = util.deprecate(
316
327
  /**
328
+ * Handles the callback logic for this hook.
317
329
  * @param {PathData} options context data
318
330
  * @returns {string} interpolated path
319
331
  */ (options) =>
@@ -324,6 +336,7 @@ class MainTemplate {
324
336
 
325
337
  this.getAssetPath = util.deprecate(
326
338
  /**
339
+ * Handles the callback logic for this hook.
327
340
  * @param {TemplatePath} path used to get asset path with hash
328
341
  * @param {PathData} options context data
329
342
  * @returns {string} interpolated path
@@ -335,6 +348,7 @@ class MainTemplate {
335
348
 
336
349
  this.getAssetPathWithInfo = util.deprecate(
337
350
  /**
351
+ * Handles the callback logic for this hook.
338
352
  * @param {TemplatePath} path used to get asset path with hash
339
353
  * @param {PathData} options context data
340
354
  * @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
@@ -357,6 +371,7 @@ Object.defineProperty(MainTemplate.prototype, "requireFn", {
357
371
  Object.defineProperty(MainTemplate.prototype, "outputOptions", {
358
372
  get: util.deprecate(
359
373
  /**
374
+ * Returns output options.
360
375
  * @this {MainTemplate}
361
376
  * @returns {OutputOptions} output options
362
377
  */
@@ -28,6 +28,7 @@ const HotUpdateChunk = require("./HotUpdateChunk");
28
28
  const PLUGIN_NAME = "ManifestPlugin";
29
29
 
30
30
  /**
31
+ * Returns extname.
31
32
  * @param {string} filename filename
32
33
  * @returns {string} extname
33
34
  */
@@ -46,6 +47,7 @@ const DEFAULT_FILENAME = "manifest.json";
46
47
 
47
48
  class ManifestPlugin {
48
49
  /**
50
+ * Creates an instance of ManifestPlugin.
49
51
  * @param {ManifestPluginOptions} options options
50
52
  */
51
53
  constructor(options = {}) {
@@ -54,7 +56,7 @@ class ManifestPlugin {
54
56
  }
55
57
 
56
58
  /**
57
- * Apply the plugin
59
+ * Applies the plugin by registering its hooks on the compiler.
58
60
  * @param {Compiler} compiler the compiler instance
59
61
  * @returns {void}
60
62
  */
@@ -71,7 +73,8 @@ class ManifestPlugin {
71
73
  );
72
74
  });
73
75
 
74
- const entrypoints = this.options.entrypoints || true;
76
+ const entrypoints =
77
+ this.options.entrypoints !== undefined ? this.options.entrypoints : true;
75
78
  const serialize =
76
79
  this.options.serialize ||
77
80
  ((manifest) => JSON.stringify(manifest, null, 2));
@@ -89,6 +92,7 @@ class ManifestPlugin {
89
92
  );
90
93
 
91
94
  /**
95
+ * Creates a hash reg exp.
92
96
  * @param {string | string[]} value value
93
97
  * @returns {RegExp} regexp to remove hash
94
98
  */
@@ -99,6 +103,7 @@ class ManifestPlugin {
99
103
  );
100
104
 
101
105
  /**
106
+ * Removes the provided name from the manifest plugin.
102
107
  * @param {string} name name
103
108
  * @param {AssetInfo | null} info asset info
104
109
  * @returns {string} hash removed name
@@ -112,6 +117,7 @@ class ManifestPlugin {
112
117
  };
113
118
 
114
119
  /**
120
+ * Returns chunk name or chunk id.
115
121
  * @param {Chunk} chunk chunk
116
122
  * @returns {ChunkName | ChunkId} chunk name or chunk id
117
123
  */
@@ -163,6 +169,7 @@ class ManifestPlugin {
163
169
  const added = new Set();
164
170
 
165
171
  /**
172
+ * Processes the provided file.
166
173
  * @param {string} file file
167
174
  * @param {string=} usedName usedName
168
175
  * @returns {void}