@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const NormalModule = require("../NormalModule");
9
+ const { markNotCacheable } = require("../loaders/LoaderRunner");
9
10
  const LazySet = require("../util/LazySet");
10
11
  const LoaderDependency = require("./LoaderDependency");
11
12
  const LoaderImportDependency = require("./LoaderImportDependency");
@@ -19,6 +20,7 @@ const LoaderImportDependency = require("./LoaderImportDependency");
19
20
  /** @typedef {import("../Module").FileSystemDependencies} FileSystemDependencies */
20
21
 
21
22
  /**
23
+ * Defines the import module callback callback.
22
24
  * @callback ImportModuleCallback
23
25
  * @param {(Error | null)=} err error object
24
26
  * @param {ExecuteModuleExports=} exports exports of the evaluated module
@@ -26,6 +28,7 @@ const LoaderImportDependency = require("./LoaderImportDependency");
26
28
  */
27
29
 
28
30
  /**
31
+ * Defines the import module options type used by this module.
29
32
  * @typedef {object} ImportModuleOptions
30
33
  * @property {string=} layer the target layer
31
34
  * @property {string=} publicPath the target public path
@@ -36,7 +39,7 @@ const PLUGIN_NAME = "LoaderPlugin";
36
39
 
37
40
  class LoaderPlugin {
38
41
  /**
39
- * Apply the plugin
42
+ * Applies the plugin by registering its hooks on the compiler.
40
43
  * @param {Compiler} compiler the compiler instance
41
44
  * @returns {void}
42
45
  */
@@ -162,6 +165,7 @@ class LoaderPlugin {
162
165
  };
163
166
 
164
167
  /**
168
+ * Processes the provided request.
165
169
  * @param {string} request the request string to load the module from
166
170
  * @param {ImportModuleOptions} options options
167
171
  * @param {ImportModuleCallback} callback callback returning the exports
@@ -234,6 +238,7 @@ class LoaderPlugin {
234
238
  missingDependencies,
235
239
  buildDependencies,
236
240
  cacheable,
241
+ notCacheableReasons,
237
242
  assets,
238
243
  exports
239
244
  } = /** @type {ExecuteModuleResult} */ (result);
@@ -249,7 +254,9 @@ class LoaderPlugin {
249
254
  for (const d of buildDependencies) {
250
255
  loaderContext.addBuildDependency(d);
251
256
  }
252
- if (cacheable === false) loaderContext.cacheable(false);
257
+ if (cacheable === false) {
258
+ markNotCacheable(loaderContext, notCacheableReasons);
259
+ }
253
260
  for (const [name, { source, info }] of assets) {
254
261
  const buildInfo =
255
262
  /** @type {BuildInfo} */
@@ -7,17 +7,21 @@
7
7
 
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
11
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
10
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, number, boolean]>} ObjectDeserializerContext */
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, number, boolean]>} ObjectSerializerContext */
12
12
 
13
13
  class LocalModule {
14
14
  /**
15
+ * Creates an instance of LocalModule.
15
16
  * @param {string} name name
16
17
  * @param {number} idx index
17
18
  */
18
19
  constructor(name, idx) {
20
+ /** @type {string} */
19
21
  this.name = name;
22
+ /** @type {number} */
20
23
  this.idx = idx;
24
+ /** @type {boolean} */
21
25
  this.used = false;
22
26
  }
23
27
 
@@ -26,6 +30,7 @@ class LocalModule {
26
30
  }
27
31
 
28
32
  /**
33
+ * Returns variable name.
29
34
  * @returns {string} variable name
30
35
  */
31
36
  variableName() {
@@ -33,25 +38,23 @@ class LocalModule {
33
38
  }
34
39
 
35
40
  /**
41
+ * Serializes this instance into the provided serializer context.
36
42
  * @param {ObjectSerializerContext} context context
37
43
  */
38
44
  serialize(context) {
39
- const { write } = context;
40
-
41
- write(this.name);
42
- write(this.idx);
43
- write(this.used);
45
+ context.write(this.name).write(this.idx).write(this.used);
44
46
  }
45
47
 
46
48
  /**
49
+ * Restores this instance from the provided deserializer context.
47
50
  * @param {ObjectDeserializerContext} context context
48
51
  */
49
52
  deserialize(context) {
50
- const { read } = context;
51
-
52
- this.name = read();
53
- this.idx = read();
54
- this.used = read();
53
+ this.name = context.read();
54
+ const c1 = context.rest;
55
+ this.idx = c1.read();
56
+ const c2 = c1.rest;
57
+ this.used = c2.read();
55
58
  }
56
59
  }
57
60
 
@@ -12,12 +12,13 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
14
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[LocalModule, Range | undefined, boolean]>} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[LocalModule, Range | undefined, boolean]>} ObjectSerializerContext */
17
17
  /** @typedef {import("./LocalModule")} LocalModule */
