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
@@ -15,6 +15,7 @@ const { propertyName } = require("../util/property");
15
15
  /** @typedef {import("../ExportsInfo").UsedName} UsedName */
16
16
 
17
17
  /**
18
+ * Join iterable with comma.
18
19
  * @param {Iterable<string>} iterable iterable strings
19
20
  * @returns {string} result
20
21
  */
@@ -43,10 +44,12 @@ const EMPTY_MAP = new Map();
43
44
  const EMPTY_SET = new Set();
44
45
 
45
46
  /**
47
+ * Represents HarmonyExportInitFragment.
46
48
  * @extends {InitFragment<GenerateContext>} Context
47
49
  */
48
50
  class HarmonyExportInitFragment extends InitFragment {
49
51
  /**
52
+ * Creates an instance of HarmonyExportInitFragment.
50
53
  * @param {string} exportsArgument the exports identifier
51
54
  * @param {ExportMap} exportMap mapping from used name to exposed variable name
52
55
  * @param {UnusedExports} unusedExports list of unused export names
@@ -66,6 +69,7 @@ class HarmonyExportInitFragment extends InitFragment {
66
69
  }
67
70
 
68
71
  /**
72
+ * Merges the provided values into a single result.
69
73
  * @param {HarmonyExportInitFragment[]} fragments all fragments to merge
70
74
  * @returns {HarmonyExportInitFragment} merged fragment
71
75
  */
@@ -115,6 +119,7 @@ class HarmonyExportInitFragment extends InitFragment {
115
119
  }
116
120
 
117
121
  /**
122
+ * Returns merged result.
118
123
  * @param {HarmonyExportInitFragment} other other
119
124
  * @returns {HarmonyExportInitFragment} merged result
120
125
  */
@@ -151,6 +156,7 @@ class HarmonyExportInitFragment extends InitFragment {
151
156
  }
152
157
 
153
158
  /**
159
+ * Returns the source code that will be included as initialization code.
154
160
  * @param {GenerateContext} context context
155
161
  * @returns {string | Source | undefined} the source code that will be included as initialization code
156
162
  */
@@ -22,6 +22,7 @@ const NullDependency = require("./NullDependency");
22
22
 
23
23
  class HarmonyExportSpecifierDependency extends NullDependency {
24
24
  /**
25
+ * Creates an instance of HarmonyExportSpecifierDependency.
25
26
  * @param {string} id the id
26
27
  * @param {string} name the name
27
28
  */
@@ -50,6 +51,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
50
51
  }
51
52
 
52
53
  /**
54
+ * Gets module evaluation side effects state.
53
55
  * @param {ModuleGraph} moduleGraph the module graph
54
56
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
55
57
  */
@@ -58,6 +60,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
58
60
  }
59
61
 
60
62
  /**
63
+ * Serializes this instance into the provided serializer context.
61
64
  * @param {ObjectSerializerContext} context context
62
65
  */
63
66
  serialize(context) {
@@ -68,6 +71,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
68
71
  }
69
72
 
70
73
  /**
74
+ * Restores this instance from the provided deserializer context.
71
75
  * @param {ObjectDeserializerContext} context context
72
76
  */
