@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
@@ -15,6 +15,7 @@ const { propertyName } = require("../util/property");
15
15
  /** @typedef {import("../ExportsInfo").UsedName} UsedName */
16
16
 
17
17
  /**
18
+ * Join iterable with comma.
18
19
  * @param {Iterable<string>} iterable iterable strings
19
20
  * @returns {string} result
20
21
  */
@@ -43,10 +44,12 @@ const EMPTY_MAP = new Map();
43
44
  const EMPTY_SET = new Set();
44
45
 
45
46
  /**
47
+ * Represents HarmonyExportInitFragment.
46
48
  * @extends {InitFragment<GenerateContext>} Context
47
49
  */
48
50
  class HarmonyExportInitFragment extends InitFragment {
49
51
  /**
52
+ * Creates an instance of HarmonyExportInitFragment.
50
53
  * @param {string} exportsArgument the exports identifier
51
54
  * @param {ExportMap} exportMap mapping from used name to exposed variable name
52
55
  * @param {UnusedExports} unusedExports list of unused export names
@@ -66,6 +69,7 @@ class HarmonyExportInitFragment extends InitFragment {
66
69
  }
67
70
 
68
71
  /**
72
+ * Merges the provided values into a single result.
69
73
  * @param {HarmonyExportInitFragment[]} fragments all fragments to merge
70
74
  * @returns {HarmonyExportInitFragment} merged fragment
71
75
  */
@@ -115,6 +119,7 @@ class HarmonyExportInitFragment extends InitFragment {
115
119
  }
116
120
 
117
121
  /**
122
+ * Returns merged result.
118
123
  * @param {HarmonyExportInitFragment} other other
119
124
  * @returns {HarmonyExportInitFragment} merged result
120
125
  */
@@ -151,13 +156,11 @@ class HarmonyExportInitFragment extends InitFragment {
151
156
  }
152
157
 
153
158
  /**
159
+ * Returns the source code that will be included as initialization code.
154
160
  * @param {GenerateContext} context context
155
161
  * @returns {string | Source | undefined} the source code that will be included as initialization code
156
162
  */
157
163
  getContent({ runtimeTemplate, runtimeRequirements }) {
158
- runtimeRequirements.add(RuntimeGlobals.exports);
159
- runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
160
-
161
164
  const unusedPart =
162
165
  this.unusedExports.size > 1
163
166
  ? `/* unused harmony exports ${joinIterableWithComma(
@@ -166,24 +169,29 @@ class HarmonyExportInitFragment extends InitFragment {
166
169
  : this.unusedExports.size > 0
167
170
  ? `/* unused harmony export ${first(this.unusedExports)} */\n`
168
171
  : "";
169
- /** @type {string[]} */
170
- const definitions = [];
171
- const orderedExportMap = [...this.exportMap].sort(([a], [b]) =>
172
- a < b ? -1 : 1
173
- );
174
- for (const [key, value] of orderedExportMap) {
175
- definitions.push(
176
- `\n/* harmony export */ ${propertyName(
177
- /** @type {string} */ (key)
178
- )}: ${runtimeTemplate.returningFunction(value)}`
179
- );
172
+ let definePart = "";
173
+ if (this.exportMap.size > 0) {
174
+ /** @type {string[]} */
175
+ const definitions = [];
176
+ const orderedExportMap =
177
+ this.exportMap.size > 1
178
+ ? [...this.exportMap].sort(([a], [b]) => (a < b ? -1 : 1))
179
+ : this.exportMap;
180
+ for (const [key, value] of orderedExportMap) {
181
+ definitions.push(
182
+ `\n/* harmony export */ ${propertyName(
183
+ /** @type {string} */ (key)
184
+ )}: ${runtimeTemplate.returningFunction(value)}`
185
+ );
186
+ }
187
+ runtimeRequirements.add(RuntimeGlobals.exports);
188
+ runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
189
+ definePart = `/* harmony export */ ${
190
+ RuntimeGlobals.definePropertyGetters
191
+ }(${this.exportsArgument}, {${definitions.join(
192
+ ","
193
+ )}\n/* harmony export */ });\n`;
180
194
  }
181
- const definePart =
182
- this.exportMap.size > 0
183
- ? `/* harmony export */ ${RuntimeGlobals.definePropertyGetters}(${
184
- this.exportsArgument
185
- }, {${definitions.join(",")}\n/* harmony export */ });\n`
186
- : "";
187
195
  return `${definePart}${unusedPart}`;
188
196
  }
189
197
  }
@@ -5,44 +5,84 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const Dependency = require("../Dependency");
9
+ const { InlinedUsedName } = require("../optimize/InlineExports");
8
10
  const makeSerializable = require("../util/makeSerializable");
11
+ const ExportBindingInitFragment = require("./ExportBindingInitFragment");
9
12
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
10
13
  const NullDependency = require("./NullDependency");
11
14
 
12
15
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
16
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
17
+ /** @typedef {import("../Dependency").LazyUntil} LazyUntil */
15
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
20
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
+ /** @typedef {import("../optimize/InlineExports").InlinedValue} InlinedValue */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, InlinedValue | null | undefined]>} ObjectDeserializerContext */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, InlinedValue | null | undefined]>} ObjectSerializerContext */
20
24
  /** @typedef {import("./HarmonyExportInitFragment").UnusedExports} UnusedExports */
21
25
  /** @typedef {import("./HarmonyExportInitFragment").ExportMap} ExportMap */
26
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
22
27
 
23
28
  class HarmonyExportSpecifierDependency extends NullDependency {
24
29
  /**
30
+ * Creates an instance of HarmonyExportSpecifierDependency.
25
31
  * @param {string} id the id
26
32
  * @param {string} name the name
33
+ * @param {InlinedValue | null=} constValue undefined = not const, null = const but not inline-eligible, InlinedValue = const and inline-eligible
27
34
  */
28
- constructor(id, name) {
35
+ constructor(id, name, constValue) {
29
36
  super();
37
+ /** @type {string} */
30
38
  this.id = id;
39
+ /** @type {string} */
31
40
  this.name = name;
41
+ /** @type {InlinedValue | null | undefined} */
42
+ this.constValue = constValue;
32
43
  }
33
44
 
34
45
  get type() {
35
46
  return "harmony export specifier";
36
47
  }
37
48
 
49
+ /**
50
+ * Returns how this dependency may be deferred when its parent module is side-effect-free (lazy barrel optimization).
51
+ * @returns {LazyUntil | null} lazy classification, null when it must be processed eagerly
52
+ */
53
+ getLazyUntil() {
54
+ return Dependency.LAZY_UNTIL_LOCAL;
55
+ }
56
+
57
+ /**
58
+ * Returns the export name for a `LAZY_UNTIL_LOCAL`/`LAZY_UNTIL_ID` classification (lazy barrel optimization).
59
+ * @returns {string | null} export name, null when not applicable
60
+ */
61
+ getLazyName() {
62
+ return this.name;
63
+ }
64
+
38
65
  /**
39
66
  * Returns the exported names
40
67
  * @param {ModuleGraph} moduleGraph module graph
41
68
  * @returns {ExportsSpec | undefined} export names
42
69
  */
43
70
  getExports(moduleGraph) {
71
+ const module = moduleGraph.getParentModule(this);
72
+ const pureFunctions =
73
+ module &&
74
+ module.buildInfo &&
75
+ /** @type {JavascriptModuleBuildInfo} */ (module.buildInfo).pureFunctions;
76
+ const isPure = Boolean(pureFunctions && pureFunctions.has(this.id));
77
+
44
78
  return {
45
- exports: [this.name],
79
+ exports: [
80
+ {
81
+ name: this.name,
82
+ isPure: isPure || undefined,
83
+ inlined: this.constValue || undefined
84
+ }
85
+ ],
46
86
  priority: 1,
47
87
  terminalBinding: true,
48
88
  dependencies: undefined
@@ -50,6 +90,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
50
90
  }
51
91
 
52
92
  /**
93
+ * Gets module evaluation side effects state.
53
94
  * @param {ModuleGraph} moduleGraph the module graph
54
95
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
55
96
  */
@@ -58,23 +99,25 @@ class HarmonyExportSpecifierDependency extends NullDependency {
58
99
  }
59
100
 
60
101
  /**
102
+ * Serializes this instance into the provided serializer context.
61
103
  * @param {ObjectSerializerContext} context context
62
104
  */
63
105
  serialize(context) {
64
- const { write } = context;
65
- write(this.id);
66
- write(this.name);
106
+ context.write(this.id).write(this.name).write(this.constValue);
67
107
  super.serialize(context);
68
108
  }
69
109
 
70
110
  /**
111
+ * Restores this instance from the provided deserializer context.
71
112
  * @param {ObjectDeserializerContext} context context
72
113
  */
73
114
  deserialize(context) {
74
- const { read } = context;
75
- this.id = read();
76
- this.name = read();
77
- super.deserialize(context);
115
+ this.id = context.read();
116
+ const c1 = context.rest;
117
+ this.name = c1.read();
118
+ const c2 = c1.rest;
119
+ this.constValue = c2.read();
120
+ super.deserialize(c2.rest);
78
121
  }
79
122
  }
80
123
 
@@ -87,6 +130,7 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
87
130
  NullDependency.Template
88
131
  ) {
89
132
  /**
133
+ * Applies the plugin by registering its hooks on the compiler.
90
134
  * @param {Dependency} dependency the dependency for which the template should be applied
91
135
  * @param {ReplaceSource} source the current replace source which can be modified
92
136
  * @param {DependencyTemplateContext} templateContext the context object
@@ -115,12 +159,38 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
115
159
  return;
116
160
  }
117
161
 
118
- /** @type {ExportMap} */
119
- const map = new Map();
120
- map.set(used, `/* binding */ ${dep.id}`);
121
- initFragments.push(
122
- new HarmonyExportInitFragment(module.exportsArgument, map, undefined)
123
- );
162
+ if (used instanceof InlinedUsedName) {
163
+ // Inlined: importing side substitutes the literal directly, skip export init
164
+ return;
165
+ }
166
+
167
+ const canUseValueBinding =
168
+ dep.constValue !== undefined &&
169
+ /** @type {import("../Module").BuildInfo} */ (module.buildInfo)
170
+ .isCircular === false;
171
+
172
+ if (canUseValueBinding) {
173
+ initFragments.push(
174
+ new ExportBindingInitFragment(
175
+ module.exportsArgument,
176
+ [
177
+ {
178
+ name: used,
179
+ value: `/* binding */ ${dep.id}`,
180
+ bindingType: "value"
181
+ }
182
+ ],
183
+ true
184
+ )
185
+ );
186
+ } else {
187
+ /** @type {ExportMap} */
188
+ const map = new Map();
189
+ map.set(used, `/* binding */ ${dep.id}`);
190
+ initFragments.push(
191
+ new HarmonyExportInitFragment(module.exportsArgument, map, undefined)
192
+ );
193
+ }
124
194
  }
125
195
  };
126
196
 
@@ -9,12 +9,14 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
 
10
10
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
11
11
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
12
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
12
13
  /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
13
14
 
14
15
  /** @type {WeakMap<JavascriptParserState, boolean>} */
15
16
  const parserStateExportsState = new WeakMap();
16
17
 
17
18
  /**
19
+ * Processes the provided parser state.
18
20
  * @param {JavascriptParserState} parserState parser state
19
21
  * @param {boolean} isStrictHarmony strict harmony mode should be enabled
20
22
  * @returns {void}
@@ -24,7 +26,9 @@ module.exports.enable = (parserState, isStrictHarmony) => {
24
26
  if (value === false) return;
25
27
  parserStateExportsState.set(parserState, true);
26
28
  if (value !== true) {
27
- const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
29
+ const buildMeta =
30
+ /** @type {JavascriptModuleBuildMeta} */
31
+ (parserState.module.buildMeta);
28
32
  buildMeta.exportsType = "namespace";
29
33
  const buildInfo = /** @type {BuildInfo} */ (parserState.module.buildInfo);
30
34
  buildInfo.strict = true;
@@ -37,6 +41,7 @@ module.exports.enable = (parserState, isStrictHarmony) => {
37
41
  };
38
42
 
39
43
  /**
44
+ * Returns true, when enabled.
40
45
  * @param {JavascriptParserState} parserState parser state
41
46
  * @returns {boolean} true, when enabled
42
47
  */
@@ -7,11 +7,12 @@
7
7
 
8
8
  const ConditionalInitFragment = require("../ConditionalInitFragment");
9
9
  const Dependency = require("../Dependency");
10
- const HarmonyLinkingError = require("../HarmonyLinkingError");
11
10
  const InitFragment = require("../InitFragment");
12
11
  const Template = require("../Template");
13
12
  const AwaitDependenciesInitFragment = require("../async-modules/AwaitDependenciesInitFragment");
13
+ const isGeneratorLowered = require("../async-modules/isGeneratorLowered");
14
14
  const { filterRuntime, mergeRuntime } = require("../util/runtime");
15
+ const HarmonyLinkingError = require("./HarmonyLinkingError");
15
16
  const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
16
17
  const ModuleDependency = require("./ModuleDependency");
17
18
 
@@ -23,7 +24,7 @@ const ModuleDependency = require("./ModuleDependency");
23
24
  /** @typedef {import("../Module")} Module */
24
25
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
25
26
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
26
- /** @typedef {import("../WebpackError")} WebpackError */
27
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
27
28
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
28
29
  /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
29
30
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -38,6 +39,7 @@ const ExportPresenceModes = {
38
39
  AUTO: /** @type {ExportPresenceMode} */ (2),
39
40
  ERROR: /** @type {ExportPresenceMode} */ (3),
40
41
  /**
42
+ * Returns result.
41
43
  * @param {string | false} str param
42
44
  * @returns {ExportPresenceMode} result
43
45
  */
@@ -90,6 +92,7 @@ const getNonOptionalPart = (members, membersOptionals) => {
90
92
 
91
93
  class HarmonyImportDependency extends ModuleDependency {
92
94
  /**
95
+ * Creates an instance of HarmonyImportDependency.
93
96
  * @param {string} request request string
94
97
  * @param {number} sourceOrder source order
95
98
  * @param {ImportPhaseType=} phase import phase
@@ -102,8 +105,12 @@ class HarmonyImportDependency extends ModuleDependency {
102
105
  attributes = undefined
103
106
  ) {
104
107
  super(request, sourceOrder);
108
+ /** @type {ImportPhaseType} */
105
109
  this.phase = phase;
110
+ /** @type {ImportAttributes | undefined} */
106
111
  this.attributes = attributes;
112
+ /** @type {boolean} */
113
+ this._lazyMake = false;
107
114
  }
108
115
 
109
116
  get category() {
@@ -111,6 +118,31 @@ class HarmonyImportDependency extends ModuleDependency {
111
118
  }
112
119
 
113
120
  /**
121
+ * Whether the lazy barrel currently defers creating this dependency's target module (lazy barrel optimization).
122
+ * @returns {boolean} true while deferred, so it must not be processed or rendered
123
+ */
124
+ isLazy() {
125
+ return this._lazyMake;
126
+ }
127
+
128
+ /**
129
+ * Sets whether the lazy barrel defers creating this dependency's target module (lazy barrel optimization).
130
+ * @param {boolean} value true to defer, false to create it now
131
+ */
132
+ setLazy(value) {
133
+ this._lazyMake = value;
134
+ }
135
+
136
+ /**
137
+ * Returns true if this dependency can be concatenated
138
+ * @returns {boolean} true if this dependency can be concatenated
139
+ */
140
+ canConcatenate() {
141
+ return true;
142
+ }
143
+
144
+ /**
145
+ * Returns an identifier to merge equal requests.
114
146
  * @returns {string | null} an identifier to merge equal requests
115
147
  */
116
148
  getResourceIdentifier() {
@@ -136,6 +168,7 @@ class HarmonyImportDependency extends ModuleDependency {
136
168
  }
137
169
 
138
170
  /**
171
+ * Returns name of the variable for the import.
139
172
  * @param {ModuleGraph} moduleGraph the module graph
140
173
  * @returns {string} name of the variable for the import
141
174
  */
@@ -158,7 +191,7 @@ class HarmonyImportDependency extends ModuleDependency {
158
191
 
159
192
  let importVar = importVarMap.get(importedModule);
160
193
  if (importVar) return importVar;
161
- importVar = `${Template.toIdentifier(`${this.userRequest}`)}__WEBPACK_${
194
+ importVar = `${Template.toIdentifier(this.userRequest)}__WEBPACK_${
162
195
  isDeferred ? "DEFERRED_" : ""
163
196
  }IMPORTED_MODULE_${importVarMap.size}__`;
164
197
  importVarMap.set(importedModule, importVar);
@@ -166,6 +199,7 @@ class HarmonyImportDependency extends ModuleDependency {
166
199
  }
167
200
 
168
201
  /**
202
+ * Gets module exports.
169
203
  * @param {DependencyTemplateContext} context the template context
170
204
  * @returns {string} the expression
171
205
  */
@@ -184,6 +218,7 @@ class HarmonyImportDependency extends ModuleDependency {
184
218
  }
185
219
 
186
220
  /**
221
+ * Gets import statement.
187
222
  * @param {boolean} update create new variables or update existing one
188
223
  * @param {DependencyTemplateContext} templateContext the template context
189
224
  * @returns {[string, string]} the import statement and the compat statement
@@ -206,6 +241,7 @@ class HarmonyImportDependency extends ModuleDependency {
206
241
  }
207
242
 
208
243
  /**
244
+ * Gets linking errors.
209
245
  * @param {ModuleGraph} moduleGraph module graph
210
246
  * @param {Ids} ids imported ids
211
247
  * @param {string} additionalMessage extra info included in the error message
@@ -324,22 +360,26 @@ class HarmonyImportDependency extends ModuleDependency {
324
360
  }
325
361
 
326
362
  /**
363
+ * Serializes this instance into the provided serializer context.
327
364
  * @param {ObjectSerializerContext} context context
328
365
  */
329
366
  serialize(context) {
330
367
  const { write } = context;
331
368
  write(this.attributes);
332
369
  write(this.phase);
370
+ write(this._lazyMake);
333
371
  super.serialize(context);
334
372
  }
335
373
 
336
374
  /**
375
+ * Restores this instance from the provided deserializer context.
337
376
  * @param {ObjectDeserializerContext} context context
338
377
  */
339
378
  deserialize(context) {
340
379
  const { read } = context;
341
380
  this.attributes = read();
342
381
  this.phase = read();
382
+ this._lazyMake = read();
343
383
  super.deserialize(context);
344
384
  }
345
385
  }
@@ -353,6 +393,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
353
393
  ModuleDependency.Template
354
394
  ) {
355
395
  /**
396
+ * Applies the plugin by registering its hooks on the compiler.
356
397
  * @param {Dependency} dependency the dependency for which the template should be applied
357
398
  * @param {ReplaceSource} source the current replace source which can be modified
358
399
  * @param {DependencyTemplateContext} templateContext the context object
@@ -363,6 +404,10 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
363
404
  const { module, chunkGraph, moduleGraph, runtime } = templateContext;
364
405
 
365
406
  const connection = moduleGraph.getConnection(dep);
407
+ // deferred by lazy barrel: never resolved, must not render a missing module
408
+ if (connection === undefined && dep.isLazy()) {
409
+ return;
410
+ }
366
411
  if (connection && !connection.isTargetActive(runtime)) return;
367
412
 
368
413
  const referencedModule = connection && connection.module;
@@ -431,8 +476,18 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
431
476
  )
432
477
  );
433
478
  const importVar = dep.getImportVar(templateContext.moduleGraph);
479
+ // When the consuming module is emitted as a generator (target without
480
+ // `async`/`await`), the dependency `await` must become `yield`.
481
+ const generatorLowered = isGeneratorLowered(
482
+ /** @type {Module} */ (module),
483
+ moduleGraph,
484
+ templateContext.runtimeTemplate
485
+ );
434
486
  templateContext.initFragments.push(
435
- new AwaitDependenciesInitFragment(new Map([[importVar, importVar]]))
487
+ new AwaitDependenciesInitFragment(
488
+ new Map([[importVar, importVar]]),
489
+ generatorLowered
490
+ )
436
491
  );
437
492
  templateContext.initFragments.push(
438
493
  new ConditionalInitFragment(
@@ -457,6 +512,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
457
512
  }
458
513
 
459
514
  /**
515
+ * Gets import emitted runtime.
460
516
  * @param {Module} module the module
461
517
  * @param {Module} referencedModule the referenced module
462
518
  * @returns {RuntimeSpec | boolean} runtimeCondition in which this import has been emitted