@depup/webpack 5.109.2-depup.0 → 5.110.1-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 (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
9
8
  const WebpackError = require("../errors/WebpackError");
9
+ const getParserHooks = require("../hmr/parserHooks");
10
10
  const {
11
11
  VariableInfo,
12
12
  getImportAttributes
@@ -29,25 +29,30 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
29
29
  const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
30
30
  const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
31
31
 
32
- /** @typedef {import("estree").Expression} Expression */
33
- /** @typedef {import("estree").PrivateIdentifier} PrivateIdentifier */
34
- /** @typedef {import("estree").Identifier} Identifier */
35
- /** @typedef {import("estree").MemberExpression} MemberExpression */
36
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
37
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
38
- /** @typedef {import("../Module")} Module */
39
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
40
- /** @typedef {import("../javascript/JavascriptParser").ExportAllDeclaration} ExportAllDeclaration */
41
- /** @typedef {import("../javascript/JavascriptParser").ExportNamedDeclaration} ExportNamedDeclaration */
42
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
43
- /** @typedef {import("../javascript/JavascriptParser").ImportDeclaration} ImportDeclaration */
44
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
45
- /** @typedef {import("../javascript/JavascriptParser").Members} Members */
46
- /** @typedef {import("../javascript/JavascriptParser").MembersOptionals} MembersOptionals */
47
- /** @typedef {import("./HarmonyImportDependency").Ids} Ids */
48
- /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
49
- /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
50
- /** @typedef {import("./HarmonyImportGuard").GuardFrame} GuardFrame */
32
+ /**
33
+ * @import {
34
+ * Expression,
35
+ * PrivateIdentifier,
36
+ * Identifier,
37
+ * MemberExpression
38
+ * } from "estree"
39
+ */
40
+ /**
41
+ * @import {
42
+ * JavascriptParserOptions
43
+ * } from "../../declarations/WebpackOptions"
44
+ */
45
+ /** @import Module from "../Module" */
46
+ /**
47
+ * @import JavascriptParser, {
48
+ * ImportAttributes,
49
+ * Range,
50
+ * Members
51
+ * } from "../javascript/JavascriptParser"
52
+ */
53
+ /** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
54
+ /** @import { ImportPhaseType } from "./ImportPhase" */
55
+ /** @import { GuardFrame } from "./HarmonyImportGuard" */
51
56
 
52
57
  const harmonySpecifierTag = Symbol("harmony import");
53
58
 
@@ -147,7 +152,7 @@ const findImportSpecifier = (parser, node) => {
147
152
  }
148
153
  };
149
154
 
150
- module.exports = class HarmonyImportDependencyParserPlugin {
155
+ class HarmonyImportDependencyParserPlugin {
151
156
  /**
152
157
  * Creates an instance of HarmonyImportDependencyParserPlugin.
153
158
  * @param {JavascriptParserOptions} options options
@@ -496,7 +501,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
496
501
  return true;
497
502
  });
498
503
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
499
- HotModuleReplacementPlugin.getParserHooks(parser);
504
+ getParserHooks(parser);
500
505
  hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
501
506
  if (!HarmonyExports.isEnabled(parser.state)) {
502
507
  // This is not a harmony module, skip it
@@ -567,6 +572,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
567
572
  return { consequent, alternate };
568
573
  });
569
574
  }
570
- };
575
+ }
576
+
577
+ HarmonyImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
571
578
 
572
- module.exports.harmonySpecifierTag = harmonySpecifierTag;
579
+ module.exports = HarmonyImportDependencyParserPlugin;
@@ -6,19 +6,18 @@
6
6
  "use strict";
7
7
 
8
8
  const { InlinedUsedName } = require("../optimize/InlineExports");
9
- const memoize = require("../util/memoize");
10
9
 
11
- /** @typedef {import("estree").Expression} Expression */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../Module")} Module */
14
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
16
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
17
- /** @typedef {import("./CommonJsFullRequireDependency")} CommonJsFullRequireDependency */
18
- /** @typedef {import("./CommonJsRequireDependency")} CommonJsRequireDependency */
19
- /** @typedef {import("./HarmonyEvaluatedImportSpecifierDependency")} HarmonyEvaluatedImportSpecifierDependency */
20
- /** @typedef {import("./HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
21
- /** @typedef {import("./ImportDependency")} ImportDependency */
10
+ /** @import { Expression } from "estree" */
11
+ /** @import Dependency from "../Dependency" */
12
+ /** @import Module from "../Module" */
13
+ /** @import ModuleGraph from "../ModuleGraph" */
14
+ /** @import JavascriptParser from "../javascript/JavascriptParser" */
15
+ /** @import { RuntimeSpec } from "../util/runtime" */
16
+ /** @import CommonJsFullRequireDependency from "./CommonJsFullRequireDependency" */
17
+ /** @import CommonJsRequireDependency from "./CommonJsRequireDependency" */
18
+ /** @import HarmonyEvaluatedImportSpecifierDependency from "./HarmonyEvaluatedImportSpecifierDependency" */
19
+ /** @import HarmonyImportSpecifierDependency from "./HarmonyImportSpecifierDependency" */
20
+ /** @import ImportDependency from "./ImportDependency" */
22
21
 
23
22
  // Tuple-encoded boolean formula over guard dependencies. Split into per-shape
24
23
  // aliases so the recursive references resolve through array/object types.
@@ -44,13 +43,6 @@ const memoize = require("../util/memoize");
44
43
  * @property {GuardFormula | null=} presenceFormula memoized presence formula (null = no presence atom)
45
44
  */
46
45
 
47
- const getHarmonyImportSpecifierDependency = memoize(() =>
48
- require("./HarmonyImportSpecifierDependency")
49
- );
50
- const getHarmonyEvaluatedImportSpecifierDependency = memoize(() =>
51
- require("./HarmonyEvaluatedImportSpecifierDependency")
52
- );
53
-
54
46
  // Tri-state truthiness: UNKNOWN means not statically known.
55
47
  const UNKNOWN = 0;
56
48
  const FALSE = 1;
@@ -214,19 +206,17 @@ const isDeadByGuards = (guards, moduleGraph, runtime) => {
214
206
  * @returns {GuardFormula | null} formula, or null when it has no knowable atom
215
207
  */
216
208
  const buildFrameLivenessFormula = (parser, frame) => {
217
- const HarmonyImportSpecifierDependency =
218
- getHarmonyImportSpecifierDependency();
219
- const HarmonyEvaluatedImportSpecifierDependency =
220
- getHarmonyEvaluatedImportSpecifierDependency();
221
209
  const deps = /** @type {Module} */ (parser.state.module).dependencies;
222
210
  /** @type {Map<number, HarmonyImportSpecifierDependency>} */
223
211
  const depByRangeStart = new Map();
224
212
  for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
225
- const dep = deps[i];
213
+ const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
214
+ deps[i]
215
+ );
226
216
  // Exclude `"x" in ns` evaluated deps; those feed the presence formula only.
227
217
  if (
228
- dep instanceof HarmonyImportSpecifierDependency &&
229
- !(dep instanceof HarmonyEvaluatedImportSpecifierDependency) &&
218
+ dep.isHarmonyImportSpecifier === true &&
219
+ dep.isHarmonyEvaluatedImportSpecifier !== true &&
230
220
  dep.range
231
221
  ) {
232
222
  depByRangeStart.set(dep.range[0], dep);
@@ -341,14 +331,14 @@ const evalPresenceFormula = (formula, name, member, needTruthy) => {
341
331
  * @returns {GuardFormula | null} formula, or null when it has no presence atom
342
332
  */
343
333
  const buildFramePresenceFormula = (parser, frame) => {
344
- const HarmonyEvaluatedImportSpecifierDependency =
345
- getHarmonyEvaluatedImportSpecifierDependency();
346
334
  const deps = /** @type {Module} */ (parser.state.module).dependencies;
347
335
  /** @type {Map<number, HarmonyEvaluatedImportSpecifierDependency>} */
348
336
  const depByRangeStart = new Map();
349
337
  for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
350
- const dep = deps[i];
351
- if (dep instanceof HarmonyEvaluatedImportSpecifierDependency && dep.range) {
338
+ const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
339
+ deps[i]
340
+ );
341
+ if (dep.isHarmonyEvaluatedImportSpecifier === true && dep.range) {
352
342
  depByRangeStart.set(dep.range[0], dep);
353
343
  }
354
344
  }
@@ -6,19 +6,20 @@
6
6
  "use strict";
7
7
 
8
8
  const Dependency = require("../Dependency");
9
+ const InitFragment = require("../InitFragment");
9
10
  const Module = require("../Module");
10
11
  const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
11
12
  const makeSerializable = require("../util/makeSerializable");
12
13
  const HarmonyImportDependency = require("./HarmonyImportDependency");
14
+ const { ImportPhaseUtils } = require("./ImportPhase");
13
15
 
14
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
16
- /** @typedef {import("../Dependency").LazyUntil} LazyUntil */
17
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
21
- /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
16
+ /** @import { ReplaceSource } from "webpack-sources" */
17
+ /** @import { GetConditionFn, LazyUntil } from "../Dependency" */
18
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
19
+ /** @import ModuleGraph from "../ModuleGraph" */
20
+ /** @import { ConnectionState } from "../ModuleGraphConnection" */
21
+ /** @import { ImportAttributes } from "../javascript/JavascriptParser" */
22
+ /** @import { ImportPhaseType } from "./ImportPhase" */
22
23
 
23
24
  class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
24
25
  /**
@@ -93,7 +94,8 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
93
94
  * @returns {void}
94
95
  */
95
96
  apply(dependency, source, templateContext) {
96
- const { moduleGraph, concatenationScope } = templateContext;
97
+ const { moduleGraph, concatenationScope, runtime, initFragments } =
98
+ templateContext;
97
99
 
98
100
  const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
99
101
 
@@ -103,6 +105,33 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
103
105
  }
104
106
 
105
107
  if (concatenationScope && concatenationScope.isModuleInScope(module)) {
108
+ if (concatenationScope.isModuleWrapped(module)) {
109
+ const dep = /** @type {HarmonyImportSideEffectDependency} */ (
110
+ dependency
111
+ );
112
+ if (ImportPhaseUtils.isDefer(dep.phase)) return;
113
+ const connection = moduleGraph.getConnection(dep);
114
+ if (!connection || !connection.isTargetActive(runtime)) return;
115
+ // A hoisted body cannot be deferred, so its imports evaluate at their
116
+ // own slots; calling from here would run them after everything hoisted
117
+ // in between. Eagerness stops at one level: a module is generated
118
+ // before its importers, so it never learns whether it is itself eager.
119
+ if (concatenationScope.isWrapped()) {
120
+ initFragments.push(
121
+ new InitFragment(
122
+ `${concatenationScope.createModuleReference(module, {
123
+ moduleExportsAccess: true,
124
+ asiSafe: true
125
+ })};\n`,
126
+ InitFragment.STAGE_HARMONY_IMPORTS,
127
+ /** @type {number} */ (dep.sourceOrder),
128
+ `cjs eager init ${module.identifier()}`
129
+ )
130
+ );
131
+ } else {
132
+ concatenationScope.registerEagerModule(module);
133
+ }
134
+ }
106
135
  return;
107
136
  }
108
137
  super.apply(dependency, source, templateContext);
@@ -11,6 +11,7 @@ const Template = require("../Template");
11
11
  const {
12
12
  InlinedUsedName,
13
13
  isExportInlined,
14
+ isInlineEnabled,
14
15
  isInlineExportsEnabled
15
16
  } = require("../optimize/InlineExports");
16
17
  const {
@@ -18,38 +19,48 @@ const {
18
19
  } = require("../optimize/InnerGraph");
19
20
  const { getTrimmedIdsAndRange } = require("../util/chainedImports");
20
21
  const makeSerializable = require("../util/makeSerializable");
21
- const memoize = require("../util/memoize");
22
22
  const { propertyAccess } = require("../util/property");
23
23
  const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
24
24
  const HarmonyImportDependency = require("./HarmonyImportDependency");
25
+ const HarmonyImportGuard = require("./HarmonyImportGuard");
25
26
  const { ImportPhaseUtils } = require("./ImportPhase");
26
27
 
27
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
28
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
29
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
30
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
31
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
32
- /** @typedef {import("../Module")} Module */
33
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
34
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
35
- /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
36
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
37
- /** @typedef {import("../errors/WebpackError")} WebpackError */
38
- /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
39
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
40
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
41
- /** @typedef {import("../optimize/InnerGraph").UsedByExports} UsedByExports */
42
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
43
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
44
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
45
- /** @typedef {import("../util/chainedImports").IdRanges} IdRanges */
46
- /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
28
+ /** @import { ReplaceSource } from "webpack-sources" */
29
+ /** @import { GetConditionFn, ReferencedExports } from "../Dependency" */
30
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
31
+ /** @import Module, { BuildMeta } from "../Module" */
32
+ /** @import ModuleGraph from "../ModuleGraph" */
33
+ /**
34
+ * @import ModuleGraphConnection, {
35
+ * ConnectionState
36
+ * } from "../ModuleGraphConnection"
37
+ */
38
+ /** @import WebpackError from "../errors/WebpackError" */
39
+ /**
40
+ * @import {
41
+ * DestructuringAssignmentProperties,
42
+ * ImportAttributes,
43
+ * Range
44
+ * } from "../javascript/JavascriptParser"
45
+ */
46
+ /** @import { UsedByExports } from "../optimize/InnerGraph" */
47
+ /**
48
+ * @import {
49
+ * ObjectDeserializerContext,
50
+ * ObjectSerializerContext
51
+ * } from "../serialization/ObjectMiddleware"
52
+ */
53
+ /** @import { RuntimeSpec } from "../util/runtime" */
54
+ /** @import { IdRanges } from "../util/chainedImports" */
55
+ /** @import { ExportPresenceMode } from "./HarmonyImportDependency" */
47
56
  /** @typedef {HarmonyImportDependency.Ids} Ids */
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"));
57
+ /** @import { ImportPhaseType } from "./ImportPhase" */
58
+ /** @import { DependencyGuard } from "./HarmonyImportGuard" */
59
+ /**
60
+ * @import {
61
+ * JavascriptModuleBuildMeta
62
+ * } from "../javascript/JavascriptModule"
63
+ */
53
64
 
54
65
  const idsSymbol = /** @type {symbol} */ (
55
66
  Symbol("HarmonyImportSpecifierDependency.ids")
@@ -57,7 +68,22 @@ const idsSymbol = /** @type {symbol} */ (
57
68
 
58
69
  const { ExportPresenceModes } = HarmonyImportDependency;
59
70
 
71
+ /**
72
+ * One condition closure per module graph and variant rather than per dependency.
73
+ * The dependency the condition was built for is always the one on the connection
74
+ * it is called with, since `ModuleGraph#setResolvedModule` is the only caller of
75
+ * `getCondition` and pairs the two. Indexed by
76
+ * `(usedByExports ? 1 : 0) | (inlineEnabled ? 2 : 0)`.
77
+ * @type {WeakMap<ModuleGraph, (GetConditionFn | undefined)[]>}
78
+ */
79
+ const conditionsByModuleGraph = new WeakMap();
80
+
60
81
  class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
82
+ // read by `HarmonyImportGuard` in place of `instanceof`, which would cycle
83
+ get isHarmonyImportSpecifier() {
84
+ return true;
85
+ }
86
+
61
87
  /**
62
88
  * Creates an instance of HarmonyImportSpecifierDependency.
63
89
  * @param {string} request request
@@ -181,36 +207,59 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
181
207
  moduleGraph
182
208
  );
183
209
  if (usedByExportsCondition === false) return false;
210
+ const inlineEnabled = isInlineExportsEnabled(moduleGraph);
184
211
  // Keep the connection unconditional (fast path) when nothing can deactivate it
185
212
  if (
186
213
  usedByExportsCondition === null &&
187
214
  this.branchGuards === undefined &&
188
- !isInlineExportsEnabled(moduleGraph)
215
+ !inlineEnabled
189
216
  ) {
190
217
  return null;
191
218
  }
192
- const dep = this;
193
- return (connection, runtime) => {
219
+ // Everything the condition still needs is either per module graph or on
220
+ // the connection it is called with, so one closure per variant serves the
221
+ // whole graph instead of one per dependency.
222
+ const slot =
223
+ (usedByExportsCondition === null ? 0 : 1) | (inlineEnabled ? 2 : 0);
224
+ let variants = conditionsByModuleGraph.get(moduleGraph);
225
+ if (variants === undefined) {
226
+ variants = [undefined, undefined, undefined, undefined];
227
+ conditionsByModuleGraph.set(moduleGraph, variants);
228
+ }
229
+ const cached = variants[slot];
230
+ if (cached !== undefined) return cached;
231
+ /** @type {GetConditionFn} */
232
+ const condition = (connection, runtime) => {
233
+ const dep = /** @type {HarmonyImportSpecifierDependency} */ (
234
+ connection.dependency
235
+ );
194
236
  if (usedByExportsCondition !== null) {
195
237
  const result = usedByExportsCondition(connection, runtime);
196
238
  if (result === false) return false;
197
239
  }
198
- const ids = dep.getIds(moduleGraph);
199
- if (
200
- ids.length > 0 &&
201
- isExportInlined(moduleGraph, connection.module, ids, runtime)
202
- ) {
203
- return false;
240
+ // `isInlineEnabled` is the cheap module-level precondition of
241
+ // `isExportInlined`; checking it here keeps the id lookup off the hot
242
+ // path for the common target module that has no inlined exports
243
+ if (inlineEnabled && isInlineEnabled(connection.module)) {
244
+ const ids = dep.getIds(moduleGraph);
245
+ if (
246
+ ids.length > 0 &&
247
+ isExportInlined(moduleGraph, connection.module, ids, runtime)
248
+ ) {
249
+ return false;
250
+ }
204
251
  }
205
252
  const guards = dep.branchGuards;
206
253
  if (
207
254
  guards !== undefined &&
208
- getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime)
255
+ HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
209
256
  ) {
210
257
  return false;
211
258
  }
212
259
  return true;
213
260
  };
261
+ variants[slot] = condition;
262
+ return condition;
214
263
  }
215
264
 
216
265
  /**
@@ -287,21 +336,19 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
287
336
  */
288
337
  _getReferencedExportsInDestructuring(ids) {
289
338
  if (this.referencedPropertiesInDestructuring) {
290
- /** @type {RawReferencedExports} */
291
- const refsInDestructuring = [];
339
+ /** @type {ReferencedExports} */
340
+ const refs = [];
292
341
  traverseDestructuringAssignmentProperties(
293
342
  this.referencedPropertiesInDestructuring,
294
- (stack) => refsInDestructuring.push(stack.map((p) => p.id))
343
+ (stack) => {
344
+ const idsInDestructuring = stack.map((p) => p.id);
345
+ // Destructuring consumer can't accept an inlined literal
346
+ refs.push({
347
+ name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
348
+ canInline: false
349
+ });
350
+ }
295
351
  );
296
- /** @type {ReferencedExports} */
297
- const refs = [];
298
- for (const idsInDestructuring of refsInDestructuring) {
299
- // Destructuring consumer can't accept an inlined literal
300
- refs.push({
301
- name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
302
- canInline: false
303
- });
304
- }
305
352
  return refs;
306
353
  }
307
354
  return ids
@@ -643,5 +690,6 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
643
690
  }
644
691
  };
645
692
 
693
+ HarmonyImportSpecifierDependency.idsSymbol = idsSymbol;
694
+
646
695
  module.exports = HarmonyImportSpecifierDependency;
647
- module.exports.idsSymbol = idsSymbol;
@@ -27,9 +27,13 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
27
27
  const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
28
28
  const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
29
29
 
30
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
31
- /** @typedef {import("../Compiler")} Compiler */
32
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
30
+ /**
31
+ * @import {
32
+ * JavascriptParserOptions
33
+ * } from "../../declarations/WebpackOptions"
34
+ */
35
+ /** @import Compiler from "../Compiler" */
36
+ /** @import Parser from "../javascript/JavascriptParser" */
33
37
 
34
38
  /**
35
39
  * Defines the harmony modules plugin options type used by this module.
@@ -8,9 +8,7 @@
8
8
  const ConstDependency = require("./ConstDependency");
9
9
  const HarmonyExports = require("./HarmonyExports");
10
10
 
11
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
12
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
13
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
11
+ /** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
14
12
 
15
13
  const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
16
14