73
77
  deserialize(context) {
@@ -87,6 +91,7 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
87
91
  NullDependency.Template
88
92
  ) {
89
93
  /**
94
+ * Applies the plugin by registering its hooks on the compiler.
90
95
  * @param {Dependency} dependency the dependency for which the template should be applied
91
96
  * @param {ReplaceSource} source the current replace source which can be modified
92
97
  * @param {DependencyTemplateContext} templateContext the context object
@@ -15,6 +15,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
15
15
  const parserStateExportsState = new WeakMap();
16
16
 
17
17
  /**
18
+ * Processes the provided parser state.
18
19
  * @param {JavascriptParserState} parserState parser state
19
20
  * @param {boolean} isStrictHarmony strict harmony mode should be enabled
20
21
  * @returns {void}
@@ -37,6 +38,7 @@ module.exports.enable = (parserState, isStrictHarmony) => {
37
38
  };
38
39
 
39
40
  /**
41
+ * Returns true, when enabled.
40
42
  * @param {JavascriptParserState} parserState parser state
41
43
  * @returns {boolean} true, when enabled
42
44
  */
@@ -7,11 +7,11 @@
7
7
 
8
8
  const ConditionalInitFragment = require("../ConditionalInitFragment");
9
9
  const Dependency = require("../Dependency");
10
- const HarmonyLinkingError = require("../HarmonyLinkingError");
11
10
  const InitFragment = require("../InitFragment");
12
11
  const Template = require("../Template");
13
12
  const AwaitDependenciesInitFragment = require("../async-modules/AwaitDependenciesInitFragment");
14
13
  const { filterRuntime, mergeRuntime } = require("../util/runtime");
14
+ const HarmonyLinkingError = require("./HarmonyLinkingError");
15
15
  const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
16
16
  const ModuleDependency = require("./ModuleDependency");
17
17
 
@@ -23,7 +23,7 @@ const ModuleDependency = require("./ModuleDependency");
23
23
  /** @typedef {import("../Module")} Module */
24
24
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
25
25
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
26
- /** @typedef {import("../WebpackError")} WebpackError */
26
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
27
27
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
28
28
  /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
29
29
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -38,6 +38,7 @@ const ExportPresenceModes = {
38
38
  AUTO: /** @type {ExportPresenceMode} */ (2),
39
39
  ERROR: /** @type {ExportPresenceMode} */ (3),
40
40
  /**
41
+ * Returns result.
41
42
  * @param {string | false} str param
42
43
  * @returns {ExportPresenceMode} result
43
44
  */
@@ -90,6 +91,7 @@ const getNonOptionalPart = (members, membersOptionals) => {
90
91
 
91
92
  class HarmonyImportDependency extends ModuleDependency {
92
93
  /**
94
+ * Creates an instance of HarmonyImportDependency.
93
95
  * @param {string} request request string
94
96
  * @param {number} sourceOrder source order
95
97
  * @param {ImportPhaseType=} phase import phase
@@ -111,6 +113,15 @@ class HarmonyImportDependency extends ModuleDependency {
111
113
  }
112
114
 
113
115
  /**
116
+ * Returns true if this dependency can be concatenated
117
+ * @returns {boolean} true if this dependency can be concatenated
118
+ */
119
+ canConcatenate() {
120
+ return true;
121
+ }
122
+
123
+ /**
124
+ * Returns an identifier to merge equal requests.
114
125
  * @returns {string | null} an identifier to merge equal requests
115
126
  */
116
127
  getResourceIdentifier() {
@@ -136,6 +147,7 @@ class HarmonyImportDependency extends ModuleDependency {
136
147
  }
137
148
 
138
149
  /**
150
+ * Returns name of the variable for the import.
139
151
  * @param {ModuleGraph} moduleGraph the module graph
140
152
  * @returns {string} name of the variable for the import
141
153
  */
@@ -166,6 +178,7 @@ class HarmonyImportDependency extends ModuleDependency {
166
178
  }
167
179
 
168
180
  /**
181
+ * Gets module exports.
169
182
  * @param {DependencyTemplateContext} context the template context
170
183
  * @returns {string} the expression
171
184
  */
@@ -184,6 +197,7 @@ class HarmonyImportDependency extends ModuleDependency {
184
197
  }
185
198
 
186
199
  /**
200
+ * Gets import statement.
187
201
  * @param {boolean} update create new variables or update existing one
188
202
  * @param {DependencyTemplateContext} templateContext the template context
189
203
  * @returns {[string, string]} the import statement and the compat statement
@@ -206,6 +220,7 @@ class HarmonyImportDependency extends ModuleDependency {
206
220
  }
207
221
 
208
222
  /**
223
+ * Gets linking errors.
209
224
  * @param {ModuleGraph} moduleGraph module graph
210
225
  * @param {Ids} ids imported ids
211
226
  * @param {string} additionalMessage extra info included in the error message
@@ -324,6 +339,7 @@ class HarmonyImportDependency extends ModuleDependency {
324
339
  }
325
340
 
326
341
  /**
342
+ * Serializes this instance into the provided serializer context.
327
343
  * @param {ObjectSerializerContext} context context
328
344
  */
329
345
  serialize(context) {
@@ -334,6 +350,7 @@ class HarmonyImportDependency extends ModuleDependency {
334
350
  }
335
351
 
336
352
  /**
353
+ * Restores this instance from the provided deserializer context.
337
354
  * @param {ObjectDeserializerContext} context context
338
355
  */
339
356
  deserialize(context) {
@@ -353,6 +370,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
353
370
  ModuleDependency.Template
354
371
  ) {
355
372
  /**
373
+ * Applies the plugin by registering its hooks on the compiler.
356
374
  * @param {Dependency} dependency the dependency for which the template should be applied
357
375
  * @param {ReplaceSource} source the current replace source which can be modified
358
376
  * @param {DependencyTemplateContext} templateContext the context object
@@ -457,6 +475,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
457
475
  }
458
476
 
459
477
  /**
478
+ * Gets import emitted runtime.
460
479
  * @param {Module} module the module
461
480
  * @param {Module} referencedModule the referenced module
462
481
  * @returns {RuntimeSpec | boolean} runtimeCondition in which this import has been emitted
@@ -6,7 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
9
- const WebpackError = require("../WebpackError");
9
+ const WebpackError = require("../errors/WebpackError");
10
10
  const {
11
11
  VariableInfo,
12
12
  getImportAttributes
@@ -45,6 +45,7 @@ const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
45
45
  /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
46
46
 
47
47
  /**
48
+ * Defines the harmony specifier guards type used by this module.
48
49
  * @typedef {object} HarmonySpecifierGuards
49
50
  * @property {AppendOnlyStackedSet<string> | undefined} guards
50
51
  */
@@ -55,6 +56,7 @@ const harmonySpecifierTag = Symbol("harmony import");
55
56
  const harmonySpecifierGuardTag = Symbol("harmony import guard");
56
57
 
57
58
  /**
59
+ * Defines the harmony settings type used by this module.
58
60
  * @typedef {object} HarmonySettings
59
61
  * @property {Ids} ids
60
62
  * @property {string} source
@@ -68,6 +70,7 @@ const harmonySpecifierGuardTag = Symbol("harmony import guard");
68
70
  const PLUGIN_NAME = "HarmonyImportDependencyParserPlugin";
69
71
 
70
72
  /**
73
+ * Gets in operator harmony import info.
71
74
  * @param {JavascriptParser} parser the parser
72
75
  * @param {PrivateIdentifier | Expression} left left expression
73
76
  * @param {Expression} right right expression
@@ -108,6 +111,7 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
108
111
 
109
112
  module.exports = class HarmonyImportDependencyParserPlugin {
110
113
  /**
114
+ * Creates an instance of HarmonyImportDependencyParserPlugin.
111
115
  * @param {JavascriptParserOptions} options options
112
116
  */
113
117
  constructor(options) {
@@ -121,6 +125,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
121
125
  }
122
126
 
123
127
  /**
128
+ * Gets export presence mode.
124
129
  * @param {JavascriptParser} parser the parser
125
130
  * @param {HarmonySettings} settings settings
126
131
  * @param {Ids} ids ids
@@ -147,6 +152,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
147
152
  }
148
153
 
149
154
  /**
155
+ * Applies the plugin by registering its hooks on the compiler.
150
156
  * @param {JavascriptParser} parser the parser
151
157
  * @returns {void}
152
158
  */
@@ -157,6 +163,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
157
163
  );
158
164
 
159
165
  /**
166
+ * Gets non optional member chain.
160
167
  * @param {MemberExpression} node member expression
161
168
  * @param {number} count count
162
169
  * @returns {Expression} member expression
@@ -406,6 +413,27 @@ module.exports = class HarmonyImportDependencyParserPlugin {
406
413
  return true;
407
414
  }
408
415
  );
416
+ // Per the TC39 import-defer spec, [[Set]] on a Module Namespace
417
+ // Exotic Object returns false without triggering evaluation. The
418
+ // default expressionMemberChain path produces `<importVar>.a.foo`
419
+ // whose `.a` getter eagerly requires (and thus evaluates) the
420
+ // deferred module. For top-level `ns.foo = value`, walk only the
421
+ // bare `ns` identifier so it gets replaced with the deferred
422
+ // namespace proxy (whose set trap returns false), and leave the
423
+ // `.foo = value` part as plain code.
424
+ parser.hooks.assignMemberChain
425
+ .for(harmonySpecifierTag)
426
+ .tap(PLUGIN_NAME, (expression, members) => {
427
+ const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
428
+ if (!ImportPhaseUtils.isDefer(settings.phase)) return;
429
+ if (expression.operator !== "=") return;
430
+ if (members.length !== 1) return;
431
+ const left = /** @type {MemberExpression} */ (expression.left);
432
+ if (left.object.type !== "Identifier") return;
433
+ parser.walkExpression(expression.right);
434
+ parser.walkExpression(left.object);
435
+ return true;
436
+ });
409
437
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
410
438
  HotModuleReplacementPlugin.getParserHooks(parser);
411
439
  hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
@@ -454,6 +482,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
454
482
  });
455
483
 
456
484
  /**
485
+ * Processes the provided guard.
457
486
  * @param {Guards} guards guards
458
487
  * @param {() => void} walk walk callback
459
488
  * @returns {void}
@@ -505,6 +534,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
505
534
  const guards = new Map();
506
535
 
507
536
  /**
537
+ * Processes the provided expression.
508
538
  * @param {Expression} expression expression
509
539
  * @param {boolean} needTruthy need to be truthy
510
540
  */
@@ -21,6 +21,7 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
21
21
 
22
22
  class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
23
23
  /**
24
+ * Creates an instance of HarmonyImportSideEffectDependency.
24
25
  * @param {string} request the request string
25
26
  * @param {number} sourceOrder source order
26
27
  * @param {ImportPhaseType} phase import phase
@@ -35,6 +36,7 @@ class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
35
36
  }
36
37
 
37
38
  /**
39
+ * Returns function to determine if the connection is active.
38
40
  * @param {ModuleGraph} moduleGraph module graph
39
41
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
40
42
  */
@@ -47,6 +49,7 @@ class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
47
49
  }
48
50
 
49
51
  /**
52
+ * Gets module evaluation side effects state.
50
53
  * @param {ModuleGraph} moduleGraph the module graph
51
54
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
52
55
  */
@@ -66,6 +69,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
66
69
  HarmonyImportDependency.Template
67
70
  ) {
68
71
  /**
72
+ * Applies the plugin by registering its hooks on the compiler.
69
73
  * @param {Dependency} dependency the dependency for which the template should be applied
70
74
  * @param {ReplaceSource} source the current replace source which can be modified
71
75
  * @param {DependencyTemplateContext} templateContext the context object
@@ -27,7 +27,7 @@ const { ImportPhaseUtils } = require("./ImportPhase");
27
27
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
28
28
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
29
29
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
30
- /** @typedef {import("../WebpackError")} WebpackError */
30
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
31
31
  /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
32
32
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
33
33
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
@@ -48,6 +48,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
48
48
 
49
49
  class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
50
50
  /**
51
+ * Creates an instance of HarmonyImportSpecifierDependency.
51
52
  * @param {string} request request
52
53
  * @param {number} sourceOrder source order
53
54
  * @param {Ids} ids ids
@@ -93,6 +94,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
93
94
 
94
95
  // TODO webpack 6 remove
95
96
  /**
97
+ * Returns id.
96
98
  * @deprecated
97
99
  */
98
100
  get id() {
@@ -101,6 +103,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
101
103
 
102
104
  // TODO webpack 6 remove
103
105
  /**
106
+ * Returns id.
104
107
  * @deprecated
105
108
  */
106
109
  getId() {
@@ -109,6 +112,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
109
112
 
110
113
  // TODO webpack 6 remove
111
114
  /**
115
+ * Updates id.
112
116
  * @deprecated
113
117
  */
114
118
  setId() {
@@ -120,6 +124,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
120
124
  }
121
125
 
122
126
  /**
127
+ * Returns the imported ids.
123
128
  * @param {ModuleGraph} moduleGraph the module graph
124
129
  * @returns {Ids} the imported ids
125
130
  */
@@ -131,6 +136,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
131
136
  }
132
137
 
133
138
  /**
139
+ * Updates ids using the provided module graph.
134
140
  * @param {ModuleGraph} moduleGraph the module graph
135
141
  * @param {Ids} ids the imported ids
136
142
  * @returns {void}
@@ -140,6 +146,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
140
146
  }
141
147
 
142
148
  /**
149
+ * Returns function to determine if the connection is active.
143
150
  * @param {ModuleGraph} moduleGraph module graph
144
151
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
145
152
  */
@@ -152,6 +159,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
152
159
  }
153
160
 
154
161
  /**
162
+ * Gets module evaluation side effects state.
155
163
  * @param {ModuleGraph} moduleGraph the module graph
156
164
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
157
165
  */
@@ -209,6 +217,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
209
217
  }
