@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
@@ -8,11 +8,17 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const InitFragment = require("../InitFragment");
10
10
  const Template = require("../Template");
11
+ const {
12
+ InlinedUsedName,
13
+ isExportInlined,
14
+ isInlineExportsEnabled
15
+ } = require("../optimize/InlineExports");
11
16
  const {
12
17
  getDependencyUsedByExportsCondition
13
18
  } = require("../optimize/InnerGraph");
14
19
  const { getTrimmedIdsAndRange } = require("../util/chainedImports");
15
20
  const makeSerializable = require("../util/makeSerializable");
21
+ const memoize = require("../util/memoize");
16
22
  const { propertyAccess } = require("../util/property");
17
23
  const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
18
24
  const HarmonyImportDependency = require("./HarmonyImportDependency");
@@ -26,8 +32,9 @@ const { ImportPhaseUtils } = require("./ImportPhase");
26
32
  /** @typedef {import("../Module")} Module */
27
33
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
28
34
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
35
+ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
29
36
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
30
- /** @typedef {import("../WebpackError")} WebpackError */
37
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
31
38
  /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
32
39
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
33
40
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
@@ -39,6 +46,10 @@ const { ImportPhaseUtils } = require("./ImportPhase");
39
46
  /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
40
47
  /** @typedef {HarmonyImportDependency.Ids} Ids */
41
48
  /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
49
+ /** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
50
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
51
+
52
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
42
53
 
43
54
  const idsSymbol = /** @type {symbol} */ (
44
55
  Symbol("HarmonyImportSpecifierDependency.ids")
@@ -48,6 +59,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
48
59
 
49
60
  class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
50
61
  /**
62
+ * Creates an instance of HarmonyImportSpecifierDependency.
51
63
  * @param {string} request request
52
64
  * @param {number} sourceOrder source order
53
65
  * @param {Ids} ids ids
@@ -70,10 +82,14 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
70
82
  idRanges // TODO webpack 6 make this non-optional. It must always be set to properly trim ids.
71
83
  ) {
72
84
  super(request, sourceOrder, phase, attributes);
85
+ /** @type {Ids} */
73
86
  this.ids = ids;
87
+ /** @type {string} */
74
88
  this.name = name;
75
89
  this.range = range;
90
+ /** @type {IdRanges | undefined} */
76
91
  this.idRanges = idRanges;
92
+ /** @type {ExportPresenceMode} */
77
93
  this.exportPresenceMode = exportPresenceMode;
78
94
  /** @type {undefined | boolean} */
79
95
  this.namespaceObjectAsContext = false;
@@ -89,10 +105,13 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
89
105
  this.usedByExports = undefined;
90
106
  /** @type {DestructuringAssignmentProperties | undefined} */
91
107
  this.referencedPropertiesInDestructuring = undefined;
108
+ /** @type {DependencyGuard[] | undefined} */
109
+ this.branchGuards = undefined;
92
110
  }
93
111
 
94
112
  // TODO webpack 6 remove
95
113
  /**
114
+ * Returns id.
96
115
  * @deprecated
97
116
  */
