webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -10,6 +10,11 @@ const { equals } = require("../util/ArrayHelpers");
10
10
  const { getTrimmedIdsAndRange } = require("../util/chainedImports");
11
11
  const makeSerializable = require("../util/makeSerializable");
12
12
  const { propertyAccess } = require("../util/property");
13
+ const {
14
+ ESM_MODULE_EXPORTS_NAME,
15
+ getRequireEsmModuleExportsAccess,
16
+ isRequireEsmModuleExportsModule
17
+ } = require("./CommonJsDependencyHelpers");
13
18
  const ModuleDependency = require("./ModuleDependency");
14
19
 
15
20
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -26,6 +31,7 @@ const ModuleDependency = require("./ModuleDependency");
26
31
 
27
32
  class CommonJsFullRequireDependency extends ModuleDependency {
28
33
  /**
34
+ * Creates an instance of CommonJsFullRequireDependency.
29
35
  * @param {string} request the request string
30
36
  * @param {Range} range location in source code
31
37
  * @param {ExportInfoName[]} names accessed properties on module
@@ -54,19 +60,28 @@ class CommonJsFullRequireDependency extends ModuleDependency {
54
60
  * @returns {ReferencedExports} referenced exports
55
61
  */
56
62
  getReferencedExports(moduleGraph, runtime) {
57
- if (this.call) {
58
- const importedModule = moduleGraph.getModule(this);
59
- if (
60
- !importedModule ||
61
- importedModule.getExportsType(moduleGraph, false) !== "namespace"
62
- ) {
63
- return [this.names.slice(0, -1)];
64
- }
63
+ const importedModule = moduleGraph.getModule(this);
64
+ if (
65
+ importedModule &&
66
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
67
+ ) {
68
+ // When `require(esm)` unwraps a `"module.exports"` named export, the
69
+ // user's property access lands on that value (which webpack does not
70
+ // model), so only the "module.exports" export itself is referenced.
71
+ return [[ESM_MODULE_EXPORTS_NAME]];
72
+ }
73
+ if (
74
+ this.call &&
75
+ (!importedModule ||
76
+ importedModule.getExportsType(moduleGraph, false) !== "namespace")
77
+ ) {
78
+ return [this.names.slice(0, -1)];
65
79
  }
66
80
  return [this.names];
67
81
  }
68
82
 
69
83
  /**
84
+ * Serializes this instance into the provided serializer context.
70
85
  * @param {ObjectSerializerContext} context context
71
86
  */
72
87
  serialize(context) {
@@ -79,6 +94,7 @@ class CommonJsFullRequireDependency extends ModuleDependency {
79
94
  }
80
95
 
81
96
  /**
97
+ * Restores this instance from the provided deserializer context.
82
98
  * @param {ObjectDeserializerContext} context context
83
99
  */
84
100
  deserialize(context) {
@@ -103,6 +119,7 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
103
119
  ModuleDependency.Template
104
120
  ) {
105
121
  /**
122
+ * Applies the plugin by registering its hooks on the compiler.
106
123
  * @param {Dependency} dependency the dependency for which the template should be applied
107
124
  * @param {ReplaceSource} source the current replace source which can be modified
108
125
  * @param {DependencyTemplateContext} templateContext the context object
@@ -124,6 +141,10 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
124
141
  runtimeRequirements
125
142
  });
126
143
 
144
+ const esmRequireAccess = importedModule
145
+ ? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
146
+ : null;
147
+
127
148
  const {
128
149
  trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
129
150
  trimmedIds
@@ -135,7 +156,13 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
135
156
  dep
136
157
  );
137
158
 
138
- if (importedModule) {
159
+ if (esmRequireAccess !== null) {
160
+ const access = `${esmRequireAccess}${propertyAccess(trimmedIds)}`;
161
+ requireExpr =
162
+ dep.asiSafe === true
163
+ ? `(${requireExpr}${access})`
164
+ : `${requireExpr}${access}`;
165
+ } else if (importedModule) {
139
166
  const usedImported = moduleGraph
140
167
  .getExportsInfo(importedModule)
141
168
  .getUsedName(trimmedIds, runtime);
@@ -5,9 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CommentCompilationWarning = require("../CommentCompilationWarning");
9
8
  const RuntimeGlobals = require("../RuntimeGlobals");
10
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
9
+ const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
10
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
11
11
  const {
12
12
  evaluateToIdentifier,
13
13
  evaluateToString,
@@ -42,6 +42,7 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
42
42
  /** @typedef {import("./LocalModule")} LocalModule */
43
43
 
44
44
  /**
45
+ * Defines the common js import settings type used by this module.
45
46
  * @typedef {object} CommonJsImportSettings
46
47
  * @property {string=} name
47
48
  * @property {string} context
@@ -50,6 +51,7 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
50
51
  const PLUGIN_NAME = "CommonJsImportsParserPlugin";
51
52
 
52
53
  /**
54
+ * Checks whether this object is require call expression.
53
55
  * @param {Expression} expression expression
54
56
  * @returns {boolean} true, when expression is `require(...)` or `module.require(...)`
55
57
  */
@@ -73,6 +75,7 @@ const isRequireCallExpression = (expression) => {
73
75
  };
74
76
 
75
77
  /**
78
+ * Gets require referenced exports from destructuring.
76
79
  * @param {JavascriptParser} parser parser
77
80
  * @param {CallExpression | NewExpression} expr expression
78
81
  * @returns {RawReferencedExports | null} referenced exports from destructuring
@@ -92,6 +95,7 @@ const getRequireReferencedExportsFromDestructuring = (parser, expr) => {
92
95
  };
93
96
 
94
97
  /**
98
+ * Creates a require cache dependency.
95
99
  * @param {JavascriptParser} parser parser
96
100
  * @returns {(expr: Expression) => boolean} handler
97
101
  */
@@ -103,6 +107,7 @@ const createRequireCacheDependency = (parser) =>
103
107
  ]);
104
108
 
105
109
  /**
110
+ * Creates a require as expression handler.
106
111
  * @param {JavascriptParser} parser parser
107
112
  * @param {JavascriptParserOptions} options options
108
113
  * @param {() => undefined | string} getContext context accessor
@@ -132,6 +137,7 @@ const createRequireAsExpressionHandler =
132
137
  };
133
138
 
134
139
  /**
140
+ * Creates a require call handler.
135
141
  * @param {JavascriptParser} parser parser
136
142
  * @param {JavascriptParserOptions} options options
137
143
  * @param {() => undefined | string} getContext context accessor
@@ -139,6 +145,7 @@ const createRequireAsExpressionHandler =
139
145
  */
140
146
  const createRequireCallHandler = (parser, options, getContext) => {
141
147
  /**
148
+ * Process require item.
142
149
  * @param {CallExpression | NewExpression} expr expression
143
150
  * @param {BasicEvaluatedExpression} param param
144
151
  * @returns {boolean | void} true when handled
@@ -153,7 +160,8 @@ const createRequireCallHandler = (parser, options, getContext) => {
153
160
  /** @type {string} */ (param.string),
154
161
  /** @type {Range} */ (param.range),
155
162
  getContext(),
156
- referencedExports
163
+ referencedExports,
164
+ /** @type {Range} */ (expr.range)
157
165
  );
158
166
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
159
167
  dep.optional = Boolean(parser.scope.inTry);
@@ -162,6 +170,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
162
170
  }
163
171
  };