210
218
 
211
219
  /**
220
+ * Get referenced exports in destructuring.
212
221
  * @param {Ids=} ids ids
213
222
  * @returns {RawReferencedExports} referenced exports
214
223
  */
@@ -231,6 +240,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
231
240
  }
232
241
 
233
242
  /**
243
+ * Get effective export presence level.
234
244
  * @param {ModuleGraph} moduleGraph module graph
235
245
  * @returns {ExportPresenceMode} effective mode
236
246
  */
@@ -250,7 +260,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
250
260
  }
251
261
 
252
262
  /**
253
- * Returns warnings
263
+ * Returns warnings.
254
264
  * @param {ModuleGraph} moduleGraph module graph
255
265
  * @returns {WebpackError[] | null | undefined} warnings
256
266
  */
@@ -263,7 +273,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
263
273
  }
264
274
 
265
275
  /**
266
- * Returns errors
276
+ * Returns errors.
267
277
  * @param {ModuleGraph} moduleGraph module graph
268
278
  * @returns {WebpackError[] | null | undefined} errors
269
279
  */
@@ -276,6 +286,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
276
286
  }
277
287
 
278
288
  /**
289
+ * Returns errors.
279
290
  * @param {ModuleGraph} moduleGraph module graph
280
291
  * @returns {WebpackError[] | undefined} errors
281
292
  */