98
117
  get id() {
@@ -101,6 +120,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
101
120
 
102
121
  // TODO webpack 6 remove
103
122
  /**
123
+ * Returns id.
104
124
  * @deprecated
105
125
  */
106
126
  getId() {
@@ -109,6 +129,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
109
129
 
110
130
  // TODO webpack 6 remove
111
131
  /**
132
+ * Updates id.
112
133
  * @deprecated
113
134
  */
114
135
  setId() {
@@ -120,6 +141,15 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
120
141
  }
121
142
 
122
143
  /**
144
+ * Returns the export name this dependency requests from its target module (lazy barrel optimization).
145
+ * @returns {string | true | null} export name, true for all exports, null for none
146
+ */
147
+ getForwardId() {
148
+ return this.ids.length > 0 ? this.ids[0] : true;
149
+ }
150
+
151
+ /**
152
+ * Returns the imported ids.
123
153
  * @param {ModuleGraph} moduleGraph the module graph
124
154
  * @returns {Ids} the imported ids
125
155
  */
@@ -131,6 +161,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
131
161
  }
132
162
 
133
163
  /**
164
+ * Updates ids using the provided module graph.
134
165
  * @param {ModuleGraph} moduleGraph the module graph
135
166
  * @param {Ids} ids the imported ids
136
167
  * @returns {void}
@@ -140,18 +171,50 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
140
171
  }
141
172
 
142
173
  /**
174
+ * Returns function to determine if the connection is active.
143
175
  * @param {ModuleGraph} moduleGraph module graph
144
176
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
145
177
  */
146
178
  getCondition(moduleGraph) {
147
- return getDependencyUsedByExportsCondition(
179
+ const usedByExportsCondition = getDependencyUsedByExportsCondition(
148
180
  this,
149
- this.usedByExports,
150
181
  moduleGraph
151
182
  );
183
+ if (usedByExportsCondition === false) return false;
184
+ // Keep the connection unconditional (fast path) when nothing can deactivate it
185
+ if (
186
+ usedByExportsCondition === null &&
187
+ this.branchGuards === undefined &&
188
+ !isInlineExportsEnabled(moduleGraph)
189
+ ) {
190
+ return null;
191
+ }
192
+ const dep = this;
193
+ return (connection, runtime) => {
194
+ if (usedByExportsCondition !== null) {
195
+ const result = usedByExportsCondition(connection, runtime);
196
+ if (result === false) return false;
197
+ }
198
+ const ids = dep.getIds(moduleGraph);
199
+ if (
200
+ ids.length > 0 &&
201
+ isExportInlined(moduleGraph, connection.module, ids, runtime)
202
+ ) {
203
+ return false;
204
+ }
205
+ const guards = dep.branchGuards;
206
+ if (
207
+ guards !== undefined &&
208
+ getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime)
209
+ ) {
210
+ return false;
211
+ }
212
+ return true;
213
+ };
152
214
  }
153
215
 
154
216
  /**
217
+ * Gets module evaluation side effects state.
155
218
  * @param {ModuleGraph} moduleGraph the module graph
156
219
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
157
220
  */
@@ -167,7 +230,16 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
167
230
  */
168
231
  getReferencedExports(moduleGraph, runtime) {
169
232
  let ids = this.getIds(moduleGraph);
170
- if (ids.length === 0) return this._getReferencedExportsInDestructuring();
233
+ if (ids.length === 0) {
234
+ const refs = this._getReferencedExportsInDestructuring();
235
+ // The whole namespace object is used as a value (no destructuring): it
236
+ // can be rendered as a decoupled namespace object, keeping the module's
237
+ // exports mangleable. Deferred imports keep their special namespace.
238
+ return refs === Dependency.EXPORTS_OBJECT_REFERENCED &&
239
+ !ImportPhaseUtils.isDefer(this.phase)
240
+ ? Dependency.EXPORTS_OBJECT_REFERENCED_MANGLEABLE
241
+ : refs;
242
+ }
171
243
  let namespaceObjectAsContext = this.namespaceObjectAsContext;
172
244
  if (ids[0] === "default") {
173
245
  const selfModule =
@@ -209,8 +281,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
209
281
  }
210
282
 
211
283
  /**
284
+ * Get referenced exports in destructuring.
212
285
  * @param {Ids=} ids ids
213
- * @returns {RawReferencedExports} referenced exports
286
+ * @returns {ReferencedExports} referenced exports
214
287
  */
215
288
  _getReferencedExportsInDestructuring(ids) {
216
289
  if (this.referencedPropertiesInDestructuring) {
@@ -220,17 +293,31 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
220
293
  this.referencedPropertiesInDestructuring,
221
294
  (stack) => refsInDestructuring.push(stack.map((p) => p.id))
222
295
  );
223
- /** @type {RawReferencedExports} */
296
+ /** @type {ReferencedExports} */
224
297
  const refs = [];
225
298
  for (const idsInDestructuring of refsInDestructuring) {
226
- refs.push(ids ? [...ids, ...idsInDestructuring] : idsInDestructuring);
299
+ // Destructuring consumer can't accept an inlined literal
300
+ refs.push({
301
+ name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
302
+ canInline: false
303
+ });
227
304
  }
228
305
  return refs;
229
306
  }
230
- return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
307
+ return ids
308
+ ? [
309
+ {
310
+ name: ids,
311
+ canMangle: true,
312
+ // Need access the export value to trigger side effects for deferred module
313
+ canInline: !ImportPhaseUtils.isDefer(this.phase)
314
+ }
315
+ ]
316
+ : Dependency.EXPORTS_OBJECT_REFERENCED;
231
317
  }
232
318
 
233
319
  /**
320
+ * Get effective export presence level.
234
321
  * @param {ModuleGraph} moduleGraph module graph
235
322
  * @returns {ExportPresenceMode} effective mode
236
323
  */
@@ -239,7 +326,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
239
326
  return this.exportPresenceMode;
240
327
  }
