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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,149 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const { SyncWaterfallHook } = require("tapable");
8
+ const Compilation = require("../Compilation");
9
+ const RuntimeGlobals = require("../RuntimeGlobals");
10
+ const RuntimeModule = require("../RuntimeModule");
11
+ const Template = require("../Template");
12
+
13
+ /**
14
+ * @typedef {object} ResourceHintRuntimeModulePluginHooks
15
+ * @property {SyncWaterfallHook<[string]>} linkPrefetch
16
+ * @property {SyncWaterfallHook<[string]>} linkPreload
17
+ */
18
+
19
+ /** @type {WeakMap<Compilation, ResourceHintRuntimeModulePluginHooks>} */
20
+ const compilationHooksMap = new WeakMap();
21
+
22
+ /**
23
+ * Maps a request/filename to the value of the `<link>` `as` attribute. Best
24
+ * effort — falls back to `"fetch"` when the type cannot be guessed. Pattern
25
+ * matches against the path part, ignoring any query string suffix.
26
+ * @param {string} request request/filename
27
+ * @returns {string} value for the `as` attribute
28
+ */
29
+ const guessAsAttribute = (request) => {
30
+ if (/\.(png|jpe?g|gif|svg|webp|avif|bmp|ico|tiff?)(\?.*)?$/i.test(request)) {
31
+ return "image";
32
+ }
33
+ if (/\.(woff2?|ttf|otf|eot)(\?.*)?$/i.test(request)) return "font";
34
+ if (/\.css(\?.*)?$/i.test(request)) return "style";
35
+ if (/\.[cm]?jsx?(\?.*)?$/i.test(request)) return "script";
36
+ if (/\.[cm]?tsx?(\?.*)?$/i.test(request)) return "script";
37
+ if (/\.(mp3|wav|flac|aac|m4a|ogg|oga)(\?.*)?$/i.test(request)) return "audio";
38
+ if (/\.(mp4|webm|mkv|mov|m4v|ogv|avi)(\?.*)?$/i.test(request)) return "video";
39
+ if (/\.vtt(\?.*)?$/i.test(request)) return "track";
40
+ return "fetch";
41
+ };
42
+
43
+ class ResourceHintRuntimeModule extends RuntimeModule {
44
+ /**
45
+ * @param {Compilation} compilation the compilation
46
+ * @returns {ResourceHintRuntimeModulePluginHooks} hooks
47
+ */
48
+ static getCompilationHooks(compilation) {
49
+ if (!(compilation instanceof Compilation)) {
50
+ throw new TypeError(
51
+ "The 'compilation' argument must be an instance of Compilation"
52
+ );
53
+ }
54
+ let hooks = compilationHooksMap.get(compilation);
55
+ if (hooks === undefined) {
56
+ hooks = {
57
+ linkPrefetch: new SyncWaterfallHook(["source"]),
58
+ linkPreload: new SyncWaterfallHook(["source"])
59
+ };
60
+ compilationHooksMap.set(compilation, hooks);
61
+ }
62
+ return hooks;
63
+ }
64
+
65
+ /**
66
+ * @param {"prefetch" | "preload"} rel link rel value
67
+ */
68
+ constructor(rel) {
69
+ super(`asset ${rel}`, RuntimeModule.STAGE_ATTACH);
70
+ this._rel = rel;
71
+ }
72
+
73
+ /**
74
+ * Generates runtime code for this runtime module.
75
+ * @returns {string | null} runtime code
76
+ */
77
+ generate() {
78
+ const compilation = /** @type {Compilation} */ (this.compilation);
79
+ const { runtimeTemplate, outputOptions } = compilation;
80
+ const { crossOriginLoading } = outputOptions;
81
+ const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
82
+ const rel = this._rel;
83
+ const fnName =
84
+ rel === "prefetch"
85
+ ? RuntimeGlobals.prefetchAsset
86
+ : RuntimeGlobals.preloadAsset;
87
+ const hook =
88
+ ResourceHintRuntimeModule.getCompilationHooks(compilation)[
89
+ rel === "prefetch" ? "linkPrefetch" : "linkPreload"
90
+ ];
91
+
92
+ const body = [
93
+ "if (installed[href]) return href;",
94
+ "installed[href] = 1;",
95
+ hook.call(
96
+ Template.asString([
97
+ "var link = document.createElement('link');",
98
+ `link.rel = ${JSON.stringify(rel)};`,
99
+ "link.href = href;",
100
+ "if (as) link.as = as;",
101
+ "if (type) link.type = type;",
102
+ "if (media) link.media = media;",
103
+ "if (fetchPriority) {",
104
+ Template.indent([
105
+ 'link.setAttribute("fetchpriority", fetchPriority);'
106
+ ]),
107
+ "}",
108
+ `if (${RuntimeGlobals.scriptNonce}) {`,
109
+ Template.indent(
110
+ `link.setAttribute("nonce", ${RuntimeGlobals.scriptNonce});`
111
+ ),
112
+ "}",
113
+ crossOriginLoading
114
+ ? crossOriginLoading === "use-credentials"
115
+ ? 'link.crossOrigin = "use-credentials";'
116
+ : Template.asString([
117
+ "if (link.href.indexOf(window.location.origin + '/') !== 0) {",
118
+ Template.indent(
119
+ `link.crossOrigin = ${JSON.stringify(crossOriginLoading)};`
120
+ ),
121
+ "}"
122
+ ])
123
+ : ""
124
+ ])
125
+ ),
126
+ "document.head.appendChild(link);",
127
+ "return href;"
128
+ ];
129
+
130
+ const fnBody = isNeutralPlatform
131
+ ? ["if (typeof document === 'undefined') return href;", ...body]
132
+ : body;
133
+
134
+ // `Object.create(null)` keeps the dedupe map free of inherited
135
+ // properties (`toString`, `__proto__`, …) so any URL string is a
136
+ // safe key.
137
+ return Template.asString([
138
+ "var installed = Object.create(null);",
139
+ `${fnName} = ${runtimeTemplate.basicFunction(
140
+ "href, as, type, media, fetchPriority",
141
+ fnBody
142
+ )};`
143
+ ]);
144
+ }
145
+ }
146
+
147
+ ResourceHintRuntimeModule.guessAsAttribute = guessAsAttribute;
148
+
149
+ module.exports = ResourceHintRuntimeModule;
@@ -0,0 +1,210 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const RuntimeGlobals = require("../RuntimeGlobals");
8
+ const RuntimeModule = require("../RuntimeModule");
9
+ const Template = require("../Template");
10
+ const CssUrlDependency = require("../dependencies/CssUrlDependency");
11
+ const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
12
+ const URLDependency = require("../dependencies/URLDependency");
13
+ const ResourceHintRuntimeModule = require("./ResourceHintRuntimeModule");
14
+
15
+ /** @typedef {import("../Chunk")} Chunk */
16
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
17
+ /** @typedef {import("../Compilation")} Compilation */
18
+ /** @typedef {import("../Module")} Module */
19
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
+
21
+ /**
22
+ * Fires `<link rel="prefetch">` / `<link rel="preload">` for every asset
23
+ * referenced from this chunk via `new URL(..., import.meta.url)` carrying
24
+ * `webpackPrefetch` / `webpackPreload`, at chunk startup. Runs before any
25
+ * user module evaluates, so by the time user code reaches the
26
+ * corresponding `new URL(...)` (or hands the URL to `<img>`, `fetch`,
27
+ * `new Worker`, etc.), the browser already has the response in flight.
28
+ */
29
+ class StartupAssetHintRuntimeModule extends RuntimeModule {
30
+ constructor() {
31
+ super("startup asset hints", RuntimeModule.STAGE_TRIGGER);
32
+ }
33
+
34
+ /**
35
+ * Generates runtime code for this runtime module.
36
+ * @returns {string | null} runtime code
37
+ */
38
+ generate() {
39
+ const compilation = /** @type {Compilation} */ (this.compilation);
40
+ const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
41
+ const moduleGraph = /** @type {ModuleGraph} */ (compilation.moduleGraph);
42
+ const runtimeTemplate = compilation.runtimeTemplate;
43
+ const chunk = /** @type {Chunk} */ (this.chunk);
44
+ const runtimeRequirements =
45
+ /** @type {Set<string>} */
46
+ (chunkGraph.getTreeRuntimeRequirements(chunk));
47
+
48
+ // Dedupe per asset module: if the same asset is referenced twice
49
+ // (e.g. CSS rule says `prefetch`, a JS magic comment says
50
+ // `preload`), pick `preload` over `prefetch` and keep the most
51
+ // recently seen explicit attribute overrides. Avoids emitting a
52
+ // duplicate `<link>` and ordering-dependent winners.
53
+ /**
54
+ * @typedef {object} AssetHintEntry
55
+ * @property {import("../Module")} assetModule
56
+ * @property {string} request
57
+ * @property {boolean} preload
58
+ * @property {("low" | "high" | "auto" | undefined)} fetchPriority
59
+ * @property {(string | undefined)} as
60
+ * @property {(string | undefined)} type
61
+ * @property {(string | undefined)} media
62
+ */
63
+ // Per-asset dedupe vs the HTML-head emission by `HtmlEntryDependency`:
64
+ // if the asset is reachable from an HTML entrypoint's chunks, its
65
+ // `<link>` lands in that HTML `<head>` already — skip the runtime
66
+ // hint for that asset so the DOM doesn't carry two tags for one URL.
67
+ // Set is computed once per compilation from the module graph (stable
68
+ // across cache reads), never from a mutable cross-module marker.
69
+ const ResourceHintPlugin = require("./ResourceHintPlugin");
70
+
71
+ // `output.resourceHints: "none"` is a hard off switch — the plugin's
72
+ // runtime-requirements hook already skips adding this module then, so no
73
+ // `"none"` guard is needed here.
74
+ const { isHtmlHinted } =
75
+ ResourceHintPlugin.getCompilationResolver(compilation);
76
+
77
+ /** @type {Map<string, AssetHintEntry>} */
78
+ const perAsset = new Map();
79
+ for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
80
+ const deps =
81
+ /** @type {{ dependencies?: import("../Dependency")[] }} */
82
+ (module).dependencies;
83
+ if (!deps) continue;
84
+ for (const dep of deps) {
85
+ if (
86
+ !(dep instanceof URLDependency) &&
87
+ !(dep instanceof CssUrlDependency) &&
88
+ !(dep instanceof HtmlSourceDependency)
89
+ ) {
90
+ continue;
91
+ }
92
+ if (!dep.prefetch && !dep.preload) continue;
93
+ const assetModule = moduleGraph.getModule(dep);
94
+ if (!assetModule) continue;
95
+ if (isHtmlHinted(assetModule)) continue;
96
+ const key = assetModule.identifier();
97
+ const urlDep =
98
+ /** @type {URLDependency & Partial<CssUrlDependency> & Partial<HtmlSourceDependency>} */
99
+ (dep);
100
+ const existing = perAsset.get(key);
101
+ if (existing) {
102
+ if (dep.preload) existing.preload = true;
103
+ if (dep.fetchPriority) existing.fetchPriority = dep.fetchPriority;
104
+ if (urlDep.asAttribute) existing.as = urlDep.asAttribute;
105
+ if (urlDep.typeAttribute) existing.type = urlDep.typeAttribute;
106
+ if (urlDep.mediaAttribute) existing.media = urlDep.mediaAttribute;
107
+ } else {
108
+ perAsset.set(key, {
109
+ assetModule: /** @type {Module} */ (assetModule),
110
+ request: dep.request,
111
+ preload: Boolean(dep.preload),
112
+ fetchPriority: dep.fetchPriority,
113
+ as: urlDep.asAttribute,
114
+ type: urlDep.typeAttribute,
115
+ media: urlDep.mediaAttribute
116
+ });
117
+ }
118
+ }
119
+ }
120
+ const lines = [];
121
+ for (const entry of perAsset.values()) {
122
+ const fn = entry.preload
123
+ ? RuntimeGlobals.preloadAsset
124
+ : RuntimeGlobals.prefetchAsset;
125
+ // For CSS-only assets (referenced from `url(...)` but never
126
+ // from JS) the module produces no JS source, so
127
+ // `__webpack_require__(id)` would throw at runtime. Use the
128
+ // emitted filename + publicPath directly in that case; asset
129
+ // modules referenced from JS stay on the existing `moduleRaw`
130
+ // path which yields the same URL.
131
+ const hasJsSourceType = entry.assetModule
132
+ .getSourceTypes()
133
+ .has("javascript");
134
+ let hrefExpr;
135
+ if (hasJsSourceType) {
136
+ hrefExpr = runtimeTemplate.moduleRaw({
137
+ chunkGraph,
138
+ module: entry.assetModule,
139
+ request: entry.request,
140
+ runtimeRequirements,
141
+ weak: false
142
+ });
143
+ } else {
144
+ const buildInfo =
145
+ /** @type {{ filename?: string }} */
146
+ (entry.assetModule.buildInfo);
147
+ if (!buildInfo || !buildInfo.filename) continue;
148
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
149
+ hrefExpr = `${RuntimeGlobals.publicPath} + ${JSON.stringify(buildInfo.filename)}`;
150
+ }
151
+ const as =
152
+ entry.as || ResourceHintRuntimeModule.guessAsAttribute(entry.request);
153
+ lines.push(
154
+ `${fn}(${hrefExpr}, ${JSON.stringify(as)}, ${
155
+ entry.type ? JSON.stringify(entry.type) : "undefined"
156
+ }, ${entry.media ? JSON.stringify(entry.media) : "undefined"}, ${
157
+ entry.fetchPriority
158
+ ? JSON.stringify(entry.fetchPriority)
159
+ : "undefined"
160
+ });`
161
+ );
162
+ }
163
+ if (lines.length === 0) return null;
164
+ // `__webpack_nonce__` set inside the entry module is too late — the
165
+ // entry hasn't run yet. Read the nonce off the `<script>` tag that
166
+ // loaded the bundle, so prefetch / preload links match a CSP that
167
+ // demands the same nonce as the script.
168
+ //
169
+ // - For classic script output, `document.currentScript` is the
170
+ // loading `<script>` element while the runtime executes.
171
+ // - For ESM output (`output.module: true`), `document.currentScript`
172
+ // is `null`; locate the loading `<script type="module">` by
173
+ // matching `script.src` against `import.meta.url`.
174
+ const { module: isModule, importMetaName } = compilation.outputOptions;
175
+ const nonceSetup = isModule
176
+ ? [
177
+ "if (typeof document !== 'undefined') {",
178
+ Template.indent([
179
+ `var url = ${importMetaName}.url;`,
180
+ "var scripts = document.getElementsByTagName('script');",
181
+ "for (var i = 0; i < scripts.length; i++) {",
182
+ Template.indent([
183
+ `if (scripts[i].src === url && scripts[i].nonce && !${RuntimeGlobals.scriptNonce}) {`,
184
+ Template.indent([
185
+ `${RuntimeGlobals.scriptNonce} = scripts[i].nonce;`,
186
+ "break;"
187
+ ]),
188
+ "}"
189
+ ]),
190
+ "}"
191
+ ]),
192
+ "}"
193
+ ]
194
+ : [
195
+ "if (typeof document !== 'undefined') {",
196
+ Template.indent([
197
+ "var currentScript = document.currentScript;",
198
+ `if (currentScript && currentScript.nonce && !${RuntimeGlobals.scriptNonce}) {`,
199
+ Template.indent(
200
+ `${RuntimeGlobals.scriptNonce} = currentScript.nonce;`
201
+ ),
202
+ "}"
203
+ ]),
204
+ "}"
205
+ ];
206
+ return Template.asString([...nonceSetup, ...lines]);
207
+ }
208
+ }
209
+
210
+ module.exports = StartupAssetHintRuntimeModule;
@@ -0,0 +1,103 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
8
+
9
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
10
+ /** @typedef {import("../NormalModule")} NormalModule */
11
+
12
+ /**
13
+ * @typedef {object} ResourceHintOptions
14
+ * @property {true=} prefetch
15
+ * @property {true=} preload
16
+ * @property {("high" | "low" | "auto")=} fetchPriority
17
+ * @property {string=} as
18
+ * @property {string=} type
19
+ * @property {string=} media
20
+ */
21
+
22
+ /**
23
+ * Reads `webpackPrefetch` / `webpackPreload` / `webpackFetchPriority` /
24
+ * `webpackAs` / `webpackType` / `webpackMedia` from a parsed magic-comment
25
+ * options object. Invalid values emit warnings to the given module.
26
+ * @param {Record<string, EXPECTED_ANY> | null | undefined} importOptions parsed comment options
27
+ * @param {NormalModule} module the module to attach warnings to
28
+ * @param {DependencyLocation} loc location for warnings
29
+ * @returns {ResourceHintOptions} parsed hints (empty when no comments matched)
30
+ */
31
+ const parseResourceHintOptions = (importOptions, module, loc) => {
32
+ /** @type {ResourceHintOptions} */
33
+ const hints = {};
34
+ if (!importOptions) return hints;
35
+
36
+ /**
37
+ * @param {string} message warning text
38
+ * @returns {void}
39
+ */
40
+ const warn = (message) => {
41
+ module.addWarning(new UnsupportedFeatureWarning(message, loc));
42
+ };
43
+
44
+ if (importOptions.webpackPrefetch !== undefined) {
45
+ if (importOptions.webpackPrefetch === true) {
46
+ hints.prefetch = true;
47
+ } else {
48
+ warn(
49
+ `\`webpackPrefetch\` expected true, but received: ${importOptions.webpackPrefetch}.`
50
+ );
51
+ }
52
+ }
53
+ if (importOptions.webpackPreload !== undefined) {
54
+ if (importOptions.webpackPreload === true) {
55
+ hints.preload = true;
56
+ } else {
57
+ warn(
58
+ `\`webpackPreload\` expected true, but received: ${importOptions.webpackPreload}.`
59
+ );
60
+ }
61
+ }
62
+ if (importOptions.webpackFetchPriority !== undefined) {
63
+ const fp = importOptions.webpackFetchPriority;
64
+ if (fp === "high" || fp === "low" || fp === "auto") {
65
+ hints.fetchPriority = fp;
66
+ } else {
67
+ warn(
68
+ `\`webpackFetchPriority\` expected "low", "high" or "auto", but received: ${fp}.`
69
+ );
70
+ }
71
+ }
72
+ if (importOptions.webpackAs !== undefined) {
73
+ if (typeof importOptions.webpackAs === "string") {
74
+ hints.as = importOptions.webpackAs;
75
+ } else {
76
+ warn(
77
+ `\`webpackAs\` expected a string, but received: ${importOptions.webpackAs}.`
78
+ );
79
+ }
80
+ }
81
+ if (importOptions.webpackType !== undefined) {
82
+ if (typeof importOptions.webpackType === "string") {
83
+ hints.type = importOptions.webpackType;
84
+ } else {
85
+ warn(
86
+ `\`webpackType\` expected a string, but received: ${importOptions.webpackType}.`
87
+ );
88
+ }
89
+ }
90
+ if (importOptions.webpackMedia !== undefined) {
91
+ if (typeof importOptions.webpackMedia === "string") {
92
+ hints.media = importOptions.webpackMedia;
93
+ } else {
94
+ warn(
95
+ `\`webpackMedia\` expected a string, but received: ${importOptions.webpackMedia}.`
96
+ );
97
+ }
98
+ }
99
+
100
+ return hints;
101
+ };
102
+
103
+ module.exports = parseResourceHintOptions;
@@ -9,6 +9,7 @@
9
9
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
10
10
 
