@depup/webpack 5.105.4-depup.37

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 (709) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +38 -0
  3. package/bin/webpack.js +196 -0
  4. package/hot/dev-server.js +90 -0
  5. package/hot/emitter-event-target.js +7 -0
  6. package/hot/emitter.js +2 -0
  7. package/hot/lazy-compilation-node.js +66 -0
  8. package/hot/lazy-compilation-universal.js +18 -0
  9. package/hot/lazy-compilation-web.js +93 -0
  10. package/hot/load-http.js +7 -0
  11. package/hot/log-apply-result.js +49 -0
  12. package/hot/log.js +78 -0
  13. package/hot/only-dev-server.js +118 -0
  14. package/hot/poll.js +41 -0
  15. package/hot/signal.js +66 -0
  16. package/lib/APIPlugin.js +392 -0
  17. package/lib/AbstractMethodError.js +56 -0
  18. package/lib/AsyncDependenciesBlock.js +128 -0
  19. package/lib/AsyncDependencyToInitialChunkError.js +34 -0
  20. package/lib/AutomaticPrefetchPlugin.js +66 -0
  21. package/lib/BannerPlugin.js +138 -0
  22. package/lib/Cache.js +168 -0
  23. package/lib/CacheFacade.js +349 -0
  24. package/lib/CaseSensitiveModulesWarning.js +72 -0
  25. package/lib/Chunk.js +899 -0
  26. package/lib/ChunkGraph.js +1968 -0
  27. package/lib/ChunkGroup.js +615 -0
  28. package/lib/ChunkRenderError.js +38 -0
  29. package/lib/ChunkTemplate.js +181 -0
  30. package/lib/CleanPlugin.js +495 -0
  31. package/lib/CodeGenerationError.js +35 -0
  32. package/lib/CodeGenerationResults.js +167 -0
  33. package/lib/CommentCompilationWarning.js +33 -0
  34. package/lib/CompatibilityPlugin.js +240 -0
  35. package/lib/Compilation.js +5876 -0
  36. package/lib/Compiler.js +1413 -0
  37. package/lib/ConcatenationScope.js +181 -0
  38. package/lib/ConcurrentCompilationError.js +18 -0
  39. package/lib/ConditionalInitFragment.js +120 -0
  40. package/lib/ConstPlugin.js +567 -0
  41. package/lib/ContextExclusionPlugin.js +33 -0
  42. package/lib/ContextModule.js +1411 -0
  43. package/lib/ContextModuleFactory.js +514 -0
  44. package/lib/ContextReplacementPlugin.js +227 -0
  45. package/lib/CssModule.js +179 -0
  46. package/lib/DefinePlugin.js +878 -0
  47. package/lib/DelegatedModule.js +279 -0
  48. package/lib/DelegatedModuleFactoryPlugin.js +116 -0
  49. package/lib/DelegatedPlugin.js +49 -0
  50. package/lib/DependenciesBlock.js +120 -0
  51. package/lib/Dependency.js +390 -0
  52. package/lib/DependencyTemplate.js +71 -0
  53. package/lib/DependencyTemplates.js +67 -0
  54. package/lib/DllEntryPlugin.js +76 -0
  55. package/lib/DllModule.js +175 -0
  56. package/lib/DllModuleFactory.js +38 -0
  57. package/lib/DllPlugin.js +73 -0
  58. package/lib/DllReferencePlugin.js +189 -0
  59. package/lib/DotenvPlugin.js +468 -0
  60. package/lib/DynamicEntryPlugin.js +93 -0
  61. package/lib/EntryOptionPlugin.js +98 -0
  62. package/lib/EntryPlugin.js +72 -0
  63. package/lib/Entrypoint.js +120 -0
  64. package/lib/EnvironmentNotSupportAsyncWarning.js +51 -0
  65. package/lib/EnvironmentPlugin.js +74 -0
  66. package/lib/ErrorHelpers.js +100 -0
  67. package/lib/EvalDevToolModulePlugin.js +135 -0
  68. package/lib/EvalSourceMapDevToolPlugin.js +252 -0
  69. package/lib/ExportsInfo.js +1663 -0
  70. package/lib/ExportsInfoApiPlugin.js +87 -0
  71. package/lib/ExternalModule.js +1169 -0
  72. package/lib/ExternalModuleFactoryPlugin.js +370 -0
  73. package/lib/ExternalsPlugin.js +93 -0
  74. package/lib/FalseIIFEUmdWarning.js +20 -0
  75. package/lib/FileSystemInfo.js +4131 -0
  76. package/lib/FlagAllModulesAsUsedPlugin.js +55 -0
  77. package/lib/FlagDependencyExportsPlugin.js +437 -0
  78. package/lib/FlagDependencyUsagePlugin.js +348 -0
  79. package/lib/FlagEntryExportAsUsedPlugin.js +56 -0
  80. package/lib/Generator.js +188 -0
  81. package/lib/GraphHelpers.js +46 -0
  82. package/lib/HarmonyLinkingError.js +17 -0
  83. package/lib/HookWebpackError.js +121 -0
  84. package/lib/HotModuleReplacementPlugin.js +930 -0
  85. package/lib/HotUpdateChunk.js +16 -0
  86. package/lib/IgnoreErrorModuleFactory.js +39 -0
  87. package/lib/IgnorePlugin.js +105 -0
  88. package/lib/IgnoreWarningsPlugin.js +41 -0
  89. package/lib/InitFragment.js +204 -0
  90. package/lib/InvalidDependenciesModuleWarning.js +44 -0
  91. package/lib/JavascriptMetaInfoPlugin.js +78 -0
  92. package/lib/LibManifestPlugin.js +144 -0
  93. package/lib/LibraryTemplatePlugin.js +48 -0
  94. package/lib/LoaderOptionsPlugin.js +81 -0
  95. package/lib/LoaderTargetPlugin.js +39 -0
  96. package/lib/MainTemplate.js +371 -0
  97. package/lib/ManifestPlugin.js +242 -0
  98. package/lib/Module.js +1319 -0
  99. package/lib/ModuleBuildError.js +83 -0
  100. package/lib/ModuleDependencyError.js +44 -0
  101. package/lib/ModuleDependencyWarning.js +49 -0
  102. package/lib/ModuleError.js +69 -0
  103. package/lib/ModuleFactory.js +57 -0
  104. package/lib/ModuleFilenameHelpers.js +388 -0
  105. package/lib/ModuleGraph.js +1024 -0
  106. package/lib/ModuleGraphConnection.js +199 -0
  107. package/lib/ModuleHashingError.js +31 -0
  108. package/lib/ModuleInfoHeaderPlugin.js +318 -0
  109. package/lib/ModuleNotFoundError.js +90 -0
  110. package/lib/ModuleParseError.js +125 -0
  111. package/lib/ModuleProfile.js +108 -0
  112. package/lib/ModuleRestoreError.js +46 -0
  113. package/lib/ModuleSourceTypeConstants.js +179 -0
  114. package/lib/ModuleStoreError.js +45 -0
  115. package/lib/ModuleTemplate.js +173 -0
  116. package/lib/ModuleTypeConstants.js +190 -0
  117. package/lib/ModuleWarning.js +68 -0
  118. package/lib/MultiCompiler.js +678 -0
  119. package/lib/MultiStats.js +213 -0
  120. package/lib/MultiWatching.js +77 -0
  121. package/lib/NoEmitOnErrorsPlugin.js +30 -0
  122. package/lib/NoModeWarning.js +23 -0
  123. package/lib/NodeStuffInWebError.js +35 -0
  124. package/lib/NodeStuffPlugin.js +587 -0
  125. package/lib/NormalModule.js +1798 -0
  126. package/lib/NormalModuleFactory.js +1455 -0
  127. package/lib/NormalModuleReplacementPlugin.js +75 -0
  128. package/lib/NullFactory.js +24 -0
  129. package/lib/OptimizationStages.js +10 -0
  130. package/lib/OptionsApply.js +24 -0
  131. package/lib/Parser.js +40 -0
  132. package/lib/PlatformPlugin.js +41 -0
  133. package/lib/PrefetchPlugin.js +56 -0
  134. package/lib/ProgressPlugin.js +712 -0
  135. package/lib/ProvidePlugin.js +121 -0
  136. package/lib/RawModule.js +180 -0
  137. package/lib/RecordIdsPlugin.js +216 -0
  138. package/lib/RequestShortener.js +36 -0
  139. package/lib/RequireJsStuffPlugin.js +84 -0
  140. package/lib/ResolverFactory.js +156 -0
  141. package/lib/RuntimeGlobals.js +450 -0
  142. package/lib/RuntimeModule.js +242 -0
  143. package/lib/RuntimePlugin.js +547 -0
  144. package/lib/RuntimeTemplate.js +1288 -0
  145. package/lib/SelfModuleFactory.js +33 -0
  146. package/lib/SingleEntryPlugin.js +8 -0
  147. package/lib/SizeFormatHelpers.js +25 -0
  148. package/lib/SourceMapDevToolModuleOptionsPlugin.js +52 -0
  149. package/lib/SourceMapDevToolPlugin.js +646 -0
  150. package/lib/Stats.js +89 -0
  151. package/lib/Template.js +427 -0
  152. package/lib/TemplatedPathPlugin.js +400 -0
  153. package/lib/UnhandledSchemeError.js +34 -0
  154. package/lib/UnsupportedFeatureWarning.js +35 -0
  155. package/lib/UseStrictPlugin.js +81 -0
  156. package/lib/WarnCaseSensitiveModulesPlugin.js +64 -0
  157. package/lib/WarnDeprecatedOptionPlugin.js +60 -0
  158. package/lib/WarnNoModeSetPlugin.js +27 -0
  159. package/lib/WatchIgnorePlugin.js +155 -0
  160. package/lib/Watching.js +531 -0
  161. package/lib/WebpackError.js +81 -0
  162. package/lib/WebpackIsIncludedPlugin.js +93 -0
  163. package/lib/WebpackOptionsApply.js +941 -0
  164. package/lib/WebpackOptionsDefaulter.js +26 -0
  165. package/lib/asset/AssetBytesGenerator.js +172 -0
  166. package/lib/asset/AssetBytesParser.js +37 -0
  167. package/lib/asset/AssetGenerator.js +816 -0
  168. package/lib/asset/AssetModulesPlugin.js +358 -0
  169. package/lib/asset/AssetParser.js +73 -0
  170. package/lib/asset/AssetSourceGenerator.js +171 -0
  171. package/lib/asset/AssetSourceParser.js +37 -0
  172. package/lib/asset/RawDataUrlModule.js +179 -0
  173. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  174. package/lib/async-modules/AwaitDependenciesInitFragment.js +90 -0
  175. package/lib/async-modules/InferAsyncModulesPlugin.js +54 -0
  176. package/lib/buildChunkGraph.js +1392 -0
  177. package/lib/cache/AddBuildDependenciesPlugin.js +32 -0
  178. package/lib/cache/AddManagedPathsPlugin.js +40 -0
  179. package/lib/cache/IdleFileCachePlugin.js +242 -0
  180. package/lib/cache/MemoryCachePlugin.js +57 -0
  181. package/lib/cache/MemoryWithGcCachePlugin.js +142 -0
  182. package/lib/cache/PackFileCacheStrategy.js +1600 -0
  183. package/lib/cache/ResolverCachePlugin.js +450 -0
  184. package/lib/cache/getLazyHashedEtag.js +91 -0
  185. package/lib/cache/mergeEtags.js +71 -0
  186. package/lib/cli.js +859 -0
  187. package/lib/config/browserslistTargetHandler.js +388 -0
  188. package/lib/config/defaults.js +2086 -0
  189. package/lib/config/normalization.js +681 -0
  190. package/lib/config/target.js +389 -0
  191. package/lib/container/ContainerEntryDependency.js +50 -0
  192. package/lib/container/ContainerEntryModule.js +303 -0
  193. package/lib/container/ContainerEntryModuleFactory.js +27 -0
  194. package/lib/container/ContainerExposedDependency.js +62 -0
  195. package/lib/container/ContainerPlugin.js +118 -0
  196. package/lib/container/ContainerReferencePlugin.js +139 -0
  197. package/lib/container/FallbackDependency.js +66 -0
  198. package/lib/container/FallbackItemDependency.js +34 -0
  199. package/lib/container/FallbackModule.js +193 -0
  200. package/lib/container/FallbackModuleFactory.js +27 -0
  201. package/lib/container/HoistContainerReferencesPlugin.js +256 -0
  202. package/lib/container/ModuleFederationPlugin.js +131 -0
  203. package/lib/container/RemoteModule.js +225 -0
  204. package/lib/container/RemoteRuntimeModule.js +144 -0
  205. package/lib/container/RemoteToExternalDependency.js +33 -0
  206. package/lib/container/options.js +105 -0
  207. package/lib/css/CssGenerator.js +587 -0
  208. package/lib/css/CssLoadingRuntimeModule.js +513 -0
  209. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  210. package/lib/css/CssModulesPlugin.js +939 -0
  211. package/lib/css/CssParser.js +2621 -0
  212. package/lib/css/walkCssTokens.js +1740 -0
  213. package/lib/debug/ProfilingPlugin.js +589 -0
  214. package/lib/dependencies/AMDDefineDependency.js +267 -0
  215. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +504 -0
  216. package/lib/dependencies/AMDPlugin.js +243 -0
  217. package/lib/dependencies/AMDRequireArrayDependency.js +124 -0
  218. package/lib/dependencies/AMDRequireContextDependency.js +69 -0
  219. package/lib/dependencies/AMDRequireDependenciesBlock.js +28 -0
  220. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +425 -0
  221. package/lib/dependencies/AMDRequireDependency.js +189 -0
  222. package/lib/dependencies/AMDRequireItemDependency.js +41 -0
  223. package/lib/dependencies/AMDRuntimeModules.js +50 -0
  224. package/lib/dependencies/CachedConstDependency.js +135 -0
  225. package/lib/dependencies/CommonJsDependencyHelpers.js +65 -0
  226. package/lib/dependencies/CommonJsExportRequireDependency.js +416 -0
  227. package/lib/dependencies/CommonJsExportsDependency.js +184 -0
  228. package/lib/dependencies/CommonJsExportsParserPlugin.js +425 -0
  229. package/lib/dependencies/CommonJsFullRequireDependency.js +162 -0
  230. package/lib/dependencies/CommonJsImportsParserPlugin.js +611 -0
  231. package/lib/dependencies/CommonJsPlugin.js +316 -0
  232. package/lib/dependencies/CommonJsRequireContextDependency.js +73 -0
  233. package/lib/dependencies/CommonJsRequireDependency.js +42 -0
  234. package/lib/dependencies/CommonJsSelfReferenceDependency.js +156 -0
  235. package/lib/dependencies/ConstDependency.js +118 -0
  236. package/lib/dependencies/ContextDependency.js +183 -0
  237. package/lib/dependencies/ContextDependencyHelpers.js +277 -0
  238. package/lib/dependencies/ContextDependencyTemplateAsId.js +63 -0
  239. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +62 -0
  240. package/lib/dependencies/ContextElementDependency.js +147 -0
  241. package/lib/dependencies/CreateRequireParserPlugin.js +356 -0
  242. package/lib/dependencies/CreateScriptUrlDependency.js +75 -0
  243. package/lib/dependencies/CriticalDependencyWarning.js +29 -0
  244. package/lib/dependencies/CssIcssExportDependency.js +539 -0
  245. package/lib/dependencies/CssIcssImportDependency.js +183 -0
  246. package/lib/dependencies/CssIcssSymbolDependency.js +131 -0
  247. package/lib/dependencies/CssImportDependency.js +120 -0
  248. package/lib/dependencies/CssUrlDependency.js +189 -0
  249. package/lib/dependencies/DelegatedSourceDependency.js +33 -0
  250. package/lib/dependencies/DllEntryDependency.js +61 -0
  251. package/lib/dependencies/DynamicExports.js +73 -0
  252. package/lib/dependencies/EntryDependency.js +30 -0
  253. package/lib/dependencies/ExportsInfoDependency.js +161 -0
  254. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  255. package/lib/dependencies/ExternalModuleInitFragment.js +137 -0
  256. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +87 -0
  257. package/lib/dependencies/HarmonyAcceptDependency.js +237 -0
  258. package/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
  259. package/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
  260. package/lib/dependencies/HarmonyDetectionParserPlugin.js +103 -0
  261. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +165 -0
  262. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +254 -0
  263. package/lib/dependencies/HarmonyExportExpressionDependency.js +211 -0
  264. package/lib/dependencies/HarmonyExportHeaderDependency.js +78 -0
  265. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1494 -0
  266. package/lib/dependencies/HarmonyExportInitFragment.js +191 -0
  267. package/lib/dependencies/HarmonyExportSpecifierDependency.js +127 -0
  268. package/lib/dependencies/HarmonyExports.js +46 -0
  269. package/lib/dependencies/HarmonyImportDependency.js +459 -0
  270. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +576 -0
  271. package/lib/dependencies/HarmonyImportSideEffectDependency.js +91 -0
  272. package/lib/dependencies/HarmonyImportSpecifierDependency.js +514 -0
  273. package/lib/dependencies/HarmonyModulesPlugin.js +158 -0
  274. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +39 -0
  275. package/lib/dependencies/ImportContextDependency.js +81 -0
  276. package/lib/dependencies/ImportDependency.js +158 -0
  277. package/lib/dependencies/ImportEagerDependency.js +76 -0
  278. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  279. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +312 -0
  280. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  281. package/lib/dependencies/ImportMetaHotAcceptDependency.js +41 -0
  282. package/lib/dependencies/ImportMetaHotDeclineDependency.js +42 -0
  283. package/lib/dependencies/ImportMetaPlugin.js +447 -0
  284. package/lib/dependencies/ImportParserPlugin.js +602 -0
  285. package/lib/dependencies/ImportPhase.js +125 -0
  286. package/lib/dependencies/ImportPlugin.js +98 -0
  287. package/lib/dependencies/ImportWeakDependency.js +74 -0
  288. package/lib/dependencies/JsonExportsDependency.js +137 -0
  289. package/lib/dependencies/LoaderDependency.js +38 -0
  290. package/lib/dependencies/LoaderImportDependency.js +39 -0
  291. package/lib/dependencies/LoaderPlugin.js +294 -0
  292. package/lib/dependencies/LocalModule.js +60 -0
  293. package/lib/dependencies/LocalModuleDependency.js +84 -0
  294. package/lib/dependencies/LocalModulesHelpers.js +68 -0
  295. package/lib/dependencies/ModuleDecoratorDependency.js +136 -0
  296. package/lib/dependencies/ModuleDependency.js +100 -0
  297. package/lib/dependencies/ModuleDependencyTemplateAsId.js +35 -0
  298. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +39 -0
  299. package/lib/dependencies/ModuleHotAcceptDependency.js +41 -0
  300. package/lib/dependencies/ModuleHotDeclineDependency.js +42 -0
  301. package/lib/dependencies/ModuleInitFragmentDependency.js +87 -0
  302. package/lib/dependencies/NullDependency.js +42 -0
  303. package/lib/dependencies/PrefetchDependency.js +27 -0
  304. package/lib/dependencies/ProvidedDependency.js +156 -0
  305. package/lib/dependencies/PureExpressionDependency.js +161 -0
  306. package/lib/dependencies/RequireContextDependency.js +38 -0
  307. package/lib/dependencies/RequireContextDependencyParserPlugin.js +69 -0
  308. package/lib/dependencies/RequireContextPlugin.js +167 -0
  309. package/lib/dependencies/RequireEnsureDependenciesBlock.js +29 -0
  310. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +145 -0
  311. package/lib/dependencies/RequireEnsureDependency.js +115 -0
  312. package/lib/dependencies/RequireEnsureItemDependency.js +36 -0
  313. package/lib/dependencies/RequireEnsurePlugin.js +86 -0
  314. package/lib/dependencies/RequireHeaderDependency.js +70 -0
  315. package/lib/dependencies/RequireIncludeDependency.js +79 -0
  316. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +100 -0
  317. package/lib/dependencies/RequireIncludePlugin.js +63 -0
  318. package/lib/dependencies/RequireResolveContextDependency.js +67 -0
  319. package/lib/dependencies/RequireResolveDependency.js +58 -0
  320. package/lib/dependencies/RequireResolveHeaderDependency.js +81 -0
  321. package/lib/dependencies/RuntimeRequirementsDependency.js +85 -0
  322. package/lib/dependencies/StaticExportsDependency.js +72 -0
  323. package/lib/dependencies/SystemPlugin.js +168 -0
  324. package/lib/dependencies/SystemRuntimeModule.js +35 -0
  325. package/lib/dependencies/URLContextDependency.js +65 -0
  326. package/lib/dependencies/URLDependency.js +165 -0
  327. package/lib/dependencies/URLPlugin.js +67 -0
  328. package/lib/dependencies/UnsupportedDependency.js +82 -0
  329. package/lib/dependencies/WebAssemblyExportImportedDependency.js +93 -0
  330. package/lib/dependencies/WebAssemblyImportDependency.js +108 -0
  331. package/lib/dependencies/WebpackIsIncludedDependency.js +84 -0
  332. package/lib/dependencies/WorkerDependency.js +141 -0
  333. package/lib/dependencies/WorkerPlugin.js +565 -0
  334. package/lib/dependencies/getFunctionExpression.js +66 -0
  335. package/lib/dependencies/processExportInfo.js +67 -0
  336. package/lib/electron/ElectronTargetPlugin.js +71 -0
  337. package/lib/errors/BuildCycleError.js +30 -0
  338. package/lib/esm/ExportWebpackRequireRuntimeModule.js +30 -0
  339. package/lib/esm/ModuleChunkFormatPlugin.js +273 -0
  340. package/lib/esm/ModuleChunkLoadingPlugin.js +143 -0
  341. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +426 -0
  342. package/lib/formatLocation.js +67 -0
  343. package/lib/hmr/HotModuleReplacement.runtime.js +419 -0
  344. package/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
  345. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +471 -0
  346. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  347. package/lib/hmr/LazyCompilationPlugin.js +473 -0
  348. package/lib/hmr/lazyCompilationBackend.js +167 -0
  349. package/lib/ids/ChunkModuleIdRangePlugin.js +94 -0
  350. package/lib/ids/DeterministicChunkIdsPlugin.js +73 -0
  351. package/lib/ids/DeterministicModuleIdsPlugin.js +98 -0
  352. package/lib/ids/HashedModuleIdsPlugin.js +85 -0
  353. package/lib/ids/IdHelpers.js +492 -0
  354. package/lib/ids/NamedChunkIdsPlugin.js +92 -0
  355. package/lib/ids/NamedModuleIdsPlugin.js +68 -0
  356. package/lib/ids/NaturalChunkIdsPlugin.js +35 -0
  357. package/lib/ids/NaturalModuleIdsPlugin.js +40 -0
  358. package/lib/ids/OccurrenceChunkIdsPlugin.js +86 -0
  359. package/lib/ids/OccurrenceModuleIdsPlugin.js +168 -0
  360. package/lib/ids/SyncModuleIdsPlugin.js +161 -0
  361. package/lib/index.js +681 -0
  362. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +153 -0
  363. package/lib/javascript/BasicEvaluatedExpression.js +603 -0
  364. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  365. package/lib/javascript/ChunkHelpers.js +45 -0
  366. package/lib/javascript/CommonJsChunkFormatPlugin.js +148 -0
  367. package/lib/javascript/EnableChunkLoadingPlugin.js +127 -0
  368. package/lib/javascript/JavascriptGenerator.js +277 -0
  369. package/lib/javascript/JavascriptModulesPlugin.js +1905 -0
  370. package/lib/javascript/JavascriptParser.js +5476 -0
  371. package/lib/javascript/JavascriptParserHelpers.js +129 -0
  372. package/lib/javascript/StartupHelpers.js +178 -0
  373. package/lib/json/JsonData.js +74 -0
  374. package/lib/json/JsonGenerator.js +234 -0
  375. package/lib/json/JsonModulesPlugin.js +66 -0
  376. package/lib/json/JsonParser.js +93 -0
  377. package/lib/library/AbstractLibraryPlugin.js +339 -0
  378. package/lib/library/AmdLibraryPlugin.js +181 -0
  379. package/lib/library/AssignLibraryPlugin.js +445 -0
  380. package/lib/library/EnableLibraryPlugin.js +306 -0
  381. package/lib/library/ExportPropertyLibraryPlugin.js +116 -0
  382. package/lib/library/JsonpLibraryPlugin.js +92 -0
  383. package/lib/library/ModuleLibraryPlugin.js +438 -0
  384. package/lib/library/SystemLibraryPlugin.js +256 -0
  385. package/lib/library/UmdLibraryPlugin.js +355 -0
  386. package/lib/logging/Logger.js +223 -0
  387. package/lib/logging/createConsoleLogger.js +217 -0
  388. package/lib/logging/runtime.js +45 -0
  389. package/lib/logging/truncateArgs.js +83 -0
  390. package/lib/node/CommonJsChunkLoadingPlugin.js +120 -0
  391. package/lib/node/NodeEnvironmentPlugin.js +73 -0
  392. package/lib/node/NodeSourcePlugin.js +19 -0
  393. package/lib/node/NodeTargetPlugin.js +102 -0
  394. package/lib/node/NodeTemplatePlugin.js +42 -0
  395. package/lib/node/NodeWatchFileSystem.js +198 -0
  396. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +286 -0
  397. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +123 -0
  398. package/lib/node/ReadFileCompileWasmPlugin.js +127 -0
  399. package/lib/node/RequireChunkLoadingRuntimeModule.js +239 -0
  400. package/lib/node/nodeConsole.js +185 -0
  401. package/lib/optimize/AggressiveMergingPlugin.js +98 -0
  402. package/lib/optimize/AggressiveSplittingPlugin.js +352 -0
  403. package/lib/optimize/ConcatenatedModule.js +2290 -0
  404. package/lib/optimize/EnsureChunkConditionsPlugin.js +88 -0
  405. package/lib/optimize/FlagIncludedChunksPlugin.js +137 -0
  406. package/lib/optimize/InnerGraph.js +368 -0
  407. package/lib/optimize/InnerGraphPlugin.js +455 -0
  408. package/lib/optimize/LimitChunkCountPlugin.js +302 -0
  409. package/lib/optimize/MangleExportsPlugin.js +194 -0
  410. package/lib/optimize/MergeDuplicateChunksPlugin.js +138 -0
  411. package/lib/optimize/MinChunkSizePlugin.js +121 -0
  412. package/lib/optimize/MinMaxSizeWarning.js +35 -0
  413. package/lib/optimize/ModuleConcatenationPlugin.js +971 -0
  414. package/lib/optimize/RealContentHashPlugin.js +488 -0
  415. package/lib/optimize/RemoveEmptyChunksPlugin.js +60 -0
  416. package/lib/optimize/RemoveParentModulesPlugin.js +216 -0
  417. package/lib/optimize/RuntimeChunkPlugin.js +52 -0
  418. package/lib/optimize/SideEffectsFlagPlugin.js +417 -0
  419. package/lib/optimize/SplitChunksPlugin.js +1836 -0
  420. package/lib/performance/AssetsOverSizeLimitWarning.js +37 -0
  421. package/lib/performance/EntrypointsOverSizeLimitWarning.js +40 -0
  422. package/lib/performance/NoAsyncChunksWarning.js +21 -0
  423. package/lib/performance/SizeLimitsPlugin.js +183 -0
  424. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +46 -0
  425. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
  426. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +56 -0
  427. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +52 -0
  428. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +46 -0
  429. package/lib/rules/BasicEffectRulePlugin.js +56 -0
  430. package/lib/rules/BasicMatcherRulePlugin.js +68 -0
  431. package/lib/rules/ObjectMatcherRulePlugin.js +79 -0
  432. package/lib/rules/RuleSetCompiler.js +447 -0
  433. package/lib/rules/UseEffectRulePlugin.js +236 -0
  434. package/lib/runtime/AsyncModuleRuntimeModule.js +199 -0
  435. package/lib/runtime/AutoPublicPathRuntimeModule.js +90 -0
  436. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  437. package/lib/runtime/ChunkNameRuntimeModule.js +28 -0
  438. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +40 -0
  439. package/lib/runtime/CompatRuntimeModule.js +83 -0
  440. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +69 -0
  441. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  442. package/lib/runtime/CreateScriptUrlRuntimeModule.js +38 -0
  443. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +42 -0
  444. package/lib/runtime/EnsureChunkRuntimeModule.js +69 -0
  445. package/lib/runtime/GetChunkFilenameRuntimeModule.js +299 -0
  446. package/lib/runtime/GetFullHashRuntimeModule.js +31 -0
  447. package/lib/runtime/GetMainFilenameRuntimeModule.js +49 -0
  448. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +99 -0
  449. package/lib/runtime/GlobalRuntimeModule.js +47 -0
  450. package/lib/runtime/HasOwnPropertyRuntimeModule.js +35 -0
  451. package/lib/runtime/HelperRuntimeModule.js +18 -0
  452. package/lib/runtime/LoadScriptRuntimeModule.js +174 -0
  453. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +232 -0
  454. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +39 -0
  455. package/lib/runtime/NonceRuntimeModule.js +24 -0
  456. package/lib/runtime/OnChunksLoadedRuntimeModule.js +78 -0
  457. package/lib/runtime/PublicPathRuntimeModule.js +38 -0
  458. package/lib/runtime/RelativeUrlRuntimeModule.js +44 -0
  459. package/lib/runtime/RuntimeIdRuntimeModule.js +33 -0
  460. package/lib/runtime/StartupChunkDependenciesPlugin.js +88 -0
  461. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +77 -0
  462. package/lib/runtime/StartupEntrypointRuntimeModule.js +54 -0
  463. package/lib/runtime/SystemContextRuntimeModule.js +23 -0
  464. package/lib/runtime/ToBinaryRuntimeModule.js +72 -0
  465. package/lib/schemes/DataUriPlugin.js +47 -0
  466. package/lib/schemes/FileUriPlugin.js +54 -0
  467. package/lib/schemes/HttpUriPlugin.js +1410 -0
  468. package/lib/schemes/VirtualUrlPlugin.js +248 -0
  469. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  470. package/lib/serialization/ArraySerializer.js +38 -0
  471. package/lib/serialization/BinaryMiddleware.js +1164 -0
  472. package/lib/serialization/DateObjectSerializer.js +28 -0
  473. package/lib/serialization/ErrorObjectSerializer.js +49 -0
  474. package/lib/serialization/FileMiddleware.js +766 -0
  475. package/lib/serialization/MapObjectSerializer.js +48 -0
  476. package/lib/serialization/NullPrototypeObjectSerializer.js +53 -0
  477. package/lib/serialization/ObjectMiddleware.js +877 -0
  478. package/lib/serialization/PlainObjectSerializer.js +119 -0
  479. package/lib/serialization/RegExpObjectSerializer.js +29 -0
  480. package/lib/serialization/Serializer.js +82 -0
  481. package/lib/serialization/SerializerMiddleware.js +226 -0
  482. package/lib/serialization/SetObjectSerializer.js +40 -0
  483. package/lib/serialization/SingleItemMiddleware.js +36 -0
  484. package/lib/serialization/types.js +13 -0
  485. package/lib/sharing/ConsumeSharedFallbackDependency.js +33 -0
  486. package/lib/sharing/ConsumeSharedModule.js +344 -0
  487. package/lib/sharing/ConsumeSharedPlugin.js +380 -0
  488. package/lib/sharing/ConsumeSharedRuntimeModule.js +358 -0
  489. package/lib/sharing/ProvideForSharedDependency.js +33 -0
  490. package/lib/sharing/ProvideSharedDependency.js +80 -0
  491. package/lib/sharing/ProvideSharedModule.js +196 -0
  492. package/lib/sharing/ProvideSharedModuleFactory.js +37 -0
  493. package/lib/sharing/ProvideSharedPlugin.js +248 -0
  494. package/lib/sharing/SharePlugin.js +91 -0
  495. package/lib/sharing/ShareRuntimeModule.js +152 -0
  496. package/lib/sharing/resolveMatchedConfigs.js +106 -0
  497. package/lib/sharing/utils.js +421 -0
  498. package/lib/stats/DefaultStatsFactoryPlugin.js +2791 -0
  499. package/lib/stats/DefaultStatsPresetPlugin.js +417 -0
  500. package/lib/stats/DefaultStatsPrinterPlugin.js +1860 -0
  501. package/lib/stats/StatsFactory.js +406 -0
  502. package/lib/stats/StatsPrinter.js +300 -0
  503. package/lib/url/URLParserPlugin.js +266 -0
  504. package/lib/util/AppendOnlyStackedSet.js +78 -0
  505. package/lib/util/ArrayHelpers.js +46 -0
  506. package/lib/util/ArrayQueue.js +104 -0
  507. package/lib/util/AsyncQueue.js +411 -0
  508. package/lib/util/Hash.js +68 -0
  509. package/lib/util/IterableHelpers.js +46 -0
  510. package/lib/util/LazyBucketSortedSet.js +272 -0
  511. package/lib/util/LazySet.js +236 -0
  512. package/lib/util/MapHelpers.js +34 -0
  513. package/lib/util/ParallelismFactorCalculator.js +70 -0
  514. package/lib/util/Queue.js +52 -0
  515. package/lib/util/Semaphore.js +51 -0
  516. package/lib/util/SetHelpers.js +94 -0
  517. package/lib/util/SortableSet.js +176 -0
  518. package/lib/util/StackedCacheMap.js +140 -0
  519. package/lib/util/StackedMap.js +164 -0
  520. package/lib/util/StringXor.js +103 -0
  521. package/lib/util/TupleQueue.js +70 -0
  522. package/lib/util/TupleSet.js +185 -0
  523. package/lib/util/URLAbsoluteSpecifier.js +86 -0
  524. package/lib/util/WeakTupleMap.js +227 -0
  525. package/lib/util/binarySearchBounds.js +136 -0
  526. package/lib/util/chainedImports.js +99 -0
  527. package/lib/util/cleverMerge.js +676 -0
  528. package/lib/util/comparators.js +645 -0
  529. package/lib/util/compileBooleanMatcher.js +313 -0
  530. package/lib/util/concatenate.js +232 -0
  531. package/lib/util/conventions.js +126 -0
  532. package/lib/util/create-schema-validation.js +41 -0
  533. package/lib/util/createHash.js +91 -0
  534. package/lib/util/dataURL.js +39 -0
  535. package/lib/util/deprecation.js +350 -0
  536. package/lib/util/deterministicGrouping.js +561 -0
  537. package/lib/util/extractSourceMap.js +318 -0
  538. package/lib/util/extractUrlAndGlobal.js +18 -0
  539. package/lib/util/findGraphRoots.js +211 -0
  540. package/lib/util/fs.js +675 -0
  541. package/lib/util/generateDebugId.js +33 -0
  542. package/lib/util/hash/BatchedHash.js +115 -0
  543. package/lib/util/hash/BulkUpdateHash.js +145 -0
  544. package/lib/util/hash/DebugHash.js +75 -0
  545. package/lib/util/hash/hash-digest.js +217 -0
  546. package/lib/util/hash/md4.js +20 -0
  547. package/lib/util/hash/wasm-hash.js +232 -0
  548. package/lib/util/hash/xxhash64.js +20 -0
  549. package/lib/util/identifier.js +471 -0
  550. package/lib/util/internalSerializables.js +222 -0
  551. package/lib/util/magicComment.js +25 -0
  552. package/lib/util/makeSerializable.js +60 -0
  553. package/lib/util/memoize.js +36 -0
  554. package/lib/util/nonNumericOnlyHash.js +22 -0
  555. package/lib/util/numberHash.js +95 -0
  556. package/lib/util/objectToMap.js +15 -0
  557. package/lib/util/processAsyncTree.js +68 -0
  558. package/lib/util/propertyAccess.js +30 -0
  559. package/lib/util/propertyName.js +76 -0
  560. package/lib/util/registerExternalSerializer.js +334 -0
  561. package/lib/util/removeBOM.js +25 -0
  562. package/lib/util/runtime.js +717 -0
  563. package/lib/util/semver.js +604 -0
  564. package/lib/util/serialization.js +153 -0
  565. package/lib/util/smartGrouping.js +221 -0
  566. package/lib/util/source.js +62 -0
  567. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  568. package/lib/validateSchema.js +177 -0
  569. package/lib/wasm/EnableWasmLoadingPlugin.js +146 -0
  570. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +154 -0
  571. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +74 -0
  572. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +212 -0
  573. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +209 -0
  574. package/lib/wasm-async/AsyncWebAssemblyParser.js +80 -0
  575. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +107 -0
  576. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +20 -0
  577. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +422 -0
  578. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +91 -0
  579. package/lib/wasm-sync/WebAssemblyGenerator.js +535 -0
  580. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +111 -0
  581. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +236 -0
  582. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +151 -0
  583. package/lib/wasm-sync/WebAssemblyParser.js +201 -0
  584. package/lib/wasm-sync/WebAssemblyUtils.js +66 -0
  585. package/lib/web/FetchCompileAsyncWasmPlugin.js +70 -0
  586. package/lib/web/FetchCompileWasmPlugin.js +86 -0
  587. package/lib/web/JsonpChunkLoadingPlugin.js +101 -0
  588. package/lib/web/JsonpChunkLoadingRuntimeModule.js +455 -0
  589. package/lib/web/JsonpTemplatePlugin.js +37 -0
  590. package/lib/webpack.js +227 -0
  591. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +110 -0
  592. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +231 -0
  593. package/lib/webworker/WebWorkerTemplatePlugin.js +26 -0
  594. package/module.d.ts +238 -0
  595. package/package.json +258 -0
  596. package/schemas/WebpackOptions.check.d.ts +7 -0
  597. package/schemas/WebpackOptions.check.js +6 -0
  598. package/schemas/WebpackOptions.json +6179 -0
  599. package/schemas/_container.json +155 -0
  600. package/schemas/_sharing.json +118 -0
  601. package/schemas/plugins/BannerPlugin.check.d.ts +7 -0
  602. package/schemas/plugins/BannerPlugin.check.js +6 -0
  603. package/schemas/plugins/BannerPlugin.json +115 -0
  604. package/schemas/plugins/DllPlugin.check.d.ts +7 -0
  605. package/schemas/plugins/DllPlugin.check.js +6 -0
  606. package/schemas/plugins/DllPlugin.json +36 -0
  607. package/schemas/plugins/DllReferencePlugin.check.d.ts +7 -0
  608. package/schemas/plugins/DllReferencePlugin.check.js +6 -0
  609. package/schemas/plugins/DllReferencePlugin.json +206 -0
  610. package/schemas/plugins/IgnorePlugin.check.d.ts +7 -0
  611. package/schemas/plugins/IgnorePlugin.check.js +6 -0
  612. package/schemas/plugins/IgnorePlugin.json +34 -0
  613. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +7 -0
  614. package/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
  615. package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  616. package/schemas/plugins/ManifestPlugin.check.d.ts +7 -0
  617. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  618. package/schemas/plugins/ManifestPlugin.json +98 -0
  619. package/schemas/plugins/ProgressPlugin.check.d.ts +7 -0
  620. package/schemas/plugins/ProgressPlugin.check.js +6 -0
  621. package/schemas/plugins/ProgressPlugin.json +65 -0
  622. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +7 -0
  623. package/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
  624. package/schemas/plugins/SourceMapDevToolPlugin.json +168 -0
  625. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +7 -0
  626. package/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
  627. package/schemas/plugins/WatchIgnorePlugin.json +25 -0
  628. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +7 -0
  629. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
  630. package/schemas/plugins/asset/AssetGeneratorOptions.json +3 -0
  631. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +7 -0
  632. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
  633. package/schemas/plugins/asset/AssetInlineGeneratorOptions.json +3 -0
  634. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +7 -0
  635. package/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
  636. package/schemas/plugins/asset/AssetParserOptions.json +3 -0
  637. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +7 -0
  638. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
  639. package/schemas/plugins/asset/AssetResourceGeneratorOptions.json +3 -0
  640. package/schemas/plugins/container/ContainerPlugin.check.d.ts +7 -0
  641. package/schemas/plugins/container/ContainerPlugin.check.js +6 -0
  642. package/schemas/plugins/container/ContainerPlugin.json +294 -0
  643. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +7 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +132 -0
  646. package/schemas/plugins/container/ExternalsType.check.d.ts +7 -0
  647. package/schemas/plugins/container/ExternalsType.check.js +6 -0
  648. package/schemas/plugins/container/ExternalsType.json +3 -0
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +7 -0
  650. package/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
  651. package/schemas/plugins/container/ModuleFederationPlugin.json +525 -0
  652. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  653. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  654. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  655. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  656. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  657. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  658. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  659. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  660. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  661. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  662. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  663. package/schemas/plugins/css/CssParserOptions.json +3 -0
  664. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +7 -0
  665. package/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
  666. package/schemas/plugins/debug/ProfilingPlugin.json +12 -0
  667. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  668. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  669. package/schemas/plugins/ids/HashedModuleIdsPlugin.json +57 -0
  670. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +7 -0
  671. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
  672. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
  673. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +7 -0
  674. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
  675. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
  676. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +7 -0
  677. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  678. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  679. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +7 -0
  680. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  681. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  682. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +7 -0
  683. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
  684. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  685. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +7 -0
  686. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
  687. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
  688. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +7 -0
  689. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +6 -0
  690. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.json +11 -0
  691. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +7 -0
  692. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
  693. package/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
  694. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +7 -0
  695. package/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
  696. package/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
  697. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  698. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  699. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  700. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +7 -0
  701. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
  702. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
  703. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +7 -0
  704. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
  705. package/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
  706. package/schemas/plugins/sharing/SharePlugin.check.d.ts +7 -0
  707. package/schemas/plugins/sharing/SharePlugin.check.js +6 -0
  708. package/schemas/plugins/sharing/SharePlugin.json +133 -0
  709. package/types.d.ts +20217 -0
