@depup/webpack 5.109.0-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -25,55 +25,75 @@ const WebpackError = require("./WebpackError");
25
25
  const { DEFAULTS } = require("./config/defaults");
26
26
  const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
27
27
  const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
28
- const EnvironmentNotSupportAsyncWarning = require("./errors/EnvironmentNotSupportAsyncWarning");
29
28
  const { coreModules } = require("./node/nodeBuiltins");
30
29
  const createHash = require("./util/createHash");
31
30
  const createHooksRegistry = require("./util/createHooksRegistry");
32
31
  const extractUrlAndGlobal = require("./util/extractUrlAndGlobal");
33
32
  const makeSerializable = require("./util/makeSerializable");
33
+ const memoize = require("./util/memoize");
34
34
  const { propertyAccess } = require("./util/property");
35
35
  const { register } = require("./util/serialization");
36
36
 
37
- /** @typedef {import("webpack-sources").Source} Source */
38
- /** @typedef {import("../declarations/WebpackOptions").ExternalsType} ExternalsType */
39
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
40
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
41
- /** @typedef {import("./Chunk")} Chunk */
42
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
43
- /** @typedef {import("./Compilation")} Compilation */
44
- /** @typedef {import("./Compilation").UnsafeCacheData} UnsafeCacheData */
45
- /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
46
- /** @typedef {import("./ExportsInfo")} ExportsInfo */
47
- /** @typedef {import("./Generator").GenerateContext} GenerateContext */
48
- /** @typedef {import("./Generator").SourceTypes} SourceTypes */
49
- /** @typedef {import("./Module").ModuleId} ModuleId */
50
- /** @typedef {import("./Module").BuildCallback} BuildCallback */
51
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
52
- /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
53
- /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
54
- /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
55
- /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
56
- /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
57
- /** @typedef {import("./Module").LibIdent} LibIdent */
58
- /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
59
- /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
60
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
61
- /** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
62
- /** @typedef {import("./Module").Sources} Sources */
63
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
64
- /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
65
- /** @typedef {import("./RequestShortener")} RequestShortener */
66
- /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
67
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
68
- /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
69
- /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
70
- /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
71
- /** @typedef {import("../declarations/WebpackOptions").ExternalItemInterop} ExternalInterop */
72
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined]>} ObjectDeserializerContext */
73
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined]>} ObjectSerializerContext */
74
- /** @typedef {import("./util/Hash")} Hash */
75
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
76
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
37
+ const getEnvironmentNotSupportAsyncWarning = memoize(() =>
38
+ require("./errors/EnvironmentNotSupportAsyncWarning")
39
+ );
40
+
41
+ /** @import { Source } from "webpack-sources" */
42
+ /**
43
+ * @import {
44
+ * ExternalsType,
45
+ * HashFunction,
46
+ * ExternalItemInterop as ExternalInterop
47
+ * } from "../declarations/WebpackOptions"
48
+ */
49
+ /**
50
+ * @import {
51
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
52
+ * } from "./config/defaults"
53
+ */
54
+ /** @import Chunk from "./Chunk" */
55
+ /** @import ChunkGraph, { ModuleId } from "./ChunkGraph" */
56
+ /** @import Compilation, { UnsafeCacheData } from "./Compilation" */
57
+ /** @import { UpdateHashContext } from "./Dependency" */
58
+ /** @import ExportsInfo from "./ExportsInfo" */
59
+ /** @import { GenerateContext } from "./Generator" */
60
+ /**
61
+ * @import {
62
+ * BuildMeta,
63
+ * BuildCallback,
64
+ * BuildInfo,
65
+ * CodeGenerationContext,
66
+ * CodeGenerationResult,
67
+ * CodeGenerationResultData,
68
+ * ConcatenationBailoutReasonContext,
69
+ * LibIdentOptions,
70
+ * LibIdent,
71
+ * NeedBuildCallback,
72
+ * NeedBuildContext,
73
+ * RuntimeRequirements,
74
+ * ReadOnlyRuntimeRequirements,
75
+ * Sources,
76
+ * SourceTypes
77
+ * } from "./Module"
78
+ */
79
+ /** @import ModuleGraph from "./ModuleGraph" */
80
+ /** @import { ConnectionState } from "./ModuleGraphConnection" */
81
+ /** @import NormalModuleFactory from "./NormalModuleFactory" */
82
+ /** @import RequestShortener from "./RequestShortener" */
83
+ /** @import { ResolverWithOptions } from "./ResolverFactory" */
84
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
85
+ /**
86
+ * @import {
87
+ * ChunkRenderContext
88
+ * } from "./javascript/JavascriptModulesPlugin"
89
+ */
90
+ /** @import { ImportAttributes } from "./javascript/JavascriptParser" */
91
+ /** @import { ImportPhaseType } from "./dependencies/ImportPhase" */
92
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined, boolean | undefined]>} ObjectDeserializerContext */
93
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined, boolean | undefined]>} ObjectSerializerContext */
94
+ /** @import Hash from "./util/Hash" */
95
+ /** @import { InputFileSystem } from "./util/fs" */
96
+ /** @import { RuntimeSpec } from "./util/runtime" */
77
97
 