@@ -297,6 +308,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
297
308
  }
298
309
 
299
310
  /**
311
+ * Serializes this instance into the provided serializer context.
300
312
  * @param {ObjectSerializerContext} context context
301
313
  */
302
314
  serialize(context) {
@@ -317,6 +329,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
317
329
  }
318
330
 
319
331
  /**
332
+ * Restores this instance from the provided deserializer context.
320
333
  * @param {ObjectDeserializerContext} context context
321
334
  */
322
335
  deserialize(context) {
@@ -346,6 +359,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
346
359
  HarmonyImportDependency.Template
347
360
  ) {
348
361
  /**
362
+ * Applies the plugin by registering its hooks on the compiler.
349
363
  * @param {Dependency} dependency the dependency for which the template should be applied
350
364
  * @param {ReplaceSource} source the current replace source which can be modified
351
365
  * @param {DependencyTemplateContext} templateContext the context object
@@ -450,6 +464,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
450
464
  }
451
465
 
452
466
  /**
467
+ * Returns generated code.
453
468
  * @param {HarmonyImportSpecifierDependency} dep dependency
454
469
  * @param {ReplaceSource} source source
455
470
  * @param {DependencyTemplateContext} templateContext context
@@ -4,9 +4,9 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const WebpackError = require("./WebpackError");
7
+ const WebpackError = require("../errors/WebpackError");
8
8
 
9
- module.exports = class HarmonyLinkingError extends WebpackError {
9
+ class HarmonyLinkingError extends WebpackError {
10
10
  /** @param {string} message Error message */
11
11
  constructor(message) {
12
12
  super(message);
@@ -14,4 +14,6 @@ module.exports = class HarmonyLinkingError extends WebpackError {
14
14
  this.name = "HarmonyLinkingError";
15
15
  this.hideStack = true;
16
16
  }
17
- };
17
+ }
18
+
19
+ module.exports = HarmonyLinkingError;
@@ -31,6 +31,7 @@ const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlug
31
31
  /** @typedef {import("../javascript/JavascriptParser")} Parser */
