webpack 5.97.1 → 5.104.1

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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -6,30 +6,31 @@
6
6
  "use strict";
7
7
 
8
8
  const {
9
- ASSET_MODULE_TYPE_RESOURCE,
10
- ASSET_MODULE_TYPE_INLINE,
11
9
  ASSET_MODULE_TYPE,
10
+ ASSET_MODULE_TYPE_BYTES,
11
+ ASSET_MODULE_TYPE_INLINE,
12
+ ASSET_MODULE_TYPE_RESOURCE,
12
13
  ASSET_MODULE_TYPE_SOURCE
13
14
  } = require("../ModuleTypeConstants");
14
- const { cleverMerge } = require("../util/cleverMerge");
15
- const { compareModulesByIdentifier } = require("../util/comparators");
15
+ const { compareModulesByIdOrIdentifier } = require("../util/comparators");
16
16
  const createSchemaValidation = require("../util/create-schema-validation");
17
17
  const memoize = require("../util/memoize");
18
18
 
19
19
  /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
21
- /** @typedef {import("../Chunk")} Chunk */
20
+ /** @typedef {import("schema-utils").Schema} Schema */
21
+ /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
22
22
  /** @typedef {import("../Compiler")} Compiler */
23
- /** @typedef {import("../Module")} Module */
24
23
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
25
24
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
25
+ /** @typedef {import("../NormalModule")} NormalModule */
26
26
 
27
27
  /**
28
28
  * @param {string} name name of definitions
29
- * @returns {TODO} definition
29
+ * @returns {Schema} definition
30
30
  */