18
18
 
19
19
  class LocalModuleDependency extends NullDependency {
20
20
  /**
21
+ * Creates an instance of LocalModuleDependency.
21
22
  * @param {LocalModule} localModule local module
22
23
  * @param {Range | undefined} range range
23
24
  * @param {boolean} callNew true, when the local module should be called with new
@@ -25,35 +26,35 @@ class LocalModuleDependency extends NullDependency {
25
26
  constructor(localModule, range, callNew) {
26
27
  super();
27
28
 
29
+ /** @type {LocalModule} */
28
30
  this.localModule = localModule;
29
31
  this.range = range;
32
+ /** @type {boolean} */
30
33
  this.callNew = callNew;
31
34
  }
32
35
 
33
36
  /**
37
+ * Serializes this instance into the provided serializer context.
34
38
  * @param {ObjectSerializerContext} context context
35
39
  */
36
40
  serialize(context) {
37
- const { write } = context;
38
-
39
- write(this.localModule);
40
- write(this.range);
41
- write(this.callNew);
41
+ context.write(this.localModule).write(this.range).write(this.callNew);
42
42
 
43
43
  super.serialize(context);
44
44
  }
45
45
 
46
46
  /**
47
+ * Restores this instance from the provided deserializer context.
47
48
  * @param {ObjectDeserializerContext} context context
48
49
  */
49
50
  deserialize(context) {
50
- const { read } = context;
51
-
52
- this.localModule = read();
53
- this.range = read();
54
- this.callNew = read();
51
+ this.localModule = context.read();
52
+ const c1 = context.rest;
53
+ this.range = c1.read();
54
+ const c2 = c1.rest;
55
+ this.callNew = c2.read();
55
56
 
56
- super.deserialize(context);
57
+ super.deserialize(c2.rest);
57
58
  }
58
59
  }
59
60
 
@@ -66,6 +67,7 @@ LocalModuleDependency.Template = class LocalModuleDependencyTemplate extends (
66
67
  NullDependency.Template
67
68
  ) {
68
69
  /**
70
+ * Applies the plugin by registering its hooks on the compiler.
69
71
  * @param {Dependency} dependency the dependency for which the template should be applied
70
72
  * @param {ReplaceSource} source the current replace source which can be modified
71
73
  * @param {DependencyTemplateContext} templateContext the context object
@@ -10,6 +10,7 @@ const LocalModule = require("./LocalModule");
10
10
  /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
11
11
 
12
12
  /**
13
+ * Returns resolved module.
13
14
  * @param {string} parent parent module
14
15
  * @param {string} mod module to resolve
15
16
  * @returns {string} resolved module
@@ -34,6 +35,7 @@ const lookup = (parent, mod) => {
34
35
  };
35
36
 
36
37
  /**
38
+ * Returns local module.
37
39
  * @param {JavascriptParserState} state parser state
38
40
  * @param {string} name name
39
41
  * @returns {LocalModule} local module
@@ -48,6 +50,7 @@ module.exports.addLocalModule = (state, name) => {
48
50
  };
49
51
 
50
52
  /**
53
+ * Returns local module or null.
51
54
  * @param {JavascriptParserState} state parser state
52
55
  * @param {string} name name
53
56
  * @param {string=} namedModule named module
@@ -16,25 +16,29 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, boolean]>} ObjectDeserializerContext */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, boolean]>} ObjectSerializerContext */
21
21
  /** @typedef {import("../util/Hash")} Hash */
22
22
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
23
 
