@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -17,11 +17,15 @@ const RegExpObjectSerializer = require("./RegExpObjectSerializer");
17
17
  const SerializerMiddleware = require("./SerializerMiddleware");
18
18
  const SetObjectSerializer = require("./SetObjectSerializer");
19
19
 
20
- /** @typedef {import("../logging/Logger").Logger} Logger */
21
- /** @typedef {import("../util/Hash").HashFunction} HashFunction */
22
- /** @typedef {import("./SerializerMiddleware").LazyOptions} LazyOptions */
23
- /** @typedef {import("./types").ComplexSerializableType} ComplexSerializableType */
24
- /** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
20
+ /** @import { Logger } from "../logging/Logger" */
21
+ /** @import { HashFunction } from "../util/Hash" */
22
+ /** @import { LazyOptions } from "./SerializerMiddleware" */
23
+ /**
24
+ * @import {
25
+ * ComplexSerializableType,
26
+ * PrimitiveSerializableType
27
+ * } from "./types"
28
+ */
25
29
 
26
30
  /** @typedef {new (...params: EXPECTED_ANY[]) => EXPECTED_ANY} Constructor */
27
31
 
@@ -457,7 +461,7 @@ class ObjectMiddleware extends SerializerMiddleware {
457
461
  return buf;
458
462
  };
459
463
  let currentPosTypeLookup = 0;
460
- /** @type {Map<ComplexSerializableType, number>} */
464
+ /** @type {Map<SerializerConfigWithSerializer, number>} */
461
465
  let objectTypeLookup = new Map();
462
466
  /** @type {Set<ComplexSerializableType>} */
463
467
  const cycleStack = new Set();
@@ -569,140 +573,160 @@ class ObjectMiddleware extends SerializerMiddleware {
569
573
  ...context
570
574
  };
571
575
  this.extendContext(ctx);
576
+ // Dispatched on `typeof` first: two thirds of the items are numbers,
577
+ // booleans and `undefined`, and only 3% are buffers.
572
578
  /**
573
579
  * Processes the provided item.
574
580
  * @param {ComplexSerializableType} item item to serialize
575
581
  */