241
328
  const buildMeta =
242
- /** @type {BuildMeta} */
329
+ /** @type {JavascriptModuleBuildMeta} */
243
330
  (
244
331
  /** @type {Module} */
245
332
  (moduleGraph.getParentModule(this)).buildMeta
@@ -250,7 +337,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
250
337
  }
251
338
 
252
339
  /**
253
- * Returns warnings
340
+ * Returns warnings.
254
341
  * @param {ModuleGraph} moduleGraph module graph
255
342
  * @returns {WebpackError[] | null | undefined} warnings
256
343
  */
@@ -263,7 +350,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
263
350
  }
264
351
 
265
352
  /**
266
- * Returns errors
353
+ * Returns errors.
267
354
  * @param {ModuleGraph} moduleGraph module graph
268
355
  * @returns {WebpackError[] | null | undefined} errors
269
356
  */
@@ -276,6 +363,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
276
363
  }
277
364
 
278
365
  /**
366
+ * Returns errors.
279
367
  * @param {ModuleGraph} moduleGraph module graph
280
368
  * @returns {WebpackError[] | undefined} errors
281
369
  */
@@ -297,6 +385,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
297
385
  }
298
386
 
299
387
  /**
388
+ * Serializes this instance into the provided serializer context.
300
389
  * @param {ObjectSerializerContext} context context
301
390
  */
302
391
  serialize(context) {
@@ -313,10 +402,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
313
402
  write(this.asiSafe);
314
403
  write(this.usedByExports);
315
404
  write(this.referencedPropertiesInDestructuring);
405
+ write(this.branchGuards);
316
406
  super.serialize(context);
317
407
  }
318
408
 
319
409
  /**
410
+ * Restores this instance from the provided deserializer context.
320
411
  * @param {ObjectDeserializerContext} context context
321
412
  */
322
413
  deserialize(context) {
@@ -333,6 +424,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
333
424
  this.asiSafe = read();
334
425
  this.usedByExports = read();
335
426
  this.referencedPropertiesInDestructuring = read();
427
+ this.branchGuards = read();
336
428
  super.deserialize(context);
337
429
  }
338
430
  }
@@ -346,6 +438,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
346
438
  HarmonyImportDependency.Template