78
98
  /** @typedef {{ attributes?: ImportAttributes, phase?: ImportPhaseType, externalType: "import" | "module" | undefined }} ImportDependencyMeta */
79
99
  /** @typedef {{ layer?: string, supports?: string, media?: string }} CssImportDependencyMeta */
@@ -277,6 +297,32 @@ const getSourceForCommonJsExternalInNodeModule = (
277
297
  };
278
298
  };
279
299
 
300
+ /**
301
+ * A phase is syntax the target has to read, with no form to fall back to. Reported
302
+ * like the `import()` check beside it, so the build fails rather than the bundle.
303
+ * @param {ImportPhaseType | undefined} phase the phase the reference asks for
304
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
305
+ * @returns {void}
306
+ */
307
+ const checkPhaseIsSupported = (phase, runtimeTemplate) => {
308
+ if (
309
+ ImportPhaseUtils.isDefer(phase) &&
310
+ !runtimeTemplate.supportsDeferImport()
311
+ ) {
312
+ throw new Error(
313
+ "The target environment doesn't support 'import defer', so an external cannot be imported in the defer phase. Set 'output.environment.deferImport' when the target reads it."
314
+ );
315
+ }
316
+ if (
317
+ ImportPhaseUtils.isSource(phase) &&
318
+ !runtimeTemplate.supportsSourceImport()
319
+ ) {
320
+ throw new Error(
321
+ "The target environment doesn't support 'import source', so an external cannot be imported in the source phase. Set 'output.environment.sourceImport' when the target reads it."
322
+ );
323
+ }
324
+ };
325
+
280
326
  /**
281
327
  * Gets source for import external.
282
328
  * @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
@@ -299,15 +345,24 @@ const getSourceForImportExternal = (
299
345
  );
300
346
  }
301
347
  const phase = dependencyMeta && dependencyMeta.phase;
348
+ checkPhaseIsSupported(phase, runtimeTemplate);
302
349
  // `import.defer(…)` and `import.source(…)` are only valid forms of the
303
350
  // native `import(…)` function, so we only emit the phase suffix when the
304
- // importFunctionName is the default `"import"`.
305
- const importName =
306
- baseImportName === "import" && ImportPhaseUtils.isDefer(phase)
307
- ? "import.defer"
308
- : baseImportName === "import" && ImportPhaseUtils.isSource(phase)
309
- ? "import.source"
310
- : baseImportName;
351
+ // importFunctionName is the default `"import"`. Anything else has no phase
352
+ // form at all, and dropping it would silently import eagerly instead.
353
+ if (
354
+ baseImportName !== "import" &&
355
+ (ImportPhaseUtils.isDefer(phase) || ImportPhaseUtils.isSource(phase))
356
+ ) {
357
+ throw new Error(
358
+ `'import.defer' and 'import.source' are forms of the native 'import()', so an external cannot be imported in a phase while 'output.importFunctionName' is '${baseImportName}'`
359
+ );
360
+ }
361
+ const importName = ImportPhaseUtils.isDefer(phase)
362
+ ? "import.defer"
363
+ : ImportPhaseUtils.isSource(phase)
364
+ ? "import.source"
365
+ : baseImportName;
311
366
  const attributes =
312
367
  dependencyMeta && dependencyMeta.attributes
313
368
  ? dependencyMeta.attributes._isLegacyAssert
@@ -317,18 +372,24 @@ const getSourceForImportExternal = (
317
372
  )} }`
318
373
  : `, { with: ${JSON.stringify(dependencyMeta.attributes)} }`
319
374
  : "";
375
+ // `import.source(…)` resolves to the source object itself, while every other
376
+ // external here resolves to a namespace. Consumers unwrap `default` to reach a
377
+ // source, so hand them that shape rather than a value they read `default` off.
378
+ const asNamespace = ImportPhaseUtils.isSource(phase)
379
+ ? `.then(${runtimeTemplate.returningFunction('{ "default": m }', "m")})`
380
+ : "";
320
381
  if (!Array.isArray(moduleAndSpecifiers)) {
321
382
  return {
322
383
  expression: `${importName}(${JSON.stringify(
323
384
  moduleAndSpecifiers
324
- )}${attributes});`
385
+ )}${attributes})${asNamespace};`
325
386
  };
326
387
  }
327
388
  if (moduleAndSpecifiers.length === 1) {
328
389
  return {
329
390
  expression: `${importName}(${JSON.stringify(
330
391
  moduleAndSpecifiers[0]
331
- )}${attributes});`
392
+ )}${attributes})${asNamespace};`
332
393
  };
333
394
  }
334
395
  const moduleName = moduleAndSpecifiers[0];
@@ -384,6 +445,14 @@ class ModuleExternalInitFragment extends InitFragment {
384
445
  .digest("hex")
385
446
  .slice(0, 8)}`;
386
447
  }
448
+ // One request in two phases is two imports, so the phase must reach the dedupe
449
+ // key and the binding name — otherwise one silently replaces the other.
450
+ const phase = dependencyMeta && dependencyMeta.phase;
451
+ if (ImportPhaseUtils.isDefer(phase)) {
452
+ ident += "_defer";
453
+ } else if (ImportPhaseUtils.isSource(phase)) {
454
+ ident += "_source";
455
+ }
387
456
  }
388
457
 
389
458
  super(
@@ -444,8 +513,15 @@ class ModuleExternalInitFragment extends InitFragment {
444
513
  : ` with ${JSON.stringify(dependencyMeta.attributes)}`
445
514
  : "";
446
515
  const phase = dependencyMeta && dependencyMeta.phase;
516
+ checkPhaseIsSupported(phase, context.runtimeTemplate);
447
517
  let content = "";
448
- if (imported === true) {
518
+ if (ImportPhaseUtils.isSource(phase) && imported === true) {
519
+ // There is no `import source * as ns` form: the source phase binds one
520
+ // identifier, so it stands in for the namespace the other branches build.
521
+ content = `import source ${identifier} from ${JSON.stringify(
522
+ request
523
+ )}${attributes};\n`;
524
+ } else if (imported === true) {
449
525
  // namespace
450
526
  const phaseKeyword = ImportPhaseUtils.isDefer(phase) ? "defer " : "";
451
527
  content = `import ${phaseKeyword}* as ${identifier} from ${JSON.stringify(
@@ -621,6 +697,16 @@ const getSourceForModuleExternal = (
621
697
  imported = true;
622
698
  }
623
699
 
700
+ // A source phase binds `default` alone. With nothing used the list would be empty
701
+ // and emit `import "…"`, evaluating the module whose source was asked for instead.
702
+ if (
703
+ ImportPhaseUtils.isSource(phase) &&
704
+ Array.isArray(imported) &&
705
+ imported.length === 0
706
+ ) {
707
+ imported = [["default", "default"]];
708
+ }
709
+
624
710
  const initFragment = new ModuleExternalInitFragment(
625
711
  moduleAndSpecifiers[0],
626
712
  imported,
@@ -636,7 +722,9 @@ const getSourceForModuleExternal = (
636
722
  )}`;
637
723
  let expression = baseAccess;
638
724
 
639
- const useNamespace = imported === true;
725
+ // A source-phase binding is not a namespace object, so nothing about it can be
726
+ // remapped export by export — the binding itself is what the reference reads.
727
+ const useNamespace = imported === true && !ImportPhaseUtils.isSource(phase);
640
728
  /** @type {undefined | string} */