576
582
  const process = (item) => {
577
- if (Buffer.isBuffer(item)) {
578
- // check if we can emit a reference
579
- const ref = referenceable.get(item);
580
- if (ref !== undefined) {
581
- result.push(ESCAPE, ref - currentPos);
583
+ switch (typeof item) {
584
+ case "number":
585
+ case "boolean":
586
+ result.push(item);
582
587
  return;
583
- }
584
- const alreadyUsedBuffer = dedupeBuffer(item);
585
- if (alreadyUsedBuffer !== item) {
586
- const ref = referenceable.get(alreadyUsedBuffer);
587
- if (ref !== undefined) {
588
- referenceable.set(item, ref);
589
- result.push(ESCAPE, ref - currentPos);
590
- return;
588
+ case "string": {
589
+ if (item.length > 1) {
590
+ // short strings are shorter when not emitting a reference (this saves 1 byte per empty string)
591
+ // check if we can emit a reference
592
+ const ref = referenceable.get(item);
593
+ if (ref !== undefined) {
594
+ const offset = ref - currentPos;
595
+ if (
596
+ // One far ref → 5 bytes (`null` + offset), one near ref -> 2/3 bytes
597
+ offset >= -32768 ||
598
+ // long enough that the ref wins, keep it
599
+ item.length >= 4 ||
600
+ // multibyte → inline would be even bigger, keep it
601
+ Buffer.byteLength(item) !== item.length
602
+ ) {
603
+ // A back-reference is `null` + the offset.
604
+ result.push(ESCAPE, offset);
605
+ return;
606
+ }
607
+ }
608
+ addReferenceable(item);
609
+ }
610
+
611
+ if (item.length > 102400 && context.logger) {
612
+ context.logger.warn(
613
+ `Serializing big strings (${Math.round(
614
+ item.length / 1024
615
+ )}kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)`
616
+ );
591
617
  }
592
- item = alreadyUsedBuffer;
593
- }
594
- addReferenceable(item);
595
618
 
596
- result.push(/** @type {Buffer} */ (item));
597
- } else if (item === ESCAPE) {
598
- result.push(ESCAPE, ESCAPE_ESCAPE_VALUE);
599
- } else if (
600
- typeof item === "object"
601
- // We don't have to check for null as ESCAPE is null and this has been checked before
602
- ) {
603
- // check if we can emit a reference
604
- const ref = referenceable.get(item);
605
- if (ref !== undefined) {
606
- result.push(ESCAPE, ref - currentPos);
619
+ result.push(item);
607
620
  return;
608
621
  }
622
+ case "undefined":
623
+ result.push(ESCAPE, ESCAPE_UNDEFINED);
624
+ return;
625
+ case "object": {
626
+ // ESCAPE is null, so this covers null too
627
+ if (item === ESCAPE) {
628
+ result.push(ESCAPE, ESCAPE_ESCAPE_VALUE);
629
+ return;
630
+ }
609
631
 
610
- if (cycleStack.has(item)) {
611
- throw new Error(
612
- "This is a circular references. To serialize circular references use 'setCircularReference' somewhere in the circle during serialize and deserialize."
613
- );
614
- }
632
+ if (Buffer.isBuffer(item)) {
633
+ // check if we can emit a reference
634
+ const ref = referenceable.get(item);
635
+ if (ref !== undefined) {
636
+ result.push(ESCAPE, ref - currentPos);
637
+ return;
638
+ }
639
+ const alreadyUsedBuffer = dedupeBuffer(item);
640
+ if (alreadyUsedBuffer !== item) {
641
+ const ref = referenceable.get(alreadyUsedBuffer);
642
+ if (ref !== undefined) {
643
+ referenceable.set(item, ref);
644
+ result.push(ESCAPE, ref - currentPos);
645
+ return;
646
+ }
647
+ item = alreadyUsedBuffer;
648
+ }
649
+ addReferenceable(item);
615
650
 
616
- const { request, name, serializer } = ObjectMiddleware.getSerializerFor(
617
- /** @type {Constructor} */
618
- (item)
619
- );
620
- const key = `${request}/${name}`;
621
- const lastIndex = objectTypeLookup.get(key);
651
+ result.push(/** @type {Buffer} */ (item));
652
+ return;
653
+ }
622
654
 
623
- if (lastIndex === undefined) {
624
- objectTypeLookup.set(key, currentPosTypeLookup++);
655
+ // check if we can emit a reference
656
+ const ref = referenceable.get(item);
657
+ if (ref !== undefined) {
658
+ result.push(ESCAPE, ref - currentPos);
659
+ return;
660
+ }
625
661
 
626
- result.push(ESCAPE, request, name);
627
- } else {
628
- result.push(ESCAPE, currentPosTypeLookup - lastIndex);
629
- }
662
+ if (cycleStack.has(item)) {
663
+ throw new Error(
664
+ "This is a circular references. To serialize circular references use 'setCircularReference' somewhere in the circle during serialize and deserialize."
665
+ );
666
+ }
630
667
 
631
- cycleStack.add(item);
668
+ // Keyed by the registration itself: one per class, so it stands in for
669
+ // `${request}/${name}` without building that string per object.
670
+ const config = ObjectMiddleware.getSerializerFor(
671
+ /** @type {Constructor} */
672
+ (item)
673
+ );
674
+ const { request, name, serializer } = config;
675
+ const lastIndex = objectTypeLookup.get(config);
632
676
 
633
- try {
634
- serializer.serialize(item, ctx);
635
- } finally {
636
- cycleStack.delete(item);
637
- }
677
+ if (lastIndex === undefined) {
678
+ objectTypeLookup.set(config, currentPosTypeLookup++);
638
679
 
639
- result.push(ESCAPE, ESCAPE_END_OBJECT);
680
+ result.push(ESCAPE, request, name);
681
+ } else {
682
+ result.push(ESCAPE, currentPosTypeLookup - lastIndex);
683
+ }
640
684
 
641
- addReferenceable(item);
642
- } else if (typeof item === "string") {
643
- if (item.length > 1) {
644
- // short strings are shorter when not emitting a reference (this saves 1 byte per empty string)
645
- // check if we can emit a reference
646
- const ref = referenceable.get(item);
647
- if (ref !== undefined) {
648
- const offset = ref - currentPos;
649
- if (
650
- // One far ref → 5 bytes (`null` + offset), one near ref -> 2/3 bytes
651
- offset >= -32768 ||
652
- // long enough that the ref wins, keep it
653
- item.length >= 4 ||
654
- // multibyte → inline would be even bigger, keep it
655
- Buffer.byteLength(item) !== item.length
656
- ) {
657
- // A back-reference is `null` + the offset.
658
- result.push(ESCAPE, offset);
659
- return;
660
- }
685
+ cycleStack.add(item);
686
+
687
+ try {
688
+ serializer.serialize(item, ctx);
689
+ } finally {
690
+ cycleStack.delete(item);
661
691
  }
662
- addReferenceable(item);
663
- }
664
692
 
665
- if (item.length > 102400 && context.logger) {
666
- context.logger.warn(
667
- `Serializing big strings (${Math.round(
668
- item.length / 1024
669
- )}kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)`
670
- );
671
- }
693
+ result.push(ESCAPE, ESCAPE_END_OBJECT);
672
694
 
673
- result.push(item);
674
- } else if (typeof item === "function") {
675
- if (!SerializerMiddleware.isLazy(item)) {
676
- throw new Error(`Unexpected function ${item}`);
695
+ addReferenceable(item);
696
+ return;
677
697
  }
698
+ case "function": {
699
+ if (!SerializerMiddleware.isLazy(item)) {
700
+ throw new Error(`Unexpected function ${item}`);
701
+ }
678
702
 
679
- /** @type {SerializedType | undefined} */
680
- const serializedData =
681
- SerializerMiddleware.getLazySerializedValue(item);
703
+ /** @type {SerializedType | undefined} */
704
+ const serializedData =
705
+ SerializerMiddleware.getLazySerializedValue(item);
682
706
 
683
- if (serializedData !== undefined) {
684
- if (typeof serializedData === "function") {
685
- result.push(serializedData);
686
- } else {
707
+ if (serializedData !== undefined) {
708
+ if (typeof serializedData === "function") {
709
+ result.push(serializedData);
710
+ } else {
711
+ throw new Error("Not implemented");
712
+ }
713
+ } else if (SerializerMiddleware.isLazy(item, this)) {
687
714
  throw new Error("Not implemented");
715
+ } else {
716
+ const data =
717
+ /** @type {() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>} */
718
+ (
719
+ SerializerMiddleware.serializeLazy(item, (data) =>
720
+ this.serialize([data], context)
721
+ )
722
+ );
723
+ SerializerMiddleware.setLazySerializedValue(item, data);
724
+ result.push(data);
688
725
  }
689
- } else if (SerializerMiddleware.isLazy(item, this)) {
690
- throw new Error("Not implemented");
691
- } else {
692
- const data =
693
- /** @type {() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>} */
694
- (
695
- SerializerMiddleware.serializeLazy(item, (data) =>
696
- this.serialize([data], context)
697
- )
698
- );
699
- SerializerMiddleware.setLazySerializedValue(item, data);
700
- result.push(data);
726
+ return;
701
727
  }
702
- } else if (item === undefined) {
703
- result.push(ESCAPE, ESCAPE_UNDEFINED);
704
- } else {
705
- result.push(item);
728
+ default:
729
+ result.push(item);
706
730
  }
707
731
  };
708
732
 
@@ -933,5 +957,6 @@ class ObjectMiddleware extends SerializerMiddleware {
933
957
  }
934
958
  }
935
959
 
960
+ ObjectMiddleware.NOT_SERIALIZABLE = NOT_SERIALIZABLE;
961
+
936
962
  module.exports = ObjectMiddleware;
937
- module.exports.NOT_SERIALIZABLE = NOT_SERIALIZABLE;
@@ -3,32 +3,32 @@
3
3
  */
4
4
 
5
5
  "use strict";
6
+ /** @import { ObjectDeserializerContext, ObjectSerializerContext } from "./ObjectMiddleware" */
6
7
 
7
- /** @typedef {EXPECTED_FUNCTION} CacheAssoc */
8
+ /** @typedef {ObjectSerializerContext<EXPECTED_ANY>["write"]} CacheAssoc */
8
9
 
9
10
  /**
10
11
  * Defines the shared type used by this module.
11
- * @template T
12
- * @typedef {WeakMap<CacheAssoc, ObjectStructure<T>>}
12
+ * @type {WeakMap<CacheAssoc, ObjectStructure<PropertyKey>>}
13
13
  */
14
14
  const cache = new WeakMap();
15
15
 
16
16
  /**
17
17
  * Represents ObjectStructure.
18
- * @template T
18
+ * @template {PropertyKey} K
19
19
  */
20
20
  class ObjectStructure {
21
21
  constructor() {
22
- /** @type {undefined | keyof T[]} */
22
+ /** @type {undefined | K[]} */
23
23
  this.keys = undefined;
24
- /** @type {undefined | Map<keyof T, ObjectStructure<T>>} */
24
+ /** @type {undefined | Map<K, ObjectStructure<K>>} */
25
25
  this.children = undefined;
26
26
  }
27
27
 
28
28
  /**
29
29
  * Returns keys.
30
- * @param {keyof T[]} keys keys
31
- * @returns {keyof T[]} keys
30
+ * @param {K[]} keys keys
31
+ * @returns {K[]} keys
32
32
  */
33
33
  getKeys(keys) {
34
34
  if (this.keys === undefined) this.keys = keys;
@@ -37,13 +37,14 @@ class ObjectStructure {
37
37
 
38
38
  /**
39
39
  * Returns object structure.
40
- * @param {keyof T} key key
41
- * @returns {ObjectStructure<T>} object structure
40
+ * @param {K} key key
41
+ * @returns {ObjectStructure<K>} object structure
42
42
  */
43
43
  key(key) {
44
44
  if (this.children === undefined) this.children = new Map();
45
45
  const child = this.children.get(key);
46
46
  if (child !== undefined) return child;
47
+ /** @type {ObjectStructure<K>} */
47
48
  const newChild = new ObjectStructure();
48
49
  this.children.set(key, newChild);
49
50
  return newChild;
@@ -52,13 +53,15 @@ class ObjectStructure {
52
53
 
53
54
  /**
54
55
  * Returns keys.
55
- * @template T
56
- * @param {(keyof T)[]} keys keys
56
+ * @template {PropertyKey} K
57
+ * @param {K[]} keys keys
57
58
  * @param {CacheAssoc} cacheAssoc cache assoc fn
58
- * @returns {(keyof T)[]} keys
59
+ * @returns {K[]} keys
59
60
  */
60
61
  const getCachedKeys = (keys, cacheAssoc) => {
61
- let root = cache.get(cacheAssoc);
62
+ let root = /** @type {ObjectStructure<K> | undefined} */ (
63
+ cache.get(cacheAssoc)
64
+ );
62
65
  if (root === undefined) {
63
66
  root = new ObjectStructure();
64
67
  cache.set(cacheAssoc, root);
@@ -75,7 +78,7 @@ class PlainObjectSerializer {
75
78
  * Serializes this instance into the provided serializer context.
76
79
  * @template {object} T
77
80
  * @param {T} obj plain object
78
- * @param {import("./ObjectMiddleware").ObjectSerializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
81
+ * @param {ObjectSerializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
79
82
  */
80
83
  serialize(obj, context) {
81
84
  const keys = /** @type {(keyof T)[]} */ (Object.keys(obj));
@@ -103,7 +106,7 @@ class PlainObjectSerializer {
103
106
  /**
104
107
  * Restores this instance from the provided deserializer context.
105
108
  * @template {object} T
106
- * @param {import("./ObjectMiddleware").ObjectDeserializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
109
+ * @param {ObjectDeserializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
107
110
  * @returns {T} plain object
108
111
  */
109
112
  deserialize(context) {
@@ -23,28 +23,36 @@ const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependen
23
23
  /** @type {WeakMap<ModuleGraph, WeakMap<ConsumeSharedModule, Module | null>>} */
24
24
  const fallbackModuleCache = new WeakMap();
25
25
 
26
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
27
- /** @typedef {import("../Compilation")} Compilation */
28
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
29
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
30
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
31
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
32
- /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
33
- /** @typedef {import("../Module").LibIdent} LibIdent */
34
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
35
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
36
- /** @typedef {import("../Module").Sources} Sources */
37
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
38
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
39
- /** @typedef {import("../Module").ExportsType} ExportsType */
40
- /** @typedef {import("../RequestShortener")} RequestShortener */
41
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
26
+ /**
27
+ * @import {
28
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
29
+ * } from "../config/defaults"
30
+ */
31
+ /** @import Compilation from "../Compilation" */
32
+ /** @import { UpdateHashContext } from "../Dependency" */
33
+ /**
34
+ * @import {
35
+ * BuildCallback,
36
+ * CodeGenerationContext,
37
+ * CodeGenerationResult,
38
+ * LibIdentOptions,
39
+ * LibIdent,
40
+ * NeedBuildCallback,
41
+ * NeedBuildContext,
42
+ * Sources,
43
+ * SourceTypes,
44
+ * ExportsType,
45
+ * BasicSourceTypes
46
+ * } from "../Module"
47
+ */
48
+ /** @import ModuleGraph from "../ModuleGraph" */
49
+ /** @import RequestShortener from "../RequestShortener" */
50
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
42
51
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ConsumeOptions]>} ObjectDeserializerContext */
43
52
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ConsumeOptions]>} ObjectSerializerContext */
44
- /** @typedef {import("../util/Hash")} Hash */
45
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
46
- /** @typedef {import("../util/semver").SemVerRange} SemVerRange */
47
- /** @typedef {import("../Module").BasicSourceTypes} BasicSourceTypes */
53
+ /** @import Hash from "../util/Hash" */
54
+ /** @import { InputFileSystem } from "../util/fs" */
55
+ /** @import { SemVerRange } from "../util/semver" */
48
56
 
49
57
  /**
50
58
  * Represents the consume shared module runtime component.
@@ -291,7 +299,8 @@ class ConsumeSharedModule extends Module {
291
299
  block,
292
300
  chunkGraph,
293
301
  runtimeRequirements,
294
- request: this.options.import
302
+ request: this.options.import,
303
+ originModule: this
295
304
  });
296
305
  }
297
306
  }
@@ -7,9 +7,9 @@
7
7
 
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const { parseOptions } = require("../container/options");
10
- const ModuleNotFoundError = require("../errors/ModuleNotFoundError");
11
10
  const WebpackError = require("../errors/WebpackError");
12
11
  const LazySet = require("../util/LazySet");
12
+ const memoize = require("../util/memoize");
13
13
  const { parseRange } = require("../util/semver");
14
14
  const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependency");
15
15
  const ConsumeSharedModule = require("./ConsumeSharedModule");
@@ -22,14 +22,22 @@ const {
22
22
  isRequiredVersion
23
23
  } = require("./utils");
24
24
 
25
- /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
26
- /** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumeSharedPluginOptions} ConsumeSharedPluginOptions */
27
- /** @typedef {import("../Compiler")} Compiler */
28
- /** @typedef {import("../Compilation").FileSystemDependencies} FileSystemDependencies */
29
- /** @typedef {import("../ResolverFactory").ResolveOptionsWithDependencyType} ResolveOptionsWithDependencyType */
30
- /** @typedef {import("../util/semver").SemVerRange} SemVerRange */
31
- /** @typedef {import("./ConsumeSharedModule").ConsumeOptions} ConsumeOptions */
32
- /** @typedef {import("./utils").DescriptionFile} DescriptionFile */
25
+ const getModuleNotFoundError = memoize(() =>
26
+ require("../errors/ModuleNotFoundError")
27
+ );
28
+
29
+ /** @import { ResolveContext } from "enhanced-resolve" */
30
+ /**
31
+ * @import {
32
+ * ConsumeSharedPluginOptions
33
+ * } from "../../declarations/plugins/sharing/ConsumeSharedPlugin"
34
+ */
35
+ /** @import Compiler from "../Compiler" */
36
+ /** @import { FileSystemDependencies } from "../Compilation" */
37
+ /** @import { ResolveOptionsWithDependencyType } from "../ResolverFactory" */
38
+ /** @import { SemVerRange } from "../util/semver" */
39
+ /** @import { ConsumeOptions } from "./ConsumeSharedModule" */
40
+ /** @import { DescriptionFile } from "./utils" */
33
41
 
34
42
  /** @type {ResolveOptionsWithDependencyType} */
35
43
  const RESOLVE_OPTIONS = { dependencyType: "esm" };
@@ -206,7 +214,7 @@ class ConsumeSharedPlugin {
206
214
  );
207
215
  if (err) {
208
216
  compilation.errors.push(
209
- new ModuleNotFoundError(null, err, {
217
+ new (getModuleNotFoundError())(null, err, {
210
218
  name: `resolving fallback for shared module ${request}`
211
219
  })
212
220
  );
@@ -16,15 +16,12 @@ const {
16
16
  versionLtRuntimeCode
17
17
  } = require("../util/semver");
18
18
 
19
- /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../Chunk")} Chunk */
21
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
22
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
23
- /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
24
- /** @typedef {import("../Compilation")} Compilation */
25
- /** @typedef {import("../Module")} Module */
26
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
27
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
19
+ /** @import { Source } from "webpack-sources" */
20
+ /** @import Chunk, { ChunkId } from "../Chunk" */
21
+ /** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
22
+ /** @import Compilation from "../Compilation" */
23
+ /** @import Module, { ReadOnlyRuntimeRequirements } from "../Module" */
24
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
28
25
 
29
26
  class ConsumeSharedRuntimeModule extends RuntimeModule {
30
27
  /**
@@ -13,23 +13,31 @@ const RuntimeGlobals = require("../RuntimeGlobals");
13
13
  const makeSerializable = require("../util/makeSerializable");
14
14
  const ProvideForSharedDependency = require("./ProvideForSharedDependency");
15
15
 
16
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
17
- /** @typedef {import("../Compilation")} Compilation */
18
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
19
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
20
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
21
- /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
22
- /** @typedef {import("../Module").LibIdent} LibIdent */
23
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
24
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
25
- /** @typedef {import("../Module").Sources} Sources */
26
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
27
- /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
28
- /** @typedef {import("../RequestShortener")} RequestShortener */
29
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
16
+ /**
17
+ * @import {
18
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
19
+ * } from "../config/defaults"
20
+ */
21
+ /** @import Compilation from "../Compilation" */
22
+ /**
23
+ * @import {
24
+ * BuildCallback,
25
+ * CodeGenerationContext,
26
+ * CodeGenerationResult,
27
+ * LibIdentOptions,
28
+ * LibIdent,
29
+ * NeedBuildCallback,
30
+ * NeedBuildContext,
31
+ * Sources,
32
+ * SourceTypes,
33
+ * CodeGenerationResultData
34
+ * } from "../Module"
35
+ */
36
+ /** @import RequestShortener from "../RequestShortener" */
37
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
30
38
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string | false, string, boolean]>} ObjectDeserializerContext */
31
39
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string | false, string, boolean]>} ObjectSerializerContext */
32
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
40
+ /** @import { InputFileSystem } from "../util/fs" */
33
41
 
34
42
  class ProvideSharedModule extends Module {
35
43
  /**
@@ -160,7 +168,8 @@ class ProvideSharedModule extends Module {
160
168
  block: this.blocks[0],
161
169
  chunkGraph,
162
170
  request: this._request,
163
- runtimeRequirements
171
+ runtimeRequirements,
172
+ originModule: this
164
173
  })
165
174
  }${this._eager ? ", 1" : ""});`;
166
175
  /** @type {Sources} */
@@ -8,9 +8,13 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const ProvideSharedModule = require("./ProvideSharedModule");
10
10
 
11
- /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
13
- /** @typedef {import("./ProvideSharedDependency")} ProvideSharedDependency */
11
+ /**
12
+ * @import {
13
+ * ModuleFactoryCallback,
14
+ * ModuleFactoryCreateData
15
+ * } from "../ModuleFactory"
16
+ */
17
+ /** @import ProvideSharedDependency from "./ProvideSharedDependency" */
14
18
 
15
19
  class ProvideSharedModuleFactory extends ModuleFactory {
16
20
  /**
@@ -12,10 +12,14 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
12
12
  const ProvideSharedDependency = require("./ProvideSharedDependency");
13
13
  const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
14
14
 
15
- /** @typedef {import("../../declarations/plugins/sharing/ProvideSharedPlugin").ProvideSharedPluginOptions} ProvideSharedPluginOptions */
16
- /** @typedef {import("../Compilation")} Compilation */
17
- /** @typedef {import("../Compiler")} Compiler */
18
- /** @typedef {import("../NormalModuleFactory").NormalModuleCreateData} NormalModuleCreateData */
15
+ /**
16
+ * @import {
17
+ * ProvideSharedPluginOptions
18
+ * } from "../../declarations/plugins/sharing/ProvideSharedPlugin"
19
+ */
20
+ /** @import Compilation from "../Compilation" */
21
+ /** @import Compiler from "../Compiler" */
22
+ /** @import { NormalModuleCreateData } from "../NormalModule" */
19
23
 
20
24
  /**
21
25
  * Defines the provide options type used by this module.