347
439
  ) {
348
440
  /**
441
+ * Applies the plugin by registering its hooks on the compiler.
349
442
  * @param {Dependency} dependency the dependency for which the template should be applied
350
443
  * @param {ReplaceSource} source the current replace source which can be modified
351
444
  * @param {DependencyTemplateContext} templateContext the context object
@@ -355,9 +448,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
355
448
  const dep = /** @type {HarmonyImportSpecifierDependency} */ (dependency);
356
449
  const { moduleGraph, runtime, initFragments } = templateContext;
357
450
  const connection = moduleGraph.getConnection(dep);
451
+ const ids = dep.getIds(moduleGraph);
358
452
 
359
- // Only render declaration for import specifier when the dependency is conditional
360
- if (connection && !connection.isTargetActive(runtime)) {
453
+ if (
454
+ connection &&
455
+ !connection.isTargetActive(runtime) &&
456
+ !isExportInlined(moduleGraph, connection.module, ids, runtime)
457
+ ) {
361
458
  initFragments.push(
362
459
  new InitFragment(
363
460
  `/* unused harmony import specifier */ var ${dep.name};\n`,
@@ -370,7 +467,6 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
370
467
  return;
371
468
  }
372
469
 
373
- const ids = dep.getIds(moduleGraph);
374
470
  const {
375
471
  trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
376
472
  trimmedIds
@@ -380,7 +476,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
380
476
  dep,
381
477
  source,
382
478
  templateContext,
383
- trimmedIds
479
+ trimmedIds,
480
+ connection
384
481
  );
385
482
  if (dep.shorthand) {
386
483
  source.insert(trimmedRangeEnd, `: ${exportExpr}`);
@@ -426,14 +523,24 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
426
523
  });
427
524
  }
428
525
  );
526
+ // loop-invariant: resolve the imported module's exports info once
527
+ const destructuredExportsInfo = moduleGraph.getExportsInfo(
528
+ /** @type {Module} */ (moduleGraph.getModule(dep))
529
+ );
429
530
  for (const { ids, shorthand, range } of replacementsInDestructuring) {
430
531
  /** @type {Ids} */
431
532
  const concatedIds = [...prefixedIds, ...ids];
432
- const module = /** @type {Module} */ (moduleGraph.getModule(dep));
433
- const used = moduleGraph
434
- .getExportsInfo(module)
435
- .getUsedName(concatedIds, runtime);
436
- if (!used) return;
533
+ const used = destructuredExportsInfo.getUsedName(concatedIds, runtime);
534
+ if (!used) {
535
+ return;
536
+ } else if (used instanceof InlinedUsedName) {
537
+ throw new Error(
538
+ `Should not inline for destructuring name ${concatedIds.join(".")}`
539
+ );
540
+ }
541
+ // Destructuring can't consume an inlined literal — should be unreachable
542
+ // because the consumer-side canInline=false suppresses inlining there.
543
+ if (!Array.isArray(used)) continue;
437
544
  const newName = used[used.length - 1];
438
545
  const name = concatedIds[concatedIds.length - 1];
439
546
  if (newName === name) continue;
@@ -450,18 +557,20 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
450
557
  }
451
558
 
452
559
  /**
560
+ * Returns generated code.
453
561
  * @param {HarmonyImportSpecifierDependency} dep dependency
454
562
  * @param {ReplaceSource} source source
455
563
  * @param {DependencyTemplateContext} templateContext context
456
564
  * @param {Ids} ids ids
565
+ * @param {ModuleGraphConnection | undefined} connection the resolved connection for dep
457
566
  * @returns {string} generated code
458
567
  */
459
- _getCodeForIds(dep, source, templateContext, ids) {
568
+ _getCodeForIds(dep, source, templateContext, ids, connection) {
460
569
  const { moduleGraph, module, runtime, concatenationScope } =
461
570
  templateContext;
462
- const connection = moduleGraph.getConnection(dep);
463
571
  /** @type {string} */
464
572
  let exportExpr;
573
+
465
574
  if (
466
575
  connection &&
467
576
  concatenationScope &&
@@ -472,7 +581,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
472
581
  connection.module,
473
582
  {
474
583
  asiSafe: dep.asiSafe,
475
- deferredImport: ImportPhaseUtils.isDefer(dep.phase)
584
+ deferredImport: ImportPhaseUtils.isDefer(dep.phase),
585
+ // A bare namespace value that isn't destructured may escape, so
586
+ // allow a decoupled namespace object that keeps the original names.
587
+ // Deferred imports keep their special namespace object.
588
+ mangleableNamespace:
589
+ !dep.referencedPropertiesInDestructuring &&
590
+ !ImportPhaseUtils.isDefer(dep.phase)
476
591
  }
477
592
  );
478
593
  } else if (dep.namespaceObjectAsContext && ids.length === 1) {
@@ -514,7 +629,14 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
514
629
  initFragments,
515
630
  runtime,
516
631
  runtimeRequirements,
517
- dependency: dep
632
+ dependency: dep,
633
+ // A bare namespace value that isn't destructured may escape, so allow a
634
+ // decoupled namespace object that keeps the original export names.
635
+ // Deferred imports keep their special namespace object.
636
+ mangleableNamespace:
637
+ ids.length === 0 &&
638
+ !dep.referencedPropertiesInDestructuring &&
639
+ !ImportPhaseUtils.isDefer(dep.phase)
518
640
  });
519
641
  }
