@depup/webpack 5.106.0-depup.0 → 5.109.0-depup.0

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