32
32
 
33
33
  /**
34
+ * Defines the harmony modules plugin options type used by this module.
34
35
  * @typedef {object} HarmonyModulesPluginOptions
35
36
  * @property {boolean=} deferImport
36
37
  */
@@ -39,6 +40,7 @@ const PLUGIN_NAME = "HarmonyModulesPlugin";
39
40
 
40
41
  class HarmonyModulesPlugin {
41
42
  /**
43
+ * Creates an instance of HarmonyModulesPlugin.
42
44
  * @param {HarmonyModulesPluginOptions} options options
43
45
  */
44
46
  constructor(options) {
@@ -46,7 +48,7 @@ class HarmonyModulesPlugin {
46
48
  }
47
49
 
48
50
  /**
49
- * Apply the plugin
51
+ * Applies the plugin by registering its hooks on the compiler.
50
52
  * @param {Compiler} compiler the compiler instance
51
53
  * @returns {void}
52
54
  */
@@ -125,6 +127,7 @@ class HarmonyModulesPlugin {
125
127
  );
126
128
 
127
129
  /**
130
+ * Handles the hook callback for this code path.
128
131
  * @param {Parser} parser parser parser
129
132
  * @param {JavascriptParserOptions} parserOptions parserOptions
130
133
  * @returns {void}
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
16
16
 
17
17
  class HarmonyTopLevelThisParserPlugin {
18
18
  /**
19
+ * Applies the plugin by registering its hooks on the compiler.
19
20
  * @param {JavascriptParser} parser the parser
20
21
  * @returns {void}
21
22
  */
@@ -0,0 +1,133 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const makeSerializable = require("../util/makeSerializable");
8
+ const CssUrlDependency = require("./CssUrlDependency");
9
+ const ModuleDependency = require("./ModuleDependency");
10
+
11
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
+ /** @typedef {import("../Chunk")} Chunk */
13
+ /** @typedef {import("../Dependency")} Dependency */
14
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../Entrypoint")} Entrypoint */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
+
20
+ /**
21
+ * Represents an inline `<script>...</script>` block in an HTML module. The
22
+ * tag's body is bundled as its own entry chunk — the same pipeline that
23
+ * processes `<script src>` — and the inline body is replaced with a
24
+ * `src` attribute pointing at the emitted chunk URL.
25
+ */
26
+ class HtmlInlineScriptDependency extends ModuleDependency {
27
+ /**
28
+ * Creates an instance of HtmlInlineScriptDependency.
29
+ * @param {string} request virtual request resolving to the inline JS (data URI)
30
+ * @param {number} insertPos position right after `<script` where ` src="…"` is inserted
31
+ * @param {Range} contentRange range of the inline JS body (between `<script>` and `</script>`)
32
+ * @param {string} entryName name of the entry the inline JS is bundled into
33
+ * @param {string=} category dependency category used for resolving and grouping
34
+ */
35
+ constructor(request, insertPos, contentRange, entryName, category) {
36
+ super(request);
37
+ this.insertPos = insertPos;
38
+ this.contentRange = contentRange;
39
+ this.range = contentRange;
40
+ this.entryName = entryName;
41
+ /** @type {string} */
42
+ this._category = category || "commonjs";
43
+ }
44
+
45
+ get type() {
46
+ return "html inline script";
47
+ }
48
+
49
+ get category() {
50
+ return this._category;
51
+ }
52
+
53
+ /**
54
+ * Serializes this instance into the provided serializer context.
55
+ * @param {ObjectSerializerContext} context context
56
+ */
57
+ serialize(context) {
58
+ const { write } = context;
59
+ write(this.insertPos);
60
+ write(this.contentRange);
61
+ write(this.entryName);
62
+ write(this._category);
63
+ super.serialize(context);
64
+ }
65
+
66
+ /**
67
+ * Restores this instance from the provided deserializer context.
68
+ * @param {ObjectDeserializerContext} context context
69
+ */
70
+ deserialize(context) {
71
+ const { read } = context;
72
+ this.insertPos = read();
73
+ this.contentRange = read();
74
+ this.range = this.contentRange;
75
+ this.entryName = read();
76
+ this._category = read();
77
+ super.deserialize(context);
78
+ }
79
+ }
80
+
81
+ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate extends (
82
+ ModuleDependency.Template
83
+ ) {
84
+ /**
85
+ * Applies the plugin by registering its hooks on the compiler.
86
+ * @param {Dependency} dependency the dependency for which the template should be applied
87
+ * @param {ReplaceSource} source the current replace source which can be modified
88
+ * @param {DependencyTemplateContext} templateContext the context object
89
+ * @returns {void}
90
+ */
91
+ apply(dependency, source, templateContext) {
92
+ const { runtimeTemplate } = templateContext;
93
+ const dep = /** @type {HtmlInlineScriptDependency} */ (dependency);
94
+ const compilation = runtimeTemplate.compilation;
95
+ const entrypoint = /** @type {Entrypoint | undefined} */ (
96
+ compilation.entrypoints.get(dep.entryName)
97
+ );
98
+
99
+ /** @type {string} */
100
+ let url = "data:,";
101
+
102
+ if (entrypoint) {
103
+ const chunk = /** @type {Chunk} */ (entrypoint.getEntrypointChunk());
104
+ const outputOptions = runtimeTemplate.outputOptions;
105
+ const filenameTemplate =
106
+ chunk.filenameTemplate ||
107
+ (chunk.canBeInitial()
108
+ ? outputOptions.filename
109
+ : outputOptions.chunkFilename);
110
+
111
+ const filename = compilation.getPath(filenameTemplate, {
112
+ chunk,
113
+ contentHashType: "javascript"
114
+ });
115
+
116
+ url = `${CssUrlDependency.PUBLIC_PATH_AUTO}${filename}`;
117
+ }
118
+
119
+ // Insert ` src="…"` right after `<script` so the inline body is
120
+ // served from the emitted chunk instead. The browser ignores the
121
+ // remaining inline body once `src` is present, but we still clear
122
+ // it below so the unprocessed JS doesn't ride along.
123
+ source.insert(dep.insertPos, ` src="${url}"`);
124
+ source.replace(dep.contentRange[0], dep.contentRange[1] - 1, "");
125
+ }
126
+ };
127
+
128
+ makeSerializable(
129
+ HtmlInlineScriptDependency,
130
+ "webpack/lib/dependencies/HtmlInlineScriptDependency"
131
+ );
132
+
133
+ module.exports = HtmlInlineScriptDependency;