11
11
  /**
12
+ * Defines the keys of types type used by this module.
12
13
  * @template T
13
14
  * @template {T[keyof T]} V
14
15
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -20,6 +21,7 @@ const PLUGIN_NAME = "BasicEffectRulePlugin";
20
21
 
21
22
  class BasicEffectRulePlugin {
22
23
  /**
24
+ * Creates an instance of BasicEffectRulePlugin.
23
25
  * @param {BasicEffectRuleKeys} ruleProperty the rule property
24
26
  * @param {string=} effectType the effect type
25
27
  */
@@ -31,6 +33,7 @@ class BasicEffectRulePlugin {
31
33
  }
32
34
 
33
35
  /**
36
+ * Applies the plugin by registering its hooks on the compiler.
34
37
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
35
38
  * @returns {void}
36
39
  */
@@ -11,6 +11,7 @@
11
11
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
12
12
 
13
13
  /**
14
+ * Defines the keys of types type used by this module.
14
15
  * @template T
15
16
  * @template {T[keyof T]} V
16
17
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -22,6 +23,7 @@ const PLUGIN_NAME = "BasicMatcherRulePlugin";
22
23
 
23
24
  class BasicMatcherRulePlugin {
24
25
  /**
26
+ * Creates an instance of BasicMatcherRulePlugin.
25
27
  * @param {BasicMatcherRuleKeys} ruleProperty the rule property
26
28
  * @param {string=} dataProperty the data property
27
29
  * @param {boolean=} invert if true, inverts the condition
@@ -36,6 +38,7 @@ class BasicMatcherRulePlugin {
36
38
  }
37
39
 
38
40
  /**
41
+ * Applies the plugin by registering its hooks on the compiler.
39
42
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
40
43
  * @returns {void}
41
44
  */
@@ -12,6 +12,7 @@
12
12
  /** @typedef {import("./RuleSetCompiler").RuleConditionFunction} RuleConditionFunction */
13
13
 
14
14
  /**
15
+ * Defines the keys of types type used by this module.
15
16
  * @template T
16
17
  * @template {T[keyof T]} V
17
18
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -24,6 +25,7 @@ const PLUGIN_NAME = "ObjectMatcherRulePlugin";
24
25
 
25
26
  class ObjectMatcherRulePlugin {
26
27
  /**
28
+ * Creates an instance of ObjectMatcherRulePlugin.
27
29
  * @param {ObjectMatcherRuleKeys} ruleProperty the rule property
28
30
  * @param {DataProperty=} dataProperty the data property
29
31
  * @param {RuleConditionFunction=} additionalConditionFunction need to check
@@ -38,6 +40,7 @@ class ObjectMatcherRulePlugin {
38
40
  }
39
41
 
40
42
  /**
43
+ * Applies the plugin by registering its hooks on the compiler.
41
44
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
42
45
  * @returns {void}
43
46
  */