24
24
  class ModuleDecoratorDependency extends NullDependency {
25
25
  /**
26
+ * Creates an instance of ModuleDecoratorDependency.
26
27
  * @param {string} decorator the decorator requirement
27
28
  * @param {boolean} allowExportsAccess allow to access exports from module
28
29
  */
29
30
  constructor(decorator, allowExportsAccess) {
30
31
  super();
32
+ /** @type {string} */
31
33
  this.decorator = decorator;
34
+ /** @type {boolean} */
32
35
  this.allowExportsAccess = allowExportsAccess;
33
36
  /** @type {undefined | string} */
34
37
  this._hashUpdate = undefined;
35
38
  }
36
39
 
37
40
  /**
41
+ * Returns a display name for the type of dependency.
38
42
  * @returns {string} a display name for the type of dependency
39
43
  */
40
44
  get type() {
@@ -46,6 +50,7 @@ class ModuleDecoratorDependency extends NullDependency {
46
50
  }
47
51
 
48
52
  /**
53
+ * Returns an identifier to merge equal requests.
49
54
  * @returns {string | null} an identifier to merge equal requests
50
55
  */
51
56
  getResourceIdentifier() {
@@ -65,7 +70,7 @@ class ModuleDecoratorDependency extends NullDependency {
65
70
  }
66
71
 
67
72
  /**
68
- * Update the hash
73
+ * Updates the hash with the data contributed by this instance.
69
74
  * @param {Hash} hash hash to be updated
70
75
  * @param {UpdateHashContext} context context
71
76
  * @returns {void}
@@ -78,23 +83,23 @@ class ModuleDecoratorDependency extends NullDependency {
78
83
  }
79
84
 
80
85
  /**
86
+ * Serializes this instance into the provided serializer context.
81
87
  * @param {ObjectSerializerContext} context context
82
88
  */
83
89
  serialize(context) {
84
- const { write } = context;
85
- write(this.decorator);
86
- write(this.allowExportsAccess);
90
+ context.write(this.decorator).write(this.allowExportsAccess);
87
91
  super.serialize(context);
88
92
  }
89
93
 
90
94
  /**
95
+ * Restores this instance from the provided deserializer context.
91
96
  * @param {ObjectDeserializerContext} context context
92
97
  */
93
98
  deserialize(context) {
94
- const { read } = context;
95
- this.decorator = read();
96
- this.allowExportsAccess = read();
97
- super.deserialize(context);
99
+ this.decorator = context.read();
100
+ const c1 = context.rest;
101
+ this.allowExportsAccess = c1.read();
102
+ super.deserialize(c1.rest);
98
103
  }
99
104
  }
100
105
 
@@ -107,6 +112,7 @@ ModuleDecoratorDependency.Template = class ModuleDecoratorDependencyTemplate ext
107
112
  NullDependency.Template
108
113
  ) {
109
114
  /**
115
+ * Applies the plugin by registering its hooks on the compiler.
110
116
  * @param {Dependency} dependency the dependency for which the template should be applied
111
117
  * @param {ReplaceSource} source the current replace source which can be modified
112
118
  * @param {DependencyTemplateContext} templateContext the context object
@@ -17,21 +17,28 @@ const DependencyTemplate = require("../DependencyTemplate");
17
17
 
18
18
  class ModuleDependency extends Dependency {
19
19
  /**
20
+ * Creates an instance of ModuleDependency.
20
21
  * @param {string} request request path which needs resolving
21
22
  * @param {number=} sourceOrder source order
22
23
  */
23
24
  constructor(request, sourceOrder) {
24
25
  super();
26
+ /** @type {string} */
25
27
  this.request = request;
28
+ /** @type {string} */
26
29
  this.userRequest = request;
30
+ /** @type {number | undefined} */
27
31
  this.sourceOrder = sourceOrder;
28
32
  /** @type {Range | undefined} */
29
33
  this.range = undefined;
30
34
  /** @type {undefined | string} */
31
35
  this._context = undefined;
36
+ /** @type {boolean} */
37
+ this.weak = false;
32
38
  }
33
39
 
34
40
  /**
41
+ * Returns a request context.
35
42
  * @returns {string | undefined} a request context
36
43
  */
37
44
  getContext() {
@@ -39,6 +46,7 @@ class ModuleDependency extends Dependency {
39
46
  }
40
47
 
41
48
  /**
49
+ * Returns an identifier to merge equal requests.
42
50
  * @returns {string | null} an identifier to merge equal requests
43
51
  */
44
52
  getResourceIdentifier() {
@@ -46,6 +54,7 @@ class ModuleDependency extends Dependency {
46
54
  }
47
55
 
48
56
  /**
57
+ * Could affect referencing module.
49
58
  * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
50
59
  */
51
60
  couldAffectReferencingModule() {
@@ -53,6 +62,7 @@ class ModuleDependency extends Dependency {
53
62
  }
54
63
 
55
64
  /**
65
+ * Creates an ignored module.
56
66
  * @param {string} context context directory
57
67
  * @returns {Module} ignored module
58
68
  */
@@ -69,6 +79,7 @@ class ModuleDependency extends Dependency {
69
79
  }
70
80
 
71
81
  /**
82
+ * Serializes this instance into the provided serializer context.
72
83
  * @param {ObjectSerializerContext} context context
73
84
  */
74
85
  serialize(context) {
@@ -78,10 +89,12 @@ class ModuleDependency extends Dependency {
78
89
  write(this._context);
79
90
  write(this.range);
80
91
  write(this.sourceOrder);
92
+ write(this.weak);
81
93
  super.serialize(context);
82
94
  }
83
95
 
84
96
  /**
97
+ * Restores this instance from the provided deserializer context.
85
98
  * @param {ObjectDeserializerContext} context context
86
99
  */
87
100
  deserialize(context) {
@@ -91,6 +104,7 @@ class ModuleDependency extends Dependency {
91
104
  this._context = read();
92
105
  this.range = read();
93
106
  this.sourceOrder = read();
107
+ this.weak = read();
94
108
  super.deserialize(context);
95
109
  }
96
110
  }
@@ -14,6 +14,7 @@ const ModuleDependency = require("./ModuleDependency");
14
14
 
15
15
  class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
16
16
  /**
17
+ * Applies the plugin by registering its hooks on the compiler.
17
18
  * @param {Dependency} dependency the dependency for which the template should be applied
18
19
  * @param {ReplaceSource} source the current replace source which can be modified
19
20
  * @param {DependencyTemplateContext} templateContext the context object
@@ -13,6 +13,7 @@ const ModuleDependency = require("./ModuleDependency");
13
13
 
14
14
  class ModuleDependencyTemplateAsRequireId extends ModuleDependency.Template {
15
15
  /**
16
+ * Applies the plugin by registering its hooks on the compiler.
16
17
  * @param {Dependency} dependency the dependency for which the template should be applied
17
18
  * @param {ReplaceSource} source the current replace source which can be modified
18
19
  * @param {DependencyTemplateContext} templateContext the context object
@@ -13,12 +13,14 @@ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
13
13
 
14
14
  class ModuleHotAcceptDependency extends ModuleDependency {
15
15
  /**
16
+ * Creates an instance of ModuleHotAcceptDependency.
16
17
  * @param {string} request the request string
17
18
  * @param {Range} range location in source code
18
19
  */
19
20
  constructor(request, range) {
20
21
  super(request, Infinity);
21
22
  this.range = range;
23
+ /** @type {boolean} */
22
24
  this.weak = true;
23
25
  }
24
26
 
@@ -13,6 +13,7 @@ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
13
13
 
14
14
  class ModuleHotDeclineDependency extends ModuleDependency {
15
15
  /**
16
+ * Creates an instance of ModuleHotDeclineDependency.
16
17
  * @param {string} request the request string
17
18
  * @param {Range} range location in source code
18
19
  */
@@ -20,6 +21,7 @@ class ModuleHotDeclineDependency extends ModuleDependency {
20
21
  super(request);
21
22
 
22
23
  this.range = range;
24
+ /** @type {boolean} */
23
25
  this.weak = true;
24
26
  }
25
27
 
@@ -12,44 +12,51 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string[], string | undefined]>} ObjectSerializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string[], string | undefined]>} ObjectDeserializerContext */
17
17
  /**
18
18
  * A dependency that adds an init fragment to the module
19
19
  */
20
20
  class ModuleInitFragmentDependency extends NullDependency {
21
21
  /**
22
+ * Creates an instance of ModuleInitFragmentDependency.
22
23
  * @param {string} initCode the initialization code
23
24
  * @param {string[]} runtimeRequirements runtime requirements
24
25
  * @param {string=} key unique key to avoid emitting the same initialization code twice
25
26
  */
26
27
  constructor(initCode, runtimeRequirements, key) {
27
28
  super();
29
+ /** @type {string} */
28
30
  this.initCode = initCode;
31
+ /** @type {string[]} */
29
32
  this.runtimeRequirements = runtimeRequirements;
33
+ /** @type {string | undefined} */
30
34
  this.key = key;
31
35
  }
32
36
 
33
37
  /**
38
+ * Serializes this instance into the provided serializer context.
34
39
  * @param {ObjectSerializerContext} context context
35
40
  */
36
41
  serialize(context) {
37
- const { write } = context;
38
- write(this.initCode);
39
- write(this.runtimeRequirements);
40
- write(this.key);
42
+ context
43
+ .write(this.initCode)
44
+ .write(this.runtimeRequirements)
45
+ .write(this.key);
41
46
  super.serialize(context);
42
47
  }
43
48
 
44
49
  /**
50
+ * Restores this instance from the provided deserializer context.
45
51
  * @param {ObjectDeserializerContext} context context
46
52
  */
47
53
  deserialize(context) {
48
- const { read } = context;
49
- this.initCode = read();
50
- this.runtimeRequirements = read();
51
- this.key = read();
52
- super.deserialize(context);
54
+ this.initCode = context.read();
55
+ const c1 = context.rest;
56
+ this.runtimeRequirements = c1.read();
57
+ const c2 = c1.rest;
58
+ this.key = c2.read();
59
+ super.deserialize(c2.rest);
53
60
  }
54
61
  }
55
62
 
@@ -62,6 +69,7 @@ ModuleInitFragmentDependency.Template = class ModuleInitFragmentDependencyTempla
62
69
  NullDependency.Template
63
70
  ) {
64
71
  /**
72
+ * Applies the plugin by registering its hooks on the compiler.
65
73
  * @param {Dependency} dependency the dependency for which the template should be applied
66
74
  * @param {ReplaceSource} source the current replace source which can be modified
67
75
  * @param {DependencyTemplateContext} templateContext the context object
@@ -20,6 +20,7 @@ class NullDependency extends Dependency {
20
20
  }
21
21
 
22
22
  /**
23
+ * Could affect referencing module.
23
24
  * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
24
25
  */
25
26
  couldAffectReferencingModule() {
@@ -31,6 +32,7 @@ NullDependency.Template = class NullDependencyTemplate extends (
31
32
  DependencyTemplate
32
33
  ) {
33
34
  /**
35
+ * Applies the plugin by registering its hooks on the compiler.
34
36
  * @param {Dependency} dependency the dependency for which the template should be applied
35
37
  * @param {ReplaceSource} source the current replace source which can be modified
36
38
  * @param {DependencyTemplateContext} templateContext the context object
@@ -9,6 +9,7 @@ const ModuleDependency = require("./ModuleDependency");
9
9
 
10
10
  class PrefetchDependency extends ModuleDependency {
11
11
  /**
12
+ * Creates an instance of PrefetchDependency.
12
13
  * @param {string} request the request string
13
14
  */
14
15
  constructor(request) {
@@ -7,7 +7,10 @@
7
7
 
8
8
  const Dependency = require("../Dependency");
9
9
  const InitFragment = require("../InitFragment");
10
+ const Template = require("../Template");
11
+ const { InlinedUsedName } = require("../optimize/InlineExports");
10
12
  const makeSerializable = require("../util/makeSerializable");
13
+ const { propertyAccess } = require("../util/property");
11
14
  const ModuleDependency = require("./ModuleDependency");
12
15
 
13
16
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -18,22 +21,14 @@ const ModuleDependency = require("./ModuleDependency");
18
21
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
19
22
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExportInfoName[]]>} ObjectDeserializerContext */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExportInfoName[]]>} ObjectSerializerContext */
23
26
  /** @typedef {import("../util/Hash")} Hash */
24
27
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
25
28
 
26
- /**
27
- * @param {string[] | null} path the property path array
28
- * @returns {string} the converted path
29
- */
30
- const pathToString = (path) =>
31
- path !== null && path.length > 0
32
- ? path.map((part) => `[${JSON.stringify(part)}]`).join("")
33
- : "";
34
-
35
29
  class ProvidedDependency extends ModuleDependency {
36
30
  /**
31
+ * Creates an instance of ProvidedDependency.
37
32
  * @param {string} request request
38
33
  * @param {string} identifier identifier
39
34
  * @param {ExportInfoName[]} ids ids
@@ -41,7 +36,9 @@ class ProvidedDependency extends ModuleDependency {
41
36
  */
42
37
  constructor(request, identifier, ids, range) {
43
38
  super(request);
39
+ /** @type {string} */
44
40
  this.identifier = identifier;
41
+ /** @type {string[]} */
45
42
  this.ids = ids;
46
43
  this.range = range;
47
44
  /** @type {undefined | string} */
@@ -69,7 +66,7 @@ class ProvidedDependency extends ModuleDependency {
69
66
  }
70
67
 
71
68
  /**
72
- * Update the hash
69
+ * Updates the hash with the data contributed by this instance.
73
70
  * @param {Hash} hash hash to be updated
74
71
  * @param {UpdateHashContext} context context
75
72
  * @returns {void}
@@ -82,23 +79,23 @@ class ProvidedDependency extends ModuleDependency {
82
79
  }
83
80
 
84
81
  /**
82
+ * Serializes this instance into the provided serializer context.
85
83
  * @param {ObjectSerializerContext} context context
86
84
  */
87
85
  serialize(context) {
88
- const { write } = context;
89
- write(this.identifier);
90
- write(this.ids);
86
+ context.write(this.identifier).write(this.ids);
91
87
  super.serialize(context);
92
88
  }
93
89
 
94
90
  /**
91
+ * Restores this instance from the provided deserializer context.
95
92
  * @param {ObjectDeserializerContext} context context
96
93
  */
97
94
  deserialize(context) {
98
- const { read } = context;
99
- this.identifier = read();
100
- this.ids = read();
101
- super.deserialize(context);
95
+ this.identifier = context.read();
96
+ const c1 = context.rest;
97
+ this.ids = c1.read();
98
+ super.deserialize(c1.rest);
102
99
  }
103
100
  }
104
101
 
@@ -109,6 +106,7 @@ makeSerializable(
109
106
 
110
107
  class ProvidedDependencyTemplate extends ModuleDependency.Template {
111
108
  /**
109
+ * Applies the plugin by registering its hooks on the compiler.
112
110
  * @param {Dependency} dependency the dependency for which the template should be applied
113
111
  * @param {ReplaceSource} source the current replace source which can be modified
114
112
  * @param {DependencyTemplateContext} templateContext the context object
@@ -132,16 +130,27 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template {
132
130
  (moduleGraph.getConnection(dep));
133
131
  const exportsInfo = moduleGraph.getExportsInfo(connection.module);
134
132
  const usedName = exportsInfo.getUsedName(dep.ids, runtime);
133
+
134
+ const moduleRaw = runtimeTemplate.moduleRaw({
135
+ module: moduleGraph.getModule(dep),
136
+ chunkGraph,
137
+ request: dep.request,
138
+ runtimeRequirements
139
+ });
140
+
141
+ const provided = !usedName
142
+ ? moduleRaw
143
+ : usedName instanceof InlinedUsedName
144
+ ? `(${moduleRaw}, ${usedName.render(
145
+ Template.toNormalComment(
146
+ `inlined export ${propertyAccess(dep.ids)}`
147
+ )
148
+ )})`
149
+ : `${moduleRaw}${propertyAccess(/** @type {string[]} */ (usedName), 0)}`;
150
+
135
151
  initFragments.push(
136
152
  new InitFragment(
137
- `/* provided dependency */ var ${
138
- dep.identifier
139
- } = ${runtimeTemplate.moduleExports({
140
- module: moduleGraph.getModule(dep),
141
- chunkGraph,
142
- request: dep.request,
143
- runtimeRequirements
144
- })}${pathToString(/** @type {string[] | null} */ (usedName))};\n`,
153
+ `/* provided dependency */ var ${dep.identifier} = ${provided};\n`,
145
154
  InitFragment.STAGE_PROVIDES,
146
155
  1,
147
156
  `provided ${dep.identifier}`