520
642
  return exportExpr;
@@ -4,14 +4,17 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const WebpackError = require("./WebpackError");
7
+ const WebpackError = require("../errors/WebpackError");
8
8
 
9
- module.exports = class HarmonyLinkingError extends WebpackError {
9
+ class HarmonyLinkingError extends WebpackError {
10
10
  /** @param {string} message Error message */
11
11
  constructor(message) {
12
12
  super(message);
13
13
  /** @type {string} */
14
14
  this.name = "HarmonyLinkingError";
15
+ /** @type {boolean} */
15
16
  this.hideStack = true;
16
17
  }
17
- };
18
+ }
19
+
20
+ module.exports = HarmonyLinkingError;
@@ -25,12 +25,14 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
25
25
  const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
26
26
 
27
27
  const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
28
+ const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
28
29
 
29
30
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
30
31
  /** @typedef {import("../Compiler")} Compiler */
31
32
  /** @typedef {import("../javascript/JavascriptParser")} Parser */
32
33
 
33
34
  /**
35
+ * Defines the harmony modules plugin options type used by this module.
34
36
  * @typedef {object} HarmonyModulesPluginOptions
35
37
  * @property {boolean=} deferImport
36
38
  */
@@ -39,14 +41,16 @@ const PLUGIN_NAME = "HarmonyModulesPlugin";
39
41
 
40
42
  class HarmonyModulesPlugin {
41
43
  /**
44
+ * Creates an instance of HarmonyModulesPlugin.
42
45
  * @param {HarmonyModulesPluginOptions} options options
43
46
  */
44
47
  constructor(options) {
48
+ /** @type {HarmonyModulesPluginOptions} */
45
49
  this.options = options;
46
50
  }
47
51
 
48
52
  /**
49
- * Apply the plugin
53
+ * Applies the plugin by registering its hooks on the compiler.
50
54
  * @param {Compiler} compiler the compiler instance
51
55
  * @returns {void}
52
56
  */
@@ -59,6 +63,11 @@ class HarmonyModulesPlugin {
59
63
  new HarmonyCompatibilityDependency.Template()
60
64
  );
61
65
 
66
+ compilation.dependencyTemplates.set(
67
+ TopLevelAwaitDependency,
68
+ new TopLevelAwaitDependency.Template()
69
+ );
70
+
62
71
  compilation.dependencyFactories.set(
63
72
  HarmonyImportSideEffectDependency,
64
73
  normalModuleFactory
@@ -125,6 +134,7 @@ class HarmonyModulesPlugin {
125
134
  );
126
135
 
127
136
  /**
137
+ * Handles the hook callback for this code path.
128
138
  * @param {Parser} parser parser parser
129
139
  * @param {JavascriptParserOptions} parserOptions parserOptions
130
140
  * @returns {void}
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
16
16
 
17
17
  class HarmonyTopLevelThisParserPlugin {
18
18
  /**
19
+ * Applies the plugin by registering its hooks on the compiler.
19
20
  * @param {JavascriptParser} parser the parser
20
21
  * @returns {void}
21
22
  */
@@ -28,7 +29,7 @@ class HarmonyTopLevelThisParserPlugin {
28
29
  /** @type {Range} */ (node.range),
29
30
  null
30
31
  );
31
- dep.loc = /** @type {DependencyLocation} */ (node.loc);
32
+ dep.loc = parser.getLocation(node);
32
33
  parser.state.module.addPresentationalDependency(dep);
33
34
  return true;
34
35
  }