164
172
  /**
173
+ * Process require context.
165
174
  * @param {CallExpression | NewExpression} expr expression
166
175
  * @param {BasicEvaluatedExpression} param param
167
176
  * @returns {boolean | void} true when handled
@@ -278,6 +287,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
278
287
  };
279
288
 
280
289
  /**
290
+ * Creates a process resolve handler.
281
291
  * @param {JavascriptParser} parser parser
282
292
  * @param {JavascriptParserOptions} options options
283
293
  * @param {() => undefined | string} getContext context accessor
@@ -285,6 +295,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
285
295
  */
286
296
  const createProcessResolveHandler = (parser, options, getContext) => {
287
297
  /**
298
+ * Process resolve item.
288
299
  * @param {CallExpression} expr call expression
289
300
  * @param {BasicEvaluatedExpression} param param
290
301
  * @param {boolean} weak weak
@@ -305,6 +316,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
305
316
  }
306
317
  };
307
318
  /**
319
+ * Process resolve context.
308
320
  * @param {CallExpression} expr call expression
309
321
  * @param {BasicEvaluatedExpression} param param
310
322
  * @param {boolean} weak weak
@@ -395,6 +407,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
395
407
 
396
408
  class CommonJsImportsParserPlugin {
397
409
  /**
410
+ * Creates an instance of CommonJsImportsParserPlugin.
398
411
  * @param {JavascriptParserOptions} options parser options
399
412
  */
400
413
  constructor(options) {
@@ -402,6 +415,7 @@ class CommonJsImportsParserPlugin {
402
415
  }
403
416
 
404
417
  /**
418
+ * Applies the plugin by registering its hooks on the compiler.
405
419
  * @param {JavascriptParser} parser the parser
406
420
  * @returns {void}
407
421
  */
@@ -425,6 +439,7 @@ class CommonJsImportsParserPlugin {
425
439
 
426
440
  // #region metadata
427
441
  /**
442
+ * Tap require expression.
428
443
  * @param {string} expression expression
429
444
  * @param {() => Members} getMembers get members
430
445
  */
@@ -491,6 +506,7 @@ class CommonJsImportsParserPlugin {
491
506
 
492
507
  // #region Renaming
493
508
  /**
509
+ * Returns true when set undefined.
494
510
  * @param {Expression} expr expression
495
511
  * @returns {boolean} true when set undefined
496
512
  */
@@ -516,6 +532,7 @@ class CommonJsImportsParserPlugin {
516
532
 
517
533
  // #region Require as expression
518
534
  /**
535
+ * Require as expression handler.
519
536
  * @param {Expression} expr expression
520
537
  * @returns {boolean} true when handled
521
538
  */
@@ -531,6 +548,7 @@ class CommonJsImportsParserPlugin {
531
548
 
532
549
  // #region Require
533
550
  /**
551
+ * Creates a require handler.
534
552
  * @param {boolean} callNew true, when require is called with new
535
553
  * @returns {(expr: CallExpression | NewExpression) => (boolean | void)} handler
536
554
  */
@@ -555,6 +573,7 @@ class CommonJsImportsParserPlugin {
555
573
 
556
574
  // #region Require with property access
557
575
  /**
576
+ * Returns true when handled.
558
577
  * @param {Expression} expr expression
559
578
  * @param {CalleeMembers} calleeMembers callee members
560
579
  * @param {CallExpression} callExpr call expression
@@ -591,6 +610,7 @@ class CommonJsImportsParserPlugin {
591
610
  }
592
611
  };
593
612
  /**
613
+ * Call chain handler.
594
614
  * @param {CallExpression} expr expression
595
615
  * @param {CalleeMembers} calleeMembers callee members
596
616
  * @param {CallExpression} callExpr call expression
@@ -644,6 +664,7 @@ class CommonJsImportsParserPlugin {
644
664
 
645
665
  // #region Require.resolve
646
666
  /**
667
+ * Processes the provided expr.
647
668
  * @param {CallExpression} expr call expression
648
669
  * @param {boolean} weak weak
649
670
  * @returns {boolean | void} true when handled
@@ -44,7 +44,7 @@ const PLUGIN_NAME = "CommonJsPlugin";
44
44
 
45
45
  class CommonJsPlugin {
46
46
  /**
47
- * Apply the plugin
47
+ * Applies the plugin by registering its hooks on the compiler.
48
48
  * @param {Compiler} compiler the compiler instance
49
49
  * @returns {void}
50
50
  */
@@ -174,6 +174,7 @@ class CommonJsPlugin {
174
174
  });
175
175
 
176
176
  /**
177
+ * Handles the hook callback for this code path.
177
178
  * @param {Parser} parser parser parser
178
179
  * @param {JavascriptParserOptions} parserOptions parserOptions
179
180
  * @returns {void}
@@ -266,6 +267,7 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
266
267
  }
267
268
 
268
269
  /**
270
+ * Generates runtime code for this runtime module.
269
271
  * @returns {string | null} runtime code
270
272
  */
271
273
  generate() {
@@ -296,6 +298,7 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
296
298
  }
297
299
 
298
300
  /**
301
+ * Generates runtime code for this runtime module.
299
302
  * @returns {string | null} runtime code
300
303
  */
301
304
  generate() {
@@ -21,6 +21,7 @@ const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTempl
21
21
 
22
22
  class CommonJsRequireContextDependency extends ContextDependency {
23
23
  /**
24
+ * Creates an instance of CommonJsRequireContextDependency.
24
25
  * @param {ContextDependencyOptions} options options for the context module
25
26
  * @param {Range} range location in source code
26
27
  * @param {Range=} valueRange location of the require call
@@ -57,6 +58,7 @@ class CommonJsRequireContextDependency extends ContextDependency {
57
58
  }
58
59
 
59
60
  /**
61
+ * Serializes this instance into the provided serializer context.
60
62
  * @param {ObjectSerializerContext} context context
61
63
  */
62
64
  serialize(context) {
@@ -70,6 +72,7 @@ class CommonJsRequireContextDependency extends ContextDependency {
70
72
  }
71
73
 
72
74
  /**
75
+ * Restores this instance from the provided deserializer context.
73
76
  * @param {ObjectDeserializerContext} context context
74
77
  */
75
78
  deserialize(context) {
@@ -7,11 +7,18 @@
7
7
 
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
+ const {
11
+ ESM_MODULE_EXPORTS_NAME,
12
+ getRequireEsmModuleExportsAccess,
13
+ isRequireEsmModuleExportsModule
14
+ } = require("./CommonJsDependencyHelpers");
10
15
  const ModuleDependency = require("./ModuleDependency");
11
- const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
12
16
 
17
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
18
  /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
14
19
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
20
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
21
+ /** @typedef {import("../Module")} Module */
15
22
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
24
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -20,16 +27,25 @@ const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
20
27
 
21
28
  class CommonJsRequireDependency extends ModuleDependency {
22
29
  /**
30
+ * Creates an instance of CommonJsRequireDependency.
23
31
  * @param {string} request request
24
- * @param {Range=} range location in source code
32
+ * @param {Range=} range location in source code of the string-literal argument (gets replaced by the module id)
25
33
  * @param {string=} context request context
26
34
  * @param {RawReferencedExports | null=} referencedExports list of referenced exports
35
+ * @param {Range=} valueRange location in source code of the whole `require(...)` call (for `require(esm)` interop)
27
36
  */
28
- constructor(request, range, context, referencedExports = null) {
37
+ constructor(
38
+ request,
39
+ range,
40
+ context,
41
+ referencedExports = null,
42
+ valueRange = undefined
43
+ ) {
29
44
  super(request);
30
45
  this.range = range;
31
46
  this._context = context;
32
47
  this.referencedExports = referencedExports;
48
+ this.valueRange = valueRange;
33
49
  }
34
50
 
35
51
  get type() {
@@ -47,6 +63,15 @@ class CommonJsRequireDependency extends ModuleDependency {
47
63
  * @returns {ReferencedExports} referenced exports
48
64
  */
49
65
  getReferencedExports(moduleGraph, runtime) {
66
+ const importedModule = moduleGraph.getModule(this);
67
+ if (
68
+ importedModule &&
69
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
70
+ ) {
71
+ // `require(esm)` will unwrap the "module.exports" named export; only
72
+ // that export is observable through this `require()` call.
73
+ return [[ESM_MODULE_EXPORTS_NAME]];
74
+ }
50
75
  if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
51
76
  return this.referencedExports.map((name) => ({
52
77
  name,
@@ -55,25 +80,66 @@ class CommonJsRequireDependency extends ModuleDependency {
55
80
  }
56
81
 
57
82
  /**
83
+ * Serializes this instance into the provided serializer context.
58
84
  * @param {ObjectSerializerContext} context context
59
85
  */
60
86
  serialize(context) {
61
87
  const { write } = context;
62
88
  write(this.referencedExports);
89
+ write(this.valueRange);
63
90
  super.serialize(context);
64
91
  }
65
92
 
66
93
  /**
94
+ * Restores this instance from the provided deserializer context.
67
95
  * @param {ObjectDeserializerContext} context context
68
96
  */
69
97
  deserialize(context) {
70
98
  const { read } = context;
71
99
  this.referencedExports = read();
100
+ this.valueRange = read();
72
101
  super.deserialize(context);
73
102
  }
74
103
  }
75
104
 
76
- CommonJsRequireDependency.Template = ModuleDependencyTemplateAsId;
105
+ CommonJsRequireDependency.Template = class CommonJsRequireDependencyTemplate extends (
106
+ ModuleDependency.Template
107
+ ) {
108
+ /**
109
+ * Applies the plugin by registering its hooks on the compiler.
110
+ * @param {Dependency} dependency the dependency for which the template should be applied
111
+ * @param {ReplaceSource} source the current replace source which can be modified
112
+ * @param {DependencyTemplateContext} templateContext the context object
113
+ * @returns {void}
114
+ */
115
+ apply(
116
+ dependency,
117
+ source,
118
+ { runtimeTemplate, moduleGraph, chunkGraph, runtime }
119
+ ) {
120
+ const dep = /** @type {CommonJsRequireDependency} */ (dependency);
121
+ if (!dep.range) return;
122
+ const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
123
+ const content = runtimeTemplate.moduleId({
124
+ module: importedModule,
125
+ chunkGraph,
126
+ request: dep.request,
127
+ weak: dep.weak
128
+ });
129
+ source.replace(dep.range[0], dep.range[1] - 1, content);
130
+
131
+ if (dep.valueRange && importedModule) {
132
+ const access = getRequireEsmModuleExportsAccess(
133
+ importedModule,
134
+ moduleGraph,
135
+ runtime
136
+ );
137
+ if (access !== null) {
138
+ source.insert(dep.valueRange[1], access);
139
+ }
140
+ }
141
+ }
142
+ };
77
143
 
78
144
  makeSerializable(
79
145
  CommonJsRequireDependency,
@@ -25,6 +25,7 @@ const NullDependency = require("./NullDependency");
25
25
 
26
26
  class CommonJsSelfReferenceDependency extends NullDependency {
27
27
  /**
28
+ * Creates an instance of CommonJsSelfReferenceDependency.
28
29
  * @param {Range} range range
29
30
  * @param {CommonJSDependencyBaseKeywords} base base
30
31
  * @param {ExportInfoName[]} names names
@@ -47,6 +48,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
47
48
  }
48
49
 
49
50
  /**
51
+ * Returns an identifier to merge equal requests.
50
52
  * @returns {string | null} an identifier to merge equal requests
51
53
  */
52
54
  getResourceIdentifier() {
@@ -64,6 +66,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
64
66
  }
65
67
 
66
68
  /**
69
+ * Serializes this instance into the provided serializer context.
67
70
  * @param {ObjectSerializerContext} context context
68
71
  */
69
72
  serialize(context) {
@@ -76,6 +79,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
76
79
  }
77
80
 
78
81
  /**
82
+ * Restores this instance from the provided deserializer context.
79
83
  * @param {ObjectDeserializerContext} context context
80
84
  */
81
85
  deserialize(context) {
@@ -97,6 +101,7 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
97
101
  NullDependency.Template
98
102
  ) {
99
103
  /**
104
+ * Applies the plugin by registering its hooks on the compiler.
100
105
  * @param {Dependency} dependency the dependency for which the template should be applied
101
106
  * @param {ReplaceSource} source the current replace source which can be modified
102
107
  * @param {DependencyTemplateContext} templateContext the context object
@@ -22,6 +22,7 @@ const NullDependency = require("./NullDependency");
22
22
 
23
23
  class ConstDependency extends NullDependency {
24
24
  /**
25
+ * Creates an instance of ConstDependency.
25
26
  * @param {string} expression the expression
26
27
  * @param {number | Range} range the source range
27
28
  * @param {RawRuntimeRequirements | null=} runtimeRequirements runtime requirements
@@ -38,7 +39,7 @@ class ConstDependency extends NullDependency {
38
39
  }
39
40
 
40
41
  /**
41
- * Update the hash
42
+ * Updates the hash with the data contributed by this instance.
42
43
  * @param {Hash} hash hash to be updated
43
44
  * @param {UpdateHashContext} context context
44
45
  * @returns {void}
@@ -58,6 +59,7 @@ class ConstDependency extends NullDependency {
58
59
  }
59
60
 
60
61
  /**
62
+ * Gets module evaluation side effects state.
61
63
  * @param {ModuleGraph} moduleGraph the module graph
62
64
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
63
65
  */
@@ -66,6 +68,7 @@ class ConstDependency extends NullDependency {
66
68
  }
67
69
 
68
70
  /**
71
+ * Serializes this instance into the provided serializer context.
69
72
  * @param {ObjectSerializerContext} context context
70
73
  */
71
74
  serialize(context) {
@@ -77,6 +80,7 @@ class ConstDependency extends NullDependency {
77
80
  }
78
81
 
79
82
  /**
83
+ * Restores this instance from the provided deserializer context.
80
84
  * @param {ObjectDeserializerContext} context context
81
85
  */
82
86
  deserialize(context) {
@@ -94,6 +98,7 @@ ConstDependency.Template = class ConstDependencyTemplate extends (
94
98
  NullDependency.Template
95
99
  ) {
96
100
  /**
101
+ * Applies the plugin by registering its hooks on the compiler.
97
102
  * @param {Dependency} dependency the dependency for which the template should be applied
98
103
  * @param {ReplaceSource} source the current replace source which can be modified
99
104
  * @param {DependencyTemplateContext} templateContext the context object
@@ -14,7 +14,7 @@ const memoize = require("../util/memoize");
14
14
  /** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
15
15
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../WebpackError")} WebpackError */
17
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
18
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
20
 
@@ -27,6 +27,7 @@ const getCriticalDependencyWarning = memoize(() =>
27
27
  /** @typedef {{ value: string, range: Range }[]} Replaces */
28
28
 
29
29
  /**
30
+ * Returns stringified regexp.
30
31
  * @param {RegExp | false | null | undefined} r regexp
31
32
  * @returns {string} stringified regexp
32
33
  */
@@ -34,6 +35,7 @@ const regExpToString = (r) => (r ? String(r) : "");
34
35
 
35
36
  class ContextDependency extends Dependency {
36
37
  /**
38
+ * Creates an instance of ContextDependency.
37
39
  * @param {ContextDependencyOptions} options options for the context module
38
40
  * @param {string=} context request context
39
41
  */
@@ -69,6 +71,7 @@ class ContextDependency extends Dependency {
69
71
  }
70
72
 
71
73
  /**
74
+ * Returns a request context.
72
75
  * @returns {string | undefined} a request context
73
76
  */
74
77
  getContext() {
@@ -80,6 +83,7 @@ class ContextDependency extends Dependency {
80
83
  }
81
84
 
82
85
  /**
86
+ * Could affect referencing module.
83
87
  * @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
84
88
  */
85
89
  couldAffectReferencingModule() {
@@ -87,6 +91,7 @@ class ContextDependency extends Dependency {
87
91
  }
88
92
 
89
93
  /**
94
+ * Returns an identifier to merge equal requests.
90
95
  * @returns {string | null} an identifier to merge equal requests
91
96
  */
92
97
  getResourceIdentifier() {
@@ -108,7 +113,7 @@ class ContextDependency extends Dependency {
108
113
  }
109
114
 
110
115
  /**
111
- * Returns warnings
116
+ * Returns warnings.
112
117
  * @param {ModuleGraph} moduleGraph module graph
113
118
  * @returns {WebpackError[] | null | undefined} warnings
114
119
  */
@@ -135,6 +140,7 @@ class ContextDependency extends Dependency {
135
140
  }
136
141
 
137
142
  /**
143
+ * Serializes this instance into the provided serializer context.
138
144
  * @param {ObjectSerializerContext} context context
139
145
  */
140
146
  serialize(context) {
@@ -154,6 +160,7 @@ class ContextDependency extends Dependency {
154
160
  }
155
161
 
156
162
  /**
163
+ * Restores this instance from the provided deserializer context.
157
164
  * @param {ObjectDeserializerContext} context context
158
165
  */
159
166
  deserialize(context) {
@@ -25,6 +25,7 @@ const { parseResource } = require("../util/identifier");
25
25
  const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
26
26
 
27
27
  /**
28
+ * Split context from prefix.
28
29
  * @param {string} prefix prefix
29
30
  * @returns {{ prefix: string, context: string }} result
30
31
  */
@@ -45,11 +46,13 @@ const splitContextFromPrefix = (prefix) => {
45
46
  /** @typedef {{ new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...args: EXPECTED_ANY[]): ContextDependency }} ContextDependencyConstructor */
46
47
 
47
48
  /**
49
+ * Defines the get additional dep args type used by this module.
48
50
  * @template T
49
- * @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) => EXPECTED_ANY ? R : []} GetAdditionalDepArgs
51
+ * @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) => ContextDependency ? R : []} GetAdditionalDepArgs
50
52
  */
51
53
 
52
54
  /**
55
+ * Returns the created Dependency.
53
56
  * @template {ContextDependencyConstructor} T
54
57
  * @param {T} Dep the Dependency class
55
58
  * @param {Range} range source range
@@ -14,6 +14,7 @@ const ContextDependency = require("./ContextDependency");
14
14
 
15
15
  class ContextDependencyTemplateAsId extends ContextDependency.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
@@ -16,6 +16,7 @@ class ContextDependencyTemplateAsRequireCall
16
16
  extends ContextDependency.Template
17
17
  {
18
18
  /**
19
+ * Applies the plugin by registering its hooks on the compiler.
19
20
  * @param {Dependency} dependency the dependency for which the template should be applied
20
21
  * @param {ReplaceSource} source the current replace source which can be modified
21
22
  * @param {DependencyTemplateContext} templateContext the context object