31
- const getSchema = name => {
31
+ const getSchema = (name) => {
32
32
  const { definitions } = require("../../schemas/WebpackOptions.json");
33
+
33
34
  return {
34
35
  definitions,
35
36
  oneOf: [{ $ref: `#/definitions/${name}` }]
@@ -42,24 +43,24 @@ const generatorValidationOptions = {
42
43
  };
43
44
  const validateGeneratorOptions = {
44
45
  asset: createSchemaValidation(
45
- require("../../schemas/plugins/asset/AssetGeneratorOptions.check.js"),
46
+ require("../../schemas/plugins/asset/AssetGeneratorOptions.check"),
46
47
  () => getSchema("AssetGeneratorOptions"),
47
48
  generatorValidationOptions
48
49
  ),
49
50
  "asset/resource": createSchemaValidation(
50
- require("../../schemas/plugins/asset/AssetResourceGeneratorOptions.check.js"),
51
+ require("../../schemas/plugins/asset/AssetResourceGeneratorOptions.check"),
51
52
  () => getSchema("AssetResourceGeneratorOptions"),
52
53
  generatorValidationOptions
53
54
  ),
54
55
  "asset/inline": createSchemaValidation(
55
- require("../../schemas/plugins/asset/AssetInlineGeneratorOptions.check.js"),
56
+ require("../../schemas/plugins/asset/AssetInlineGeneratorOptions.check"),
56
57
  () => getSchema("AssetInlineGeneratorOptions"),
57
58
  generatorValidationOptions
58
59
  )
59
60
  };
60
61
 
61
62
  const validateParserOptions = createSchemaValidation(
62
- require("../../schemas/plugins/asset/AssetParserOptions.check.js"),
63
+ require("../../schemas/plugins/asset/AssetParserOptions.check"),
63
64
  () => getSchema("AssetParserOptions"),
64
65
  {
65
66
  name: "Asset Modules Plugin",
@@ -70,12 +71,14 @@ const validateParserOptions = createSchemaValidation(
70
71
  const getAssetGenerator = memoize(() => require("./AssetGenerator"));
71
72
  const getAssetParser = memoize(() => require("./AssetParser"));
72
73
  const getAssetSourceParser = memoize(() => require("./AssetSourceParser"));
74
+ const getAssetBytesParser = memoize(() => require("./AssetBytesParser"));
73
75
  const getAssetSourceGenerator = memoize(() =>
74
76
  require("./AssetSourceGenerator")
75
77
  );
78
+ const getAssetBytesGenerator = memoize(() => require("./AssetBytesGenerator"));
76
79
 
77
80
  const type = ASSET_MODULE_TYPE;
78
- const plugin = "AssetModulesPlugin";
81
+ const PLUGIN_NAME = "AssetModulesPlugin";
79
82
 
80
83
  class AssetModulesPlugin {
81
84
  /**
@@ -85,17 +88,12 @@ class AssetModulesPlugin {
85
88
  */
86
89
  apply(compiler) {
87
90
  compiler.hooks.compilation.tap(
88
- plugin,
91
+ PLUGIN_NAME,
89
92
  (compilation, { normalModuleFactory }) => {
90
93
  normalModuleFactory.hooks.createParser
91
94
  .for(ASSET_MODULE_TYPE)
92
- .tap(plugin, parserOptions => {
95
+ .tap(PLUGIN_NAME, (parserOptions) => {
93
96
  validateParserOptions(parserOptions);
94
- parserOptions = cleverMerge(
95
- /** @type {AssetParserOptions} */
96
- (compiler.options.module.parser.asset),
97
- parserOptions
98
- );
99
97
 
100
98
  let dataUrlCondition = parserOptions.dataUrlCondition;
101
99
  if (!dataUrlCondition || typeof dataUrlCondition === "object") {
@@ -111,25 +109,32 @@ class AssetModulesPlugin {
111
109
  });
112
110
  normalModuleFactory.hooks.createParser
113
111
  .for(ASSET_MODULE_TYPE_INLINE)
114
- .tap(plugin, _parserOptions => {
112
+ .tap(PLUGIN_NAME, (_parserOptions) => {
115
113
  const AssetParser = getAssetParser();
116
114
 
117
115
  return new AssetParser(true);
118
116
  });
119
117
  normalModuleFactory.hooks.createParser
120
118
  .for(ASSET_MODULE_TYPE_RESOURCE)
121
- .tap(plugin, _parserOptions => {
119
+ .tap(PLUGIN_NAME, (_parserOptions) => {
122
120
  const AssetParser = getAssetParser();
123
121
 
124
122
  return new AssetParser(false);
125
123
  });
126
124
  normalModuleFactory.hooks.createParser
127
125
  .for(ASSET_MODULE_TYPE_SOURCE)
128
- .tap(plugin, _parserOptions => {
126
+ .tap(PLUGIN_NAME, (_parserOptions) => {
129
127
  const AssetSourceParser = getAssetSourceParser();
130
128
 
131
129
  return new AssetSourceParser();
132
130
  });
131
+ normalModuleFactory.hooks.createParser
132
+ .for(ASSET_MODULE_TYPE_BYTES)
133
+ .tap(PLUGIN_NAME, (_parserOptions) => {
134
+ const AssetBytesParser = getAssetBytesParser();
135
+
136
+ return new AssetBytesParser();
137
+ });
133
138
 
134
139
  for (const type of [
135
140
  ASSET_MODULE_TYPE,
@@ -138,7 +143,7 @@ class AssetModulesPlugin {
138
143
  ]) {
139
144
  normalModuleFactory.hooks.createGenerator
140
145
  .for(type)
141
- .tap(plugin, generatorOptions => {
146
+ .tap(PLUGIN_NAME, (generatorOptions) => {
142
147
  validateGeneratorOptions[type](generatorOptions);
143
148
 
144
149
  let dataUrl;
@@ -176,20 +181,28 @@ class AssetModulesPlugin {
176
181
  }
177
182
  normalModuleFactory.hooks.createGenerator
178
183
  .for(ASSET_MODULE_TYPE_SOURCE)
179
- .tap(plugin, () => {
184
+ .tap(PLUGIN_NAME, () => {
180
185
  const AssetSourceGenerator = getAssetSourceGenerator();
181
186
 
182
187
  return new AssetSourceGenerator(compilation.moduleGraph);
183
188
  });
184
189
 
185
- compilation.hooks.renderManifest.tap(plugin, (result, options) => {
190
+ normalModuleFactory.hooks.createGenerator
191
+ .for(ASSET_MODULE_TYPE_BYTES)
192
+ .tap(PLUGIN_NAME, () => {
193
+ const AssetBytesGenerator = getAssetBytesGenerator();
194
+
195
+ return new AssetBytesGenerator(compilation.moduleGraph);
196
+ });
197
+
198
+ compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
186
199
  const { chunkGraph } = compilation;
187
- const { chunk, codeGenerationResults } = options;
200
+ const { chunk, codeGenerationResults, runtimeTemplate } = options;
188
201
 
189
202
  const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
190
203
  chunk,
191
204
  ASSET_MODULE_TYPE,
192
- compareModulesByIdentifier
205
+ compareModulesByIdOrIdentifier(chunkGraph)
193
206
  );
194
207
  if (modules) {
195
208
  for (const module of modules) {
@@ -203,18 +216,63 @@ class AssetModulesPlugin {
203
216
  /** @type {NonNullable<CodeGenerationResult["data"]>} */
204
217
  (codeGenResult.data);
205
218
  const errored = module.getNumberOfErrors() > 0;
219
+
220
+ /** @type {string} */
221
+ let entryFilename;
222
+ /** @type {AssetInfo} */
223
+ let entryInfo;
224
+ /** @type {string} */
225
+ let entryHash;
226
+
227
+ if (errored) {
228
+ const erroredModule = /** @type {NormalModule} */ (module);
229
+ const AssetGenerator = getAssetGenerator();
230
+ const [fullContentHash, contentHash] =
231
+ AssetGenerator.getFullContentHash(
232
+ erroredModule,
233
+ runtimeTemplate
234
+ );
235
+ const { filename, assetInfo } =
236
+ AssetGenerator.getFilenameWithInfo(
237
+ erroredModule,
238
+ {
239
+ filename:
240
+ erroredModule.generatorOptions &&
241
+ erroredModule.generatorOptions.filename,
242
+ outputPath:
243
+ erroredModule.generatorOptions &&
244
+ erroredModule.generatorOptions.outputPath
245
+ },
246
+ {
247
+ runtime: chunk.runtime,
248
+ runtimeTemplate,
249
+ chunkGraph
250
+ },
251
+ contentHash
252
+ );
253
+ entryFilename = filename;
254
+ entryInfo = assetInfo;
255
+ entryHash = fullContentHash;
256
+ } else {
257
+ entryFilename =
258
+ /** @type {string} */
259
+ (buildInfo.filename || data.get("filename"));
260
+ entryInfo =
261
+ /** @type {AssetInfo} */
262
+ (buildInfo.assetInfo || data.get("assetInfo"));
263
+ entryHash =
264
+ /** @type {string} */
265
+ (buildInfo.fullContentHash || data.get("fullContentHash"));
266
+ }
267
+
206
268
  result.push({
207
269
  render: () =>
208
270
  /** @type {Source} */ (codeGenResult.sources.get(type)),
209
- filename: errored
210
- ? module.nameForCondition()
211
- : buildInfo.filename || data.get("filename"),
212
- info: buildInfo.assetInfo || data.get("assetInfo"),
271
+ filename: entryFilename,
272
+ info: entryInfo,
213
273
  auxiliary: true,
214
274
  identifier: `assetModule${chunkGraph.getModuleId(module)}`,
215
- hash: errored
216
- ? chunkGraph.getModuleHash(module, chunk.runtime)
217
- : buildInfo.fullContentHash || data.get("fullContentHash")
275
+ hash: entryHash
218
276
  });
219
277
  } catch (err) {
220
278
  /** @type {Error} */ (err).message +=
@@ -228,7 +286,7 @@ class AssetModulesPlugin {
228
286
  });
229
287
 
230
288
  compilation.hooks.prepareModuleExecution.tap(
231
- "AssetModulesPlugin",
289
+ PLUGIN_NAME,
232
290
  (options, context) => {
233
291
  const { codeGenerationResult } = options;
234
292
  const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
@@ -236,10 +294,14 @@ class AssetModulesPlugin {
236
294
  const data =
237
295
  /** @type {NonNullable<CodeGenerationResult["data"]>} */
238
296
  (codeGenerationResult.data);
239
- context.assets.set(data.get("filename"), {
240
- source,
241
- info: data.get("assetInfo")
242
- });
297
+ context.assets.set(
298
+ /** @type {string} */
299
+ (data.get("filename")),
300
+ {
301
+ source,
302
+ info: data.get("assetInfo")
303
+ }
304
+ );
243
305
  }
244
306
  );
245
307
  }
@@ -33,15 +33,19 @@ class AssetParser extends Parser {
33
33
  throw new Error("AssetParser doesn't accept preparsed AST");
34
34
  }
35
35
 
36
- const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo);
36
+ const buildInfo =
37
+ /** @type {BuildInfo} */
38
+ (state.module.buildInfo);
37
39
  buildInfo.strict = true;
38
- const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
40
+ const buildMeta =
41
+ /** @type {BuildMeta} */
42
+ (state.module.buildMeta);
39
43
  buildMeta.exportsType = "default";
40
44
  buildMeta.defaultObject = false;
41
45
 
42
46
  if (typeof this.dataUrlCondition === "function") {
43
47
  buildInfo.dataUrl = this.dataUrlCondition(source, {
44
- filename: state.module.matchResource || state.module.resource,
48
+ filename: /** @type {string} */ (state.module.getResource()),
45
49
  module: state.module
46
50
  });
47
51
  } else if (typeof this.dataUrlCondition === "boolean") {
@@ -9,16 +9,20 @@ const { RawSource } = require("webpack-sources");
9
9
  const ConcatenationScope = require("../ConcatenationScope");
10
10
  const Generator = require("../Generator");
11
11
  const {
12
- NO_TYPES,
12
+ CSS_TYPE,
13
+ CSS_URL_TYPE,
13
14
  CSS_URL_TYPES,
14
- JS_TYPES,
15
- JS_AND_CSS_URL_TYPES
16
- } = require("../ModuleSourceTypesConstants");
15
+ JAVASCRIPT_AND_CSS_URL_TYPES,
16
+ JAVASCRIPT_TYPE,
17
+ JAVASCRIPT_TYPES,
18
+ NO_TYPES
19
+ } = require("../ModuleSourceTypeConstants");
17
20
  const RuntimeGlobals = require("../RuntimeGlobals");
18
21
 
19
22
  /** @typedef {import("webpack-sources").Source} Source */
20
23
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
21
24
  /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
25
+ /** @typedef {import("../Module").SourceType} SourceType */
22
26
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
23
27
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
24
28
  /** @typedef {import("../NormalModule")} NormalModule */
@@ -46,39 +50,39 @@ class AssetSourceGenerator extends Generator {
46
50
  const data = getData ? getData() : undefined;
47
51
 
48
52
  switch (type) {
49
- case "javascript": {
53
+ case JAVASCRIPT_TYPE: {
50
54
  if (!originalSource) {
51
55
  return new RawSource("");
52
56
  }
53
57
 
54
58
  const content = originalSource.source();
55
59
  const encodedSource =
56
- typeof content === "string" ? content : content.toString("utf-8");
60
+ typeof content === "string" ? content : content.toString("utf8");
57
61
 
58
62
  let sourceContent;
59
63
  if (concatenationScope) {
60
64
  concatenationScope.registerNamespaceExport(
61
65
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
62
66
  );
63
- sourceContent = `${runtimeTemplate.supportsConst() ? "const" : "var"} ${
67
+ sourceContent = `${runtimeTemplate.renderConst()} ${
64
68
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
65
69
  } = ${JSON.stringify(encodedSource)};`;
66
70
  } else {
67
71
  runtimeRequirements.add(RuntimeGlobals.module);
68
- sourceContent = `${RuntimeGlobals.module}.exports = ${JSON.stringify(
72
+ sourceContent = `${module.moduleArgument}.exports = ${JSON.stringify(
69
73
  encodedSource
70
74
  )};`;
71
75
  }
72
76
  return new RawSource(sourceContent);
73
77
  }
74
- case "css-url": {
78
+ case CSS_URL_TYPE: {
75
79
  if (!originalSource) {
76
80
  return null;
77
81
  }
78
82
 
79
83
  const content = originalSource.source();
80
84
  const encodedSource =
81
- typeof content === "string" ? content : content.toString("utf-8");
85
+ typeof content === "string" ? content : content.toString("utf8");
82
86
 
83
87
  if (data) {
84
88
  data.set("url", { [type]: encodedSource });
@@ -90,6 +94,24 @@ class AssetSourceGenerator extends Generator {
90
94
  }
91
95
  }
92
96
 
97
+ /**
98
+ * @param {Error} error the error
99
+ * @param {NormalModule} module module for which the code should be generated
100
+ * @param {GenerateContext} generateContext context for generate
101
+ * @returns {Source | null} generated code
102
+ */
103
+ generateError(error, module, generateContext) {
104
+ switch (generateContext.type) {
105
+ case JAVASCRIPT_TYPE: {
106
+ return new RawSource(
107
+ `throw new Error(${JSON.stringify(error.message)});`
108
+ );
109
+ }
110
+ default:
111
+ return null;
112
+ }
113
+ }
114
+
93
115
  /**
94
116
  * @param {NormalModule} module module for which the bailout reason should be determined
95
117
  * @param {ConcatenationBailoutReasonContext} context context
@@ -104,6 +126,7 @@ class AssetSourceGenerator extends Generator {
104
126
  * @returns {SourceTypes} available types (do not mutate)
105
127
  */
106
128
  getTypes(module) {
129
+ /** @type {Set<string>} */
107
130
  const sourceTypes = new Set();
108
131
  const connections = this._moduleGraph.getIncomingConnections(module);
109
132
 
@@ -115,12 +138,13 @@ class AssetSourceGenerator extends Generator {
115
138
  sourceTypes.add(connection.originModule.type.split("/")[0]);
116
139
  }
117
140
 
118
- if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
119
- return JS_AND_CSS_URL_TYPES;
120
- } else if (sourceTypes.has("javascript")) {
121
- return JS_TYPES;
122
- } else if (sourceTypes.has("css")) {
123
- return CSS_URL_TYPES;
141
+ if (sourceTypes.size > 0) {
142
+ if (sourceTypes.has(JAVASCRIPT_TYPE) && sourceTypes.has(CSS_TYPE)) {
143
+ return JAVASCRIPT_AND_CSS_URL_TYPES;
144
+ } else if (sourceTypes.has(CSS_TYPE)) {
145
+ return CSS_URL_TYPES;
146
+ }
147
+ return JAVASCRIPT_TYPES;
124
148
  }
125
149
 
126
150
  return NO_TYPES;
@@ -128,7 +152,7 @@ class AssetSourceGenerator extends Generator {
128
152
 
129
153
  /**
130
154
  * @param {NormalModule} module the module
131
- * @param {string=} type source type
155
+ * @param {SourceType=} type source type
132
156
  * @returns {number} estimate size of the module
133
157
  */
134
158
  getSize(module, type) {
@@ -7,21 +7,26 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("../Module");
10
- const { JS_TYPES } = require("../ModuleSourceTypesConstants");
10
+ const {
11
+ JAVASCRIPT_TYPE,
12
+ JAVASCRIPT_TYPES
13
+ } = require("../ModuleSourceTypeConstants");
11
14
  const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
12
15
  const RuntimeGlobals = require("../RuntimeGlobals");
13
16
  const makeSerializable = require("../util/makeSerializable");
14
17
 
15
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
18
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
16
19
  /** @typedef {import("../Compilation")} Compilation */
17
20
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
21
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
22
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
18
23
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
19
24
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
25
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
20
26
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
21
27
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
22
28
  /** @typedef {import("../RequestShortener")} RequestShortener */
23
29
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
24
- /** @typedef {import("../WebpackError")} WebpackError */
25
30
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
31
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
32
  /** @typedef {import("../util/Hash")} Hash */
@@ -45,7 +50,7 @@ class RawDataUrlModule extends Module {
45
50
  * @returns {SourceTypes} types available (do not mutate)
46
51
  */
47
52
  getSourceTypes() {
48
- return JS_TYPES;
53
+ return JAVASCRIPT_TYPES;
49
54
  }
50
55
 
51
56
  /**
@@ -60,8 +65,9 @@ class RawDataUrlModule extends Module {
60
65
  * @returns {number} the estimated size of the module (must be non-zero)
61
66
  */
62
67
  size(type) {
63
- if (this.url === undefined)
68
+ if (this.url === undefined) {
64
69
  this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
70
+ }
65
71
  return Math.max(1, this.url.length);
66
72
  }
67
73
 
@@ -77,7 +83,7 @@ class RawDataUrlModule extends Module {
77
83
 
78
84
  /**
79
85
  * @param {NeedBuildContext} context context info
80
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
86
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
81
87
  * @returns {void}
82
88
  */
83
89
  needBuild(context, callback) {
@@ -89,7 +95,7 @@ class RawDataUrlModule extends Module {
89
95
  * @param {Compilation} compilation the compilation
90
96
  * @param {ResolverWithOptions} resolver the resolver
91
97
  * @param {InputFileSystem} fs the file system
92
- * @param {function(WebpackError=): void} callback callback function
98
+ * @param {BuildCallback} callback callback function
93
99
  * @returns {void}
94
100
  */
95
101
  build(options, compilation, resolver, fs, callback) {
@@ -105,17 +111,19 @@ class RawDataUrlModule extends Module {
105
111
  * @returns {CodeGenerationResult} result
106
112
  */
107
113
  codeGeneration(context) {
108
- if (this.url === undefined)
114
+ if (this.url === undefined) {
109
115
  this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
116
+ }
110
117
  const sources = new Map();
111
118
  sources.set(
112
- "javascript",
119
+ JAVASCRIPT_TYPE,
113
120
  new RawSource(`module.exports = ${JSON.stringify(this.url)};`)
114
121
  );
115
122
  const data = new Map();
116
123
  data.set("url", {
117
124
  javascript: this.url
118
125
  });
126
+ /** @type {RuntimeRequirements} */
119
127
  const runtimeRequirements = new Set();
120
128
  runtimeRequirements.add(RuntimeGlobals.module);
121
129
  return { sources, runtimeRequirements, data };
@@ -0,0 +1,52 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Haijie Xie @hai-x
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
9
+
10
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
11
+ /** @typedef {import("../Module")} Module */
12
+
13
+ /** @typedef {Set<Module>} Modules */
14
+
15
+ /**
16
+ * @param {ModuleGraph} moduleGraph module graph
17
+ * @param {Module} module module
18
+ * @returns {Modules} set of modules
19
+ */
20
+ const getOutgoingAsyncModules = (moduleGraph, module) => {
21
+ /** @type {Modules} */
22
+ const set = new Set();
23
+ /** @type {Modules} */
24
+ const seen = new Set();
25
+ (function g(module) {
26
+ if (!moduleGraph.isAsync(module) || seen.has(module)) return;
27
+ seen.add(module);
28
+ if (module.buildMeta && module.buildMeta.async) {
29
+ set.add(module);
30
+ } else {
31
+ const outgoingConnectionMap =
32
+ moduleGraph.getOutgoingConnectionsByModule(module);
33
+ if (outgoingConnectionMap) {
34
+ for (const [module, connections] of outgoingConnectionMap) {
35
+ if (
36
+ connections.some(
37
+ (c) =>
38
+ c.dependency instanceof HarmonyImportDependency &&
39
+ c.isTargetActive(undefined)
40
+ ) &&
41
+ module
42
+ ) {
43
+ g(module);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ })(module);
49
+ return set;
50
+ };
51
+
52
+ module.exports.getOutgoingAsyncModules = getOutgoingAsyncModules;
@@ -17,16 +17,16 @@ const Template = require("../Template");
17
17
  */
18
18
  class AwaitDependenciesInitFragment extends InitFragment {
19
19
  /**
20
- * @param {Set<string>} promises the promises that should be awaited
20
+ * @param {Map<string, string>} dependencies maps an import var to an async module that needs to be awaited
21
21
  */
22
- constructor(promises) {
22
+ constructor(dependencies) {
23
23
  super(
24
24
  undefined,
25
25
  InitFragment.STAGE_ASYNC_DEPENDENCIES,
26
26
  0,
27
27
  "await-dependencies"
28
28
  );
29
- this.promises = promises;
29
+ this.dependencies = dependencies;
30
30
  }
31
31
 
32
32
  /**
@@ -34,38 +34,53 @@ class AwaitDependenciesInitFragment extends InitFragment {
34
34
  * @returns {AwaitDependenciesInitFragment} AwaitDependenciesInitFragment
35
35
  */
36
36
  merge(other) {
37
- const promises = new Set(other.promises);
38
- for (const p of this.promises) {
39
- promises.add(p);
37
+ const dependencies = new Map(other.dependencies);
38
+ for (const [key, value] of this.dependencies) {
39
+ dependencies.set(key, value);
40
40
  }
41
- return new AwaitDependenciesInitFragment(promises);
41
+ return new AwaitDependenciesInitFragment(dependencies);
42
42
  }
43
43
 
44
44
  /**
45
45
  * @param {GenerateContext} context context
46
46
  * @returns {string | Source | undefined} the source code that will be included as initialization code
47
47
  */
48
- getContent({ runtimeRequirements }) {
48
+ getContent({ runtimeRequirements, runtimeTemplate }) {
49
49
  runtimeRequirements.add(RuntimeGlobals.module);
50
- const promises = this.promises;
51
- if (promises.size === 0) {
50
+ if (this.dependencies.size === 0) {
52
51
  return "";
53
52
  }
54
- if (promises.size === 1) {
55
- const [p] = promises;
56
- return Template.asString([
57
- `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${p}]);`,
58
- `${p} = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];`,
59
- ""
60
- ]);
53
+
54
+ const importVars = [...this.dependencies.keys()];
55
+ const asyncModuleValues = [...this.dependencies.values()].join(", ");
56
+
57
+ const templateInput = [
58
+ `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${asyncModuleValues}]);`
59
+ ];
60
+
61
+ if (
62
+ this.dependencies.size === 1 ||
63
+ !runtimeTemplate.supportsDestructuring()
64
+ ) {
65
+ templateInput.push(
66
+ "var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);"
67
+ );
68
+ for (const [index, importVar] of importVars.entries()) {
69
+ templateInput.push(
70
+ `${importVar} = __webpack_async_dependencies_result__[${index}];`
71
+ );
72
+ }
73
+ } else {
74
+ const importVarsStr = importVars.join(", ");
75
+
76
+ templateInput.push(
77
+ `([${importVarsStr}] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
78
+ );
61
79
  }
62
- const sepPromises = Array.from(promises).join(", ");
63
- // TODO check if destructuring is supported
64
- return Template.asString([
65
- `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${sepPromises}]);`,
66
- `([${sepPromises}] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);`,
67
- ""
68
- ]);
80
+
81
+ templateInput.push("");
82
+
83
+ return Template.asString(templateInput);
69
84
  }
70
85
  }
71
86