@@ -0,0 +1,1288 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const InitFragment = require("./InitFragment");
9
+ const RuntimeGlobals = require("./RuntimeGlobals");
10
+ const Template = require("./Template");
11
+ const {
12
+ getOutgoingAsyncModules
13
+ } = require("./async-modules/AsyncModuleHelpers");
14
+ const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
15
+ const {
16
+ getMakeDeferredNamespaceModeFromExportsType,
17
+ getOptimizedDeferredModule
18
+ } = require("./runtime/MakeDeferredNamespaceObjectRuntime");
19
+ const { equals } = require("./util/ArrayHelpers");
20
+ const compileBooleanMatcher = require("./util/compileBooleanMatcher");
21
+ const memoize = require("./util/memoize");
22
+ const propertyAccess = require("./util/propertyAccess");
23
+ const { forEachRuntime, subtractRuntime } = require("./util/runtime");
24
+
25
+ const getHarmonyImportDependency = memoize(() =>
26
+ require("./dependencies/HarmonyImportDependency")
27
+ );
28
+ const getImportDependency = memoize(() =>
29
+ require("./dependencies/ImportDependency")
30
+ );
31
+
32
+ /** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
33
+ /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
34
+ /** @typedef {import("./Chunk")} Chunk */
35
+ /** @typedef {import("./ChunkGraph")} ChunkGraph */
36
+ /** @typedef {import("./Compilation")} Compilation */
37
+ /** @typedef {import("./Dependency")} Dependency */
38
+ /** @typedef {import("./Module")} Module */
39
+ /** @typedef {import("./Module").BuildMeta} BuildMeta */
40
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
41
+ /** @typedef {import("./ModuleGraph")} ModuleGraph */
42
+ /** @typedef {import("./RequestShortener")} RequestShortener */
43
+ /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
44
+ /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
45
+ /** @typedef {import("./NormalModuleFactory").ModuleDependency} ModuleDependency */
46
+
47
+ /**
48
+ * @param {Module} module the module
49
+ * @param {ChunkGraph} chunkGraph the chunk graph
50
+ * @returns {string} error message
51
+ */
52
+ const noModuleIdErrorMessage = (
53
+ module,
54
+ chunkGraph
55
+ ) => `Module ${module.identifier()} has no id assigned.
56
+ This should not happen.
57
+ It's in these chunks: ${
58
+ Array.from(
59
+ chunkGraph.getModuleChunksIterable(module),
60
+ (c) => c.name || c.id || c.debugId
61
+ ).join(", ") || "none"
62
+ } (If module is in no chunk this indicates a bug in some chunk/module optimization logic)
63
+ Module has these incoming connections: ${Array.from(
64
+ chunkGraph.moduleGraph.getIncomingConnections(module),
65
+ (connection) =>
66
+ `\n - ${
67
+ connection.originModule && connection.originModule.identifier()
68
+ } ${connection.dependency && connection.dependency.type} ${
69
+ (connection.explanations && [...connection.explanations].join(", ")) || ""
70
+ }`
71
+ ).join("")}`;
72
+
73
+ /**
74
+ * @param {string | undefined} definition global object definition
75
+ * @returns {string | undefined} save to use global object
76
+ */
77
+ function getGlobalObject(definition) {
78
+ if (!definition) return definition;
79
+ const trimmed = definition.trim();
80
+
81
+ if (
82
+ // identifier, we do not need real identifier regarding ECMAScript/Unicode
83
+ /^[_\p{L}][_0-9\p{L}]*$/iu.test(trimmed) ||
84
+ // iife
85
+ // call expression
86
+ // expression in parentheses
87
+ /^(?:[_\p{L}][_0-9\p{L}]*)?\(.*\)$/iu.test(trimmed)
88
+ ) {
89
+ return trimmed;
90
+ }
91
+
92
+ return `Object(${trimmed})`;
93
+ }
94
+
95
+ class RuntimeTemplate {
96
+ /**
97
+ * @param {Compilation} compilation the compilation
98
+ * @param {OutputOptions} outputOptions the compilation output options
99
+ * @param {RequestShortener} requestShortener the request shortener
100
+ */
101
+ constructor(compilation, outputOptions, requestShortener) {
102
+ this.compilation = compilation;
103
+ this.outputOptions = /** @type {OutputOptions} */ (outputOptions || {});
104
+ this.requestShortener = requestShortener;
105
+ this.globalObject =
106
+ /** @type {string} */
107
+ (getGlobalObject(outputOptions.globalObject));
108
+ this.contentHashReplacement = "X".repeat(outputOptions.hashDigestLength);
109
+ }
110
+
111
+ isIIFE() {
112
+ return this.outputOptions.iife;
113
+ }
114
+
115
+ isModule() {
116
+ return this.outputOptions.module;
117
+ }
118
+
119
+ isNeutralPlatform() {
120
+ return (
121
+ !this.compilation.compiler.platform.web &&
122
+ !this.compilation.compiler.platform.node
123
+ );
124
+ }
125
+
126
+ supportsConst() {
127
+ return this.outputOptions.environment.const;
128
+ }
129
+
130
+ supportsMethodShorthand() {
131
+ return this.outputOptions.environment.methodShorthand;
132
+ }
133
+
134
+ supportsArrowFunction() {
135
+ return this.outputOptions.environment.arrowFunction;
136
+ }
137
+
138
+ supportsAsyncFunction() {
139
+ return this.outputOptions.environment.asyncFunction;
140
+ }
141
+
142
+ supportsOptionalChaining() {
143
+ return this.outputOptions.environment.optionalChaining;
144
+ }
145
+
146
+ supportsForOf() {
147
+ return this.outputOptions.environment.forOf;
148
+ }
149
+
150
+ supportsDestructuring() {
151
+ return this.outputOptions.environment.destructuring;
152
+ }
153
+
154
+ supportsBigIntLiteral() {
155
+ return this.outputOptions.environment.bigIntLiteral;
156
+ }
157
+
158
+ supportsDynamicImport() {
159
+ return this.outputOptions.environment.dynamicImport;
160
+ }
161
+
162
+ supportsEcmaScriptModuleSyntax() {
163
+ return this.outputOptions.environment.module;
164
+ }
165
+
166
+ supportTemplateLiteral() {
167
+ return this.outputOptions.environment.templateLiteral;
168
+ }
169
+
170
+ supportNodePrefixForCoreModules() {
171
+ return this.outputOptions.environment.nodePrefixForCoreModules;
172
+ }
173
+
174
+ /**
175
+ * @param {string} mod a module
176
+ * @returns {string} a module with `node:` prefix when supported, otherwise an original name
177
+ */
178
+ renderNodePrefixForCoreModule(mod) {
179
+ return this.outputOptions.environment.nodePrefixForCoreModules
180
+ ? `"node:${mod}"`
181
+ : `"${mod}"`;
182
+ }
183
+
184
+ /**
185
+ * @returns {"const" | "var"} return `const` when it is supported, otherwise `var`
186
+ */
187
+ renderConst() {
188
+ return this.supportsConst() ? "const" : "var";
189
+ }
190
+
191
+ /**
192
+ * @param {string} returnValue return value
193
+ * @param {string} args arguments
194
+ * @returns {string} returning function
195
+ */
196
+ returningFunction(returnValue, args = "") {
197
+ return this.supportsArrowFunction()
198
+ ? `(${args}) => (${returnValue})`
199
+ : `function(${args}) { return ${returnValue}; }`;
200
+ }
201
+
202
+ /**
203
+ * @param {string} args arguments
204
+ * @param {string | string[]} body body
205
+ * @returns {string} basic function
206
+ */
207
+ basicFunction(args, body) {
208
+ return this.supportsArrowFunction()
209
+ ? `(${args}) => {\n${Template.indent(body)}\n}`
210
+ : `function(${args}) {\n${Template.indent(body)}\n}`;
211
+ }
212
+
213
+ /**
214
+ * @param {(string | { expr: string })[]} args args
215
+ * @returns {string} result expression
216
+ */
217
+ concatenation(...args) {
218
+ const len = args.length;
219
+
220
+ if (len === 2) return this._es5Concatenation(args);
221
+ if (len === 0) return '""';
222
+ if (len === 1) {
223
+ return typeof args[0] === "string"
224
+ ? JSON.stringify(args[0])
225
+ : `"" + ${args[0].expr}`;
226
+ }
227
+ if (!this.supportTemplateLiteral()) return this._es5Concatenation(args);
228
+
229
+ // cost comparison between template literal and concatenation:
230
+ // both need equal surroundings: `xxx` vs "xxx"
231
+ // template literal has constant cost of 3 chars for each expression
232
+ // es5 concatenation has cost of 3 + n chars for n expressions in row
233
+ // when a es5 concatenation ends with an expression it reduces cost by 3
234
+ // when a es5 concatenation starts with an single expression it reduces cost by 3
235
+ // e. g. `${a}${b}${c}` (3*3 = 9) is longer than ""+a+b+c ((3+3)-3 = 3)
236
+ // e. g. `x${a}x${b}x${c}x` (3*3 = 9) is shorter than "x"+a+"x"+b+"x"+c+"x" (4+4+4 = 12)
237
+
238
+ let templateCost = 0;
239
+ let concatenationCost = 0;
240
+
241
+ let lastWasExpr = false;
242
+ for (const arg of args) {
243
+ const isExpr = typeof arg !== "string";
244
+ if (isExpr) {
245
+ templateCost += 3;
246
+ concatenationCost += lastWasExpr ? 1 : 4;
247
+ }
248
+ lastWasExpr = isExpr;
249
+ }
250
+ if (lastWasExpr) concatenationCost -= 3;
251
+ if (typeof args[0] !== "string" && typeof args[1] === "string") {
252
+ concatenationCost -= 3;
253
+ }
254
+
255
+ if (concatenationCost <= templateCost) return this._es5Concatenation(args);
256
+
257
+ return `\`${args
258
+ .map((arg) => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
259
+ .join("")}\``;
260
+ }
261
+
262
+ /**
263
+ * @param {(string | { expr: string })[]} args args (len >= 2)
264
+ * @returns {string} result expression
265
+ * @private
266
+ */
267
+ _es5Concatenation(args) {
268
+ const str = args
269
+ .map((arg) => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
270
+ .join(" + ");
271
+
272
+ // when the first two args are expression, we need to prepend "" + to force string
273
+ // concatenation instead of number addition.
274
+ return typeof args[0] !== "string" && typeof args[1] !== "string"
275
+ ? `"" + ${str}`
276
+ : str;
277
+ }
278
+
279
+ /**
280
+ * @param {string} expression expression
281
+ * @param {string} args arguments
282
+ * @returns {string} expression function code
283
+ */
284
+ expressionFunction(expression, args = "") {
285
+ return this.supportsArrowFunction()
286
+ ? `(${args}) => (${expression})`
287
+ : `function(${args}) { ${expression}; }`;
288
+ }
289
+
290
+ /**
291
+ * @returns {string} empty function code
292
+ */
293
+ emptyFunction() {
294
+ return this.supportsArrowFunction() ? "x => {}" : "function() {}";
295
+ }
296
+
297
+ /**
298
+ * @param {string[]} items items
299
+ * @param {string} value value
300
+ * @returns {string} destructure array code
301
+ */
302
+ destructureArray(items, value) {
303
+ return this.supportsDestructuring()
304
+ ? `var [${items.join(", ")}] = ${value};`
305
+ : Template.asString(
306
+ items.map((item, i) => `var ${item} = ${value}[${i}];`)
307
+ );
308
+ }
309
+
310
+ /**
311
+ * @param {string[]} items items
312
+ * @param {string} value value
313
+ * @returns {string} destructure object code
314
+ */
315
+ destructureObject(items, value) {
316
+ return this.supportsDestructuring()
317
+ ? `var {${items.join(", ")}} = ${value};`
318
+ : Template.asString(
319
+ items.map(
320
+ (item) => `var ${item} = ${value}${propertyAccess([item])};`
321
+ )
322
+ );
323
+ }
324
+
325
+ /**
326
+ * @param {string} args arguments
327
+ * @param {string} body body
328
+ * @returns {string} IIFE code
329
+ */
330
+ iife(args, body) {
331
+ return `(${this.basicFunction(args, body)})()`;
332
+ }
333
+
334
+ /**
335
+ * @param {string} variable variable
336
+ * @param {string} array array
337
+ * @param {string | string[]} body body
338
+ * @returns {string} for each code
339
+ */
340
+ forEach(variable, array, body) {
341
+ return this.supportsForOf()
342
+ ? `for(const ${variable} of ${array}) {\n${Template.indent(body)}\n}`
343
+ : `${array}.forEach(function(${variable}) {\n${Template.indent(
344
+ body
345
+ )}\n});`;
346
+ }
347
+
348
+ /**
349
+ * Add a comment
350
+ * @param {object} options Information content of the comment
351
+ * @param {string=} options.request request string used originally
352
+ * @param {(string | null)=} options.chunkName name of the chunk referenced
353
+ * @param {string=} options.chunkReason reason information of the chunk
354
+ * @param {string=} options.message additional message
355
+ * @param {string=} options.exportName name of the export
356
+ * @returns {string} comment
357
+ */
358
+ comment({ request, chunkName, chunkReason, message, exportName }) {
359
+ /** @type {string} */
360
+ let content;
361
+ if (this.outputOptions.pathinfo) {
362
+ content = [message, request, chunkName, chunkReason]
363
+ .filter(Boolean)
364
+ .map((item) => this.requestShortener.shorten(item))
365
+ .join(" | ");
366
+ } else {
367
+ content = [message, chunkName, chunkReason]
368
+ .filter(Boolean)
369
+ .map((item) => this.requestShortener.shorten(item))
370
+ .join(" | ");
371
+ }
372
+ if (!content) return "";
373
+ if (this.outputOptions.pathinfo) {
374
+ return `${Template.toComment(content)} `;
375
+ }
376
+ return `${Template.toNormalComment(content)} `;
377
+ }
378
+
379
+ /**
380
+ * @param {object} options generation options
381
+ * @param {string=} options.request request string used originally
382
+ * @returns {string} generated error block
383
+ */
384
+ throwMissingModuleErrorBlock({ request }) {
385
+ const err = `Cannot find module '${request}'`;
386
+ return `var e = new Error(${JSON.stringify(
387
+ err
388
+ )}); e.code = 'MODULE_NOT_FOUND'; throw e;`;
389
+ }
390
+
391
+ /**
392
+ * @param {object} options generation options
393
+ * @param {string=} options.request request string used originally
394
+ * @returns {string} generated error function
395
+ */
396
+ throwMissingModuleErrorFunction({ request }) {
397
+ return `function webpackMissingModule() { ${this.throwMissingModuleErrorBlock(
398
+ { request }
399
+ )} }`;
400
+ }
401
+
402
+ /**
403
+ * @param {object} options generation options
404
+ * @param {string=} options.request request string used originally
405
+ * @returns {string} generated error IIFE
406
+ */
407
+ missingModule({ request }) {
408
+ return `Object(${this.throwMissingModuleErrorFunction({ request })}())`;
409
+ }
410
+
411
+ /**
412
+ * @param {object} options generation options
413
+ * @param {string=} options.request request string used originally
414
+ * @returns {string} generated error statement
415
+ */
416
+ missingModuleStatement({ request }) {
417
+ return `${this.missingModule({ request })};\n`;
418
+ }
419
+
420
+ /**
421
+ * @param {object} options generation options
422
+ * @param {string=} options.request request string used originally
423
+ * @returns {string} generated error code
424
+ */
425
+ missingModulePromise({ request }) {
426
+ return `Promise.resolve().then(${this.throwMissingModuleErrorFunction({
427
+ request
428
+ })})`;
429
+ }
430
+
431
+ /**
432
+ * @param {object} options options object
433
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
434
+ * @param {Module} options.module the module
435
+ * @param {string=} options.request the request that should be printed as comment
436
+ * @param {string=} options.idExpr expression to use as id expression
437
+ * @param {"expression" | "promise" | "statements"} options.type which kind of code should be returned
438
+ * @returns {string} the code
439
+ */
440
+ weakError({ module, chunkGraph, request, idExpr, type }) {
441
+ const moduleId = chunkGraph.getModuleId(module);
442
+ const errorMessage =
443
+ moduleId === null
444
+ ? JSON.stringify("Module is not available (weak dependency)")
445
+ : idExpr
446
+ ? `"Module '" + ${idExpr} + "' is not available (weak dependency)"`
447
+ : JSON.stringify(
448
+ `Module '${moduleId}' is not available (weak dependency)`
449
+ );
450
+ const comment = request ? `${Template.toNormalComment(request)} ` : "";
451
+ const errorStatements = `var e = new Error(${errorMessage}); ${
452
+ comment
453
+ }e.code = 'MODULE_NOT_FOUND'; throw e;`;
454
+ switch (type) {
455
+ case "statements":
456
+ return errorStatements;
457
+ case "promise":
458
+ return `Promise.resolve().then(${this.basicFunction(
459
+ "",
460
+ errorStatements
461
+ )})`;
462
+ case "expression":
463
+ return this.iife("", errorStatements);
464
+ }
465
+ }
466
+
467
+ /**
468
+ * @param {object} options options object
469
+ * @param {Module} options.module the module
470
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
471
+ * @param {string=} options.request the request that should be printed as comment
472
+ * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
473
+ * @returns {string} the expression
474
+ */
475
+ moduleId({ module, chunkGraph, request, weak }) {
476
+ if (!module) {
477
+ return this.missingModule({
478
+ request
479
+ });
480
+ }
481
+ const moduleId = chunkGraph.getModuleId(module);
482
+ if (moduleId === null) {
483
+ if (weak) {
484
+ return "null /* weak dependency, without id */";
485
+ }
486
+ throw new Error(
487
+ `RuntimeTemplate.moduleId(): ${noModuleIdErrorMessage(
488
+ module,
489
+ chunkGraph
490
+ )}`
491
+ );
492
+ }
493
+ return `${this.comment({ request })}${JSON.stringify(moduleId)}`;
494
+ }
495
+
496
+ /**
497
+ * @param {object} options options object
498
+ * @param {Module | null} options.module the module
499
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
500
+ * @param {string=} options.request the request that should be printed as comment
501
+ * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
502
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
503
+ * @returns {string} the expression
504
+ */
505
+ moduleRaw({ module, chunkGraph, request, weak, runtimeRequirements }) {
506
+ if (!module) {
507
+ return this.missingModule({
508
+ request
509
+ });
510
+ }
511
+ const moduleId = chunkGraph.getModuleId(module);
512
+ if (moduleId === null) {
513
+ if (weak) {
514
+ // only weak referenced modules don't get an id
515
+ // we can always emit an error emitting code here
516
+ return this.weakError({
517
+ module,
518
+ chunkGraph,
519
+ request,
520
+ type: "expression"
521
+ });
522
+ }
523
+ throw new Error(
524
+ `RuntimeTemplate.moduleId(): ${noModuleIdErrorMessage(
525
+ module,
526
+ chunkGraph
527
+ )}`
528
+ );
529
+ }
530
+ runtimeRequirements.add(RuntimeGlobals.require);
531
+ return `${RuntimeGlobals.require}(${this.moduleId({
532
+ module,
533
+ chunkGraph,
534
+ request,
535
+ weak
536
+ })})`;
537
+ }
538
+
539
+ /**
540
+ * @param {object} options options object
541
+ * @param {Module | null} options.module the module
542
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
543
+ * @param {string} options.request the request that should be printed as comment
544
+ * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
545
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
546
+ * @returns {string} the expression
547
+ */
548
+ moduleExports({ module, chunkGraph, request, weak, runtimeRequirements }) {
549
+ return this.moduleRaw({
550
+ module,
551
+ chunkGraph,
552
+ request,
553
+ weak,
554
+ runtimeRequirements
555
+ });
556
+ }
557
+
558
+ /**
559
+ * @param {object} options options object
560
+ * @param {Module} options.module the module
561
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
562
+ * @param {string} options.request the request that should be printed as comment
563
+ * @param {boolean=} options.strict if the current module is in strict esm mode
564
+ * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
565
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
566
+ * @returns {string} the expression
567
+ */
568
+ moduleNamespace({
569
+ module,
570
+ chunkGraph,
571
+ request,
572
+ strict,
573
+ weak,
574
+ runtimeRequirements
575
+ }) {
576
+ if (!module) {
577
+ return this.missingModule({
578
+ request
579
+ });
580
+ }
581
+ if (chunkGraph.getModuleId(module) === null) {
582
+ if (weak) {
583
+ // only weak referenced modules don't get an id
584
+ // we can always emit an error emitting code here
585
+ return this.weakError({
586
+ module,
587
+ chunkGraph,
588
+ request,
589
+ type: "expression"
590
+ });
591
+ }
592
+ throw new Error(
593
+ `RuntimeTemplate.moduleNamespace(): ${noModuleIdErrorMessage(
594
+ module,
595
+ chunkGraph
596
+ )}`
597
+ );
598
+ }
599
+ const moduleId = this.moduleId({
600
+ module,
601
+ chunkGraph,
602
+ request,
603
+ weak
604
+ });
605
+ const exportsType = module.getExportsType(chunkGraph.moduleGraph, strict);
606
+ switch (exportsType) {
607
+ case "namespace":
608
+ return this.moduleRaw({
609
+ module,
610
+ chunkGraph,
611
+ request,
612
+ weak,
613
+ runtimeRequirements
614
+ });
615
+ case "default-with-named":
616
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
617
+ return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 3)`;
618
+ case "default-only":
619
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
620
+ return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 1)`;
621
+ case "dynamic":
622
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
623
+ return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 7)`;
624
+ }
625
+ }
626
+
627
+ /**
628
+ * @param {object} options options object
629
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
630
+ * @param {AsyncDependenciesBlock=} options.block the current dependencies block
631
+ * @param {Module} options.module the module
632
+ * @param {string} options.request the request that should be printed as comment
633
+ * @param {string} options.message a message for the comment
634
+ * @param {boolean=} options.strict if the current module is in strict esm mode
635
+ * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
636
+ * @param {Dependency} options.dependency dependency
637
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
638
+ * @returns {string} the promise expression
639
+ */
640
+ moduleNamespacePromise({
641
+ chunkGraph,
642
+ block,
643
+ module,
644
+ request,
645
+ message,
646
+ strict,
647
+ weak,
648
+ dependency,
649
+ runtimeRequirements
650
+ }) {
651
+ if (!module) {
652
+ return this.missingModulePromise({
653
+ request
654
+ });
655
+ }
656
+ const moduleId = chunkGraph.getModuleId(module);
657
+ if (moduleId === null) {
658
+ if (weak) {
659
+ // only weak referenced modules don't get an id
660
+ // we can always emit an error emitting code here
661
+ return this.weakError({
662
+ module,
663
+ chunkGraph,
664
+ request,
665
+ type: "promise"
666
+ });
667
+ }
668
+ throw new Error(
669
+ `RuntimeTemplate.moduleNamespacePromise(): ${noModuleIdErrorMessage(
670
+ module,
671
+ chunkGraph
672
+ )}`
673
+ );
674
+ }
675
+ const promise = this.blockPromise({
676
+ chunkGraph,
677
+ block,
678
+ message,
679
+ runtimeRequirements
680
+ });
681
+
682
+ /** @type {string} */
683
+ let appending;
684
+ let idExpr = JSON.stringify(chunkGraph.getModuleId(module));
685
+ const comment = this.comment({
686
+ request
687
+ });
688
+ let header = "";
689
+ if (weak) {
690
+ if (idExpr.length > 8) {
691
+ // 'var x="nnnnnn";x,"+x+",x' vs '"nnnnnn",nnnnnn,"nnnnnn"'
692
+ header += `var id = ${idExpr}; `;
693
+ idExpr = "id";
694
+ }
695
+ runtimeRequirements.add(RuntimeGlobals.moduleFactories);
696
+ header += `if(!${
697
+ RuntimeGlobals.moduleFactories
698
+ }[${idExpr}]) { ${this.weakError({
699
+ module,
700
+ chunkGraph,
701
+ request,
702
+ idExpr,
703
+ type: "statements"
704
+ })} } `;
705
+ }
706
+ const exportsType = module.getExportsType(chunkGraph.moduleGraph, strict);
707
+
708
+ const isModuleDeferred =
709
+ (dependency instanceof getHarmonyImportDependency() ||
710
+ dependency instanceof getImportDependency()) &&
711
+ ImportPhaseUtils.isDefer(dependency.phase) &&
712
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
713
+
714
+ if (isModuleDeferred) {
715
+ runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
716
+
717
+ let mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
718
+ if (mode) mode = `${mode} | 16`;
719
+
720
+ const asyncDeps = Array.from(
721
+ getOutgoingAsyncModules(chunkGraph.moduleGraph, module),
722
+ (m) => chunkGraph.getModuleId(m)
723
+ ).filter((id) => id !== null);
724
+ if (asyncDeps.length) {
725
+ if (header) {
726
+ appending = `.then(${this.basicFunction(
727
+ "",
728
+ `${header}return ${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)});`
729
+ )})`;
730
+ } else {
731
+ runtimeRequirements.add(RuntimeGlobals.require);
732
+ appending = `.then(${this.returningFunction(`${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)})`)})`;
733
+ }
734
+ appending += `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
735
+ } else if (header) {
736
+ appending = `.then(${this.basicFunction(
737
+ "",
738
+ `${header}return ${RuntimeGlobals.makeDeferredNamespaceObject}(${comment}${idExpr}, ${mode});`
739
+ )})`;
740
+ } else {
741
+ runtimeRequirements.add(RuntimeGlobals.require);
742
+ appending = `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
743
+ }
744
+ } else {
745
+ let fakeType = 16;
746
+ switch (exportsType) {
747
+ case "namespace":
748
+ if (header) {
749
+ const rawModule = this.moduleRaw({
750
+ module,
751
+ chunkGraph,
752
+ request,
753
+ weak,
754
+ runtimeRequirements
755
+ });
756
+ appending = `.then(${this.basicFunction(
757
+ "",
758
+ `${header}return ${rawModule};`
759
+ )})`;
760
+ } else {
761
+ runtimeRequirements.add(RuntimeGlobals.require);
762
+ appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
763
+ }
764
+ break;
765
+ case "dynamic":
766
+ fakeType |= 4;
767
+ /* fall through */
768
+ case "default-with-named":
769
+ fakeType |= 2;
770
+ /* fall through */
771
+ case "default-only":
772
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
773
+ if (chunkGraph.moduleGraph.isAsync(module)) {
774
+ if (header) {
775
+ const rawModule = this.moduleRaw({
776
+ module,
777
+ chunkGraph,
778
+ request,
779
+ weak,
780
+ runtimeRequirements
781
+ });
782
+ appending = `.then(${this.basicFunction(
783
+ "",
784
+ `${header}return ${rawModule};`
785
+ )})`;
786
+ } else {
787
+ runtimeRequirements.add(RuntimeGlobals.require);
788
+ appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
789
+ }
790
+ appending += `.then(${this.returningFunction(
791
+ `${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
792
+ "m"
793
+ )})`;
794
+ } else {
795
+ fakeType |= 1;
796
+ if (header) {
797
+ const moduleIdExpr = this.moduleId({
798
+ module,
799
+ chunkGraph,
800
+ request,
801
+ weak
802
+ });
803
+ const returnExpression = `${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, ${fakeType})`;
804
+ appending = `.then(${this.basicFunction(
805
+ "",
806
+ `${header}return ${returnExpression};`
807
+ )})`;
808
+ } else {
809
+ appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
810
+ }
811
+ }
812
+ break;
813
+ }
814
+ }
815
+
816
+ return `${promise || "Promise.resolve()"}${appending}`;
817
+ }
818
+
819
+ /**
820
+ * @param {object} options options object
821
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
822
+ * @param {RuntimeSpec=} options.runtime runtime for which this code will be generated
823
+ * @param {RuntimeSpec | boolean=} options.runtimeCondition only execute the statement in some runtimes
824
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
825
+ * @returns {string} expression
826
+ */
827
+ runtimeConditionExpression({
828
+ chunkGraph,
829
+ runtimeCondition,
830
+ runtime,
831
+ runtimeRequirements
832
+ }) {
833
+ if (runtimeCondition === undefined) return "true";
834
+ if (typeof runtimeCondition === "boolean") return `${runtimeCondition}`;
835
+ /** @type {Set<string>} */
836
+ const positiveRuntimeIds = new Set();
837
+ forEachRuntime(runtimeCondition, (runtime) =>
838
+ positiveRuntimeIds.add(
839
+ `${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
840
+ )
841
+ );
842
+ /** @type {Set<string>} */
843
+ const negativeRuntimeIds = new Set();
844
+ forEachRuntime(subtractRuntime(runtime, runtimeCondition), (runtime) =>
845
+ negativeRuntimeIds.add(
846
+ `${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
847
+ )
848
+ );
849
+ runtimeRequirements.add(RuntimeGlobals.runtimeId);
850
+ return compileBooleanMatcher.fromLists(
851
+ [...positiveRuntimeIds],
852
+ [...negativeRuntimeIds]
853
+ )(RuntimeGlobals.runtimeId);
854
+ }
855
+
856
+ /**
857
+ * @param {object} options options object
858
+ * @param {boolean=} options.update whether a new variable should be created or the existing one updated
859
+ * @param {Module} options.module the module
860
+ * @param {Module} options.originModule module in which the statement is emitted
861
+ * @param {ModuleGraph} options.moduleGraph the module graph
862
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
863
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
864
+ * @param {string} options.importVar name of the import variable
865
+ * @param {string=} options.request the request that should be printed as comment
866
+ * @param {boolean=} options.weak true, if this is a weak dependency
867
+ * @param {ModuleDependency=} options.dependency module dependency
868
+ * @returns {[string, string]} the import statement and the compat statement
869
+ */
870
+ importStatement({
871
+ update,
872
+ module,
873
+ moduleGraph,
874
+ chunkGraph,
875
+ request,
876
+ importVar,
877
+ originModule,
878
+ weak,
879
+ dependency,
880
+ runtimeRequirements
881
+ }) {
882
+ if (!module) {
883
+ return [
884
+ this.missingModuleStatement({
885
+ request
886
+ }),
887
+ ""
888
+ ];
889
+ }
890
+
891
+ if (chunkGraph.getModuleId(module) === null) {
892
+ if (weak) {
893
+ // only weak referenced modules don't get an id
894
+ // we can always emit an error emitting code here
895
+ return [
896
+ this.weakError({
897
+ module,
898
+ chunkGraph,
899
+ request,
900
+ type: "statements"
901
+ }),
902
+ ""
903
+ ];
904
+ }
905
+ throw new Error(
906
+ `RuntimeTemplate.importStatement(): ${noModuleIdErrorMessage(
907
+ module,
908
+ chunkGraph
909
+ )}`
910
+ );
911
+ }
912
+ const moduleId = this.moduleId({
913
+ module,
914
+ chunkGraph,
915
+ request,
916
+ weak
917
+ });
918
+ const optDeclaration = update ? "" : "var ";
919
+
920
+ const exportsType = module.getExportsType(
921
+ chunkGraph.moduleGraph,
922
+ /** @type {BuildMeta} */
923
+ (originModule.buildMeta).strictHarmonyModule
924
+ );
925
+ runtimeRequirements.add(RuntimeGlobals.require);
926
+
927
+ /** @type {string} */
928
+ let importContent;
929
+
930
+ const isModuleDeferred =
931
+ (dependency instanceof getHarmonyImportDependency() ||
932
+ dependency instanceof getImportDependency()) &&
933
+ ImportPhaseUtils.isDefer(dependency.phase) &&
934
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
935
+
936
+ if (isModuleDeferred) {
937
+ /** @type {Set<Module>} */
938
+ const outgoingAsyncModules = getOutgoingAsyncModules(moduleGraph, module);
939
+
940
+ importContent = `/* deferred harmony import */ ${optDeclaration}${importVar} = ${getOptimizedDeferredModule(
941
+ moduleId,
942
+ exportsType,
943
+ Array.from(outgoingAsyncModules, (mod) => chunkGraph.getModuleId(mod)),
944
+ runtimeRequirements
945
+ )};\n`;
946
+
947
+ return [importContent, ""];
948
+ }
949
+ importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
950
+
951
+ if (exportsType === "dynamic") {
952
+ runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
953
+ return [
954
+ importContent,
955
+ `/* harmony import */ ${optDeclaration}${importVar}_default = /*#__PURE__*/${RuntimeGlobals.compatGetDefaultExport}(${importVar});\n`
956
+ ];
957
+ }
958
+ return [importContent, ""];
959
+ }
960
+
961
+ /**
962
+ * @template GenerateContext
963
+ * @param {object} options options
964
+ * @param {ModuleGraph} options.moduleGraph the module graph
965
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
966
+ * @param {Module} options.module the module
967
+ * @param {string} options.request the request
968
+ * @param {string | string[]} options.exportName the export name
969
+ * @param {Module} options.originModule the origin module
970
+ * @param {boolean | undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
971
+ * @param {boolean | undefined} options.isCall true, if expression will be called
972
+ * @param {boolean | null} options.callContext when false, call context will not be preserved
973
+ * @param {boolean} options.defaultInterop when true and accessing the default exports, interop code will be generated
974
+ * @param {string} options.importVar the identifier name of the import variable
975
+ * @param {InitFragment<GenerateContext>[]} options.initFragments init fragments will be added here
976
+ * @param {RuntimeSpec} options.runtime runtime for which this code will be generated
977
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
978
+ * @param {ModuleDependency} options.dependency module dependency
979
+ * @returns {string} expression
980
+ */
981
+ exportFromImport({
982
+ moduleGraph,
983
+ chunkGraph,
984
+ module,
985
+ request,
986
+ exportName,
987
+ originModule,
988
+ asiSafe,
989
+ isCall,
990
+ callContext,
991
+ defaultInterop,
992
+ importVar,
993
+ initFragments,
994
+ runtime,
995
+ runtimeRequirements,
996
+ dependency
997
+ }) {
998
+ if (!module) {
999
+ return this.missingModule({
1000
+ request
1001
+ });
1002
+ }
1003
+ if (!Array.isArray(exportName)) {
1004
+ exportName = exportName ? [exportName] : [];
1005
+ }
1006
+ const exportsType = module.getExportsType(
1007
+ moduleGraph,
1008
+ /** @type {BuildMeta} */
1009
+ (originModule.buildMeta).strictHarmonyModule
1010
+ );
1011
+
1012
+ const isModuleDeferred =
1013
+ (dependency instanceof getHarmonyImportDependency() ||
1014
+ dependency instanceof getImportDependency()) &&
1015
+ ImportPhaseUtils.isDefer(dependency.phase) &&
1016
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
1017
+
1018
+ if (defaultInterop) {
1019
+ // when the defaultInterop is used (when a ESM imports a CJS module),
1020
+ if (exportName.length > 0 && exportName[0] === "default") {
1021
+ if (isModuleDeferred && exportsType !== "namespace") {
1022
+ const exportsInfo = moduleGraph.getExportsInfo(module);
1023
+ const name = exportName.slice(1);
1024
+ const used = exportsInfo.getUsedName(name, runtime);
1025
+ if (!used) {
1026
+ const comment = Template.toNormalComment(
1027
+ `unused export ${propertyAccess(exportName)}`
1028
+ );
1029
+ return `${comment} undefined`;
1030
+ }
1031
+ const access = `${importVar}.a${propertyAccess(used)}`;
1032
+ if (isCall || asiSafe === undefined) {
1033
+ return access;
1034
+ }
1035
+ return asiSafe ? `(${access})` : `;(${access})`;
1036
+ }
1037
+ // accessing the .default property is same thing as `require()` the module.
1038
+
1039
+ // For example:
1040
+ // import mod from "cjs"; mod.default.x;
1041
+ // is translated to
1042
+ // var mod = require("cjs"); mod.x;
1043
+ switch (exportsType) {
1044
+ case "dynamic":
1045
+ if (isCall) {
1046
+ return `${importVar}_default()${propertyAccess(exportName, 1)}`;
1047
+ }
1048
+ return asiSafe
1049
+ ? `(${importVar}_default()${propertyAccess(exportName, 1)})`
1050
+ : asiSafe === false
1051
+ ? `;(${importVar}_default()${propertyAccess(exportName, 1)})`
1052
+ : `${importVar}_default.a${propertyAccess(exportName, 1)}`;
1053
+
1054
+ case "default-only":
1055
+ case "default-with-named":
1056
+ exportName = exportName.slice(1);
1057
+ break;
1058
+ }
1059
+ } else if (exportName.length > 0) {
1060
+ // the property used is not .default.
1061
+ // For example:
1062
+ // import * as ns from "cjs"; cjs.prop;
1063
+ if (exportsType === "default-only") {
1064
+ // in the strictest case, it is a runtime error (e.g. NodeJS behavior of CJS-ESM interop).
1065
+ return `/* non-default import from non-esm module */undefined${propertyAccess(
1066
+ exportName,
1067
+ 1
1068
+ )}`;
1069
+ } else if (
1070
+ exportsType !== "namespace" &&
1071
+ exportName[0] === "__esModule"
1072
+ ) {
1073
+ return "/* __esModule */true";
1074
+ }
1075
+ } else if (isModuleDeferred) {
1076
+ // now exportName.length is 0
1077
+ // fall through to the end of this function, create the namespace there.
1078
+ } else if (
1079
+ exportsType === "default-only" ||
1080
+ exportsType === "default-with-named"
1081
+ ) {
1082
+ // now exportName.length is 0, which means the namespace object is used in an unknown way
1083
+ // for example:
1084
+ // import * as ns from "cjs"; console.log(ns);
1085
+ // we will need to createFakeNamespaceObject that simulates ES Module namespace object
1086
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
1087
+ initFragments.push(
1088
+ new InitFragment(
1089
+ `var ${importVar}_namespace_cache;\n`,
1090
+ InitFragment.STAGE_CONSTANTS,
1091
+ -1,
1092
+ `${importVar}_namespace_cache`
1093
+ )
1094
+ );
1095
+ return `/*#__PURE__*/ ${
1096
+ asiSafe ? "" : asiSafe === false ? ";" : "Object"
1097
+ }(${importVar}_namespace_cache || (${importVar}_namespace_cache = ${
1098
+ RuntimeGlobals.createFakeNamespaceObject
1099
+ }(${importVar}${exportsType === "default-only" ? "" : ", 2"})))`;
1100
+ }
1101
+ }
1102
+
1103
+ if (exportName.length > 0) {
1104
+ const exportsInfo = moduleGraph.getExportsInfo(module);
1105
+ // in some case the exported item is renamed (get this by getUsedName). for example,
1106
+ // x.default might be emitted as x.Z (default is renamed to Z)
1107
+ const used = exportsInfo.getUsedName(exportName, runtime);
1108
+ if (!used) {
1109
+ const comment = Template.toNormalComment(
1110
+ `unused export ${propertyAccess(exportName)}`
1111
+ );
1112
+ return `${comment} undefined`;
1113
+ }
1114
+ const comment = equals(used, exportName)
1115
+ ? ""
1116
+ : `${Template.toNormalComment(propertyAccess(exportName))} `;
1117
+ const access = `${importVar}${
1118
+ isModuleDeferred ? ".a" : ""
1119
+ }${comment}${propertyAccess(used)}`;
1120
+ if (isCall && callContext === false) {
1121
+ return asiSafe
1122
+ ? `(0,${access})`
1123
+ : asiSafe === false
1124
+ ? `;(0,${access})`
1125
+ : `/*#__PURE__*/Object(${access})`;
1126
+ }
1127
+ return access;
1128
+ }
1129
+ if (isModuleDeferred) {
1130
+ initFragments.push(
1131
+ new InitFragment(
1132
+ `var ${importVar}_deferred_namespace_cache;\n`,
1133
+ InitFragment.STAGE_CONSTANTS,
1134
+ -1,
1135
+ `${importVar}_deferred_namespace_cache`
1136
+ )
1137
+ );
1138
+
1139
+ runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
1140
+ const id = chunkGraph.getModuleId(module);
1141
+ const type = getMakeDeferredNamespaceModeFromExportsType(exportsType);
1142
+ const init = `${
1143
+ RuntimeGlobals.makeDeferredNamespaceObject
1144
+ }(${JSON.stringify(id)}, ${type})`;
1145
+
1146
+ return `/*#__PURE__*/ ${
1147
+ asiSafe ? "" : asiSafe === false ? ";" : "Object"
1148
+ }(${importVar}_deferred_namespace_cache || (${importVar}_deferred_namespace_cache = ${init}))`;
1149
+ }
1150
+ // if we hit here, the importVar is either
1151
+ // - already a ES module namespace object
1152
+ // - or imported by a way that does not need interop.
1153
+ return importVar;
1154
+ }
1155
+
1156
+ /**
1157
+ * @param {object} options options
1158
+ * @param {AsyncDependenciesBlock | undefined} options.block the async block
1159
+ * @param {string} options.message the message
1160
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
1161
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
1162
+ * @returns {string} expression
1163
+ */
1164
+ blockPromise({ block, message, chunkGraph, runtimeRequirements }) {
1165
+ if (!block) {
1166
+ const comment = this.comment({
1167
+ message
1168
+ });
1169
+ return `Promise.resolve(${comment.trim()})`;
1170
+ }
1171
+ const chunkGroup = chunkGraph.getBlockChunkGroup(block);
1172
+ if (!chunkGroup || chunkGroup.chunks.length === 0) {
1173
+ const comment = this.comment({
1174
+ message
1175
+ });
1176
+ return `Promise.resolve(${comment.trim()})`;
1177
+ }
1178
+ const chunks = chunkGroup.chunks.filter(
1179
+ (chunk) => !chunk.hasRuntime() && chunk.id !== null
1180
+ );
1181
+ const comment = this.comment({
1182
+ message,
1183
+ chunkName: block.chunkName
1184
+ });
1185
+ if (chunks.length === 1) {
1186
+ const chunkId = JSON.stringify(chunks[0].id);
1187
+ runtimeRequirements.add(RuntimeGlobals.ensureChunk);
1188
+
1189
+ const fetchPriority = chunkGroup.options.fetchPriority;
1190
+
1191
+ if (fetchPriority) {
1192
+ runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
1193
+ }
1194
+
1195
+ return `${RuntimeGlobals.ensureChunk}(${comment}${chunkId}${
1196
+ fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
1197
+ })`;
1198
+ } else if (chunks.length > 0) {
1199
+ runtimeRequirements.add(RuntimeGlobals.ensureChunk);
1200
+
1201
+ const fetchPriority = chunkGroup.options.fetchPriority;
1202
+
1203
+ if (fetchPriority) {
1204
+ runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
1205
+ }
1206
+
1207
+ /**
1208
+ * @param {Chunk} chunk chunk
1209
+ * @returns {string} require chunk id code
1210
+ */
1211
+ const requireChunkId = (chunk) =>
1212
+ `${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}${
1213
+ fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
1214
+ })`;
1215
+ return `Promise.all(${comment.trim()}[${chunks
1216
+ .map(requireChunkId)
1217
+ .join(", ")}])`;
1218
+ }
1219
+ return `Promise.resolve(${comment.trim()})`;
1220
+ }
1221
+
1222
+ /**
1223
+ * @param {object} options options
1224
+ * @param {AsyncDependenciesBlock} options.block the async block
1225
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
1226
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
1227
+ * @param {string=} options.request request string used originally
1228
+ * @returns {string} expression
1229
+ */
1230
+ asyncModuleFactory({ block, chunkGraph, runtimeRequirements, request }) {
1231
+ const dep = block.dependencies[0];
1232
+ const module = chunkGraph.moduleGraph.getModule(dep);
1233
+ const ensureChunk = this.blockPromise({
1234
+ block,
1235
+ message: "",
1236
+ chunkGraph,
1237
+ runtimeRequirements
1238
+ });
1239
+ const factory = this.returningFunction(
1240
+ this.moduleRaw({
1241
+ module,
1242
+ chunkGraph,
1243
+ request,
1244
+ runtimeRequirements
1245
+ })
1246
+ );
1247
+ return this.returningFunction(
1248
+ ensureChunk.startsWith("Promise.resolve(")
1249
+ ? `${factory}`
1250
+ : `${ensureChunk}.then(${this.returningFunction(factory)})`
1251
+ );
1252
+ }
1253
+
1254
+ /**
1255
+ * @param {object} options options
1256
+ * @param {Dependency} options.dependency the dependency
1257
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
1258
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
1259
+ * @param {string=} options.request request string used originally
1260
+ * @returns {string} expression
1261
+ */
1262
+ syncModuleFactory({ dependency, chunkGraph, runtimeRequirements, request }) {
1263
+ const module = chunkGraph.moduleGraph.getModule(dependency);
1264
+ const factory = this.returningFunction(
1265
+ this.moduleRaw({
1266
+ module,
1267
+ chunkGraph,
1268
+ request,
1269
+ runtimeRequirements
1270
+ })
1271
+ );
1272
+ return this.returningFunction(factory);
1273
+ }
1274
+
1275
+ /**
1276
+ * @param {object} options options
1277
+ * @param {string} options.exportsArgument the name of the exports object
1278
+ * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
1279
+ * @returns {string} statement
1280
+ */
1281
+ defineEsModuleFlagStatement({ exportsArgument, runtimeRequirements }) {
1282
+ runtimeRequirements.add(RuntimeGlobals.makeNamespaceObject);
1283
+ runtimeRequirements.add(RuntimeGlobals.exports);
1284
+ return `${RuntimeGlobals.makeNamespaceObject}(${exportsArgument});\n`;
1285
+ }
1286
+ }
1287
+
1288
+ module.exports = RuntimeTemplate;