641
729
  let moduleRemapping;
642
730
  if (useNamespace) {
@@ -653,7 +741,9 @@ const getSourceForModuleExternal = (
653
741
  init: moduleRemapping
654
742
  ? `${runtimeTemplate.renderConst()} x = ${runtimeTemplate.basicFunction(
655
743
  "y",
656
- `${runtimeTemplate.renderConst()} x = {}; ${RuntimeGlobals.definePropertyGetters}(x, y); return x`
744
+ `${runtimeTemplate.renderConst()} x = {}; ${
745
+ RuntimeGlobals.definePropertyGetters
746
+ }(x, y); return x`
657
747
  )} \n${runtimeTemplate.renderConst()} y = ${runtimeTemplate.returningFunction(
658
748
  runtimeTemplate.returningFunction("x"),
659
749
  "x"
@@ -810,10 +900,16 @@ const getSourceForDefaultCase = (optional, request, runtimeTemplate) => {
810
900
  /** @typedef {Record<string, string | string[]>} RequestRecord */
811
901
  /** @typedef {string | string[] | RequestRecord} ExternalModuleRequest */
812
902
 
903
+ const createCompilationHooks = () => ({
904
+ /**
905
+ * @type {SyncBailHook<[Chunk, Compilation], boolean>}
906
+ * @since 5.106.0
907
+ */
908
+ chunkCondition: new SyncBailHook(["chunk", "compilation"])
909
+ });
910
+
813
911
  /**
814
- * Defines the external module hooks type used by this module.
815
- * @typedef {object} ExternalModuleHooks
816
- * @property {SyncBailHook<[Chunk, Compilation], boolean>} chunkCondition
912
+ * @typedef {ReturnType<typeof createCompilationHooks>} ExternalModuleHooks
817
913
  */
818
914
 
819
915
  /**
@@ -832,8 +928,16 @@ class ExternalModule extends Module {
832
928
  * @param {string} userRequest user request
833
929
  * @param {DependencyMeta=} dependencyMeta dependency meta
834
930
  * @param {ExternalInterop=} interop how the external's exports interoperate with ES module imports
931
+ * @param {boolean=} sideEffects whether importing the external has side effects (undefined = assume it has)
835
932
  */
836
- constructor(request, type, userRequest, dependencyMeta, interop) {
933
+ constructor(
934
+ request,
935
+ type,
936
+ userRequest,
937
+ dependencyMeta,
938
+ interop,
939
+ sideEffects
940
+ ) {
837
941
  super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
838
942
 
839
943
  // Redeclared with the external module specific shape
@@ -851,6 +955,11 @@ class ExternalModule extends Module {
851
955
  this.dependencyMeta = dependencyMeta;
852
956
  /** @type {ExternalInterop | undefined} interop shape of the external's exports (undefined = importer-driven default) */
853
957
  this.interop = interop;
958
+ /** @type {boolean | undefined} declared side-effects state (undefined = assume side effects, webpack can't analyze an external) */
959
+ this.sideEffects = sideEffects;
960
+ if (sideEffects !== undefined) {
961
+ this.factoryMeta = { sideEffectFree: !sideEffects };
962
+ }
854
963
  }
855
964
 
856
965
  /**
@@ -858,17 +967,14 @@ class ExternalModule extends Module {
858
967
  * @returns {SourceTypes} types available (do not mutate)
859
968
  */
860
969
  getSourceTypes() {
861
- if (this.externalType === "asset" && this.dependencyMeta) {
862
- const sourceType =
863
- /** @type {AssetDependencyMeta} */
864
- (this.dependencyMeta).sourceType;
865
- // TODO webpack 6 drop "css-url" once the alias is removed
866
- if (sourceType === ASSET_URL_TYPE || sourceType === "css-url") {
867
- return ASSET_URL_TYPES;
868
- }
869
- } else if (this.externalType === "css-import") {
870
- return CSS_IMPORT_TYPES;
970
+ // resolved, so a type rendering no javascript is never reported as a
971
+ // javascript module — that would emit a dead `false` factory in the chunk
972
+ const type = this._resolveExternalType(this.externalType);
973
+ // TODO webpack 6 drop "css-url" once the alias is removed
974
+ if (type === ASSET_URL_TYPE || type === "css-url") {
975
+ return ASSET_URL_TYPES;
871
976
  }
977
+ if (type === "css-import") return CSS_IMPORT_TYPES;
872
978
 
873
979
  return JAVASCRIPT_TYPES;
874
980
  }
@@ -903,6 +1009,19 @@ class ExternalModule extends Module {
903
1009
  return compilation.chunkGraph.getNumberOfEntryModules(chunk) > 0;
904
1010
  }
905
1011
 
1012
+ /**
1013
+ * Gets side effects connection state.
1014
+ * @param {ModuleGraph} moduleGraph the module graph
1015
+ * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
1016
+ */
1017
+ getSideEffectsConnectionState(moduleGraph) {
1018
+ if (this.factoryMeta !== undefined) {
1019
+ if (this.factoryMeta.sideEffectFree) return false;
1020
+ if (this.factoryMeta.sideEffectFree === false) return true;
1021
+ }
1022
+ return true;
1023
+ }
1024
+
906
1025
  /**
907
1026
  * Returns the unique identifier used to reference this module.
908
1027
  * @returns {string} a unique identifier of the module
@@ -923,6 +1042,11 @@ class ExternalModule extends Module {
923
1042
  }
924
1043
  }
925
1044
  if (this.interop) id += `|interop=${this.interop}`;
1045
+ // two externals for the same target with a different side-effects state
1046
+ // must not be merged into one module
1047
+ if (this.sideEffects !== undefined) {
1048
+ id += `|sideEffects=${this.sideEffects}`;
1049
+ }
926
1050
  return id;
927
1051
  }
928
1052
 
@@ -1008,7 +1132,7 @@ class ExternalModule extends Module {
1008
1132
  }
1009
1133
  } else {
1010
1134
  this.buildMeta.async = true;
1011
- EnvironmentNotSupportAsyncWarning.check(
1135
+ getEnvironmentNotSupportAsyncWarning().check(
1012
1136
  this,
1013
1137
  compilation.runtimeTemplate,
1014
1138
  "external module"
@@ -1021,7 +1145,7 @@ class ExternalModule extends Module {
1021
1145
  break;
1022
1146
  case "script":
1023
1147
  this.buildMeta.async = true;
1024
- EnvironmentNotSupportAsyncWarning.check(
1148
+ getEnvironmentNotSupportAsyncWarning().check(
1025
1149
  this,
1026
1150
  compilation.runtimeTemplate,
1027
1151
  "external script"
@@ -1029,7 +1153,7 @@ class ExternalModule extends Module {
1029
1153
  break;
1030
1154
  case "promise":
1031
1155
  this.buildMeta.async = true;
1032
- EnvironmentNotSupportAsyncWarning.check(
1156
+ getEnvironmentNotSupportAsyncWarning().check(
1033
1157
  this,
1034
1158
  compilation.runtimeTemplate,
1035
1159
  "external promise"
@@ -1037,7 +1161,7 @@ class ExternalModule extends Module {
1037
1161
  break;
1038
1162
  case "amd-async":
1039
1163
  this.buildMeta.async = true;
1040
- EnvironmentNotSupportAsyncWarning.check(
1164
+ getEnvironmentNotSupportAsyncWarning().check(
1041
1165
  this,
1042
1166
  compilation.runtimeTemplate,
1043
1167
  "external amd-async"
@@ -1045,7 +1169,7 @@ class ExternalModule extends Module {
1045
1169
  break;
1046
1170
  case "import":
1047
1171
  this.buildMeta.async = true;
1048
- EnvironmentNotSupportAsyncWarning.check(
1172
+ getEnvironmentNotSupportAsyncWarning().check(
1049
1173
  this,
1050
1174
  compilation.runtimeTemplate,
1051
1175
  "external import"
@@ -1101,6 +1225,19 @@ class ExternalModule extends Module {
1101
1225
  return undefined;
1102
1226
  }
1103
1227
 
1228
+ /**
1229
+ * @returns {boolean} true, when it may be wrapped
1230
+ */
1231
+ canBeWrappedInConcatenation() {
1232
+ if (/** @type {BuildMeta} */ (this.buildMeta).async) {
1233
+ return false;
1234
+ }
1235
+ // every other synchronous type is a plain expression; only "module"
1236
+ // renders as a hoisted `import` declaration, and passing it the
1237
+ // concatenation scope is what narrows it to named specifiers
1238
+ return this._resolveExternalType(this.externalType) !== "module";
1239
+ }
1240
+
1104
1241
  /**
1105
1242
  * Get request and external type.
1106
1243
  * @private
@@ -1132,7 +1269,14 @@ class ExternalModule extends Module {
1132
1269
  .externalType;
1133
1270
  }
1134
1271
  return "module";
1135
- } else if (externalType === "asset") {
1272
+ } else if (
1273
+ // TODO webpack 6 drop "css-url" once the alias is removed
1274
+ externalType === "asset" ||
1275
+ externalType === ASSET_URL_TYPE ||
1276
+ externalType === "css-url"
1277
+ ) {
1278
+ // the consumer decides: a css `url()` reads the url out of the module
1279
+ // (marked by the factory), a `new URL()` requires the `asset` wrapper
1136
1280
  if (
1137
1281
  this.dependencyMeta &&
1138
1282
  /** @type {AssetDependencyMeta} */
@@ -1337,6 +1481,13 @@ class ExternalModule extends Module {
1337
1481
  };
1338
1482
  }
1339
1483
  default: {
1484
+ // A wrapped external runs as a module body inside the wrapper, so it
1485
+ // renders the plain `module.exports =` form: its exports are read
1486
+ // through the wrapper accessor, not through a shared-scope binding.
1487
+ const wrapped = Boolean(
1488
+ concatenationScope &&
1489
+ /** @type {ConcatenationScope} */ (concatenationScope).isWrapped()
1490
+ );
1340
1491
  const sourceData = this._getSourceData(
1341
1492
  request,
1342
1493
  externalType,
@@ -1345,7 +1496,7 @@ class ExternalModule extends Module {
1345
1496
  chunkGraph,
1346
1497
  runtime,
1347
1498
  this.dependencyMeta,
1348
- concatenationScope
1499
+ wrapped ? undefined : concatenationScope
1349
1500
  );
1350
1501
 
1351
1502
  // sourceString can be empty str only when there is concatenationScope
@@ -1359,9 +1510,12 @@ class ExternalModule extends Module {
1359
1510
  sourceString = "";
1360
1511
  const scope = /** @type {ConcatenationScope} */ (concatenationScope);
1361
1512
  for (const [specifier, finalName] of specifiers) {
1513
+ // the hoisted `import { x as finalName }` binding is a top-level
1514
+ // name of the chunk, reserve it before members get renamed
1515
+ scope.usedNames.add(finalName);
1362
1516
  scope.registerRawExport(specifier, finalName);
1363
1517
  }
1364
- } else if (concatenationScope) {
1518
+ } else if (concatenationScope && !wrapped) {
1365
1519
  sourceString = `${runtimeTemplate.renderConst()} ${
1366
1520
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
1367
1521
  } = ${sourceString};`;
@@ -1448,6 +1602,9 @@ class ExternalModule extends Module {
1448
1602
  }
1449
1603
  }
1450
1604
  if (this.interop) hash.update(`|interop=${this.interop}`);
1605
+ if (this.sideEffects !== undefined) {
1606
+ hash.update(`|sideEffects=${this.sideEffects}`);
1607
+ }
1451
1608
  super.updateHash(hash, context);
1452
1609
  }
1453
1610
 
@@ -1461,7 +1618,8 @@ class ExternalModule extends Module {
1461
1618
  .write(this.externalType)
1462
1619
  .write(this.userRequest)
1463
1620
  .write(this.dependencyMeta)
1464
- .write(this.interop);
1621
+ .write(this.interop)
1622
+ .write(this.sideEffects);
1465
1623
 
1466
1624
  super.serialize(context);
1467
1625
  }
@@ -1480,21 +1638,21 @@ class ExternalModule extends Module {
1480
1638
  this.dependencyMeta = c3.read();
1481
1639
  const c4 = c3.rest;
1482
1640
  this.interop = c4.read();
1641
+ const c5 = c4.rest;
1642
+ this.sideEffects = c5.read();
1483
1643
 
1484
- super.deserialize(c4.rest);
1644
+ super.deserialize(c5.rest);
1485
1645
  }
1486
1646
  }
1487
1647
 
1488
1648
  ExternalModule.getCompilationHooks = createHooksRegistry(
1489
- () =>
1490
- /** @type {ExternalModuleHooks} */ ({
1491
- chunkCondition: new SyncBailHook(["chunk", "compilation"])
1492
- })
1649
+ createCompilationHooks
1493
1650
  );
1494
1651
 
1495
1652
  makeSerializable(ExternalModule, "webpack/lib/ExternalModule");
1496
1653
 
1497
- module.exports = ExternalModule;
1498
- module.exports.ModuleExternalInitFragment = ModuleExternalInitFragment;
1499
- module.exports.getExternalModuleNodeCommonjsInitFragment =
1654
+ ExternalModule.ModuleExternalInitFragment = ModuleExternalInitFragment;
1655
+ ExternalModule.getExternalModuleNodeCommonjsInitFragment =
1500
1656
  getExternalModuleNodeCommonjsInitFragment;
1657
+
1658
+ module.exports = ExternalModule;