@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
@@ -14,14 +14,16 @@ const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
14
14
  const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
15
15
  class FlagAllModulesAsUsedPlugin {
16
16
  /**
17
+ * Creates an instance of FlagAllModulesAsUsedPlugin.
17
18
  * @param {string} explanation explanation
18
19
  */
19
20
  constructor(explanation) {
21
+ /** @type {string} */
20
22
  this.explanation = explanation;
21
23
  }
22
24
 
23
25
  /**
24
- * Apply the plugin
26
+ * Applies the plugin by registering its hooks on the compiler.
25
27
  * @param {Compiler} compiler the compiler instance
26
28
  * @returns {void}
27
29
  */
@@ -41,11 +43,6 @@ class FlagAllModulesAsUsedPlugin {
41
43
  const exportsInfo = moduleGraph.getExportsInfo(module);
42
44
  exportsInfo.setUsedInUnknownWay(runtime);
43
45
  moduleGraph.addExtraReason(module, this.explanation);
44
- if (module.factoryMeta === undefined) {
45
- module.factoryMeta = {};
46
- }
47
- /** @type {FactoryMeta} */
48
- (module.factoryMeta).sideEffectFree = false;
49
46
  }
50
47
  });
51
48
  });
@@ -7,6 +7,7 @@
7
7
 
8
8
  const asyncLib = require("neo-async");
9
9
  const Queue = require("./util/Queue");
10
+ const createHash = require("./util/createHash");
10
11
 
11
12
  /** @typedef {import("./Compiler")} Compiler */
12
13
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
@@ -16,15 +17,35 @@ const Queue = require("./util/Queue");
16
17
  /** @typedef {import("./ExportsInfo")} ExportsInfo */
17
18
  /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
18
19
  /** @typedef {import("./ExportsInfo").RestoreProvidedData} RestoreProvidedData */
20
+ /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
21
+ /** @typedef {import("./LazyBarrel")} LazyBarrelController */
19
22
  /** @typedef {import("./Module")} Module */
20
23
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
21
24
 
22
25
  const PLUGIN_NAME = "FlagDependencyExportsPlugin";
23
26
  const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
24
27
 
