@depup/webpack 5.106.0-depup.0 → 5.109.0-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 (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /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,30 @@ 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
 
29
33
  class FlagDependencyUsagePlugin {
30
34
  /**
35
+ * Creates an instance of FlagDependencyUsagePlugin.
31
36
  * @param {boolean} global do a global analysis instead of per runtime
37
+ * @param {boolean=} mangleEscapingNamespaces keep exports mangleable when a module's namespace object escapes
32
38
  */
33
- constructor(global) {
39
+ constructor(global, mangleEscapingNamespaces = false) {
34
40
  /** @type {boolean} */
35
41
  this.global = global;
42
+ /** @type {boolean} */
43
+ this.mangleEscapingNamespaces = mangleEscapingNamespaces;
36
44
  }
37
45
 
38
46
  /**
39
- * Apply the plugin
47
+ * Applies the plugin by registering its hooks on the compiler.
40
48
  * @param {Compiler} compiler the compiler instance
41
49
  * @returns {void}
42
50
  */
@@ -60,6 +68,7 @@ class FlagDependencyUsagePlugin {
60
68
  const queue = new TupleQueue();
61
69
 
62
70
  /**
71
+ * Process referenced module.
63
72
  * @param {Module} module module to process
64
73
  * @param {ReferencedExports} usedExports list of used exports
65
74
  * @param {RuntimeSpec} runtime part of which runtime
@@ -73,6 +82,42 @@ class FlagDependencyUsagePlugin {
73
82
  forceSideEffects
74
83
  ) => {
75
84
  const exportsInfo = moduleGraph.getExportsInfo(module);
85
+ if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
86
+ // The whole namespace object escapes via a reference that codegen
87
+ // can materialize as a decoupled namespace object. When all exports
88
+ // are statically known we keep them mangleable instead of marking
89
+ // them used-in-unknown-way.
90
+ if (
91
+ this.mangleEscapingNamespaces &&
92
+ module.buildMeta &&
93
+ module.buildMeta.exportsType === "namespace" &&
94
+ exportsInfo.otherExportsInfo.provided === false
95
+ ) {
96
+ let changed = exportsInfo.setAllKnownExportsUsed(runtime);
97
+ // The whole namespace object is observed as a value, so the
98
+ // module must stay a real ES module namespace at runtime
99
+ // (keep __esModule / the namespace object, i.e. `r()`).
100
+ if (
101
+ exportsInfo
102
+ .getExportInfo("__esModule")
103
+ .setUsed(UsageState.Used, runtime)
104
+ ) {
105
+ changed = true;
106
+ }
107
+ // Exports must keep a real binding (not be inlined) so member
108
+ // access on the namespace has ES namespace semantics, e.g.
109
+ // `delete ns.x` hits a non-configurable property and throws.
110
+ for (const exportInfo of exportsInfo.ownedExports) {
111
+ exportInfo.canInlineUse = false;
112
+ }
113
+ if (changed) {
114
+ queue.enqueue(module, runtime);
115
+ }
116
+ } else if (exportsInfo.setUsedInUnknownWay(runtime)) {
117
+ queue.enqueue(module, runtime);
118
+ }
119
+ return;
120
+ }
76
121
  if (usedExports.length > 0) {
77
122
  if (!module.buildMeta || !module.buildMeta.exportsType) {
78
123
  if (exportsInfo.setUsedWithoutInfo(runtime)) {
@@ -84,11 +129,13 @@ class FlagDependencyUsagePlugin {
84
129
  /** @type {string[]} */
85
130
  let usedExport;
86
131
  let canMangle = true;
132
+ let canInline = true;
87
133
  if (Array.isArray(usedExportInfo)) {
88
134
  usedExport = usedExportInfo;
89
135
  } else {
90
136
  usedExport = usedExportInfo.name;
91
137
  canMangle = usedExportInfo.canMangle !== false;
138
+ canInline = usedExportInfo.canInline !== false;
92
139
  }
93
140
  if (usedExport.length === 0) {
94
141
  if (exportsInfo.setUsedInUnknownWay(runtime)) {
@@ -103,6 +150,12 @@ class FlagDependencyUsagePlugin {
103
150
  if (canMangle === false) {
104
151
  exportInfo.canMangleUse = false;
105
152
  }
153
+
154
+ if (exportInfo.canInlineUse === undefined) {
155
+ exportInfo.canInlineUse = canInline;
156
+ } else if (!canInline) {
157
+ exportInfo.canInlineUse = false;
158
+ }
106
159
  const lastOne = i === usedExport.length - 1;
107
160
  if (!lastOne) {
108
161
  const nestedInfo = exportInfo.getNestedExportsInfo();
@@ -163,6 +216,7 @@ class FlagDependencyUsagePlugin {
163
216
  };
164
217
 
165
218
  /**
219
+ * Processes the provided module.
166
220
  * @param {DependenciesBlock} module the module
167
221
  * @param {RuntimeSpec} runtime part of which runtime
168
222
  * @param {boolean} forceSideEffects always apply side effects
@@ -172,6 +226,11 @@ class FlagDependencyUsagePlugin {
172
226
  /** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
173
227
  /** @type {Map<Module, ReferencedExports | ExportMaps>} */
174
228
  const map = new Map();
229
+ // Modules whose whole namespace object escapes in a mangleable way.
230
+ // Tracked separately so specific member references are still merged
231
+ // (and marked used) instead of being dropped by the escape marker.
232
+ /** @type {Set<Module>} */
233
+ const mangleableEscapeModules = new Set();
175
234
 
176
235
  /** @type {ArrayQueue<DependenciesBlock>} */
177
236
  const queue = new ArrayQueue();
@@ -210,10 +269,27 @@ class FlagDependencyUsagePlugin {
210
269
  }
211
270
  const referencedExports =
212
271
  compilation.getDependencyReferencedExports(dep, runtime);
272
+ // The non-mangleable whole-object reference is the most
273
+ // conservative result and always wins.
274
+ if (referencedExports === EXPORTS_OBJECT_REFERENCED) {
275
+ map.set(module, EXPORTS_OBJECT_REFERENCED);
276
+ mangleableEscapeModules.delete(module);
277
+ continue;
278
+ }
279
+ // A mangleable whole-object escape keeps the module's exports
280
+ // mangleable (applied after the merge). Unlike the conservative
281
+ // marker it must not drop specific member references: those still
282
+ // need their own (possibly non-existent) export marked used so
283
+ // they render as a qualified access, not a bare `undefined`.
284
+ if (
285
+ referencedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE
286
+ ) {
287
+ mangleableEscapeModules.add(module);
288
+ continue;
289
+ }
213
290
  if (
214
291
  oldReferencedExports === undefined ||
215
- oldReferencedExports === NO_EXPORTS_REFERENCED ||
216
- referencedExports === EXPORTS_OBJECT_REFERENCED
292
+ oldReferencedExports === NO_EXPORTS_REFERENCED
217
293
  ) {
218
294
  map.set(module, referencedExports);
219
295
  } else if (
@@ -255,7 +331,8 @@ class FlagDependencyUsagePlugin {
255
331
  } else {
256
332
  exportsMap.set(key, {
257
333
  name: item.name,
258
- canMangle: item.canMangle && oldItem.canMangle
334
+ canMangle: item.canMangle && oldItem.canMangle,
335
+ canInline: item.canInline && oldItem.canInline
259
336
  });
260
337
  }
261
338
  }
@@ -281,6 +358,14 @@ class FlagDependencyUsagePlugin {
281
358
  );
282
359
  }
283
360
  }
361
+ for (const module of mangleableEscapeModules) {
362
+ processReferencedModule(
363
+ module,
364
+ EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
365
+ runtime,
366
+ forceSideEffects
367
+ );
368
+ }
284
369
  };
285
370
 
286
371
  logger.time("initialize exports usage");
@@ -294,6 +379,7 @@ class FlagDependencyUsagePlugin {
294
379
  logger.time("trace exports usage in graph");
295
380
 
296
381
  /**
382
+ * Process entry dependency.
297
383
  * @param {Dependency} dep dependency
298
384
  * @param {RuntimeSpec} runtime runtime
299
385
  */
@@ -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