@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,971 @@
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 asyncLib = require("neo-async");
9
+ const ChunkGraph = require("../ChunkGraph");
10
+ const ModuleGraph = require("../ModuleGraph");
11
+ const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
12
+ const { STAGE_DEFAULT } = require("../OptimizationStages");
13
+ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
14
+ const { compareModulesByIdentifier } = require("../util/comparators");
15
+ const {
16
+ filterRuntime,
17
+ intersectRuntime,
18
+ mergeRuntime,
19
+ mergeRuntimeOwned,
20
+ runtimeToString
21
+ } = require("../util/runtime");
22
+ const ConcatenatedModule = require("./ConcatenatedModule");
23
+
24
+ /** @typedef {import("../Compilation")} Compilation */
25
+ /** @typedef {import("../Compiler")} Compiler */
26
+ /** @typedef {import("../Module")} Module */
27
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
28
+ /** @typedef {import("../RequestShortener")} RequestShortener */
29
+ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
30
+
31
+ /** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
32
+
33
+ /**
34
+ * @typedef {object} Statistics
35
+ * @property {number} cached
36
+ * @property {number} alreadyInConfig
37
+ * @property {number} invalidModule
38
+ * @property {number} incorrectChunks
39
+ * @property {number} incorrectDependency
40
+ * @property {number} incorrectModuleDependency
41
+ * @property {number} incorrectChunksOfImporter
42
+ * @property {number} incorrectRuntimeCondition
43
+ * @property {number} importerFailed
44
+ * @property {number} added
45
+ */
46
+
47
+ /**
48
+ * @param {string} msg message
49
+ * @returns {string} formatted message
50
+ */
51
+ const formatBailoutReason = (msg) => `ModuleConcatenation bailout: ${msg}`;
52
+
53
+ const PLUGIN_NAME = "ModuleConcatenationPlugin";
54
+
55
+ class ModuleConcatenationPlugin {
56
+ /**
57
+ * Apply the plugin
58
+ * @param {Compiler} compiler the compiler instance
59
+ * @returns {void}
60
+ */
61
+ apply(compiler) {
62
+ const { _backCompat: backCompat } = compiler;
63
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
64
+ if (compilation.moduleMemCaches) {
65
+ throw new Error(
66
+ "optimization.concatenateModules can't be used with cacheUnaffected as module concatenation is a global effect"
67
+ );
68
+ }
69
+ const moduleGraph = compilation.moduleGraph;
70
+ /** @type {Map<Module, string | ((requestShortener: RequestShortener) => string)>} */
71
+ const bailoutReasonMap = new Map();
72
+
73
+ /**
74
+ * @param {Module} module the module
75
+ * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
76
+ */
77
+ const setBailoutReason = (module, reason) => {
78
+ setInnerBailoutReason(module, reason);
79
+ moduleGraph
80
+ .getOptimizationBailout(module)
81
+ .push(
82
+ typeof reason === "function"
83
+ ? (rs) => formatBailoutReason(reason(rs))
84
+ : formatBailoutReason(reason)
85
+ );
86
+ };
87
+
88
+ /**
89
+ * @param {Module} module the module
90
+ * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
91
+ */
92
+ const setInnerBailoutReason = (module, reason) => {
93
+ bailoutReasonMap.set(module, reason);
94
+ };
95
+
96
+ /**
97
+ * @param {Module} module the module
98
+ * @param {RequestShortener} requestShortener the request shortener
99
+ * @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
100
+ */
101
+ const getInnerBailoutReason = (module, requestShortener) => {
102
+ const reason = bailoutReasonMap.get(module);
103
+ if (typeof reason === "function") return reason(requestShortener);
104
+ return reason;
105
+ };
106
+
107
+ /**
108
+ * @param {Module} module the module
109
+ * @param {Problem} problem the problem
110
+ * @returns {(requestShortener: RequestShortener) => string} the reason
111
+ */
112
+ const formatBailoutWarning = (module, problem) => (requestShortener) => {
113
+ if (typeof problem === "function") {
114
+ return formatBailoutReason(
115
+ `Cannot concat with ${module.readableIdentifier(
116
+ requestShortener
117
+ )}: ${problem(requestShortener)}`
118
+ );
119
+ }
120
+ const reason = getInnerBailoutReason(module, requestShortener);
121
+ const reasonWithPrefix = reason ? `: ${reason}` : "";
122
+ if (module === problem) {
123
+ return formatBailoutReason(
124
+ `Cannot concat with ${module.readableIdentifier(
125
+ requestShortener
126
+ )}${reasonWithPrefix}`
127
+ );
128
+ }
129
+ return formatBailoutReason(
130
+ `Cannot concat with ${module.readableIdentifier(
131
+ requestShortener
132
+ )} because of ${problem.readableIdentifier(
133
+ requestShortener
134
+ )}${reasonWithPrefix}`
135
+ );
136
+ };
137
+
138
+ compilation.hooks.optimizeChunkModules.tapAsync(
139
+ {
140
+ name: PLUGIN_NAME,
141
+ stage: STAGE_DEFAULT
142
+ },
143
+ (allChunks, modules, callback) => {
144
+ const logger = compilation.getLogger(
145
+ "webpack.ModuleConcatenationPlugin"
146
+ );
147
+ const { chunkGraph, moduleGraph } = compilation;
148
+ /** @type {Module[]} */
149
+ const relevantModules = [];
150
+ /** @type {Set<Module>} */
151
+ const possibleInners = new Set();
152
+ const context = {
153
+ chunkGraph,
154
+ moduleGraph
155
+ };
156
+ const deferEnabled = compilation.options.experiments.deferImport;
157
+ logger.time("select relevant modules");
158
+ for (const module of modules) {
159
+ let canBeRoot = true;
160
+ let canBeInner = true;
161
+
162
+ const bailoutReason = module.getConcatenationBailoutReason(context);
163
+ if (bailoutReason) {
164
+ setBailoutReason(module, bailoutReason);
165
+ continue;
166
+ }
167
+
168
+ // Must not be an async module
169
+ if (moduleGraph.isAsync(module)) {
170
+ setBailoutReason(module, "Module is async");
171
+ continue;
172
+ }
173
+
174
+ // Must be in strict mode
175
+ if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
176
+ setBailoutReason(module, "Module is not in strict mode");
177
+ continue;
178
+ }
179
+
180
+ // Module must be in any chunk (we don't want to do useless work)
181
+ if (chunkGraph.getNumberOfModuleChunks(module) === 0) {
182
+ setBailoutReason(module, "Module is not in any chunk");
183
+ continue;
184
+ }
185
+
186
+ // Exports must be known (and not dynamic)
187
+ const exportsInfo = moduleGraph.getExportsInfo(module);
188
+ const relevantExports = exportsInfo.getRelevantExports(undefined);
189
+ const unknownReexports = relevantExports.filter(
190
+ (exportInfo) =>
191
+ exportInfo.isReexport() && !exportInfo.getTarget(moduleGraph)
192
+ );
193
+ if (unknownReexports.length > 0) {
194
+ setBailoutReason(
195
+ module,
196
+ `Reexports in this module do not have a static target (${Array.from(
197
+ unknownReexports,
198
+ (exportInfo) =>
199
+ `${
200
+ exportInfo.name || "other exports"
201
+ }: ${exportInfo.getUsedInfo()}`
202
+ ).join(", ")})`
203
+ );
204
+ continue;
205
+ }
206
+
207
+ // Root modules must have a static list of exports
208
+ const unknownProvidedExports = relevantExports.filter(
209
+ (exportInfo) => exportInfo.provided !== true
210
+ );
211
+ if (unknownProvidedExports.length > 0) {
212
+ setBailoutReason(
213
+ module,
214
+ `List of module exports is dynamic (${Array.from(
215
+ unknownProvidedExports,
216
+ (exportInfo) =>
217
+ `${
218
+ exportInfo.name || "other exports"
219
+ }: ${exportInfo.getProvidedInfo()} and ${exportInfo.getUsedInfo()}`
220
+ ).join(", ")})`
221
+ );
222
+ canBeRoot = false;
223
+ }
224
+
225
+ // Module must not be an entry point
226
+ if (chunkGraph.isEntryModule(module)) {
227
+ setInnerBailoutReason(module, "Module is an entry point");
228
+ canBeInner = false;
229
+ }
230
+
231
+ if (deferEnabled && moduleGraph.isDeferred(module)) {
232
+ setInnerBailoutReason(module, "Module is deferred");
233
+ canBeInner = false;
234
+ }
235
+
236
+ if (canBeRoot) relevantModules.push(module);
237
+ if (canBeInner) possibleInners.add(module);
238
+ }
239
+ logger.timeEnd("select relevant modules");
240
+ logger.debug(
241
+ `${relevantModules.length} potential root modules, ${possibleInners.size} potential inner modules`
242
+ );
243
+ // sort by depth
244
+ // modules with lower depth are more likely suited as roots
245
+ // this improves performance, because modules already selected as inner are skipped
246
+ logger.time("sort relevant modules");
247
+ relevantModules.sort(
248
+ (a, b) =>
249
+ /** @type {number} */ (moduleGraph.getDepth(a)) -
250
+ /** @type {number} */ (moduleGraph.getDepth(b))
251
+ );
252
+ logger.timeEnd("sort relevant modules");
253
+
254
+ /** @type {Statistics} */
255
+ const stats = {
256
+ cached: 0,
257
+ alreadyInConfig: 0,
258
+ invalidModule: 0,
259
+ incorrectChunks: 0,
260
+ incorrectDependency: 0,
261
+ incorrectModuleDependency: 0,
262
+ incorrectChunksOfImporter: 0,
263
+ incorrectRuntimeCondition: 0,
264
+ importerFailed: 0,
265
+ added: 0
266
+ };
267
+ let statsCandidates = 0;
268
+ let statsSizeSum = 0;
269
+ let statsEmptyConfigurations = 0;
270
+
271
+ logger.time("find modules to concatenate");
272
+ /** @type {ConcatConfiguration[]} */
273
+ const concatConfigurations = [];
274
+ /** @type {Set<Module>} */
275
+ const usedAsInner = new Set();
276
+ for (const currentRoot of relevantModules) {
277
+ // when used by another configuration as inner:
278
+ // the other configuration is better and we can skip this one
279
+ // TODO reconsider that when it's only used in a different runtime
280
+ if (usedAsInner.has(currentRoot)) continue;
281
+
282
+ /** @type {RuntimeSpec} */
283
+ let chunkRuntime;
284
+ for (const r of chunkGraph.getModuleRuntimes(currentRoot)) {
285
+ chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
286
+ }
287
+ const exportsInfo = moduleGraph.getExportsInfo(currentRoot);
288
+ const filteredRuntime = filterRuntime(chunkRuntime, (r) =>
289
+ exportsInfo.isModuleUsed(r)
290
+ );
291
+ const activeRuntime =
292
+ filteredRuntime === true
293
+ ? chunkRuntime
294
+ : filteredRuntime === false
295
+ ? undefined
296
+ : filteredRuntime;
297
+
298
+ // create a configuration with the root
299
+ const currentConfiguration = new ConcatConfiguration(
300
+ currentRoot,
301
+ activeRuntime
302
+ );
303
+
304
+ // cache failures to add modules
305
+ /** @type {Map<Module, Problem>} */
306
+ const failureCache = new Map();
307
+
308
+ // potential optional import candidates
309
+ /** @type {Set<Module>} */
310
+ const candidates = new Set();
311
+
312
+ // try to add all imports
313
+ for (const imp of this._getImports(
314
+ compilation,
315
+ currentRoot,
316
+ activeRuntime
317
+ )) {
318
+ candidates.add(imp);
319
+ }
320
+
321
+ for (const imp of candidates) {
322
+ /** @type {Set<Module>} */
323
+ const impCandidates = new Set();
324
+ const problem = this._tryToAdd(
325
+ compilation,
326
+ currentConfiguration,
327
+ imp,
328
+ chunkRuntime,
329
+ activeRuntime,
330
+ possibleInners,
331
+ impCandidates,
332
+ failureCache,
333
+ chunkGraph,
334
+ true,
335
+ stats
336
+ );
337
+ if (problem) {
338
+ failureCache.set(imp, problem);
339
+ currentConfiguration.addWarning(imp, problem);
340
+ } else {
341
+ for (const c of impCandidates) {
342
+ candidates.add(c);
343
+ }
344
+ }
345
+ }
346
+ statsCandidates += candidates.size;
347
+ if (!currentConfiguration.isEmpty()) {
348
+ const modules = currentConfiguration.getModules();
349
+ statsSizeSum += modules.size;
350
+ concatConfigurations.push(currentConfiguration);
351
+ for (const module of modules) {
352
+ if (module !== currentConfiguration.rootModule) {
353
+ usedAsInner.add(module);
354
+ }
355
+ }
356
+ } else {
357
+ statsEmptyConfigurations++;
358
+ const optimizationBailouts =
359
+ moduleGraph.getOptimizationBailout(currentRoot);
360
+ for (const warning of currentConfiguration.getWarningsSorted()) {
361
+ optimizationBailouts.push(
362
+ formatBailoutWarning(warning[0], warning[1])
363
+ );
364
+ }
365
+ }
366
+ }
367
+ logger.timeEnd("find modules to concatenate");
368
+ logger.debug(
369
+ `${
370
+ concatConfigurations.length
371
+ } successful concat configurations (avg size: ${
372
+ statsSizeSum / concatConfigurations.length
373
+ }), ${statsEmptyConfigurations} bailed out completely`
374
+ );
375
+ logger.debug(
376
+ `${statsCandidates} candidates were considered for adding (${stats.cached} cached failure, ${stats.alreadyInConfig} already in config, ${stats.invalidModule} invalid module, ${stats.incorrectChunks} incorrect chunks, ${stats.incorrectDependency} incorrect dependency, ${stats.incorrectChunksOfImporter} incorrect chunks of importer, ${stats.incorrectModuleDependency} incorrect module dependency, ${stats.incorrectRuntimeCondition} incorrect runtime condition, ${stats.importerFailed} importer failed, ${stats.added} added)`
377
+ );
378
+ // HACK: Sort configurations by length and start with the longest one
379
+ // to get the biggest groups possible. Used modules are marked with usedModules
380
+ // TODO: Allow to reuse existing configuration while trying to add dependencies.
381
+ // This would improve performance. O(n^2) -> O(n)
382
+ logger.time("sort concat configurations");
383
+ concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
384
+ logger.timeEnd("sort concat configurations");
385
+ /** @type {Set<Module>} */
386
+ const usedModules = new Set();
387
+
388
+ logger.time("create concatenated modules");
389
+ asyncLib.each(
390
+ concatConfigurations,
391
+ (concatConfiguration, callback) => {
392
+ const rootModule = concatConfiguration.rootModule;
393
+
394
+ // Avoid overlapping configurations
395
+ // TODO: remove this when todo above is fixed
396
+ if (usedModules.has(rootModule)) return callback();
397
+ const modules = concatConfiguration.getModules();
398
+ for (const m of modules) {
399
+ usedModules.add(m);
400
+ }
401
+
402
+ // Create a new ConcatenatedModule
403
+ const newModule = ConcatenatedModule.create(
404
+ rootModule,
405
+ modules,
406
+ concatConfiguration.runtime,
407
+ compilation,
408
+ compiler.root,
409
+ compilation.outputOptions.hashFunction
410
+ );
411
+
412
+ const build = () => {
413
+ newModule.build(
414
+ compilation.options,
415
+ compilation,
416
+ /** @type {EXPECTED_ANY} */
417
+ (null),
418
+ /** @type {EXPECTED_ANY} */
419
+ (null),
420
+ (err) => {
421
+ if (err) {
422
+ if (!err.module) {
423
+ err.module = newModule;
424
+ }
425
+ return callback(err);
426
+ }
427
+ integrate();
428
+ }
429
+ );
430
+ };
431
+
432
+ const integrate = () => {
433
+ if (backCompat) {
434
+ ChunkGraph.setChunkGraphForModule(newModule, chunkGraph);
435
+ ModuleGraph.setModuleGraphForModule(newModule, moduleGraph);
436
+ }
437
+
438
+ for (const warning of concatConfiguration.getWarningsSorted()) {
439
+ moduleGraph
440
+ .getOptimizationBailout(newModule)
441
+ .push(formatBailoutWarning(warning[0], warning[1]));
442
+ }
443
+ moduleGraph.cloneModuleAttributes(rootModule, newModule);
444
+ for (const m of modules) {
445
+ // add to builtModules when one of the included modules was built
446
+ if (compilation.builtModules.has(m)) {
447
+ compilation.builtModules.add(newModule);
448
+ }
449
+ if (m !== rootModule) {
450
+ // attach external references to the concatenated module too
451
+ moduleGraph.copyOutgoingModuleConnections(
452
+ m,
453
+ newModule,
454
+ (c) =>
455
+ c.originModule === m &&
456
+ !(
457
+ c.dependency instanceof HarmonyImportDependency &&
458
+ modules.has(c.module)
459
+ )
460
+ );
461
+ // remove module from chunk
462
+ for (const chunk of chunkGraph.getModuleChunksIterable(
463
+ rootModule
464
+ )) {
465
+ const sourceTypes = chunkGraph.getChunkModuleSourceTypes(
466
+ chunk,
467
+ m
468
+ );
469
+ if (
470
+ sourceTypes.size === 1 &&
471
+ sourceTypes.has(JAVASCRIPT_TYPE)
472
+ ) {
473
+ chunkGraph.disconnectChunkAndModule(chunk, m);
474
+ } else {
475
+ const newSourceTypes = new Set(sourceTypes);
476
+ newSourceTypes.delete(JAVASCRIPT_TYPE);
477
+ chunkGraph.setChunkModuleSourceTypes(
478
+ chunk,
479
+ m,
480
+ newSourceTypes
481
+ );
482
+ }
483
+ }
484
+ }
485
+ }
486
+ compilation.modules.delete(rootModule);
487
+ ChunkGraph.clearChunkGraphForModule(rootModule);
488
+ ModuleGraph.clearModuleGraphForModule(rootModule);
489
+
490
+ // remove module from chunk
491
+ chunkGraph.replaceModule(rootModule, newModule);
492
+ // replace module references with the concatenated module
493
+ moduleGraph.moveModuleConnections(
494
+ rootModule,
495
+ newModule,
496
+ (c) => {
497
+ const otherModule =
498
+ c.module === rootModule ? c.originModule : c.module;
499
+ const innerConnection =
500
+ c.dependency instanceof HarmonyImportDependency &&
501
+ modules.has(/** @type {Module} */ (otherModule));
502
+ return !innerConnection;
503
+ }
504
+ );
505
+ // add concatenated module to the compilation
506
+ compilation.modules.add(newModule);
507
+
508
+ callback();
509
+ };
510
+
511
+ build();
512
+ },
513
+ (err) => {
514
+ logger.timeEnd("create concatenated modules");
515
+ process.nextTick(callback.bind(null, err));
516
+ }
517
+ );
518
+ }
519
+ );
520
+ });
521
+ }
522
+
523
+ /**
524
+ * @param {Compilation} compilation the compilation
525
+ * @param {Module} module the module to be added
526
+ * @param {RuntimeSpec} runtime the runtime scope
527
+ * @returns {Set<Module>} the imported modules
528
+ */
529
+ _getImports(compilation, module, runtime) {
530
+ const moduleGraph = compilation.moduleGraph;
531
+ /** @type {Set<Module>} */
532
+ const set = new Set();
533
+ for (const dep of module.dependencies) {
534
+ // Get reference info only for harmony Dependencies
535
+ if (!(dep instanceof HarmonyImportDependency)) continue;
536
+
537
+ const connection = moduleGraph.getConnection(dep);
538
+ // Reference is valid and has a module
539
+ if (
540
+ !connection ||
541
+ !connection.module ||
542
+ !connection.isTargetActive(runtime)
543
+ ) {
544
+ continue;
545
+ }
546
+
547
+ const importedNames = compilation.getDependencyReferencedExports(
548
+ dep,
549
+ undefined
550
+ );
551
+
552
+ if (
553
+ importedNames.every((i) =>
554
+ Array.isArray(i) ? i.length > 0 : i.name.length > 0
555
+ ) ||
556
+ Array.isArray(moduleGraph.getProvidedExports(module))
557
+ ) {
558
+ set.add(connection.module);
559
+ }
560
+ }
561
+ return set;
562
+ }
563
+
564
+ /**
565
+ * @param {Compilation} compilation webpack compilation
566
+ * @param {ConcatConfiguration} config concat configuration (will be modified when added)
567
+ * @param {Module} module the module to be added
568
+ * @param {RuntimeSpec} runtime the runtime scope of the generated code
569
+ * @param {RuntimeSpec} activeRuntime the runtime scope of the root module
570
+ * @param {Set<Module>} possibleModules modules that are candidates
571
+ * @param {Set<Module>} candidates list of potential candidates (will be added to)
572
+ * @param {Map<Module, Problem>} failureCache cache for problematic modules to be more performant
573
+ * @param {ChunkGraph} chunkGraph the chunk graph
574
+ * @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
575
+ * @param {Statistics} statistics gathering metrics
576
+ * @returns {null | Problem} the problematic module
577
+ */
578
+ _tryToAdd(
579
+ compilation,
580
+ config,
581
+ module,
582
+ runtime,
583
+ activeRuntime,
584
+ possibleModules,
585
+ candidates,
586
+ failureCache,
587
+ chunkGraph,
588
+ avoidMutateOnFailure,
589
+ statistics
590
+ ) {
591
+ const cacheEntry = failureCache.get(module);
592
+ if (cacheEntry) {
593
+ statistics.cached++;
594
+ return cacheEntry;
595
+ }
596
+
597
+ // Already added?
598
+ if (config.has(module)) {
599
+ statistics.alreadyInConfig++;
600
+ return null;
601
+ }
602
+
603
+ // Not possible to add?
604
+ if (!possibleModules.has(module)) {
605
+ statistics.invalidModule++;
606
+ failureCache.set(module, module); // cache failures for performance
607
+ return module;
608
+ }
609
+
610
+ // Module must be in the correct chunks
611
+ const missingChunks = [
612
+ ...chunkGraph.getModuleChunksIterable(config.rootModule)
613
+ ].filter((chunk) => !chunkGraph.isModuleInChunk(module, chunk));
614
+ if (missingChunks.length > 0) {
615
+ /**
616
+ * @param {RequestShortener} requestShortener request shortener
617
+ * @returns {string} problem description
618
+ */
619
+ const problem = (requestShortener) => {
620
+ const missingChunksList = [
621
+ ...new Set(
622
+ missingChunks.map((chunk) => chunk.name || "unnamed chunk(s)")
623
+ )
624
+ ].sort();
625
+ const chunks = [
626
+ ...new Set(
627
+ [...chunkGraph.getModuleChunksIterable(module)].map(
628
+ (chunk) => chunk.name || "unnamed chunk(s)"
629
+ )
630
+ )
631
+ ].sort();
632
+ return `Module ${module.readableIdentifier(
633
+ requestShortener
634
+ )} is not in the same chunk(s) (expected in chunk(s) ${missingChunksList.join(
635
+ ", "
636
+ )}, module is in chunk(s) ${chunks.join(", ")})`;
637
+ };
638
+ statistics.incorrectChunks++;
639
+ failureCache.set(module, problem); // cache failures for performance
640
+ return problem;
641
+ }
642
+
643
+ const moduleGraph = compilation.moduleGraph;
644
+
645
+ const incomingConnections =
646
+ moduleGraph.getIncomingConnectionsByOriginModule(module);
647
+
648
+ const incomingConnectionsFromNonModules =
649
+ incomingConnections.get(null) || incomingConnections.get(undefined);
650
+ if (incomingConnectionsFromNonModules) {
651
+ const activeNonModulesConnections =
652
+ incomingConnectionsFromNonModules.filter((connection) =>
653
+ // We are not interested in inactive connections
654
+ // or connections without dependency
655
+ connection.isActive(runtime)
656
+ );
657
+ if (activeNonModulesConnections.length > 0) {
658
+ /**
659
+ * @param {RequestShortener} requestShortener request shortener
660
+ * @returns {string} problem description
661
+ */
662
+ const problem = (requestShortener) => {
663
+ /** @type {Set<string>} */
664
+ const importingExplanations = new Set(
665
+ activeNonModulesConnections
666
+ .map((c) => c.explanation)
667
+ .filter(Boolean)
668
+ );
669
+ const explanations = [...importingExplanations].sort();
670
+ return `Module ${module.readableIdentifier(
671
+ requestShortener
672
+ )} is referenced ${
673
+ explanations.length > 0
674
+ ? `by: ${explanations.join(", ")}`
675
+ : "in an unsupported way"
676
+ }`;
677
+ };
678
+ statistics.incorrectDependency++;
679
+ failureCache.set(module, problem); // cache failures for performance
680
+ return problem;
681
+ }
682
+ }
683
+
684
+ /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
685
+ const incomingConnectionsFromModules = new Map();
686
+ for (const [originModule, connections] of incomingConnections) {
687
+ if (originModule) {
688
+ // Ignore connection from orphan modules
689
+ if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
690
+
691
+ // We don't care for connections from other runtimes
692
+ /** @type {RuntimeSpec} */
693
+ let originRuntime;
694
+ for (const r of chunkGraph.getModuleRuntimes(originModule)) {
695
+ originRuntime = mergeRuntimeOwned(originRuntime, r);
696
+ }
697
+
698
+ if (!intersectRuntime(runtime, originRuntime)) continue;
699
+
700
+ // We are not interested in inactive connections
701
+ const activeConnections = connections.filter((connection) =>
702
+ connection.isActive(runtime)
703
+ );
704
+ if (activeConnections.length > 0) {
705
+ incomingConnectionsFromModules.set(originModule, activeConnections);
706
+ }
707
+ }
708
+ }
709
+
710
+ const incomingModules = [...incomingConnectionsFromModules.keys()];
711
+
712
+ // Module must be in the same chunks like the referencing module
713
+ const otherChunkModules = incomingModules.filter((originModule) => {
714
+ for (const chunk of chunkGraph.getModuleChunksIterable(
715
+ config.rootModule
716
+ )) {
717
+ if (!chunkGraph.isModuleInChunk(originModule, chunk)) {
718
+ return true;
719
+ }
720
+ }
721
+ return false;
722
+ });
723
+ if (otherChunkModules.length > 0) {
724
+ /**
725
+ * @param {RequestShortener} requestShortener request shortener
726
+ * @returns {string} problem description
727
+ */
728
+ const problem = (requestShortener) => {
729
+ const names = otherChunkModules
730
+ .map((m) => m.readableIdentifier(requestShortener))
731
+ .sort();
732
+ return `Module ${module.readableIdentifier(
733
+ requestShortener
734
+ )} is referenced from different chunks by these modules: ${names.join(
735
+ ", "
736
+ )}`;
737
+ };
738
+ statistics.incorrectChunksOfImporter++;
739
+ failureCache.set(module, problem); // cache failures for performance
740
+ return problem;
741
+ }
742
+
743
+ /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
744
+ const nonHarmonyConnections = new Map();
745
+ for (const [originModule, connections] of incomingConnectionsFromModules) {
746
+ const selected = connections.filter(
747
+ (connection) =>
748
+ !connection.dependency ||
749
+ !(connection.dependency instanceof HarmonyImportDependency)
750
+ );
751
+ if (selected.length > 0) {
752
+ nonHarmonyConnections.set(originModule, connections);
753
+ }
754
+ }
755
+ if (nonHarmonyConnections.size > 0) {
756
+ /**
757
+ * @param {RequestShortener} requestShortener request shortener
758
+ * @returns {string} problem description
759
+ */
760
+ const problem = (requestShortener) => {
761
+ const names = [...nonHarmonyConnections]
762
+ .map(
763
+ ([originModule, connections]) =>
764
+ `${originModule.readableIdentifier(
765
+ requestShortener
766
+ )} (referenced with ${[
767
+ ...new Set(
768
+ connections
769
+ .map((c) => c.dependency && c.dependency.type)
770
+ .filter(Boolean)
771
+ )
772
+ ]
773
+ .sort()
774
+ .join(", ")})`
775
+ )
776
+ .sort();
777
+ return `Module ${module.readableIdentifier(
778
+ requestShortener
779
+ )} is referenced from these modules with unsupported syntax: ${names.join(
780
+ ", "
781
+ )}`;
782
+ };
783
+ statistics.incorrectModuleDependency++;
784
+ failureCache.set(module, problem); // cache failures for performance
785
+ return problem;
786
+ }
787
+
788
+ if (runtime !== undefined && typeof runtime !== "string") {
789
+ // Module must be consistently referenced in the same runtimes
790
+ /** @type {{ originModule: Module, runtimeCondition: RuntimeSpec }[]} */
791
+ const otherRuntimeConnections = [];
792
+ outer: for (const [
793
+ originModule,
794
+ connections
795
+ ] of incomingConnectionsFromModules) {
796
+ /** @type {false | RuntimeSpec} */
797
+ let currentRuntimeCondition = false;
798
+ for (const connection of connections) {
799
+ const runtimeCondition = filterRuntime(runtime, (runtime) =>
800
+ connection.isTargetActive(runtime)
801
+ );
802
+ if (runtimeCondition === false) continue;
803
+ if (runtimeCondition === true) continue outer;
804
+ currentRuntimeCondition =
805
+ currentRuntimeCondition !== false
806
+ ? mergeRuntime(currentRuntimeCondition, runtimeCondition)
807
+ : runtimeCondition;
808
+ }
809
+ if (currentRuntimeCondition !== false) {
810
+ otherRuntimeConnections.push({
811
+ originModule,
812
+ runtimeCondition: currentRuntimeCondition
813
+ });
814
+ }
815
+ }
816
+ if (otherRuntimeConnections.length > 0) {
817
+ /**
818
+ * @param {RequestShortener} requestShortener request shortener
819
+ * @returns {string} problem description
820
+ */
821
+ const problem = (requestShortener) =>
822
+ `Module ${module.readableIdentifier(
823
+ requestShortener
824
+ )} is runtime-dependent referenced by these modules: ${Array.from(
825
+ otherRuntimeConnections,
826
+ ({ originModule, runtimeCondition }) =>
827
+ `${originModule.readableIdentifier(
828
+ requestShortener
829
+ )} (expected runtime ${runtimeToString(
830
+ runtime
831
+ )}, module is only referenced in ${runtimeToString(
832
+ /** @type {RuntimeSpec} */ (runtimeCondition)
833
+ )})`
834
+ ).join(", ")}`;
835
+ statistics.incorrectRuntimeCondition++;
836
+ failureCache.set(module, problem); // cache failures for performance
837
+ return problem;
838
+ }
839
+ }
840
+
841
+ /** @type {undefined | number} */
842
+ let backup;
843
+ if (avoidMutateOnFailure) {
844
+ backup = config.snapshot();
845
+ }
846
+
847
+ // Add the module
848
+ config.add(module);
849
+
850
+ incomingModules.sort(compareModulesByIdentifier);
851
+
852
+ // Every module which depends on the added module must be in the configuration too.
853
+ for (const originModule of incomingModules) {
854
+ const problem = this._tryToAdd(
855
+ compilation,
856
+ config,
857
+ originModule,
858
+ runtime,
859
+ activeRuntime,
860
+ possibleModules,
861
+ candidates,
862
+ failureCache,
863
+ chunkGraph,
864
+ false,
865
+ statistics
866
+ );
867
+ if (problem) {
868
+ if (backup !== undefined) config.rollback(backup);
869
+ statistics.importerFailed++;
870
+ failureCache.set(module, problem); // cache failures for performance
871
+ return problem;
872
+ }
873
+ }
874
+
875
+ // Add imports to possible candidates list
876
+ for (const imp of this._getImports(compilation, module, runtime)) {
877
+ candidates.add(imp);
878
+ }
879
+ statistics.added++;
880
+ return null;
881
+ }
882
+ }
883
+
884
+ /** @typedef {Map<Module, Problem>} Warnings */
885
+
886
+ class ConcatConfiguration {
887
+ /**
888
+ * @param {Module} rootModule the root module
889
+ * @param {RuntimeSpec} runtime the runtime
890
+ */
891
+ constructor(rootModule, runtime) {
892
+ /** @type {Module} */
893
+ this.rootModule = rootModule;
894
+ /** @type {RuntimeSpec} */
895
+ this.runtime = runtime;
896
+ /** @type {Set<Module>} */
897
+ this.modules = new Set();
898
+ this.modules.add(rootModule);
899
+ /** @type {Warnings} */
900
+ this.warnings = new Map();
901
+ }
902
+
903
+ /**
904
+ * @param {Module} module the module
905
+ */
906
+ add(module) {
907
+ this.modules.add(module);
908
+ }
909
+
910
+ /**
911
+ * @param {Module} module the module
912
+ * @returns {boolean} true, when the module is in the module set
913
+ */
914
+ has(module) {
915
+ return this.modules.has(module);
916
+ }
917
+
918
+ isEmpty() {
919
+ return this.modules.size === 1;
920
+ }
921
+
922
+ /**
923
+ * @param {Module} module the module
924
+ * @param {Problem} problem the problem
925
+ */
926
+ addWarning(module, problem) {
927
+ this.warnings.set(module, problem);
928
+ }
929
+
930
+ /**
931
+ * @returns {Warnings} warnings
932
+ */
933
+ getWarningsSorted() {
934
+ return new Map(
935
+ [...this.warnings].sort((a, b) => {
936
+ const ai = a[0].identifier();
937
+ const bi = b[0].identifier();
938
+ if (ai < bi) return -1;
939
+ if (ai > bi) return 1;
940
+ return 0;
941
+ })
942
+ );
943
+ }
944
+
945
+ /**
946
+ * @returns {Set<Module>} modules as set
947
+ */
948
+ getModules() {
949
+ return this.modules;
950
+ }
951
+
952
+ snapshot() {
953
+ return this.modules.size;
954
+ }
955
+
956
+ /**
957
+ * @param {number} snapshot snapshot
958
+ */
959
+ rollback(snapshot) {
960
+ const modules = this.modules;
961
+ for (const m of modules) {
962
+ if (snapshot === 0) {
963
+ modules.delete(m);
964
+ } else {
965
+ snapshot--;
966
+ }
967
+ }
968
+ }
969
+ }
970
+
971
+ module.exports = ModuleConcatenationPlugin;