@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,1411 @@
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 { OriginalSource, RawSource } = require("webpack-sources");
9
+ const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
10
+ const { makeWebpackError } = require("./HookWebpackError");
11
+ const Module = require("./Module");
12
+ const {
13
+ JAVASCRIPT_TYPE,
14
+ JAVASCRIPT_TYPES
15
+ } = require("./ModuleSourceTypeConstants");
16
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
17
+ const RuntimeGlobals = require("./RuntimeGlobals");
18
+ const Template = require("./Template");
19
+ const WebpackError = require("./WebpackError");
20
+ const {
21
+ getOutgoingAsyncModules
22
+ } = require("./async-modules/AsyncModuleHelpers");
23
+ const { ImportPhase, ImportPhaseUtils } = require("./dependencies/ImportPhase");
24
+ const {
25
+ compareLocations,
26
+ compareModulesById,
27
+ compareSelect,
28
+ concatComparators,
29
+ keepOriginalOrder
30
+ } = require("./util/comparators");
31
+ const {
32
+ contextify,
33
+ makePathsRelative,
34
+ parseResource
35
+ } = require("./util/identifier");
36
+ const makeSerializable = require("./util/makeSerializable");
37
+
38
+ /** @typedef {import("webpack-sources").Source} Source */
39
+ /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
40
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
41
+ /** @typedef {import("./Chunk")} Chunk */
42
+ /** @typedef {import("./Chunk").ChunkId} ChunkId */
43
+ /** @typedef {import("./Chunk").ChunkName} ChunkName */
44
+ /** @typedef {import("./ChunkGraph")} ChunkGraph */
45
+ /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
46
+ /** @typedef {import("./ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
47
+ /** @typedef {import("./Compilation")} Compilation */
48
+ /** @typedef {import("./Dependency")} Dependency */
49
+ /** @typedef {import("./Dependency").RawReferencedExports} RawReferencedExports */
50
+ /** @typedef {import("./Generator").SourceTypes} SourceTypes */
51
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
52
+ /** @typedef {import("./Module").BuildInfo} BuildInfo */
53
+ /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
54
+ /** @typedef {import("./Module").BuildMeta} BuildMeta */
55
+ /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
56
+ /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
57
+ /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
58
+ /** @typedef {import("./Module").LibIdent} LibIdent */
59
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
60
+ /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
61
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
62
+ /** @typedef {import("./Module").Sources} Sources */
63
+ /** @typedef {import("./RequestShortener")} RequestShortener */
64
+ /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
65
+ /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
66
+ /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
67
+ /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
68
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
69
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
70
+ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
71
+ /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
72
+
73
+ /** @typedef {"sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"} ContextMode Context mode */
74
+
75
+ /**
76
+ * @typedef {object} ContextOptions
77
+ * @property {ContextMode} mode
78
+ * @property {boolean} recursive
79
+ * @property {RegExp | false | null} regExp
80
+ * @property {"strict" | boolean=} namespaceObject
81
+ * @property {string=} addon
82
+ * @property {ChunkName=} chunkName
83
+ * @property {RegExp | null=} include
84
+ * @property {RegExp | null=} exclude
85
+ * @property {RawChunkGroupOptions=} groupOptions
86
+ * @property {string=} typePrefix
87
+ * @property {string=} category
88
+ * @property {RawReferencedExports | null=} referencedExports exports referenced from modules (won't be mangled)
89
+ * @property {string | null=} layer
90
+ * @property {ImportAttributes=} attributes
91
+ * @property {ImportPhaseType=} phase
92
+ */
93
+
94
+ /**
95
+ * @typedef {object} ContextModuleOptionsExtras
96
+ * @property {false | string | string[]} resource
97
+ * @property {string=} resourceQuery
98
+ * @property {string=} resourceFragment
99
+ * @property {ResolveOptions=} resolveOptions
100
+ */
101
+
102
+ /** @typedef {ContextOptions & ContextModuleOptionsExtras} ContextModuleOptions */
103
+
104
+ /**
105
+ * @callback ResolveDependenciesCallback
106
+ * @param {Error | null} err
107
+ * @param {ContextElementDependency[]=} dependencies
108
+ * @returns {void}
109
+ */
110
+
111
+ /**
112
+ * @callback ResolveDependencies
113
+ * @param {InputFileSystem} fs
114
+ * @param {ContextModuleOptions} options
115
+ * @param {ResolveDependenciesCallback} callback
116
+ */
117
+
118
+ /** @typedef {1 | 3 | 7 | 9} FakeMapType */
119
+
120
+ /** @typedef {Record<ModuleId, FakeMapType>} FakeMap */
121
+ /** @typedef {Record<string, ModuleId>} UserRequestMap */
122
+ /** @typedef {Record<ModuleId, ModuleId[]>} UserRequestsMap */
123
+
124
+ class ContextModule extends Module {
125
+ /**
126
+ * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context
127
+ * @param {ContextModuleOptions} options options object
128
+ */
129
+ constructor(resolveDependencies, options) {
130
+ if (!options || typeof options.resource === "string") {
131
+ const parsed = parseResource(
132
+ options ? /** @type {string} */ (options.resource) : ""
133
+ );
134
+ const resource = parsed.path;
135
+ const resourceQuery = (options && options.resourceQuery) || parsed.query;
136
+ const resourceFragment =
137
+ (options && options.resourceFragment) || parsed.fragment;
138
+ const layer = options && options.layer;
139
+
140
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, resource, layer);
141
+ /** @type {ContextModuleOptions} */
142
+ this.options = {
143
+ ...options,
144
+ resource,
145
+ resourceQuery,
146
+ resourceFragment
147
+ };
148
+ } else {
149
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, undefined, options.layer);
150
+ /** @type {ContextModuleOptions} */
151
+ this.options = {
152
+ ...options,
153
+ resource: options.resource,
154
+ resourceQuery: options.resourceQuery || "",
155
+ resourceFragment: options.resourceFragment || ""
156
+ };
157
+ }
158
+
159
+ // Info from Factory
160
+ /** @type {ResolveDependencies | undefined} */
161
+ this.resolveDependencies = resolveDependencies;
162
+ if (options && options.resolveOptions !== undefined) {
163
+ this.resolveOptions = options.resolveOptions;
164
+ }
165
+
166
+ if (options && typeof options.mode !== "string") {
167
+ throw new Error("options.mode is a required option");
168
+ }
169
+
170
+ this._identifier = this._createIdentifier();
171
+ this._forceBuild = true;
172
+ }
173
+
174
+ /**
175
+ * @returns {SourceTypes} types available (do not mutate)
176
+ */
177
+ getSourceTypes() {
178
+ return JAVASCRIPT_TYPES;
179
+ }
180
+
181
+ /**
182
+ * Assuming this module is in the cache. Update the (cached) module with
183
+ * the fresh module from the factory. Usually updates internal references
184
+ * and properties.
185
+ * @param {Module} module fresh module
186
+ * @returns {void}
187
+ */
188
+ updateCacheModule(module) {
189
+ const m = /** @type {ContextModule} */ (module);
190
+ this.resolveDependencies = m.resolveDependencies;
191
+ this.options = m.options;
192
+ }
193
+
194
+ /**
195
+ * Assuming this module is in the cache. Remove internal references to allow freeing some memory.
196
+ */
197
+ cleanupForCache() {
198
+ super.cleanupForCache();
199
+ this.resolveDependencies = undefined;
200
+ }
201
+
202
+ /**
203
+ * @private
204
+ * @param {RegExp} regexString RegExp as a string
205
+ * @param {boolean=} stripSlash do we need to strip a slsh
206
+ * @returns {string} pretty RegExp
207
+ */
208
+ _prettyRegExp(regexString, stripSlash = true) {
209
+ const str = stripSlash
210
+ ? regexString.source + regexString.flags
211
+ : `${regexString}`;
212
+ return str.replace(/!/g, "%21").replace(/\|/g, "%7C");
213
+ }
214
+
215
+ _createIdentifier() {
216
+ let identifier =
217
+ this.context ||
218
+ (typeof this.options.resource === "string" ||
219
+ this.options.resource === false
220
+ ? `${this.options.resource}`
221
+ : this.options.resource.join("|"));
222
+ if (this.options.resourceQuery) {
223
+ identifier += `|${this.options.resourceQuery}`;
224
+ }
225
+ if (this.options.resourceFragment) {
226
+ identifier += `|${this.options.resourceFragment}`;
227
+ }
228
+ if (this.options.mode) {
229
+ identifier += `|${this.options.mode}`;
230
+ }
231
+ if (!this.options.recursive) {
232
+ identifier += "|nonrecursive";
233
+ }
234
+ if (this.options.addon) {
235
+ identifier += `|${this.options.addon}`;
236
+ }
237
+ if (this.options.regExp) {
238
+ identifier += `|${this._prettyRegExp(this.options.regExp, false)}`;
239
+ }
240
+ if (this.options.include) {
241
+ identifier += `|include: ${this._prettyRegExp(
242
+ this.options.include,
243
+ false
244
+ )}`;
245
+ }
246
+ if (this.options.exclude) {
247
+ identifier += `|exclude: ${this._prettyRegExp(
248
+ this.options.exclude,
249
+ false
250
+ )}`;
251
+ }
252
+ if (this.options.referencedExports) {
253
+ identifier += `|referencedExports: ${JSON.stringify(
254
+ this.options.referencedExports
255
+ )}`;
256
+ }
257
+ if (this.options.chunkName) {
258
+ identifier += `|chunkName: ${this.options.chunkName}`;
259
+ }
260
+ if (this.options.groupOptions) {
261
+ identifier += `|groupOptions: ${JSON.stringify(
262
+ this.options.groupOptions
263
+ )}`;
264
+ }
265
+ if (this.options.namespaceObject === "strict") {
266
+ identifier += "|strict namespace object";
267
+ } else if (this.options.namespaceObject) {
268
+ identifier += "|namespace object";
269
+ }
270
+ if (this.options.attributes) {
271
+ identifier += `|importAttributes: ${JSON.stringify(this.options.attributes)}`;
272
+ }
273
+ if (this.options.phase) {
274
+ identifier += `|importPhase: ${this.options.phase}`;
275
+ }
276
+ if (this.layer) {
277
+ identifier += `|layer: ${this.layer}`;
278
+ }
279
+ return identifier;
280
+ }
281
+
282
+ /**
283
+ * @returns {string} a unique identifier of the module
284
+ */
285
+ identifier() {
286
+ return this._identifier;
287
+ }
288
+
289
+ /**
290
+ * @param {RequestShortener} requestShortener the request shortener
291
+ * @returns {string} a user readable identifier of the module
292
+ */
293
+ readableIdentifier(requestShortener) {
294
+ /** @type {string} */
295
+ let identifier;
296
+
297
+ if (this.context) {
298
+ identifier = `${requestShortener.shorten(this.context)}/`;
299
+ } else if (
300
+ typeof this.options.resource === "string" ||
301
+ this.options.resource === false
302
+ ) {
303
+ identifier = `${requestShortener.shorten(`${this.options.resource}`)}/`;
304
+ } else {
305
+ identifier = this.options.resource
306
+ .map((r) => `${requestShortener.shorten(r)}/`)
307
+ .join(" ");
308
+ }
309
+ if (this.options.resourceQuery) {
310
+ identifier += ` ${this.options.resourceQuery}`;
311
+ }
312
+ if (this.options.mode) {
313
+ identifier += ` ${this.options.mode}`;
314
+ }
315
+ if (!this.options.recursive) {
316
+ identifier += " nonrecursive";
317
+ }
318
+ if (this.options.addon) {
319
+ identifier += ` ${requestShortener.shorten(this.options.addon)}`;
320
+ }
321
+ if (this.options.regExp) {
322
+ identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
323
+ }
324
+ if (this.options.include) {
325
+ identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
326
+ }
327
+ if (this.options.exclude) {
328
+ identifier += ` exclude: ${this._prettyRegExp(this.options.exclude)}`;
329
+ }
330
+ if (this.options.referencedExports) {
331
+ identifier += ` referencedExports: ${this.options.referencedExports
332
+ .map((e) => e.join("."))
333
+ .join(", ")}`;
334
+ }
335
+ if (this.options.chunkName) {
336
+ identifier += ` chunkName: ${this.options.chunkName}`;
337
+ }
338
+ if (this.options.groupOptions) {
339
+ const groupOptions = this.options.groupOptions;
340
+ for (const key of Object.keys(groupOptions)) {
341
+ identifier += ` ${key}: ${
342
+ groupOptions[/** @type {keyof RawChunkGroupOptions} */ (key)]
343
+ }`;
344
+ }
345
+ }
346
+ if (this.options.namespaceObject === "strict") {
347
+ identifier += " strict namespace object";
348
+ } else if (this.options.namespaceObject) {
349
+ identifier += " namespace object";
350
+ }
351
+
352
+ return identifier;
353
+ }
354
+
355
+ /**
356
+ * @param {LibIdentOptions} options options
357
+ * @returns {LibIdent | null} an identifier for library inclusion
358
+ */
359
+ libIdent(options) {
360
+ /** @type {string} */
361
+ let identifier;
362
+
363
+ if (this.context) {
364
+ identifier = contextify(
365
+ options.context,
366
+ this.context,
367
+ options.associatedObjectForCache
368
+ );
369
+ } else if (typeof this.options.resource === "string") {
370
+ identifier = contextify(
371
+ options.context,
372
+ this.options.resource,
373
+ options.associatedObjectForCache
374
+ );
375
+ } else if (this.options.resource === false) {
376
+ identifier = "false";
377
+ } else {
378
+ identifier = this.options.resource
379
+ .map((res) =>
380
+ contextify(options.context, res, options.associatedObjectForCache)
381
+ )
382
+ .join(" ");
383
+ }
384
+
385
+ if (this.layer) identifier = `(${this.layer})/${identifier}`;
386
+ if (this.options.mode) {
387
+ identifier += ` ${this.options.mode}`;
388
+ }
389
+ if (this.options.recursive) {
390
+ identifier += " recursive";
391
+ }
392
+ if (this.options.addon) {
393
+ identifier += ` ${contextify(
394
+ options.context,
395
+ this.options.addon,
396
+ options.associatedObjectForCache
397
+ )}`;
398
+ }
399
+ if (this.options.regExp) {
400
+ identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
401
+ }
402
+ if (this.options.include) {
403
+ identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
404
+ }
405
+ if (this.options.exclude) {
406
+ identifier += ` exclude: ${this._prettyRegExp(this.options.exclude)}`;
407
+ }
408
+ if (this.options.referencedExports) {
409
+ identifier += ` referencedExports: ${this.options.referencedExports
410
+ .map((e) => e.join("."))
411
+ .join(", ")}`;
412
+ }
413
+
414
+ return identifier;
415
+ }
416
+
417
+ /**
418
+ * @returns {void}
419
+ */
420
+ invalidateBuild() {
421
+ this._forceBuild = true;
422
+ }
423
+
424
+ /**
425
+ * @param {NeedBuildContext} context context info
426
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
427
+ * @returns {void}
428
+ */
429
+ needBuild({ fileSystemInfo }, callback) {
430
+ // build if enforced
431
+ if (this._forceBuild) return callback(null, true);
432
+
433
+ const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
434
+
435
+ // always build when we have no snapshot and context
436
+ if (!buildInfo.snapshot) {
437
+ return callback(null, Boolean(this.context || this.options.resource));
438
+ }
439
+
440
+ fileSystemInfo.checkSnapshotValid(buildInfo.snapshot, (err, valid) => {
441
+ callback(err, !valid);
442
+ });
443
+ }
444
+
445
+ /**
446
+ * @param {WebpackOptions} options webpack options
447
+ * @param {Compilation} compilation the compilation
448
+ * @param {ResolverWithOptions} resolver the resolver
449
+ * @param {InputFileSystem} fs the file system
450
+ * @param {BuildCallback} callback callback function
451
+ * @returns {void}
452
+ */
453
+ build(options, compilation, resolver, fs, callback) {
454
+ this._forceBuild = false;
455
+ /** @type {BuildMeta} */
456
+ this.buildMeta = {
457
+ exportsType: "default",
458
+ defaultObject: "redirect-warn"
459
+ };
460
+ this.buildInfo = {
461
+ snapshot: undefined
462
+ };
463
+ this.dependencies.length = 0;
464
+ this.blocks.length = 0;
465
+ const startTime = Date.now();
466
+ /** @type {ResolveDependencies} */
467
+ (this.resolveDependencies)(fs, this.options, (err, dependencies) => {
468
+ if (err) {
469
+ return callback(
470
+ makeWebpackError(err, "ContextModule.resolveDependencies")
471
+ );
472
+ }
473
+
474
+ // abort if something failed
475
+ // this will create an empty context
476
+ if (!dependencies) {
477
+ callback();
478
+ return;
479
+ }
480
+
481
+ // enhance dependencies with meta info
482
+ for (const dep of dependencies) {
483
+ dep.loc = {
484
+ name: dep.userRequest
485
+ };
486
+ dep.request = this.options.addon + dep.request;
487
+ }
488
+ dependencies.sort(
489
+ concatComparators(
490
+ compareSelect((a) => a.loc, compareLocations),
491
+ keepOriginalOrder(this.dependencies)
492
+ )
493
+ );
494
+
495
+ if (this.options.mode === "sync" || this.options.mode === "eager") {
496
+ // if we have an sync or eager context
497
+ // just add all dependencies and continue
498
+ this.dependencies = dependencies;
499
+ } else if (this.options.mode === "lazy-once") {
500
+ // for the lazy-once mode create a new async dependency block
501
+ // and add that block to this context
502
+ if (dependencies.length > 0) {
503
+ const block = new AsyncDependenciesBlock({
504
+ ...this.options.groupOptions,
505
+ name: this.options.chunkName
506
+ });
507
+ for (const dep of dependencies) {
508
+ block.addDependency(dep);
509
+ }
510
+ this.addBlock(block);
511
+ }
512
+ } else if (
513
+ this.options.mode === "weak" ||
514
+ this.options.mode === "async-weak"
515
+ ) {
516
+ // we mark all dependencies as weak
517
+ for (const dep of dependencies) {
518
+ dep.weak = true;
519
+ }
520
+ this.dependencies = dependencies;
521
+ } else if (this.options.mode === "lazy") {
522
+ // if we are lazy create a new async dependency block per dependency
523
+ // and add all blocks to this context
524
+ let index = 0;
525
+ for (const dep of dependencies) {
526
+ let chunkName = this.options.chunkName;
527
+ if (chunkName) {
528
+ if (!/\[(?:index|request)\]/.test(chunkName)) {
529
+ chunkName += "[index]";
530
+ }
531
+ chunkName = chunkName.replace(/\[index\]/g, `${index++}`);
532
+ chunkName = chunkName.replace(
533
+ /\[request\]/g,
534
+ Template.toPath(dep.userRequest)
535
+ );
536
+ }
537
+ const block = new AsyncDependenciesBlock(
538
+ {
539
+ ...this.options.groupOptions,
540
+ name: chunkName
541
+ },
542
+ dep.loc,
543
+ dep.userRequest
544
+ );
545
+ block.addDependency(dep);
546
+ this.addBlock(block);
547
+ }
548
+ } else {
549
+ callback(
550
+ new WebpackError(`Unsupported mode "${this.options.mode}" in context`)
551
+ );
552
+ return;
553
+ }
554
+ if (!this.context && !this.options.resource) return callback();
555
+
556
+ const snapshotOptions = compilation.options.snapshot.contextModule;
557
+
558
+ compilation.fileSystemInfo.createSnapshot(
559
+ startTime,
560
+ null,
561
+ this.context
562
+ ? [this.context]
563
+ : typeof this.options.resource === "string"
564
+ ? [this.options.resource]
565
+ : /** @type {string[]} */ (this.options.resource),
566
+ null,
567
+ snapshotOptions,
568
+ (err, snapshot) => {
569
+ if (err) return callback(err);
570
+ /** @type {BuildInfo} */
571
+ (this.buildInfo).snapshot = snapshot;
572
+ callback();
573
+ }
574
+ );
575
+ });
576
+ }
577
+
578
+ /**
579
+ * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
580
+ * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
581
+ * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
582
+ * @param {FileSystemDependencies} buildDependencies set where build dependencies are added to
583
+ */
584
+ addCacheDependencies(
585
+ fileDependencies,
586
+ contextDependencies,
587
+ missingDependencies,
588
+ buildDependencies
589
+ ) {
590
+ if (this.context) {
591
+ contextDependencies.add(this.context);
592
+ } else if (typeof this.options.resource === "string") {
593
+ contextDependencies.add(this.options.resource);
594
+ } else if (this.options.resource === false) {
595
+ // Do nothing
596
+ } else {
597
+ for (const res of this.options.resource) contextDependencies.add(res);
598
+ }
599
+ }
600
+
601
+ /**
602
+ * @param {Dependency[]} dependencies all dependencies
603
+ * @param {ChunkGraph} chunkGraph chunk graph
604
+ * @returns {UserRequestMap} map with user requests
605
+ */
606
+ getUserRequestMap(dependencies, chunkGraph) {
607
+ const moduleGraph = chunkGraph.moduleGraph;
608
+ // if we filter first we get a new array
609
+ // therefore we don't need to create a clone of dependencies explicitly
610
+ // therefore the order of this is !important!
611
+ const sortedDependencies =
612
+ /** @type {ContextElementDependency[]} */
613
+ (dependencies)
614
+ .filter((dependency) => moduleGraph.getModule(dependency))
615
+ .sort((a, b) => {
616
+ if (a.userRequest === b.userRequest) {
617
+ return 0;
618
+ }
619
+ return a.userRequest < b.userRequest ? -1 : 1;
620
+ });
621
+ /** @type {UserRequestMap} */
622
+ const map = Object.create(null);
623
+ for (const dep of sortedDependencies) {
624
+ const module = /** @type {Module} */ (moduleGraph.getModule(dep));
625
+ map[dep.userRequest] =
626
+ /** @type {ModuleId} */
627
+ (chunkGraph.getModuleId(module));
628
+ }
629
+ return map;
630
+ }
631
+
632
+ /**
633
+ * @param {Dependency[]} dependencies all dependencies
634
+ * @param {ChunkGraph} chunkGraph chunk graph
635
+ * @returns {FakeMap | FakeMapType} fake map
636
+ */
637
+ getFakeMap(dependencies, chunkGraph) {
638
+ if (!this.options.namespaceObject) {
639
+ return 9;
640
+ }
641
+ const moduleGraph = chunkGraph.moduleGraph;
642
+ // bitfield
643
+ let hasType = 0;
644
+ const comparator = compareModulesById(chunkGraph);
645
+ // if we filter first we get a new array
646
+ // therefore we don't need to create a clone of dependencies explicitly
647
+ // therefore the order of this is !important!
648
+ const sortedModules = dependencies
649
+ .map(
650
+ (dependency) =>
651
+ /** @type {Module} */ (moduleGraph.getModule(dependency))
652
+ )
653
+ .filter(Boolean)
654
+ .sort(comparator);
655
+ /** @type {FakeMap} */
656
+ const fakeMap = Object.create(null);
657
+ for (const module of sortedModules) {
658
+ const exportsType = module.getExportsType(
659
+ moduleGraph,
660
+ this.options.namespaceObject === "strict"
661
+ );
662
+ const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
663
+ switch (exportsType) {
664
+ case "namespace":
665
+ fakeMap[id] = 9;
666
+ hasType |= 1;
667
+ break;
668
+ case "dynamic":
669
+ fakeMap[id] = 7;
670
+ hasType |= 2;
671
+ break;
672
+ case "default-only":
673
+ fakeMap[id] = 1;
674
+ hasType |= 4;
675
+ break;
676
+ case "default-with-named":
677
+ fakeMap[id] = 3;
678
+ hasType |= 8;
679
+ break;
680
+ default:
681
+ throw new Error(`Unexpected exports type ${exportsType}`);
682
+ }
683
+ }
684
+ if (hasType === 1) {
685
+ return 9;
686
+ }
687
+ if (hasType === 2) {
688
+ return 7;
689
+ }
690
+ if (hasType === 4) {
691
+ return 1;
692
+ }
693
+ if (hasType === 8) {
694
+ return 3;
695
+ }
696
+ if (hasType === 0) {
697
+ return 9;
698
+ }
699
+ return fakeMap;
700
+ }
701
+
702
+ /**
703
+ * @param {FakeMap | FakeMapType} fakeMap fake map
704
+ * @returns {string} fake map init statement
705
+ */
706
+ getFakeMapInitStatement(fakeMap) {
707
+ return typeof fakeMap === "object"
708
+ ? `var fakeMap = ${JSON.stringify(fakeMap, null, "\t")};`
709
+ : "";
710
+ }
711
+
712
+ /**
713
+ * @param {Dependency[]} dependencies all dependencies
714
+ * @param {ChunkGraph} chunkGraph chunk graph
715
+ * @returns {UserRequestsMap} map with user requests
716
+ */
717
+ getModuleDeferredAsyncDepsMap(dependencies, chunkGraph) {
718
+ const moduleGraph = chunkGraph.moduleGraph;
719
+ const comparator = compareModulesById(chunkGraph);
720
+ // if we filter first we get a new array
721
+ // therefore we don't need to create a clone of dependencies explicitly
722
+ // therefore the order of this is !important!
723
+ const sortedModules = dependencies
724
+ .map(
725
+ (dependency) =>
726
+ /** @type {Module} */ (moduleGraph.getModule(dependency))
727
+ )
728
+ .filter(Boolean)
729
+ .sort(comparator);
730
+ /** @type {UserRequestsMap} */
731
+ const map = Object.create(null);
732
+ for (const module of sortedModules) {
733
+ if (!(/** @type {BuildMeta} */ (module.buildMeta).async)) {
734
+ const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
735
+ map[id] = Array.from(
736
+ getOutgoingAsyncModules(chunkGraph.moduleGraph, module),
737
+ (m) => chunkGraph.getModuleId(m)
738
+ ).filter((id) => id !== null);
739
+ }
740
+ }
741
+ return map;
742
+ }
743
+
744
+ /**
745
+ * @param {false | UserRequestsMap} asyncDepsMap fake map
746
+ * @returns {string} async deps map init statement
747
+ */
748
+ getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap) {
749
+ return typeof asyncDepsMap === "object"
750
+ ? `var asyncDepsMap = ${JSON.stringify(asyncDepsMap, null, "\t")};`
751
+ : "";
752
+ }
753
+
754
+ /**
755
+ * @param {FakeMapType} type type
756
+ * @param {boolean=} asyncModule is async module
757
+ * @returns {string} return result
758
+ */
759
+ getReturn(type, asyncModule) {
760
+ if (type === 9) {
761
+ return `${RuntimeGlobals.require}(id)`;
762
+ }
763
+ return `${RuntimeGlobals.createFakeNamespaceObject}(id, ${type}${
764
+ asyncModule ? " | 16" : ""
765
+ })`;
766
+ }
767
+
768
+ /**
769
+ * @param {FakeMap | FakeMapType} fakeMap fake map
770
+ * @param {boolean=} asyncModule is async module
771
+ * @param {string=} asyncDeps async deps for deferred module
772
+ * @param {string=} fakeMapDataExpression fake map data expression
773
+ * @returns {string} module object source
774
+ */
775
+ getReturnModuleObjectSource(
776
+ fakeMap,
777
+ asyncModule,
778
+ asyncDeps,
779
+ fakeMapDataExpression = "fakeMap[id]"
780
+ ) {
781
+ const source =
782
+ typeof fakeMap === "number"
783
+ ? this.getReturn(fakeMap, asyncModule)
784
+ : `${RuntimeGlobals.createFakeNamespaceObject}(id, ${fakeMapDataExpression}${asyncModule ? " | 16" : ""})`;
785
+ if (asyncDeps) {
786
+ if (!asyncModule) {
787
+ throw new Error("Must be async when module is deferred");
788
+ }
789
+ const type =
790
+ typeof fakeMap === "number" ? fakeMap : fakeMapDataExpression;
791
+ return `${asyncDeps} ? ${asyncDeps}.length ? ${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${asyncDeps}).then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, id, ${type} ^ 1, true)) : ${RuntimeGlobals.makeDeferredNamespaceObject}(id, ${type} ^ 1 | 16) : ${source}`;
792
+ }
793
+ return source;
794
+ }
795
+
796
+ /**
797
+ * @param {Dependency[]} dependencies dependencies
798
+ * @param {ModuleId} id module id
799
+ * @param {ChunkGraph} chunkGraph the chunk graph
800
+ * @returns {string} source code
801
+ */
802
+ getSyncSource(dependencies, id, chunkGraph) {
803
+ const map = this.getUserRequestMap(dependencies, chunkGraph);
804
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
805
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
806
+
807
+ return `var map = ${JSON.stringify(map, null, "\t")};
808
+ ${this.getFakeMapInitStatement(fakeMap)}
809
+
810
+ function webpackContext(req) {
811
+ var id = webpackContextResolve(req);
812
+ return ${returnModuleObject};
813
+ }
814
+ function webpackContextResolve(req) {
815
+ if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
816
+ var e = new Error("Cannot find module '" + req + "'");
817
+ e.code = 'MODULE_NOT_FOUND';
818
+ throw e;
819
+ }
820
+ return map[req];
821
+ }
822
+ webpackContext.keys = function webpackContextKeys() {
823
+ return Object.keys(map);
824
+ };
825
+ webpackContext.resolve = webpackContextResolve;
826
+ module.exports = webpackContext;
827
+ webpackContext.id = ${JSON.stringify(id)};`;
828
+ }
829
+
830
+ /**
831
+ * @param {Dependency[]} dependencies dependencies
832
+ * @param {ModuleId} id module id
833
+ * @param {ChunkGraph} chunkGraph the chunk graph
834
+ * @returns {string} source code
835
+ */
836
+ getWeakSyncSource(dependencies, id, chunkGraph) {
837
+ const map = this.getUserRequestMap(dependencies, chunkGraph);
838
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
839
+ const returnModuleObject = this.getReturnModuleObjectSource(fakeMap);
840
+
841
+ return `var map = ${JSON.stringify(map, null, "\t")};
842
+ ${this.getFakeMapInitStatement(fakeMap)}
843
+
844
+ function webpackContext(req) {
845
+ var id = webpackContextResolve(req);
846
+ if(!${RuntimeGlobals.moduleFactories}[id]) {
847
+ var e = new Error("Module '" + req + "' ('" + id + "') is not available (weak dependency)");
848
+ e.code = 'MODULE_NOT_FOUND';
849
+ throw e;
850
+ }
851
+ return ${returnModuleObject};
852
+ }
853
+ function webpackContextResolve(req) {
854
+ if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
855
+ var e = new Error("Cannot find module '" + req + "'");
856
+ e.code = 'MODULE_NOT_FOUND';
857
+ throw e;
858
+ }
859
+ return map[req];
860
+ }
861
+ webpackContext.keys = function webpackContextKeys() {
862
+ return Object.keys(map);
863
+ };
864
+ webpackContext.resolve = webpackContextResolve;
865
+ webpackContext.id = ${JSON.stringify(id)};
866
+ module.exports = webpackContext;`;
867
+ }
868
+
869
+ /**
870
+ * @param {Dependency[]} dependencies dependencies
871
+ * @param {ModuleId} id module id
872
+ * @param {ImportPhaseType} phase import phase
873
+ * @param {object} context context
874
+ * @param {ChunkGraph} context.chunkGraph the chunk graph
875
+ * @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
876
+ * @returns {string} source code
877
+ */
878
+ getAsyncWeakSource(dependencies, id, phase, { chunkGraph, runtimeTemplate }) {
879
+ const map = this.getUserRequestMap(dependencies, chunkGraph);
880
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
881
+ const asyncDepsMap =
882
+ ImportPhaseUtils.isDefer(phase) &&
883
+ this.getModuleDeferredAsyncDepsMap(dependencies, chunkGraph);
884
+ const returnModuleObject = this.getReturnModuleObjectSource(
885
+ fakeMap,
886
+ true,
887
+ asyncDepsMap ? "asyncDepsMap[id]" : undefined
888
+ );
889
+
890
+ return `var map = ${JSON.stringify(map, null, "\t")};
891
+ ${this.getFakeMapInitStatement(fakeMap)}
892
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
893
+
894
+ function webpackAsyncContext(req) {
895
+ return webpackAsyncContextResolve(req).then(${runtimeTemplate.basicFunction(
896
+ "id",
897
+ [
898
+ `if(!${RuntimeGlobals.moduleFactories}[id]) {`,
899
+ Template.indent([
900
+ 'var e = new Error("Module \'" + req + "\' (\'" + id + "\') is not available (weak dependency)");',
901
+ "e.code = 'MODULE_NOT_FOUND';",
902
+ "throw e;"
903
+ ]),
904
+ "}",
905
+ `return ${returnModuleObject};`
906
+ ]
907
+ )});
908
+ }
909
+ function webpackAsyncContextResolve(req) {
910
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
911
+ // uncaught exception popping up in devtools
912
+ return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
913
+ `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
914
+ Template.indent([
915
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
916
+ "e.code = 'MODULE_NOT_FOUND';",
917
+ "throw e;"
918
+ ]),
919
+ "}",
920
+ "return map[req];"
921
+ ])});
922
+ }
923
+ webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
924
+ "Object.keys(map)"
925
+ )};
926
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
927
+ webpackAsyncContext.id = ${JSON.stringify(id)};
928
+ module.exports = webpackAsyncContext;`;
929
+ }
930
+
931
+ /**
932
+ * @param {Dependency[]} dependencies dependencies
933
+ * @param {ModuleId} id module id
934
+ * @param {ImportPhaseType} phase import phase
935
+ * @param {object} context context
936
+ * @param {ChunkGraph} context.chunkGraph the chunk graph
937
+ * @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
938
+ * @returns {string} source code
939
+ */
940
+ getEagerSource(dependencies, id, phase, { chunkGraph, runtimeTemplate }) {
941
+ const map = this.getUserRequestMap(dependencies, chunkGraph);
942
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
943
+ const asyncDepsMap =
944
+ ImportPhaseUtils.isDefer(phase) &&
945
+ this.getModuleDeferredAsyncDepsMap(dependencies, chunkGraph);
946
+ const thenFunction = runtimeTemplate.returningFunction(
947
+ this.getReturnModuleObjectSource(
948
+ fakeMap,
949
+ true,
950
+ asyncDepsMap ? "asyncDepsMap[id]" : undefined
951
+ ),
952
+ "id"
953
+ );
954
+
955
+ return `var map = ${JSON.stringify(map, null, "\t")};
956
+ ${this.getFakeMapInitStatement(fakeMap)}
957
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
958
+
959
+ function webpackAsyncContext(req) {
960
+ return webpackAsyncContextResolve(req).then(${thenFunction});
961
+ }
962
+ function webpackAsyncContextResolve(req) {
963
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
964
+ // uncaught exception popping up in devtools
965
+ return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
966
+ `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
967
+ Template.indent([
968
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
969
+ "e.code = 'MODULE_NOT_FOUND';",
970
+ "throw e;"
971
+ ]),
972
+ "}",
973
+ "return map[req];"
974
+ ])});
975
+ }
976
+ webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
977
+ "Object.keys(map)"
978
+ )};
979
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
980
+ webpackAsyncContext.id = ${JSON.stringify(id)};
981
+ module.exports = webpackAsyncContext;`;
982
+ }
983
+
984
+ /**
985
+ * @param {AsyncDependenciesBlock} block block
986
+ * @param {Dependency[]} dependencies dependencies
987
+ * @param {ModuleId} id module id
988
+ * @param {ImportPhaseType} phase import phase
989
+ * @param {object} options options object
990
+ * @param {RuntimeTemplate} options.runtimeTemplate the runtime template
991
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
992
+ * @returns {string} source code
993
+ */
994
+ getLazyOnceSource(
995
+ block,
996
+ dependencies,
997
+ id,
998
+ phase,
999
+ { runtimeTemplate, chunkGraph }
1000
+ ) {
1001
+ const promise = runtimeTemplate.blockPromise({
1002
+ chunkGraph,
1003
+ block,
1004
+ message: "lazy-once context",
1005
+ /** @type {RuntimeRequirements} */
1006
+ runtimeRequirements: new Set()
1007
+ });
1008
+ const map = this.getUserRequestMap(dependencies, chunkGraph);
1009
+ const fakeMap = this.getFakeMap(dependencies, chunkGraph);
1010
+ const asyncDepsMap =
1011
+ ImportPhaseUtils.isDefer(phase) &&
1012
+ this.getModuleDeferredAsyncDepsMap(dependencies, chunkGraph);
1013
+ const thenFunction = runtimeTemplate.returningFunction(
1014
+ this.getReturnModuleObjectSource(
1015
+ fakeMap,
1016
+ true,
1017
+ asyncDepsMap ? "asyncDepsMap[id]" : undefined
1018
+ ),
1019
+ "id"
1020
+ );
1021
+
1022
+ return `var map = ${JSON.stringify(map, null, "\t")};
1023
+ ${this.getFakeMapInitStatement(fakeMap)}
1024
+ ${this.getModuleDeferredAsyncDepsMapInitStatement(asyncDepsMap)}
1025
+
1026
+ function webpackAsyncContext(req) {
1027
+ return webpackAsyncContextResolve(req).then(${thenFunction});
1028
+ }
1029
+ function webpackAsyncContextResolve(req) {
1030
+ return ${promise}.then(${runtimeTemplate.basicFunction("", [
1031
+ `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
1032
+ Template.indent([
1033
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
1034
+ "e.code = 'MODULE_NOT_FOUND';",
1035
+ "throw e;"
1036
+ ]),
1037
+ "}",
1038
+ "return map[req];"
1039
+ ])});
1040
+ }
1041
+ webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
1042
+ "Object.keys(map)"
1043
+ )};
1044
+ webpackAsyncContext.resolve = webpackAsyncContextResolve;
1045
+ webpackAsyncContext.id = ${JSON.stringify(id)};
1046
+ module.exports = webpackAsyncContext;`;
1047
+ }
1048
+
1049
+ /**
1050
+ * @param {AsyncDependenciesBlock[]} blocks blocks
1051
+ * @param {ModuleId} id module id
1052
+ * @param {ImportPhaseType} phase import phase
1053
+ * @param {object} context context
1054
+ * @param {ChunkGraph} context.chunkGraph the chunk graph
1055
+ * @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
1056
+ * @returns {string} source code
1057
+ */
1058
+ getLazySource(blocks, id, phase, { chunkGraph, runtimeTemplate }) {
1059
+ const moduleGraph = chunkGraph.moduleGraph;
1060
+ let hasMultipleOrNoChunks = false;
1061
+ let hasNoChunk = true;
1062
+ let hasNoModuleDeferred = true;
1063
+ const fakeMap = this.getFakeMap(
1064
+ blocks.map((b) => b.dependencies[0]),
1065
+ chunkGraph
1066
+ );
1067
+ const hasFakeMap = typeof fakeMap === "object";
1068
+ /** @typedef {{ userRequest: string, dependency: ContextElementDependency, chunks: undefined | Chunk[], module: Module, block: AsyncDependenciesBlock, asyncDeps: undefined | ModuleId[] }} Item */
1069
+ /**
1070
+ * @type {Item[]}
1071
+ */
1072
+ const items = blocks
1073
+ .map((block) => {
1074
+ const dependency =
1075
+ /** @type {ContextElementDependency} */
1076
+ (block.dependencies[0]);
1077
+ return {
1078
+ dependency,
1079
+ module: /** @type {Module} */ (moduleGraph.getModule(dependency)),
1080
+ block,
1081
+ userRequest: dependency.userRequest,
1082
+ chunks: undefined,
1083
+ asyncDeps: undefined
1084
+ };
1085
+ })
1086
+ .filter((item) => item.module);
1087
+ for (const item of items) {
1088
+ const chunkGroup = chunkGraph.getBlockChunkGroup(item.block);
1089
+ const chunks = (chunkGroup && chunkGroup.chunks) || [];
1090
+ item.chunks = chunks;
1091
+ if (chunks.length > 0) {
1092
+ hasNoChunk = false;
1093
+ }
1094
+ if (chunks.length !== 1) {
1095
+ hasMultipleOrNoChunks = true;
1096
+ }
1097
+ const isModuleDeferred =
1098
+ ImportPhaseUtils.isDefer(phase) &&
1099
+ !(/** @type {BuildMeta} */ (item.module.buildMeta).async);
1100
+ if (isModuleDeferred) {
1101
+ const asyncDeps = Array.from(
1102
+ getOutgoingAsyncModules(chunkGraph.moduleGraph, item.module),
1103
+ (m) => chunkGraph.getModuleId(m)
1104
+ ).filter((id) => id !== null);
1105
+ item.asyncDeps = asyncDeps;
1106
+ hasNoModuleDeferred = false;
1107
+ }
1108
+ }
1109
+ const shortMode = hasNoChunk && hasNoModuleDeferred && !hasFakeMap;
1110
+ const sortedItems = items.sort((a, b) => {
1111
+ if (a.userRequest === b.userRequest) return 0;
1112
+ return a.userRequest < b.userRequest ? -1 : 1;
1113
+ });
1114
+ /** @type {Record<string, ModuleId | (ModuleId | FakeMapType | ChunkId[] | (ModuleId[] | undefined))[]>} */
1115
+ const map = Object.create(null);
1116
+ for (const item of sortedItems) {
1117
+ const moduleId =
1118
+ /** @type {ModuleId} */
1119
+ (chunkGraph.getModuleId(item.module));
1120
+ if (shortMode) {
1121
+ map[item.userRequest] = moduleId;
1122
+ } else {
1123
+ /** @type {(ModuleId | FakeMapType | ChunkId[] | (ModuleId[] | undefined))[]} */
1124
+ const array = [moduleId];
1125
+ if (hasFakeMap) {
1126
+ array.push(fakeMap[moduleId]);
1127
+ }
1128
+ if (!hasNoChunk) {
1129
+ array.push(
1130
+ /** @type {Chunk[]} */ (item.chunks).map(
1131
+ (chunk) => /** @type {ChunkId} */ (chunk.id)
1132
+ )
1133
+ );
1134
+ }
1135
+ if (!hasNoModuleDeferred) {
1136
+ array.push(item.asyncDeps);
1137
+ }
1138
+ map[item.userRequest] = array;
1139
+ }
1140
+ }
1141
+
1142
+ const chunksPosition = hasFakeMap ? 2 : 1;
1143
+ const asyncDepsPosition = chunksPosition + 1;
1144
+ const requestPrefix = hasNoChunk
1145
+ ? "Promise.resolve()"
1146
+ : hasMultipleOrNoChunks
1147
+ ? `Promise.all(ids[${chunksPosition}].map(${RuntimeGlobals.ensureChunk}))`
1148
+ : `${RuntimeGlobals.ensureChunk}(ids[${chunksPosition}][0])`;
1149
+ const returnModuleObject = this.getReturnModuleObjectSource(
1150
+ fakeMap,
1151
+ true,
1152
+ hasNoModuleDeferred ? undefined : `ids[${asyncDepsPosition}]`,
1153
+ shortMode ? "invalid" : "ids[1]"
1154
+ );
1155
+
1156
+ const webpackAsyncContext =
1157
+ requestPrefix === "Promise.resolve()"
1158
+ ? `
1159
+ function webpackAsyncContext(req) {
1160
+ return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1161
+ `if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {`,
1162
+ Template.indent([
1163
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
1164
+ "e.code = 'MODULE_NOT_FOUND';",
1165
+ "throw e;"
1166
+ ]),
1167
+ "}",
1168
+ shortMode ? "var id = map[req];" : "var ids = map[req], id = ids[0];",
1169
+ `return ${returnModuleObject};`
1170
+ ])});
1171
+ }`
1172
+ : `function webpackAsyncContext(req) {
1173
+ try {
1174
+ if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
1175
+ return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1176
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
1177
+ "e.code = 'MODULE_NOT_FOUND';",
1178
+ "throw e;"
1179
+ ])});
1180
+ }
1181
+ } catch(err) {
1182
+ return Promise.reject(err);
1183
+ }
1184
+
1185
+ var ids = map[req], id = ids[0];
1186
+ return ${requestPrefix}.then(${runtimeTemplate.returningFunction(returnModuleObject)});
1187
+ }`;
1188
+
1189
+ return `var map = ${JSON.stringify(map, null, "\t")};
1190
+ ${webpackAsyncContext}
1191
+ webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
1192
+ "Object.keys(map)"
1193
+ )};
1194
+ webpackAsyncContext.id = ${JSON.stringify(id)};
1195
+ module.exports = webpackAsyncContext;`;
1196
+ }
1197
+
1198
+ /**
1199
+ * @param {ModuleId} id module id
1200
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
1201
+ * @returns {string} source for empty async context
1202
+ */
1203
+ getSourceForEmptyContext(id, runtimeTemplate) {
1204
+ return `function webpackEmptyContext(req) {
1205
+ var e = new Error("Cannot find module '" + req + "'");
1206
+ e.code = 'MODULE_NOT_FOUND';
1207
+ throw e;
1208
+ }
1209
+ webpackEmptyContext.keys = ${runtimeTemplate.returningFunction("[]")};
1210
+ webpackEmptyContext.resolve = webpackEmptyContext;
1211
+ webpackEmptyContext.id = ${JSON.stringify(id)};
1212
+ module.exports = webpackEmptyContext;`;
1213
+ }
1214
+
1215
+ /**
1216
+ * @param {ModuleId} id module id
1217
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
1218
+ * @returns {string} source for empty async context
1219
+ */
1220
+ getSourceForEmptyAsyncContext(id, runtimeTemplate) {
1221
+ return `function webpackEmptyAsyncContext(req) {
1222
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
1223
+ // uncaught exception popping up in devtools
1224
+ return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1225
+ 'var e = new Error("Cannot find module \'" + req + "\'");',
1226
+ "e.code = 'MODULE_NOT_FOUND';",
1227
+ "throw e;"
1228
+ ])});
1229
+ }
1230
+ webpackEmptyAsyncContext.keys = ${runtimeTemplate.returningFunction("[]")};
1231
+ webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
1232
+ webpackEmptyAsyncContext.id = ${JSON.stringify(id)};
1233
+ module.exports = webpackEmptyAsyncContext;`;
1234
+ }
1235
+
1236
+ /**
1237
+ * @param {string} asyncMode module mode
1238
+ * @param {ImportPhaseType} phase import phase
1239
+ * @param {CodeGenerationContext} context context info
1240
+ * @returns {string} the source code
1241
+ */
1242
+ getSourceString(asyncMode, phase, { runtimeTemplate, chunkGraph }) {
1243
+ const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(this));
1244
+ if (asyncMode === "lazy") {
1245
+ if (this.blocks && this.blocks.length > 0) {
1246
+ return this.getLazySource(this.blocks, id, phase, {
1247
+ runtimeTemplate,
1248
+ chunkGraph
1249
+ });
1250
+ }
1251
+ return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
1252
+ }
1253
+ if (asyncMode === "eager") {
1254
+ if (this.dependencies && this.dependencies.length > 0) {
1255
+ return this.getEagerSource(this.dependencies, id, phase, {
1256
+ chunkGraph,
1257
+ runtimeTemplate
1258
+ });
1259
+ }
1260
+ return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
1261
+ }
1262
+ if (asyncMode === "lazy-once") {
1263
+ const block = this.blocks[0];
1264
+ if (block) {
1265
+ return this.getLazyOnceSource(block, block.dependencies, id, phase, {
1266
+ runtimeTemplate,
1267
+ chunkGraph
1268
+ });
1269
+ }
1270
+ return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
1271
+ }
1272
+ if (asyncMode === "async-weak") {
1273
+ if (this.dependencies && this.dependencies.length > 0) {
1274
+ return this.getAsyncWeakSource(this.dependencies, id, phase, {
1275
+ chunkGraph,
1276
+ runtimeTemplate
1277
+ });
1278
+ }
1279
+ return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
1280
+ }
1281
+ if (
1282
+ asyncMode === "weak" &&
1283
+ this.dependencies &&
1284
+ this.dependencies.length > 0
1285
+ ) {
1286
+ return this.getWeakSyncSource(this.dependencies, id, chunkGraph);
1287
+ }
1288
+ if (this.dependencies && this.dependencies.length > 0) {
1289
+ return this.getSyncSource(this.dependencies, id, chunkGraph);
1290
+ }
1291
+ return this.getSourceForEmptyContext(id, runtimeTemplate);
1292
+ }
1293
+
1294
+ /**
1295
+ * @param {string} sourceString source content
1296
+ * @param {Compilation=} compilation the compilation
1297
+ * @returns {Source} generated source
1298
+ */
1299
+ getSource(sourceString, compilation) {
1300
+ if (this.useSourceMap || this.useSimpleSourceMap) {
1301
+ return new OriginalSource(
1302
+ sourceString,
1303
+ `webpack://${makePathsRelative(
1304
+ (compilation && compilation.compiler.context) || "",
1305
+ this.identifier(),
1306
+ compilation && compilation.compiler.root
1307
+ )}`
1308
+ );
1309
+ }
1310
+ return new RawSource(sourceString);
1311
+ }
1312
+
1313
+ /**
1314
+ * @param {CodeGenerationContext} context context for code generation
1315
+ * @returns {CodeGenerationResult} result
1316
+ */
1317
+ codeGeneration(context) {
1318
+ const { chunkGraph, compilation } = context;
1319
+
1320
+ /** @type {Sources} */
1321
+ const sources = new Map();
1322
+ sources.set(
1323
+ JAVASCRIPT_TYPE,
1324
+ this.getSource(
1325
+ this.getSourceString(
1326
+ this.options.mode,
1327
+ this.options.phase || ImportPhase.Evaluation,
1328
+ context
1329
+ ),
1330
+ compilation
1331
+ )
1332
+ );
1333
+ /** @type {RuntimeRequirements} */
1334
+ const set = new Set();
1335
+ const allDeps =
1336
+ this.dependencies.length > 0
1337
+ ? /** @type {ContextElementDependency[]} */ [...this.dependencies]
1338
+ : [];
1339
+ for (const block of this.blocks) {
1340
+ for (const dep of block.dependencies) {
1341
+ allDeps.push(/** @type {ContextElementDependency} */ (dep));
1342
+ }
1343
+ }
1344
+ set.add(RuntimeGlobals.module);
1345
+ set.add(RuntimeGlobals.hasOwnProperty);
1346
+ if (allDeps.length > 0) {
1347
+ const asyncMode = this.options.mode;
1348
+ set.add(RuntimeGlobals.require);
1349
+ if (asyncMode === "weak") {
1350
+ set.add(RuntimeGlobals.moduleFactories);
1351
+ } else if (asyncMode === "async-weak") {
1352
+ set.add(RuntimeGlobals.moduleFactories);
1353
+ set.add(RuntimeGlobals.ensureChunk);
1354
+ } else if (asyncMode === "lazy" || asyncMode === "lazy-once") {
1355
+ set.add(RuntimeGlobals.ensureChunk);
1356
+ }
1357
+ if (this.getFakeMap(allDeps, chunkGraph) !== 9) {
1358
+ set.add(RuntimeGlobals.createFakeNamespaceObject);
1359
+ }
1360
+ if (
1361
+ ImportPhaseUtils.isDefer(this.options.phase || ImportPhase.Evaluation)
1362
+ ) {
1363
+ set.add(RuntimeGlobals.makeDeferredNamespaceObject);
1364
+ }
1365
+ }
1366
+ return {
1367
+ sources,
1368
+ runtimeRequirements: set
1369
+ };
1370
+ }
1371
+
1372
+ /**
1373
+ * @param {string=} type the source type for which the size should be estimated
1374
+ * @returns {number} the estimated size of the module (must be non-zero)
1375
+ */
1376
+ size(type) {
1377
+ // base penalty
1378
+ let size = 160;
1379
+
1380
+ // if we don't have dependencies we stop here.
1381
+ for (const dependency of this.dependencies) {
1382
+ const element = /** @type {ContextElementDependency} */ (dependency);
1383
+ size += 5 + element.userRequest.length;
1384
+ }
1385
+ return size;
1386
+ }
1387
+
1388
+ /**
1389
+ * @param {ObjectSerializerContext} context context
1390
+ */
1391
+ serialize(context) {
1392
+ const { write } = context;
1393
+ write(this._identifier);
1394
+ write(this._forceBuild);
1395
+ super.serialize(context);
1396
+ }
1397
+
1398
+ /**
1399
+ * @param {ObjectDeserializerContext} context context
1400
+ */
1401
+ deserialize(context) {
1402
+ const { read } = context;
1403
+ this._identifier = read();
1404
+ this._forceBuild = read();
1405
+ super.deserialize(context);
1406
+ }
1407
+ }
1408
+
1409
+ makeSerializable(ContextModule, "webpack/lib/ContextModule");
1410
+
1411
+ module.exports = ContextModule;