@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class AsyncModuleRuntimeModule extends HelperRuntimeModule {
14
14
  /**
@@ -7,11 +7,10 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
- const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
11
- const { getUndoPath } = require("../util/identifier");
12
10
 
13
- /** @typedef {import("../Chunk")} Chunk */
14
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Chunk from "../Chunk" */
12
+ /** @import ChunkGraph from "../ChunkGraph" */
13
+ /** @import Compilation from "../Compilation" */
15
14
 
16
15
  class AutoPublicPathRuntimeModule extends RuntimeModule {
17
16
  constructor() {
@@ -24,22 +23,16 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
24
23
  */
25
24
  generate() {
26
25
  const compilation = /** @type {Compilation} */ (this.compilation);
27
- const { scriptType, importMetaName, path, environment } =
26
+ // The virtual build-time chunk has no script url and sits at the output
27
+ // root, so urls resolve against the `importModule` baseUri.
28
+ if (/** @type {ChunkGraph} */ (this.chunkGraph).buildTimeExecution) {
29
+ return `${RuntimeGlobals.publicPath} = "";`;
30
+ }
31
+ const { scriptType, importMetaName, environment } =
28
32
  compilation.outputOptions;
29
33
  const chunk = /** @type {Chunk} */ (this.chunk);
30
- const chunkName = compilation.getPath(
31
- JavascriptModulesPlugin.getChunkFilenameTemplate(
32
- chunk,
33
- compilation.outputOptions
34
- ),
35
- {
36
- chunk,
37
- contentHashType: "javascript"
38
- }
39
- );
40
- const undoPath = getUndoPath(
41
- chunkName,
42
- /** @type {string} */ (path),
34
+ const undoPath = compilation.runtimeTemplate.chunkRootOutputDir(
35
+ chunk,
43
36
  false
44
37
  );
45
38
 
@@ -79,7 +72,7 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
79
72
  "if(scripts.length) {",
80
73
  Template.indent([
81
74
  `${lt} i = scripts.length - 1;`,
82
- "while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;"
75
+ "while (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;"
83
76
  ]),
84
77
  "}"
85
78
  ]),
@@ -90,7 +83,9 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
90
83
  "// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration",
91
84
  '// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.',
92
85
  'if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");',
93
- 'scriptUrl = scriptUrl.replace(/^blob:/, "").replace(/#.*$/, "").replace(/\\?.*$/, "").replace(/\\/[^\\/]+$/, "/");',
86
+ // One pass for the `blob:` prefix and the query/fragment: both stop at the
87
+ // first `?` or `#`, so stripping either first leaves the same url.
88
+ 'scriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, "").replace(/\\/[^/]+$/, "/");',
94
89
  !undoPath
95
90
  ? `${RuntimeGlobals.publicPath} = scriptUrl;`
96
91
  : `${RuntimeGlobals.publicPath} = scriptUrl + ${JSON.stringify(
@@ -7,15 +7,31 @@
7
7
 
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
+ const { renderBaseUri } = require("./baseUri");
10
11
 
11
- /** @typedef {import("../../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescription */
12
- /** @typedef {import("../Chunk")} Chunk */
12
+ /**
13
+ * @import {
14
+ * EntryDescriptionNormalized as EntryDescription
15
+ * } from "../../declarations/WebpackOptions"
16
+ */
17
+ /** @import Chunk from "../Chunk" */
18
+ /** @import Compilation from "../Compilation" */
13
19
 
14
20
  class BaseUriRuntimeModule extends RuntimeModule {
15
21
  constructor() {
16
22
  super("base uri", RuntimeModule.STAGE_ATTACH);
17
23
  }
18
24
 
25
+ /**
26
+ * Returns true, if the runtime module should get it's own scope.
27
+ * When false, `generate()` must emit complete statements ending with `;`
28
+ * so a following runtime IIFE is not parsed as a call (ASI).
29
+ * @returns {boolean} true, if the runtime module should get it's own scope
30
+ */
31
+ shouldIsolate() {
32
+ return false;
33
+ }
34
+
19
35
  /**
20
36
  * Generates runtime code for this runtime module.
21
37
  * @returns {string | null} runtime code
@@ -25,11 +41,21 @@ class BaseUriRuntimeModule extends RuntimeModule {
25
41
  const options =
26
42
  /** @type {EntryDescription} */
27
43
  (chunk.getEntryOptions());
28
- return `${RuntimeGlobals.baseURI} = ${
29
- options.baseUri === undefined
30
- ? "undefined"
31
- : JSON.stringify(options.baseUri)
32
- };`;
44
+ if (options.baseUri === undefined) {
45
+ return `${RuntimeGlobals.baseURI} = undefined;`;
46
+ }
47
+ const { runtimeTemplate, outputOptions } =
48
+ /** @type {Compilation} */
49
+ (this.compilation);
50
+ // Chunk loading is off here, so no loader has named a base for a relative one to be
51
+ // read against. Module output carries its own url; anything else has none to offer.
52
+ if (!runtimeTemplate.isModule()) {
53
+ return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
54
+ }
55
+ return renderBaseUri(
56
+ options.baseUri,
57
+ `${outputOptions.importMetaName}.url`
58
+ );
33
59
  }
34
60
  }
35
61
 
@@ -8,6 +8,16 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
 
10
10
  class ChunkNameRuntimeModule extends RuntimeModule {
11
+ /**
12
+ * Returns true, if the runtime module should get it's own scope.
13
+ * When false, `generate()` must emit complete statements ending with `;`
14
+ * so a following runtime IIFE is not parsed as a call (ASI).
15
+ * @returns {boolean} true, if the runtime module should get it's own scope
16
+ */
17
+ shouldIsolate() {
18
+ return false;
19
+ }
20
+
11
21
  /**
12
22
  * @param {string} chunkName the chunk's name
13
23
  */
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("compat get default export");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -7,9 +7,9 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("../Compilation")} Compilation */
10
+ /** @import Chunk from "../Chunk" */
11
+ /** @import ChunkGraph from "../ChunkGraph" */
12
+ /** @import Compilation from "../Compilation" */
13
13
 
14
14
  class CompatRuntimeModule extends RuntimeModule {
15
15
  constructor() {
@@ -74,6 +74,8 @@ class CompatRuntimeModule extends RuntimeModule {
74
74
 
75
75
  /**
76
76
  * Returns true, if the runtime module should get it's own scope.
77
+ * When false, `generate()` must emit complete statements ending with `;`
78
+ * so a following runtime IIFE is not parsed as a call (ASI).
77
79
  * @returns {boolean} true, if the runtime module should get it's own scope
78
80
  */
79
81
  shouldIsolate() {
@@ -0,0 +1,90 @@
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
+ /** @import Compilation from "../Compilation" */
12
+
13
+ class ConcatenationWrapRuntimeModule extends HelperRuntimeModule {
14
+ constructor() {
15
+ super("concatenation wrap");
16
+ }
17
+
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
28
+ /**
29
+ * Generates runtime code for this runtime module.
30
+ * @returns {string | null} runtime code
31
+ */
32
+ generate() {
33
+ const compilation = /** @type {Compilation} */ (this.compilation);
34
+ const { runtimeTemplate, outputOptions } = compilation;
35
+ const { strictModuleErrorHandling, strictModuleExceptionHandling } =
36
+ outputOptions;
37
+ const fn = RuntimeGlobals.concatenationWrap;
38
+ /** @type {string[]} */
39
+ const runBody = [];
40
+ if (strictModuleErrorHandling) {
41
+ // mirrors the module cache: the error is remembered and rethrown
42
+ runBody.push(
43
+ "try {",
44
+ Template.indent("fn.call(mod.exports, mod, mod.exports);"),
45
+ "} catch (e) {",
46
+ Template.indent(["mod.error = e;", "throw e;"]),
47
+ "}"
48
+ );
49
+ } else if (strictModuleExceptionHandling) {
50
+ // mirrors deleting the cache entry: a later call runs the body again
51
+ runBody.push(
52
+ "var threw = true;",
53
+ "try {",
54
+ Template.indent([
55
+ "fn.call(mod.exports, mod, mod.exports);",
56
+ "threw = false;"
57
+ ]),
58
+ "} finally {",
59
+ Template.indent(["if (threw) { body = fn; mod = undefined; }"]),
60
+ "}"
61
+ );
62
+ } else {
63
+ runBody.push("fn.call(mod.exports, mod, mod.exports);");
64
+ }
65
+ return Template.asString([
66
+ "// wrap a concatenated module body as a lazy, memoized accessor; mod is",
67
+ "// set before the body runs so re-entrant calls (require cycles) observe",
68
+ "// the partial exports like Node.js",
69
+ `${fn} = ${runtimeTemplate.basicFunction("body", [
70
+ "var mod;",
71
+ `return ${runtimeTemplate.basicFunction("", [
72
+ "if (body) {",
73
+ Template.indent([
74
+ "var fn = body;",
75
+ "body = 0;",
76
+ "mod = { exports: {} };",
77
+ ...runBody
78
+ ]),
79
+ "}",
80
+ ...(strictModuleErrorHandling
81
+ ? ["if (mod.error !== undefined) throw mod.error;"]
82
+ : []),
83
+ "return mod.exports;"
84
+ ])};`
85
+ ])};`
86
+ ]);
87
+ }
88
+ }
89
+
90
+ module.exports = ConcatenationWrapRuntimeModule;
@@ -0,0 +1,52 @@
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
+ /** @import Compilation from "../Compilation" */
12
+
13
+ class ConstructRequireRuntimeModule extends HelperRuntimeModule {
14
+ constructor() {
15
+ super("construct require");
16
+ }
17
+
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
28
+ /**
29
+ * Generates runtime code for this runtime module.
30
+ * @returns {string | null} runtime code
31
+ */
32
+ generate() {
33
+ const compilation = /** @type {Compilation} */ (this.compilation);
34
+ const { runtimeTemplate } = compilation;
35
+ const fn = RuntimeGlobals.constructRequire;
36
+ return Template.asString([
37
+ "// `new require(id)` invokes the require function as a constructor, so a",
38
+ "// primitive module.exports is discarded in favor of the freshly created",
39
+ "// instance, exactly as in Node.js. A concatenated module has no require",
40
+ "// call left, so apply that rule to its exports value instead.",
41
+ `${fn} = ${runtimeTemplate.basicFunction("exports", [
42
+ `${runtimeTemplate.renderConst()} isObject =`,
43
+ Template.indent(
44
+ 'exports !== null && (typeof exports === "object" || typeof exports === "function");'
45
+ ),
46
+ `return isObject ? exports : Object.create(${RuntimeGlobals.require}.prototype);`
47
+ ])};`
48
+ ]);
49
+ }
50
+ }
51
+
52
+ module.exports = ConstructRequireRuntimeModule;
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
@@ -26,10 +26,9 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
26
26
  const cst = runtimeTemplate.renderConst();
27
27
  const lt = runtimeTemplate.renderLet();
28
28
  return Template.asString([
29
- `${cst} getProto = Object.getPrototypeOf ? ${runtimeTemplate.returningFunction(
30
- "Object.getPrototypeOf(obj)",
31
- "obj"
32
- )} : ${runtimeTemplate.returningFunction("obj.__proto__", "obj")};`,
29
+ // No `__proto__` fallback: `Object.create` and `Object.defineProperty`
30
+ // below already require the same ES5 baseline.
31
+ `${cst} getProto = Object.getPrototypeOf;`,
33
32
  `${lt} leafPrototypes;`,
34
33
  "// create a fake namespace object",
35
34
  "// mode & 1: value is a module id, require it",
@@ -51,7 +50,10 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
51
50
  `${cst} ns = Object.create(null);`,
52
51
  `${RuntimeGlobals.makeNamespaceObject}(ns);`,
53
52
  `${cst} def = {};`,
54
- "leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];",
53
+ `${runtimeTemplate.assignOr(
54
+ "leafPrototypes",
55
+ "[null, getProto({}), getProto([]), getProto(getProto)]"
56
+ )};`,
55
57
  "for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {",
56
58
  Template.indent([
57
59
  `Object.getOwnPropertyNames(current).forEach(${runtimeTemplate.expressionFunction(
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class CreateScriptRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("trusted types script");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class CreateScriptUrlRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("trusted types script url");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -8,11 +8,27 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
12
13
 
13
14
  class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
14
- constructor() {
15
+ /**
16
+ * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
17
+ */
18
+ constructor(runtimeRequirements) {
15
19
  super("define property getters");
20
+ /** @type {ReadOnlyRuntimeRequirements} */
21
+ this.runtimeRequirements = runtimeRequirements;
22
+ }
23
+
24
+ /**
25
+ * Returns true, if the runtime module should get it's own scope.
26
+ * When false, `generate()` must emit complete statements ending with `;`
27
+ * so a following runtime IIFE is not parsed as a call (ASI).
28
+ * @returns {boolean} true, if the runtime module should get it's own scope
29
+ */
30
+ shouldIsolate() {
31
+ return false;
16
32
  }
17
33
 
18
34
  /**
@@ -23,48 +39,50 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
23
39
  const compilation = /** @type {Compilation} */ (this.compilation);
24
40
  const { runtimeTemplate } = compilation;
25
41
  const fn = RuntimeGlobals.definePropertyGetters;
42
+ // Only webpack emits the array form, so a build emitting none cannot
43
+ // receive one; the object form stays either way (see the note below).
44
+ const withArray = this.runtimeRequirements.has(
45
+ RuntimeGlobals.definePropertyGettersFromArray
46
+ );
47
+ // TODO webpack 6: remove object format support. Internal code (e.g. ConcatenatedModule)
48
+ // and third-party libraries may still call __webpack_require__.d() with an object.
49
+ const fromObject = [
50
+ "for(var key in definition) {",
51
+ Template.indent([
52
+ `if(${RuntimeGlobals.hasOwnProperty}(definition, key) && !${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
53
+ Template.indent([
54
+ "Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });"
55
+ ]),
56
+ "}"
57
+ ]),
58
+ "}"
59
+ ];
26
60
  return Template.asString([
27
61
  "// define getter/value functions for harmony exports",
28
- `${fn} = ${runtimeTemplate.basicFunction("exports, definition", [
29
- "if(Array.isArray(definition)) {",
30
- Template.indent([
31
- "var i = 0;",
32
- "while(i < definition.length) {",
33
- Template.indent([
34
- "var key = definition[i++];",
35
- "var binding = definition[i++];",
36
- `if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
37
- Template.indent([
38
- "if(binding === 0) {",
62
+ `${fn} = ${runtimeTemplate.basicFunction(
63
+ "exports, definition",
64
+ withArray
65
+ ? [
66
+ "if(Array.isArray(definition)) {",
39
67
  Template.indent([
40
- "Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });"
68
+ "var i = 0;",
69
+ "while(i < definition.length) {",
70
+ Template.indent([
71
+ "var key = definition[i++];",
72
+ "var binding = definition[i++];",
73
+ // The descriptor is built before the own-property check so a
74
+ // value binding consumes its slot either way.
75
+ "var descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };",
76
+ `if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) Object.defineProperty(exports, key, descriptor);`
77
+ ]),
78
+ "}"
41
79
  ]),
42
80
  "} else {",
43
- Template.indent([
44
- "Object.defineProperty(exports, key, { enumerable: true, get: binding });"
45
- ]),
81
+ Template.indent(fromObject),
46
82
  "}"
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
- "}"
63
- ]),
64
- "}"
65
- ]),
66
- "}"
67
- ])};`
83
+ ]
84
+ : fromObject
85
+ )};`
68
86
  ]);
69
87
  }
70
88
  }
@@ -8,10 +8,20 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
12
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
11
+ /** @import Compilation from "../Compilation" */
12
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
13
13
 
14
14
  class EnsureChunkRuntimeModule extends RuntimeModule {
15
+ /**
16
+ * Returns true, if the runtime module should get it's own scope.
17
+ * When false, `generate()` must emit complete statements ending with `;`
18
+ * so a following runtime IIFE is not parsed as a call (ASI).
19
+ * @returns {boolean} true, if the runtime module should get it's own scope
20
+ */
21
+ shouldIsolate() {
22
+ return false;
23
+ }
24
+
15
25
  /**
16
26
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
17
27
  */
@@ -28,12 +38,18 @@ class EnsureChunkRuntimeModule extends RuntimeModule {
28
38
  generate() {
29
39
  const compilation = /** @type {Compilation} */ (this.compilation);
30
40
  const { runtimeTemplate } = compilation;
41
+ // An analyzable `import()` dispatches the handlers itself, so a build can need the
42
+ // map without the function around it.
43
+ const withEnsureChunk = this.runtimeRequirements.has(
44
+ RuntimeGlobals.ensureChunk
45
+ );
31
46
  // Check if there are non initial chunks which need to be imported using require-ensure
32
47
  if (this.runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) {
33
48
  const withFetchPriority = this.runtimeRequirements.has(
34
49
  RuntimeGlobals.hasFetchPriority
35
50
  );
36
51
  const handlers = RuntimeGlobals.ensureChunkHandlers;
52
+ if (!withEnsureChunk) return `${handlers} = {};`;
37
53
  return Template.asString([
38
54
  `${handlers} = {};`,
39
55
  "// This file contains only the entry chunk.",