28
+ /** @typedef {{ etag: string, data: RestoreProvidedData }} MemCacheEntry */
29
+
30
+ /**
31
+ * @param {Module} module the module
32
+ * @param {LazyBarrelController} lazyBarrelController the compilation's lazy barrel controller
33
+ * @param {HashFunction} hashFunction hash function for long keys
34
+ * @returns {string} the hash
35
+ */
36
+ const getLazyRequestsHash = (module, lazyBarrelController, hashFunction) => {
37
+ const lazyKeys = lazyBarrelController.getLazyRequests(module);
38
+ if (!lazyKeys) return "";
39
+ const joined = [...lazyKeys].join("|");
40
+ if (joined.length < 100) return joined;
41
+ const hash = createHash(hashFunction);
42
+ hash.update(joined);
43
+ return /** @type {string} */ (hash.digest("hex"));
44
+ };
45
+
25
46
  class FlagDependencyExportsPlugin {
26
47
  /**
27
- * Apply the plugin
48
+ * Applies the plugin by registering its hooks on the compiler.
28
49
  * @param {Compiler} compiler the compiler instance
29
50
  * @returns {void}
30
51
  */
@@ -32,6 +53,8 @@ class FlagDependencyExportsPlugin {
32
53
  compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
33
54
  const moduleGraph = compilation.moduleGraph;
34
55
  const cache = compilation.getCache(PLUGIN_NAME);
56
+ const lazyBarrelController = compilation._lazyBarrelController;
57
+ const hashFunction = compilation.outputOptions.hashFunction;
35
58
  compilation.hooks.finishModules.tapAsync(
36
59
  PLUGIN_NAME,
37
60
  (modules, callback) => {
@@ -80,16 +103,28 @@ class FlagDependencyExportsPlugin {
80
103
  return callback();
81
104
  }
82
105
  const memCache = moduleMemCaches && moduleMemCaches.get(module);
83
- const memCacheValue = memCache && memCache.get(this);
84
- if (memCacheValue !== undefined) {
106
+ /** @type {MemCacheEntry | undefined} */
107
+ const memCacheEntry = memCache && memCache.get(this);
108
+ const hash = getLazyRequestsHash(
109
+ module,
110
+ lazyBarrelController,
111
+ hashFunction
112
+ );
113
+ // validated by the still-lazy request keys: reference-change
114
+ // detection cannot invalidate the mem cache when the un-lazied
115
+ // connections are unsafe-cached (they are skipped when comparing
116
+ // references)
117
+ if (memCacheEntry !== undefined && memCacheEntry.etag === hash) {
85
118
  statRestoredFromMemCache++;
86
- exportsInfo.restoreProvided(memCacheValue);
119
+ exportsInfo.restoreProvided(memCacheEntry.data);
87
120
  return callback();
88
121
  }
122
+ const buildHash = /** @type {string} */ (
123
+ /** @type {BuildInfo} */ (module.buildInfo).hash
124
+ );
89
125
  cache.get(
90
126
  module.identifier(),
91
- /** @type {BuildInfo} */
92
- (module.buildInfo).hash,
127
+ hash ? `${buildHash}|${hash}` : buildHash,
93
128
  (err, result) => {
94
129
  if (err) return callback(err);
95
130
 
@@ -129,6 +164,7 @@ class FlagDependencyExportsPlugin {
129
164
  let changed = false;
130
165
 
131
166
  /**
167
+ * Process dependencies block.
132
168
  * @param {DependenciesBlock} depBlock the dependencies block
133
169
  * @returns {void}
134
170
  */
@@ -142,6 +178,7 @@ class FlagDependencyExportsPlugin {
142
178
  };
143
179
 
144
180
  /**
181
+ * Process dependency.
145
182
  * @param {Dependency} dep the dependency
146
183
  * @returns {void}
147
184
  */
@@ -152,6 +189,7 @@ class FlagDependencyExportsPlugin {
152
189
  };
153
190
 
154
191
  /**
192
+ * Process exports spec.
155
193
  * @param {Dependency} dep dependency
156
194
  * @param {ExportsSpec} exportDesc info
157
195
  * @returns {void}
@@ -163,6 +201,7 @@ class FlagDependencyExportsPlugin {
163
201
  const globalPriority = exportDesc.priority;
164
202
  const globalTerminalBinding =
165
203
  exportDesc.terminalBinding || false;
204
+ const globalPure = exportDesc.isPure || false;
166
205
  const exportDeps = exportDesc.dependencies;
167
206
  if (exportDesc.hideExports) {
168
207
  for (const name of exportDesc.hideExports) {
@@ -195,6 +234,7 @@ class FlagDependencyExportsPlugin {
195
234
  let name;
196
235
  let canMangle = globalCanMangle;
197
236
  let terminalBinding = globalTerminalBinding;
237
+ let pure = globalPure;
198
238
  /** @type {ExportSpec["exports"]} */
199
239
  let exports;
200
240
  let from = globalFrom;
@@ -202,6 +242,8 @@ class FlagDependencyExportsPlugin {
202
242
  let fromExport;
203
243
  let priority = globalPriority;
204
244
  let hidden = false;
245
+ /** @type {ExportSpec["inlined"]} */
246
+ let inlined;
205
247
  if (typeof exportNameOrSpec === "string") {
206
248
  name = exportNameOrSpec;
207
249
  } else {
@@ -224,9 +266,15 @@ class FlagDependencyExportsPlugin {
224
266
  if (exportNameOrSpec.terminalBinding !== undefined) {
225
267
  terminalBinding = exportNameOrSpec.terminalBinding;
226
268
  }
269
+ if (exportNameOrSpec.isPure !== undefined) {
270
+ pure = exportNameOrSpec.isPure;
271
+ }
227
272
  if (exportNameOrSpec.hidden !== undefined) {
228
273
  hidden = exportNameOrSpec.hidden;
229
274
  }
275
+ if (exportNameOrSpec.inlined !== undefined) {
276
+ inlined = exportNameOrSpec.inlined;
277
+ }
230
278
  }
231
279
  const exportInfo = exportsInfo.getExportInfo(name);
232
280
 
@@ -246,11 +294,24 @@ class FlagDependencyExportsPlugin {
246
294
  changed = true;
247
295
  }
248
296
 
297
+ if (
298
+ inlined !== undefined &&
299
+ exportInfo.canInlineProvide === undefined
300
+ ) {
301
+ exportInfo.canInlineProvide = inlined;
302
+ changed = true;
303
+ }
304
+
249
305
  if (terminalBinding && !exportInfo.terminalBinding) {
250
306
  exportInfo.terminalBinding = true;
251
307
  changed = true;
252
308
  }
253
309
 
310
+ if (pure && exportInfo.pureProvide !== true) {
311
+ exportInfo.pureProvide = true;
312
+ changed = true;
313
+ }
314
+
254
315
  if (exports) {
255
316
  const nestedExportsInfo =
256
317
  exportInfo.createNestedExportsInfo();
@@ -395,13 +456,25 @@ class FlagDependencyExportsPlugin {
395
456
  .getRestoreProvidedData();
396
457
  const memCache =
397
458
  moduleMemCaches && moduleMemCaches.get(module);
459
+ const hash = getLazyRequestsHash(
460
+ module,
461
+ lazyBarrelController,
462
+ hashFunction
463
+ );
398
464
  if (memCache) {
399
- memCache.set(this, cachedData);
465
+ /** @type {MemCacheEntry} */
466
+ const entry = {
467
+ etag: hash,
468
+ data: cachedData
469
+ };
470
+ memCache.set(this, entry);
400
471
  }
472
+ const buildHash = /** @type {string} */ (
473
+ /** @type {BuildInfo} */ (module.buildInfo).hash
474
+ );
401
475
  cache.store(
402
476
  module.identifier(),
403
- /** @type {BuildInfo} */
404
- (module.buildInfo).hash,
477
+ hash ? `${buildHash}|${hash}` : buildHash,
405
478
  cachedData,
406
479
  callback
407
480
  );
@@ -21,22 +21,43 @@ const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
21
21
  /** @typedef {import("./Module")} Module */
22
22
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
23
23
 
24
- const { NO_EXPORTS_REFERENCED, EXPORTS_OBJECT_REFERENCED } = Dependency;
24
+ const {
25
+ NO_EXPORTS_REFERENCED,
26
+ EXPORTS_OBJECT_REFERENCED,
27
+ EXPORTS_OBJECT_REFERENCED_MANGLEABLE
28
+ } = Dependency;
25
29
 
26
30
  const PLUGIN_NAME = "FlagDependencyUsagePlugin";
27
31
  const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
28
32
 
33
+ // Hoisted stateless predicates for setUsedConditionally on the innermost
34
+ // used-export loop, so they aren't re-allocated per export.
35
+ /**
36
+ * @param {import("./ExportsInfo").UsageStateType} used usage state
37
+ * @returns {boolean} whether unused
38
+ */
39
+ const IS_UNUSED = (used) => used === UsageState.Unused;
40
+ /**
41
+ * @param {import("./ExportsInfo").UsageStateType} used usage state
42
+ * @returns {boolean} whether not used
43
+ */
44
+ const IS_NOT_USED = (used) => used !== UsageState.Used;
45
+
29
46
  class FlagDependencyUsagePlugin {
30
47
  /**
48
+ * Creates an instance of FlagDependencyUsagePlugin.
31
49
  * @param {boolean} global do a global analysis instead of per runtime
50
+ * @param {boolean=} mangleEscapingNamespaces keep exports mangleable when a module's namespace object escapes
32
51
  */
33
- constructor(global) {
52
+ constructor(global, mangleEscapingNamespaces = false) {
34
53
  /** @type {boolean} */
35
54
  this.global = global;
55
+ /** @type {boolean} */
56
+ this.mangleEscapingNamespaces = mangleEscapingNamespaces;
36
57
  }
37
58
 
38
59
  /**
39
- * Apply the plugin
60
+ * Applies the plugin by registering its hooks on the compiler.
40
61
  * @param {Compiler} compiler the compiler instance
41
62
  * @returns {void}
42
63
  */
@@ -60,6 +81,7 @@ class FlagDependencyUsagePlugin {
60
81
  const queue = new TupleQueue();
61
82
 
62
83
  /**
84
+ * Process referenced module.
63
85
  * @param {Module} module module to process
64
86
  * @param {ReferencedExports} usedExports list of used exports
65
87
  * @param {RuntimeSpec} runtime part of which runtime
@@ -73,6 +95,42 @@ class FlagDependencyUsagePlugin {
73
95
  forceSideEffects
74
96
  ) => {
75
97
  const exportsInfo = moduleGraph.getExportsInfo(module);
98
+ if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
99
+ // The whole namespace object escapes via a reference that codegen
100
+ // can materialize as a decoupled namespace object. When all exports
101
+ // are statically known we keep them mangleable instead of marking
102
+ // them used-in-unknown-way.
103
+ if (
104
+ this.mangleEscapingNamespaces &&
105
+ module.buildMeta &&
106
+ module.buildMeta.exportsType === "namespace" &&
107
+ exportsInfo.otherExportsInfo.provided === false
108
+ ) {
109
+ let changed = exportsInfo.setAllKnownExportsUsed(runtime);
110
+ // The whole namespace object is observed as a value, so the
111
+ // module must stay a real ES module namespace at runtime
112
+ // (keep __esModule / the namespace object, i.e. `r()`).
113
+ if (
114
+ exportsInfo
115
+ .getExportInfo("__esModule")
116
+ .setUsed(UsageState.Used, runtime)
117
+ ) {
118
+ changed = true;
119
+ }
120
+ // Exports must keep a real binding (not be inlined) so member
121
+ // access on the namespace has ES namespace semantics, e.g.
122
+ // `delete ns.x` hits a non-configurable property and throws.
123
+ for (const exportInfo of exportsInfo.ownedExports) {
124
+ exportInfo.canInlineUse = false;
125
+ }
126
+ if (changed) {
127
+ queue.enqueue(module, runtime);
128
+ }
129
+ } else if (exportsInfo.setUsedInUnknownWay(runtime)) {
130
+ queue.enqueue(module, runtime);
131
+ }
132
+ return;
133
+ }
76
134
  if (usedExports.length > 0) {
77
135
  if (!module.buildMeta || !module.buildMeta.exportsType) {
78
136
  if (exportsInfo.setUsedWithoutInfo(runtime)) {
@@ -84,11 +142,13 @@ class FlagDependencyUsagePlugin {
84
142
  /** @type {string[]} */
85
143
  let usedExport;
86
144
  let canMangle = true;
145
+ let canInline = true;
87
146
  if (Array.isArray(usedExportInfo)) {
88
147
  usedExport = usedExportInfo;
89
148
  } else {
90
149
  usedExport = usedExportInfo.name;
91
150
  canMangle = usedExportInfo.canMangle !== false;
151
+ canInline = usedExportInfo.canInline !== false;
92
152
  }
93
153
  if (usedExport.length === 0) {
94
154
  if (exportsInfo.setUsedInUnknownWay(runtime)) {
@@ -103,13 +163,19 @@ class FlagDependencyUsagePlugin {
103
163
  if (canMangle === false) {
104
164
  exportInfo.canMangleUse = false;
105
165
  }
166
+
167
+ if (exportInfo.canInlineUse === undefined) {
168
+ exportInfo.canInlineUse = canInline;
169
+ } else if (!canInline) {
170
+ exportInfo.canInlineUse = false;
171
+ }
106
172
  const lastOne = i === usedExport.length - 1;
107
173
  if (!lastOne) {
108
174
  const nestedInfo = exportInfo.getNestedExportsInfo();
109
175
  if (nestedInfo) {
110
176
  if (
111
177
  exportInfo.setUsedConditionally(
112
- (used) => used === UsageState.Unused,
178
+ IS_UNUSED,
113
179
  UsageState.OnlyPropertiesUsed,
114
180
  runtime
115
181
  )
@@ -128,7 +194,7 @@ class FlagDependencyUsagePlugin {
128
194
  }
129
195
  if (
130
196
  exportInfo.setUsedConditionally(
131
- (v) => v !== UsageState.Used,
197
+ IS_NOT_USED,
132
198
  UsageState.Used,
133
199
  runtime
134
200
  )
@@ -163,6 +229,7 @@ class FlagDependencyUsagePlugin {
163
229
  };
164
230
 
165
231
  /**
232
+ * Processes the provided module.
166
233
  * @param {DependenciesBlock} module the module
167
234
  * @param {RuntimeSpec} runtime part of which runtime
168
235
  * @param {boolean} forceSideEffects always apply side effects
@@ -172,6 +239,12 @@ class FlagDependencyUsagePlugin {
172
239
  /** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
173
240
  /** @type {Map<Module, ReferencedExports | ExportMaps>} */
174
241
  const map = new Map();
242
+ // Modules whose whole namespace object escapes in a mangleable way.
243
+ // Tracked separately so specific member references are still merged
244
+ // (and marked used) instead of being dropped by the escape marker.
245
+ // Lazily allocated — usually empty.
246
+ /** @type {Set<Module> | undefined} */
247
+ let mangleableEscapeModules;
175
248
 
176
249
  /** @type {ArrayQueue<DependenciesBlock>} */
177
250
  const queue = new ArrayQueue();
@@ -210,10 +283,32 @@ class FlagDependencyUsagePlugin {
210
283
  }
211
284
  const referencedExports =
212
285
  compilation.getDependencyReferencedExports(dep, runtime);
286
+ // The non-mangleable whole-object reference is the most
287
+ // conservative result and always wins.
288
+ if (referencedExports === EXPORTS_OBJECT_REFERENCED) {
289
+ map.set(module, EXPORTS_OBJECT_REFERENCED);
290
+ if (mangleableEscapeModules) {
291
+ mangleableEscapeModules.delete(module);
292
+ }
293
+ continue;
294
+ }
295
+ // A mangleable whole-object escape keeps the module's exports
296
+ // mangleable (applied after the merge). Unlike the conservative
297
+ // marker it must not drop specific member references: those still
298
+ // need their own (possibly non-existent) export marked used so
299
+ // they render as a qualified access, not a bare `undefined`.
300
+ if (
301
+ referencedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE
302
+ ) {
303
+ if (mangleableEscapeModules === undefined) {
304
+ mangleableEscapeModules = new Set();
305
+ }
306
+ mangleableEscapeModules.add(module);
307
+ continue;
308
+ }
213
309
  if (
214
310
  oldReferencedExports === undefined ||
215
- oldReferencedExports === NO_EXPORTS_REFERENCED ||
216
- referencedExports === EXPORTS_OBJECT_REFERENCED
311
+ oldReferencedExports === NO_EXPORTS_REFERENCED
217
312
  ) {
218
313
  map.set(module, referencedExports);
219
314
  } else if (
@@ -255,7 +350,8 @@ class FlagDependencyUsagePlugin {
255
350
  } else {
256
351
  exportsMap.set(key, {
257
352
  name: item.name,
258
- canMangle: item.canMangle && oldItem.canMangle
353
+ canMangle: item.canMangle && oldItem.canMangle,
354
+ canInline: item.canInline && oldItem.canInline
259
355
  });
260
356
  }
261
357
  }
@@ -281,6 +377,16 @@ class FlagDependencyUsagePlugin {
281
377
  );
282
378
  }
283
379
  }
380
+ if (mangleableEscapeModules) {
381
+ for (const module of mangleableEscapeModules) {
382
+ processReferencedModule(
383
+ module,
384
+ EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
385
+ runtime,
386
+ forceSideEffects
387
+ );
388
+ }
389
+ }
284
390
  };
285
391
 
286
392
  logger.time("initialize exports usage");
@@ -294,6 +400,7 @@ class FlagDependencyUsagePlugin {
294
400
  logger.time("trace exports usage in graph");
295
401
 
296
402
  /**
403
+ * Process entry dependency.
297
404
  * @param {Dependency} dep dependency
298
405
  * @param {RuntimeSpec} runtime runtime
299
406
  */
@@ -13,16 +13,19 @@ const PLUGIN_NAME = "FlagEntryExportAsUsedPlugin";
13
13
 
14
14
  class FlagEntryExportAsUsedPlugin {
15
15
  /**
16
+ * Creates an instance of FlagEntryExportAsUsedPlugin.
16
17
  * @param {boolean} nsObjectUsed true, if the ns object is used
17
18
  * @param {string} explanation explanation for the reason
18
19
  */
19
20
  constructor(nsObjectUsed, explanation) {
21
+ /** @type {boolean} */
20
22
  this.nsObjectUsed = nsObjectUsed;
23
+ /** @type {string} */
21
24
  this.explanation = explanation;
22
25
  }
23
26
 
24
27
  /**
25
- * Apply the plugin
28
+ * Applies the plugin by registering its hooks on the compiler.
26
29
  * @param {Compiler} compiler the compiler instance
27
30
  * @returns {void}
28
31
  */
package/lib/Generator.js CHANGED
@@ -24,6 +24,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
24
24
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
25
25
 
26
26
  /**
27
+ * Defines the generate context type used by this module.
27
28
  * @typedef {object} GenerateContext
28
29
  * @property {DependencyTemplates} dependencyTemplates mapping from dependencies to templates
29
30
  * @property {RuntimeTemplate} runtimeTemplate the runtime template
@@ -38,6 +39,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
38
39
  */
39
40
 
40
41
  /**
42
+ * Defines the generate error fn callback.
41
43
  * @callback GenerateErrorFn
42
44
  * @param {Error} error the error
43
45
  * @param {NormalModule} module module for which the code should be generated
@@ -46,6 +48,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
46
48
  */
47
49
 
48
50
  /**
51
+ * Represents the generator runtime component.
49
52
  * @typedef {object} UpdateHashContext
50
53
  * @property {NormalModule} module the module
51
54
  * @property {ChunkGraph} chunkGraph
@@ -55,6 +58,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
55
58
 
56
59
  class Generator {
57
60
  /**
61
+ * Returns generator by type.
58
62
  * @param {{ [key in SourceType]?: Generator }} map map of types
59
63
  * @returns {ByTypeGenerator} generator by type
60
64
  */
@@ -64,31 +68,41 @@ class Generator {
64
68
 
65
69
  /* istanbul ignore next */
66
70
  /**
71
+ * Returns the source types available for this module.
67
72
  * @abstract
68
73
  * @param {NormalModule} module fresh module
69
74
  * @returns {SourceTypes} available types (do not mutate)
70
75
  */
71
76
  getTypes(module) {
72
- const AbstractMethodError = require("./AbstractMethodError");
77
+ const AbstractMethodError = require("./errors/AbstractMethodError");
73
78
 
74
79
  throw new AbstractMethodError();
75
80
  }
76
81
 
82
+ /**
83
+ * @returns {boolean} whether getTypes() depends on the module's incoming connections
84
+ */
85
+ getTypesDependOnIncomingConnections() {
86
+ return false;
87
+ }
88
+
77
89
  /* istanbul ignore next */
78
90
  /**
91
+ * Returns the estimated size for the requested source type.
79
92
  * @abstract
80
93
  * @param {NormalModule} module the module
81
94
  * @param {SourceType=} type source type
82
95
  * @returns {number} estimate size of the module
83
96
  */
84
97
  getSize(module, type) {
85
- const AbstractMethodError = require("./AbstractMethodError");
98
+ const AbstractMethodError = require("./errors/AbstractMethodError");
86
99
 
87
100
  throw new AbstractMethodError();
88
101
  }
89
102
 
90
103
  /* istanbul ignore next */
91
104
  /**
105
+ * Generates generated code for this runtime module.
92
106
  * @abstract
93
107
  * @param {NormalModule} module module for which the code should be generated
94
108
  * @param {GenerateContext} generateContext context for generate
@@ -98,12 +112,13 @@ class Generator {
98
112
  module,
99
113
  { dependencyTemplates, runtimeTemplate, moduleGraph, type }
100
114
  ) {
101
- const AbstractMethodError = require("./AbstractMethodError");
115
+ const AbstractMethodError = require("./errors/AbstractMethodError");
102
116
 
103
117
  throw new AbstractMethodError();
104
118
  }
105
119
 
106
120
  /**
121
+ * Returns the reason this module cannot be concatenated, when one exists.
107
122
  * @param {NormalModule} module module for which the bailout reason should be determined
108
123
  * @param {ConcatenationBailoutReasonContext} context context
109
124
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
@@ -113,6 +128,7 @@ class Generator {
113
128
  }
114
129
 
115
130
  /**
131
+ * Updates the hash with the data contributed by this instance.
116
132
  * @param {Hash} hash hash that will be modified
117
133
  * @param {UpdateHashContext} updateHashContext context for updating hash
118
134
  */
@@ -141,17 +157,20 @@ function generateError(error, module, generateContext) {
141
157
 
142
158
  class ByTypeGenerator extends Generator {
143
159
  /**
160
+ * Creates an instance of ByTypeGenerator.
144
161
  * @param {{ [key in SourceType]?: Generator }} map map of types
145
162
  */
146
163
  constructor(map) {
147
164
  super();
148
165
  this.map = map;
166
+ /** @type {SourceTypes} */
149
167
  this._types = /** @type {SourceTypes} */ (new Set(Object.keys(map)));
150
168
  /** @type {GenerateErrorFn | undefined} */
151
169
  this.generateError = generateError.bind(this);
152
170
  }
153
171
 
154
172
  /**
173
+ * Returns the source types available for this module.
155
174
  * @param {NormalModule} module fresh module
156
175
  * @returns {SourceTypes} available types (do not mutate)
157
176
  */
@@ -160,6 +179,7 @@ class ByTypeGenerator extends Generator {
160
179
  }
161
180
 
162
181
  /**
182
+ * Returns the estimated size for the requested source type.
163
183
  * @param {NormalModule} module the module
164
184
  * @param {SourceType=} type source type
165
185
  * @returns {number} estimate size of the module
@@ -171,6 +191,7 @@ class ByTypeGenerator extends Generator {
171
191
  }
172
192
 
173
193
  /**
194
+ * Generates generated code for this runtime module.
174
195
  * @param {NormalModule} module module for which the code should be generated
175
196
  * @param {GenerateContext} generateContext context for generate
176
197
  * @returns {Source | null} generated code