@depup/webpack 5.106.0-depup.0 → 5.109.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -8,6 +8,7 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
+ const { compareModulesById } = require("../util/comparators");
11
12
  const {
12
13
  parseVersionRuntimeCode,
13
14
  rangeToStringRuntimeCode,
@@ -31,10 +32,12 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
31
32
  */
32
33
  constructor(runtimeRequirements) {
33
34
  super("consumes", RuntimeModule.STAGE_ATTACH);
35
+ /** @type {ReadOnlyRuntimeRequirements} */
34
36
  this._runtimeRequirements = runtimeRequirements;
35
37
  }
36
38
 
37
39
  /**
40
+ * Generates runtime code for this runtime module.
38
41
  * @returns {string | null} runtime code
39
42
  */
40
43
  generate() {
@@ -70,12 +73,14 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
70
73
  );
71
74
  }
72
75
  };
76
+ const byId = compareModulesById(chunkGraph);
73
77
  for (const chunk of /** @type {Chunk} */ (
74
78
  this.chunk
75
79
  ).getAllReferencedChunks()) {
76
- const modules = chunkGraph.getChunkModulesIterableBySourceType(
80
+ const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
77
81
  chunk,
78
- "consume-shared"
82
+ "consume-shared",
83
+ byId
79
84
  );
80
85
  if (!modules) continue;
81
86
  addModules(
@@ -87,27 +92,29 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
87
92
  for (const chunk of /** @type {Chunk} */ (
88
93
  this.chunk
89
94
  ).getAllInitialChunks()) {
90
- const modules = chunkGraph.getChunkModulesIterableBySourceType(
95
+ const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
91
96
  chunk,
92
- "consume-shared"
97
+ "consume-shared",
98
+ byId
93
99
  );
94
100
  if (!modules) continue;
95
101
  addModules(modules, chunk, initialConsumes);
96
102
  }
97
103
  if (moduleIdToSourceMapping.size === 0) return null;
104
+ const cst = runtimeTemplate.renderConst();
98
105
  return Template.asString([
99
106
  parseVersionRuntimeCode(runtimeTemplate),
100
107
  versionLtRuntimeCode(runtimeTemplate),
101
108
  rangeToStringRuntimeCode(runtimeTemplate),
102
109
  satisfyRuntimeCode(runtimeTemplate),
103
- `var exists = ${runtimeTemplate.basicFunction("scope, key", [
110
+ `${cst} exists = ${runtimeTemplate.basicFunction("scope, key", [
104
111
  `return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key);`
105
112
  ])}`,
106
- `var get = ${runtimeTemplate.basicFunction("entry", [
113
+ `${cst} get = ${runtimeTemplate.basicFunction("entry", [
107
114
  "entry.loaded = 1;",
108
115
  "return entry.get()"
109
116
  ])};`,
110
- `var eagerOnly = ${runtimeTemplate.basicFunction("versions", [
117
+ `${cst} eagerOnly = ${runtimeTemplate.basicFunction("versions", [
111
118
  `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
112
119
  "filtered, version",
113
120
  Template.indent([
@@ -118,10 +125,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
118
125
  ])
119
126
  )}, {});`
120
127
  ])};`,
121
- `var findLatestVersion = ${runtimeTemplate.basicFunction(
128
+ `${cst} findLatestVersion = ${runtimeTemplate.basicFunction(
122
129
  "scope, key, eager",
123
130
  [
124
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
131
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
125
132
  `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
126
133
  "a, b",
127
134
  ["return !a || versionLt(a, b) ? b : a;"]
@@ -129,10 +136,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
129
136
  "return key && versions[key];"
130
137
  ]
131
138
  )};`,
132
- `var findSatisfyingVersion = ${runtimeTemplate.basicFunction(
139
+ `${cst} findSatisfyingVersion = ${runtimeTemplate.basicFunction(
133
140
  "scope, key, requiredVersion, eager",
134
141
  [
135
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
142
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
136
143
  `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
137
144
  "a, b",
138
145
  [
@@ -143,26 +150,26 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
143
150
  "return key && versions[key]"
144
151
  ]
145
152
  )};`,
146
- `var findSingletonVersionKey = ${runtimeTemplate.basicFunction(
153
+ `${cst} findSingletonVersionKey = ${runtimeTemplate.basicFunction(
147
154
  "scope, key, eager",
148
155
  [
149
- "var versions = eager ? eagerOnly(scope[key]) : scope[key];",
156
+ `${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
150
157
  `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
151
158
  "a, b",
152
159
  ["return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;"]
153
160
  )}, 0);`
154
161
  ]
155
162
  )};`,
156
- `var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
163
+ `${cst} getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
157
164
  "scope, key, version, requiredVersion",
158
165
  [
159
166
  'return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"'
160
167
  ]
161
168
  )};`,
162
- `var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
169
+ `${cst} getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
163
170
  "scope, scopeName, key, requiredVersion, eager",
164
171
  [
165
- "var versions = scope[key];",
172
+ `${cst} versions = scope[key];`,
166
173
  'return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
167
174
  `\t"Available versions: " + Object.keys(versions).map(${runtimeTemplate.basicFunction(
168
175
  "key",
@@ -170,26 +177,29 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
170
177
  )}).join(", ");`
171
178
  ]
172
179
  )};`,
173
- `var fail = ${runtimeTemplate.basicFunction("msg", [
180
+ `${cst} fail = ${runtimeTemplate.basicFunction("msg", [
174
181
  "throw new Error(msg);"
175
182
  ])}`,
176
- `var failAsNotExist = ${runtimeTemplate.basicFunction("scopeName, key", [
177
- 'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
178
- ])}`,
179
- `var warn = /*#__PURE__*/ ${
183
+ `${cst} failAsNotExist = ${runtimeTemplate.basicFunction(
184
+ "scopeName, key",
185
+ [
186
+ 'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
187
+ ]
188
+ )}`,
189
+ `${cst} warn = /*#__PURE__*/ ${
180
190
  compilation.outputOptions.ignoreBrowserWarnings
181
191
  ? runtimeTemplate.basicFunction("", "")
182
192
  : runtimeTemplate.basicFunction("msg", [
183
193
  'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
184
194
  ])
185
195
  };`,
186
- `var init = ${runtimeTemplate.returningFunction(
196
+ `${cst} init = ${runtimeTemplate.returningFunction(
187
197
  Template.asString([
188
198
  "function(scopeName, key, eager, c, d) {",
189
199
  Template.indent([
190
- `var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
200
+ `${cst} promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
191
201
  // if we require eager shared, we expect it to be already loaded before it requested, no need to wait the whole scope loaded.
192
- "if (promise && promise.then && !eager) { ",
202
+ `if (${runtimeTemplate.optionalChaining("promise", "then")} && !eager) { `,
193
203
  Template.indent([
194
204
  `return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, false, c, d));`
195
205
  ]),
@@ -201,50 +211,50 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
201
211
  "fn"
202
212
  )};`,
203
213
  "",
204
- `var useFallback = ${runtimeTemplate.basicFunction(
214
+ `${cst} useFallback = ${runtimeTemplate.basicFunction(
205
215
  "scopeName, key, fallback",
206
216
  ["return fallback ? fallback() : failAsNotExist(scopeName, key);"]
207
217
  )}`,
208
- `var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
218
+ `${cst} load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
209
219
  "scopeName, scope, key, eager, fallback",
210
220
  [
211
221
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
212
222
  "return get(findLatestVersion(scope, key, eager));"
213
223
  ]
214
224
  )});`,
215
- `var loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
225
+ `${cst} loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
216
226
  "scopeName, scope, key, eager, requiredVersion, fallback",
217
227
  [
218
228
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
219
- "var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
229
+ `${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
220
230
  "if (satisfyingVersion) return get(satisfyingVersion);",
221
231
  "warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))",
222
232
  "return get(findLatestVersion(scope, key, eager));"
223
233
  ]
224
234
  )});`,
225
- `var loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
235
+ `${cst} loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
226
236
  "scopeName, scope, key, eager, requiredVersion, fallback",
227
237
  [
228
238
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
229
- "var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
239
+ `${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
230
240
  "if (satisfyingVersion) return get(satisfyingVersion);",
231
241
  "if (fallback) return fallback();",
232
242
  "fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));"
233
243
  ]
234
244
  )});`,
235
- `var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
245
+ `${cst} loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
236
246
  "scopeName, scope, key, eager, fallback",
237
247
  [
238
248
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
239
- "var version = findSingletonVersionKey(scope, key, eager);",
249
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
240
250
  "return get(scope[key][version]);"
241
251
  ]
242
252
  )});`,
243
- `var loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
253
+ `${cst} loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
244
254
  "scopeName, scope, key, eager, requiredVersion, fallback",
245
255
  [
246
256
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
247
- "var version = findSingletonVersionKey(scope, key, eager);",
257
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
248
258
  "if (!satisfy(requiredVersion, version)) {",
249
259
  Template.indent([
250
260
  "warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
@@ -253,11 +263,11 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
253
263
  "return get(scope[key][version]);"
254
264
  ]
255
265
  )});`,
256
- `var loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
266
+ `${cst} loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
257
267
  "scopeName, scope, key, eager, requiredVersion, fallback",
258
268
  [
259
269
  "if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
260
- "var version = findSingletonVersionKey(scope, key, eager);",
270
+ `${cst} version = findSingletonVersionKey(scope, key, eager);`,
261
271
  "if (!satisfy(requiredVersion, version)) {",
262
272
  Template.indent([
263
273
  "fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
@@ -266,8 +276,8 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
266
276
  "return get(scope[key][version]);"
267
277
  ]
268
278
  )});`,
269
- "var installedModules = {};",
270
- "var moduleToHandlerMapping = {",
279
+ `${cst} installedModules = {};`,
280
+ `${cst} moduleToHandlerMapping = {`,
271
281
  Template.indent(
272
282
  Array.from(
273
283
  moduleIdToSourceMapping,
@@ -278,7 +288,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
278
288
 
279
289
  initialConsumes.length > 0
280
290
  ? Template.asString([
281
- `var initialConsumes = ${JSON.stringify(initialConsumes)};`,
291
+ `${cst} initialConsumes = ${JSON.stringify(initialConsumes)};`,
282
292
  `initialConsumes.forEach(${runtimeTemplate.basicFunction("id", [
283
293
  `${
284
294
  RuntimeGlobals.moduleFactories
@@ -286,7 +296,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
286
296
  "// Handle case when module is used sync",
287
297
  "installedModules[id] = 0;",
288
298
  `delete ${RuntimeGlobals.moduleCache}[id];`,
289
- "var factory = moduleToHandlerMapping[id]();",
299
+ `${cst} factory = moduleToHandlerMapping[id]();`,
290
300
  'if(typeof factory !== "function") throw new Error("Shared module is not available for eager consumption: " + id);',
291
301
  "module.exports = factory();"
292
302
  ])}`
@@ -295,12 +305,12 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
295
305
  : "// no consumes in initial chunks",
296
306
  this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)
297
307
  ? Template.asString([
298
- `var chunkMapping = ${JSON.stringify(
308
+ `${cst} chunkMapping = ${JSON.stringify(
299
309
  chunkToModuleMapping,
300
310
  null,
301
311
  "\t"
302
312
  )};`,
303
- "var startedInstallModules = {};",
313
+ `${cst} startedInstallModules = {};`,
304
314
  `${
305
315
  RuntimeGlobals.ensureChunkHandlers
306
316
  }.consumes = ${runtimeTemplate.basicFunction("chunkId, promises", [
@@ -311,7 +321,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
311
321
  [
312
322
  `if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,
313
323
  "if(!startedInstallModules[id]) {",
314
- `var onFactory = ${runtimeTemplate.basicFunction(
324
+ `${cst} onFactory = ${runtimeTemplate.basicFunction(
315
325
  "factory",
316
326
  [
317
327
  "installedModules[id] = 0;",
@@ -324,7 +334,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
324
334
  ]
325
335
  )};`,
326
336
  "startedInstallModules[id] = true;",
327
- `var onError = ${runtimeTemplate.basicFunction("error", [
337
+ `${cst} onError = ${runtimeTemplate.basicFunction("error", [
328
338
  "delete installedModules[id];",
329
339
  `${
330
340
  RuntimeGlobals.moduleFactories
@@ -335,7 +345,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
335
345
  ])};`,
336
346
  "try {",
337
347
  Template.indent([
338
- "var promise = moduleToHandlerMapping[id]();",
348
+ `${cst} promise = moduleToHandlerMapping[id]();`,
339
349
  "if(promise.then) {",
340
350
  Template.indent(
341
351
  "promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));"
@@ -10,6 +10,7 @@ const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class ProvideForSharedDependency extends ModuleDependency {
12
12
  /**
13
+ * Creates an instance of ProvideForSharedDependency.
13
14
  * @param {string} request request string
14
15
  */
15
16
  constructor(request) {
@@ -8,11 +8,12 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string, string | false, boolean]>} ObjectDeserializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string, string | false, boolean]>} ObjectSerializerContext */
13
13
 
14
14
  class ProvideSharedDependency extends Dependency {
15
15
  /**
16
+ * Creates an instance of ProvideSharedDependency.
16
17
  * @param {string} shareScope share scope
17
18
  * @param {string} name module name
18
19
  * @param {string | false} version version
@@ -21,10 +22,15 @@ class ProvideSharedDependency extends Dependency {
21
22
  */
22
23
  constructor(shareScope, name, version, request, eager) {
23
24
  super();
25
+ /** @type {string} */
24
26
  this.shareScope = shareScope;
27
+ /** @type {string} */
25
28
  this.name = name;
29
+ /** @type {string | false} */
26
30
  this.version = version;
31
+ /** @type {string} */
27
32
  this.request = request;
33
+ /** @type {boolean} */
28
34
  this.eager = eager;
29
35
  }
30
36
 
@@ -33,6 +39,7 @@ class ProvideSharedDependency extends Dependency {
33
39
  }
34
40
 
35
41
  /**
42
+ * Returns an identifier to merge equal requests.
36
43
  * @returns {string | null} an identifier to merge equal requests
37
44
  */
38
45
  getResourceIdentifier() {
@@ -42,32 +49,44 @@ class ProvideSharedDependency extends Dependency {
42
49
  }
43
50
 
44
51
  /**
52
+ * Serializes this instance into the provided serializer context.
45
53
  * @param {ObjectSerializerContext} context context
46
54
  */
47
55
  serialize(context) {
48
- context.write(this.shareScope);
49
- context.write(this.name);
50
- context.write(this.request);
51
- context.write(this.version);
52
- context.write(this.eager);
56
+ context
57
+ .write(this.shareScope)
58
+ .write(this.name)
59
+ .write(this.request)
60
+ .write(this.version)
61
+ .write(this.eager);
53
62
  super.serialize(context);
54
63
  }
55
64
 
56
65
  /**
66
+ * Restores this instance from the provided deserializer context.
57
67
  * @param {ObjectDeserializerContext} context context
58
68
  * @returns {ProvideSharedDependency} deserialize fallback dependency
59
69
  */
60
70
  static deserialize(context) {
61
- const { read } = context;
71
+ // wire order is shareScope, name, request, version, eager;
72
+ // reorder into the constructor's (…, version, request, …) signature
73
+ const shareScope = context.read();
74
+ const c1 = context.rest;
75
+ const name = c1.read();
76
+ const c2 = c1.rest;
77
+ const request = c2.read();
78
+ const c3 = c2.rest;
79
+ const version = c3.read();
80
+ const c4 = c3.rest;
81
+ const eager = c4.read();
62
82
  const obj = new ProvideSharedDependency(
63
- read(),
64
- read(),
65
- read(),
66
- read(),
67
- read()
83
+ shareScope,
84
+ name,
85
+ version,
86
+ request,
87
+ eager
68
88
  );
69
- this.shareScope = context.read();
70
- obj.deserialize(context);
89
+ obj.deserialize(c4.rest);
71
90
  return obj;
72
91
  }
73
92
  }
@@ -27,12 +27,13 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
27
27
  /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
28
28
  /** @typedef {import("../RequestShortener")} RequestShortener */
29
29
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
30
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
31
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
30
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string | false, string, boolean]>} ObjectDeserializerContext */
31
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string | false, string, boolean]>} ObjectSerializerContext */
32
32
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
33
33
 
34
34
  class ProvideSharedModule extends Module {
35
35
  /**
36
+ * Creates an instance of ProvideSharedModule.
36
37
  * @param {string} shareScope shared scope name
37
38
  * @param {string} name shared key
38
39
  * @param {string | false} version version
@@ -41,21 +42,28 @@ class ProvideSharedModule extends Module {
41
42
  */
42
43
  constructor(shareScope, name, version, request, eager) {
43
44
  super(WEBPACK_MODULE_TYPE_PROVIDE);
45
+ /** @type {string} */
44
46
  this._shareScope = shareScope;
47
+ /** @type {string} */
45
48
  this._name = name;
49
+ /** @type {string | false} */
46
50
  this._version = version;
51
+ /** @type {string} */
47
52
  this._request = request;
53
+ /** @type {boolean} */
48
54
  this._eager = eager;
49
55
  }
50
56
 
51
57
  /**
58
+ * Returns the unique identifier used to reference this module.
52
59
  * @returns {string} a unique identifier of the module
53
60
  */
54
61
  identifier() {
55
- return `provide module (${this._shareScope}) ${this._name}@${this._version} = ${this._request}`;
62
+ return `provide module (${this._shareScope}) ${this._name}@${this._version}|${this._request}`;
56
63
  }
57
64
 
58
65
  /**
66
+ * Returns a human-readable identifier for this module.
59
67
  * @param {RequestShortener} requestShortener the request shortener
60
68
  * @returns {string} a user readable identifier of the module
61
69
  */
@@ -66,6 +74,7 @@ class ProvideSharedModule extends Module {
66
74
  }
67
75
 
68
76
  /**
77
+ * Gets the library identifier.
69
78
  * @param {LibIdentOptions} options options
70
79
  * @returns {LibIdent | null} an identifier for library inclusion
71
80
  */
@@ -76,6 +85,7 @@ class ProvideSharedModule extends Module {
76
85
  }
77
86
 
78
87
  /**
88
+ * Checks whether the module needs to be rebuilt for the current build state.
79
89
  * @param {NeedBuildContext} context context info
80
90
  * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
81
91
  * @returns {void}
@@ -85,6 +95,7 @@ class ProvideSharedModule extends Module {
85
95
  }
86
96
 
87
97
  /**
98
+ * Builds the module using the provided compilation context.
88
99
  * @param {WebpackOptions} options webpack options
89
100
  * @param {Compilation} compilation the compilation
90
101
  * @param {ResolverWithOptions} resolver the resolver
@@ -112,6 +123,7 @@ class ProvideSharedModule extends Module {
112
123
  }
113
124
 
114
125
  /**
126
+ * Returns the estimated size for the requested source type.
115
127
  * @param {string=} type the source type for which the size should be estimated
116
128
  * @returns {number} the estimated size of the module (must be non-zero)
117
129
  */
@@ -120,6 +132,7 @@ class ProvideSharedModule extends Module {
120
132
  }
121
133
 
122
134
  /**
135
+ * Returns the source types this module can generate.
123
136
  * @returns {SourceTypes} types available (do not mutate)
124
137
  */
125
138
  getSourceTypes() {
@@ -127,6 +140,7 @@ class ProvideSharedModule extends Module {
127
140
  }
128
141
 
129
142
  /**
143
+ * Generates code and runtime requirements for this module.
130
144
  * @param {CodeGenerationContext} context context for code generation
131
145
  * @returns {CodeGenerationResult} result
132
146
  */
@@ -164,26 +178,42 @@ class ProvideSharedModule extends Module {
164
178
  }
165
179
 
166
180
  /**
181
+ * Serializes this instance into the provided serializer context.
167
182
  * @param {ObjectSerializerContext} context context
168
183
  */
169
184
  serialize(context) {
170
- const { write } = context;
171
- write(this._shareScope);
172
- write(this._name);
173
- write(this._version);
174
- write(this._request);
175
- write(this._eager);
185
+ context
186
+ .write(this._shareScope)
187
+ .write(this._name)
188
+ .write(this._version)
189
+ .write(this._request)
190
+ .write(this._eager);
176
191
  super.serialize(context);
177
192
  }
178
193
 
179
194
  /**
195
+ * Restores this instance from the provided deserializer context.
180
196
  * @param {ObjectDeserializerContext} context context
181
197
  * @returns {ProvideSharedModule} deserialize fallback dependency
182
198
  */
183
199
  static deserialize(context) {
184
- const { read } = context;
185
- const obj = new ProvideSharedModule(read(), read(), read(), read(), read());
186
- obj.deserialize(context);
200
+ const shareScope = context.read();
201
+ const c1 = context.rest;
202
+ const name = c1.read();
203
+ const c2 = c1.rest;
204
+ const version = c2.read();
205
+ const c3 = c2.rest;
206
+ const request = c3.read();
207
+ const c4 = c3.rest;
208
+ const eager = c4.read();
209
+ const obj = new ProvideSharedModule(
210
+ shareScope,
211
+ name,
212
+ version,
213
+ request,
214
+ eager
215
+ );
216
+ obj.deserialize(c4.rest);
187
217
  return obj;
188
218
  }
189
219
  }
@@ -14,6 +14,7 @@ const ProvideSharedModule = require("./ProvideSharedModule");
14
14
 
15
15
  class ProvideSharedModuleFactory extends ModuleFactory {
16
16
  /**
17
+ * Processes the provided data.
17
18
  * @param {ModuleFactoryCreateData} data data object
18
19
  * @param {ModuleFactoryCallback} callback callback
19
20
  * @returns {void}
@@ -5,8 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const WebpackError = require("../WebpackError");
9
8
  const { parseOptions } = require("../container/options");
9
+ const WebpackError = require("../errors/WebpackError");
10
+ const { ABSOLUTE_PATH_REGEXP } = require("../util/identifier");
10
11
  const ProvideForSharedDependency = require("./ProvideForSharedDependency");
11
12
  const ProvideSharedDependency = require("./ProvideSharedDependency");
12
13
  const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
@@ -17,6 +18,7 @@ const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
17
18
  /** @typedef {import("../NormalModuleFactory").NormalModuleCreateData} NormalModuleCreateData */
18
19
 
19
20
  /**
21
+ * Defines the provide options type used by this module.
20
22
  * @typedef {object} ProvideOptions
21
23
  * @property {string} shareKey
22
24
  * @property {string} shareScope
@@ -30,14 +32,16 @@ const PLUGIN_NAME = "ProvideSharedPlugin";
30
32
 
31
33
  class ProvideSharedPlugin {
32
34
  /**
35
+ * Creates an instance of ProvideSharedPlugin.
33
36
  * @param {ProvideSharedPluginOptions} options options
34
37
  */
35
38
  constructor(options) {
39
+ /** @type {ProvideSharedPluginOptions} */
36
40
  this.options = options;
37
41
  }
38
42
 
39
43
  /**
40
- * Apply the plugin
44
+ * Applies the plugin by registering its hooks on the compiler.
41
45
  * @param {Compiler} compiler the compiler instance
42
46
  * @returns {void}
43
47
  */
@@ -98,13 +102,13 @@ class ProvideSharedPlugin {
98
102
  /** @type {Map<string, ProvideOptions>} */
99
103
  const prefixMatchProvides = new Map();
100
104
  for (const [request, config] of provides) {
101
- if (/^(?:\/|[A-Z]:\\|\\\\|\.\.?(?:\/|$))/i.test(request)) {
105
+ if (/^\.\.?(?:\/|$)/.test(request)) {
102
106
  // relative request
103
107
  resolvedProvideMap.set(request, {
104
108
  config,
105
109
  version: config.version
106
110
  });
107
- } else if (/^(?:\/|[A-Z]:\\|\\\\)/i.test(request)) {
111
+ } else if (ABSOLUTE_PATH_REGEXP.test(request)) {
108
112
  // absolute path
109
113
  resolvedProvideMap.set(request, {
110
114
  config,
@@ -120,6 +124,7 @@ class ProvideSharedPlugin {
120
124
  }
121
125
  compilationData.set(compilation, resolvedProvideMap);
122
126
  /**
127
+ * Provide shared module.
123
128
  * @param {string} key key
124
129
  * @param {ProvideOptions} config config
125
130
  * @param {NormalModuleCreateData["resource"]} resource resource
@@ -166,7 +171,7 @@ class ProvideSharedPlugin {
166
171
  normalModuleFactory.hooks.module.tap(
167
172
  PLUGIN_NAME,
168
173
  (module, { resource, resourceResolveData }, resolveData) => {
169
- if (resolvedProvideMap.has(/** @type {string} */ (resource))) {
174
+ if (resolvedProvideMap.has(resource)) {
170
175
  return module;
171
176
  }
172
177
  const { request } = resolveData;
@@ -176,7 +181,7 @@ class ProvideSharedPlugin {
176
181
  provideSharedModule(
177
182
  request,
178
183
  config,
179
- /** @type {string} */ (resource),
184
+ resource,
180
185
  resourceResolveData
181
186
  );
182
187
  resolveData.cacheable = false;
@@ -186,12 +191,12 @@ class ProvideSharedPlugin {
186
191
  if (request.startsWith(prefix)) {
187
192
  const remainder = request.slice(prefix.length);
188
193
  provideSharedModule(
189
- /** @type {string} */ (resource),
194
+ resource,
190
195
  {
191
196
  ...config,
192
197
  shareKey: config.shareKey + remainder
193
198
  },
194
- /** @type {string} */ (resource),
199
+ resource,
195
200
  resourceResolveData
196
201
  );
197
202
  resolveData.cacheable = false;