@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,37 @@
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 Template = require("../Template");
9
+ const HelperRuntimeModule = require("./HelperRuntimeModule");
10
+
11
+ /** @typedef {import("../Compilation")} Compilation */
12
+
13
+ class CommonJsWrapRuntimeModule extends HelperRuntimeModule {
14
+ constructor() {
15
+ super("wrap commonjs module");
16
+ }
17
+
18
+ /**
19
+ * Generates runtime code for this runtime module.
20
+ * @returns {string | null} runtime code
21
+ */
22
+ generate() {
23
+ const compilation = /** @type {Compilation} */ (this.compilation);
24
+ const { runtimeTemplate } = compilation;
25
+ const fn = RuntimeGlobals.commonJsWrap;
26
+ return Template.asString([
27
+ "// execute a CommonJS module body with real module/exports objects, returning the final exports",
28
+ `${fn} = ${runtimeTemplate.basicFunction("body", [
29
+ `${runtimeTemplate.renderConst()} mod = { exports: {} };`,
30
+ "body.call(mod.exports, mod, mod.exports);",
31
+ "return mod.exports;"
32
+ ])};`
33
+ ]);
34
+ }
35
+ }
36
+
37
+ module.exports = CommonJsWrapRuntimeModule;
@@ -16,6 +16,7 @@ class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -25,7 +26,7 @@ class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
25
26
  return Template.asString([
26
27
  "// getDefaultExport function for compatibility with non-harmony modules",
27
28
  `${fn} = ${runtimeTemplate.basicFunction("module", [
28
- "var getter = module && module.__esModule ?",
29
+ `${runtimeTemplate.renderConst()} getter = module && module.__esModule ?`,
29
30
  Template.indent([
30
31
  `${runtimeTemplate.returningFunction("module['default']")} :`,
31
32
  `${runtimeTemplate.returningFunction("module")};`
@@ -19,6 +19,7 @@ class CompatRuntimeModule extends RuntimeModule {
19
19
  }
20
20
 
21
21
  /**
22
+ * Generates runtime code for this runtime module.
22
23
  * @returns {string | null} runtime code
23
24
  */
24
25
  generate() {
@@ -72,6 +73,7 @@ class CompatRuntimeModule extends RuntimeModule {
72
73
  }
73
74
 
74
75
  /**
76
+ * Returns true, if the runtime module should get it's own scope.
75
77
  * @returns {boolean} true, if the runtime module should get it's own scope
76
78
  */
77
79
  shouldIsolate() {
@@ -16,18 +16,21 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
22
23
  const compilation = /** @type {Compilation} */ (this.compilation);
23
24
  const { runtimeTemplate } = compilation;
24
25
  const fn = RuntimeGlobals.createFakeNamespaceObject;
26
+ const cst = runtimeTemplate.renderConst();
27
+ const lt = runtimeTemplate.renderLet();
25
28
  return Template.asString([
26
- `var getProto = Object.getPrototypeOf ? ${runtimeTemplate.returningFunction(
29
+ `${cst} getProto = Object.getPrototypeOf ? ${runtimeTemplate.returningFunction(
27
30
  "Object.getPrototypeOf(obj)",
28
31
  "obj"
29
32
  )} : ${runtimeTemplate.returningFunction("obj.__proto__", "obj")};`,
30
- "var leafPrototypes;",
33
+ `${lt} leafPrototypes;`,
31
34
  "// create a fake namespace object",
32
35
  "// mode & 1: value is a module id, require it",
33
36
  "// mode & 2: merge all properties of value into the ns",
@@ -45,9 +48,9 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
45
48
  "if((mode & 16) && typeof value.then === 'function') return value;"
46
49
  ]),
47
50
  "}",
48
- "var ns = Object.create(null);",
51
+ `${cst} ns = Object.create(null);`,
49
52
  `${RuntimeGlobals.makeNamespaceObject}(ns);`,
50
- "var def = {};",
53
+ `${cst} def = {};`,
51
54
  "leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];",
52
55
  "for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {",
53
56
  Template.indent([
@@ -16,6 +16,7 @@ class CreateScriptRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -16,6 +16,7 @@ class CreateScriptUrlRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -16,6 +16,7 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -23,13 +24,42 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
23
24
  const { runtimeTemplate } = compilation;
24
25
  const fn = RuntimeGlobals.definePropertyGetters;
25
26
  return Template.asString([
26
- "// define getter functions for harmony exports",
27
+ "// define getter/value functions for harmony exports",
27
28
  `${fn} = ${runtimeTemplate.basicFunction("exports, definition", [
28
- "for(var key in definition) {",
29
+ "if(Array.isArray(definition)) {",
29
30
  Template.indent([
30
- `if(${RuntimeGlobals.hasOwnProperty}(definition, key) && !${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
31
+ "var i = 0;",
32
+ "while(i < definition.length) {",
31
33
  Template.indent([
32
- "Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });"
34
+ "var key = definition[i++];",
35
+ "var binding = definition[i++];",
36
+ `if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
37
+ Template.indent([
38
+ "if(binding === 0) {",
39
+ Template.indent([
40
+ "Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });"
41
+ ]),
42
+ "} else {",
43
+ Template.indent([
44
+ "Object.defineProperty(exports, key, { enumerable: true, get: binding });"
45
+ ]),
46
+ "}"
47
+ ]),
48
+ "} else if(binding === 0) { i++; }"
49
+ ]),
50
+ "}"
51
+ ]),
52
+ // TODO webpack 6: remove object format support. Internal code (e.g. ConcatenatedModule)
53
+ // and third-party libraries may still call __webpack_require__.d() with an object.
54
+ "} else {",
55
+ Template.indent([
56
+ "for(var key in definition) {",
57
+ Template.indent([
58
+ `if(${RuntimeGlobals.hasOwnProperty}(definition, key) && !${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
59
+ Template.indent([
60
+ "Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });"
61
+ ]),
62
+ "}"
33
63
  ]),
34
64
  "}"
35
65
  ]),
@@ -22,6 +22,7 @@ class EnsureChunkRuntimeModule extends RuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -7,6 +7,7 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
+ const { reEncodeDigest } = require("../TemplatedPathPlugin");
10
11
  const { first } = require("../util/SetHelpers");
11
12
 
12
13
  /** @typedef {import("../Chunk")} Chunk */
@@ -14,31 +15,49 @@ const { first } = require("../util/SetHelpers");
14
15
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
16
  /** @typedef {import("../Compilation")} Compilation */
16
17
  /** @typedef {import("../Compilation").HashWithLengthFunction} HashWithLengthFunction */
17
- /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
18
+ /** @typedef {import("../Compilation").HashWithDigestFunction} HashWithDigestFunction */
19
+ /** @typedef {import("../Chunk").ChunkFilenameTemplate} ChunkFilenameTemplate */
18
20
 
19
21
  class GetChunkFilenameRuntimeModule extends RuntimeModule {
20
22
  /**
21
23
  * @param {string} contentType the contentType to use the content hash for
22
24
  * @param {string} name kind of filename
23
25
  * @param {string} global function name to be assigned
24
- * @param {(chunk: Chunk) => TemplatePath | false} getFilenameForChunk functor to get the filename or function
26
+ * @param {(chunk: Chunk) => ChunkFilenameTemplate | false} getFilenameForChunk functor to get the filename or function
25
27
  * @param {boolean} allChunks when false, only async chunks are included
28
+ * @param {boolean=} usesFullHashDigest the filename uses `[fullhash:<digest>]`/`[hash:<digest>]`, so the re-encoded full hash must be inlined (post-hash) instead of read from the runtime `getFullHash()` expression
26
29
  */
27
- constructor(contentType, name, global, getFilenameForChunk, allChunks) {
30
+ constructor(
31
+ contentType,
32
+ name,
33
+ global,
34
+ getFilenameForChunk,
35
+ allChunks,
36
+ usesFullHashDigest
37
+ ) {
28
38
  super(`get ${name} chunk filename`);
29
39
  /** @type {string} */
30
40
  this.contentType = contentType;
31
41
  /** @type {string} */
32
42
  this.global = global;
33
- /** @type {(chunk: Chunk) => TemplatePath | false} */
43
+ /** @type {(chunk: Chunk) => ChunkFilenameTemplate | false} */
34
44
  this.getFilenameForChunk = getFilenameForChunk;
35
45
  /** @type {boolean} */
36
46
  this.allChunks = allChunks;
37
- /** @type {boolean} */
38
- this.dependentHash = true;
47
+ // An inline digest on `[fullhash]` needs the final hash inlined, so this
48
+ // module must re-render after hashing (`fullHash`); otherwise it only needs
49
+ // the referenced chunk hashes, available before the full hash (`dependentHash`).
50
+ if (usesFullHashDigest) {
51
+ /** @type {boolean} */
52
+ this.fullHash = true;
53
+ } else {
54
+ /** @type {boolean} */
55
+ this.dependentHash = true;
56
+ }
39
57
  }
40
58
 
41
59
  /**
60
+ * Generates runtime code for this runtime module.
42
61
  * @returns {string | null} runtime code
43
62
  */
44
63
  generate() {
@@ -47,8 +66,39 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
47
66
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
48
67
  const chunk = /** @type {Chunk} */ (this.chunk);
49
68
  const { runtimeTemplate } = compilation;
69
+ // Digest the stored hashes are encoded in, for re-encoding `[<hash>:<digest>]`.
70
+ const sourceDigest = compilation.outputOptions.hashDigest;
50
71
 
51
- /** @type {Map<string | TemplatePath, Set<Chunk>>} */
72
+ /**
73
+ * Re-encodes a full hash digest into the requested digest, optionally truncated.
74
+ * @param {string} value full hash digest
75
+ * @param {string} digest requested digest
76
+ * @param {number=} length requested length
77
+ * @returns {string} re-encoded hash
78
+ */
79
+ const reEncode = (value, digest, length) => {
80
+ const hash = reEncodeDigest(
81
+ value,
82
+ /** @type {string} */ (sourceDigest),
83
+ digest
84
+ );
85
+ return length ? hash.slice(0, length) : hash;
86
+ };
87
+
88
+ // `[fullhash:<digest>]`/`[hash:<digest>]` would resolve to a runtime
89
+ // `getFullHash()` expression that can't be re-encoded; instead this module is
90
+ // flagged `fullHash` and re-rendered after hashing, so we inline the
91
+ // re-encoded full hash here — byte-identical to the statically emitted file.
92
+ /** @type {HashWithDigestFunction} */
93
+ const fullHashWithDigest = (digest, length) => {
94
+ const fullHash = compilation.fullHash;
95
+ // Pre-hash pass (hash not computed yet): a placeholder, replaced on the
96
+ // post-hash re-render. Matches `GetFullHashRuntimeModule`'s `|| "XXXX"`.
97
+ if (!fullHash) return length ? "x".repeat(length) : "x";
98
+ return reEncode(fullHash, digest, length);
99
+ };
100
+
101
+ /** @type {Map<ChunkFilenameTemplate, Set<Chunk>>} */
52
102
  const chunkFilenames = new Map();
53
103
  let maxChunks = 0;
54
104
  /** @type {string | undefined} */
@@ -125,7 +175,7 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
125
175
 
126
176
  /**
127
177
  * @param {Chunk} c the chunk
128
- * @param {string | TemplatePath} chunkFilename the filename template for the chunk
178
+ * @param {ChunkFilenameTemplate} chunkFilename the filename template for the chunk
129
179
  * @returns {void}
130
180
  */
131
181
  const addStaticUrl = (c, chunkFilename) => {
@@ -161,12 +211,17 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
161
211
  hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
162
212
  hashWithLength: (length) =>
163
213
  `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
214
+ hashWithDigest: fullHashWithDigest,
164
215
  chunk: {
165
216
  id: unquotedStringify(/** @type {ChunkId} */ (c.id)),
166
217
  hash: unquotedStringify(/** @type {string} */ (c.renderedHash)),
167
218
  hashWithLength: unquotedStringifyWithLength(
168
219
  /** @type {string} */ (c.renderedHash)
169
220
  ),
221
+ hashWithDigest: (digest, length) =>
222
+ unquotedStringify(
223
+ reEncode(/** @type {string} */ (c.hash), digest, length)
224
+ ),
170
225
  name: unquotedStringify(c.name || /** @type {ChunkId} */ (c.id)),
171
226
  contentHash: {
172
227
  [contentType]: unquotedStringify(c.contentHash[contentType])
@@ -175,6 +230,16 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
175
230
  [contentType]: unquotedStringifyWithLength(
176
231
  c.contentHash[contentType]
177
232
  )
233
+ },
234
+ contentHashWithDigest: {
235
+ [contentType]: (digest, length) =>
236
+ unquotedStringify(
237
+ reEncode(
238
+ c.contentHashFull[contentType] || c.contentHash[contentType],
239
+ digest,
240
+ length
241
+ )
242
+ )
178
243
  }
179
244
  },
180
245
  contentHashType: contentType
@@ -247,18 +312,33 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
247
312
  hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
248
313
  hashWithLength: (length) =>
249
314
  `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
315
+ hashWithDigest: fullHashWithDigest,
250
316
  chunk: {
251
317
  id: '" + chunkId + "',
252
318
  hash: mapExpr((c) => /** @type {string} */ (c.renderedHash)),
253
319
  hashWithLength: mapExprWithLength(
254
320
  (c) => /** @type {string} */ (c.renderedHash)
255
321
  ),
322
+ hashWithDigest: (digest, length) =>
323
+ mapExpr((c) =>
324
+ reEncode(/** @type {string} */ (c.hash), digest, length)
325
+ ),
256
326
  name: mapExpr((c) => c.name || /** @type {ChunkId} */ (c.id)),
257
327
  contentHash: {
258
328
  [contentType]: mapExpr((c) => c.contentHash[contentType])
259
329
  },
260
330
  contentHashWithLength: {
261
331
  [contentType]: mapExprWithLength((c) => c.contentHash[contentType])
332
+ },
333
+ contentHashWithDigest: {
334
+ [contentType]: (digest, length) =>
335
+ mapExpr((c) =>
336
+ reEncode(
337
+ c.contentHashFull[contentType] || c.contentHash[contentType],
338
+ digest,
339
+ length
340
+ )
341
+ )
262
342
  }
263
343
  },
264
344
  contentHashType: contentType
@@ -17,6 +17,7 @@ class GetFullHashRuntimeModule extends RuntimeModule {
17
17
  }
18
18
 
19
19
  /**
20
+ * Generates runtime code for this runtime module.
20
21
  * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
@@ -26,6 +26,7 @@ class GetMainFilenameRuntimeModule extends RuntimeModule {
26
26
  }
27
27
 
28
28
  /**
29
+ * Generates runtime code for this runtime module.
29
30
  * @returns {string | null} runtime code
30
31
  */
31
32
  generate() {
@@ -22,6 +22,7 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -34,7 +35,7 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
34
35
  : false;
35
36
 
36
37
  return Template.asString([
37
- "var policy;",
38
+ `${runtimeTemplate.renderLet()} policy;`,
38
39
  `${fn} = ${runtimeTemplate.basicFunction("", [
39
40
  "// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.",
40
41
  "if (policy === undefined) {",
@@ -0,0 +1,59 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author sheo13666q
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+ const RuntimeModule = require("../RuntimeModule");
10
+ const Template = require("../Template");
11
+
12
+ /** @typedef {import("../Compilation")} Compilation */
13
+
14
+ /**
15
+ * Provides a single object URL (one per base URI) for the worklet bootstrap
16
+ * script. A worklet global scope has no `self` and no `location`; this script
17
+ * sets them up before the emitted chunks — which assume a worker-like scope —
18
+ * are added via `addModule`. Deduping by base URI avoids leaking a new object
19
+ * URL per worklet.
20
+ */
21
+ class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
22
+ constructor() {
23
+ super("get worklet bootstrap", RuntimeModule.STAGE_ATTACH);
24
+ }
25
+
26
+ /**
27
+ * Generates runtime code for this runtime module.
28
+ * @returns {string | null} runtime code
29
+ */
30
+ generate() {
31
+ const { getWorkletBootstrap, baseURI } = RuntimeGlobals;
32
+ const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
33
+ // The arrow inside the blob string is fine — it runs in the worklet (always
34
+ // a module scope); the surrounding functions must respect `output.environment`.
35
+ const getter = runtimeTemplate.basicFunction("", [
36
+ `var base = ${baseURI};`,
37
+ "if (!cache.has(base)) {",
38
+ Template.indent([
39
+ "var script = [",
40
+ Template.indent([
41
+ // worklet scopes have no `self`; chunks assume a worker-like scope
42
+ '"globalThis.self = globalThis.self || globalThis;",',
43
+ // some runtime modules read `location`; forward the document base
44
+ '"globalThis.location = " + JSON.stringify(base) + ";"'
45
+ ]),
46
+ '].join("\\n");',
47
+ 'cache.set(base, URL.createObjectURL(new Blob([script], { type: "text/javascript" })));'
48
+ ]),
49
+ "}",
50
+ "return cache.get(base);"
51
+ ]);
52
+ return `${getWorkletBootstrap} = (${runtimeTemplate.basicFunction("", [
53
+ "var cache = new Map();",
54
+ `return ${getter};`
55
+ ])})();`;
56
+ }
57
+ }
58
+
59
+ module.exports = GetWorkletBootstrapRuntimeModule;
@@ -14,6 +14,7 @@ class GlobalRuntimeModule extends RuntimeModule {
14
14
  }
15
15
 
16
16
  /**
17
+ * Generates runtime code for this runtime module.
17
18
  * @returns {string | null} runtime code
18
19
  */
19
20
  generate() {
@@ -17,6 +17,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
17
17
  }
18
18
 
19
19
  /**
20
+ * Generates runtime code for this runtime module.
20
21
  * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
@@ -25,7 +26,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
25
26
 
26
27
  return Template.asString([
27
28
  `${RuntimeGlobals.hasOwnProperty} = ${runtimeTemplate.returningFunction(
28
- "Object.prototype.hasOwnProperty.call(obj, prop)",
29
+ runtimeTemplate.objectHasOwn("obj", "prop"),
29
30
  "obj, prop"
30
31
  )}`
31
32
  ]);
@@ -6,8 +6,13 @@
6
6
 
7
7
  const RuntimeModule = require("../RuntimeModule");
8
8
 
9
+ /**
10
+ * Base class for runtime modules that only emit helper functions and do not
11
+ * need special staging or attachment behavior beyond `RuntimeModule`.
12
+ */
9
13
  class HelperRuntimeModule extends RuntimeModule {
10
14
  /**
15
+ * Creates a helper runtime module with the provided readable name.
11
16
  * @param {string} name a readable name
12
17
  */
13
18
  constructor(name) {
@@ -5,9 +5,10 @@
5
5
  "use strict";
6
6
 
7
7
  const { SyncWaterfallHook } = require("tapable");
8
- const Compilation = require("../Compilation");
8
+ /** @typedef {import("../Compilation")} Compilation */
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const Template = require("../Template");
11
+ const createHooksRegistry = require("../util/createHooksRegistry");
11
12
  const HelperRuntimeModule = require("./HelperRuntimeModule");
12
13
 
13
14
  /** @typedef {import("../Chunk")} Chunk */
@@ -17,30 +18,7 @@ const HelperRuntimeModule = require("./HelperRuntimeModule");
17
18
  * @property {SyncWaterfallHook<[string, Chunk]>} createScript
18
19
  */
19
20
 
20
- /** @type {WeakMap<Compilation, LoadScriptCompilationHooks>} */
21
- const compilationHooksMap = new WeakMap();
22
-
23
21
  class LoadScriptRuntimeModule extends HelperRuntimeModule {
24
- /**
25
- * @param {Compilation} compilation the compilation
26
- * @returns {LoadScriptCompilationHooks} hooks
27
- */
28
- static getCompilationHooks(compilation) {
29
- if (!(compilation instanceof Compilation)) {
30
- throw new TypeError(
31
- "The 'compilation' argument must be an instance of Compilation"
32
- );
33
- }
34
- let hooks = compilationHooksMap.get(compilation);
35
- if (hooks === undefined) {
36
- hooks = {
37
- createScript: new SyncWaterfallHook(["source", "chunk"])
38
- };
39
- compilationHooksMap.set(compilation, hooks);
40
- }
41
- return hooks;
42
- }
43
-
44
22
  /**
45
23
  * @param {boolean=} withCreateScriptUrl use create script url for trusted types
46
24
  * @param {boolean=} withFetchPriority use `fetchPriority` attribute
@@ -54,6 +32,7 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
54
32
  }
55
33
 
56
34
  /**
35
+ * Generates runtime code for this runtime module.
57
36
  * @returns {string | null} runtime code
58
37
  */
59
38
  generate() {
@@ -110,10 +89,12 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
110
89
  : ""
111
90
  ]);
112
91
 
92
+ const cst = runtimeTemplate.renderConst();
93
+ const lt = runtimeTemplate.renderLet();
113
94
  return Template.asString([
114
- "var inProgress = {};",
95
+ `${cst} inProgress = {};`,
115
96
  uniqueName
116
- ? `var dataWebpackPrefix = ${JSON.stringify(`${uniqueName}:`)};`
97
+ ? `${cst} dataWebpackPrefix = ${JSON.stringify(`${uniqueName}:`)};`
117
98
  : "// data-webpack is not used as build has no uniqueName",
118
99
  "// loadScript function to load a script via script tag",
119
100
  `${fn} = ${runtimeTemplate.basicFunction(
@@ -122,13 +103,13 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
122
103
  }`,
123
104
  [
124
105
  "if(inProgress[url]) { inProgress[url].push(done); return; }",
125
- "var script, needAttach;",
106
+ `${lt} script, needAttach;`,
126
107
  "if(key !== undefined) {",
127
108
  Template.indent([
128
- 'var scripts = document.getElementsByTagName("script");',
109
+ `${cst} scripts = document.getElementsByTagName("script");`,
129
110
  "for(var i = 0; i < scripts.length; i++) {",
130
111
  Template.indent([
131
- "var s = scripts[i];",
112
+ `${cst} s = scripts[i];`,
132
113
  `if(s.getAttribute("src") == url${
133
114
  uniqueName
134
115
  ? ' || s.getAttribute("data-webpack") == dataWebpackPrefix + key'
@@ -145,23 +126,26 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
145
126
  ]),
146
127
  "}",
147
128
  "inProgress[url] = [done];",
148
- `var onScriptComplete = ${runtimeTemplate.basicFunction(
129
+ `${cst} onScriptComplete = ${runtimeTemplate.basicFunction(
149
130
  "prev, event",
150
131
  Template.asString([
151
132
  "// avoid mem leaks in IE.",
152
133
  "script.onerror = script.onload = null;",
153
134
  "clearTimeout(timeout);",
154
- "var doneFns = inProgress[url];",
135
+ `${cst} doneFns = inProgress[url];`,
155
136
  "delete inProgress[url];",
156
- "script.parentNode && script.parentNode.removeChild(script);",
157
- `doneFns && doneFns.forEach(${runtimeTemplate.returningFunction(
158
- "fn(event)",
159
- "fn"
160
- )});`,
137
+ `${runtimeTemplate.optionalChaining(
138
+ "script.parentNode",
139
+ "removeChild(script)"
140
+ )};`,
141
+ `${runtimeTemplate.optionalChaining(
142
+ "doneFns",
143
+ `forEach(${runtimeTemplate.returningFunction("fn(event)", "fn")})`
144
+ )};`,
161
145
  "if(prev) return prev(event);"
162
146
  ])
163
147
  )}`,
164
- `var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
148
+ `${cst} timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
165
149
  "script.onerror = onScriptComplete.bind(null, script.onerror);",
166
150
  "script.onload = onScriptComplete.bind(null, script.onload);",
167
151
  "needAttach && document.head.appendChild(script);"
@@ -171,4 +155,11 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
171
155
  }
172
156
  }
173
157
 
158
+ LoadScriptRuntimeModule.getCompilationHooks = createHooksRegistry(
159
+ () =>
160
+ /** @type {LoadScriptCompilationHooks} */ ({
161
+ createScript: new SyncWaterfallHook(["source", "chunk"])
162
+ })
163
+ );
164
+
174
165
  module.exports = LoadScriptRuntimeModule;